Skip to content

refactor(orchestration): replace tab with Kilo-style chat UI#209

Open
awsl233777 wants to merge 22 commits into
mainfrom
fix/orchestration-privacy-redaction-main
Open

refactor(orchestration): replace tab with Kilo-style chat UI#209
awsl233777 wants to merge 22 commits into
mainfrom
fix/orchestration-privacy-redaction-main

Conversation

@awsl233777

@awsl233777 awsl233777 commented Jun 30, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Replace the orchestration tab UI with a Kilo/VS Code-style chat surface: task header, status/timeline strip, message list, and prompt input.
  • Remove the previous orchestration workbench/sidebar/inspector/quick-panel UI from the tab template and orchestration-specific stylesheet.
  • Keep the Kilo-compatible webview host shim and task bridge while preserving privacy redaction for workspace/thread/run/task/node/provider/model/endpoint/error details.
  • Generalize orchestration/Kilo-facing copy so the tab does not expose product/provider labels in the task surface.
  • Regenerate the precompiled Web UI render and update regression assertions to fail if old UI class families or sensitive visible fields return.

Validation

  • npm run test:unit → passed, 744 tests.
  • npm run test:e2e → passed.
  • npm run lint → passed for 231 files.
  • git diff --check → passed.
  • Source grep gate passed for the orchestration panel/template/host/style and orchestration-facing locale strings: no old workbench class families, product/provider labels, raw paths/IDs/provider/model/endpoint/error details in the checked tab surface.
  • Local browser smoke screenshot of the Codexmate Web UI tab at http://127.0.0.1:18323/?tab=orchestration; cropped smoke image SHA256 c993357ed62b2e59fbb74a9488194d73bd650838aeab8c7ba9e8a6f1932b93bd.

Notes

  • The screenshot above is a Codexmate Web UI tab smoke check, not a native VS Code/Kilo extension webview capture.
  • The unit test runner still emits an existing search_sessions.py --limit -1 argparse warning on stderr in some runs, but the command exits 0 and reports all tests passed.

Summary by CodeRabbit

  • New Features

    • Added a new orchestration chat experience with clearer workspace/session controls, progress timeline, and Kilo-compatible host support.
    • Updated readiness messaging to focus on “ready to run” instead of preview-oriented wording.
    • Added privacy-focused labels for hidden details, selected runs, file changes, and run/queue status.
  • Bug Fixes

    • Reduced exposure of sensitive details in orchestration views, run summaries, node details, and error messages.
    • Improved task action handling and notification text for starting, continuing, retrying, and canceling orchestration work.

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 52443902-8424-4086-b5f2-75291bbdc2d6

📥 Commits

Reviewing files that changed from the base of the PR and between c7d935f and 6e465ba.

📒 Files selected for processing (7)
  • tests/unit/config-tabs-ui.test.mjs
  • web-ui/modules/i18n/locales/en.mjs
  • web-ui/modules/i18n/locales/ja.mjs
  • web-ui/modules/i18n/locales/vi.mjs
  • web-ui/modules/i18n/locales/zh-tw.mjs
  • web-ui/modules/i18n/locales/zh.mjs
  • web-ui/res/web-ui-render.precompiled.js
💤 Files with no reviewable changes (6)
  • tests/unit/config-tabs-ui.test.mjs
  • web-ui/modules/i18n/locales/vi.mjs
  • web-ui/modules/i18n/locales/zh.mjs
  • web-ui/modules/i18n/locales/en.mjs
  • web-ui/modules/i18n/locales/zh-tw.mjs
  • web-ui/modules/i18n/locales/ja.mjs

📝 Walkthrough

Walkthrough

This PR reworks the task orchestration UI toward privacy-first, redacted rendering: raw errors, IDs, paths, summaries, outputs, and file lists are replaced with translated placeholder/count text. It adds a Kilo-compatible webview host/shim module, updates orchestration control flow to use i18n toast keys, updates locale files across five languages, rewrites the orchestration panel template/CSS, and expands tests accordingly.

Estimated code review effort: 4 (Complex) | ~75 minutes

Changes

Orchestration Privacy and Kilo Webview

Layer / File(s) Summary
Kilo host snapshot and shim
web-ui/modules/task-kilo-webview-host.mjs, web-ui/app.js
New module defines allowed/blocked webview message types, message normalization, a VSCode API shim (postMessage/getState/setState), and createTaskKiloWebviewHostSnapshot; app.js conditionally installs the shim on mount.
Orchestration helpers and messaging
web-ui/modules/app.computed.main-tabs.mjs, web-ui/modules/app.methods.task-orchestration.mjs
Workspace labels/meta become generic/translated, conversation and node-detail formatting hide raw data behind counts/placeholders, and toast/error handling across plan/run/queue/session/thread flows routes through i18n keys with generic failure text; adds webview message dispatch and shim installation.
Privacy UI rendering and styles
web-ui/partials/index/panel-orchestration.html, web-ui/res/web-ui-render.precompiled.js, web-ui/styles/task-orchestration.css
Rebuilds the orchestration panel as a Kilo chat-view shell with a redacted assistant response path; precompiled render masks workspace/plan/run/node/file/output details behind privacy translation keys; CSS adds sensitive-input masking, workspace action menu, and Kilo host card/app-shell styling.
Orchestration locale strings
web-ui/modules/i18n/locales/en.mjs, ja.mjs, vi.mjs, zh-tw.mjs, zh.mjs
Adds privacy/toast/workspace-choice/kilo/readiness/plan-wave/node-step translation keys and removes /plan-preview-oriented copy across all five locales.
Updated UI and shim tests
tests/unit/config-tabs-ui.test.mjs, tests/unit/web-ui-logic.test.mjs, tests/unit/web-ui-behavior-parity.test.mjs, tests/unit/i18n-locales.test.mjs
Adds negative assertions against interpolation/placeholder leakage and sensitive-input indicators, updates toast/workspace expectations to English/privacy wording, adds Kilo shim/snapshot/message-handling tests, and updates parity/locale key allow-lists.

Sequence Diagram(s)

sequenceDiagram
  participant app_js as web-ui/app.js
  participant kilo_host as task-kilo-webview-host.mjs
  participant vscode_api as window.acquireVsCodeApi
  participant orchestration_methods as app.methods.task-orchestration.mjs

  app_js->>kilo_host: installTaskKiloWebviewShim()
  kilo_host->>vscode_api: createTaskKiloVsCodeApiShim()
  vscode_api-->>kilo_host: postMessage(raw message)
  kilo_host->>kilo_host: normalizeTaskKiloWebviewMessage()
  kilo_host->>orchestration_methods: handleTaskKiloWebviewMessage(allowed message)
  orchestration_methods->>orchestration_methods: dispatch sendMessage/abort/openSettingsPanel
Loading

Possibly related PRs

  • SakuraByteCore/codexmate#101: Both PRs modify the same orchestration plan/queue/run control-flow methods in app.methods.task-orchestration.mjs.
  • SakuraByteCore/codexmate#208: Both PRs change the same task orchestration console files (app.computed.main-tabs.mjs, app.methods.task-orchestration.mjs, orchestration panel/styles), with this PR layering privacy masking and Kilo webview handling on top.

Suggested reviewers: SurviveM, ymkiux

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: refactoring the orchestration tab into a Kilo-style chat UI.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/orchestration-privacy-redaction-main

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ast-grep (0.44.0)
web-ui/res/web-ui-render.precompiled.js

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@awsl233777

Copy link
Copy Markdown
Collaborator Author

Implemented the privacy hotfix on top of current main as a single commit.

What changed:

  • Redacted visible orchestration workspace/thread/run/task identifiers, summaries, errors, provider/model metadata, output text, logs, and file paths.
  • Kept internal selection state intact while replacing visible UI copy with neutral selected/hidden/count labels.
  • Updated all locale files and regenerated web-ui/res/web-ui-render.precompiled.js.
  • Added regression assertions for orchestration template/helper redaction.

Validation actually run:

  • Targeted orchestration sensitive-field scan: PRIVACY_SCAN_OK.
  • node tests/unit/run.mjs tests/unit/i18n-locales.test.mjs tests/unit/config-tabs-ui.test.mjs tests/unit/web-ui-source-bundle.test.mjs tests/unit/web-ui-logic.test.mjsAll 740 tests passed.

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

@awsl233777 Reviewing the updated privacy hotfix now.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
web-ui/modules/app.methods.task-orchestration.mjs (1)

259-269: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Route the new redaction placeholders through i18n.

These helpers now surface hardcoded English strings, so non-English locales will still see (output hidden) and (N log entries hidden) in the orchestration detail view even though this PR adds locale-backed privacy copy elsewhere.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web-ui/modules/app.methods.task-orchestration.mjs` around lines 259 - 269,
The new redaction placeholders in formatTaskNodeLogs and
formatTaskNodeOutputText are hardcoded English strings, so replace them with
locale-backed messages from i18n. Update these helpers to use the existing
translation mechanism for the hidden output/log variants, keeping the same
conditional logic while routing both “no logs” and hidden-output text through
the orchestration detail view’s localized privacy copy.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@web-ui/modules/i18n/locales/ja.mjs`:
- Around line 972-977: The new orchestration privacy label for provider-hidden
is still in English, so update the Japanese locale entry in ja.mjs to use a
proper Japanese translation for the orchestration.privacy.providerHidden key.
Keep the surrounding privacy strings consistent with the other entries in this
section and verify the key remains aligned with the existing localization
object.

---

Outside diff comments:
In `@web-ui/modules/app.methods.task-orchestration.mjs`:
- Around line 259-269: The new redaction placeholders in formatTaskNodeLogs and
formatTaskNodeOutputText are hardcoded English strings, so replace them with
locale-backed messages from i18n. Update these helpers to use the existing
translation mechanism for the hidden output/log variants, keeping the same
conditional logic while routing both “no logs” and hidden-output text through
the orchestration detail view’s localized privacy copy.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 52abbd79-44c2-493b-8c4e-3179642eec9e

📥 Commits

Reviewing files that changed from the base of the PR and between a088933 and f4b2f57.

📒 Files selected for processing (11)
  • tests/unit/config-tabs-ui.test.mjs
  • tests/unit/web-ui-logic.test.mjs
  • web-ui/modules/app.computed.main-tabs.mjs
  • web-ui/modules/app.methods.task-orchestration.mjs
  • web-ui/modules/i18n/locales/en.mjs
  • web-ui/modules/i18n/locales/ja.mjs
  • web-ui/modules/i18n/locales/vi.mjs
  • web-ui/modules/i18n/locales/zh-tw.mjs
  • web-ui/modules/i18n/locales/zh.mjs
  • web-ui/partials/index/panel-orchestration.html
  • web-ui/res/web-ui-render.precompiled.js
📜 Review details
🔇 Additional comments (10)
tests/unit/config-tabs-ui.test.mjs (1)

159-169: LGTM!

tests/unit/web-ui-logic.test.mjs (1)

1896-1896: LGTM!

Also applies to: 2065-2067

web-ui/partials/index/panel-orchestration.html (7)

178-182: LGTM!

Also applies to: 195-195


259-261: LGTM!

Also applies to: 322-325, 348-351


397-407: LGTM!


409-441: LGTM!


482-487: 🔒 Security & Privacy

Confirm intended UX of switching workspacePath/threadId to type="password".

These are not secrets but user-editable values; type="password" masks the user's own input, preventing them from verifying or editing the path/id they typed, and some browsers/extensions still treat password fields specially even with autocomplete="off". If the goal is only to avoid shoulder-surfing/screen-share leakage, a reveal toggle or a CSS text-masking approach would preserve editability while keeping the masking. Please confirm this tradeoff is intended.


548-548: LGTM!


408-408: 🔒 Security & Privacy

Keep redaction on the remaining orchestration errors. web-ui/partials/index/panel-orchestration.html:145 and :376 still render taskOrchestration.lastError and taskOrchestration.selectedRunError verbatim, and both are populated from res.error / caught exception messages. If either API can surface backend/provider detail, these paths need the same masking as run.error.

web-ui/res/web-ui-render.precompiled.js (1)

4258-4258: 🗄️ Data Integrity & Integration

Bundle matches the template for these privacy bindings.

Comment thread web-ui/modules/i18n/locales/ja.mjs
@awsl233777

Copy link
Copy Markdown
Collaborator Author

Updated after the workspace selector/privacy re-check.

Additional fixes:

  • Kept workspace selection usable while preventing the selector labels/meta from exposing real paths or path tail names. The UI now shows neutral workspace choices, but still uses the internal path for selection.
  • Routed output/log redaction placeholders through i18n instead of hardcoded English strings.
  • Added regression assertions that workspace selector labels/meta do not expose /repo, codexmate, or other path-derived names.

Validation actually run after this update:

  • Targeted orchestration sensitive-field scan: PRIVACY_SCAN_OK.
  • node tests/unit/run.mjs tests/unit/i18n-locales.test.mjs tests/unit/config-tabs-ui.test.mjs tests/unit/web-ui-source-bundle.test.mjs tests/unit/web-ui-logic.test.mjsAll 740 tests passed.

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

@awsl233777 Reviewing the updated privacy fixes now, including the workspace selector redaction and i18n-backed placeholder changes.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@awsl233777

Copy link
Copy Markdown
Collaborator Author

Handled the remaining CodeRabbit locale comment.

Additional fix:

  • Localized the Japanese privacy labels that still used English (workspace.selected, thread.selected, providerHidden).

Validation actually run after this update:

  • Targeted orchestration sensitive-field scan: PRIVACY_SCAN_OK.
  • node tests/unit/run.mjs tests/unit/i18n-locales.test.mjs tests/unit/config-tabs-ui.test.mjs tests/unit/web-ui-source-bundle.test.mjs tests/unit/web-ui-logic.test.mjsAll 740 tests passed.

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

@awsl233777 Thanks for the update — I see the Japanese privacy labels were localized and the validation still passed (PRIVACY_SCAN_OK, 740/740 tests). I’ll review the latest changes now.


If you found this review helpful, would you consider giving us a shout-out on X?

Thank you for using CodeRabbit!

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@awsl233777

Copy link
Copy Markdown
Collaborator Author

Updated this PR with a076274:

  • Added a Kilo-style split workspace action in the orchestration sidebar.
  • Primary action starts a new session in the selected workspace.
  • Dropdown selects default/existing workspaces while keeping raw paths hidden (Workspace N / Path hidden).
  • Regenerated web-ui/res/web-ui-render.precompiled.js.

Validation actually run:

  • PRIVACY_SCAN_OK
  • node tests/unit/run.mjs tests/unit/i18n-locales.test.mjs tests/unit/config-tabs-ui.test.mjs tests/unit/web-ui-source-bundle.test.mjs tests/unit/web-ui-logic.test.mjsAll 740 tests passed.

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

@awsl233777 Thanks — I’ll review the latest update, including the split workspace action and the privacy-preserving workspace selector changes.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@awsl233777

Copy link
Copy Markdown
Collaborator Author

Pushed 9425163 with follow-up privacy hardening:

  • Masked taskOrchestration.lastError and taskOrchestration.selectedRunError in the visible orchestration UI.
  • Replaced the advanced workspacePath / threadId type="password" inputs with normal type="text" inputs plus CSS text masking, so browsers do not treat these editable values as passwords.
  • Regenerated web-ui/res/web-ui-render.precompiled.js.
  • Added regression assertions for the masked errors, non-password inputs, CSS masking, and precompiled render output.

Validation actually run after this update:

  • PRIVACY_SCAN_OK
  • node tests/unit/run.mjs tests/unit/i18n-locales.test.mjs tests/unit/config-tabs-ui.test.mjs tests/unit/web-ui-source-bundle.test.mjs tests/unit/web-ui-logic.test.mjsAll 740 tests passed.

Note: the test command still prints an existing search_sessions.py --limit -1 argparse warning, but exits successfully with all listed tests passing.

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

@awsl233777 Thanks — I’ll review the latest privacy-hardening update, including the masked orchestration errors, CSS-based text masking for advanced inputs, the regenerated precompiled bundle, and the added regression coverage.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@awsl233777

Copy link
Copy Markdown
Collaborator Author

@coderabbitai re-review

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

@awsl233777 Re-reviewing the latest changes now.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot 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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
web-ui/partials/index/panel-orchestration.html (2)

211-222: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Node IDs are still exposed in the “redacted” plan/detail views.

These blocks still render wave.nodeIds, node.id, and node.workflowId, so the UI can leak the exact orchestration identifiers this privacy hotfix is trying to hide. Please switch those fields to the same generic/count-based placeholders used elsewhere in this panel.

Also applies to: 436-440

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web-ui/partials/index/panel-orchestration.html` around lines 211 - 222, The
redacted orchestration detail views are still leaking exact identifiers in the
wave/node render blocks. Update the template sections that iterate over
taskOrchestration.plan.waves and taskOrchestration.plan.nodes so they no longer
display wave.nodeIds, node.id, or node.workflowId. Replace those fields with the
same generic/count-based placeholders already used elsewhere in this panel,
keeping the visible structure but removing identifier-level detail.

54-63: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Drop the menu roles here<details> plus buttons already provides usable native interaction, but role="menu" / role="menuitemradio" opt into the ARIA menu pattern without the arrow-key and focus management that pattern expects. Remove the roles or wire the full menu behavior.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web-ui/partials/index/panel-orchestration.html` around lines 54 - 63, The
task workspace selector in panel-orchestration.html is using ARIA menu semantics
without the required keyboard/focus behavior. Update the markup around the
task-workspace-menu-panel and the v-for button items to remove role="menu" and
role="menuitemradio", or implement the full menu interaction pattern if you keep
them. Keep the native details/button behavior centered around
selectTaskWorkspace and the workspace.active state.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@web-ui/partials/index/panel-orchestration.html`:
- Around line 211-222: The redacted orchestration detail views are still leaking
exact identifiers in the wave/node render blocks. Update the template sections
that iterate over taskOrchestration.plan.waves and taskOrchestration.plan.nodes
so they no longer display wave.nodeIds, node.id, or node.workflowId. Replace
those fields with the same generic/count-based placeholders already used
elsewhere in this panel, keeping the visible structure but removing
identifier-level detail.
- Around line 54-63: The task workspace selector in panel-orchestration.html is
using ARIA menu semantics without the required keyboard/focus behavior. Update
the markup around the task-workspace-menu-panel and the v-for button items to
remove role="menu" and role="menuitemradio", or implement the full menu
interaction pattern if you keep them. Keep the native details/button behavior
centered around selectTaskWorkspace and the workspace.active state.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 7eaa0132-91e2-4982-a6d7-bbe0d4c0f02e

📥 Commits

Reviewing files that changed from the base of the PR and between a076274 and 9425163.

📒 Files selected for processing (4)
  • tests/unit/config-tabs-ui.test.mjs
  • web-ui/partials/index/panel-orchestration.html
  • web-ui/res/web-ui-render.precompiled.js
  • web-ui/styles/task-orchestration.css
🚧 Files skipped from review as they are similar to previous changes (3)
  • web-ui/styles/task-orchestration.css
  • tests/unit/config-tabs-ui.test.mjs
  • web-ui/res/web-ui-render.precompiled.js

@awsl233777

Copy link
Copy Markdown
Collaborator Author

Pushed eb8696f with the latest CodeRabbit follow-up fixes.

Additional fixes:

  • Removed ARIA menu/menuitemradio roles from the split workspace selector so it uses native details/button behavior instead of incomplete menu semantics.
  • Stopped rendering plan wave node IDs, plan node IDs, and workflow IDs in visible orchestration plan/detail views.
  • Redacted displayed dependency lists to localized dependency counts instead of exact dependency IDs.
  • Updated all locale files and regenerated web-ui/res/web-ui-render.precompiled.js.
  • Added regression assertions for the removed roles and hidden plan/node identifiers.

Validation actually run after this update:

  • Targeted orchestration sensitive-field scan: PRIVACY_SCAN_OK.
  • node tests/unit/run.mjs tests/unit/i18n-locales.test.mjs tests/unit/config-tabs-ui.test.mjs tests/unit/web-ui-source-bundle.test.mjs tests/unit/web-ui-logic.test.mjsAll 740 tests passed.

Note: the test command still prints the existing search_sessions.py --limit -1 argparse warning, but exits successfully with all listed tests passing.

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

@awsl233777 Thanks — I’ll review the latest update, including the removed ARIA menu semantics, hidden plan/node/workflow identifiers, redacted dependency counts, regenerated precompiled bundle, and the added regression coverage.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot 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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
web-ui/modules/app.methods.task-orchestration.mjs (2)

472-505: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Mask backend error text in orchestration toasts as well.

The success path is now generic, but the failure branches in these same flows still call showMessage(res.error | message, 'error') on Line 484, Lines 499-500, Lines 517-518, Lines 532-534, Lines 769-770, and Lines 784-785. That still exposes raw server error text in the visible UI, which can leak the thread/workspace/run details this privacy hotfix is trying to hide. Use localized generic error toasts here and keep the raw message only in internal state/logging if needed.

Also applies to: 507-540, 759-790

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web-ui/modules/app.methods.task-orchestration.mjs` around lines 472 - 505,
The orchestration failure toasts still surface raw backend error text, so update
the error branches in runTaskOrchestration and the other affected
task-orchestration flows to use generic localized messages instead of res.error
or error.message. Keep the detailed backend error only in internal return
values, state, or logging if needed, and make sure showMessage is called with a
sanitized message in the identified orchestration methods.

496-496: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Route the new success toasts through t(...).

These newly changed strings are hardcoded Chinese, so English/Vietnamese sessions will now mix locales even though this PR adds orchestration i18n coverage elsewhere. Please switch them to translation keys instead of literals.

Also applies to: 528-528, 754-754, 781-781

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web-ui/modules/app.methods.task-orchestration.mjs` at line 496, The success
toast strings in task orchestration are still hardcoded Chinese, so route them
through the i18n helper instead of passing literals to showMessage. Update the
affected success paths in the task-orchestration methods (including the ones
around the start, progress, completion, and related orchestration flows) to use
t(...) translation keys so locale-specific sessions stay consistent.
web-ui/res/web-ui-render.precompiled.js (1)

4074-4090: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Use a valid selection role for the workspace items. aria-checked on a plain button is invalid ARIA, so the active workspace state won’t be announced correctly. Restore matching radio/menuitemradio semantics or switch to native radio controls.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web-ui/res/web-ui-render.precompiled.js` around lines 4074 - 4090, The
workspace item button in the workspace menu is using invalid ARIA by setting
aria-checked on a plain button, so update the selection control in the workspace
menu render logic to use matching radio-style semantics instead. Locate the
template block that renders each workspace item and either change the
element/role to menuitemradio or radio with the appropriate checked state, or
replace it with native radio controls, while keeping the active workspace state
announced correctly through the existing workspace.active handling.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@web-ui/modules/app.methods.task-orchestration.mjs`:
- Around line 472-505: The orchestration failure toasts still surface raw
backend error text, so update the error branches in runTaskOrchestration and the
other affected task-orchestration flows to use generic localized messages
instead of res.error or error.message. Keep the detailed backend error only in
internal return values, state, or logging if needed, and make sure showMessage
is called with a sanitized message in the identified orchestration methods.
- Line 496: The success toast strings in task orchestration are still hardcoded
Chinese, so route them through the i18n helper instead of passing literals to
showMessage. Update the affected success paths in the task-orchestration methods
(including the ones around the start, progress, completion, and related
orchestration flows) to use t(...) translation keys so locale-specific sessions
stay consistent.

In `@web-ui/res/web-ui-render.precompiled.js`:
- Around line 4074-4090: The workspace item button in the workspace menu is
using invalid ARIA by setting aria-checked on a plain button, so update the
selection control in the workspace menu render logic to use matching radio-style
semantics instead. Locate the template block that renders each workspace item
and either change the element/role to menuitemradio or radio with the
appropriate checked state, or replace it with native radio controls, while
keeping the active workspace state announced correctly through the existing
workspace.active handling.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: aa08203e-dff7-4e11-bf15-6bceb42be9b4

📥 Commits

Reviewing files that changed from the base of the PR and between 9425163 and eb8696f.

📒 Files selected for processing (10)
  • tests/unit/config-tabs-ui.test.mjs
  • tests/unit/web-ui-logic.test.mjs
  • web-ui/modules/app.methods.task-orchestration.mjs
  • web-ui/modules/i18n/locales/en.mjs
  • web-ui/modules/i18n/locales/ja.mjs
  • web-ui/modules/i18n/locales/vi.mjs
  • web-ui/modules/i18n/locales/zh-tw.mjs
  • web-ui/modules/i18n/locales/zh.mjs
  • web-ui/partials/index/panel-orchestration.html
  • web-ui/res/web-ui-render.precompiled.js
✅ Files skipped from review due to trivial changes (2)
  • web-ui/modules/i18n/locales/ja.mjs
  • web-ui/modules/i18n/locales/zh-tw.mjs
🚧 Files skipped from review as they are similar to previous changes (4)
  • web-ui/modules/i18n/locales/zh.mjs
  • tests/unit/web-ui-logic.test.mjs
  • tests/unit/config-tabs-ui.test.mjs
  • web-ui/partials/index/panel-orchestration.html

@awsl233777

Copy link
Copy Markdown
Collaborator Author

Update pushed in e253c0c.

What changed:

  • Replaced task orchestration raw error toasts with localized generic privacy-safe messages.
  • Added localized orchestration toast strings for en, zh, zh-TW, ja, and vi.
  • Changed the workspace split action button from aria-checked to aria-pressed.
  • Added regression coverage to ensure raw API error details are not surfaced through toast messages.
  • Regenerated web-ui/res/web-ui-render.precompiled.js.

Validation actually run:

  • PRIVACY_SCAN_OK
  • node tests/unit/run.mjs tests/unit/i18n-locales.test.mjs tests/unit/config-tabs-ui.test.mjs tests/unit/web-ui-source-bundle.test.mjs tests/unit/web-ui-logic.test.mjsAll 741 tests passed
  • git diff --check → no output

Note: the existing search_sessions.py --limit -1 argparse warning still appears during the test command, but the command exits 0.

@coderabbitai re-review

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

@awsl233777 Reviewing the latest update now, including the privacy-safe localized toast changes, the aria-pressed adjustment, the added regression coverage, and the regenerated precompiled bundle.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@awsl233777

Copy link
Copy Markdown
Collaborator Author

Implemented the Kilo-compatible orchestration host on this existing PR branch.

What changed:

  • Added a Codexmate-owned Kilo webview host shim for acquireVsCodeApi(), postMessage(), and getState/setState().
  • Added a whitelist-based task bridge for orchestration messages.
  • Explicitly blocks sensitive VSCode host escape hatches such as file open, external open, terminal, and agent-manager local actions.
  • Added a Kilo-style host card to the orchestration tab while preserving the existing workspace selector and task composer.
  • Kept workspace/thread/run/task/node/provider/model/endpoint/error details hidden in the visible UI.
  • Updated all locale files (en, zh, zh-TW, ja, vi) and regenerated the precompiled Web UI render.

Validation performed:

  • npm run test:unit — passed, 744 tests.
  • npm run test:e2e — passed.
  • npm run lint — passed for 231 files.
  • git diff --check — passed.
  • Local Web UI smoke screenshot at ?tab=orchestration confirmed the Kilo host card renders and visible sensitive details remain redacted.

Known existing noise:

  • Unit test output still includes the pre-existing search_sessions.py --limit -1 argparse warning, but the command exits 0.

@coderabbitai re-review

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

@awsl233777 Thanks — I’ll re-review the latest update, including the Kilo-compatible orchestration host shim, the whitelist-based task bridge and blocked host escape hatches, the added orchestration host card, the preserved privacy redaction, and the regenerated precompiled render.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@awsl233777

Copy link
Copy Markdown
Collaborator Author

Updated this round to fully align the orchestration tab with a VSCode-plugin-style chat surface instead of leaving a plan-preview workbench behind.

Changes in 2edac28:

  • Removed visible plan-preview UI from the orchestration tab:
    • no secondary preview button
    • no /plan/preview copy in the composer or readiness text
    • no plan card / plan node list in the chat stream
  • Made Enter and the primary action use the same planAndRunTaskOrchestrationFromChat() path.
  • Removed hidden chat /plan handling from submitTaskOrchestrationChatMessage().
  • Removed previewTaskPlanFromChat() and changed webview sendMessage to enter the same run path.
  • Kept the internal task-plan API as a preparation step before running, but renamed the frontend method to prepareTaskPlan() so the tab no longer exposes preview semantics.
  • Updated en/zh/zh-tw/ja/vi locale strings and removed obsolete preview/plan UI keys from the tab surface.
  • Regenerated web-ui/res/web-ui-render.precompiled.js.
  • Added/updated regression coverage to prevent the old preview handlers/copy/card from returning.

Validation performed:

  • node tests/unit/run.mjs config-tabs-ui i18n-locales web-ui-logic web-ui-source-bundle web-ui-behavior-parity
    • passed: All 741 tests passed
  • node tests/e2e/run.js
    • passed with exit code 0
  • git diff --check
    • passed with no output
  • Targeted scan over the orchestration tab template, methods, computed state, locales, and related tests for old preview UI terms/handlers:
    • no matches for /plan, previewTaskPlanFromChat, targetRequiredPreview, orchestration.readiness.preview, 计划预览, 仅预览, etc.
  • Local rendered-page proof:
    • served http://127.0.0.1:18324/?tab=orchestration
    • captured full-page screenshot: /home/moltbot/clawd-wechat/tmp/codexmate-pr209-vscode-align/orchestration-fullpage.png
    • visual check confirmed the tab now renders as a plugin-style chat surface with header/status, message area, bottom composer, and no visible plan-preview UI.
  • Local service cleanup:
    • confirmed port 18324 was no longer listening after screenshot capture.

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

@awsl233777 Reviewing the latest update now, including the removal of the visible plan-preview surface, the unified run path, the prepareTaskPlan() rename, the locale cleanup, and the refreshed regression coverage.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
tests/unit/i18n-locales.test.mjs (1)

199-211: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Cover the new composer CTA keys in locale parity.

This suite now checks runNext, but the chat surface also renders new keys like orchestration.chat.input.work and orchestration.chat.input.workHint. If an untouched locale misses either one, the composer will fall back to the raw key at runtime and this test stays green. Add the newly rendered composer keys to the keys list.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/unit/i18n-locales.test.mjs` around lines 199 - 211, The locale parity
test currently includes orchestration.chat.meta.runNext but is missing the newly
rendered composer CTA keys, so a locale can still ship with untranslated values
and the test won’t catch it. Update the keys list in i18n-locales.test.mjs to
include orchestration.chat.input.work and orchestration.chat.input.workHint
alongside the existing orchestration.chat.* entries, using the same pattern as
the other composer/chat keys.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@web-ui/partials/index/panel-orchestration.html`:
- Line 20: The header strip is reading taskOrchestrationSelectedRunNodes.length
directly instead of using the snapshot’s node-count fallback, so it can show 0
nodes right after planning. Update the orchestration counts in
panel-orchestration.html to use the same precomputed snapshot value or the same
fallback logic already used by the Kilo snapshot, keeping the header consistent
with the planned nodes when no run detail is selected.
- Around line 96-101: The composer action in panel-orchestration.html currently
uses planAndRunTaskOrchestrationFromChat() for both Enter and the primary
button, which appends a follow-up and immediately starts execution. Split this
into two flows: one handler that only appends/discusses the current chatDraft
when taskOrchestration.target already exists, and a separate start-work action
that runs the orchestration afterward. Update the textarea keydown and the
button in the prompt input area to call the appropriate handler based on state,
using planAndRunTaskOrchestrationFromChat and the taskOrchestration draft/target
fields to keep the sequential chat flow reachable.

---

Outside diff comments:
In `@tests/unit/i18n-locales.test.mjs`:
- Around line 199-211: The locale parity test currently includes
orchestration.chat.meta.runNext but is missing the newly rendered composer CTA
keys, so a locale can still ship with untranslated values and the test won’t
catch it. Update the keys list in i18n-locales.test.mjs to include
orchestration.chat.input.work and orchestration.chat.input.workHint alongside
the existing orchestration.chat.* entries, using the same pattern as the other
composer/chat keys.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 4611db01-dc54-4974-9cd8-17f18f541275

📥 Commits

Reviewing files that changed from the base of the PR and between 41ba76d and 2edac28.

📒 Files selected for processing (13)
  • tests/unit/config-tabs-ui.test.mjs
  • tests/unit/i18n-locales.test.mjs
  • tests/unit/web-ui-behavior-parity.test.mjs
  • tests/unit/web-ui-logic.test.mjs
  • web-ui/modules/app.computed.main-tabs.mjs
  • web-ui/modules/app.methods.task-orchestration.mjs
  • web-ui/modules/i18n/locales/en.mjs
  • web-ui/modules/i18n/locales/ja.mjs
  • web-ui/modules/i18n/locales/vi.mjs
  • web-ui/modules/i18n/locales/zh-tw.mjs
  • web-ui/modules/i18n/locales/zh.mjs
  • web-ui/partials/index/panel-orchestration.html
  • web-ui/res/web-ui-render.precompiled.js
🚧 Files skipped from review as they are similar to previous changes (5)
  • tests/unit/web-ui-behavior-parity.test.mjs
  • tests/unit/config-tabs-ui.test.mjs
  • web-ui/modules/i18n/locales/zh.mjs
  • web-ui/modules/i18n/locales/zh-tw.mjs
  • web-ui/modules/app.methods.task-orchestration.mjs

Comment thread web-ui/partials/index/panel-orchestration.html Outdated
Comment on lines +96 to +101
@keydown.enter.exact.prevent="planAndRunTaskOrchestrationFromChat()"></textarea>
</label>
<div class="prompt-input-actions">
<span>{{ taskOrchestrationDraftMetrics.hasTarget ? t('orchestration.chat.input.sequenceHint', { count: taskOrchestrationDraftMetrics.followUpCount + 2 }) : t('orchestration.chat.input.workHint') }}</span>
<button type="button" class="kilo-primary-button" @click="planAndRunTaskOrchestrationFromChat()" :disabled="taskOrchestration.running || taskOrchestration.planning || (!taskOrchestration.target.trim() && !taskOrchestration.chatDraft.trim())">
{{ taskOrchestration.running ? t('orchestration.actions.processing') : (taskOrchestration.planning ? t('orchestration.actions.planning') : t('orchestration.chat.input.work')) }}

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.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Separate “append request” from “start work.”

Lines 96-101 route both Enter and the only CTA through planAndRunTaskOrchestrationFromChat(). Once target already exists, that handler appends chatDraft and immediately starts execution, so the shipped composer has no way to add a follow-up request without kicking off the run. Split the append/discuss action from the start-work action, otherwise the sequential chat flow described by the new copy is unreachable.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web-ui/partials/index/panel-orchestration.html` around lines 96 - 101, The
composer action in panel-orchestration.html currently uses
planAndRunTaskOrchestrationFromChat() for both Enter and the primary button,
which appends a follow-up and immediately starts execution. Split this into two
flows: one handler that only appends/discusses the current chatDraft when
taskOrchestration.target already exists, and a separate start-work action that
runs the orchestration afterward. Update the textarea keydown and the button in
the prompt input area to call the appropriate handler based on state, using
planAndRunTaskOrchestrationFromChat and the taskOrchestration draft/target
fields to keep the sequential chat flow reachable.

@awsl233777

Copy link
Copy Markdown
Collaborator Author

Updated this PR with 950b68b to keep the orchestration tab aligned with the chat-style task surface.

What changed:

  • Removed remaining product-specific visible copy from the orchestration task chat surface (Codexmate/Kilo labels in user-facing task-chat text were replaced with neutral task-assistant wording).
  • Replaced visible Plan/nodes workbench wording in the current orchestration surface with neutral prepared-step wording where the UI is only showing task progress/status.
  • Removed unused orchestration.actions.generatePlan / orchestration.actions.planAndRun locale keys so the old plan/run action vocabulary does not drift back into the tab surface.
  • Kept internal task-plan/plan-node data structures intact where they are still part of the service contract and execution preparation flow.

Validation actually run:

  • Targeted residual scan over the orchestration panel/template, methods, computed state, host snapshot, locales, and related unit tests: no matches for old visible /plan, preview handlers/copy, removed action keys, or product-specific Codexmate surface copy.
  • node tests/unit/run.mjs config-tabs-ui i18n-locales web-ui-logic web-ui-source-bundle web-ui-behavior-parityAll 741 tests passed.
  • git diff --check → no output.
  • node tests/e2e/run.js → exit code 0.
  • npm run lint → passed for 231 files.

Known existing noise:

  • The targeted unit command still prints the existing search_sessions.py --limit -1 argparse warning, but the command exits 0 and reports all tests passed.

@coderabbitai re-review

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

@awsl233777 Thanks — I’ll re-review the latest update, with a focus on the neutral task-surface copy, the prepared-step wording cleanup, and the removal of the unused plan/run locale keys.


✏️ Learnings added
Learnt from: awsl233777
URL: https://github.com/SakuraByteCore/codexmate/pull/209

Timestamp: 2026-06-30T18:20:08.871Z
Learning: In the Codexmate Web UI orchestration task surface — including `web-ui/partials/index/panel-orchestration.html`, orchestration-facing locale files under `web-ui/modules/i18n/locales/`, and related orchestration computed/method modules — the visible user-facing chat UI should use neutral task-assistant wording and prepared-step progress labels, not product-specific `Codexmate`/`Kilo` labels or old plan/run workbench vocabulary. Internal `task-plan` and plan-node structures may remain as implementation/service-contract details as long as they are not exposed in the visible surface.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@awsl233777

Copy link
Copy Markdown
Collaborator Author

Follow-up pushed in 6f435db.

Handled the still-valid review items:

  • Updated the orchestration header count to use taskKiloWebviewHostSnapshot.stats.nodes, so the header uses the same prepared-step fallback as the host snapshot instead of reading only selected run detail nodes.
  • Added orchestration.chat.input.work and orchestration.chat.input.workHint to the locale parity coverage in tests/unit/i18n-locales.test.mjs.
  • Regenerated web-ui/res/web-ui-render.precompiled.js.

Not applied intentionally:

  • I did not split Enter into a discuss-only append flow. The current product direction for this PR is that Enter and the primary button both submit the request and start work through planAndRunTaskOrchestrationFromChat(). Splitting it back into append/discuss-only behavior would reintroduce the old non-executing chat semantics this update is removing.

Validation actually run:

  • Targeted residual scan: no matches for old visible /plan, preview handlers/copy, removed action keys, or product-specific Codexmate surface copy.
  • node tests/unit/run.mjs config-tabs-ui i18n-locales web-ui-source-bundleAll 741 tests passed.
  • git diff --check → no output.
  • node tests/e2e/run.js → exit code 0.

Known existing noise:

  • The targeted unit command still prints the existing search_sessions.py --limit -1 argparse warning, but exits 0.

@coderabbitai re-review

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

@awsl233777 Thanks — the header-count alignment and the added locale parity coverage address the remaining valid items.

Understood on the Enter behavior as well: keeping both Enter and the primary action on the same planAndRunTaskOrchestrationFromChat() execution path is consistent with the task-surface direction you described, so I won’t push for the old discuss-only append flow here.

I’ll re-review the latest changes now.


✏️ Learnings added
Learnt from: awsl233777
URL: https://github.com/SakuraByteCore/codexmate/pull/209

Timestamp: 2026-06-30T18:22:38.850Z
Learning: In the Codexmate Web UI orchestration task surface, the composer Enter key and the primary action should both submit and start work through `planAndRunTaskOrchestrationFromChat()` in `web-ui/modules/app.methods.task-orchestration.mjs`; a discuss-only append flow is intentionally out of scope because the new surface removes the old non-executing chat semantics.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@awsl233777

Copy link
Copy Markdown
Collaborator Author

Follow-up pushed in 3602196 after re-checking the older CodeRabbit review comments against current code instead of stopping at the latest status line.

Still-valid items fixed:

  • createTaskKiloWebviewHostSnapshot() now redacts conversationMessages before including them in the snapshot, so raw user prompts, assistant output, labels, and metadata are not serialized through the Kilo host snapshot.
  • handleTaskKiloWebviewMessage() now initializes orchestration state before mutating chat draft/settings state.
  • installTaskKiloWebviewShim() now preserves an existing window.acquireVsCodeApi bridge and guards window.localStorage access so storage-disabled/sandboxed webviews do not throw during bootstrap.

Verified older comments that are no longer valid on current code:

  • The title trigger no longer has fake button semantics.
  • The header count now uses taskKiloWebviewHostSnapshot.stats.nodes.
  • The locale parity keys for orchestration.chat.input.work and orchestration.chat.input.workHint are covered.
  • The current orchestration panel no longer contains the old session picker slice(0, 10) path.
  • The previously mentioned ja/zh-TW Kilo surface strings are localized in current code.

Intentionally unchanged:

  • Enter and the primary CTA remain on planAndRunTaskOrchestrationFromChat(). This is the intended current task-surface behavior, not the old discuss-only/preview flow.

Validation actually run:

  • node tests/unit/run.mjs web-ui-logic config-tabs-ui i18n-locales web-ui-source-bundleAll 743 tests passed.
  • git diff --check → no output.
  • npm run lint → passed for 231 files.
  • node tests/e2e/run.js → exit code 0.

Known existing noise:

  • The targeted unit command still prints the existing search_sessions.py --limit -1 argparse warning, but exits 0.

@coderabbitai re-review

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

@awsl233777 Thanks for the careful follow-up — the snapshot redaction, state-init ordering, and shim bootstrap hardening all sound like the right fixes, and the intentional Enter/primary-CTA behavior is understood.

I’ll re-review the latest update now.

(•ㅅ•)


✏️ Learnings added
Learnt from: awsl233777
URL: https://github.com/SakuraByteCore/codexmate/pull/209

Timestamp: 2026-06-30T18:29:15.225Z
Learning: In `web-ui/modules/task-kilo-webview-host.mjs`, `createTaskKiloWebviewHostSnapshot()` should redact `conversationMessages` before serializing snapshot data so raw user prompts, assistant output, labels, and metadata are not exposed through the Kilo host snapshot.

Learnt from: awsl233777
URL: https://github.com/SakuraByteCore/codexmate/pull/209

Timestamp: 2026-06-30T18:29:15.225Z
Learning: In the Codexmate Web UI orchestration flow, `handleTaskKiloWebviewMessage()` in `web-ui/modules/app.methods.task-orchestration.mjs` should initialize orchestration state before mutating chat draft or settings state, and `installTaskKiloWebviewShim()` should preserve an existing `window.acquireVsCodeApi` bridge while guarding `window.localStorage` access for storage-disabled or sandboxed webviews.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@web-ui/modules/i18n/locales/ja.mjs`:
- Around line 1077-1081: Remove the stale orchestration.agent.trace.* locale
entries from the ja.mjs locale map, since the chat surface now uses
orchestration.kilo.trace.counts instead. Update the locale object by deleting
the unused trace.title, trace.prepare, trace.queue, trace.runs, and trace.nodes
keys, and make sure any remaining references in the i18n bundle point to
orchestration.kilo.trace.counts.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 39d3bc0c-002a-44ca-b924-5a9c2c77c061

📥 Commits

Reviewing files that changed from the base of the PR and between 2edac28 and 3602196.

📒 Files selected for processing (14)
  • tests/unit/config-tabs-ui.test.mjs
  • tests/unit/i18n-locales.test.mjs
  • tests/unit/web-ui-behavior-parity.test.mjs
  • tests/unit/web-ui-logic.test.mjs
  • web-ui/modules/app.computed.main-tabs.mjs
  • web-ui/modules/app.methods.task-orchestration.mjs
  • web-ui/modules/i18n/locales/en.mjs
  • web-ui/modules/i18n/locales/ja.mjs
  • web-ui/modules/i18n/locales/vi.mjs
  • web-ui/modules/i18n/locales/zh-tw.mjs
  • web-ui/modules/i18n/locales/zh.mjs
  • web-ui/modules/task-kilo-webview-host.mjs
  • web-ui/partials/index/panel-orchestration.html
  • web-ui/res/web-ui-render.precompiled.js
🚧 Files skipped from review as they are similar to previous changes (11)
  • web-ui/modules/task-kilo-webview-host.mjs
  • tests/unit/i18n-locales.test.mjs
  • tests/unit/web-ui-behavior-parity.test.mjs
  • tests/unit/config-tabs-ui.test.mjs
  • web-ui/modules/i18n/locales/vi.mjs
  • web-ui/modules/i18n/locales/zh-tw.mjs
  • web-ui/modules/i18n/locales/en.mjs
  • web-ui/modules/app.computed.main-tabs.mjs
  • web-ui/modules/i18n/locales/zh.mjs
  • web-ui/modules/app.methods.task-orchestration.mjs
  • tests/unit/web-ui-logic.test.mjs
📜 Review details
🔇 Additional comments (1)
web-ui/partials/index/panel-orchestration.html (1)

96-101: Append-vs-start-work flow is still unreachable.

Both @keydown.enter (Line 96) and the only CTA (Line 100) call planAndRunTaskOrchestrationFromChat(). Once target exists this appends chatDraft and immediately starts the run, so the sequential "add follow-up" flow implied by sequenceHint/work copy has no dedicated action. Split append/discuss from start-work.

Comment on lines 1077 to +1081
'orchestration.agent.trace.title': 'Live trace',
'orchestration.agent.trace.plan': 'Plan nodes',
'orchestration.agent.trace.prepare': '準備済みステップ',
'orchestration.agent.trace.queue': 'Queue',
'orchestration.agent.trace.runs': 'Runs',
'orchestration.agent.trace.nodes': 'Run nodes',
'orchestration.agent.trace.nodes': '実行ステップ',

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.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
rg -nP "orchestration\.agent\.trace\.(title|queue|runs|prepare|nodes)" web-ui

Repository: SakuraByteCore/codexmate

Length of output: 2440


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== old keys =="
rg -n "orchestration\.agent\.trace\.(title|prepare|queue|runs|nodes)" web-ui || true

echo
echo "== new key =="
rg -n "orchestration\.kilo\.trace\.counts" web-ui || true

echo
echo "== other kilo/trace references =="
rg -n "kilo\.trace|agent\.trace|trace\.counts" web-ui/modules web-ui || true

Repository: SakuraByteCore/codexmate

Length of output: 10742


Remove the stale orchestration.agent.trace.* locale entries. The chat surface now uses orchestration.kilo.trace.counts, and these keys only remain in the locale files.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web-ui/modules/i18n/locales/ja.mjs` around lines 1077 - 1081, Remove the
stale orchestration.agent.trace.* locale entries from the ja.mjs locale map,
since the chat surface now uses orchestration.kilo.trace.counts instead. Update
the locale object by deleting the unused trace.title, trace.prepare,
trace.queue, trace.runs, and trace.nodes keys, and make sure any remaining
references in the i18n bundle point to orchestration.kilo.trace.counts.

@awsl233777

Copy link
Copy Markdown
Collaborator Author

Updated this PR with 64d442c to keep the orchestration composer visible in the normal web UI viewport.

What changed:

  • Replaced the hard-coded orchestration workbench height with a shell-aware clamp() height using viewport offset variables.
  • Explicitly reset .kilo-webview-container min-height: 0 so the global .container { min-height: 100vh; } rule cannot push the composer below the viewport.
  • Added regression assertions that preserve the shell-aware height strategy and reject the old 100vh - 92px / 100vh - 72px sizing.

Validation actually run:

  • node tests/unit/run.mjs config-tabs-ui → All 743 tests passed.
  • npm run lint → passed for 231 files.
  • Headless Chrome screenshot at 1440x1100 against the local Web UI confirmed the bottom composer, textarea, hint, and primary 开始执行 button are fully visible.
  • Screenshot inspection also confirmed no old /plan, preview-only wording, plan nodes, raw paths, raw IDs, or raw errors are visible.

Remaining risk:

  • CI is expected to rerun on the new head commit.

@coderabbitai re-review

@coderabbitai

coderabbitai Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
fd task-orchestration.css
echo "---clamp---"
rg -n "clamp\(" web-ui/styles/task-orchestration.css
echo "---kilo-webview-container---"
rg -n "kilo-webview-container" web-ui/styles/task-orchestration.css web-ui/styles/*.css
echo "---min-height---"
rg -n "min-height" web-ui/styles/task-orchestration.css
echo "---container min-height 100vh---"
rg -n "\.container\s*{" -A3 web-ui/styles/*.css
echo "---regression assertions---"
rg -n "100vh - 92px|100vh - 72px|clamp\(" tests/unit/config-tabs-ui.test.mjs

Length of output: 2083


🏁 Script executed:

#!/bin/bash
rg -n "min-height: 100vh" web-ui/styles/*.css
rg -n "^\.container" -A5 web-ui/styles/*.css
sed -n '1,25p' web-ui/styles/task-orchestration.css

Length of output: 1864


This confirms the described update: .kilo-webview-container now uses height: clamp(var(--kilo-workbench-min-height), calc(100vh/100dvh - var(--kilo-workbench-shell-offset)), var(--kilo-workbench-max-height)) with min-height: 0 explicitly reset, and #panel-orchestration.kilo-webview-mode uses a min()-based shell-aware min-height. This correctly neutralizes the global .container { min-height: 100vh; } rule from web-ui/styles/layout-shell.css (Line 12) that could otherwise push the composer out of the viewport. The dvh fallback pairing is also a nice touch for mobile viewport correctness. The regression assertion at Line 192 of tests/unit/config-tabs-ui.test.mjs correctly rejects the old hard-coded 100vh - 92px/100vh - 72px and fixed min-height values.

@awsl233777 Thanks — verified this directly in web-ui/styles/task-orchestration.css: the clamp()-based height on .kilo-webview-container combined with min-height: 0 correctly neutralizes the global .container { min-height: 100vh; } rule in web-ui/styles/layout-shell.css, and the 100dvh fallback is a good defensive addition for mobile viewport units. The regression assertion rejecting the old 100vh - 92px/100vh - 72px sizing is in place as described.

I'll re-review the latest changes now.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@web-ui/styles/task-orchestration.css`:
- Around line 1-9: The orchestration panel rule block is missing the required
empty line before the first non-custom-property declaration, which triggers the
stylelint declaration-empty-line-before rule. Update the
`#panel-orchestration.kilo-webview-mode` block in task-orchestration.css by adding
a blank line after the custom property declarations and before the first
min-height declaration so the stylesheet matches the linting convention.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 34c738d3-426b-4bd7-b334-1bdd51f73591

📥 Commits

Reviewing files that changed from the base of the PR and between 3602196 and 64d442c.

📒 Files selected for processing (2)
  • tests/unit/config-tabs-ui.test.mjs
  • web-ui/styles/task-orchestration.css
🚧 Files skipped from review as they are similar to previous changes (1)
  • tests/unit/config-tabs-ui.test.mjs
📜 Review details
🧰 Additional context used
🪛 Stylelint (17.14.0)
web-ui/styles/task-orchestration.css

[error] 5-5: Expected empty line before declaration (declaration-empty-line-before)

(declaration-empty-line-before)

Comment thread web-ui/styles/task-orchestration.css
@awsl233777

Copy link
Copy Markdown
Collaborator Author

Follow-up pushed in 354ec45 for the latest CodeRabbit actionable comment.

Handled:

  • Added the required blank line after the orchestration sizing custom properties in web-ui/styles/task-orchestration.css, before the first min-height declaration.

Validation actually run after this change:

  • npm run lint → passed for 231 files.
  • node tests/unit/run.mjs config-tabs-ui → All 743 tests passed.

@coderabbitai re-review

@coderabbitai

coderabbitai Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
sed -n '1,20p' web-ui/styles/task-orchestration.css

Length of output: 955


@awsl233777 Confirmed — the blank line is now in place after the custom properties block in web-ui/styles/task-orchestration.css, before the first min-height declaration. Thanks for the quick fix.

I'll re-review the latest changes now.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@awsl233777

Copy link
Copy Markdown
Collaborator Author

Updated this PR with e1ed927 after checking the provided reference app (easychuan.cn/r/uytpq?t=nf) instead of only validating the composer clipping fix.

What changed:

  • Restyled the orchestration task surface from the dark VS Code-like panel toward the reference app's light tool UI:
    • cool gray workbench background
    • centered white task card capped at 980px
    • blue task header
    • light border/shadow treatment
    • compact white composer and controls
  • Kept the shell-aware clamp() sizing and tightened the desktop shell offset so the composer remains fully visible after the centered-card styling.
  • Extended regression assertions so the bundled CSS keeps the reference-style blue/gray tokens, centered task card, blue header, and min-height: 0 safeguard.

Validation actually run:

  • npm run lint → passed for 231 files.
  • node tests/unit/run.mjs config-tabs-ui → All 743 tests passed.
  • Headless Chrome screenshot at 1440x1100 confirmed:
    • light gray background
    • centered white card
    • blue header
    • composer and 开始执行 button fully visible
    • no old /plan, preview wording, plan nodes, raw paths, raw IDs, or raw errors visible.

@coderabbitai re-review

@coderabbitai

coderabbitai Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
sed -n '1,60p' web-ui/styles/task-orchestration.css
echo "---search reference tokens---"
rg -n "980px|kilo-task-card|task-header|blue|`#f`|background" web-ui/styles/task-orchestration.css | head -60
echo "---regression assertions---"
rg -n "980px|blue|centered|task-card" tests/unit/config-tabs-ui.test.mjs

Length of output: 5202


@awsl233777 Verified directly in web-ui/styles/task-orchestration.css:

  • --kilo-reference-blue: #1e7fd3 and `--kilo-reference-bg: `#eef1f4 tokens are defined as described.
  • #panel-orchestration .kilo-webview-container is capped at width: min(100%, 980px) / max-width: 980px, centered with margin: 0 auto, on a white background with the light border/shadow treatment.
  • [data-component="task-header"] uses background: var(--kilo-reference-blue) with white text, matching the blue header restyle.
  • The min-height: 0 safeguard is still in place alongside the clamp() height (with 100vh/100dvh fallback pairing), so the composer-visibility fix from the previous round is preserved.
  • The regression assertions in tests/unit/config-tabs-ui.test.mjs (Lines 191-194) correctly lock in the reference-blue token, the centered-card width/margin/clamp/min-height: 0 combination, and the blue task-header background.

This all lines up with what you described. Thanks for checking against the reference app and keeping the composer-visibility fix intact through the restyle.

I'll re-review the latest changes now.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Rework the orchestration panel into a full-width Kilo-style chat shell with explicit message, permission, error, and composer regions. Improve custom provider setup hints and reject concrete API paths such as /chat/completions so users enter base URLs. Add regression coverage for the UI structure and provider URL validation.
@awsl233777

Copy link
Copy Markdown
Collaborator Author

Updated this PR with 0ca4836 for the Kilo-style orchestration rewrite and custom provider UX pass.

What changed:

  • Reworked the orchestration panel from the centered card/blue-header layout into a full-width chat shell with explicit task header, message list, permission/status dock, error dock, and bottom composer regions.
  • Kept the composer and 开始执行 action visible across the tested viewport sizes after fixing the shell height calculation.
  • Added custom provider field hints for provider name, base URL, model ID, API key, and OpenAI-compatible transform usage.
  • Rejected concrete provider API paths such as /chat/completions, /responses, and /completions so users enter a base URL, typically ending at /v1.
  • Made disabled confirm buttons visibly disabled so invalid provider forms do not look actionable.
  • Rebuilt web-ui/res/web-ui-render.precompiled.js.

Validation performed locally:

  • npm run lint → passed (231 file(s)).
  • npm run test:unit → passed (744 tests passed). Existing noisy search_sessions.py --limit -1 argparse output still appears during the unit run, but the command exits successfully.
  • npm run test:e2e → completed without failure output.
  • git diff --check → no output.
  • Browser screenshot pass against local Web UI:
    • orchestration: 1440x1100, 1280x800, 900x700
    • provider modal hints: 1280x900
    • provider /chat/completions error state: 1280x900

Current GitHub checks are still in progress for the new head.

@coderabbitai re-review current head 0ca4836 for regressions in the orchestration shell, provider URL validation, disabled-button UX, and generated web UI render output.

@coderabbitai

coderabbitai Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
echo "---panel html structure---"
sed -n '1,80p' web-ui/partials/index/panel-orchestration.html
echo "---provider validation logic---"
rg -n "chat/completions|/responses|/completions" web-ui/modules/app.methods.task-orchestration.mjs web-ui/partials/index/panel-orchestration.html web-ui/modules/*.mjs
echo "---disabled button css---"
rg -n "disabled" web-ui/styles/task-orchestration.css | head -40
echo "---precompiled render consistency check---"
rg -n "kilo-permission|error-dock|status-dock" web-ui/partials/index/panel-orchestration.html web-ui/res/web-ui-render.precompiled.js | head -40
echo "---check for reintroduced legacy strings---"
rg -n "task-sensitive-input|kilo-settings-popover|kilo-settings-row|kilo-input|startNewTaskWorkspaceSession" web-ui/partials/index/panel-orchestration.html web-ui/res/web-ui-render.precompiled.js
echo "---check for /plan leftover---"
rg -n "/plan|previewTaskPlanFromChat|planLabel|planSummary" web-ui/partials/index/panel-orchestration.html web-ui/modules/app.methods.task-orchestration.mjs web-ui/modules/app.computed.main-tabs.mjs
echo "---provider modal file search---"
fd -i provider

Length of output: 9962


🏁 Script executed:

#!/bin/bash
echo "---providers.mjs context---"
sed -n '70,140p' web-ui/modules/app.methods.providers.mjs
echo "---disabled button css context---"
sed -n '150,200p' web-ui/styles/task-orchestration.css
echo "---error-dock html context---"
sed -n '80,110p' web-ui/partials/index/panel-orchestration.html
echo "---error-dock precompiled context---"
sed -n '4100,4160p' web-ui/res/web-ui-render.precompiled.js
echo "---check test coverage for provider url validation---"
rg -n "chat/completions|responses|completions" tests/unit/providers-validation.test.mjs | head -30

Length of output: 12723


🏁 Script executed:

#!/bin/bash
echo "---full provider validation test relevant section---"
rg -n "chat/completions|responses|completions|base URL|具体接口路径" -B3 -A10 tests/unit/providers-validation.test.mjs
echo "---disabled button test coverage---"
rg -n "disabled|kilo-primary-button" tests/unit/config-tabs-ui.test.mjs | head -20
echo "---check duplicate error dock in older comments---"
rg -n "kilo-error-dock|lastError" web-ui/partials/index/panel-orchestration.html

Length of output: 5467


Everything checks out well overall. A few observations from directly inspecting 0ca4836:

  • Provider URL validation (web-ui/modules/app.methods.providers.mjs Line 107): the regex /\/(chat\/completions|responses|completions)$/ correctly rejects /chat/completions, /responses, /completions at the end of a normalized (trailing-slash-stripped, lowercased) pathname, and tests/unit/providers-validation.test.mjs (Line 168-192) covers the rejection path end-to-end, including the toast message and that addProvider() short-circuits before calling the API.
  • Disabled confirm button UX: #panel-orchestration .kilo-primary-button:disabled etc. (Line 170-173 in web-ui/styles/task-orchestration.css) apply cursor: not-allowed; opacity: 0.48;, which gives a visible disabled affordance.
  • Precompiled render: spot-checked the error-dock/permission-dock and message-list blocks in web-ui/res/web-ui-render.precompiled.js — they match the template in web-ui/partials/index/panel-orchestration.html 1:1, so the regeneration is consistent.
  • No legacy leaks: no hits for task-sensitive-input, kilo-settings-popover, kilo-settings-row, kilo-input, startNewTaskWorkspaceSession, /plan, previewTaskPlanFromChat, planLabel, or planSummary.

One minor observation (not a blocker): when taskOrchestration.lastError is set, the redacted error is now rendered in two places simultaneously — once as an assistant turn in the message list (Line 69) and again in the persistent kilo-error-dock above the composer (Line 82). If that's intentional (conversational context + a persistent status dock), no action needed; just flagging in case it wasn't deliberate and you'd prefer to show it in only one place to avoid duplicated messaging.

I'll re-review the latest changes now.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Keep the provider endpoint change to guidance text only. Do not alter the existing Codex provider add/edit validation flow as part of the orchestration UI pass.
@awsl233777

Copy link
Copy Markdown
Collaborator Author

Follow-up pushed in c7d935f to keep the Codex provider configuration behavior unchanged.

Correction:

  • Kept the provider modal guidance text explaining that endpoints should normally be base URLs ending at /v1.
  • Removed the hard validation that rejected /chat/completions, /responses, and /completions endpoint paths.
  • Removed the corresponding behavior test so this PR does not change the existing Codex tab add/edit provider validation flow.

Local verification after this correction:

  • node tests/unit/run.mjs tests/unit/providers-validation.test.mjs tests/unit/config-tabs-ui.test.mjs tests/unit/i18n-locales.test.mjs tests/unit/web-ui-source-bundle.test.mjs → passed (743 tests passed).
  • npm run lint → passed (231 file(s)).
  • git diff --check → no output.
  • Checked local Codex config files for the Provider modal test values (api.example.com, sk-test) and did not find them in ~/.codex/config.toml, ~/.codex/auth.json, or ~/.codex/models.json.

This keeps the orchestration UI rewrite and provider UX hints, without altering the Codex tab's provider configuration logic.

Revert the provider modal hints, shared button styling, and provider test edits from the orchestration UI pass. Keep this PR scoped to the task orchestration tab and its generated render/test coverage.
@awsl233777

Copy link
Copy Markdown
Collaborator Author

Scope cleanup pushed in 6e465ba.

Correction:

  • Removed the Provider/Codex tab changes from this orchestration UI pass.
  • Final diff from the pre-work head e1ed927 is now limited to:
    • web-ui/partials/index/panel-orchestration.html
    • web-ui/styles/task-orchestration.css
    • tests/unit/config-tabs-ui.test.mjs
    • web-ui/res/web-ui-render.precompiled.js
  • No Provider modal, Provider validation, i18n provider-hint, or shared button-style changes remain in the final diff.

Local validation after scope cleanup:

  • node tests/unit/run.mjs tests/unit/config-tabs-ui.test.mjs tests/unit/i18n-locales.test.mjs tests/unit/web-ui-source-bundle.test.mjs → passed (743 tests passed; existing search_sessions.py --limit -1 noise still appears but exit is successful).
  • npm run lint → passed (231 file(s)).
  • npm run test:e2e → completed without failure output.
  • git diff --check → no output.

GitHub CI has restarted for head 6e465ba; I am checking it with one-shot status queries only, not a long foreground watch.

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.

1 participant