Skip to content

Settings → Team: add "Your team is full" alert above invite header#10705

Merged
IsaiahWitzke merged 10 commits into
masterfrom
iw/teams-settings-redesign
May 15, 2026
Merged

Settings → Team: add "Your team is full" alert above invite header#10705
IsaiahWitzke merged 10 commits into
masterfrom
iw/teams-settings-redesign

Conversation

@IsaiahWitzke
Copy link
Copy Markdown
Contributor

@IsaiahWitzke IsaiahWitzke commented May 12, 2026

Demo

https://www.loom.com/share/2475a2f1c3d747578da548a2cb4d04b4

Description

  • Adds the red "Your team is full" alert to the team settings page when the team has hit its workspace size cap.
  • Condenses all "invite team members" ui together + info about "adding team members costs $" is now in that section better
  • Adds a "current team size" + hover-able icon explaining you current team size
  • Adds an upgrade CTA at the bottom (even when there's no cap exceeded limits) so if ppl see "oh im limited by team members? how do i upgrade?" they always have a path
  • Changes the disabled "invite by email" section when you're at your limit... otherwise showed the same CTA twice (once in the new red "team is full" alert)

Screenshots of "interesting" test cases

Free team under limit

image

Free team at limit

image

Self serve team above limit

image

Business at limit

image

When a team has reached its workspace size cap (and is not delinquent),
show a red alert above the "Invite team members" header explaining that
the team is full and pointing the admin to the right next step:

- `Upgrade` button (routes to /upgrade) when pricing data shows a
  higher-cap self-serve plan is available.
- `Contact sales` button (mailto:sales@warp.dev) when the team is
  already on the Build Business plan, which is the top self-serve tier.
- No CTA button for non-admins, delinquent teams, or admins on plans
  where no higher-cap plan exists — they still see the body copy
  pointing at a team admin / support@warp.dev.

The per-seat cost disclaimer below the header continues to render
unchanged when the team is on a paid Stripe plan.

Co-Authored-By: Oz <oz-agent@warp.dev>
@cla-bot cla-bot Bot added the cla-signed label May 12, 2026
@oz-for-oss
Copy link
Copy Markdown
Contributor

oz-for-oss Bot commented May 12, 2026

@IsaiahWitzke

I'm starting a first review of this pull request.

You can view the conversation on Warp.

I completed the review and no human review was requested for this pull request.

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

Copy link
Copy Markdown
Contributor

@oz-for-oss oz-for-oss Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overview

This PR adds pricing-plan access for the team settings page, a sales contact action, and a new full-team alert plus invite-section layout updates.

Concerns

  • The full-team alert is skipped entirely for delinquent teams, even though the CTA logic already supports rendering the alert without a button for delinquency.
  • The Upgrade CTA is gated only by whether any pricing plan has a higher seat cap, so non-self-serve tiers can be sent to /upgrade.
  • Manual testing is required for changes that can be manually tested. Please include screenshots or a screen recording that show it working end to end, or justify why manual testing is not possible.

Verdict

Found: 0 critical, 3 important, 0 suggestions

Request changes

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

Comment thread app/src/settings_view/teams_page.rs Outdated
Comment thread app/src/settings_view/teams_page.rs Outdated
IsaiahWitzke and others added 2 commits May 12, 2026 10:05
Adds a footer CTA below the team-members list that nudges admins to
grow their team. Two states:
- Not on Business plan, has a finite seat cap, team fits in Business's
  cap → '<Upgrade to Business> for up to N members' (clicks route
  through the existing self-serve upgrade flow).
- Already on Business → 'Reach out to <sales@warp.dev> for more seats'
  (clicks open a mailto: to sales).
Other cases (non-admin, unlimited plan, no Business in pricing data,
already too big for Business) omit the CTA.

Also fixes the 'additional members' pricing alert to use 20px vertical
padding (was 12) so the disclaimer text has more breathing room from
the container edge.

Co-Authored-By: Oz <oz-agent@warp.dev>
- Bump render_subsection_header to 18pt at full active_ui_text_color
  opacity so "Invite team members" / "Team members" / "Plan usage limits"
  / "Your team is full" read as real section titles vs. the muted
  "By link" / "By email" / "By discovery" subsubsection labels.
- Filter unlimited plans (max_team_size = None) out of
  has_higher_seat_cap_plan_available so legacy unlimited tiers (Pro,
  Team, Turbo, Lightspeed) aren't treated as upgrade targets.
- Drop the delinquency gate on the "Team is full" alert — full is full
  regardless of payment state; the invite-by-email section continues to
  render its own manage-billing copy for delinquent teams.
- Move "By discovery" into the invite section alongside "By link" /
  "By email" and trim a now-stale comment above the seat-cap alert.

Co-Authored-By: Oz <oz-agent@warp.dev>
@IsaiahWitzke IsaiahWitzke marked this pull request as draft May 12, 2026 17:45
IsaiahWitzke and others added 2 commits May 12, 2026 16:24
@IsaiahWitzke IsaiahWitzke marked this pull request as ready for review May 12, 2026 20:36
@IsaiahWitzke IsaiahWitzke requested a review from jefflloyd May 12, 2026 20:36
@oz-for-oss
Copy link
Copy Markdown
Contributor

oz-for-oss Bot commented May 12, 2026

@IsaiahWitzke

I'm starting a first review of this pull request.

You can view the conversation on Warp.

I completed the review and no human review was requested for this pull request.

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

Copy link
Copy Markdown
Contributor

@oz-for-oss oz-for-oss Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overview

This PR reorganizes the Team settings invite area, adds seat-cap alerts/CTAs, disables email invites at capacity, and adds team-size/count UI. The implementation has two correctness regressions in the cap-handling paths that should be fixed before merge.

Concerns

  • Self-serve upgrade availability now depends on pricing data being loaded; while pricing is unavailable, capped free/self-serve admins can lose the Upgrade path and fall through to no actionable CTA.
  • TeamLimitExceeded is routed through the normal invite form and only disabled by a separate local size-policy check, so stale or missing policy data can re-enable invites for a server-reported over-limit team.

Verdict

Found: 0 critical, 2 important, 0 suggestions

Request changes

Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

Comment thread app/src/settings_view/teams_page.rs Outdated
Comment thread app/src/settings_view/teams_page.rs Outdated
IsaiahWitzke and others added 2 commits May 13, 2026 10:33
Co-Authored-By: Oz <oz-agent@warp.dev>
Replaces the mailto:sales@warp.dev link in AdminActions::contact_sales
with https://warp.dev/contact-sales, and updates the seat-cap alert body
copy and outgrow footer link text from 'Contact sales@warp.dev' to
'Contact sales' so the visible label no longer suggests an email handoff.

Co-Authored-By: Oz <oz-agent@warp.dev>
Copy link
Copy Markdown
Contributor

@tylerlam-warp tylerlam-warp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

Comment thread app/src/settings_view/teams_page.rs Outdated
Comment thread app/src/settings_view/teams_page.rs Outdated
Comment thread app/src/settings_view/teams_page.rs Outdated
} else {
match cta {
SeatCapCta::Upgrade => "Upgrade to grow your team.",
SeatCapCta::ContactSales | SeatCapCta::None => "Contact sales to grow your team.",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: So if a team is delinquent, it will show "Contact sales to grow your team.". Is that the right CTA for that?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good call

Comment thread app/src/settings_view/teams_page.rs Outdated
) -> Box<dyn Element> {
let mut invitation_section = Flex::column();

// Optional "Team is full" warning box.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This might not even be related to your PR, but if the team is delinquent, should we be rendering this section?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think you should be able to disable your invite links / team discoverability stuff if you're delinquent. You might want to restrict users joining your team after you sort out your delinquent billing stuff -- so those toggles at least should be shown.

IsaiahWitzke and others added 3 commits May 15, 2026 16:20
The seat-cap alert at the top of Settings → Teams now covers every
reason team growth is blocked: seat cap reached, seat cap exceeded,
payment past due, and unpaid subscription. Title, body, CTA sentence,
and CTA button each branch on the warning variant + viewer admin state
+ plan tier.

The delinquency UI inside the by-email section is gone — the form
just renders disabled when any warning is active, and the recovery
action (Stripe portal for self-serve admins, Contact support for
enterprise) lives in the banner CTA button. The outgrow footer is
also suppressed while delinquent so we don't duplicate messaging.

Also folds in earlier PR feedback: new BillingMetadata::is_enterprise_plan
helper, dropped a stale clippy::too_many_arguments allow, and dropped
an unused workspace_size_policy param threading.

Co-Authored-By: Oz <oz-agent@warp.dev>
@IsaiahWitzke IsaiahWitzke enabled auto-merge (squash) May 15, 2026 20:52
@IsaiahWitzke IsaiahWitzke merged commit d6788cb into master May 15, 2026
25 checks passed
@IsaiahWitzke IsaiahWitzke deleted the iw/teams-settings-redesign branch May 15, 2026 21:08
lawsmd pushed a commit to lawsmd/cortex that referenced this pull request May 22, 2026
…arpdotdev#10705)

## Demo

https://www.loom.com/share/2475a2f1c3d747578da548a2cb4d04b4

## Description

- Adds the red "Your team is full" alert to the team settings page when
the team has hit its workspace size cap.
- Condenses all "invite team members" ui together + info about "adding
team members costs $" is now in that section better
- Adds a "current team size" + hover-able icon explaining you current
team size
- Adds an upgrade CTA at the bottom (even when there's no cap exceeded
limits) so if ppl see "oh im limited by team members? how do i upgrade?"
they always have a path
- Changes the disabled "invite by email" section when you're at your
limit... otherwise showed the same CTA twice (once in the new red "team
is full" alert)

## Screenshots of "interesting" test cases

### Free team under limit

<img width="1728" height="1117" alt="image"
src="https://github.com/user-attachments/assets/93799ad3-90f0-4546-9a84-eec1d176f7b2"
/>

### Free team at limit

<img width="1728" height="1117" alt="image"
src="https://github.com/user-attachments/assets/ba3f8306-bd41-4aaa-baeb-44d4fb6142d3"
/>

### Self serve team above limit

<img width="1728" height="1117" alt="image"
src="https://github.com/user-attachments/assets/b1fdf0de-1687-4534-81e0-d3035866728d"
/>

### Business at limit

<img width="1728" height="1117" alt="image"
src="https://github.com/user-attachments/assets/816c1990-f95f-42ff-aab0-861dbb68bf99"
/>

---------

Co-authored-by: Oz <oz-agent@warp.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants