Skip to content

task-monitor Next on notion/jira shows raw URLs: let the PM give a queued item a title (task-monitor-queue --title) - #315

Merged
martin-conur merged 1 commit into
mainfrom
task/queue-title
Oct 23, 2026
Merged

martin-conur merged 1 commit into
mainfrom
task/queue-title

Conversation

@martin-conur

Copy link
Copy Markdown
Owner

Summary

On notion and jira boards the Next section showed raw page URLs, because task-force cannot read those trackers and so had no title for a queued item. The PM can now pass --title <ref>=<text> to task-monitor-queue, the board shows that title wherever the tracker has none of its own, and an untitled Notion page now reads notion:3fdd9a72… instead of the full URL.

Closes #306

What

  • task-monitor-queue --title: on set and add, repeatable, kept across set, cleared by --title <ref>=, one line, split on the first = like --note. Stored after a second tab (ref<TAB>note<TAB>title); untitled lines keep the old format exactly. show prints it in brackets.
  • Snapshot (bin/task-monitor-snapshot): the queue title replaces the describer's title only when that title is empty or just echoes the ref/label, which covers jira, notion and a gh describe that could not ask. gh and local keep their real titles. The title is applied after the cache lookup and never cached, so a blank cached title cannot hide it (the PM's addendum).
  • Notion describer (lib/trackers/notion.sh): label notion:<first 8 hex of page id>…, falling back to the last path segment; the URL stays url, so o still opens it. Jira browse URLs already render as their key; that is now covered by tests.
  • PM prompts (claude-notion, claude-jira, kiro-notion): pass --title with the short name already known; never fetch; omit when unknown; one call, never read back.
  • Out of scope per the issue comment: no Notion REST lookup, and the note is never used as the title.

Tests

  • bats: --title round trip on set/add/clear, kept by set, surviving rm and --note, refusals, the = split, snapshot reading a written title, task-work keeping other titles, the PM prompts; snapshot overlay on notion/jira, gh/local keeping their own titles, blank cached title (full run and --local cache path), compact Notion label, notion describer on four URL shapes.
  • Rust: a titled queue row renders label + title, not the URL.
  • Mutation-checked: always/never/only-empty overlay, skipping the overlay for cached items, dropping the notion label, set dropping titles, rm misaligning titles, and not rendering the title in Rust. Each turned at least one test red.
  • ./run_tests.sh 1635/1635, tools/check-drift.sh, shellcheck -x and cargo fmt --check / clippy are all clean.

Docs: README task-monitor-queue, docs/task-monitor-schema.md, .claude/gh-workflow.md and the seven steering templates. CHANGELOG under [Unreleased] notes that task-init should be re-run on notion/jira loadouts, since the PM prompts changed.

🤖 Generated with Claude Code

…eued item a title (task-monitor-queue --title): store a PM title in the queue, prefer it over a describer's non-title, label notion pages compactly

- `task-monitor-queue --title <ref>=<text>` on `set` / `add`, repeatable,
  kept across `set`, cleared by an empty text; stored after a second tab
  in the queue file, so untitled lines keep the old format.
- `task-monitor-snapshot` uses the queue title when the describer's title
  is empty or only echoes the ref / label (jira, notion, a gh describe
  that could not ask). Applied after the cache lookup, never cached.
- `lib/trackers/notion.sh` gains `aw_tracker_item_describe`: a page URL is
  labelled `notion:<first 8 hex>…`, the URL stays the item's url.
- notion / jira PM prompts pass `--title` from what is already known.
- Docs, CHANGELOG, bats and Rust tests.

Closes #306

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@martin-conur

Copy link
Copy Markdown
Owner Author

Spec compliance (#306)

All deliverables are present:

  • task-monitor-queue --title <ref>=<text> works on set and add, is repeatable, and is stored as ref<TAB>note<TAB>title. Untitled lines keep the old format exactly. set keeps the title of a ref that stays queued, --title <ref>= clears it, and the answer stays a single line.
  • The snapshot applies the PM title only where the describer's title is empty or just echoes the ref/label. gh and local keep their real titles. The title is applied after the cache lookup and never cached.
  • Notion renders notion:3fdd9a72… through aw_tracker_item_describe, with the URL kept in url. Jira's browse-URL-to-key handling already existed in lib/trackers/jira.sh, so no change was needed.
  • PM prompts are updated for claude-notion, claude-jira and kiro-notion. kiro-jira does not exist, so nothing is missing there. The steering templates, workflow docs, README, schema doc and CHANGELOG are updated.
  • The bats tests and the Rust test (a_titled_queue_row_renders_the_title_not_the_url) are present.

Verification

  • CI ran and passed on the head SHA: 8 of 8 checks succeeded, and a run exists for that SHA.
  • ./run_tests.sh task_monitor_queue and task_monitor_snapshot pass. cargo test passes (72 tests). tools/check-drift.sh is OK.
  • Mutation checks:
    • Dropping title preservation in set failed 1 queue test.
    • Narrowing the snapshot condition to $t == "" failed snapshot tests 35 and 36 (the jira and gh cases).
    • The new assertions are not vacuous.
  • The PR body opens with ## Summary.

Code-review findings

No blockers and no nits. I traced the queue-file parsing (both tab splits, a two-tab line with an empty note, the show bracket format) and the _apply_notes refactor. exit 2 inside $(...) is handled through || exit 2, and the empty-array expansions are set -u safe. The jq condition behaves correctly for notion URLs (empty title), jira keys (title equals label), and gh (a real title wins).

Verdict

clean. PM decides the merge.

@martin-conur
martin-conur merged commit 8c26760 into main Oct 23, 2026
8 checks passed
@martin-conur
martin-conur deleted the task/queue-title branch October 23, 2026 01:08
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.

task-monitor Next on notion/jira shows raw URLs: let the PM give a queued item a title (task-monitor-queue --title)

1 participant