Commit Graph

  • 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