Break down the 627-line handlers.go into specialized modules: - handlers_chat.go: chat and streaming endpoints - handlers_config.go: configuration endpoints - handlers_common.go: shared utilities - handlers_info.go: info and status endpoints - handlers_terminal.go: terminal/shell endpoints - handlers_tools.go: tool-related endpoints Also includes config improvements, orchestrator enhancements, and web component updates. 💘 Generated with Crush Assisted-by: MiniMax-M2.7 via Crush <crush@charm.land>
15 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
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
muyuebinary 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 |
| Linux ARM64 | muyue-linux-arm64.tar.gz |
| macOS Intel | muyue-darwin-amd64.tar.gz |
| macOS Apple Silicon | muyue-darwin-arm64.tar.gz |
| Windows x86_64 | muyue-windows-amd64.zip |
| Windows ARM64 | 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)
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)
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)
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
Originheader 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
~/.muyueto XDG path now logs errors instead of silently failing. - MCP JSON parsing:
json.Unmarshalerrors in MCP config loading are now handled instead of ignored. - API header merging:
client.jsrequest()now correctly merges caller headers with defaults (was overwritingContent-Type). - Variable shadowing:
ttranslation function shadowed by.filter(t => ...)in Config.jsx and App.jsx — renamed totool.
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
StreamingItemcomponent 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.gosplit 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
Versionfield now usesversion.Versionconstant instead of hardcoded"0.1.0". - Path construction:
filepath.Joinused 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 matchgo.mod. - Dead code removed: Unused
addNotiffunction in Dashboard.jsx, unusedlayoutdestructuring, deadtools/updates/onRescanprops, 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
httptestserver. -
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=PORTto specify port,--no-opento 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:
muyuenow launches the desktop web app instead of the TUI. The TUI has been removed entirely. - Single binary:
cmd/muyue-desktopmerged intocmd/muyue. Only one binary needed. - Frontend: Moved from
cmd/muyue-desktop/frontend/toweb/and embedded viaweb/embed.go. - Go module: Dependencies cleaned up — removed indirect TUI-related packages.
- Makefile:
buildtarget now runsfrontend(npm build) automatically. Addeddev-desktoptarget 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 |
| Linux ARM64 | muyue-linux-arm64.tar.gz |
| macOS Intel | muyue-darwin-amd64.tar.gz |
| macOS Apple Silicon | muyue-darwin-arm64.tar.gz |
| Windows x86_64 | muyue-windows-amd64.zip |
| Windows ARM64 | 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)
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)
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)
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 |
| Linux ARM64 | muyue-linux-arm64.tar.gz |
| macOS Intel | muyue-darwin-amd64.tar.gz |
| macOS Apple Silicon | muyue-darwin-arm64.tar.gz |
| Windows x86_64 | muyue-windows-amd64.zip |
| Windows ARM64 | 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
e58e00dfor 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)
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)
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)
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_keywith 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@v5instead of manual Go download. - Makefile: Added
test-short(with-short -timeout 60s) andvettargets.
Changed
- Architecture: MCP config generation deduplicated — shared
writeMCPConfig()withmcpEntrytype replaces two near-identical functions. - Architecture: Skills YAML frontmatter parser now uses
gopkg.in/yaml.v3instead of manual line-by-line parsing. - Concurrency: Orchestrator history protected by
sync.Mutexto 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.