Commit Graph

  • 47240dafcc feat: edit/delete authorities, blocked when referenced (#30) logaritmisk 2026-06-05 19:46:27 +02:00
  • 83a7202861 feat: rename + delete vocabularies, blocked when in use (#30) logaritmisk 2026-06-05 19:35:33 +02:00
  • 09baf2949f feat: edit/delete terms — audited, blocked when referenced (#30) logaritmisk 2026-06-05 18:43:02 +02:00
  • f6053068be docs(plans): reference-data edit/delete lifecycle (#30 + #36) logaritmisk 2026-06-05 18:30:55 +02:00
  • e58b150ab2 docs(specs): reference-data edit/delete lifecycle (#30 + #36) logaritmisk 2026-06-05 18:15:53 +02:00
  • e7ae41362e chore: add 'just storybook' recipe logaritmisk 2026-06-05 17:00:09 +02:00
  • ffcfb41c7e merge: set up Storybook (preview + MSW + stories for real components) logaritmisk 2026-06-05 16:58:08 +02:00
  • b2d026f217 feat(web): set up Storybook (preview + MSW + stories for real components) logaritmisk 2026-06-05 16:55:40 +02:00
  • 4e1138f8ce merge: follow-ups batch (#38 #28 #41 #26) logaritmisk 2026-06-05 15:54:04 +02:00
  • e6fc3eaf2c build(web): pin pnpm via packageManager + align CI to pnpm 11 (#26) logaritmisk 2026-06-05 15:50:40 +02:00
  • b4d71b0f80 fix(web): VisibilityBadge typed to the union (#38); normalize localized_text to default language on save (#41) logaritmisk 2026-06-05 15:46:48 +02:00
  • 0a29127f7e fix(web): name the field in the edit banner on create->fields-error redirect (#28) logaritmisk 2026-06-05 15:43:35 +02:00
  • 0c9db7bcdb feat(web): highlight the offending field on a set_fields 422 (#28) logaritmisk 2026-06-05 15:39:49 +02:00
  • d6dc1c9b57 feat(api): field-level set_fields 422 body (#28); enum-type SearchHitView.visibility (#38) logaritmisk 2026-06-05 15:32:48 +02:00
  • cd3606c0e9 docs(plans): follow-ups batch (#38 #28 #41 #26) logaritmisk 2026-06-05 15:29:35 +02:00
  • 260eac903e merge: instance locale (env) + single-language content authoring logaritmisk 2026-06-05 15:16:12 +02:00
  • 9d0475e8ec feat(web): single-language content authoring (LabelEditor + localized_text at default lang) logaritmisk 2026-06-05 15:05:20 +02:00
  • 04e9c95c52 refactor(web): split config hook/context (.ts) from provider (.tsx) to clear react-refresh lint logaritmisk 2026-06-05 15:01:33 +02:00
  • de11292203 feat(web): config provider — fetch /api/config, default UI language from instance logaritmisk 2026-06-05 14:58:01 +02:00
  • 825b23adec test(server): assert default_language/default_timezone config defaults logaritmisk 2026-06-05 14:55:37 +02:00
  • 2460a1368d feat: DEFAULT_LANGUAGE/DEFAULT_TIMEZONE config + public GET /api/config logaritmisk 2026-06-05 14:52:09 +02:00
  • 4a76d6043a docs(plans): instance locale + single-language content authoring (4 tasks) logaritmisk 2026-06-05 14:29:40 +02:00
  • 0f43c75b24 docs(specs): instance locale (env) + single-language content authoring logaritmisk 2026-06-05 14:23:32 +02:00
  • 3c6a41a80a merge: tier 4 hardening batch 1 (#1 #2 #21) logaritmisk 2026-06-04 22:10:13 +02:00
  • 146e0164e7 refactor(db): name audit entity_type constants for vocab/term/authority (#21) logaritmisk 2026-06-04 22:05:06 +02:00
  • 984be697ac feat: audit vocabulary/term/authority creation, attributing the acting user (#21) logaritmisk 2026-06-04 21:54:50 +02:00
  • 7181437625 feat(server): configurable DB pool size via --db-max-connections/DB_MAX_CONNECTIONS (#2) logaritmisk 2026-06-04 21:46:41 +02:00
  • 7e235ffd3e feat(server): graceful shutdown on SIGINT/SIGTERM (#1) logaritmisk 2026-06-04 21:42:55 +02:00
  • b0d2c247df docs(plans): tier 4 hardening batch 1 (#1 #2 #21) logaritmisk 2026-06-04 21:41:29 +02:00
  • e9a5a10524 chore: sync Cargo.lock — domain gains utoipa (tier 3 #3) logaritmisk 2026-06-04 20:26:21 +02:00
  • df113bd7ac merge: tier 3 typed-client (#3 #24 #29) logaritmisk 2026-06-04 20:25:54 +02:00
  • 0ee3b970cb refactor(web): drop redundant fields/visibility casts now the client is typed (#24 #29) logaritmisk 2026-06-04 20:20:13 +02:00
  • 5a72f85989 feat(api): enum-typed visibility/data_type/kind + open-map fields in OpenAPI (#24 #29) logaritmisk 2026-06-04 20:14:30 +02:00
  • d3c33a6c5d feat(domain): derive ToSchema on Visibility/AuthorityKind; add DataType enum (#3 Option A) logaritmisk 2026-06-04 20:08:41 +02:00
  • 331a6d7f34 docs(plans): tier 3 typed-client (#3 Option A, #24, #29) logaritmisk 2026-06-04 20:06:27 +02:00
  • 0d971cda15 merge: tier 2 papercuts (#22 #18 #9 #4 #34 #31 #32 #37) logaritmisk 2026-06-04 17:39:35 +02:00
  • 914527edc6 fix(web): place aria-selected on the role=tab element (#32) + assert it logaritmisk 2026-06-04 17:32:18 +02:00
  • ff513e1712 fix(web): search 503 vs error (#34); terms/authorities list error states (#31); authority-tab a11y + dead keys (#32); authority-kind test (#37) logaritmisk 2026-06-04 17:28:01 +02:00
  • 1a91b8a242 chore: cross-ref enum/CHECK constraints (#9); drop dead clone + harden smoke test (#4) logaritmisk 2026-06-04 17:21:33 +02:00
  • 2bce469ed2 fix(api): 404 when adding a term to a missing vocabulary (#22); log public 500s (#18) logaritmisk 2026-06-04 17:17:35 +02:00
  • fbb7a297a6 docs(plans): tier 2 papercuts — #22/#18/#9/#4/#34/#31/#32/#37 logaritmisk 2026-06-04 17:14:39 +02:00
  • 8442afbf02 chore: gitignore local docker-compose.override.yml logaritmisk 2026-06-04 14:56:21 +02:00
  • 869a2c6e50 docs(dev): Running locally + tests README; add Meilisearch to compose; env defaults logaritmisk 2026-06-04 14:52:34 +02:00
  • 126f84962a merge: fields management — create field definitions (endpoint + /fields UI) logaritmisk 2026-06-04 14:36:14 +02:00
  • daad9438ba fix(api): map CHECK-constraint violation (empty key) to 422 logaritmisk 2026-06-04 14:35:56 +02:00
  • fd1c22191b polish(web): fields form resets error, shared labelText, drop dead nav.soon, a11y required marker, Other group last logaritmisk 2026-06-04 14:29:25 +02:00
  • 37c80121ed feat(web): /fields two-pane screen (grouped list + create form) + nav (no stubs left) logaritmisk 2026-06-04 14:22:57 +02:00
  • 6ad1304efd feat(web): useCreateFieldDefinition mutation + MSW handler logaritmisk 2026-06-04 14:16:55 +02:00
  • df8f31d14d fix(api): map nonexistent-vocabulary FK violation to 422; cover term/authority create paths logaritmisk 2026-06-04 14:15:19 +02:00
  • b508273a52 feat(api): POST /api/admin/field-definitions (create field definition) logaritmisk 2026-06-04 14:09:08 +02:00
  • b490db13b1 docs(plans): fields management — POST endpoint + /fields UI, 4 tasks logaritmisk 2026-06-04 13:50:30 +02:00
  • 19408f6282 docs(specs): fields management — POST field-definitions + /fields two-pane UI logaritmisk 2026-06-04 13:35:18 +02:00
  • 2d0b76ab34 merge: frontend M5 — full-text search (endpoint + /search UI) logaritmisk 2026-06-04 12:54:12 +02:00
  • 4dd00362b8 polish(web): search pill aria-pressed, keepPreviousData, plural result count, URL-hydration test logaritmisk 2026-06-04 12:47:38 +02:00
  • 358d793e44 feat(web): /search two-pane screen (debounced query, visibility filter, load more) + nav logaritmisk 2026-06-04 12:40:46 +02:00
  • ee65b27595 feat(web): Highlight (XSS-safe) + SearchResultRow components logaritmisk 2026-06-04 12:34:27 +02:00
  • de830999d4 test(web): embed highlight sentinels in search fixture snippet logaritmisk 2026-06-04 12:32:23 +02:00
  • 18ed9bd947 feat(web): useSearch infinite query + useDebouncedValue + MSW search handler logaritmisk 2026-06-04 12:29:11 +02:00
  • 90a1539090 test(api): cover search visibility-filter narrowing; note pagination cap rationale logaritmisk 2026-06-04 12:26:38 +02:00
  • a87501b902 feat(api): GET /api/admin/search endpoint + regenerated client types logaritmisk 2026-06-04 11:48:32 +02:00
  • 9b1771d584 refactor(search): document+guard visibility filter precondition; drop redundant dev-dep logaritmisk 2026-06-04 11:19:46 +02:00
  • 84c4c2807b feat(search): search_objects returns highlighted hits + estimated total logaritmisk 2026-06-04 10:46:54 +02:00
  • 38e4525404 docs(plans): frontend M5 search — backend endpoint + /search UI, 6 tasks logaritmisk 2026-06-04 10:27:59 +02:00
  • a9208f56fe docs(specs): frontend M5 search — endpoint + /search two-pane UI design logaritmisk 2026-06-04 10:17:29 +02:00
  • 18a19eec16 merge: frontend M4 — vocabulary & authority management (create+list) logaritmisk 2026-06-04 09:42:39 +02:00
  • 352d899fa5 fix(web): authorities unknown-kind redirect, extract labelText util, EN-required test logaritmisk 2026-06-04 09:39:15 +02:00
  • 38673e52ba feat(web): authorities kind-tabbed screen (list/create) + nav logaritmisk 2026-06-04 09:32:57 +02:00
  • 02e4f34a1b fix(web): vocab form-level error states, newVocabulary heading, id guard, EN-required test logaritmisk 2026-06-04 09:29:51 +02:00
  • ac30eadbb2 feat(web): vocabularies two-pane screen (list/create + terms/add) + nav logaritmisk 2026-06-04 09:22:38 +02:00
  • e8d173a18f refactor(web): LabelEditor ignores blank labels; revert gratuitous tsconfig ES2022 bump logaritmisk 2026-06-04 09:19:27 +02:00
  • 8d2323ed95 feat(web): shared sv/en LabelEditor logaritmisk 2026-06-04 09:14:16 +02:00
  • 6afc358334 feat(web): vocabulary/term/authority list+create hooks + MSW handlers logaritmisk 2026-06-04 09:08:15 +02:00
  • 26e10704a9 docs(plan): frontend SPA milestone 4 — task-by-task implementation plan logaritmisk 2026-06-04 09:05:10 +02:00
  • 684b5449ca docs(spec): frontend SPA milestone 4 (vocabulary & authority management) design logaritmisk 2026-06-04 09:00:02 +02:00
  • 7a8e7ff2d7 feat(web): show the publish control on the object detail logaritmisk 2026-06-04 08:41:32 +02:00
  • 34d4ed2fd6 fix(web): disable publish-confirm while pending; aria-current on stepper logaritmisk 2026-06-04 08:39:20 +02:00
  • 39b7fc51e9 feat(web): PublishControl stepper (legal one-step moves, confirm-on-public, gate/illegal errors) logaritmisk 2026-06-04 08:35:02 +02:00
  • 01f757a239 feat(web): useSetVisibility hook + adjacentTransitions helper + MSW handler logaritmisk 2026-06-04 08:30:15 +02:00
  • 516ecf3e95 docs(plan): frontend SPA milestone 3 — task-by-task implementation plan logaritmisk 2026-06-04 08:25:53 +02:00
  • f206ee8995 docs(spec): frontend SPA milestone 3 (publishing workflow) design logaritmisk 2026-06-04 07:58:22 +02:00
  • bb05331a3f chore(web): remove unused shadcn Select (term/authority use native select) logaritmisk 2026-06-04 01:11:23 +02:00
  • 1cf36e39cc chore(web): finalize object authoring — i18n parity + verification logaritmisk 2026-06-04 01:06:59 +02:00
  • eedeb179e3 fix(web): handle delete failure in confirm dialog (no unhandled rejection) logaritmisk 2026-06-04 01:04:58 +02:00
  • 5087e34280 feat(web): delete object with confirm dialog logaritmisk 2026-06-04 01:00:57 +02:00
  • 9880f24dd2 feat(web): nested object routes + in-pane edit form + edit flow logaritmisk 2026-06-04 00:54:02 +02:00
  • 22b37c138b test(web): assert partial-create passes fieldsError state to the edit route logaritmisk 2026-06-04 00:50:43 +02:00
  • 30d851182e feat(web): new-object full-width page + create flow + /objects/new logaritmisk 2026-06-04 00:46:49 +02:00
  • 616c232a22 feat(web): ObjectForm (core + dynamic flexible fields, RHF, validation) logaritmisk 2026-06-04 00:40:19 +02:00
  • cf0b34b254 refactor(web): FieldInput form type unknown (drop any); wire localized_text required; a11y/comment nits logaritmisk 2026-06-04 00:36:04 +02:00
  • cb191225cc feat(web): dynamic FieldInput (text/integer/date/boolean/localized_text/term/authority) logaritmisk 2026-06-04 00:31:05 +02:00
  • b23a48c310 feat(web): authoring query/mutation hooks + MSW handlers + shadcn select/checkbox/alert-dialog logaritmisk 2026-06-04 00:22:59 +02:00
  • f3bab3336c docs(plan): frontend SPA milestone 2 — task-by-task implementation plan logaritmisk 2026-06-04 00:16:22 +02:00
  • 9f43793c4a docs(spec): frontend SPA milestone 2 (object authoring) design logaritmisk 2026-06-04 00:09:15 +02:00
  • 0a2398f507 fix(web): localize flexible-field labels to the active locale (sv/en) logaritmisk 2026-06-03 23:37:26 +02:00
  • 397e606793 ci(web): fail bundle check when no JS chunks found (avoid false green) logaritmisk 2026-06-03 23:31:08 +02:00
  • 89132f6745 ci(web): typecheck/lint/test/build + bundle-size budget logaritmisk 2026-06-03 23:28:36 +02:00
  • 7170be016d feat(server): embed SPA via memory-serve behind embed-web feature logaritmisk 2026-06-03 23:22:26 +02:00
  • 1d1be5fbe9 fix(web): hide null flexible-field values instead of rendering 'null' logaritmisk 2026-06-03 23:17:14 +02:00
  • 859f41dcb9 feat(web): object detail + two-pane page + app routing logaritmisk 2026-06-03 23:13:52 +02:00
  • d6fe0b0597 feat(web): paginated object list with visibility badges and states logaritmisk 2026-06-03 23:06:42 +02:00