-
0d4026a968
feat(web): standardize loading on shared skeleton recipes; retire '…' + empty status divs (#53)
logaritmisk
2026-06-08 06:50:57 +02:00
-
d0da77a004
feat(web): shared loading skeleton recipes (List/Form/AppShell) + common.loading (#53)
logaritmisk
2026-06-08 06:46:24 +02:00
-
6bce1e6782
docs(plans): loading skeletons — 2-task plan (#53)
logaritmisk
2026-06-08 06:27:38 +02:00
-
506bfd63dd
docs(specs): standardize loading states on Skeleton recipes (#53)
logaritmisk
2026-06-08 06:22:25 +02:00
-
-
f45f1d8807
merge: token-styled ui/Select replacing raw selects (#51)
logaritmisk
2026-06-08 06:09:23 +02:00
-
-
ede32551be
feat(web): field-form selects use ui/Select; rewrite select tests (#51)
logaritmisk
2026-06-08 06:03:54 +02:00
-
71d899cbdc
feat(web): object-form visibility uses ui/Select (#51)
logaritmisk
2026-06-08 06:00:21 +02:00
-
09e9b3f4d4
feat(web): ui/select Base UI Select wrapper matching Input + story (#51)
logaritmisk
2026-06-08 05:54:46 +02:00
-
e54ea89b1e
docs(plans): token-styled select — 3-task plan (#51)
logaritmisk
2026-06-08 05:50:00 +02:00
-
3782120b49
docs(specs): token-styled ui/Select replacing raw selects (#51)
logaritmisk
2026-06-08 05:47:08 +02:00
-
-
28e444c6c5
merge: object form robustness — data router, dirty guard, validation, batch entry (#46)
logaritmisk
2026-06-07 23:41:23 +02:00
-
-
d3ee4365e0
feat(web): unify create/edit partial-failure recovery with 'created' banner (#46)
logaritmisk
2026-06-07 23:31:15 +02:00
-
e18cad9c6a
feat(web): unsaved-changes guard (useBlocker + beforeunload) on the object form (#46)
logaritmisk
2026-06-07 23:26:15 +02:00
-
537b847acb
feat(web): code-aware field errors + min count validation (#46)
logaritmisk
2026-06-07 23:20:30 +02:00
-
3900bc362c
feat(web): disable submit while saving + Save & create another + Cmd/Ctrl+Enter (#46)
logaritmisk
2026-06-07 23:15:21 +02:00
-
ed0c13907c
refactor(web): migrate to data router (createBrowserRouter) to enable useBlocker (#46)
logaritmisk
2026-06-07 23:07:03 +02:00
-
f3881e8c7c
build(web): upgrade Vitest 3→4 (browser-playwright provider) (#46)
logaritmisk
2026-06-07 23:03:21 +02:00
-
6ed137f49e
docs(plans): object form robustness — 5-task plan (#46)
logaritmisk
2026-06-07 21:18:53 +02:00
-
e005e76f5b
docs(specs): object form robustness — data router, dirty guard, partial-failure, validation (#46)
logaritmisk
2026-06-07 21:14:01 +02:00
-
-
b7242caf51
merge: app header wayfinding — breadcrumb, user menu, search, app_name brand (#54)
logaritmisk
2026-06-07 19:45:23 +02:00
-
-
6efe09d40c
feat(web): assemble header — breadcrumb, search, user menu; remove standalone sign out (#54)
logaritmisk
2026-06-07 19:27:43 +02:00
-
5c8fe3cd81
feat(web): UserMenu (email/role + sign out) + HeaderSearch components (#54)
logaritmisk
2026-06-07 19:23:43 +02:00
-
4b55218c69
feat(web): set breadcrumb trails on all AppShell routes (#54)
logaritmisk
2026-06-07 19:18:43 +02:00
-
af6004f731
refactor(web): remove eslint-disable from useBreadcrumb via ref (#54)
logaritmisk
2026-06-07 19:15:03 +02:00
-
18cb35beff
feat(web): page-driven breadcrumb context + header render + objects wiring (#54)
logaritmisk
2026-06-07 19:11:31 +02:00
-
dbaf22500e
feat(web): ui/menu Base UI dropdown wrapper + story (#54)
logaritmisk
2026-06-07 19:05:25 +02:00
-
4fad3c43f0
feat(web): render configured app_name for brand + login; drop hardcoded app.name (#54)
logaritmisk
2026-06-07 19:01:15 +02:00
-
e4badbdefc
docs(plans): app header wayfinding — 6-task plan (#54)
logaritmisk
2026-06-07 18:58:04 +02:00
-
285d35601b
docs(specs): app header wayfinding — breadcrumb, user menu, search, app_name (#54)
logaritmisk
2026-06-07 18:18:03 +02:00
-
-
9b3a587eab
merge: typography hierarchy + page <h1> + per-route document.title (#57)
logaritmisk
2026-06-07 17:44:53 +02:00
-
-
8511aebb53
feat(web): object-detail tab title, caption element fix, login title (#57)
logaritmisk
2026-06-07 17:22:18 +02:00
-
6e1f5ea50f
feat(web): page <h1> + document.title on list/form routes (#57)
logaritmisk
2026-06-07 17:17:01 +02:00
-
70025e1e71
feat(web): useDocumentTitle hook (restores prior title on unmount) (#57)
logaritmisk
2026-06-07 17:12:41 +02:00
-
40384d91dd
style(web): match ui/ no-semicolon convention in PageTitle (#57)
logaritmisk
2026-06-07 17:11:29 +02:00
-
d3e88be70f
feat(web): PageTitle h1 component + story (#57)
logaritmisk
2026-06-07 17:09:30 +02:00
-
03f6e1d7ed
docs(plans): typography page titles — 4-task plan (#57)
logaritmisk
2026-06-07 17:07:43 +02:00
-
aab1bb37dc
docs(specs): typography hierarchy + page <h1> + per-route document.title (#57)
logaritmisk
2026-06-07 16:59:37 +02:00
-
-
9323c608ee
merge: dark-mode theme toggle — tri-state Light/Dark/System, FOUC-safe (#59)
logaritmisk
2026-06-07 16:45:55 +02:00
-
-
eead013ccd
fix(web): raise dark --primary contrast to AA for button labels (#59)
logaritmisk
2026-06-07 16:40:47 +02:00
-
4f3db60ed2
feat(web): mount ThemeSwitch in header + pre-paint theme init (#59)
logaritmisk
2026-06-07 16:37:04 +02:00
-
6d17e5f84d
feat(web): ThemeSwitch icon segmented control + theme.* i18n (#59)
logaritmisk
2026-06-07 16:33:16 +02:00
-
d452dd9b35
feat(web): useTheme hook with live system tracking (#59)
logaritmisk
2026-06-07 16:29:59 +02:00
-
e5c03383fe
feat(web): theme core — resolve/read/apply tri-state theme (#59)
logaritmisk
2026-06-07 16:28:21 +02:00
-
5e7a80e377
docs(plans): dark-mode theme toggle — 5-task plan (#59)
logaritmisk
2026-06-07 15:25:42 +02:00
-
5d63f06863
docs(specs): dark-mode theme toggle — tri-state, icon segmented, FOUC-safe (#59)
logaritmisk
2026-06-07 15:19:29 +02:00
-
-
d0e3772c34
merge: LabelEditor preserves other-language labels on edit (#55)
logaritmisk
2026-06-07 14:41:22 +02:00
-
-
a9e6788b0b
fix(web): LabelEditor preserves other-language labels on edit (#55)
logaritmisk
2026-06-07 14:37:25 +02:00
-
-
48edb0391e
merge: design-token adoption — indigo brand accent, status tokens, check:colors guard (#49)
logaritmisk
2026-06-07 14:27:49 +02:00
-
-
93234aae29
chore(web): add check:colors guard banning raw color utilities outside ui/ (#49)
logaritmisk
2026-06-07 14:22:15 +02:00
-
cde7be9f2a
refactor(web): migrate feature screens to design tokens + radius token (#49)
logaritmisk
2026-06-07 14:15:54 +02:00
-
04ed0c50e2
feat(web): indigo brand token + status tokens + Badge success/warning variants (#49)
logaritmisk
2026-06-07 14:08:08 +02:00
-
-
67e486df46
docs(plans): design-token adoption across feature screens (#49)
logaritmisk
2026-06-07 14:04:15 +02:00
-
d408464e91
docs(specs): design-token adoption across feature screens (#49)
logaritmisk
2026-06-07 14:00:42 +02:00
-
1bfa44a0ed
merge: toast notifications + consistent mutation feedback (#47)
logaritmisk
2026-06-07 13:47:05 +02:00
-
-
303c986d40
chore(web): raise bundle budget 180→250 KB gz (#47)
logaritmisk
2026-06-07 13:35:35 +02:00
-
fcad638549
feat(web): per-mutation success/error toast metadata (#47)
logaritmisk
2026-06-07 12:55:54 +02:00
-
604d4f6005
feat(web): Base UI toast region + global mutation feedback wiring (#47)
logaritmisk
2026-06-07 12:46:26 +02:00
-
-
63bfff417b
docs(plans): toast notifications + mutation feedback (#47)
logaritmisk
2026-06-07 12:30:30 +02:00
-
8eb527957b
docs(specs): toast notifications + consistent mutation feedback (#47)
logaritmisk
2026-06-07 12:09:09 +02:00
-
e2ae093ed8
merge: object detail readability — resolve labels, group fields (#45)
logaritmisk
2026-06-07 11:54:53 +02:00
-
-
03d5b59b48
feat(web): readable, grouped object detail (labels, placeholders, actions toolbar) (#45)
logaritmisk
2026-06-07 11:38:41 +02:00
-
2e38af565a
feat(web): FlexibleFieldValue — resolve term/authority/localized field values (#45)
logaritmisk
2026-06-07 11:32:17 +02:00
-
-
7258b3fd03
docs(plans): object detail readability (#45)
logaritmisk
2026-06-07 11:24:58 +02:00
-
6ec31b6c51
docs(specs): object detail readability — resolve labels, group fields (#45)
logaritmisk
2026-06-07 10:54:41 +02:00
-
0a88a86bb3
merge: objects data-overview table + responsive shell (#44, #58 shell)
logaritmisk
2026-06-07 09:48:50 +02:00
-
-
6a62cf64bf
chore(web): drop dead objects.selectPrompt i18n key (#44)
logaritmisk
2026-06-07 00:13:32 +02:00
-
c052ddc5af
test(web): widen findBy timeout for the lazy/portaled narrow-drawer detail test (#44)
logaritmisk
2026-06-07 00:03:46 +02:00
-
e7b0f65686
chore(web): raise bundle budget 165→180 KB gz (#44)
logaritmisk
2026-06-06 23:58:03 +02:00
-
b8f70212a1
feat(web): responsive object detail (pane/drawer) at canonical /objects/:id (#44, #58)
logaritmisk
2026-06-06 23:53:10 +02:00
-
184e4ea2a5
feat(web): collapsible icon sidebar (persisted, auto-collapse on narrow) (#44, #58)
logaritmisk
2026-06-06 23:44:40 +02:00
-
04c33cb1aa
feat(web): useMediaQuery hook + Base UI tooltip wrapper (#44)
logaritmisk
2026-06-06 23:40:19 +02:00
-
49f694d1fb
feat(web): full-width sortable/filterable objects table with URL state (#44)
logaritmisk
2026-06-06 23:34:13 +02:00
-
98c00d3732
chore(web): regenerate API types (object list params + timestamps) (#44)
logaritmisk
2026-06-06 23:24:17 +02:00
-
60a1b8dccf
feat: object list sort/filter/quick-search (server-side, injection-safe) (#44)
logaritmisk
2026-06-06 23:21:04 +02:00
-
5efa7b8a16
feat(api): expose object created_at/updated_at in AdminObjectView (#44)
logaritmisk
2026-06-06 23:17:50 +02:00
-
-
e7ff817c63
docs(plans): objects data-overview table + responsive shell (#44)
logaritmisk
2026-06-06 21:58:06 +02:00
-
fb80146430
docs(specs): objects data-overview table + responsive shell (#44, subsumes #58)
logaritmisk
2026-06-06 21:50:13 +02:00
-
b49699175d
feat(server): load .env via dotenvy on startup
logaritmisk
2026-06-06 14:39:24 +02:00
-
e700e1d3cf
chore: add 'just run-release' (build web + run server with embed-web)
logaritmisk
2026-06-06 14:30:41 +02:00
-
de035bd032
merge: searchable term/authority combobox picker (#27)
logaritmisk
2026-06-06 11:00:50 +02:00
-
-
4267aae4e5
chore(web): raise bundle budget 150→165 KB gz (#27)
logaritmisk
2026-06-06 10:59:12 +02:00
-
c84b84b153
feat(web): use searchable combobox for term/authority fields on the object form (#27)
logaritmisk
2026-06-06 10:41:28 +02:00
-
0188e730e8
feat(web): searchable combobox (Base UI) for term/authority options (#27)
logaritmisk
2026-06-06 10:31:58 +02:00
-
-
6e52a331bc
docs(plans): searchable term/authority combobox picker (#27)
logaritmisk
2026-06-06 10:24:39 +02:00
-
8e57789dd7
docs(specs): searchable term/authority combobox picker (#27)
logaritmisk
2026-06-06 10:20:26 +02:00
-
8ed747c6a7
merge: wire Spectrum seed into runtime via 'server seed' (#14)
logaritmisk
2026-06-06 07:18:40 +02:00
-
-
dd02bddb07
docs: 'just seed' recipe + README seed step (#14)
logaritmisk
2026-06-06 00:18:11 +02:00
-
6ebcc10405
feat(server): 'seed' subcommand wiring the Spectrum cataloguing seed (#14)
logaritmisk
2026-06-06 00:15:19 +02:00
-
-
325917a98e
docs(plans): wire Spectrum seed via 'server seed' subcommand (#14)
logaritmisk
2026-06-06 00:12:15 +02:00
-
d74500f901
docs(specs): wire Spectrum seed into runtime via 'server seed' (#14)
logaritmisk
2026-06-05 22:55:27 +02:00
-
7d40a2cd56
chore: use cargo-nextest as the test runner
logaritmisk
2026-06-05 22:36:59 +02:00
-
873efe199f
merge: reference-data edit/delete lifecycle (#30 + #36)
logaritmisk
2026-06-05 22:30:00 +02:00
-
-
27caaa9787
test+refactor: audit-row assertions + uniform PATCH rollback (review follow-ups)
logaritmisk
2026-06-05 21:04:09 +02:00
-
c9120848f5
feat(web): edit/delete authorities in place (#30)
logaritmisk
2026-06-05 20:35:26 +02:00
-
83ca506702
feat(web): rename vocabularies + edit/delete terms in place (#30)
logaritmisk
2026-06-05 20:27:50 +02:00
-
65ca79f2bd
feat(web): edit/delete field definitions on /fields (in-place edit pane) (#36)
logaritmisk
2026-06-05 20:19:13 +02:00
-
194f18c8ed
feat(web): reusable DeleteConfirmDialog with in-use handling + stories
logaritmisk
2026-06-05 20:12:23 +02:00
-
282e6430d4
feat(web): mutation hooks + InUseError + i18n for reference-data edit/delete
logaritmisk
2026-06-05 20:06:23 +02:00
-
78c950d2ee
chore(web): regenerate API types for reference-data edit/delete
logaritmisk
2026-06-05 20:04:03 +02:00
-
3e7c6ad712
feat: edit/delete field definitions — audited, blocked when in use (#36)
logaritmisk
2026-06-05 19:58:38 +02:00