Skip to content

feat(web): show the Users page to every org - #2324

Merged
Makisuo merged 1 commit into
mainfrom
feat/users-page-ungated
Nov 7, 2026
Merged

Makisuo merged 1 commit into
mainfrom
feat/users-page-ungated

Conversation

@Makisuo

@Makisuo Makisuo commented Nov 7, 2026 •

Copy link
Copy Markdown
Collaborator

Removes the `users` org rollout flag so the Users page is on for everyone.

  • `OrganizationFeatureFlags` and the web org flag schema no longer carry `users`.
  • The Users row under Analyze always shows in the sidebar and command palette.
  • `flaggedRouteRedirect` only gates status pages now; `/users` and `/users/:id` no longer send orgs home.
  • Dropped the two tests that pinned the gating; the other fixtures lose the field.

Orgs with `users: true` in their metadata are unaffected; the unknown key is ignored.

🤖 Generated with Claude Code


Autofix with [code]smith
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.

Drop the users rollout flag: the Users row under Analyze always shows and
/users no longer redirects orgs outside the rollout home.
@coderabbitai

coderabbitai Bot commented Nov 7, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 3 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 8c67ba2f-a990-4397-b563-358fa24c2304
Commits

Reviewing files that changed from the base of the PR and between ec5b479 and 4034912.

Files selected for processing: 13

  • apps/web/src/page/onboarding/create-org.scene.test.ts
  • apps/web/src/page/onboarding/plan-gate.test.ts
  • apps/web/src/page/onboarding/wrong-region.scene.test.ts
  • apps/web/src/platform/clerk.ts
  • apps/web/src/route/redirect.ts
  • apps/web/src/route/route.test.ts
  • apps/web/src/shell/nav.test.ts
  • apps/web/src/shell/nav.ts
  • apps/web/src/shell/palette/entries.ts
  • apps/web/src/shell/view-nav.ts
  • apps/web/src/update.customer-grace.test.ts
  • apps/web/src/update.test.ts
  • packages/domain/src/organization-feature-flags.ts
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@maple-review-bot

maple-review-bot Bot commented Nov 7, 2026 •

Copy link
Copy Markdown

Maple review

🟢 Confidence 8/10 · likely safe to merge. Flag removal is consistent end to end, but the ungating it introduces has no test pinning it.
1 warning −1 · tests partial −1 · risk medium

Removes the users rollout flag: the nav row, palette entry and /users routes are ungated for every org. No stale flag reader or server-side gate is left behind; only the missing test for the new behavior holds it back.

  • OrganizationFeatureFlags and ClerkOrganization.flags drop the users key
  • navGroups always renders the Users row under Analyze
  • flaggedRouteRedirect gates only status page routes now

Findings

🟠 Warning · F1 · The change's own behavior — Users always shown and reachable — is pinned by no test

tests · apps/web/src/shell/nav.test.ts:69-73

The Users-row test was deleted rather than inverted, so nothing asserts navGroups always contains Users, and route.test.ts:130 no longer pins that /users and /users/:id are not redirected. Both files test this kind of code, so the ungating itself is unpinned and a later re-gate would pass CI.

Add `expect(titles({ releases: false, securityAudit: false, statusPages: false })).toContain("Users")` here, and in `route.test.ts` assert `flaggedRouteRedirect(parse("/users"), { statusPages: false })` is `Option.none()`.
🤖 Prompt to fix this finding with an AI agent
Findings from an automated review of commit 403491203d960c3e6714bae41b91bcb9ea814b4c. Verify each one against the current code before changing anything, fix only those that still apply, and keep each fix to the lines it names.

---

F1 · Warning · tests · apps/web/src/shell/nav.test.ts:69-73
The change's own behavior — Users always shown and reachable — is pinned by no test
The Users-row test was deleted rather than inverted, so nothing asserts `navGroups` always contains `Users`, and `route.test.ts:130` no longer pins that `/users` and `/users/:id` are not redirected. Both files test this kind of code, so the ungating itself is unpinned and a later re-gate would pass CI.
Suggested fix: Add `expect(titles({ releases: false, securityAudit: false, statusPages: false })).toContain("Users")` here, and in `route.test.ts` assert `flaggedRouteRedirect(parse("/users"), { statusPages: false })` is `Option.none()`.

4034912 · What was checked, coverage and telemetry details are on the Maple / review check. Reply "won't fix" to dismiss a finding, or mention @maple-review-bot to ask about one.

@Makisuo
Makisuo merged commit e6907cf into main Nov 7, 2026
10 checks passed
@Makisuo
Makisuo deleted the feat/users-page-ungated branch November 7, 2026 00:29

@maple-review-bot maple-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

1 inline note from Maple's review. The score and summary are in the review comment above.

titles({ releases: false, securityAudit: false, statusPages: false, users: false }),
).not.toContain("Status pages")
expect(titles({ releases: false, securityAudit: false, statusPages: true, users: false })).toContain(
expect(titles({ releases: false, securityAudit: false, statusPages: false })).not.toContain(

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Warning

The change's own behavior — Users always shown and reachable — is pinned by no test

F1 · Warning · tests

The Users-row test was deleted rather than inverted, so nothing asserts navGroups always contains Users, and route.test.ts:130 no longer pins that /users and /users/:id are not redirected. Both files test this kind of code, so the ungating itself is unpinned and a later re-gate would pass CI.

Add `expect(titles({ releases: false, securityAudit: false, statusPages: false })).toContain("Users")` here, and in `route.test.ts` assert `flaggedRouteRedirect(parse("/users"), { statusPages: false })` is `Option.none()`.
🤖 Prompt to fix with an AI agent
In `apps/web/src/shell/nav.test.ts:69-73`: The change's own behavior — Users always shown and reachable — is pinned by no test.

The Users-row test was deleted rather than inverted, so nothing asserts `navGroups` always contains `Users`, and `route.test.ts:130` no longer pins that `/users` and `/users/:id` are not redirected. Both files test this kind of code, so the ungating itself is unpinned and a later re-gate would pass CI.

Suggested fix: Add `expect(titles({ releases: false, securityAudit: false, statusPages: false })).toContain("Users")` here, and in `route.test.ts` assert `flaggedRouteRedirect(parse("/users"), { statusPages: false })` is `Option.none()`.

Verify the problem exists at that location before changing it, and keep the fix to those lines.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant