Skip to content

v0.19.0 — visual overhaul (Quiet Expert)

Choose a tag to compare

@abdulwahed-sweden abdulwahed-sweden released this 24 May 13:22
· 190 commits to main since this release

A six-turn redesign of every admin UI surface under the Quiet Expert design language. Calm, dense, professional — Stripe Dashboard / Linear / Vercel discipline applied to every page.

No backend change. Every Rust handler, route, model, SQLx query, and migration is identical to 0.18.x. The diff is CSS / templates / JS / one new icon.

New design primitives

Primitive Role
.rio-section Page-level content rhythm — eyebrow label + counted title + body
.rio-empty-state Icon + headline + lead + CTA — replaces one-paragraph .rio-empty
.rio-confirm (+ --danger / --neutral) Block for every destructive / mutating action — left-edge stripe + icon badge + lead + items list
.rio-env-chip Env / version metadata next to a page title
.rio-page-actions__group Secondary-button cluster next to a primary CTA on the page header
Refined .rio-card Lighter shadow ambient + --quiet / --elevated opt-ins

Unified across every page

  • Page header pattern: breadcrumb · title · primary action · lead — every list / form / detail / settings / admin-tool page now uses one shape.
  • Stat tiles: drop the cycling pastel background fills (festive) for one consistent white surface + 3-px accent rail (semantic). Color is reserved for SEMANTIC meaning now, not per-tile decoration.
  • Empty states: every .rio-empty paragraph upgraded to a proper .rio-empty-state block.
  • Confirmation flow: every delete / bulk-confirm / lock / disable-MFA / password-change success uses the same .rio-confirm block. Cancel button moved to the left of the action row so the destructive primary doesn't sit next to the cursor's natural arrival point.
  • Section wrapping: list pages all use .rio-section with eyebrow + counted title (e.g. "All groups · 3 groups").

Per-page work

Turn Templates
1 — Foundation + Dashboard index.html, cards.css, dashboard.css
2 — List pages list.html, users_list, groups_list, log_entries, notifications
3 — Form + confirm form.html, user_{new,edit,view}, group_{new,edit}, confirm_delete, user_confirm_delete, group_confirm_delete, lock_user, bulk_confirm_{delete,action}, confirm_admin_action
4 — Settings + auth account_sessions, password_change, mfa_{enroll,disable,regenerate,enroll_complete,regenerate_complete}. MFA settings pages migrated from the auth-style .rio-login centered shell to the in-chrome settings pattern — sidebar shows correctly now.
5 — Admin tools docs_index, apis_index, feature_flags, db_browser, object_history, csv_import_result
6 — Polish user_view final empty-state polish, version bump, CHANGELOG

What rolls into this release

Two earlier in-progress passes (v0.18.6 polish + bug-fix bundle) ship together with the visual overhaul as one minor bump:

  • 0.18.6 polish (committed under a875ec4): topbar search trigger goes wide (flex:1), list-toolbar 2-row reflow, per-row kebab dropdown, dashboard greeting trimmed, smooth area-chart sparkline.
  • 0.18.6 bug fixes (committed under 2a43d59 as pre-tested drop-in files): --rio-z-* ladder, kebab JS via <details> + JS upgrade to escape table overflow, shared _row_actions.html partial, focus-visible polish, post-seed demo rows.

Compatibility

  • Library, macros, CLI public surface: unchanged.
  • Projects that override --rio-* tokens in their own stylesheet: no change, overrides still cascade.
  • Templates that depend on the dropped .rio-dashboard-greeting* or .rio-dashboard-section-* selectors need to switch to the unified .rio-page-header / .rio-section. None of the framework's own templates still emit them.
  • .rio-empty is kept in the cascade for back-compat but the framework's own templates all use .rio-empty-state now.
  • MSRV: 1.88 (unchanged).

See CHANGELOG.md for the full per-section record.