refactor: remove legacy orchestration skill artifacts#295
refactor: remove legacy orchestration skill artifacts#295mattleaverton merged 35 commits intomainfrom
Conversation
…ated browser-use test
Priority 3: Integration test for rendering coalesced tool messages Priority 4: Edge case tests (empty content, thinking block, session not found) Priority 5: Invariant tests (message order, model preserved, status updated)
R1 (critical): Add main(argv) function and if __name__ block to tool_coalesce.py - Script can now be run standalone with --help and other CLI args - Follows same pattern as smoke_freshell.py R2 (major): Extend test 4.4 to verify coalescing with malformed lines - Add new test 'coalesces tool messages even when malformed lines are interspersed' - Verifies that tool-only assistant messages are still coalesced correctly when malformed JSON lines appear between them
Revert src/components/TerminalView.tsx to match main branch. The handleImagePaste changes (17 lines) were from an unrelated PR that was merged into this branch accidentally.
…ser state Show thinking, Show tools, and Show timecodes were stored per-pane in AgentChatPaneContent. They now live in LocalSettings (browser-local localStorage), shared across all agent chat panes and persisted across page loads. All three default to off (false).
… settings E2e tests now use preloadedState with showTools: true where expanded tools are expected. CollapsedTurn defaults updated to false. Comments updated to reflect new per-machine defaults.
Migrate showThinking/showTools/showTimecodes from persisted agent-chat pane content into browser-local preferences on module load, so existing users keep their settings after the per-pane → per-machine move.
- SettingsView.agent-chat.test.tsx: 9 tests for Workspace toggles (defaults, preloaded state, toggle on/off, local-only persistence) - browserPreferencesPersistence.test.ts: 4 round-trip tests for agentChat.showThinking/showTools/showTimecodes localStorage persistence
…history plan - Task 4 dedup test now verifies dedup by checking ArrowDown returns to empty draft after two Ups (proves only 1 entry exists, not 2) - Task 4 e2e test imports changed from relative to @/ aliases - Task 2 hook test import now includes pushEntry - Removed redundant await import correction note in Task 2
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 13321571ae
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| push(trimmed) | ||
| onSend(trimmed) |
There was a problem hiding this comment.
Preserve send flow when input-history persistence fails
handleSend calls push(trimmed) before onSend(trimmed), and push writes to localStorage without guarding setItem errors. If storage is unavailable (e.g., quota exceeded/private mode), this throws and the prompt is never sent, which breaks agent chat input for affected users. Make history persistence best-effort (catch write failures or avoid blocking onSend).
Useful? React with 👍 / 👎.
| return normalized === '.claude/plugins/freshell-orchestration' | ||
| || normalized.endsWith('/.claude/plugins/freshell-orchestration') |
There was a problem hiding this comment.
Normalize trailing slash in legacy plugin path matcher
The legacy plugin filter only matches exact .../.claude/plugins/freshell-orchestration suffixes, so paths saved with a trailing slash are not recognized as legacy. After this commit removes that plugin directory, those stale paths can still be passed to the SDK and may break session startup. Normalize trailing slashes before comparison to ensure stale references are reliably stripped.
Useful? React with 👍 / 👎.
…ined target error messages - normalizePluginPath no longer lowercases paths, preventing false matches on case-sensitive filesystems (Linux) - rename-tab/rename-pane show "No active tab/pane found" instead of "Tab 'undefined' not found" when target is omitted Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Summary
SdkBridgeand strip stale saved references to that removed pathfreshellMCP tool help/instructions the canonical orchestration reference, including caller-default rename support forrename-tabandrename-paneTesting
npm run test:vitest -- --run test/unit/shared/settings.test.tsnpm run test:vitest -- --config vitest.server.config.ts --run test/unit/server/mcp/freshell-tool.test.ts test/unit/server/config-store.test.ts test/unit/server/sdk-bridge.test.ts test/unit/server/ws-handler-sdk.test.tsNotes
npm checkwas not run