This website requires JavaScript.
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