Skip to content

pricing: Org Admin Console#9164

Open
royendo wants to merge 23 commits intomainfrom
worktree-pricing
Open

pricing: Org Admin Console#9164
royendo wants to merge 23 commits intomainfrom
worktree-pricing

Conversation

@royendo
Copy link
Copy Markdown
Contributor

@royendo royendo commented Apr 1, 2026

Experiment with Agent orchestration:

based on #9110

loom: https://www.loom.com/share/a071733ed47a4b0b99cfbd6a5ca0d193

Checklist:

  • Covered by tests
  • Ran it and it works as intended
  • Reviewed the diff before requesting a review
  • Checked for unhandled edge cases
  • Linked the issues it closes
  • Checked if the docs need to be updated. If so, create a separate Linear DOCS issue
  • Intend to cherry-pick into the release branch
  • I'm proud of this work!

royendo and others added 23 commits April 1, 2026 10:51
…thHealth` API

Add a new org-level admin console page that gives organization admins a
quick overview of all project health statuses, with clickable links to
individual project status pages and a placeholder for an embedded
analytics canvas dashboard.

Backend: new `ListOrganizationProjectsWithHealth` RPC that returns
projects enriched with deployment status and runtime error counts.
Frontend: new `/[organization]/-/console` route with health summary
cards, project health table, and Console tab in org navigation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ListOrganizationResources` API

Redesign the admin console to match Rill's UI patterns:
- Add LeftNav with Overview and Resources tabs
- Use Rill semantic color classes (text-fg-primary, bg-surface-subtle, etc.)
- Move permission check to layout for all sub-routes

Add `ListOrganizationResources` backend endpoint that aggregates resources
across all projects in an org, with project name filtering. Resource errors
(reconcile + parse) are now surfaced at the org level.

Create `OrgResourceTable` component with project name, type, and search
filters ready for when the generated API client is available.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace placeholder data fetching with the generated Orval clients:
- Overview uses `createAdminServiceListOrganizationProjectsWithHealth`
  with health determination that factors in parse and reconcile error
  counts (not just deployment status)
- Resources page uses `createAdminServiceListOrganizationResources`
  to show org-wide resource table with real data
- ProjectHealthTable now shows an Errors column with parse/reconcile
  breakdown; rows highlight when any errors exist

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Overview uses OverviewCard sections with chip summary and project table
- Project table uses ... menu to navigate to project status (not clickable name)
- Resource table uses ResourceTypeBadge pills for Type column
- Resource table uses ResourceErrorMessage for Status (click X to copy error)
- Resource table has ... menu with "View in project" navigation
- Remove unused HealthSummaryCards and ProjectHealthTable components

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…lytics tabs

- Overview: org info card (name, display name, description, billing email,
  plan, created date) + project summary chips linking to filtered projects
- Projects: dedicated page with status filter chips (All/Healthy/Erroring)
  from URL params, matching the ResourcesSection chip pattern
- Analytics: own tab with placeholder for canvas dashboard
- LeftNav updated with all four tabs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace custom HTML selects and formatting with the same components
used in project resource tables:

- Filters use DropdownMenu.CheckboxItem with CaretDown/UpIcon (not <select>)
- Search uses retainValueOnMount, matching ProjectResources.svelte
- URL filter sync via createUrlFilterSync for back/forward navigation
- Name column uses NameCell (truncate + tooltip)
- Last refresh uses RefreshCell (relative time formatting)
- Status column uses ResourceErrorMessage (click X to copy error)
- Projects table uses ResourceErrorMessage for status with combined
  deployment + parse + reconcile error messages
- "View in project" links to /status/resources?q=resourceName
- table-fixed layout with explicit column widths matching project table

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Match the org resource table's consistent Type column width instead of
the variable minmax(95px, 108px).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… to Error

- Add sortable column headers to projects and resources org tables
- Split combined Errors column into separate Parse and Reconcile columns
- Rename "Erroring" status filter to "Error" across overview and projects
- Revert project resource table Type column width to minmax(95px, 108px)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…s filter to resources

- Replace sortIndicator() function calls with reactive $: sortIcon to fix
  Svelte 4 reactivity tracking in both projects and resources tables
- Add Resources card to overview with total/healthy/error chips linking
  to filtered resources page
- Add status dropdown filter (Healthy/Error) to org resource table with
  URL sync support

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…olumn

- Overview now has 4 sections: Organization, Projects, Resources, Errors
- Resources section shows type pills (Source, Model, Explore, etc.) with
  counts, using resourceKindStyleName colors, linking to filtered resources
- Errors section shows errored projects + errored resource types with red
  chips, each linking to the appropriate filtered page
- Widen Status column from 48px to 80px to fit sort arrow

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add type icons (from resourceIconMapping) to resource pills on overview
- Errors section shows only errored resource types with icons, no projects
- Errors card is highlighted red (bg-red-50, red border) and the entire
  card is clickable to navigate to resources filtered on error
- When no errors, shows neutral card with "No errors found"

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…e column

- Errors section now matches project status page: red border (not bg),
  error badge count, red chips with border-red-300/bg-red-50/text-red-700
- Whole error section is a clickable link to resources?status=error
- Remove Total chip from Resources section
- Widen Type column in org resource table from 108px to 130px

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rewrite OrgResourceTable from HTML <table> to CSS grid layout matching
VirtualizedTable exactly:
- CSS grid with `w-fit min-w-full` for proper horizontal scroll behavior
- `font-semibold text-sm` headers (was `font-medium text-xs`)
- `pl-4 pr-1` cell padding matching VirtualizedTable defaults
- `border-gray-200` borders (was `border-border`)
- ArrowDown icon for sort indicators (was text arrows)
- `border rounded-sm` container (was `border-border rounded-sm`)

Also widen project resource Type column to match org: `minmax(95px, 130px)`

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…tables

Add ResourceTypeCell component that fills the full cell with background
color instead of rendering as a small inline pill. Used in both project
(VirtualizedTable) and org (CSS grid) resource tables so the Type column
background spans edge-to-edge.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…e dead imports

- Extract isProjectHealthy() and hasProjectErrors() to
  project-health-utils.ts, replacing identical copies in overview and
  projects pages
- Remove unused `type ResourceKind` import from overview page
- Remove unused `type V1ProjectHealth` and `V1DeploymentStatus` imports
  from overview page (no longer needed after extracting helpers)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1. Fix defer-in-loop bug: extract fillProjectHealth helper so runtime
   client is closed per iteration, not deferred until function return
2. Fix status filter AND→OR: selecting both "healthy" and "error" now
   shows items matching either status, not requiring both
3. Consistent sort indicators: projects table now uses ArrowDown icon
   and CSS grid layout matching VirtualizedTable and org resource table
4. Remove fragile global * CSS selector in OrgResourceTable; scope
   border-gray-200 to .table-container and .row directly
5. Fix PageLoad→LayoutLoad in console +layout.ts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove Analytics from console left nav
- Add max-height 550px scrollable area for resource rows, matching
  project resource table's containerHeight={550}

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace hand-built CSS grid with VirtualizedTable (tanstack-table) to
unify implementation with ProjectResourcesTable. Extract OrgActionsCell
and ProjectNameCell into standalone components. Fix prettier formatting
across all console pages.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace hand-built CSS grid with VirtualizedTable (tanstack-table) to
match OrgResourceTable and ProjectResourcesTable. Extract ErrorCountCell,
ProjectStatusCell, and ProjectActionsCell into reusable components.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove `export` modifier from OrgResource type (not valid in Svelte 4
instance script) and add missing ResourceKind import for type cast.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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