feat: add an optional conversation task-tree canvas userscript - #2128
Draft
Songjun113 wants to merge 1 commit into
Draft
feat: add an optional conversation task-tree canvas userscript#2128Songjun113 wants to merge 1 commit into
Songjun113 wants to merge 1 commit into
Conversation
Owner
|
@Songjun113 催一下:这条还是 draft 状态,等你标 Ready for review 我们再开始审查。 |
Owner
|
看到这条还是 draft,我先不阻塞。等你标 Ready to review 后我会做完整审查(含对当前 main 的合并测试和 relay_config/model_suffix 相关回归验证)。 给你两点预检建议(基于我处理同类 PR 的经验):
Ready 后我会第一时间跑完整测试 + CI 看板。 |
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.
Problem and behavior
Long Codex conversations make it difficult to recover which approaches were attempted, abandoned or selected. This adds an opt-in userscript under
tools/conversation-canvas/: a conversation-header entry opens a tree canvas across the conversation area, with pan/zoom, foldable branches, node details and links back to source messages.Users can organize the available history through a background Codex task or an OpenAI-compatible API. History is paginated and split into complete text fragments; each batch must pass source-coverage and tree-structure validation before its checkpoint commits. Subsequent runs process new text, while failed batches can resume. The API path supports SSE progress, bounded transient-error retries and an optional DeepSeek V4 non-thinking mode.
Scope
This is an optional tool contribution, following the existing
tools/layout. It includes readable source modules, a dependency-free build, a generated userscript, tests and a synthetic browser fixture. It does not enable itself or change manager/Rust behavior. The release build explicitly excludes local conversation annotations.The current native adapters target Windows Codex Desktop 26.901.6511 / Codex++ 1.2.56 and use private, versioned desktop module exports. I am opening this as a draft to discuss the contribution location and adapter maintenance before proposing built-in integration.
Validation
From
tools/conversation-canvas/:Tests cover long-message coverage, history paging, batch persistence and resume, invalid/invented sources, background task isolation, SSE framing, cancellation/retry boundaries, 10,000-node layout and exclusion of private annotations from builds. The strict-CSP synthetic browser fixture verified canvas interaction and one-click recovery from a 503 response to a complete five-message tree.
Earlier testing on the target Windows desktop verified background organization, persistence and source navigation. The latest streaming/fast-mode changes were verified with synthetic API responses; live provider speed and cross-version compatibility have not been established. Upstream Rust workspace tests and clippy have not been run for this optional JS-only addition.
Review points
tools/conversation-canvas/an appropriate initial home for this opt-in tool?No personal conversation data, API keys, logs, backups or extracted desktop bundles are included. Contributions use the repository's AGPL-3.0-only license.