Support Edu Plus and Edu Pro account plans (#39316)

## What changed

- Recognize `edu_plus` and `edu_pro` as distinct education workspace plans across authentication, backend rate-limit mapping, and app-server account schemas.
- Include both plans in cloud configuration eligibility and use the education usage-limit behavior.
- Display the plans as `Edu Plus` and `Edu Pro` in the TUI status view.

## Testing

- Cover parsing, workspace classification, account and rate-limit responses, cloud configuration eligibility, usage-limit messages, and TUI display names for the new variants.

GitOrigin-RevId: bf8add780ae03a3c6d10c4f4afa0da262c37928e
This commit is contained in:
joeflorencio-openai authored and copyberry committed 2026-08-18 23:47:00 +00:00
1 parent 8ae72a9314
commit 657bd889ae
22 files changed
+129 -35

No files matched your search

+10
View File
@@ -105,6 +105,10 @@ pub(crate) fn plan_type_display_name(plan_type: PlanType) -> String {
"Enterprise".to_string()
} else if plan_type == PlanType::ProLite {
"Pro Lite".to_string()
} else if plan_type == PlanType::EduPlus {
"Edu Plus".to_string()
} else if plan_type == PlanType::EduPro {
"Edu Pro".to_string()
} else {
title_case(format!("{plan_type:?}").as_str())
}
@@ -234,6 +238,12 @@ mod tests {
for (plan_type, expected) in cases {
assert_eq!(plan_type_display_name(plan_type), expected);
}
insta::assert_snapshot!(
"education_plan_display_names",
[PlanType::Edu, PlanType::EduPlus, PlanType::EduPro]
.map(plan_type_display_name)
.join("\n")
);
}
#[test]
@@ -0,0 +1,7 @@
---
source: tui/src/status/helpers.rs
expression: "[PlanType::Edu, PlanType::EduPlus,\nPlanType::EduPro].map(plan_type_display_name).join(\"\\n\")"
---
Edu
Edu Plus
Edu Pro