Repository navigation
tsk list: --no-thread, --group/--sort like the board, refuse repeated flags (T243) - #205
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Owner
Author
|
Review K1–K3 addressed in 11a348c:
|
…roup/--sort on drawer views (review K1-K3)
smarzban
force-pushed
the
tsk/t243-cli-parity-for-t216-t218-tsk
branch
from
October 12, 2026 23:11
11a348c to
d848bc7
Compare
Owner
Author
|
Rebased onto main 4486a17 (#206). One conflict, CHANGELOG Fixed: kept both entries (T240 delete-notice line, then the tsk list repeated-flag line). Green bar, site test+build, release build, and the live Herdr smoke (tabs T243 before/after, now also covering |
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CLI parity for the board's T216/T218 work (T243).
What
-p/--project,--thread,--state-dir,--group,--sortgiven twice (any mix of space and=forms) is a usage error instead of silently keeping the last value.tsk list -p alpha -p betaused to list only beta.--no-thread: unthreaded tasks only (the board filter's without a thread, sameThreadFilter::Withoutpredicate). Works with every scope and with--done/--archived/--deleted. Conflicts with--threadand with a task operand.--group none|project|threadand--sort recent|project|thread|title: the board'sg/s. The per-section core ofui::queue::arrange_view(sort + hottest-first bucketing) is extracted intobucket_rows;arrange_viewand the newqueue::arrange_rows(used bytsk list) both call it, so there is one implementation. Applied inside each status heading.basename,desk,#thread,no thread); rows drop the grouped dimension;--all --group threadrows end with their scope label. Grouping replaces the--allscope sub-headings (no two-level nesting). A non-recent--sortwithout--groupalso drops them: each status lists its rows in sorted order with a scope label per row, like the board's ungrouped section.--json: still a flat array in the listed order; each row gainsgroup(the painted label) only when--groupis set.Decisions (matching the board)
--group/--sort projectneeds--all→ exit 2 otherwise. A project board never offers project grouping (group_choices), and without--allthe listing is one scope. For--deskthe board silently no-ops on ON DECK · desk; the CLI refuses instead, because CLI--deskonly holds desk tasks.--group/--sort threadrefuses with--thread/--no-thread: like the thread view, which offers none/project only.--group/--sortrefuse with--done/--archived/--deletedand with a task operand, even at their defaults (--done --sort recentexits 2): the done drawer and the archived group never group or sort.--all --group project, two repos that share a basename stay two groups on the board (twonameheadings), but CLI human output merges adjacent same-label groups under one heading. JSON keeps both thegrouplabel and the fullprojectpath on every row.Tests
New in
tests/cli_list.rs:list_repeated_scope_or_thread_flag_is_usage,list_no_thread_filters_within_scope,list_no_thread_conflicts_with_thread,list_group_thread_orders_groups_hottest_first_under_each_status,list_group_project_needs_all_and_orders_hottest_first,list_group_and_sort_combine_with_scope_and_thread, plus characterization tests for paths that already worked:list_all_thread_includes_desk_tasks,list_desk_thread_filters_desk_only,list_thread_combines_with_done_and_archived.tests/cli_steps.rs:steps_add_last_explicit.Each regression test failed with its hunk reverted by hand (repeat check,
--no-threadfilter,--threadconflict,arrange_rowscall), then passed with it restored. The existingarrange_viewqueue tests pass unchanged after the extraction.Docs
cli.md(synopsis, examples, filter + arrange tables, refusals, JSONgroup),tsk list --helpand usage line,llms.txt(dropped "tsk listis unchanged"), CHANGELOG Unreleased (Added + Fixed), SKILL.md Board-language rows (thread across repos, a project's thread, group) plus one line saying list order is board order. The skill is already 1.5.0 since v0.11.6 (shipped 1.4.0), so only the hash pin is refreshed.Verification
cargo fmt --check && cargo clippy --all-targets -- -D warnings && cargo test: green.site/:npm ci && npm test && npm run build: green.~/.local/bin/tsk0.11.6 dispatch build) and T243 after (target/release/tskfrom this branch), both on an isolatedTSK_STATE_DIRholding two git repos plus desk tasks acrossapi/release/no thread. Each runs:-p alpha -p beta,--all --no-thread,--all --group thread,--all --group project --sort title,--desk --group project,--all --thread release --group project --json. Before: the repeat lists beta only (exit 0) and the new flags are unknown. After: the repeat refuses (exit 2),--no-threadand both groupings print sub-headings hottest first,--desk --group projectrefuses, and the JSON rows carrygroup.Out of scope, per the brief:
--jsonontsk stepsmutations; bulk status from the CLI.