Repository navigation
Browser tree shows only open work that has edges - #199
Merged
Merged
Conversation
On the real store the tree listed 526 top-level rows against 678 in the flat list: most were tasks with no blocks edge, or closed trees. The tree now heads rows only with open tasks that have a blocker, counts the rest in its header, and keeps closed blockers inside an open task's tree, dimmed. Space on a reference row opens the folds down to its full copy. Tasks on a cycle that no top-level row reaches now print, marked [cycle], instead of vanishing. fold_counts looks tasks up by id. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017CwJAmruPDTxGhHxrrBoiX
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.
The task browser's blocker tree (
t) now shows only open work that has edges. On a copy of the real store (678 tasks) it drops from 526 top-level rows to 29; the header reads443 tasks with no edges hidden · 54 closed trees hidden.What changed
voro_core::blocks_treetakes anis_openpredicate and returns aTree: the rows plus two counts. A top-level row must block nothing, be open, and have at least one blocker. A task that blocks nothing and has no blocker counts under "no edges". A closed task heading a tree counts under "closed trees", with its subtree hidden too. Closed blockers under an open task still show, dimmed like any closed row.All tasks — by blockers — N tasks with no edges hidden · M closed trees hidden, with singular forms for 1.↑ #Nreference row opens every fold above the full copy and selects that copy.Graphfinds tasks on a cycle with Tarjan's algorithm, andTreeRow.cyclemarks them. A cycle that no top-level row reaches now prints as a top-level row instead of vanishing, marked[cycle]in the browser and invoro tree. The store refuses cycles, so this only guards bad data.fold_countsandtree_browser_rowslook tasks up through a newApp::all_index(id → index) instead of a linearfind.voro tree <id>(blocker_tree) is unchanged and prints any task's tree, whatever its state.[cycle]guard and the reference jump. It also corrects the[milestone]sentence: only a milestone's full row carries the marker, not a reference row.The space entry in the help overlay still reads "toggle a tree fold". A longer label pushed another entry off the 80×24 key-map page, and
every_key_map_entry_is_reachable_on_a_small_terminalfailed.Verification
cargo test --workspace,cargo clippy --workspace --all-targets -- -D warningsandcargo fmt --allall pass.(no_edges, closed_trees) == (3, 1)cyclevoro treeon a done task prints#c done c/#d done d~/.local/share/voro/voro.db. Top-level rows went from 526 to 29, with 443 no-edge tasks and 54 closed trees hidden. No open task with an edge is missing from the tree, and there are no cycles.Known gap
An open task whose only dependents are closed, and which has no blocker, sits inside a hidden closed tree and is counted nowhere. No task on the real store is in this position today. It is filed as #679.