# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ## v0.7.0 ### Nouvelle fonctionnalité majeure : Tests pilotés par l'IA - **Onglet Tests** dédié dans l'UI : génère un snippet JS à coller dans n'importe quelle page web ouverte (Chrome, Firefox, Edge, dev local ou distant). - **Session WebSocket** authentifiée par token à usage unique (5 min TTL) — la page connectée transmet ses messages console en temps réel et expose une RPC pour cliquer / évaluer / inspecter. - **Outil agent `browser_test`** disponible pour Studio, avec actions : - `list_clickables` : énumère tous les éléments cliquables visibles avec un index stable - `click` : clic par sélecteur CSS ou par index — retourne le **delta console** émis pendant le clic - `eval` : évalue une expression JS et retourne sa valeur sérialisée - `console` / `summary` : lit le buffer console (200 dernières entrées) - `current_url` : URL et titre courants - `type` : remplit un champ input/textarea (utilise le setter natif pour compatibilité React) - `wait` : pause asynchrone (max 5s) - **Stratégie BMAD** intégrée au prompt système Studio : boucle `summary → list_clickables → click → vérifier console_delta → rapport final ✓/✗/⚠`. - **Multi-sessions** : jusqu'à 16 onglets connectés simultanément ; éviction LRU au-delà. - **Sécurité** : token consommé à la première connexion ; CheckOrigin libre côté snippet (gating par token uniquement) ; CORS API REST inchangé. - **Backend** : `internal/api/browser_test.go` (nouveau, ~480 lignes) + 4 routes (`/api/test/snippet`, `/api/test/sessions`, `/api/test/console/{id}`, `/api/ws/browser-test`). - **Frontend** : `web/src/components/Tests.jsx` (nouveau) + nouvel onglet ⌃4. ## v0.6.0 ### Audit & corrections (sécurité, concurrence, stabilité) - fix(api): empty `resp.Choices[0]` panic in chat engine — bounded check - fix(api): `defer release()` accumulating inside tool-call loop — release immediately after each tool call - fix(api): race in `ConversationStoreMulti.Add` (fire-and-forget save under released lock) — synchronous save under existing lock - fix(workflow): infinite busy-wait in `engine.Execute` when a dependency fails — propagate `StatusFailed`/`StatusSkipped` and short-circuit - fix(workflow): UTF-8-unsafe slicing of plan goal — rune-aware truncate - fix(security): CORS `Access-Control-Allow-Origin: *` — restricted to localhost origins - fix(security): API key disclosure in `/api/providers` — masked as `"***"`; saving handler ignores `"***"` placeholder - fix(security): SSH password disclosure in `/api/terminal/sessions` — masked; update handler preserves stored password if `"***"` is sent - fix(security): sshpass `-p` + `-e` mutually-exclusive flags — use only `-e` with `SSHPASS` env var - fix(security): unbounded chat request body — `MaxBytesReader` 50 MB - fix(security): unbounded image upload — 10 MB cap in `saveImage` - fix(security): font size unbounded — capped at 72 - fix(security): `LSP /auto-install` accepted arbitrary `project_dir` — restricted to user home subtree - fix(api): silent `json.Unmarshal` errors in profile save — propagated - fix(ui): operator-precedence bug in `Shell.jsx` resize check — parenthesized ### Nouvelles fonctionnalités - feat(ai): inject OS name (e.g. `Debian 12`, `Windows 11`, `macOS 14.5`) alongside date in Studio system prompt - feat(agents): default timeout raised to 30 minutes for `crush_run` and `claude_run`; max also 30 min - feat(agents): new optional params `cwd`, `wsl_distro`, `wsl_user` — agents can be launched in a specific directory, and on Windows hosts inside a specific WSL distribution under a specific user - feat(agents): new `claude_run` tool (mirrors `crush_run` for the Claude Code CLI) - feat(terminal): WSL distros listed individually as quick-launch entries in the new-tab menu (Windows hosts only) - feat(studio): system prompt rewritten around the BMAD-METHOD (Analyst/PM/Architect/SM/Dev/QA personas + mandatory `[OBJECTIF]/[CONTEXTE]/[CONTRAINTES]/[LIVRABLE]/[CRITÈRE D'ACCEPTATION]` template for any agent delegation) - feat(studio): "Réflexion avancée" toggle — when enabled, the inactive AI provider produces a preliminary report that is injected as `[RAPPORT PRÉALABLE]` context into the active provider's prompt - feat(studio): "Historique compressé" toggle — collapses past tool calls and keeps only the last visible action per assistant message, with `Tout afficher` to expand ### Bug fix CI - fix(test): `cleanAIResponse` → `CleanAIResponse` in `orchestrator_test.go` (was failing `go vet`) ## v0.4.0 ### Changes since v0.3.5 - fix: token persistence, context windows, CSS tables/bullets/hr, image attachments (12000e5) - feat: terminal sudo blocking, token tracking, mermaid & consumption UI (cb3d357) - fix(shell,config): terminal font size, AI tools, provider keys (0830e64) - chore: update CHANGELOG for v0.3.5 (b43e335) - fix(shell): set default terminal fontSize to 6px (a60435d) - fix(shell): default fontSize 10px and init new tabs immediately (6b0fcfb) - feat(shell): add Ctrl+/- zoom and display all shortcuts in footer (df46b5c) - fix(deps): upgrade @xterm/xterm to 6.1.0-beta.203 for addon compatibility (7240813) - fix(shell): enable allowProposedApi for Unicode11 addon (97bfb80) - fix(ci): add .npmrc with legacy-peer-deps for xterm addon resolution (3104179) - feat(shell): integrate Hyper-like terminal technologies (WebGL, search, unicode11, image) (e21b47a) - fix(shell): restore all missing imports, constants, and utility functions (2e98701) - fix(shell): add missing Monitor import from lucide-react (f9d56de) - fix(shell): restore missing MAX_TABS, TABS_STORAGE_KEY, TERMINAL_BUFFER_KEY constants (0e73408) - fix(shell): add missing useI18n import (3b819be) - fix(shell): remove stray 'impo' typo causing ReferenceError (c607943) - fix(terminal): improve dimensions handling and add system theme for xterm (3312005) - fix(shell): resolve savedTabs undefined ReferenceError in activeTab init (6cc86b7) - fix(terminal): improve dimension calculation and tab init reliability (1885616) - fix(dashboard): show MiMo quota instead of ZAI on dashboard (c8506d4) - feat(ai): add Xiaomi MiMo provider, ZAI as last-resort fallback (68acabd) - fix(terminal): use absolute positioning for content panels (b80562a) - feat(terminal): add Ctrl+Shift+C/V copy/paste shortcuts (c562972) - fix(shell): prevent Enter in AI chat from leaking to terminal (3651f62) - fix(terminal): improve terminal dimensions and fit timing (18e8347) - fix(terminal): detect shell tab visibility via MutationObserver (6596d86) - fix(terminal): init all tabs on load, fix excessive zoom (9fb5aa8) - fix(terminal): improve tab visibility checks and positioning (ab3641d) - fix(ui): adjust global CSS styles (5dac191) - fix(terminal): use display:none instead of visibility for tab hiding (e6da61f) - feat(ui): refactor copy state to Set and add helper functions (a994749) - feat(ui): add recentUnique to deduplicate recent commands in Dashboard (b394ef9) - feat(ui): redesign recent commands display and fix terminal visibility (fca5344) - fix(shell): initialize activeTabRef with activeTab and move useEffect (0a3123e) - fix(config): remove unused import, reorder hooks, and improve variable naming (e6447f2) - fix(studio): add tool results serialization and improve message handling (16c5ed6) - fix(shell): improve tab reference stability and command queueing (e8924be) - fix(shell): add debug logging for tab tracking and WebSocket state (a905f22) - fix(terminal): refactor WebSocket cleanup, buffer management, and disposal (183dd27) - fix(terminal): refactor WS cleanup, improve clear detection, fix sendToTerminal (203f57f) - fix: restore buffer after WebSocket init, fix clear detection, fix streaming chunks (a1046da) - refactor: remove locale panel, improve provider validation and terminal buffer persistence (02ee41c) - bump: v0.3.5 (06810be) - fix: display all quota models, center card content vertically (8db3bd7) - fix: AI terminal init, Shift+Tab nav, code block rendering, command filtering (20237c0) - fix(shell): set default terminal fontSize to 6px (9a218b1) - fix(shell): default fontSize 10px and init new tabs immediately (399b845) - feat(shell): add Ctrl+/- zoom and display all shortcuts in footer (436d5c6) - fix(deps): upgrade @xterm/xterm to 6.1.0-beta.203 for addon compatibility (5a9edc0) - fix(shell): enable allowProposedApi for Unicode11 addon (5bdc7a6) - fix(ci): add .npmrc with legacy-peer-deps for xterm addon resolution (5a0480b) - feat(shell): integrate Hyper-like terminal technologies (WebGL, search, unicode11, image) (80de4dd) - fix(shell): restore all missing imports, constants, and utility functions (de52f4e) - fix(shell): add missing Monitor import from lucide-react (98ff0dd) - fix(shell): restore missing MAX_TABS, TABS_STORAGE_KEY, TERMINAL_BUFFER_KEY constants (9a1ff6e) - fix(shell): add missing useI18n import (034b9ee) - fix(shell): remove stray 'impo' typo causing ReferenceError (c1b1fc6) - fix(terminal): improve dimensions handling and add system theme for xterm (50ca751) - fix(shell): resolve savedTabs undefined ReferenceError in activeTab init (b8aa935) - fix(terminal): improve dimension calculation and tab init reliability (5627ddd) - fix(dashboard): show MiMo quota instead of ZAI on dashboard (d278725) - feat(ai): add Xiaomi MiMo provider, ZAI as last-resort fallback (7d0f807) - fix(terminal): use absolute positioning for content panels (cbf623b) - feat(terminal): add Ctrl+Shift+C/V copy/paste shortcuts (b85ebb8) - fix(shell): prevent Enter in AI chat from leaking to terminal (7cc206d) - fix(terminal): improve terminal dimensions and fit timing (bf8c0fd) - fix(terminal): detect shell tab visibility via MutationObserver (08dc1fd) - fix(terminal): init all tabs on load, fix excessive zoom (13e937a) - fix(terminal): improve tab visibility checks and positioning (3cf701b) - fix(ui): adjust global CSS styles (3a09e0e) - fix(terminal): use display:none instead of visibility for tab hiding (47fa2e0) - feat(ui): refactor copy state to Set and add helper functions (401292e) - feat(ui): add recentUnique to deduplicate recent commands in Dashboard (199a7e4) - feat(ui): redesign recent commands display and fix terminal visibility (c91931f) - fix(shell): initialize activeTabRef with activeTab and move useEffect (cbbb224) - fix(config): remove unused import, reorder hooks, and improve variable naming (8d10d21) - fix(studio): add tool results serialization and improve message handling (e9696ef) - fix(shell): improve tab reference stability and command queueing (1edd4f0) - fix(shell): add debug logging for tab tracking and WebSocket state (92f943c) - fix(terminal): refactor WebSocket cleanup, buffer management, and disposal (1704b19) - fix(terminal): refactor WS cleanup, improve clear detection, fix sendToTerminal (40ec493) - fix: restore buffer after WebSocket init, fix clear detection, fix streaming chunks (233368c) - refactor: remove locale panel, improve provider validation and terminal buffer persistence (00118f0) - chore: update CHANGELOG for v0.3.4 (c39203c) - feat(dashboard): single-view grid with live CPU/RAM/Net graphs, API quota, processes, and sudo indicator (328e9e6) - feat(dashboard): add quota monitoring, process list, and command history (c81ebb4) - refactor(chat): deduplicate streaming code, add multi-conv, and XSS protection (b0865bc) - fix(studio): improve chat context, thinking tags, streaming, and tool results (0d8e1b1) - feat: add Cobra CLI, LSP/MCP registries, workflow engine, and enriched dashboard (485e085) - feat(agent): refactor AI chat with streaming, agent registry, and tool execution (61da803) - feat(onboarding): add minimax api key step and AI-powered editor scan (65df154) - fix(onboarding): require fields before advancing steps (b6147dd) - fix: register missing /api/config/reset and /api/starship/apply-theme routes (275a9a4) - fix(config): per-provider form state to avoid field cross-talk (e92a2f0) - fix(onboarding): auto-save on done step, keyboard nav, error feedback (1f12b8a) - feat(config): add system panel with reset and starship theme, add onboarding wizard (9188231) - chore: update CHANGELOG for v0.3.2 (28e5113) - chore: update CHANGELOG for v0.3.2-beta.1 (51a599f) - chore: update CHANGELOG for v0.3.1 (5b4a70e) ### Downloads | Platform | File | |----------|------| | Linux x86_64 | [muyue-linux-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.4.0/muyue-linux-amd64.tar.gz) | | Linux ARM64 | [muyue-linux-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.4.0/muyue-linux-arm64.tar.gz) | | macOS Intel | [muyue-darwin-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.4.0/muyue-darwin-amd64.tar.gz) | | macOS Apple Silicon | [muyue-darwin-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.4.0/muyue-darwin-arm64.tar.gz) | | Windows x86_64 | [muyue-windows-amd64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.4.0/muyue-windows-amd64.zip) | | Windows ARM64 | [muyue-windows-arm64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.4.0/muyue-windows-arm64.zip) | The binary includes both CLI and Desktop modes. Run `muyue` for TUI, `muyue desktop` for web UI. ### Install **Linux (x86_64)** ```bash curl -sL https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.4.0/muyue-linux-amd64.tar.gz | tar xz chmod +x muyue-linux-amd64 sudo mv muyue-linux-amd64 /usr/local/bin/muyue ``` **macOS (Apple Silicon)** ```bash curl -sL https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.4.0/muyue-darwin-arm64.tar.gz | tar xz chmod +x muyue-darwin-arm64 sudo mv muyue-darwin-arm64 /usr/local/bin/muyue ``` **Windows (x86_64)** ```powershell Invoke-WebRequest -Uri "https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.4.0/muyue-windows-amd64.zip" -OutFile "muyue.zip" Expand-Archive -Path "muyue.zip" -DestinationPath "." Move-Item muyue-windows-amd64.exe C:\Windows\muyue.exe ``` ## v0.3.5 ### Changes since v0.3.5 - fix(shell): set default terminal fontSize to 6px (a60435d) - fix(shell): default fontSize 10px and init new tabs immediately (6b0fcfb) - feat(shell): add Ctrl+/- zoom and display all shortcuts in footer (df46b5c) - fix(deps): upgrade @xterm/xterm to 6.1.0-beta.203 for addon compatibility (7240813) - fix(shell): enable allowProposedApi for Unicode11 addon (97bfb80) - fix(ci): add .npmrc with legacy-peer-deps for xterm addon resolution (3104179) - feat(shell): integrate Hyper-like terminal technologies (WebGL, search, unicode11, image) (e21b47a) - fix(shell): restore all missing imports, constants, and utility functions (2e98701) - fix(shell): add missing Monitor import from lucide-react (f9d56de) - fix(shell): restore missing MAX_TABS, TABS_STORAGE_KEY, TERMINAL_BUFFER_KEY constants (0e73408) - fix(shell): add missing useI18n import (3b819be) - fix(shell): remove stray 'impo' typo causing ReferenceError (c607943) - fix(terminal): improve dimensions handling and add system theme for xterm (3312005) - fix(shell): resolve savedTabs undefined ReferenceError in activeTab init (6cc86b7) - fix(terminal): improve dimension calculation and tab init reliability (1885616) - fix(dashboard): show MiMo quota instead of ZAI on dashboard (c8506d4) - feat(ai): add Xiaomi MiMo provider, ZAI as last-resort fallback (68acabd) - fix(terminal): use absolute positioning for content panels (b80562a) - feat(terminal): add Ctrl+Shift+C/V copy/paste shortcuts (c562972) - fix(shell): prevent Enter in AI chat from leaking to terminal (3651f62) - fix(terminal): improve terminal dimensions and fit timing (18e8347) - fix(terminal): detect shell tab visibility via MutationObserver (6596d86) - fix(terminal): init all tabs on load, fix excessive zoom (9fb5aa8) - fix(terminal): improve tab visibility checks and positioning (ab3641d) - fix(ui): adjust global CSS styles (5dac191) - fix(terminal): use display:none instead of visibility for tab hiding (e6da61f) - feat(ui): refactor copy state to Set and add helper functions (a994749) - feat(ui): add recentUnique to deduplicate recent commands in Dashboard (b394ef9) - feat(ui): redesign recent commands display and fix terminal visibility (fca5344) - fix(shell): initialize activeTabRef with activeTab and move useEffect (0a3123e) - fix(config): remove unused import, reorder hooks, and improve variable naming (e6447f2) - fix(studio): add tool results serialization and improve message handling (16c5ed6) - fix(shell): improve tab reference stability and command queueing (e8924be) - fix(shell): add debug logging for tab tracking and WebSocket state (a905f22) - fix(terminal): refactor WebSocket cleanup, buffer management, and disposal (183dd27) - fix(terminal): refactor WS cleanup, improve clear detection, fix sendToTerminal (203f57f) - fix: restore buffer after WebSocket init, fix clear detection, fix streaming chunks (a1046da) - refactor: remove locale panel, improve provider validation and terminal buffer persistence (02ee41c) - bump: v0.3.5 (06810be) - fix: display all quota models, center card content vertically (8db3bd7) - fix: AI terminal init, Shift+Tab nav, code block rendering, command filtering (20237c0) - chore: update CHANGELOG for v0.3.4 (c39203c) - feat(dashboard): single-view grid with live CPU/RAM/Net graphs, API quota, processes, and sudo indicator (328e9e6) - feat(dashboard): add quota monitoring, process list, and command history (c81ebb4) - refactor(chat): deduplicate streaming code, add multi-conv, and XSS protection (b0865bc) - fix(studio): improve chat context, thinking tags, streaming, and tool results (0d8e1b1) - feat: add Cobra CLI, LSP/MCP registries, workflow engine, and enriched dashboard (485e085) - feat(agent): refactor AI chat with streaming, agent registry, and tool execution (61da803) - feat(onboarding): add minimax api key step and AI-powered editor scan (65df154) - fix(onboarding): require fields before advancing steps (b6147dd) - fix: register missing /api/config/reset and /api/starship/apply-theme routes (275a9a4) - fix(config): per-provider form state to avoid field cross-talk (e92a2f0) - fix(onboarding): auto-save on done step, keyboard nav, error feedback (1f12b8a) - feat(config): add system panel with reset and starship theme, add onboarding wizard (9188231) - chore: update CHANGELOG for v0.3.2 (28e5113) - chore: update CHANGELOG for v0.3.2-beta.1 (51a599f) - chore: update CHANGELOG for v0.3.1 (5b4a70e) ### Downloads | Platform | File | |----------|------| | Linux x86_64 | [muyue-linux-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.5/muyue-linux-amd64.tar.gz) | | Linux ARM64 | [muyue-linux-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.5/muyue-linux-arm64.tar.gz) | | macOS Intel | [muyue-darwin-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.5/muyue-darwin-amd64.tar.gz) | | macOS Apple Silicon | [muyue-darwin-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.5/muyue-darwin-arm64.tar.gz) | | Windows x86_64 | [muyue-windows-amd64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.5/muyue-windows-amd64.zip) | | Windows ARM64 | [muyue-windows-arm64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.5/muyue-windows-arm64.zip) | The binary includes both CLI and Desktop modes. Run `muyue` for TUI, `muyue desktop` for web UI. ### Install **Linux (x86_64)** ```bash curl -sL https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.5/muyue-linux-amd64.tar.gz | tar xz chmod +x muyue-linux-amd64 sudo mv muyue-linux-amd64 /usr/local/bin/muyue ``` **macOS (Apple Silicon)** ```bash curl -sL https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.5/muyue-darwin-arm64.tar.gz | tar xz chmod +x muyue-darwin-arm64 sudo mv muyue-darwin-arm64 /usr/local/bin/muyue ``` **Windows (x86_64)** ```powershell Invoke-WebRequest -Uri "https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.5/muyue-windows-amd64.zip" -OutFile "muyue.zip" Expand-Archive -Path "muyue.zip" -DestinationPath "." Move-Item muyue-windows-amd64.exe C:\Windows\muyue.exe ``` ## v0.3.4 ### Changes since v0.3.3 - fix(ci): replace jq with python3 in release step, add debug output (7ae4017) - feat: AI terminal, Z.AI quota, /model change, formatting fixes, update redirects (8c540eb) - feat(studio): Tab focuses textarea, autocomplete commands (1074b01) - fix(studio): convert newlines to
in AI message rendering (2da0cf9) - fix(config): replace hardcoded model list with free text input (9987a58) - feat(config): providers panel shows only MINIMAX/ZAI with model selector (2827acf) - feat(dashboard): show top 5 most used commands as clickable chips (afb6e77) - fix: tab containers height, dashboard 2-row grid, studio scroll buttons (84be226) - feat(shell): dedicated System Analyst AI, no code execution, analyze system (f9c4cf1) - fix: keep all tabs mounted, switch via CSS display instead of unmount (eda7293) - refactor(config): locale panel with edit/save flow like profile (b55feae) - feat(config): split profile into Personal Info + Preferences sections, centered (54621bd) - feat(studio): improve context compression UI and provider display (6bad294) - fix(config): locale panel show active language/keyboard, add save button (92eb783) - feat(config): dynamic profile panel, generic save, tabs margin fix (8005e97) - fix(dashboard): remove bg graphs, add scrollable lists, show used/total quota (6e76e7d) - feat(chat): add auto-summarization with token tracking UI (e8f6dc4) - feat(dashboard): add background graphs to cards and improve layout (bb03c9f) - feat(dashboard): single-view grid with live CPU/RAM/Net graphs, API quota, processes, and sudo indicator (79d0821) - feat(dashboard): add quota monitoring, process list, and command history (7682717) - refactor(chat): deduplicate streaming code, add multi-conv, and XSS protection (3948a4c) - fix(studio): improve chat context, thinking tags, streaming, and tool results (65804aa) - feat: add Cobra CLI, LSP/MCP registries, workflow engine, and enriched dashboard (2e50366) - feat(agent): refactor AI chat with streaming, agent registry, and tool execution (66b773f) - feat(onboarding): add minimax api key step and AI-powered editor scan (bc5c295) - fix(onboarding): require fields before advancing steps (e19122d) - fix: register missing /api/config/reset and /api/starship/apply-theme routes (8b6a7e8) - fix(config): per-provider form state to avoid field cross-talk (58f8cb0) - fix(onboarding): auto-save on done step, keyboard nav, error feedback (b52fecc) - feat(config): add system panel with reset and starship theme, add onboarding wizard (5bbac49) ### Downloads | Platform | File | |----------|------| | Linux x86_64 | [muyue-linux-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.4/muyue-linux-amd64.tar.gz) | | Linux ARM64 | [muyue-linux-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.4/muyue-linux-arm64.tar.gz) | | macOS Intel | [muyue-darwin-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.4/muyue-darwin-amd64.tar.gz) | | macOS Apple Silicon | [muyue-darwin-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.4/muyue-darwin-arm64.tar.gz) | | Windows x86_64 | [muyue-windows-amd64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.4/muyue-windows-amd64.zip) | | Windows ARM64 | [muyue-windows-arm64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.4/muyue-windows-arm64.zip) | The binary includes both CLI and Desktop modes. Run `muyue` for TUI, `muyue desktop` for web UI. ### Install **Linux (x86_64)** ```bash curl -sL https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.4/muyue-linux-amd64.tar.gz | tar xz chmod +x muyue-linux-amd64 sudo mv muyue-linux-amd64 /usr/local/bin/muyue ``` **macOS (Apple Silicon)** ```bash curl -sL https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.4/muyue-darwin-arm64.tar.gz | tar xz chmod +x muyue-darwin-arm64 sudo mv muyue-darwin-arm64 /usr/local/bin/muyue ``` **Windows (x86_64)** ```powershell Invoke-WebRequest -Uri "https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.4/muyue-windows-amd64.zip" -OutFile "muyue.zip" Expand-Archive -Path "muyue.zip" -DestinationPath "." Move-Item muyue-windows-amd64.exe C:\Windows\muyue.exe ``` ## v0.3.2 ### Changes since v0.3.1 - chore: update CHANGELOG for v0.3.2-beta.1 (51a599f) - fix: correct version from 3.2 to 0.3.2 (83d7a57) - chore: bump version to 3.2 (0fe82f6) - refactor(config): remove Terminal sub-tab from Configuration page (3b6cc38) - fix(terminal): init payload never sent due to ws.onopen being overwritten (93a22d4) - fix(terminal): improve shell resolution with better error handling and ws proxy support (e0e1e73) - feat(studio): parse AI thinking and tool launch messages in terminal panel (0496ca7) - fix(studio): forward AI thinking chunks to frontend instead of dropping them (b407ab8) - feat(studio): add tool execution and hide AI thinking tags (12df184) - fix(terminal): ignore invalid shell config from race condition (8af6d25) - feat(shell): restore AI assistant panel (4fd599a) - fix(terminal): restore terminal input and cursor visibility (bcba593) - refactor(api): split monolithic handlers.go into focused modules (04b0fff) ### Downloads | Platform | File | |----------|------| | Linux x86_64 | [muyue-linux-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.2/muyue-linux-amd64.tar.gz) | | Linux ARM64 | [muyue-linux-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.2/muyue-linux-arm64.tar.gz) | | macOS Intel | [muyue-darwin-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.2/muyue-darwin-amd64.tar.gz) | | macOS Apple Silicon | [muyue-darwin-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.2/muyue-darwin-arm64.tar.gz) | | Windows x86_64 | [muyue-windows-amd64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.2/muyue-windows-amd64.zip) | | Windows ARM64 | [muyue-windows-arm64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.2/muyue-windows-arm64.zip) | The binary includes both CLI and Desktop modes. Run `muyue` for TUI, `muyue desktop` for web UI. ### Install **Linux (x86_64)** ```bash curl -sL https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.2/muyue-linux-amd64.tar.gz | tar xz chmod +x muyue-linux-amd64 sudo mv muyue-linux-amd64 /usr/local/bin/muyue ``` **macOS (Apple Silicon)** ```bash curl -sL https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.2/muyue-darwin-arm64.tar.gz | tar xz chmod +x muyue-darwin-arm64 sudo mv muyue-darwin-arm64 /usr/local/bin/muyue ``` **Windows (x86_64)** ```powershell Invoke-WebRequest -Uri "https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.2/muyue-windows-amd64.zip" -OutFile "muyue.zip" Expand-Archive -Path "muyue.zip" -DestinationPath "." Move-Item muyue-windows-amd64.exe C:\Windows\muyue.exe ``` ## v0.3.2-beta.1 (Beta) ### Commits since v0.3.1 - fix: correct version from 3.2 to 0.3.2 (83d7a57) > This is a **beta** release. Use at your own risk. ## v0.3.1 ### Changes since v0.3.0 - refactor(config): remove Terminal sub-tab from Configuration page (95bd824) - fix(terminal): init payload never sent due to ws.onopen being overwritten (252f178) - fix(terminal): improve shell resolution with better error handling and ws proxy support (7dcf505) - feat(studio): parse AI thinking and tool launch messages in terminal panel (8fb93fa) - fix(studio): forward AI thinking chunks to frontend instead of dropping them (5ec373c) - feat(studio): add tool execution and hide AI thinking tags (1eb5a6d) - fix(terminal): ignore invalid shell config from race condition (cd5ebe0) - feat(shell): restore AI assistant panel (2004c15) - fix(terminal): restore terminal input and cursor visibility (9306152) - refactor(api): split monolithic handlers.go into focused modules (e15a034) ### Downloads | Platform | File | |----------|------| | Linux x86_64 | [muyue-linux-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.1/muyue-linux-amd64.tar.gz) | | Linux ARM64 | [muyue-linux-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.1/muyue-linux-arm64.tar.gz) | | macOS Intel | [muyue-darwin-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.1/muyue-darwin-amd64.tar.gz) | | macOS Apple Silicon | [muyue-darwin-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.1/muyue-darwin-arm64.tar.gz) | | Windows x86_64 | [muyue-windows-amd64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.1/muyue-windows-amd64.zip) | | Windows ARM64 | [muyue-windows-arm64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.1/muyue-windows-arm64.zip) | The binary includes both CLI and Desktop modes. Run `muyue` for TUI, `muyue desktop` for web UI. ### Install **Linux (x86_64)** ```bash curl -sL https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.1/muyue-linux-amd64.tar.gz | tar xz chmod +x muyue-linux-amd64 sudo mv muyue-linux-amd64 /usr/local/bin/muyue ``` **macOS (Apple Silicon)** ```bash curl -sL https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.1/muyue-darwin-arm64.tar.gz | tar xz chmod +x muyue-darwin-arm64 sudo mv muyue-darwin-arm64 /usr/local/bin/muyue ``` **Windows (x86_64)** ```powershell Invoke-WebRequest -Uri "https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.1/muyue-windows-amd64.zip" -OutFile "muyue.zip" Expand-Archive -Path "muyue.zip" -DestinationPath "." Move-Item muyue-windows-amd64.exe C:\Windows\muyue.exe ``` ## v0.3.0 ### Changes since v0.2.1 - fix(terminal): resolve PTY shell exec error, simplify CLI, unify Config tabs, restore Studio CSS (0b22109) - feat: add API key validation flow for AI provider config (7f67473) - feat(studio): replace sidebar layout with unified execution feed styles (040e482) - fix: guard against empty tabs array in closeTab (c8903ef) - refactor: redesign Config as settings window with sidebar panels, remove system overview from Dashboard (f3cb306) - feat: add multi-tab terminal with SSH support, config editing, and dashboard redesign (3cdcb22) - feat(studio): add i18n keys and CSS for redesigned AI chat interface (ee18bbe) - chore: bump version to 0.3.0 (b0b0e1d) - chore: remove dead code (packages, functions, types, constants) (fc79810) - docs: rewrite README and CHANGELOG for desktop app mode (f7222b0) - feat(web): add i18n support with FR/EN locales and keyboard layout awareness (11417d3) - refactor(web): redesign frontend for native web UX (3dc24ae) - refactor: remove TUI, desktop web UI is now the default and only mode (aa0ff19) - refactor: unify into single `muyue` binary with embedded desktop mode (3463605) - fix(ci): add frontend build step before Go vet/test/build (097cf40) - feat: add desktop app with React frontend, API backend, theme system (#2) (88d2a03) - chore: update CHANGELOG for v0.2.1 (1830c18) - feat: complete TUI redesign with cyberpunk theme (#1) (cb8e3d0) ### Downloads | Platform | File | |----------|------| | Linux x86_64 | [muyue-linux-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.0/muyue-linux-amd64.tar.gz) | | Linux ARM64 | [muyue-linux-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.0/muyue-linux-arm64.tar.gz) | | macOS Intel | [muyue-darwin-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.0/muyue-darwin-amd64.tar.gz) | | macOS Apple Silicon | [muyue-darwin-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.0/muyue-darwin-arm64.tar.gz) | | Windows x86_64 | [muyue-windows-amd64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.0/muyue-windows-amd64.zip) | | Windows ARM64 | [muyue-windows-arm64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.0/muyue-windows-arm64.zip) | The binary includes both CLI and Desktop modes. Run `muyue` for TUI, `muyue desktop` for web UI. ### Install **Linux (x86_64)** ```bash curl -sL https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.0/muyue-linux-amd64.tar.gz | tar xz chmod +x muyue-linux-amd64 sudo mv muyue-linux-amd64 /usr/local/bin/muyue ``` **macOS (Apple Silicon)** ```bash curl -sL https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.0/muyue-darwin-arm64.tar.gz | tar xz chmod +x muyue-darwin-arm64 sudo mv muyue-darwin-arm64 /usr/local/bin/muyue ``` **Windows (x86_64)** ```powershell Invoke-WebRequest -Uri "https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.3.0/muyue-windows-amd64.zip" -OutFile "muyue.zip" Expand-Archive -Path "muyue.zip" -DestinationPath "." Move-Item muyue-windows-amd64.exe C:\Windows\muyue.exe ``` ## [Unreleased] ### Security - **Command injection**: Removed non-functional AI sidebar from Shell.jsx that interpolated user input directly into a shell command (`echo "AI: ${text}"`). The panel was a stub with no real AI integration. - **WebSocket origin validation**: Terminal WebSocket handler now validates the `Origin` header matches the server's own host. - **DELETE method guard**: Terminal sessions DELETE endpoint now rejects non-DELETE methods. ### Fixed - **Message ID collisions**: `generateMsgID()` now appends nanosecond suffix to prevent collisions under rapid creation. - **Legacy dir migration**: Config migration from `~/.muyue` to XDG path now logs errors instead of silently failing. - **MCP JSON parsing**: `json.Unmarshal` errors in MCP config loading are now handled instead of ignored. - **API header merging**: `client.js` `request()` now correctly merges caller headers with defaults (was overwriting `Content-Type`). - **Variable shadowing**: `t` translation function shadowed by `.filter(t => ...)` in Config.jsx and App.jsx — renamed to `tool`. ### Changed - **Real SSE streaming**: Chat endpoint now streams AI responses via SSE (`data: {"content":"..."}` chunks) instead of fake 8-rune chunking. Frontend renders responses progressively as they arrive. - **Progressive rendering**: Studio.jsx now uses `StreamingItem` component to display partial AI output during streaming, with cursor animation. - **Theme from config**: App.jsx loads theme from user profile preferences on startup (was hardcoded to `cyberpunk-red`). - **Handlers split**: Monolithic `handlers.go` split into 6 focused files: `handlers_common.go`, `handlers_info.go`, `handlers_tools.go`, `handlers_config.go`, `handlers_chat.go`, `handlers_terminal.go`. - **Dynamic version**: Config `Version` field now uses `version.Version` constant instead of hardcoded `"0.1.0"`. - **Path construction**: `filepath.Join` used consistently in installer, MCP, scanner, and profiler for cross-platform safety. - **CI Go version**: All 3 CI workflows updated from `go-version: '1.24.3'` to `'1.24'` to match `go.mod`. - **Dead code removed**: Unused `addNotif` function in Dashboard.jsx, unused `layout` destructuring, dead `tools`/`updates`/`onRescan` props, dead AI sidebar in Shell.jsx, associated CSS and i18n keys. ### Added - **SendStream tests**: 3 new tests for the SSE streaming method (chunk parsing, history accumulation, API error handling) using `httptest` server. - **Desktop mode**: React 19 web UI served locally, auto-opens in browser. Frontend embedded in Go binary via `go:embed`. - **API backend**: 15 REST endpoints (`/api/info`, `/api/system`, `/api/tools`, `/api/config`, `/api/providers`, `/api/skills`, `/api/lsp`, `/api/mcp`, `/api/updates`, `/api/scan`, `/api/install`, `/api/terminal`, `/api/mcp/configure`, `/api/preferences`). - **i18n**: Full FR/EN translation system with keyboard layout awareness (AZERTY, QWERTY, QWERTZ). Preferences synced to backend. - **Themes**: 4 built-in themes (Cyberpunk Red, Cyberpunk Pink, Midnight Blue, Matrix Green) with 30+ CSS custom properties applied at runtime. - **Desktop flags**: `--port=PORT` to specify port, `--no-open` to skip browser auto-open. - **SPA routing**: Frontend handles client-side routing via catch-all fallback. - **CI**: Frontend build step (`npm ci && npm run build`) added to all 3 CI pipelines. ### Changed - **Default mode**: `muyue` now launches the desktop web app instead of the TUI. The TUI has been removed entirely. - **Single binary**: `cmd/muyue-desktop` merged into `cmd/muyue`. Only one binary needed. - **Frontend**: Moved from `cmd/muyue-desktop/frontend/` to `web/` and embedded via `web/embed.go`. - **Go module**: Dependencies cleaned up — removed indirect TUI-related packages. - **Makefile**: `build` target now runs `frontend` (npm build) automatically. Added `dev-desktop` target for Vite dev server. ### Removed - **TUI**: All `internal/tui/` code removed (model, views, handlers, animations, terminal, styles). - **`cmd/muyue-desktop/`**: Separate desktop binary removed; merged into main binary. ## v0.2.1 ### Downloads | Platform | File | |----------|------| | Linux x86_64 | [muyue-linux-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.2.1/muyue-linux-amd64.tar.gz) | | Linux ARM64 | [muyue-linux-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.2.1/muyue-linux-arm64.tar.gz) | | macOS Intel | [muyue-darwin-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.2.1/muyue-darwin-amd64.tar.gz) | | macOS Apple Silicon | [muyue-darwin-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.2.1/muyue-darwin-arm64.tar.gz) | | Windows x86_64 | [muyue-windows-amd64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.2.1/muyue-windows-amd64.zip) | | Windows ARM64 | [muyue-windows-arm64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.2.1/muyue-windows-arm64.zip) | ### Changes since v0.2.0 - feat: complete TUI redesign with cyberpunk theme (#1) (cb8e3d0) - chore: bump version to 0.2.1, update README for TUI redesign (22fb282) ### Install **Linux (x86_64)** ```bash curl -sL https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.2.1/muyue-linux-amd64.tar.gz | tar xz chmod +x muyue-linux-amd64 sudo mv muyue-linux-amd64 /usr/local/bin/muyue ``` **macOS (Apple Silicon)** ```bash curl -sL https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.2.1/muyue-darwin-arm64.tar.gz | tar xz chmod +x muyue-darwin-arm64 sudo mv muyue-darwin-arm64 /usr/local/bin/muyue ``` **Windows (x86_64)** ```powershell Invoke-WebRequest -Uri "https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.2.1/muyue-windows-amd64.zip" -OutFile "muyue.zip" Expand-Archive -Path "muyue.zip" -DestinationPath "." Move-Item muyue-windows-amd64.exe C:\Windows\muyue.exe ``` ## v0.2.0 ### Downloads | Platform | File | |----------|------| | Linux x86_64 | [muyue-linux-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.2.0/muyue-linux-amd64.tar.gz) | | Linux ARM64 | [muyue-linux-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.2.0/muyue-linux-arm64.tar.gz) | | macOS Intel | [muyue-darwin-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.2.0/muyue-darwin-amd64.tar.gz) | | macOS Apple Silicon | [muyue-darwin-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.2.0/muyue-darwin-arm64.tar.gz) | | Windows x86_64 | [muyue-windows-amd64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.2.0/muyue-windows-amd64.zip) | | Windows ARM64 | [muyue-windows-arm64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.2.0/muyue-windows-arm64.zip) | ### Changes since start - refactor: redesign TUI with 4 tabs, red/rose theme, split layouts (035e923) - feat: GitFlow workflow with beta/stable CI pipelines (bbdac6c) - feat: security hardening, tests, doctor command, CI update, CHANGELOG (3494f6b) - refactor: modularize TUI, improve error handling, add CI caching and tests (4469122) - fix: remove tab switching, filter AI thinking from responses (5a33dfc) - fix: enable text selection, dashboard multi-column layout (82b2816) - feat: Ctrl+T tab switcher, minimal header, integrated terminal (2d6fc64) - feat: Ctrl+M tab switcher overlay menu (bb3b303) - fix: docker version check, uv PATH, install progress bar (e6fdec4) - feat: smart setup wizard - sort choices by system detection (1be4fc0) - fix: use Alt+1-5 for tab navigation to free number keys for input (825b429) - ci: add install instructions for all platforms in release body (ac35ff2) - ci: add build + release steps with push-only conditions (bcb9aa0) - ci: restore exact working ci.yml from e58e00d for testing (0a91cef) - fix: rename workflow back to CI (slash in name breaks Gitea 1.25) (461122a) - ci: trigger workflow run (ea59c2c) - fix: remove workflow_dispatch + add push-only conditions on release steps (9cd583f) - ci: single job - build + vet + release latest in one pass (92275be) - ci: merge CI and Release into single workflow (f2c0996) - fix: release workflow - delete old release before creating new one (5eb237f) - feat: redesign TUI + Ctrl+C quit confirm + version logic + sudo handling (e3cd618) - feat: add mouse support + install pnpm, uv, docker, gh (e58e00d) - fix: use GITEATOKEN secret name (no underscores in Gitea 1.25) (8e3f8b8) - fix: make release delete step resilient + check GITEA_TOKEN (69ca5c6) - fix: remove redundant newline in profiler.go (go vet) (2d421fe) - fix: export PATH in every step for Gitea runner compatibility (3f8e01f) - ci: restore actions/checkout + simplify workflows (4db69e4) - fix: add missing cmd/muyue/main.go and fix .gitignore (f650988) - ci: fix Gitea Actions - native checkout + auto-release on push (78c7239) - ci: migrate workflows to Gitea Actions with self-hosted runner (811a9aa) ### Install **Linux (x86_64)** ```bash curl -sL https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.2.0/muyue-linux-amd64.tar.gz | tar xz chmod +x muyue-linux-amd64 sudo mv muyue-linux-amd64 /usr/local/bin/muyue ``` **macOS (Apple Silicon)** ```bash curl -sL https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.2.0/muyue-darwin-arm64.tar.gz | tar xz chmod +x muyue-darwin-arm64 sudo mv muyue-darwin-arm64 /usr/local/bin/muyue ``` **Windows (x86_64)** ```powershell Invoke-WebRequest -Uri "https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.2.0/muyue-windows-amd64.zip" -OutFile "muyue.zip" Expand-Archive -Path "muyue.zip" -DestinationPath "." Move-Item muyue-windows-amd64.exe C:\Windows\muyue.exe ``` ## [0.2.0] - 2026-04-20 ### Added - **Security**: AES-256-GCM encryption for API keys stored in config (`internal/secret`). Per-machine random key at `~/.muyue_key` with 0600 permissions. - **Security**: Dangerous command detection in integrated terminal (rm -rf, mkfs, dd, fork bombs, shutdown/reboot, redirects to system dirs). - **Security**: MCP config files now written with 0600 permissions, directories with 0700. - **Command**: `muyue doctor` — checks config, API key, tools, LSP/MCP servers, and skills installation. - **Config**: XDG-compliant config directory via `os.UserConfigDir()` with automatic migration from legacy `~/.muyue`. - **Performance**: Scanner results cached with 5-minute TTL and `InvalidateCache()` for forced refresh. - **Performance**: Shared HTTP client for orchestrator and updater (10s timeout, connection pooling). - **Tests**: 8 test files covering config, workflow, skills, orchestrator, version, platform, scanner, and secret packages. - **CI**: Updated to use `actions/setup-go@v5` instead of manual Go download. - **Makefile**: Added `test-short` (with `-short -timeout 60s`) and `vet` targets. ### Changed - **Architecture**: MCP config generation deduplicated — shared `writeMCPConfig()` with `mcpEntry` type replaces two near-identical functions. - **Architecture**: Skills YAML frontmatter parser now uses `gopkg.in/yaml.v3` instead of manual line-by-line parsing. - **Concurrency**: Orchestrator history protected by `sync.Mutex` to prevent races from tea.Cmd goroutines. - **TUI**: `cleanup(m Model)` now called on all quit paths (confirm, ctrl+c force, ctrl+c in quit overlay) to stop daemon, preview server, and proxy agents. - **README**: Complete rewrite documenting all CLI commands, LSP/MCP/Skills management, security, and XDG paths. ## [0.1.0] - 2026-04-18 ### Added - Initial release with Bubble Tea TUI, AI chat orchestration, system scanning, tool installation, LSP/MCP management, skills system, and multi-platform CI/release pipeline.