# 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.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.