Skip to content

Commit 1cf8b37

Browse files
authored
🤖 feat: remove Chat with Mux (#3123)
## Summary Remove the built-in Chat with Mux workspace and agent, along with the frontend, backend, docs, and test special-casing that supported it, then follow through on the compatibility and validation regressions that surfaced once the feature was gone. ## Background Chat with Mux added a hidden system workspace, a dedicated built-in agent, and multiple product-specific exceptions across routing, workspace creation, tool scope, MCP/secrets handling, docs, Storybook, and tests. Removing the feature wholesale simplifies those paths, but it also exposed a few places that still depended on legacy system-workspace behavior, persisted `mux` agent ids, or test-only globals/module state that had been masked before. ## Implementation - delete the built-in Chat with Mux agent, constants, docs page, and dedicated UI test - remove service-container bootstrap plus workspace/AI/terminal special handling for the built-in system workspace - remove UI entrypoints and affordances, including the sidebar help button, landing-page card, and F1 shortcut - update command, routing, and agent-locking behavior to stop treating a special workspace differently - preserve documented global mux-tool behavior for legacy hidden system workspaces, while keeping `_multi` workspaces project-scoped - remap persisted removed `mux` agent ids to the default built-in fallback so upgraded installs keep UI/backend agent state aligned - skip hidden system workspaces in the desktop new-chat startup fallback so upgraded installs still draft chats in user-visible projects - stabilize the affected Bun test suites by isolating leaked DOM globals, module cache state, and context-menu/menu mocks across full-suite runs ## Validation - `make static-check` - `make test` ## Risks - Existing on-disk leftovers from the removed system workspace are no longer surfaced as a first-class feature; this change removes the feature rather than adding a migration UI. - Legacy hidden system workspaces and removed `mux` agent ids still need compatibility fallbacks on upgrade, so regressions there remain low-risk but worth keeping under regression coverage. --- _Generated with `mux` • Model: `openai:gpt-5.4` • Thinking: `xhigh` • Cost: `$49.43`_ <!-- mux-attribution: model=openai:gpt-5.4 thinking=xhigh costs=49.43 -->
1 parent 3aeeb99 commit 1cf8b37

78 files changed

Lines changed: 1111 additions & 2259 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/agents/agent-skills.mdx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,6 @@ Set `advertise: false` in the frontmatter to exclude a skill from that index. Un
9090
- **Still appear** in Mux’s UI lists (for example `/` slash suggestions)
9191
- **Are useful for**: skills meant only for sub-agents, advanced users, or internal orchestration
9292

93-
- **In Chat with Mux tooling**, `advertise` is authored directly in frontmatter content; there is no separate tool argument
94-
9593
### Example: `deep-review` skill
9694

9795
The Mux repository includes an unadvertised `deep-review` skill that encourages aggressive use of sub-agents to produce excellent code reviews (correctness, tests, consistency, UX, performance). Invoke it with `/deep-review` when you want a thorough, parallelized review. This skill is defined in `.mux/skills/deep-review/SKILL.md`.

docs/agents/index.mdx

Lines changed: 3 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ tools:
279279
- ask_user_question
280280
# Internal-only tools
281281
- system1_keep_ranges
282-
# Global config tools are restricted to the mux agent
282+
# Global config and catalog tools stay out of general-purpose agents
283283
- mux_agents_.*
284284
- agent_skill_write
285285
- agent_skill_delete
@@ -503,7 +503,7 @@ tools:
503503
remove:
504504
# Plan should not apply sub-agent patches.
505505
- task_apply_git_patch
506-
# Global config tools are restricted to the mux agent
506+
# Global config and catalog tools stay out of general-purpose agents
507507
- mux_agents_.*
508508
- agent_skill_write
509509
- agent_skill_delete
@@ -568,75 +568,6 @@ provided separately.
568568

569569
</Accordion>
570570

571-
### Chat With Mux (internal)
572-
573-
**Configure Mux settings, skills, and agent instructions**
574-
575-
<Accordion title="View mux.md">
576-
577-
```md
578-
---
579-
name: Chat With Mux
580-
description: Configure Mux settings, skills, and agent instructions
581-
ui:
582-
hidden: true
583-
routable: true
584-
subagent:
585-
runnable: false
586-
tools:
587-
add:
588-
- mux_agents_read
589-
- mux_agents_write
590-
- mux_config_read
591-
- mux_config_write
592-
- agent_skill_read
593-
- agent_skill_read_file
594-
- agent_skill_list
595-
- agent_skill_write
596-
- agent_skill_delete
597-
- skills_catalog_search
598-
- skills_catalog_read
599-
- ask_user_question
600-
- todo_read
601-
- todo_write
602-
- notify
603-
- analytics_query
604-
---
605-
606-
You are the **Mux system assistant**.
607-
608-
Your tools are **context-aware** — they automatically target the right scope:
609-
610-
**In a project workspace**:
611-
612-
- **Project skills**: Create, update, list, and delete project skills (`.mux/skills/`)
613-
- **Project instructions**: Edit the project's `AGENTS.md`
614-
615-
**In the system workspace** (Chat with Mux):
616-
617-
- **Global skills**: Create, update, list, and delete global skills (`~/.mux/skills/`)
618-
- **Global instructions**: Edit the mux-wide `~/.mux/AGENTS.md`
619-
620-
**Always global** (regardless of context):
621-
622-
- **App config**: Read and write Mux configuration (`~/.mux/config.json`)
623-
624-
## Safety rules
625-
626-
- You do **not** have access to arbitrary filesystem tools.
627-
- You do **not** have access to project secrets.
628-
- Before writing AGENTS.md, you must:
629-
1. Read the current file (`mux_agents_read`).
630-
2. Propose the exact change (show the new content or a concise diff).
631-
3. Ask for explicit confirmation via `ask_user_question`.
632-
4. Only then call `mux_agents_write` with `confirm: true`.
633-
- Before writing a skill, show the proposed `SKILL.md` content and confirm.
634-
635-
If the user declines, do not write anything.
636-
```
637-
638-
</Accordion>
639-
640571
### Compact (internal)
641572

642573
**History compaction (internal)**
@@ -718,7 +649,7 @@ tools:
718649
- ask_user_question
719650
# Internal-only
720651
- system1_keep_ranges
721-
# Global config tools
652+
# Global config and catalog tools
722653
- mux_agents_.*
723654
- agent_skill_write
724655
---

docs/docs.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
"pages": [
3333
"index",
3434
"install",
35-
"getting-started/chat",
3635
{
3736
"group": "Models",
3837
"pages": ["config/models", "config/providers"]

docs/getting-started/chat.mdx

Lines changed: 0 additions & 183 deletions
This file was deleted.

src/browser/App.tsx

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { useRouter } from "./contexts/RouterContext";
33
import { useLocation, useNavigate } from "react-router-dom";
44
import "./styles/globals.css";
55
import { useWorkspaceContext, toWorkspaceSelection } from "./contexts/WorkspaceContext";
6-
import { MUX_HELP_CHAT_WORKSPACE_ID } from "@/common/constants/muxChat";
76
import { useProjectContext } from "./contexts/ProjectContext";
87
import type { WorkspaceSelection } from "./components/ProjectSidebar/ProjectSidebar";
98
import { LeftSidebar } from "./components/LeftSidebar/LeftSidebar";
@@ -111,7 +110,6 @@ function AppInner() {
111110
setWorkspaceMetadata,
112111
removeWorkspace,
113112
updateWorkspaceTitle,
114-
refreshWorkspaceMetadata,
115113
selectedWorkspace,
116114
setSelectedWorkspace,
117115
pendingNewWorkspaceProject,
@@ -244,27 +242,6 @@ function AppInner() {
244242
workspaceMetadataRef.current = workspaceMetadata;
245243
}, [workspaceMetadata]);
246244

247-
const handleOpenMuxChat = useCallback(() => {
248-
// User requested an F1 shortcut to jump straight into Chat with Mux.
249-
const metadata = workspaceMetadataRef.current.get(MUX_HELP_CHAT_WORKSPACE_ID);
250-
setSelectedWorkspace(
251-
metadata
252-
? toWorkspaceSelection(metadata)
253-
: {
254-
workspaceId: MUX_HELP_CHAT_WORKSPACE_ID,
255-
projectPath: "",
256-
projectName: "Mux",
257-
namedWorkspacePath: "",
258-
}
259-
);
260-
261-
if (!metadata) {
262-
refreshWorkspaceMetadata().catch((error) => {
263-
console.error("Failed to refresh workspace metadata", error);
264-
});
265-
}
266-
}, [refreshWorkspaceMetadata, setSelectedWorkspace]);
267-
268245
// Update window title based on selected workspace
269246
// URL syncing is now handled by RouterContext
270247
useEffect(() => {
@@ -802,9 +779,6 @@ function AppInner() {
802779
: undefined;
803780
openCommandPalette(initialQuery);
804781
}
805-
} else if (matchesKeybind(e, KEYBINDS.OPEN_MUX_CHAT)) {
806-
e.preventDefault();
807-
handleOpenMuxChat();
808782
} else if (matchesKeybind(e, KEYBINDS.TOGGLE_SIDEBAR)) {
809783
e.preventDefault();
810784
setSidebarCollapsed((prev) => !prev);
@@ -831,7 +805,6 @@ function AppInner() {
831805
return () => window.removeEventListener("keydown", handleKeyDown);
832806
}, [
833807
handleNavigateWorkspace,
834-
handleOpenMuxChat,
835808
setSidebarCollapsed,
836809
isCommandPaletteOpen,
837810
closeCommandPalette,

0 commit comments

Comments
 (0)