Skip to content

fix(workbench): manage child conversations and read archived sessions - #6625

Merged
M4n5ter merged 2 commits into
rust-previewfrom
fix/child-session-actions
Nov 6, 2026
Merged

M4n5ter merged 2 commits into
rust-previewfrom
fix/child-session-actions

Conversation

@M4n5ter

@M4n5ter M4n5ter commented Nov 4, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Add right-click and More-button actions to the child-conversation tree, including archive, restore and deletion with the existing confirmation dialog. Reuse the shared conversation-action implementation and its revision/conflict handling rather than adding a separate lifecycle path.
  • Render the action menu inside the tree dialog's modal scope. Refresh only the containing branch after a successful operation, retaining already loaded rows while the replacement page is fetched.
  • Allow archived conversations to acknowledge their exact visible message tail without restoring the conversation. Missing, foreign and logically removed sessions remain unavailable, and stale readers cannot clear a newer message.

Verification

  • Real Host native tests: cargo nextest run -p maka-agent-native --lib -E 'test(owner::tests::session_availability::)' — 3 passed. Covers archived exact/stale-tail acknowledgement and foreign/missing/logically removed session rejection.
  • Real Workbench + isolated Host desktop test: cargo nextest run --locked -p maka-cli --no-default-features --features desktop-tests --test integration -E 'test(desktop_child_conversations_manage_nested_and_archived_workers)' — passed in both dark/wide and light/narrow configurations. Uses actual right-click input, checks canonical archive/restore state, verifies that opening deletion confirmation does not delete anything, confirms deletion and tree refresh, and opens a grandchild with its own draft.
  • Fresh NSH/Host declarations generated with the existing maka-workbench --example ui_types entry; strict UI typecheck (skipLibCheck: false), changed Rust formatting, Biome format, ASF headers and diff checks passed.
  • Existing CI embedded-product inputs already include the workbench sources and this desktop suite; no routing or archive changes are needed.

The initial native build encountered a truncated official rusty_v8 download. Local checks used a separately downloaded, gzip-validated copy of the same official archive via a command-local RUSTY_V8_ARCHIVE; no project or shared-cache settings were changed. No full workspace run or remote CI pass is claimed.

Screenshots

Captured from the actual Workbench in the isolated desktop Host fixture; no private conversations are used.

Restoring an archived worker from its right-click menu

Deleting an archived worker requires confirmation, including in a narrow window

AI use

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Maka assisted with diagnosis, implementation, focused behavior tests and PR preparation. Material AI-authored commits carry Generated-by: Maka.

Checklist

  • Tests cover the change and fail without it
  • Format, typecheck and the affected local behavior checks pass

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

@Astro-Han Astro-Han 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.

Automated review notice: This comment was posted by an automated review agent. It is not an independent human review and does not replace one.

I reviewed the changes in all five files at b7f4b7a81b4f1bab7dcc8bc4262a5ebb40fbb4ea, including the shared action and read-marker paths. I found no confirmed P0–P2 in those checked paths, but the new UI regression scenario remains failing and unresolved.

SessionTree supplies its captured target and row anchor to the existing SessionActions component inside the tree's modal scope. Successful actions refresh the containing branch while keeping its previous rows visible during the request. The shared action handler carries the captured revision to Host mutations; revision conflicts refresh the snapshot for another explicit action rather than silently retrying. Deletion still goes through the existing confirmation page. This does not add an independent mutation implementation.

For archived reads, Owner::mark_read removes only the archived-session rejection: closing, ownership and existence checks remain. The store still compares the exact visible tail inside its transaction and updates the read marker, revision and catalog; it does not clear the archived flag. In CI 41801567963, I read the actual passing logs for archived exact/stale-tail acknowledgement (5.092 seconds), foreign/missing/logically removed guards (8.175 seconds) and history visibility (5.443 seconds).

The same run's desktop shard 1/4 fails desktop_child_conversations_manage_nested_and_archived_workers after 70.151 seconds: the test cannot find a single Restore conversation control (observed: Null). The shard has four other passes. This is not a green end-to-end result, and I have not separated a test-driver/timing problem from a real action-menu problem. Please investigate and obtain a passing exact-head run before treating the UI workflow as verified.

I inspected both supplied images: the 1280×800 dark view shows the archived-worker Restore menu, and the 640×720 light view keeps the deletion warning and both choices visible within the dialog. These support those captured layouts, not successful clicks, keyboard navigation or the failing hosted sequence. I did not run a native Host or UI locally. The actual Git merge against rust-preview at a08d327f19a0afd17dbe4c941123c06b4a46d871 succeeds. The AI declaration and Generated-by: Maka trailer are present.


Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.

@github-actions github-actions Bot added the effort/M Under 500 readable lines label Nov 5, 2026
Reuse conversation actions inside the child tree modal, preserve loaded rows during branch refresh, and allow exact-tail read acknowledgement without restoring archived sessions. Cover lifecycle actions and archived read boundaries with real Host and desktop behavior tests.

Generated-by: Maka
Normalize SessionTree rows by stable string keys, serialize child conversation mutations and quiet branch refreshes through TreeActions.run, and wait for the tree to become interactive again in the desktop behavior test.

Generated-by: Antigravity
@M4n5ter
M4n5ter force-pushed the fix/child-session-actions branch from b7f4b7a to 4772f89 Compare November 6, 2026 03:06
@M4n5ter
M4n5ter merged commit 7216229 into rust-preview Nov 6, 2026
1 check passed
@M4n5ter
M4n5ter deleted the fix/child-session-actions branch November 6, 2026 03:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

effort/M Under 500 readable lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants