Skip to content

Add an optional due date to tasks (#270) - #271

Open
bnivanov-true wants to merge 1 commit into
smarzban:mainfrom
bnivanov-true:feat/due-date
Open

bnivanov-true wants to merge 1 commit into
smarzban:mainfrom
bnivanov-true:feat/due-date

Conversation

@bnivanov-true

Copy link
Copy Markdown

Summary

Adds an optional due day to a task, as proposed in #270. Calendar dates only (YYYY-MM-DD, no time of day).

  • tsk add --due, tsk edit --due / --clear-due, and due on a plan item. A bad day is refused with invalid-due (exit 1, store untouched).
  • tsk list --sort due: earliest first, undated last. SortBy::Due is shared, so the board's sort picker and config.toml sort = "due" accept it too.
  • The task page and text rows show the day; --json carries due only when set. A due edit appears in the paper trail as "due edited".
  • No new statuses; due does not affect after or dispatch.
  • Docs, CHANGELOG, tsk-cli and tsk-coordinator skills (1.7.0, hash pins refreshed).

Decision for the maintainer: store format 16

This bumps the store format to 16: MIGRATIONS gains v6 to v7 plus identity steps for the Dispatch dev formats v7 to v15, and DEV_FORMAT_VERSIONS is deleted. I first tried staying on v6 (the optional-field precedent in 50280d4), but that commit landed before v0.13.0 shipped. After release, 0.13.0 can silently drop a trashed dated task it cannot parse, and no tsk.json.v6 copy exists to roll back to. With the bump, 0.13.0 refuses a format 16 store (as it does v5 stores today) and the rollback is the tsk.json.v6 copy.

Questions:

  • Is format 16 the number you want, or would you rather renumber or keep the dev range?
  • If you prefer no bump, the diff shrinks by the store.rs and store_persist.rs changes; say so and I'll rework it.

Not in this PR

A due editor on the task page, a quick-add token, due on board rows, and priority, importance or urgency. Say if you want any of them as follow-ups.

Test plan

  • cargo fmt --check
  • cargo clippy --all-targets -- -D warnings
  • cargo test
  • cargo build --release
  • cd site && npm ci && npm test && npm run build
  • tests/cli_due.rs: all 14 tests fail on main (8d714a2) and pass on this branch
  • Smoke: migrated a copy of a real v6 board, set, sorted, cleared and refused dates with the release binary; read the task page in a standalone board pane
  • Manual herdr open-board smoke: not run (I don't use herdr)
  • npm run test:parity (Playwright): not run
  • Mutation testing after the format bump: not rerun (the pre-bump diff had 2 misses and 7 timeouts)

A task can carry a due day, YYYY-MM-DD with no time of day.

- tsk add --due, tsk edit --due / --clear-due, and a plan item's `due`.
  A bad day is refused with invalid-due (exit 1, store untouched).
- tsk list --sort due: earliest first, undated last. The same sort reaches
  the board's sort picker and config.toml.
- The task page footer and text rows show the day; --json carries it only
  when set.
- Store format 16. MIGRATIONS gains v6 -> v7 plus identity steps for the
  Dispatch dev formats v7..v15, so DEV_FORMAT_VERSIONS is gone. Older
  tsk refuses format 16; roll back with the tsk.json.v6 copy.
- Docs, CHANGELOG (Breaking + Added), skills tsk-cli and tsk-coordinator
  1.7.0 with refreshed hash pins.
@vercel

vercel Bot commented Oct 29, 2026

Copy link
Copy Markdown

@bnivanov-true is attempting to deploy a commit to the smarzban Team on Vercel.

A member of the Team first needs to authorize it.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant