v0.8.0
·
108 commits
to develop
since this release
What's Changed
- KAN-675 docs: advertise nixpkgs 26.05 stable in README and web install by @fulsomenko in https://github.com/fulsomenko/kanban/pull/333
- KAN-728 feat(core): define ClientId newtype by @fulsomenko in https://github.com/fulsomenko/kanban/pull/342
- KAN-732 feat(core): add HealthStatus enum and HealthChecker trait by @fulsomenko in https://github.com/fulsomenko/kanban/pull/343
- KAN-742 chore(workspace): add kanban-api, kanban-server, kanban-http-backend crate stubs by @fulsomenko in https://github.com/fulsomenko/kanban/pull/341
- KAN-752 chore(http-backend): drop tokio-tungstenite; transport is SSE not WebSocket by @fulsomenko in https://github.com/fulsomenko/kanban/pull/348
- KAN-712 feat(service): add kanban-service::api module with ApiError and ChangeEventFrame by @fulsomenko in https://github.com/fulsomenko/kanban/pull/347
- KAN-729 feat(domain): wrap commands in CommandBatch with correlation_id, issued_by, and AppType by @fulsomenko in https://github.com/fulsomenko/kanban/pull/346
- KAN-753 chore(workspace): remove empty kanban-http-backend stub crate by @fulsomenko in https://github.com/fulsomenko/kanban/pull/349
- KAN-755 chore(packaging): move AUR sources into packaging/aur/ (sibling of chocolatey) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/351
- KAN-713 feat(service): board/column v1 API DTO surface + foundation by @fulsomenko in https://github.com/fulsomenko/kanban/pull/350
- KAN-762 refactor: decompose six oversized modules into focused submodules by @fulsomenko in https://github.com/fulsomenko/kanban/pull/352
- KAN-769 feat(service): v1 API DTO surface + unified entity construction factory by @fulsomenko in https://github.com/fulsomenko/kanban/pull/353
- Update README to clarify undo/redo functionality by @fulsomenko in https://github.com/fulsomenko/kanban/pull/354
- Clarify back navigation shortcut in README by @fulsomenko in https://github.com/fulsomenko/kanban/pull/355
- Update checklist item for attachments in README by @fulsomenko in https://github.com/fulsomenko/kanban/pull/356
- Add search feature to the project roadmap by @fulsomenko in https://github.com/fulsomenko/kanban/pull/357
- KAN-822 feat(tui): board delete from the TUI (closes #359) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/362
- KAN-828 feat(domain): shared archival abstraction + KanbanError::unsupported by @fulsomenko in https://github.com/fulsomenko/kanban/pull/363
- KAN-829 feat(domain): first-class board_id on ArchivedCard (B1) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/364
- KAN-830 feat(domain): additive board-scoped archived-card query (B2) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/365
- KAN-831/832 feat(persistence): board_id backfill migrations — JSON V7→V8 (B3) + SQLite 2→3 (B4) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/366
- KAN-833 feat(service): board-scoped archived-card queries + cascade orphan fix (B5) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/367
- KAN-843 feat(service): ArchivedCardResponse v1 DTO with board_id (B6) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/369
- KAN-848 fix(domain): deterministic board ordering (fixes #358) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/374
- KAN-849 fix(tui): set task priority with
pfrom the card list (fixes #360) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/375 - KAN-850 fix(tui): declutter footer by dropping
panel Nhints (fixes #361) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/376 - KAN-855 feat(domain): generalize archival to Archived<T,C> + migrate ArchivedCard [F1b] by @fulsomenko in https://github.com/fulsomenko/kanban/pull/378
- KAN-834 feat(domain): first-class ArchivedBoard = Archived + Snapshot.archived_boards [C1] by @fulsomenko in https://github.com/fulsomenko/kanban/pull/377
- KAN-835 feat(domain): board archive/restore collection-move commands + store [C2] by @fulsomenko in https://github.com/fulsomenko/kanban/pull/380
- KAN-836/844 feat(service): board archive/restore/list-archived + delete + ArchivedBoardResponse DTO [C3a+C3d] by @fulsomenko in https://github.com/fulsomenko/kanban/pull/381
- KAN-837 feat(service): forward archived-board methods through JsonDataStore [C4] by @fulsomenko in https://github.com/fulsomenko/kanban/pull/382
- KAN-845 feat(persistence-sqlite): durable pre-migration backup before irreversible schema upgrade by @fulsomenko in https://github.com/fulsomenko/kanban/pull/370
- KAN-856 test(service): JSON V7→V8 migration coexists with archived boards by @fulsomenko in https://github.com/fulsomenko/kanban/pull/383
- KAN-838 feat(persistence-sqlite): board_archival marker table + schema 3→4 [C5] by @fulsomenko in https://github.com/fulsomenko/kanban/pull/384
- KAN-857 feat(persistence-json): bump save format V8→V9 for archived-board capability by @fulsomenko in https://github.com/fulsomenko/kanban/pull/385
- KAN-842 refactor(service): hide archived-board descendants from live cross-board reads [C3b] by @fulsomenko in https://github.com/fulsomenko/kanban/pull/386
- KAN-860 fix(persistence-sqlite): carry archived_boards through snapshot + apply (data loss) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/387
- KAN-861 feat(service): view archived-board constituents — board-scoped card reads + relations (C10a) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/388
- KAN-863 fix(persistence-sqlite): board restore data-loss — restore no longer cascades the subtree away by @fulsomenko in https://github.com/fulsomenko/kanban/pull/389
- KAN-870 refactor(domain): archive cards by reference — card stays live, get_card unfiltered (F1) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/391
- KAN-871 test(service): pin JSON seam round-trips the reference archival model (F2) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/392
- KAN-872 refactor(domain): archived-card sprint mutations edit the live card (F3a) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/393
- KAN-879 feat(service): CardResponse.archived_at additive DTO consolidation (D1) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/394
- KAN-880 feat(service): BoardResponse.archived_at additive DTO consolidation (D2) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/395
- KAN-884 refactor(domain): collapse Archived to a pure marker (F3b) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/396
- KAN-874 feat(persistence): JSON V9->V10 archival-reference migration (M1) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/397
- KAN-873 test(service): cross-backend archival contract + edit-archived roundtrip (F4) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/398
- KAN-889 feat(domain/service): three-state archived selector on the card list (F7) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/399
- KAN-881 feat(cli): unify card list with a three-state archived filter (I1) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/400
- KAN-882 feat(mcp): merge card list tools into one list_cards with archived filter (I2) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/401
- KAN-886 feat(cli): board archive/restore/delete + unified list with archived filter (I4) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/402
- KAN-887 feat(mcp): board archive/restore + unified list_boards with archived filter (I5) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/403
- KAN-888 feat(tui): archived-boards view + archive/restore/delete affordances (I6) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/404
- KAN-894 fix(cli,mcp): board delete-archived/restore resolves archived-only (data-loss fix) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/405
- KAN-898/899/908 fix(domain): align clear_sprint_from_cards + guard delete_board across backends (regression) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/406
- KAN-895 feat(domain): export/import carries archived boards + orphan-safe archived cards (regression) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/407
- KAN-891 feat(tui): archived-board full interaction parity + view fixes (regression cluster) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/408
- KAN-900 fix: archival regression tail fixes (edge-guard, dead-code, docs, pagination, restore hint, migration test) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/409
- chore(changeset): unified reference-marker archival for v0.8.0 release by @fulsomenko in https://github.com/fulsomenko/kanban/pull/410
- KAN-911 feat(tui): archived boards are ordinary boards — unify active board by id (LSP) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/412
- KAN-912 chore(choco): drop tools/LICENSE.txt and VERIFICATION.txt for download-only package by @fulsomenko in https://github.com/fulsomenko/kanban/pull/413
- KAN-924 feat(domain): filter-aware DataStore read methods with loud floor by @fulsomenko in https://github.com/fulsomenko/kanban/pull/415
- KAN-917 feat(domain): BoardListFilter carrying ArchivedFilter by @fulsomenko in https://github.com/fulsomenko/kanban/pull/416
- KAN-925 feat(persistence-sqlite): 3-state archived clause on filtered card reads by @fulsomenko in https://github.com/fulsomenko/kanban/pull/417
- KAN-918 feat(service): list_boards(filter) gather mirroring filter_cards by @fulsomenko in https://github.com/fulsomenko/kanban/pull/418
- KAN-926 feat(domain): 3-state archived predicate on in-memory filtered card reads + delegator forwarding by @fulsomenko in https://github.com/fulsomenko/kanban/pull/419
- KAN-919 refactor(service): consolidate BoardResponse to one shape + archived_at by @fulsomenko in https://github.com/fulsomenko/kanban/pull/420
- KAN-931 refactor(tui): unify card collection + archived-id set, drop get_card_by_id re-join by @fulsomenko in https://github.com/fulsomenko/kanban/pull/421
- KAN-916 fix(service): coherent move_card for archived cards via ArchivedFilter by @fulsomenko in https://github.com/fulsomenko/kanban/pull/422
- KAN-929 refactor(mcp): board list tool uses BoardListFilter by @fulsomenko in https://github.com/fulsomenko/kanban/pull/423
- KAN-927 refactor(cli): board list uses BoardListFilter, drop build_board_list by @fulsomenko in https://github.com/fulsomenko/kanban/pull/424
- KAN-930 refactor(mcp): resolve archived board via ArchivedOnly filter, drop mcp_resolve_archived_board by @fulsomenko in https://github.com/fulsomenko/kanban/pull/425
- KAN-928 refactor(cli): resolve archived board via ArchivedOnly filter, drop resolve_archived_board_id by @fulsomenko in https://github.com/fulsomenko/kanban/pull/427
- KAN-932 refactor(tui): unify board collection + archived-id set, drop archived_boards_flat by @fulsomenko in https://github.com/fulsomenko/kanban/pull/428
- KAN-933 refactor(tui): single cached displayed_cards/displayed_boards accessor (borrow, base-mode-aware) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/429
- KAN-935 feat(tui): archived board view via shared panel + extension (LSP) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/430
- KAN-934 feat(tui): archived card view via shared panel + extension (LSP), closes #414 findings by @fulsomenko in https://github.com/fulsomenko/kanban/pull/431
- chore: remove superseded archival dead code (deprecated tool, unused DTO ctors, stale comments) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/433
- KAN-937 feat(tui): configurable archived-boards sort (position/recency) reusing SortField/SortOrder by @fulsomenko in https://github.com/fulsomenko/kanban/pull/432
- KAN-939 chore(choco): point projectUrl at kanban.rs by @fulsomenko in https://github.com/fulsomenko/kanban/pull/434
- KAN-683 docs: add Chocolatey install instructions to README and web landing page by @fulsomenko in https://github.com/fulsomenko/kanban/pull/335
- KAN-942 refactor(domain): generalize sort reverse+tiebreak core (cards & boards) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/435
- KAN-944 feat(core): persist board-list sort default in AppConfig by @fulsomenko in https://github.com/fulsomenko/kanban/pull/436
- KAN-943 feat(domain): board sort dimensions + BoardListFilter.sort + filter_and_sort_boards by @fulsomenko in https://github.com/fulsomenko/kanban/pull/437
- KAN-945 feat(service): apply board sort in list_boards_filtered (live+archived, config default) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/438
- KAN-946 feat(cli): board list --sort/--order + board set-sort by @fulsomenko in https://github.com/fulsomenko/kanban/pull/439
- KAN-947 feat(mcp): list_boards sort/order params + set_board_sort tool by @fulsomenko in https://github.com/fulsomenko/kanban/pull/440
- KAN-948 feat(tui): board sort field-picker + order toggle (live+archived), persisted by @fulsomenko in https://github.com/fulsomenko/kanban/pull/441
- KAN-950 refactor(domain): canonical FromStr/Display for BoardSortField & SortOrder + default consts by @fulsomenko in https://github.com/fulsomenko/kanban/pull/442
- KAN-951 fix(service): include board_sort in is_all_defaults (prevents config deletion) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/443
- KAN-952 refactor(service): set_board_sort helper + canonical parse + lazy archived_at + per-context default by @fulsomenko in https://github.com/fulsomenko/kanban/pull/444
- KAN-954 refactor(mcp): canonical board-sort parse + set_board_sort via service helper by @fulsomenko in https://github.com/fulsomenko/kanban/pull/446
- KAN-955 fix(tui): live-board sort keys + recency archived default + canonical strings + rename/guard/doc by @fulsomenko in https://github.com/fulsomenko/kanban/pull/447
- KAN-953 refactor(cli): canonical board-sort strings + set-sort via service helper + no-arg error by @fulsomenko in https://github.com/fulsomenko/kanban/pull/445
- KAN-938 fix(service): single-board export carries the board's archived cards by @fulsomenko in https://github.com/fulsomenko/kanban/pull/448
- refactor(cli): converge board set-sort --field to --sort by @fulsomenko in https://github.com/fulsomenko/kanban/pull/449
- docs: release-hardening — changelog coverage + README/version-doc corrections for v0.8.0 by @fulsomenko in https://github.com/fulsomenko/kanban/pull/450
- fix(tui): guard archived-board ops when drilled in + curate archived-view keybindings (release hardening) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/451
- fix(tui): archived-board drill-in behaves like a live board (KAN-958) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/452
- fix(core): unarchive_node revives edges only to live neighbors (KAN-961) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/453
- fix(service): get stamps archived_at so archived entities aren't returned as live (KAN-962) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/454
- fix: correct > into $ by @fulsomenko in https://github.com/fulsomenko/kanban/pull/457
- KAN-970 fix(tui): drilled-in archived board D/q/e parity by @fulsomenko in https://github.com/fulsomenko/kanban/pull/458
- KAN-963 fix(domain): durable Card.board_id, no more nil-board archive leak by @fulsomenko in https://github.com/fulsomenko/kanban/pull/459
- KAN-964 fix(domain): deterministic board/column sort tiebreak by @fulsomenko in https://github.com/fulsomenko/kanban/pull/460
- KAN-965 fix(service,tui): archived-boards view independent recency default by @fulsomenko in https://github.com/fulsomenko/kanban/pull/461
- KAN-966 fix(persistence-json): V1->V2 and V8->V9 migrations write via atomic rename by @fulsomenko in https://github.com/fulsomenko/kanban/pull/462
- KAN-973 fix(tui): SprintDetail dead s/y/Y + hidden destructive d by @fulsomenko in https://github.com/fulsomenko/kanban/pull/463
- KAN-967 fix(mcp): set_board_sort echoes resolved value, not null by @fulsomenko in https://github.com/fulsomenko/kanban/pull/464
- KAN-971 fix(tui): dedicated keybinding providers for confirm/choice dialogs by @fulsomenko in https://github.com/fulsomenko/kanban/pull/465
- KAN-976 fix(mcp): unify all list-tool response envelopes onto PaginatedList by @fulsomenko in https://github.com/fulsomenko/kanban/pull/466
- KAN-974 fix(tui): help-menu no-op actions (EditCard/CarryOver/ExportBoards) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/467
- KAN-972 fix(tui): drop V/t/T/1 from archived cards view by @fulsomenko in https://github.com/fulsomenko/kanban/pull/468
- KAN-981 fix(tui): exclude archived cards from live count displays by @fulsomenko in https://github.com/fulsomenko/kanban/pull/469
- KAN-986 refactor(tui): rename Model::cards() to all_cards(), fix board-delete count by @fulsomenko in https://github.com/fulsomenko/kanban/pull/470
- KAN-982 feat(tui): manage-children/parents defaults to live-only candidates by @fulsomenko in https://github.com/fulsomenko/kanban/pull/471
- KAN-980 fix(tui): wire 'e' (edit card) through the help-menu dispatch path by @fulsomenko in https://github.com/fulsomenko/kanban/pull/472
- KAN-987 fix(service): bulk multi-select column move never recomputes position by @fulsomenko in https://github.com/fulsomenko/kanban/pull/473
- KAN-968 fix(service): split CreateBoardRequest into pure-create vs create-or-replace types by @fulsomenko in https://github.com/fulsomenko/kanban/pull/474
- KAN-977 test(persistence-sqlite): regression guards for fragile migration invariants by @fulsomenko in https://github.com/fulsomenko/kanban/pull/475
- KAN-978 refactor(tui): replace ad-hoc column position sorts with sorted_board_columns by @fulsomenko in https://github.com/fulsomenko/kanban/pull/476
- KAN-989 fix(service): update_cards' plain column-move branch bypasses WIP limit and board_id sync by @fulsomenko in https://github.com/fulsomenko/kanban/pull/477
- KAN-689 feat(server): scaffold kanban-server crate with axum, AppState, and health endpoint by @fulsomenko in https://github.com/fulsomenko/kanban/pull/478
- KAN-743 feat(server): implement KanbanError-to-HTTP response conversion for all routes by @fulsomenko in https://github.com/fulsomenko/kanban/pull/479
- KAN-716 feat(server): add board read routes (GET /v1/boards, GET /v1/boards/:id) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/480
- KAN-993 build(nix): package kanban-server and expose it in the flake by @fulsomenko in https://github.com/fulsomenko/kanban/pull/481
- KAN-994 refactor(service): board PUT seam uses ReplaceBoardRequest, retire CreateOrReplaceBoardRequest by @fulsomenko in https://github.com/fulsomenko/kanban/pull/482
- KAN-717 feat(server): add board write routes (POST, PATCH, DELETE /v1/boards) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/483
- KAN-703 test(server): integration test harness spinning up kanban-server in-process by @fulsomenko in https://github.com/fulsomenko/kanban/pull/484
- KAN-718 feat(server): add column read routes (GET /v1/boards/:id/columns) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/485
- docs(server): add crate README by @fulsomenko in https://github.com/fulsomenko/kanban/pull/486
- KAN-719 feat(server): column write routes (POST/PUT/PATCH/DELETE/reorder) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/487
- KAN-1000 fix(server): kanban-server -V/--version/--help crash instead of printing by @fulsomenko in https://github.com/fulsomenko/kanban/pull/488
- KAN-1002 feat(server): reload JSON-backed KanbanContext on external file changes by @fulsomenko in https://github.com/fulsomenko/kanban/pull/489
- KAN-1004 fix(server): persist writes to disk on every JSON-backed write route by @fulsomenko in https://github.com/fulsomenko/kanban/pull/490
- KAN-997 fix(domain): reject negative column position in UpdateColumn::execute by @fulsomenko in https://github.com/fulsomenko/kanban/pull/491
- KAN-1006 fix(persistence): detect own file writes by content, not event timing by @fulsomenko in https://github.com/fulsomenko/kanban/pull/493
- KAN-1005 fix(server): align file-resolution strategy with kanban-cli/kanban-mcp + clean error message by @fulsomenko in https://github.com/fulsomenko/kanban/pull/494
- KAN-720 feat(server): add card read routes (GET /v1/boards/:id/cards) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/495
- KAN-721 feat(server): add card write routes (POST/PUT/PATCH/DELETE) by @fulsomenko in https://github.com/fulsomenko/kanban/pull/496
- KAN-695 feat(server): add POST /v1/commands batch execution endpoint by @fulsomenko in https://github.com/fulsomenko/kanban/pull/497
- KAN-696 feat(server): add GET /v1/events SSE change-event stream endpoint by @fulsomenko in https://github.com/fulsomenko/kanban/pull/498
- KAN-697 feat(service): scaffold http_backend module in kanban-service with stub HttpBackend by @fulsomenko in https://github.com/fulsomenko/kanban/pull/499
- Revert KAN-695 and KAN-697: fix HttpBackend/batch-endpoint design issues before re-implementing by @fulsomenko in https://github.com/fulsomenko/kanban/pull/500
- KAN-1010 feat(service): RemoteWrites hook — KanbanBackend capability + KanbanContext execute() guard by @fulsomenko in https://github.com/fulsomenko/kanban/pull/501
- KAN-1011 feat(server): flat /v1/columns/{id} and /v1/cards/{id} routes by @fulsomenko in https://github.com/fulsomenko/kanban/pull/502
- KAN-703 test(server): promote TestServer to a test-helpers-gated library module by @fulsomenko in https://github.com/fulsomenko/kanban/pull/503
- hotfix(server): fix flat_routes.rs build break after parallel KAN-1011/KAN-703 merge by @fulsomenko in https://github.com/fulsomenko/kanban/pull/504
- KAN-1018 feat(server): accept positional data-file argument, matching kanban-cli/kanban-mcp by @fulsomenko in https://github.com/fulsomenko/kanban/pull/505
- KAN-697 feat(backend-http): scaffold kanban-backend-http crate with stub HttpBackend by @fulsomenko in https://github.com/fulsomenko/kanban/pull/506
- KAN-1020 refactor(workspace): phase A — extract kanban-backend + kanban-api out of kanban-service by @fulsomenko in https://github.com/fulsomenko/kanban/pull/507
- docs: correct PR title and commit message formats in CONTRIBUTING by @fulsomenko in https://github.com/fulsomenko/kanban/pull/509
- KAN-1028 test(domain): relocate command tests to integration tests by @fulsomenko in https://github.com/fulsomenko/kanban/pull/508
- KAN-1023 refactor(domain): extract InMemoryStore into kanban-backend-memory by @fulsomenko in https://github.com/fulsomenko/kanban/pull/510
- KAN-1024 feat(backend): add KanbanBackendFactory trait and registry by @fulsomenko in https://github.com/fulsomenko/kanban/pull/511
- KAN-1026 refactor(persistence-sqlite): move the SQLite backend adapter out of kanban-service by @fulsomenko in https://github.com/fulsomenko/kanban/pull/512
- KAN-1025 refactor(persistence-json): move the JSON backend adapter out of kanban-service by @fulsomenko in https://github.com/fulsomenko/kanban/pull/513
- KAN-1032 feat(backend): add locator-dispatch to KanbanBackendFactory/KanbanBackendRegistry by @fulsomenko in https://github.com/fulsomenko/kanban/pull/514
- KAN-1033 refactor(service,cli,tui,mcp,server): dispatch make_backend through KanbanBackendRegistry by @fulsomenko in https://github.com/fulsomenko/kanban/pull/515
- KAN-1034 chore(service): drop the json feature and kanban-persistence-json production dependency by @fulsomenko in https://github.com/fulsomenko/kanban/pull/516
- KAN-1029 refactor(backend): replace persistence_metadata() with a LocalPersistence capability accessor by @fulsomenko in https://github.com/fulsomenko/kanban/pull/518
- docs: workspace and per-crate architecture READMEs with dependency diagrams by @fulsomenko in https://github.com/fulsomenko/kanban/pull/517
- docs: make CLAUDE.md dependency graph and version accurate to develop by @fulsomenko in https://github.com/fulsomenko/kanban/pull/519
- chore(flake): bump rust-overlay to unblock rustc 1.95+ MSRV crates by @fulsomenko in https://github.com/fulsomenko/kanban/pull/520
- chore: remove .cursorignore by @fulsomenko in https://github.com/fulsomenko/kanban/pull/522
- fix: v0.8.0 release-readiness fix-up by @fulsomenko in https://github.com/fulsomenko/kanban/pull/523
- fix(server): cross-scope ownership guards on card/column/sprint write handlers by @fulsomenko in https://github.com/fulsomenko/kanban/pull/524
- chore: address remaining non-blocking release-review findings by @fulsomenko in https://github.com/fulsomenko/kanban/pull/525
- chore: release v0.8.0 by @fulsomenko in https://github.com/fulsomenko/kanban/pull/379
Full Changelog: https://github.com/fulsomenko/kanban/compare/v0.7.2...v0.8.0