Files
MuyueWorkspace/CHANGELOG.md
2026-04-27 10:57:30 +00:00

859 lines
51 KiB
Markdown

# 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.2
### Changes since v0.7.0
- feat(studio): force advanced reflection during browser-test sessions (v0.7.2) (a7d4b31)
- fix(terminal/windows): fallback to pipes when PTY unsupported (v0.7.1) (fc7a5b9)
### Downloads
| Platform | File |
|----------|------|
| Linux x86_64 | [muyue-linux-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.7.2/muyue-linux-amd64.tar.gz) |
| Linux ARM64 | [muyue-linux-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.7.2/muyue-linux-arm64.tar.gz) |
| macOS Intel | [muyue-darwin-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.7.2/muyue-darwin-amd64.tar.gz) |
| macOS Apple Silicon | [muyue-darwin-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.7.2/muyue-darwin-arm64.tar.gz) |
| Windows x86_64 | [muyue-windows-amd64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.7.2/muyue-windows-amd64.zip) |
| Windows ARM64 | [muyue-windows-arm64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.7.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.7.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.7.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.7.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.7.2
### Amélioration
- **feat(studio): réflexion avancée forcée automatiquement pendant les tests** — quand au moins une session `browser_test` est connectée, chaque message à Studio active automatiquement la réflexion avancée (un second modèle, si configuré, produit un rapport préalable injecté dans le prompt actif). Le toggle UI est ignoré tant qu'une session de test est active. Justification : pendant un test piloté par l'IA, avoir une analyse complémentaire d'un autre modèle améliore matériellement la qualité des décisions de clic et la couverture du rapport final.
- Si aucun second provider n'est configuré, le comportement reste silencieux (fallback chat normal — pas d'erreur visible côté utilisateur).
- Hint UI ajouté dans l'onglet Tests pour expliquer le comportement.
## v0.7.1
### Fix
- **fix(terminal/windows): "unsupported" / connection closed** — `creack/pty` n'a pas de support Windows natif et `pty.Start()` retourne immédiatement une erreur ("operating system not supported"), fermant le WebSocket avant même la bannière. L'utilisateur voyait le menu des terminaux peuplé (détection OK : `wsl --list --quiet` fonctionne) mais chaque clic se soldait par "unsupported" ou une connexion fermée.
- Introduction de l'abstraction `termSession` (`internal/api/terminal_session.go`) avec deux implémentations sélectionnées au runtime :
- **`ptySession`** (Linux / macOS / BSDs) : conserve le comportement existant (TTY complet via `creack/pty`, resize, apps interactives type vim/top).
- **`pipeSession`** (Windows) : pipes natifs `stdin` + `stdout` + `stderr` mergés, lus en goroutines, forwardés au WebSocket. Suffisant pour `wsl.exe`, `pwsh`, `cmd` en mode ligne — la plupart des cas d'usage (lancer une commande, voir la sortie, taper la suivante). Resize est un no-op (pas de SIGWINCH sans TTY) ; les TUIs en plein écran ne fonctionnent pas dans ce mode.
- Refactor minimal de `handleTerminalWS` : utilise `startTermSession(cmd)` au lieu de `pty.Start(cmd)` direct ; même chemin code pour les deux OS.
## v0.7.0
### Changes since v0.4.0
- fix(ci): rename browser_test.go → browsertest.go (6d2f174)
- feat: AI-driven browser tests — Tests tab + browser_test agent tool (c820d55)
- release: v0.6.0 — security audit fixes + 7 new features (6a7b4d8)
- chore: bump version to 0.5.0 (2a6647b)
- feat: agent concurrency, conversation summaries, AI tools config, UI polish (3740454)
- feat: AI task API, token-based context windows, SSH password auth, sudo bypass detection (d98110c)
- feat: agent concurrency, conversation summaries, AI tools config, UI polish (d2bb42b)
- feat: AI task API, token-based context windows, SSH password auth, sudo bypass detection (e8a289c)
### Downloads
| Platform | File |
|----------|------|
| Linux x86_64 | [muyue-linux-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.7.0/muyue-linux-amd64.tar.gz) |
| Linux ARM64 | [muyue-linux-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.7.0/muyue-linux-arm64.tar.gz) |
| macOS Intel | [muyue-darwin-amd64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.7.0/muyue-darwin-amd64.tar.gz) |
| macOS Apple Silicon | [muyue-darwin-arm64.tar.gz](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.7.0/muyue-darwin-arm64.tar.gz) |
| Windows x86_64 | [muyue-windows-amd64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.7.0/muyue-windows-amd64.zip) |
| Windows ARM64 | [muyue-windows-arm64.zip](https://gitea.legion-muyue.fr/Muyue/MuyueWorkspace/releases/download/v0.7.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.7.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.7.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.7.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.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 <br/> 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.