Skip to content

fix(tui): drop cleared To-do items from the work rail (#6546) - #6783

Merged
Hmbown merged 7 commits into
mainfrom
fix/6546-clear-todo-list
Sep 30, 2026
Merged

Hmbown merged 7 commits into
mainfrom
fix/6546-clear-todo-list

Conversation

@Hmbown

@Hmbown Hmbown commented Sep 29, 2026 •

Copy link
Copy Markdown
Collaborator

Clearing or replacing the Plan/To-do list now removes retired steps from the work rail while retaining graph history. Previously the model and task views could report an empty list while old steps stayed in the footer.

Closes #6546. The existing empty todo_write operation provides the clear action; this change repairs its visible result.

Validation: the real Work runtime write → publish → clear → publish regression passed in the combined release-candidate binary, along with the initial work-surface batch. The combined candidate also passed all 8 package-digest and 61 config-bundle tests. On this branch, npm test passed 740 tests (68 wrapper, 16 SDK, 54 extension host, 602 web), and npm run check:web passed. The anonymous bounded-read test fixture was replaced by the adjacent named-file pattern after Windows returned AccessDenied; common portable-config and typed-plugin fixture repairs are included. These local receipts do not replace the new head's Linux, Windows, and macOS CI.

The original implementation and commit authorship are preserved. Native terminal and save/reopen walkthroughs are not claimed by these tests.

Replacing the To-do list (or the Plan) drops its compat bindings but the
Work Graph has no node removal, so the old PlanStep nodes stay in the
graph. The work surface rendered every PlanStep node, so an item the
model cleared with an empty todo_write stayed on the rail forever while
/tasks, the relay and the model all reported an empty list.

The rail now shows a PlanStep only while the compat projection still
references it (CompatProjectionState::projects). The graph keeps the
retired node as history.

Tests (focused, hermetic):
- cargo test -p codewhale-tui --lib --all-features -- work_surface: 159 passed, 0 failed
- ... -- cleared_todo_list work_graph tools::todo relay: 84 passed, 0 failed
  (includes new cleared_todo_list_leaves_no_plan_step_rows)
- rustfmt --edition 2024 --check on touched files: clean

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ZwqatxgVFxHvovngywnks
Copilot AI balanced review requested due to automatic review settings September 29, 2026 22:53

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Hmbown pushed a commit that referenced this pull request Sep 30, 2026
…indows-safe

- crates/tui/CHANGELOG.md regenerated with scripts/sync-changelog.sh
  (Version drift on #6782 failed: "crates/tui/CHANGELOG.md is out of date
  with the root CHANGELOG.md slice"); `sync-changelog.sh --check` now passes.
- skills::package_digest::tests::bounded_read_accepts_exact_remaining_bytes
  used the anonymous tempfile::tempfile(), which Windows CI denies under the
  hermetic test home ("Access is denied", os error 5, seen on #6783's
  Windows job 109657004556). It now uses a named file in a tempdir, like the
  neighbouring test. rustfmt --check clean; Windows CI is the proof.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ZwqatxgVFxHvovngywnks
Six typed-save fixtures used quiet even though the validated enum accepts normal, concise and verbose. Use concise for these writes; preserve the separate raw legacy-load coverage. Six focused config tests passed, zero failed. Shared source gate: npm test674 passed/0 failed; check:web passed. No production configuration behavior changed.

Signed-off-by: Hunter B <hmbown@gmail.com>
Match the adjacent named-file fixture under hermetic HOME. The anonymous tempfile failed with Windows AccessDenied on PR #6783. Same patch in combined qualification passed all 8 package_digest tests; Windows CI remains required. Full combined npm gate: 740 passed, 0 failed; check:web passed.

Signed-off-by: Hunter B <hmbown@gmail.com>
…tracts

Portable imports reject machine-bound authority settings. Keep closed-choice
acceptance coverage on portable verbosity and preserve unknown existing fields.
Run ordinary typed plugin activation under normal supervision rather than the
600 ms fault watchdog, and use the clippy-approved search error assertion.

Validation on combined source 69824d3 plus recorded patch: CLI bundle tests
61 passed, 0 failed; typed plugin activation 1 passed; custom search fallback
1 passed. Combined all-feature CLI/TUI/workflow/workflow-js test build passed.
Unrelated Calm glyph assertion remains open (TUI combined 97 passed, 1 failed).
Full npm test: 740 passed, 0 failed (68 wrapper + 16 SDK + 54 extension + 602 web);
check:web passed. Windows handshake scheduling remains separate, unverified.

Signed-off-by: Hunter B <hmbown@gmail.com>
Windows full-suite runs on PRs6776 and6780 reported normal extension hosts missing the production five-second handshake deadline. Serialize the host fixture family across nextest processes without changing production deadlines, hang-detection tests, or retries. Nextest profile ci resolves all39 tests (35 extension-host module and4 engine callers) to max-threads1; governed focused run39/39 passed in28.901s on macOS. Exact config SHA256456e681709fe5838e404fbf537f6a934d700d0577ec15bf6a18eeae17aecde53. Full npm740/0 and check:web passed. Windows resolution still requires new hosted runs.

Signed-off-by: Hunter B <hmbown@gmail.com>
@gitguardian

gitguardian Bot commented Sep 30, 2026

Copy link
Copy Markdown

⚠️ GitGuardian has uncovered 1 secret following the scan of your pull request.

Please consider investigating the findings and remediating the incidents. Failure to do so may lead to compromising the associated services or software components.

🔎 Detected hardcoded secret in your pull request
GitGuardian id GitGuardian status Secret Commit Filename
37711109 Triggered Generic High Entropy Secret 336fc1d crates/secrets/src/redact.rs View secret
🛠 Guidelines to remediate hardcoded secrets
  1. Understand the implications of revoking this secret by investigating where it is used in your code.
  2. Replace and store your secret safely. Learn here the best practices.
  3. Revoke and rotate this secret.
  4. If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.

To avoid such incidents in the future consider


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.

@Hmbown
Hmbown merged commit b1e411d into main Sep 30, 2026
34 of 35 checks passed
@Hmbown
Hmbown deleted the fix/6546-clear-todo-list branch September 30, 2026 07:48
Hmbown pushed a commit that referenced this pull request Sep 30, 2026
Brings in #6765 (session continue/delete/persistence notices) and #6783
before the durability slice's next build, as the lead requested.

Conflicts:
- crates/tui/src/session_manager.rs (remove_session retention branch):
  kept this slice's T07-01 fail-closed guard for an unreadable legacy
  origin, and main's `remove_import_archive_copy` after the ordinary
  snapshot is removed on the recoverable path; dropped main's stale
  comment line that the separate guard now implements.
- crates/tui/src/tui/ui/event_loop.rs, crates/localization/locales/zh-Hant.json:
  resolved by the recorded (rerere) resolution of this same main merge;
  checked here: no markers, event_loop keeps both sides' functions
  (`transcript_cadence_tier` and main's `coalesce_resize_burst`,
  `surface_session_save_health`, `shutdown_persistence_notice`), zh-Hant
  keeps every key from both sides (2440 keys, none lost).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: CodeWhale Bot <bot@codewhale.net>
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.

To-do list is not managebale (at least not with known menu items)

2 participants