Skip to content

feat(frontend): calmer, consistent UI across every screen - #16

Merged
CubityFirst merged 24 commits into
mainfrom
ui/polish-overhaul
Nov 6, 2026
Merged

CubityFirst merged 24 commits into
mainfrom
ui/polish-overhaul

Conversation

@CubityFirst

Copy link
Copy Markdown
Owner

The app worked, but it wasn't easy on the eyes: inconsistent spacing and widths between pages, loud colours, cramped or oversized controls, and page actions scattered in different places. This pass reworks every screen – dashboard, file manager, doc reading and editing, file viewers, settings, profile, the published site, marketing/auth pages and mobile – into one calm, consistent system.

It was driven by screenshot review rounds (64 captures per round) until two independent design reviewers both scored every set of screens at least 9/10.

What changes for users

  • Pure neutral dark palette (no warm/brown tint), quieter borders, inputs and badges; colour only for status and destructive actions.
  • One layout system: every in-app page shares the doc column's left edge with two widths (704px reading, 944px wide).
  • Page actions live in the top bar on desktop (doc History/Edit/⋯, editor Done-or-Cancel/Save, file Copy embed/Download/⋯, New document, New site), with ⋯ always rightmost.
  • Sidebar page tree ("Contents") with the open doc/folder highlighted; "Recently accessed" no longer reshuffles.
  • Editor: title edited in place in the breadcrumb, Save muted until there are changes, Markdown reference docks beside the page, tables and callouts refined.
  • Search: dashboard Ctrl+K searches docs across sites; excerpts read as plain text with highlighted matches.
  • Doc ⋯ menu gains Copy link, Move to folder… and Move to recycle bin; file manager uses the same recycle-bin wording.
  • Settings: grouped side nav, consistent row cards and empty states, Account settings naming, Appearance section, invite form validation.
  • Mobile: 44px touch targets throughout, side-by-side actions, wrapping dice chips.
  • Copy: UK spelling, spaced en dashes, no Oxford comma, sentence case.
  • Marketing/auth/legal/404 polished and landing product shots regenerated from the current UI.

Behaviour changes worth knowing

  • Dashboard star → pin ("Pin to top"/"Unpin"); it's the existing per-member sort flag, now distinct from the profile's "Favourite sites".
  • Create dialogs and the member-invite Add button stay disabled until a valid name/email is entered; a new doc's Save needs a title or text.
  • File manager row checkboxes appear on hover/focus or once something is selected (always on touch).
  • Demo: site seeded with Graph view on; demo graph endpoint refuses when graph is off (matching the API); demo GET /files?projectId= added.
  • Image viewer shows pixel size; uploader name shows only where the API returns it (the single-file endpoint doesn't yet).

Testing

  • pnpm --filter frontend test: 917 passing; tsc --noEmit clean.
  • e2e specs updated for renamed labels (File manager, Move to recycle bin, Pin to top, Invites heading, new-doc titles before Save, scoped sidebar-vs-main locators) but not run locally – they need the backend.

…ierarchy, settings rows, file viewer actions
…reate button, settings nav, dashboard layout
…n top bar, cross-site search, settings nav grouping
…ariants, quieter inputs, graph/tag pages, landing framing
…ghts, consistent empty states, legal/auth layout, UK copy
…er details, quieter tables, settings rows, legal and auth polish
…rite on dashboard, top-anchored auth column, readable placeholders
Reworked the dashboard site card against a stress set (all features,
long names and descriptions, slug names, long org names, bare private
sites) until two design reviews both scored it 9/10:

- Title is a link stretched over the card instead of role="button"
  wrapping buttons; only the org, feature, pin and menu controls sit
  above it, so the pill and padding click through.
- Identity row shows the site's square logo (letter fallback) beside a
  40px title slot, so descriptions align across a row. Multi-column
  titles clamp to two lines with a full-name tooltip on hover or focus
  (Escape dismisses); single-column titles wrap in full.
- Org on its own line (links to the org for members, reveals the full
  name otherwise) above the counts; counts hold their line while loading.
- AI / real-time glyphs are one button with an "Enabled on this site"
  popover, so their meaning is reachable on touch.
- Published/Private is plain status; View public site lives in the menu.
- Compact controls with 40-44px touch areas on phones; tooltips wait
  400ms on the site grids; no equal-height rows, and the 2-column switch
  is a container query.
- "Realtime" spelled "real-time" in user-facing copy.
@CubityFirst
CubityFirst merged commit 7822a7d into main Nov 6, 2026
1 check passed
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