Skip to content

feat(desktop): Plans tab in context panel#2226

Closed
z1223473749 wants to merge 7 commits into
esengine:v1from
z1223473749:feat/desktop-plans-panel
Closed

feat(desktop): Plans tab in context panel#2226
z1223473749 wants to merge 7 commits into
esengine:v1from
z1223473749:feat/desktop-plans-panel

Conversation

@z1223473749

Copy link
Copy Markdown

What

Add a dedicated Plans tab to the desktop context panel with:

  • Master-detail split layout (130px plan list + Markdown body)
  • Status badges (active / pending / refining / completed / cancelled)
  • Truncated plan names with custom tooltip on hover
  • Auto-archive on dismiss_plan, plan_cleared, cancel, revision_required
  • Per-workspace localStorage keying to prevent cross-project pollution
  • Auto-open context panel on new plan_required, auto-release sidebar on complete
  • PlanApprovalCard in thread.tsx now shows compact summary + refinement progress bar with 'view full plan in right panel →' hint instead of full Markdown body

Why

Users need a persistent view of their plans without interrupting the conversation flow. The current plan approval cards bloat the thread with full plan Markdown; moving plan detail to the context panel keeps the conversation readable while making plan state always accessible.

How to verify

  1. Start a session with plan mode, let model submit a plan
  2. Plan appears in context panel Plans tab with status badge
  3. Approve — plan shows progress in panel, thread shows compact card
  4. Refine — plan updates to 'refining' state with pulse animation
  5. Complete all steps — plan auto-archives, panel clears
  6. Switch workspace — plan archives from previous workspace are isolated

What

Why

How to verify

Checklist

  • npm run verify passes locally (lint + typecheck + tests + comment-policy gate)
  • No Co-Authored-By: Claude trailer in commits
  • Comments follow CONTRIBUTING.md (no module-essay headers, no incident history)
  • No edits to CHANGELOG.md — release notes are maintainer-written at release time

@esengine

Copy link
Copy Markdown
Owner

Thanks for splitting #2072 into focused pieces — this (desktop Plans tab), #2227 (TUI plan panel), and #2225 (plan-cancel abort) is exactly the breakdown I asked for. #2225 already merged. This one is CONFLICTING though (recent merges touched desktop App.tsx / context-panel / thread.tsx) — please rebase onto current main and I'll review the Plans-tab diff on its own. The master-detail layout + status badges direction looks good from the description.

@esengine

Copy link
Copy Markdown
Owner

Thanks — the Plans tab is a nice UX direction. Same heads-up as #2227 though: the branch predates a few recently merged changes and is silently reverting them.

In particular, desktop/src/i18n/ja.ts lost the typeof en = { ...en, ... } inheritance refactor that landed in 9569024, and the diff drops keys merged this week:

  • themeStyleEmber / themeStyleEmberDesc / themeStyleAurora / themeStyleAuroraDesc
  • mcpStatusOpened / mcpRetryNone / mcpRetryQueued
  • removeRecent from the workdir "remove recent" feature (feat: 工作目录增加删除按钮 #2025)

Worth diffing the other locales (de.ts, zh-CN.ts, en.ts) against current main too.

Could you rebase onto main and preserve those? Happy to re-review once CI is clean.

@z1223473749 z1223473749 force-pushed the feat/desktop-plans-panel branch from a1bb2c2 to b0751ba Compare May 29, 2026 07:03
Add a dedicated Plans tab to the desktop context panel with:
- Master-detail split layout (130px plan list + Markdown body)
- Status badges (active / pending / refining / completed / cancelled)
- Truncated plan names with custom tooltip on hover
- Auto-archive on dismiss_plan, plan_cleared, cancel, revision_required
- Per-workspace localStorage keying to prevent cross-project pollution
- Auto-open context panel on new plan_required, auto-release sidebar on complete
- PlanApprovalCard in thread.tsx now shows compact summary + refinement progress bar
  with 'view full plan in right panel →' hint instead of full Markdown body

Users need a persistent view of their plans without interrupting the conversation
flow. The current plan approval cards bloat the thread with full plan Markdown;
moving plan detail to the context panel keeps the conversation readable while
making plan state always accessible.

1. Start a session with plan mode, let model submit a plan
2. Plan appears in context panel Plans tab with status badge
3. Approve — plan shows progress in panel, thread shows compact card
4. Refine — plan updates to 'refining' state with pulse animation
5. Complete all steps — plan auto-archives, panel clears
6. Switch workspace — plan archives from previous workspace are isolated
@z1223473749 z1223473749 force-pushed the feat/desktop-plans-panel branch from b0751ba to d590804 Compare May 29, 2026 07:28
@z1223473749

Copy link
Copy Markdown
Author

Thanks — the Plans tab is a nice UX direction. Same heads-up as #2227 though: the branch predates a few recently merged changes and is silently reverting them.

In particular, desktop/src/i18n/ja.ts lost the typeof en = { ...en, ... } inheritance refactor that landed in 9569024, and the diff drops keys merged this week:

  • themeStyleEmber / themeStyleEmberDesc / themeStyleAurora / themeStyleAuroraDesc
  • mcpStatusOpened / mcpRetryNone / mcpRetryQueued
  • removeRecent from the workdir "remove recent" feature (feat: 工作目录增加删除按钮 #2025)

Worth diffing the other locales (de.ts, zh-CN.ts, en.ts) against current main too.

Could you rebase onto main and preserve those? Happy to re-review once CI is clean.

好了,麻烦在看看还有什么问题没

@esengine esengine left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

Thanks for rebasing — this round correctly preserves the keys I flagged before (themeStyleEmber/Aurora, mcpStatusOpened/mcpRetryNone/mcpRetryQueued, removeRecent) and the ja.ts typeof en = { ...en, ... } inheritance form is back, so that part is resolved. The Plans tab itself (master-detail split, status badges, per-workspace archive, slimmer in-thread card) is a nice UX direction and CI is green now. A couple of blocking issues remain before I can merge, and note that our CI does NOT typecheck desktop/ (root tsc only covers src/ + packages/ink/, and ci.yml runs nothing inside desktop/), so these would not show up as a red check — please run tsc inside desktop/ locally:

  1. i18n key still in use was deleted. webSearchEngineBingIntl is removed from en.ts/de.ts/zh-CN.ts, but settings.tsx still renders the bing-intl <option> via t("settings.webSearchEngineBingIntl") and ja.ts still defines it. Please restore that key in en/de/zh-CN — it's unrelated to the Plans tab and is still referenced.

  2. EN/JA mismatch. en.ts drops thread.toolCalls/oneToolCall/sendFeedback/skipFeedback/cancelFeedbackLabel/refineFeedbackLabel, but ja.ts still lists them (lines ~824-842). Since the locales are typed : typeof en, please remove those six stale keys from ja.ts so the four locales stay key-symmetric, then confirm desktop's tsc reports 0 errors.

  3. Unrelated changes bundled in. This PR also rewrites the MCP tools tab (drops the health strip, the all/ready/failed filter, retry-all/open-settings, and McpServerCard) and the thread's AssistantMsg (removes consecutive tool-call grouping and the WithToolPaths tool-path linkification). TabRuntime still passes onOpenMcpSettings/onEditMcpSpec/onRetryMcpSpec, which ContextPanel now ignores. None of this is in the PR description. Please either revert these to match main or split them into a separate, clearly-described PR (and remove the now-dead MCP props).

  4. Tests. Could you add a few reducer unit tests for the new branches — approve/cancel/refine in resolve_plan, the in-place refine update on $plan_required, archiving on dismiss_plan/$plan_cleared/$revision_required, and the plans_loaded_for_workspace workspace guard? App.test.ts currently only adds planArchived: [] to the fixture.

Once 1-3 are fixed (and ideally 4), and since CI can't see the desktop build, a quick screenshot of the Plans tab in active/refining/done states would let me confirm the rendering. Happy to re-review right after.

@esengine esengine left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

Plans tab pairs nicely with the new TUI split-pane plan panel (#2227). Master-detail + per-workspace storage keying is the right shape.

@z1223473749

z1223473749 commented May 29, 2026 via email

Copy link
Copy Markdown
Author

@z1223473749 z1223473749 force-pushed the feat/desktop-plans-panel branch from b40e0f6 to d590804 Compare May 29, 2026 11:08
@z1223473749

Copy link
Copy Markdown
Author

Thanks for rebasing — this round correctly preserves the keys I flagged before (themeStyleEmber/Aurora, mcpStatusOpened/mcpRetryNone/mcpRetryQueued, removeRecent) and the ja.ts typeof en = { ...en, ... } inheritance form is back, so that part is resolved. The Plans tab itself (master-detail split, status badges, per-workspace archive, slimmer in-thread card) is a nice UX direction and CI is green now. A couple of blocking issues remain before I can merge, and note that our CI does NOT typecheck desktop/ (root tsc only covers src/ + packages/ink/, and ci.yml runs nothing inside desktop/), so these would not show up as a red check — please run tsc inside desktop/ locally:

  1. i18n key still in use was deleted. webSearchEngineBingIntl is removed from en.ts/de.ts/zh-CN.ts, but settings.tsx still renders the bing-intl <option> via t("settings.webSearchEngineBingIntl") and ja.ts still defines it. Please restore that key in en/de/zh-CN — it's unrelated to the Plans tab and is still referenced.
  2. EN/JA mismatch. en.ts drops thread.toolCalls/oneToolCall/sendFeedback/skipFeedback/cancelFeedbackLabel/refineFeedbackLabel, but ja.ts still lists them (lines ~824-842). Since the locales are typed : typeof en, please remove those six stale keys from ja.ts so the four locales stay key-symmetric, then confirm desktop's tsc reports 0 errors.
  3. Unrelated changes bundled in. This PR also rewrites the MCP tools tab (drops the health strip, the all/ready/failed filter, retry-all/open-settings, and McpServerCard) and the thread's AssistantMsg (removes consecutive tool-call grouping and the WithToolPaths tool-path linkification). TabRuntime still passes onOpenMcpSettings/onEditMcpSpec/onRetryMcpSpec, which ContextPanel now ignores. None of this is in the PR description. Please either revert these to match main or split them into a separate, clearly-described PR (and remove the now-dead MCP props).
  4. Tests. Could you add a few reducer unit tests for the new branches — approve/cancel/refine in resolve_plan, the in-place refine update on $plan_required, archiving on dismiss_plan/$plan_cleared/$revision_required, and the plans_loaded_for_workspace workspace guard? App.test.ts currently only adds planArchived: [] to the fixture.

Once 1-3 are fixed (and ideally 4), and since CI can't see the desktop build, a quick screenshot of the Plans tab in active/refining/done states would let me confirm the rendering. Happy to re-review right after.

已经修改完了

image image image image image

@esengine esengine added the v1 Legacy TypeScript line (0.x) — v1 branch, maintenance only label May 31, 2026
@Bernardxu123

Copy link
Copy Markdown
Collaborator

🙏 真诚感谢您的贡献!

感谢您为 DeepSeek-Reasonix v1 分支提交的 PR。v1 目前已 完全停止维护,项目已全面迁移至 v2 (Go rewrite)。

由于 v1 已不再接受代码变更,此 PR 将被关闭。

我们非常欢迎您将这些修复贡献到 v2 分支! 请查看 v2 Issues 或基于 main-v2 创建新 PR。

再次感谢您的时间和精力!❤️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

v1 Legacy TypeScript line (0.x) — v1 branch, maintenance only

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants