Skip to content

feat: one page frame, themed controls and create buttons in one place across Strata - #98

Merged
AmrMsCLL merged 1 commit into
mainfrom
feat/ui-overhaul
Oct 11, 2026
Merged

AmrMsCLL merged 1 commit into
mainfrom
feat/ui-overhaul

Conversation

@AmrMsCLL

Copy link
Copy Markdown
Member

A design pass over the whole app, following review feedback: the sidebar floated at the bottom of the page, controls were native and unthemed, create buttons sat in a different place on every screen, and layouts differed page to page.

Dependency: @project-graphite/ui goes from 0.3.0 to 0.4.0 (our own package; Project-Graphite/graphite-ui#13). It adds themed Select, DatePicker, TimePicker, ColorSwatches, SuggestField, calm skeleton timing (useSettled), framed list rows, and moves the footer into the content column, so the sticky sidebar no longer floats.

One layout

  • New components/Page.tsx: Page (title, description, header actions, one width), HeaderButton, Toolbar (filters on the left, actions on the right) and Section (replaces SettingsSection). Every app page uses it: Home, Today, Agenda, Calendars, Event, Pages, Boards, Bookmarks, Journal, Recurring, Tidy, Inbox, Invitations, Trash, Menu, Spaces, Settings and Site settings.
  • Space tabs (Tasks, Pages, Recurring, Habits, Tags, Members) put their actions in a Toolbar on the right.
  • Framed lists use panel-rows and panel-row everywhere, with the same padding.

Create from one place, in a dialog

  • Invitations: "Create invite link" and "Invite by email" replace the inline form with its always-visible email field. A created link opens in a dialog with a copy button that confirms.
  • New task, new or renamed list, new space, tag, tagging rule, habit, space invite, followed calendar, saved bookmark and subscription all open from a header or toolbar button. Recurring gains "Add subscription", with a space picker.
  • Row actions (spaces, tags, habits, rules, lists, dashboard widgets) live in one ⋯ menu.

Themed controls everywhere

  • No native <select>, date, time or <datalist> remain. Every picker uses graphite-ui, including those in database cells, widget settings, statement import, splits and date polls.
  • Time zones and currencies are searchable lists, labelled by city or code with the region or name as a hint (choices.ts).
  • World clocks are a searchable "Add a city" list plus removable chips, replacing a multi-select box.
  • Shared option builders: spaceOptions, roleOptions and colorOptions in spaces.tsx.

Settings

  • Four tabs: Profile, Security (now includes signed-in devices and the security log), Developer (access tokens, then API and webhooks) and Your data. Old URLs redirect, and the "new sign-in" email links to Security.
  • Notification toggles are grouped in one frame.

Smaller fixes

  • Space marks show a person icon for the personal space and the initial for shared ones. The space header no longer repeats the name.
  • Page lists and the sidebar tree show page and board icons instead of · and ▦, with chevron and plus icons in the tree.
  • Home: the edit mode has "Add widget" and "Dashboard settings" (name and schedule, in a dialog). Widgets no longer stretch to the row height, and task rows stay inside their card.
  • Agenda: arrow buttons and a readable range ("Oct 11 – Nov 9, 2026").
  • Recurring categories are capitalised in the editor and the totals.
  • Skeletons wait 200 ms, then stay at least 450 ms, through useResource.

Tests

  • New helpers in test/controls.ts (choose, chooseFromMenu, pickDay) drive the themed controls.
  • Specs whose steps went through native selects or inline forms now open the dialog or listbox first. Assertions are unchanged, except that three notes expectations drop the · placeholder glyph this change removes.
  • Ran: activity, agenda, api-settings, bookmarks, calendars, dashboard, files, habits, invitations, journal, notes, page-import, push, routes, search, settings, share, skeletons, spaces, statement, subscriptions, tasks, tidy, tokens and two-step. Also tsc -b, oxlint and the frontend build.
  • Checked by eye in the local stack: Home, Invitations, Spaces, Bookmarks, Calendars, Recurring, Agenda, Settings, Pages, the New task dialog and the space Tags, Members and Habits tabs.

… across Strata

Every page now uses the shared Page frame with its actions in the header, every
create action opens a dialog from a button on the right, and every select, date
and time field uses the themed graphite-ui 0.4.0 controls.
@github-actions github-actions Bot added the size/xl Over 600 changed lines, excluding lockfiles label Oct 11, 2026
@AmrMsCLL
AmrMsCLL merged commit 9c974a5 into main Oct 11, 2026
7 checks passed
@AmrMsCLL
AmrMsCLL deleted the feat/ui-overhaul branch October 11, 2026 11:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xl Over 600 changed lines, excluding lockfiles

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant