kandown 0.33.6 → 0.34.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.34.1 — 2026-07-24 — "CLI Modular Refactor"
4
+
5
+ - **Fixed**: **Web UI no longer opens to the project picker** — running `kandown` inside a project directory now auto-opens both the TUI and the Web UI directly into that project again. The regression was a missing `window.__KANDOWN_ROOT__` injection into the served HTML (lost during an earlier partial refactor); the web app now correctly detects server mode and skips the manual folder-picker screen.
6
+ - **Added**: **"Create project" confirmation screen in the TUI** — launching `kandown` inside a directory with no `.kandown/` project now shows an inline confirmation prompt (Enter to create, Esc to quit) instead of failing silently. Confirming scaffolds the project, starts the local web daemon, and opens the browser automatically.
7
+ - **Fixed**: **Daemon spawn using the wrong entrypoint when launched from the TUI** — `startProjectDaemon` resolved its own CLI path from `process.argv[1]`, which pointed at the TUI's own entrypoint when called from inside the Ink process (e.g. the "create project" flow, or pressing `d` on the board). It now resolves the CLI entrypoint from the package root instead, fixing daemon start failures triggered from within the TUI.
8
+ - **Changed**: **Large source files split into focused modules** — five files that had grown past 1500–3500 lines during a previous rushed refactor were mechanically split into smaller, single-purpose modules with no behavior change (verified via `tsc`, full builds, and byte-level diffs against the pre-split code):
9
+ - `src/lib/theme.ts` (1525 → 267 lines): 38 built-in theme presets extracted to individual files under `src/lib/themes/`.
10
+ - `src/lib/store.ts` (1774 → 120 lines): the Zustand store split into six slices (`project`, `board`, `drawer`, `ui`, `agentSearch`, `watcher`) under `src/lib/store/`.
11
+ - `src/cli/screens/board.tsx` (1647 → 1203 lines): pure layout helpers and presentational components extracted to `src/cli/screens/board/helpers.ts` and `board/components.tsx`.
12
+ - `src/components/SettingsPage.tsx` (2038 → 347 lines): setting schema/metadata, the language dropdown, search results, setting rows, the `kandown work` output configurator, and the About/version card each moved to their own file under `src/components/settings/`.
13
+ - `src/cli/cli.ts` (905 → ~160 lines): argument-parsing and path-resolution helpers moved to `src/cli/lib/cli-shared.ts`; command handlers grouped into `src/cli/commands/project.ts`, `commands/tasks.ts`, and `commands/daemon.ts`.
14
+
15
+ ## 0.34.0 — 2026-07-24 — "Quick-Wins Collection"
16
+
17
+ - **Added**: **Quick archive button on every card** — task cards in the board and list views now expose a one-click **archive** action next to the existing guarded delete button. Archiving is reversible from the archive view and reuses the existing store `archiveTask` action so files, watchers, and broadcasts stay consistent.
18
+ - **Added**: **Terminal-column bulk actions** — the column whose name matches the configured terminal status now shows a dedicated **Manage tasks** menu with **Archive all** and **Delete all** entries. Both confirm the exact task count and column name before mutating anything; deletions are permanent, archive operations can be undone from the archive view.
19
+ - **Added**: **Robust bulk task actions** — `bulkArchiveTasks(ids)` and `bulkDeleteTasks(ids?)` use `Promise.allSettled` over strict task reads so a single failed file cannot abort the batch. An in-flight guard prevents two destructive runs from racing each other. `nextTaskId` now considers archived ids so new tasks cannot reuse a number that already lives in `tasks/archive/`.
20
+ - **Added**: **Subtask editor in the task drawer and workspace** — both surfaces re-mount the original checklist editor (toggle, edit, enter-to-insert, backspace-to-remove, expand description/report) that was previously removed. `SubtaskEditor` owns the section UI while the drawer/workspace persists edits through the existing `saveDrawer` autosave path.
21
+ - **Fixed**: **Subtask markdown round-trip preserves hand-written prose** — `extractSubtasks` and `injectSubtasks` now preserve unrelated lines that share the `## Subtasks` section, support multi-line `[DESC]`/`[REPORT]` markers, and treat `- [ ]` (empty text) as a valid checklist row so a fresh row can be created without immediately supplying text.
22
+ - **Fixed**: **Subtask editor stays above hooks** — the SubtaskEditor handler is defined before the desktop/media-query guard in both `Drawer` and `TaskWorkspace`, restoring the React rules-of-hooks order and eliminating a mobile-drawer crash.
23
+ - **Fixed**: **Server-mode archive round-trip** — the production daemon's `/api/tasks/:id` routes now read from and write to the `tasks/archive/` directory, accept `POST /api/tasks/:id/archive` and `…/unarchive`, validate task ids, and remove both the active and archived files on `DELETE`. The dev middleware in `vite.config.ts` resolves tasks at the project-root `tasks/` directory (the canonical location since v0.12) and exposes the same archive routes.
24
+ - **Fixed**: **SPA fallback for deep links** — the daemon now serves the single-file app for any non-API path, so refreshing on a deep task URL (e.g. `/2?p=project`) keeps the client routing intact.
25
+ - **Changed**: **File watcher covers the archive directory** — the CLI content-hash watcher also tracks `tasks/archive/*.md`, so archived task updates still trigger board reloads and notifications.
26
+ - **Changed**: **Card action group and a11y** — the card's right-corner actions now live in a flex group that reveals both archive and delete on hover or keyboard focus, with `aria-label` and `aria-haspopup` attributes on the new menu, and a `Card isMountedRef` reset so React StrictMode double-mount doesn't disable the buttons.
27
+ - **Changed**: **i18n strings** — English and French locales gain new keys for archive/delete-all prompts, subtask a11y labels, and progress messages. English remains the source of truth; untranslated keys fall back automatically.
28
+
3
29
  ## 0.33.6 — 2026-07-24 — "Subdirectory Project Discovery"
4
30
 
5
31
  - **Fixed**: **Auto-detect `.kandown/` in sub-directories from parent folder** — when running `kandown` from a parent directory that contains a sub-directory with a `.kandown/` folder, the CLI now recursively searches sub-directories (skipping `node_modules`, hidden dirs, and `tasks/`) to find it automatically. This restores the expected behaviour where `kandown` opens the child project without requiring an explicit `--path` argument.
package/README.md CHANGED
@@ -178,6 +178,7 @@ Interactive runs of `kandown` check npm for updates at most once every 24 hours
178
178
  | Command palette | `⌘K` / `Ctrl+K` for quick actions |
179
179
  | Custom columns | Add, rename, delete columns freely |
180
180
  | Guarded deletion | Double-click to delete — no accidents |
181
+ | Terminal bulk actions | Archive or permanently delete every task in the terminal column with confirmation |
181
182
 
182
183
  ### Task Management
183
184
 
@@ -185,6 +186,7 @@ Interactive runs of `kandown` check npm for updates at most once every 24 hours
185
186
  |---|---|
186
187
  | Rich task drawer | WYSIWYG markdown editor for title, metadata, subtasks, body |
187
188
  | Subtasks | Full checklist with progress tracking on cards |
189
+ | Subtask editor | Add, reorder-by-keyboard, check off, remove, and edit per-step descriptions and reports |
188
190
  | Metadata fields | Priority, assignee, tags, due date, owner type |
189
191
  | Owner filtering | Filter human vs AI-agent tasks separately |
190
192
  | External-change detection | Warns when files are modified outside the app |