Skip to content

Releases: kanban-rs/kanban

v0.8.1

Choose a tag to compare

@github-actions github-actions released this 04 Aug 21:31

What's Changed

Full Changelog: v0.8.0...v0.8.1

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 02 Aug 15:11

What's Changed

  • KAN-675 docs: advertise nixpkgs 26.05 stable in README and web install by @fulsomenko in #333
  • KAN-728 feat(core): define ClientId newtype by @fulsomenko in #342
  • KAN-732 feat(core): add HealthStatus enum and HealthChecker trait by @fulsomenko in #343
  • KAN-742 chore(workspace): add kanban-api, kanban-server, kanban-http-backend crate stubs by @fulsomenko in #341
  • KAN-752 chore(http-backend): drop tokio-tungstenite; transport is SSE not WebSocket by @fulsomenko in #348
  • KAN-712 feat(service): add kanban-service::api module with ApiError and ChangeEventFrame by @fulsomenko in #347
  • KAN-729 feat(domain): wrap commands in CommandBatch with correlation_id, issued_by, and AppType by @fulsomenko in #346
  • KAN-753 chore(workspace): remove empty kanban-http-backend stub crate by @fulsomenko in #349
  • KAN-755 chore(packaging): move AUR sources into packaging/aur/ (sibling of chocolatey) by @fulsomenko in #351
  • KAN-713 feat(service): board/column v1 API DTO surface + foundation by @fulsomenko in #350
  • KAN-762 refactor: decompose six oversized modules into focused submodules by @fulsomenko in #352
  • KAN-769 feat(service): v1 API DTO surface + unified entity construction factory by @fulsomenko in #353
  • Update README to clarify undo/redo functionality by @fulsomenko in #354
  • Clarify back navigation shortcut in README by @fulsomenko in #355
  • Update checklist item for attachments in README by @fulsomenko in #356
  • Add search feature to the project roadmap by @fulsomenko in #357
  • KAN-822 feat(tui): board delete from the TUI (closes #359) by @fulsomenko in #362
  • KAN-828 feat(domain): shared archival abstraction + KanbanError::unsupported by @fulsomenko in #363
  • KAN-829 feat(domain): first-class board_id on ArchivedCard (B1) by @fulsomenko in #364
  • KAN-830 feat(domain): additive board-scoped archived-card query (B2) by @fulsomenko in #365
  • KAN-831/832 feat(persistence): board_id backfill migrations — JSON V7→V8 (B3) + SQLite 2→3 (B4) by @fulsomenko in #366
  • KAN-833 feat(service): board-scoped archived-card queries + cascade orphan fix (B5) by @fulsomenko in #367
  • KAN-843 feat(service): ArchivedCardResponse v1 DTO with board_id (B6) by @fulsomenko in #369
  • KAN-848 fix(domain): deterministic board ordering (fixes #358) by @fulsomenko in #374
  • KAN-849 fix(tui): set task priority with p from the card list (fixes #360) by @fulsomenko in #375
  • KAN-850 fix(tui): declutter footer by dropping panel N hints (fixes #361) by @fulsomenko in #376
  • KAN-855 feat(domain): generalize archival to Archived<T,C> + migrate ArchivedCard [F1b] by @fulsomenko in #378
  • KAN-834 feat(domain): first-class ArchivedBoard = Archived + Snapshot.archived_boards [C1] by @fulsomenko in #377
  • KAN-835 feat(domain): board archive/restore collection-move commands + store [C2] by @fulsomenko in #380
  • KAN-836/844 feat(service): board archive/restore/list-archived + delete + ArchivedBoardResponse DTO [C3a+C3d] by @fulsomenko in #381
  • KAN-837 feat(service): forward archived-board methods through JsonDataStore [C4] by @fulsomenko in #382
  • KAN-845 feat(persistence-sqlite): durable pre-migration backup before irreversible schema upgrade by @fulsomenko in #370
  • KAN-856 test(service): JSON V7→V8 migration coexists with archived boards by @fulsomenko in #383
  • KAN-838 feat(persistence-sqlite): board_archival marker table + schema 3→4 [C5] by @fulsomenko in #384
  • KAN-857 feat(persistence-json): bump save format V8→V9 for archived-board capability by @fulsomenko in #385
  • KAN-842 refactor(service): hide archived-board descendants from live cross-board reads [C3b] by @fulsomenko in #386
  • KAN-860 fix(persistence-sqlite): carry archived_boards through snapshot + apply (data loss) by @fulsomenko in #387
  • KAN-861 feat(service): view archived-board constituents — board-scoped card reads + relations (C10a) by @fulsomenko in #388
  • KAN-863 fix(persistence-sqlite): board restore data-loss — restore no longer cascades the subtree away by @fulsomenko in #389
  • KAN-870 refactor(domain): archive cards by reference — card stays live, get_card unfiltered (F1) by @fulsomenko in #391
  • KAN-871 test(service): pin JSON seam round-trips the reference archival model (F2) by @fulsomenko in #392
  • KAN-872 refactor(domain): archived-card sprint mutations edit the live card (F3a) by @fulsomenko in #393
  • KAN-879 feat(service): CardResponse.archived_at additive DTO consolidation (D1) by @fulsomenko in #394
  • KAN-880 feat(service): BoardResponse.archived_at additive DTO consolidation (D2) by @fulsomenko in #395
  • KAN-884 refactor(domain): collapse Archived to a pure marker (F3b) by @fulsomenko in #396
  • KAN-874 feat(persistence): JSON V9->V10 archival-reference migration (M1) by @fulsomenko in #397
  • KAN-873 test(service): cross-backend archival contract + edit-archived roundtrip (F4) by @fulsomenko in #398
  • KAN-889 feat(domain/service): three-state archived selector on the card list (F7) by @fulsomenko in #399
  • KAN-881 feat(cli): unify card list with a three-state archived filter (I1) by @fulsomenko in #400
  • KAN-882 feat(mcp): merge card list tools into one list_cards with archived filter (I2) by @fulsomenko in #401
  • KAN-886 feat(cli): board archive/restore/delete + unified list with archived filter (I4) by @fulsomenko in #402
  • KAN-887 feat(mcp): board archive/restore + unified list_boards with archived filter (I5) by @fulsomenko in #403
  • KAN-888 feat(tui): archived-boards view + archive/restore/delete affordances (I6) by @fulsomenko in #404
  • KAN-894 fix(cli,mcp): board delete-archived/restore resolves archived-only (data-loss fix) by @fulsomenko in #405
  • KAN-898/899/908 fix(domain): align clear_sprint_from_cards + guard delete_board across backends (regression) by @fulsomenko in #406
  • KAN-895 feat(domain): export/import carries archived boards + orphan-safe archived cards (regression) by @fulsomenko in #407
  • KAN-891 feat(tui): archived-board full interaction parity + view fixes (regression cluster) by @fulsomenko in #408
  • KAN-900 fix: archival regression tail fixes (edge-guard, dead-code, docs, pagination, restore hint, migration test) by @fulsomenko in #409
  • chore(changeset): unified reference-marker archival for v0.8.0 release by @fulsomenko in #410
  • KAN-911 feat(tui): archived boards are ordinary boards — unify active board by id (LSP) by @fulsomenko in #412
  • KAN-912 chore(choco): drop tools/LICENSE.txt and VERIFICATION.txt for download-only package by @fulsomenko in #413
  • KAN-924 feat(domain): filter-aware DataStore read methods with loud floor by @fulsomenko in #415
  • KAN-917 feat(domain): BoardListFilter carrying ArchivedFilter by @fulsomenko in #416
  • KAN-925 feat(persistence-sqlite): 3-state archived clause on filtered card reads by @fulsomenko in #417
  • KAN-918 feat(service): list_boards(filter) gather mirroring filter_cards by @fulsomenko in #418
  • KAN-926 feat(domain): 3-state archived predicate on in-memory filtered card reads + delegator forwarding by @fulsomenko in #419
  • KAN-919 refactor(service): consolidate BoardResponse to one shape + archived_at by @fulsomenko in #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/ka...
Read more

v0.7.2

Choose a tag to compare

@github-actions github-actions released this 10 Jun 05:10

What's Changed

Full Changelog: v0.7.1...v0.7.2

v0.7.1

Choose a tag to compare

@github-actions github-actions released this 08 Jun 15:22

What's Changed

Full Changelog: v0.7.0...v0.7.1

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 07 Jun 23:17

What's Changed

  • ci: auto-bump Homebrew tap formula on each release by @fulsomenko in #278
  • KAN-469 refactor(web): collapse installation methods into single code block by @fulsomenko in #279
  • KAN-451 feat(cli): add init subcommand to decouple storage bootstrapping from board create by @fulsomenko in #280
  • KAN-466 chore(mcp): pass gitRev to nix build so -V includes commit hash by @fulsomenko in #277
  • KAN-191 refactor(service): inverse-command undo/redo, no more snapshot replay by @fulsomenko in #281
  • KAN-480 chore: remove redundant git MCP server by @fulsomenko in #283
  • KAN-402 docs: add CI, AUR, nixpkgs, and Homebrew tap badges to README by @fulsomenko in #284
  • KAN-457 docs(mcp): align README schemas with name-accepting fields by @fulsomenko in #285
  • KAN-414 docs: welcome bug fixes in Areas for Contribution by @fulsomenko in #286
  • KAN-504 feat: expose card parent/child relations through CLI and MCP by @fulsomenko in #287
  • KAN-522 feat: refuse-on-future-version, writer-stamp metadata, F12 diagnostics by @fulsomenko in #288
  • KAN-530 feat(persistence-json): rename JSON graph bucket parent_child to spawns (v7) by @fulsomenko in #289
  • KAN-520 fix(tui): restore card-detail enter and backspace navigation across parent/child boxes by @fulsomenko in #290
  • KAN-534 fix(tui): resolve active card by id after external file reload by @fulsomenko in #291
  • KAN-482 fix(cli): drop implicit "My Board" board from kanban init by @fulsomenko in #292
  • KAN-538 chore(choco): add packaging/chocolatey/ source files by @fulsomenko in #293
  • KAN-539 ci(release): add build-windows job producing kanban + kanban-mcp archive by @fulsomenko in #294
  • KAN-541 ci(release): add publish-chocolatey job (pack + smoke install + push) by @fulsomenko in #295
  • KAN-545 chore(choco): cosmetic polish — iconUrl, VERIFICATION wording, README clarity by @fulsomenko in #296
  • KAN-550 chore: ignore .claude/ (Claude Code CLI scratch + per-machine settings) by @fulsomenko in #297
  • KAN-551 fix(tui): retain card selection after toggle-completion in kanban view by @fulsomenko in #307
  • KAN-175 test(service): add data integrity integration tests by @fulsomenko in #305
  • KAN-250 fix(persistence-sqlite): validate required string fields in SQLite write path by @fulsomenko in #304
  • KAN-437 fix(tui): refresh task list before selecting moved card by @fulsomenko in #303
  • KAN-174 feat(tui): surface save errors to user via UI banner by @fulsomenko in #306
  • KAN-557 refactor(tui): extract RadioList and SprintPicker for reuse by @fulsomenko in #309
  • KAN-249 refactor(domain): remove unused DomainError not_found helpers by @fulsomenko in #310
  • KAN-556 feat: optional sprint assignment at card creation by @fulsomenko in #311
  • KAN-580 refactor(domain): accept impl Into for unconditional-store params by @fulsomenko in #313
  • KAN-643 fix(domain): accept YYYY-MM-DD in external-editor due_date field by @fulsomenko in #314
  • KAN-644 feat: add due-date sort field across TUI, CLI, and MCP by @fulsomenko in #315
  • KAN-646 refactor(domain): extract filter+sort engine into query::filter_sort by @fulsomenko in #316
  • KAN-656 ci(release): read chocolatey digest from gh release API by @fulsomenko in #317
  • KAN-657 docs(chocolatey): add recovery runbook and idempotent push by @fulsomenko in #318
  • KAN-655 refactor(domain): typed SprintBoardMismatch + negative-path tests for card create --assign by @fulsomenko in #320
  • KAN-650 fix(persistence-json): mirror .v{N}.backup writes in sync migration path by @fulsomenko in #321
  • KAN-660 fix(persistence-json): cover V1/V2 sources in pre-V7 backup wrap by @fulsomenko in #322
  • KAN-659 fix(domain): capitalize entity tags in KanbanError::not_found by @fulsomenko in #323
  • KAN-649 fix(ci): make release.yml idempotent on partial-failure re-runs by @fulsomenko in #324
  • KAN-668 fix(release-tooling): make validate-release Step 5 actually validate by @fulsomenko in #325
  • chore: update kanban todo by @fulsomenko in #326
  • release 0.7.0 by @fulsomenko in #308
  • hotfix: revert KAN-668 Step 5 to unblock 0.7.0 release by @fulsomenko in #327

Full Changelog: v0.6.0...v0.7.0

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 15 May 06:25

What's Changed

  • editor/improve-robustness by @amanda-amy-frost in #255
  • KAN-323 fix(cli): require existing file for all subcommands, init on no-subcommand path by @fulsomenko in #271
  • KAN-328 fix(tui): show toast when toggling sprint filter without active sprint by @fulsomenko in #272
  • KAN-455 fix(tui): scroll board edit and filter popup lists to keep selection visible by @fulsomenko in #273
  • chore: update kanban todo by @fulsomenko in #274
  • KAN-400 feat(workspace): accept entity names everywhere a UUID was required by @fulsomenko in #275
  • Release 0.6.0 by @fulsomenko in #276

Full Changelog: v0.5.1...v0.6.0

v0.5.1

Choose a tag to compare

@github-actions github-actions released this 14 May 03:14

What's Changed

  • KAN-449 test(tui): make apply_config_edit non-default-content test sandbox-safe by @fulsomenko in #269
  • Hotfix: KAN-449 test(tui): make apply_config_edit non-default-content test sa… by @fulsomenko in #270

Full Changelog: v0.5.0...v0.5.1

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 14 May 02:26

What's Changed

  • KAN-397/ci-wire-aur-publish-into-release-workflow by @fulsomenko in #243
  • fix(demo): use card move with column-id in Beat 9 by @fulsomenko in #244
  • KAN-406/sprint-assignment-dialog-group-sprints-by-status-with-completed-sprints-in-separate-section by @fulsomenko in #245
  • chore: track PR #247 follow-ups in kanban roadmap by @fulsomenko in #248
  • windows/fix-keyevent-handling by @amanda-amy-frost in #247
  • KAN-405: make undo in-session only — strip command log from persistence by @fulsomenko in #246
  • KAN-332/require explicit file path no implicit kanban json default by @fulsomenko in #249
  • KAN-418/fix kanban -V output drop Error prefix and stray trailing newline by @fulsomenko in #250
  • chore/rebalance-changeset-bump-levels-for-0.5.0 by @fulsomenko in #252
  • KAN-419 fix(tui): show sprint history on cards with >= 1 sprint assigned by @fulsomenko in #253
  • KAN-420 chore: bump minimum Rust version to 1.74 by @fulsomenko in #254
  • KAN-421 feat(tui): add raw key event trace logging to EventHandler by @fulsomenko in #256
  • KAN-426 fix(tui): make KeyEventKind::Press filter unconditional across all platforms by @fulsomenko in #257
  • KAN-394 fix(service): sync card status with completion column by @fulsomenko in #258
  • KAN-434 refactor(service): collapse singular card methods into shorthands over plural by @fulsomenko in #259
  • KAN-403 fix(tui): selector jumps to newly created card by @fulsomenko in #260
  • KAN-435 fix(tui): sprint-detail card lists scroll and reach action parity by @fulsomenko in #261
  • KAN-431 refactor(domain): extract UpdateSprint validators into private functions by @fulsomenko in #262
  • KAN-427 refactor(service): lift DeleteBoard cascade to service layer (invert the wrap) by @fulsomenko in #263
  • KAN-430 refactor(service): lift MigrateSprintLogs from domain to service by @fulsomenko in #264
  • KAN-428 refactor(service): lift MoveCards batch position calculation to service by @fulsomenko in #265
  • chore: add editor.rs follow-up cards from #255 review by @fulsomenko in #266
  • KAN-445 fix(service): use dunce::canonicalize to avoid Windows UNC prefix by @fulsomenko in #267
  • Release 0.5.0 by @fulsomenko in #251

New Contributors

Full Changelog: v0.4.1...v0.5.0

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 07 May 20:15

What's Changed

  • [hotfix] fix(ci): aur-publish makepkg.conf + manual dispatch by @fulsomenko in #236
  • [hotfix] fix(ci): aur-publish VERSION propagation + soft-fail commit-back by @fulsomenko in #238
  • [hotfix] fix(ci): bump KSXGitHub/github-actions-deploy-aur v4.1.1 → v4.1.3 by @fulsomenko in #239
  • [hotfix] fix(ci): aur-publish action inputs need snake_case by @fulsomenko in #240
  • chore: sync develop with master after v0.4.0 release by @fulsomenko in #237
  • KAN-396/fix-tui-make-settings-config-edit-tests-sandbox-safe-for-nixpkgs by @fulsomenko in #241
  • Release 0.4.1 by @fulsomenko in #242

Full Changelog: v0.4.0...v0.4.1

v0.4.0

Choose a tag to compare

@fulsomenko fulsomenko released this 04 May 05:34
cf0ed2a

Release 0.4.0

SQLite backend, sprint carry-over, settings UI, undo/redo, AUR packaging, and per-layer error types.

Highlights

  • SQLite storage backend compiled in by default (JSON remains the default file format)
  • Sprint carry-over dialog when ending a sprint with incomplete cards
  • Undo/redo history lifted into KanbanContext — all KanbanOperations consumers get it for free
  • Settings page UI for configuring storage
  • migrate CLI reworked — backend as positional arg, filename optional
  • AUR package with CI auto-publish workflow
  • Per-layer error types (DomainError, PersistenceError, KanbanError) for better debuggability

See CHANGELOG.md for the full list of changes (33 changesets accumulated since 0.3.5).

Crates published to crates.io

All 9 workspace crates published at 0.4.0:
kanban-core ·
kanban-domain ·
kanban-persistence ·
kanban-persistence-json ·
kanban-persistence-sqlite ·
kanban-service ·
kanban-mcp ·
kanban-tui ·
kanban-cli

Release-process note

Mid-release the publish workflow aborted at kanban-persistence-sqlite due to a workspace dev-dep cycle (sqlite/json dev-dep on kanban-service which transitively depends back on them). Hotfix #235 strips version pins from internal dev-deps so cargo correctly removes them from the published manifest. The 0.4.0 published artifacts include this fix; the workflow itself will be made resilient as part of follow-up release-tooling work.