feat/frontend-ds-migration #2

Merged
AzSiAz merged 37 commits from feat/frontend-ds-migration into main 2026-07-10 20:01:20 +02:00
Owner
No description provided.
AzSiAz self-assigned this 2026-07-10 20:01:06 +02:00
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Also add renderWithProviders test helper (AppProvider + MemoryRouter) — the
admin-zone page test pattern for hooks like useToast.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Replace the three legacy hand-rolled table views with the DS DataTable:
- jobs: virtual + maxHeight=60vh, onRowClick to /admin/jobs/:id, toast-based requeue
- flows: DataTable, onRowClick to /admin/flows/:id
- schedules: DataTable with jobs-jump link
Wire CursorPager, migrate requeue error-note to toast, harmonize remaining
error-notes onto DS Alert, drop JobsPage.css. Add a jsdom offsetHeight stub in
the test setup so TanStack-virtual DataTables mount their rows under test.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sidebar: drop the search item from SidebarNav and render it as a separated
"Back to search" context switch (border-top mini section, CornerUpLeft icon,
collapsed = icon-only + tooltip). Command palette + nav labels go English and
the placeholder becomes "Go to…".

Shell layout: wrap the Outlet in p-4/md:p-6 inside DashboardPanel, add min-w-0
to <main> (kills horizontal overflow at 768/1024 where flex min-width:auto
refused to shrink), and bind the root to h-screen instead of min-h-screen so
the DashboardPanel body is the scroll container — with min-h-screen the shell
grew with its content, overflow-y-auto never engaged and wheeling stalled short
of the bottom of a pager-less table.

Locale: add APP_LOCALE = 'en' and thread locale={APP_LOCALE} through RelativeTime
so times stop following the browser locale (Flow/JobDetail here; other pages in
their own commits).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Give the created-key Alert a KeyRound status icon, move Dismiss into the Alert
`actions` slot, and cap the secret in a max-w-md mono read-only input with the
CopyButton adjacent (no truncation of the secret). Force English relative times.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Anchor the view switcher first in the FilterBar (contextual filter second, queue
Select last) so it no longer travels when switching views. Lead with the
ThroughputChart full-width at the top of the stats section and make its SVG
stretch (w-full + viewBox + preserveAspectRatio) instead of a fixed points*px
width. De-emphasise resting state: a QueueStat with value 0 renders greyed,
faded and icon-less, while a non-zero dead count stays an error-colored anomaly.
Force English relative times.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Restore the original composition: archive panel back on the right at 20rem
(md:grid-cols-[1fr_20rem], aside last), meta line back to font-mono, and row
actions hover-reveal (opacity-0 group-hover/focus-within:opacity-100, keyboard
accessible). Fix confirmDelete: it closed the dialog in `finally`, so an API
failure dismissed it with no feedback. Now success refreshes + closes, failure
shows an error toast and rethrows so the DS ConfirmDialog stays open. Add a test
for the failure path. Force English relative times.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The legacy base.css/tokens.css bled into the DS admin shell: a{color:accent}
painted sidebar links green, the body radial-gradient showed behind the shell,
and :root color-scheme + a prefers-color-scheme media query fought the DS
class-based dark toggle. Tag SearchLayout and LoginScreen roots with
`zone-legacy` and scope the offending body-level rules (paper bg, gradient,
font-size, a{color}, ::selection, :focus-visible, and the dark token overrides)
under it; body now carries DS-neutral defaults and color-scheme tracks the DS
.dark class. Search/DocPage/Login keep their legacy look. TODO T5 markers left
on every scoped block for the final cleanup.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The sub-state chip row repeated completed/cancelled/failed with the exact
numbers already shown by the completed/cancelled/dead tiles right above it.
Keep only the in-flight refinements of pending/running (delayed, retry,
waiting_children, ready, active) and label the row "in flight" so its purpose
reads at a glance.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Rewrite the flagship SearchPage onto the design system: the search box
becomes a Combobox (allowCustomValue) fed by recent searches, with '/'
focus via useHotkey, DS Skeleton/EmptyState/Badge/IconButton/RelativeTime
states, and re-tokenized hero signature (stamp, serif, stats tiles →
/admin/jobs). Delete SearchPage.css. Extend renderWithRouter with a
data-router handle for URL assertions.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Delete tokens.css/base.css and fold the surviving signature touches (stamp,
head rule, article prose, login rise, reading measures + serif var) into
styles/indara-signature.css. Remap the search-zone chrome (Header, SearchLayout
shell, page links) off the legacy --ink/--bg/--accent/--line tokens onto the DS
--ui-* contract, so the whole UI follows the DS `.dark` class instead of a
prefers-color-scheme media query. Drop the !important link-color hacks that only
existed to beat the now-deleted unlayered `.zone-legacy a` rule, and swap the
Boot loader off the removed `.loading-rule` onto the DS Spinner.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Remove the hand-rolled PipelineGraph and ConfirmDialog (plus the now-orphaned
Icon) — every consumer migrated to the DS FlowGraph/ConfirmDialog in T1-T4.
Prune lib/format of the unused relativeTime/formatDate (pages use the DS
RelativeTime). Give DocPage's delete the same failure path as HistoryPage: an
error toast on api.deleteDocument reject, rethrown so the ConfirmDialog stays
open (DS contract).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The frontend build stage runs `npm ci` against the @azsiaz forge registry, so
it needs frontend/.npmrc (the scope→registry line) before install. Add the
0.2.0 CHANGELOG and bump the package version.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
AzSiAz merged commit 48dc5b1e0e into main 2026-07-10 20:01:20 +02:00
AzSiAz deleted branch feat/frontend-ds-migration 2026-07-10 20:01:49 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
AzSiAz/Indara!2
No description provided.