23 May 2026
Roles, edited in place
The role editor moves into the same in-context shape as theme, settings, and categories. Click a role, it expands. Save pill at the bottom.
You spent yesterday testing the new role system and gave it a clear note: it works, but it doesn't feel like the rest of the admin yet. The role editor was a separate page. The save buttons looked different. The flow from list → editor → back was a navigation, not a transition.
That's resolved today.
The roles page is a single page now. Click any role and it expands inline — same gesture as opening a category card in the admin categories view, same gesture as opening a theme section in the studio. Closing it doesn't lose your draft. You can have several roles open at once if you're comparing grants between them, and the draft for each one stays put.
The save pill matches the rest of the admin. Same floating shape as the one in theme studio, settings, and categories. Same "Saved — live for everyone" affordance after a save. Same dot color signalling dirty / saving / saved / error states. One language across the whole admin surface.
Opens fast, loads progressively. When you click a role to expand it, the editor body appears immediately with a shimmer skeleton in the right shape. The full grants matrix and member list load underneath. You don't sit on a blank page waiting for 200 booleans to render — you see the structure first, then the content.
Drag-to-reorder still works from the row chrome (it just disables on a row while you're editing inside it, so reordering doesn't fight expansion).
This isn't a feature shipping. This is the role editor catching up to the rest of the admin's vocabulary. If you have one of those "wait, this works just like settings now" moments, that's the whole point.
Deep links to specific roles still work — /roles/your-role-id redirects to the accordion view with that role already expanded.
The thing this surfaces, more than the visual fit, is the underlying philosophy: in context, not on the next page. When the admin wants to do something, the response happens where they are. Pages are for navigation, not for editing.