From c9b9e68c18b83ead633be366cea2dd65a8a2beb5 Mon Sep 17 00:00:00 2001 From: Jeffrey Smith Date: Wed, 1 Apr 2026 13:25:04 +0000 Subject: [PATCH] Feat v0.6.14 visual polish (#49) Co-authored-by: Jeffrey Smith Co-committed-by: Jeffrey Smith --- CHANGELOG.md | 40 +++++++ ROADMAP-UI.md | 31 +++-- ROADMAP.md | 2 +- VERSION | 2 +- docs/EXTENSION-CSS.md | 7 +- packages/chat/css/main.css | 18 +-- packages/editor/css/main.css | 138 +++++++++++----------- packages/git-board/css/main.css | 2 +- packages/hello-dashboard/css/main.css | 2 +- packages/notes/css/main.css | 32 ++--- packages/schedules/css/main.css | 8 +- packages/sdk-test-runner/css/main.css | 86 +++++++------- packages/tasks/css/main.css | 4 +- packages/workflow-demo/css/main.css | 18 +-- server/pages/templates/base.html | 2 +- server/pages/templates/login.html | 1 - src/css/admin-surfaces.css | 68 +++++------ src/css/layout.css | 6 +- src/css/modals.css | 24 ++-- src/css/primitives.css | 58 ++++----- src/css/surfaces.css | 46 ++++---- src/css/sw-debug.css | 4 +- src/css/sw-login.css | 6 +- src/css/sw-primitives.css | 12 +- src/css/sw-shell.css | 48 ++++---- src/css/tool-grants.css | 12 +- src/css/user-menu.css | 10 +- src/css/variables.css | 41 ++++++- src/css/workflow.css | 18 +-- src/fonts/dm-sans-latin-ext.woff2 | Bin 0 -> 31292 bytes src/fonts/dm-sans-latin.woff2 | Bin 0 -> 62724 bytes src/fonts/jetbrains-mono-latin-ext.woff2 | Bin 0 -> 1640 bytes src/fonts/jetbrains-mono-latin.woff2 | Bin 0 -> 31432 bytes src/js/sw/primitives/menu.js | 22 +++- src/js/sw/surfaces/settings/appearance.js | 2 +- 35 files changed, 436 insertions(+), 334 deletions(-) create mode 100644 src/fonts/dm-sans-latin-ext.woff2 create mode 100644 src/fonts/dm-sans-latin.woff2 create mode 100644 src/fonts/jetbrains-mono-latin-ext.woff2 create mode 100644 src/fonts/jetbrains-mono-latin.woff2 diff --git a/CHANGELOG.md b/CHANGELOG.md index c19a5ab..7e1afa2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,46 @@ All notable changes to Armature are documented here. +## v0.6.14 — Visual Polish + +Systematic cleanup of stale values, self-hosted fonts, and rendering fixes. +Final visual pass before the v0.6.15 usability survey gate. + +### Fixed + +- **v0.6.13 spacing regressions** — added half-step tokens (`--sp-1h` 6px, + `--sp-2h` 10px) and restored correct padding on `.sw-btn--sm`, `.sw-input`, + `.sw-menu__item`, `.sw-dropdown__option`, `.sw-tabs__tab`. +- **Theme settings toggle** — showed resolved theme ("Dark") instead of stored + mode ("System"). Changed `appearance.js` to read `sw.theme.mode`. +- **Notes surface scrollbar** — added `overflow: hidden` to `.surface-inner` + in `base.html`, preventing spurious scrollbar at any scale. +- **Chat input clipped at high scale** — same `overflow: hidden` fix prevents + zoomed content from overflowing the surface container. +- **User menu drift at scale > 100%** — `menu.js` now divides + `getBoundingClientRect()` coords by the CSS zoom factor, fixing position + for `position: fixed` menus inside a zoomed ancestor. +- **Undefined variables** — `--text-secondary` (login), `--text-muted` + (user picker), `--text-1` (settings toggle) replaced with correct tokens. + +### Changed + +- **Stale fallback colors purged** — removed ~65 hex/rgba fallback values + from `var()` calls across 9 kernel CSS files and 3 extension packages. + Old gold theme color `#b38a4e` fully eliminated (9 instances). +- **Self-hosted fonts** — bundled DM Sans and JetBrains Mono woff2 files + in `src/fonts/`. Replaced Google Fonts `@import` and login.html `` + with local `@font-face` declarations. Zero external font dependencies. +- **Consistent border-radius** — added `--radius-sm: 4px` token. Migrated + ~60 hardcoded `border-radius` values across all kernel CSS and 12 extension + packages to three tokens: `--radius-sm` (4px), `--radius` (8px), + `--radius-lg` (12px). + +### Updated + +- `docs/EXTENSION-CSS.md` — added `--sp-1h`, `--sp-2h` half-step tokens + and `--radius-sm` to the public CSS contract. + ## v0.6.13 — Responsive & Spacing Spacing token scale and tablet breakpoint. All kernel CSS and extension diff --git a/ROADMAP-UI.md b/ROADMAP-UI.md index 40d90b1..461f206 100644 --- a/ROADMAP-UI.md +++ b/ROADMAP-UI.md @@ -83,18 +83,27 @@ login. All kernel CSS and 12 in-tree packages migrated to spacing tokens. `EXTENSION-CSS.md` updated with spacing table and breakpoint guide. Font-size scale deferred to v0.6.14. See CHANGELOG.md. -### v0.6.14 — Visual Polish +### v0.6.14 — Visual Polish ✅ -Systematic cleanup of stale values and rendering artifacts. +Shipped. Stale fallback colors purged (~65 instances), fonts self-hosted +(DM Sans + JetBrains Mono woff2), border-radius standardized to three tokens +(`--radius-sm`, `--radius`, `--radius-lg`). Also fixed v0.6.13 spacing +regressions (half-step tokens), theme settings default, surface overflow, +and user menu zoom drift. See CHANGELOG.md. + +### v0.6.15 — User Display Audit + +Every place a user identity appears in the UI must show a human-readable +name, never a UUID. Fallback chain: `display_name → username → "Unknown"`. | Step | Description | |------|-------------| -| Purge stale fallback colors | Remove all `var(--foo, #hexvalue)` fallbacks that reference old gold theme colors (`#b38a4e` and variants). If a CSS variable is undefined at this point, that's a bug — don't mask it with a wrong fallback. | -| Self-host fonts | Bundle DM Sans and JetBrains Mono woff2 files in `src/fonts/`. Replace Google Fonts `@import` with local `@font-face` declarations. Zero external font dependencies. | -| Light theme audit | Walk every surface in light mode. Fix any remaining hardcoded dark-mode colors, contrast issues, or invisible borders. Document any surface-specific light-mode overrides. | -| Consistent border-radius | Surfaces currently mix `6px`, `8px`, `10px`, `var(--radius)`, `var(--radius-lg)`. Audit and reduce to 3 values: `--radius-sm: 4px`, `--radius: 8px`, `--radius-lg: 12px`. | +| Participant display-name resolution | `chat-core` participants endpoint resolves `display_name` from the users table at query time instead of relying on a creation-time snapshot. If the stored `display_name` is empty, look up `users.display_name` or `users.username` by `participant_id`. | +| Audit all user-facing identity surfaces | Walk every surface that shows user identity: chat participant list, chat message sender names, chat typing indicators, workflow assignees, team member lists, admin user list, notification actor names. Ensure the fallback chain is `display_name → username → "Unknown"` everywhere. | +| SDK user-resolve utility | Add `sw.users.resolve(id)` or similar to the SDK — returns `{id, username, display_name, avatar}` with local caching. Surfaces use this instead of ad-hoc lookups. | +| Stale snapshot cleanup | Remove or deprecate the static `display_name` column in the participants table. All display names come from the users table via the resolve utility. | -### v0.6.15 — Usability Survey Gate +### v0.6.16 — Usability Survey Gate Make the UI machine-auditable so Claude Code can run an automated survey. @@ -105,7 +114,7 @@ Make the UI machine-auditable so Claude Code can run an automated survey. | Component coverage matrix | Markdown table: each kernel primitive (button, input, dropdown, dialog, toast, menu, tabs, avatar, spinner, tooltip, drawer, banner) × each surface that uses it. Identifies surfaces still using deprecated old-style components. | | Touch target audit | Script that finds all `