Add missing English translations and full cyberpunk-themed CSS for the
new Studio tab: central AI chat with context panels (plans, agents,
activity), streaming cursor, plan detail expansion, and collapsible
sidebar.
Generated with Crush
Assisted-by: GLM-5-Turbo via Crush <crush@charm.land>
feat(shell): real terminal with xterm.js + PTY over WebSocket
Replace fake shell input with a full PTY-backed terminal using xterm.js.
Apps like btop, vim, htop now work. AI chat panel is always visible.
Backend:
- Add WebSocket handler /api/ws/terminal with creack/pty
- Allocate real pseudo-terminal with TERM=xterm-256color
- Bidirectional I/O + dynamic resize via pty.Setsize
- Skip JSON headers on /api/ws/* paths for WebSocket upgrade
Frontend:
- Integrate xterm.js with FitAddon and WebLinksAddon
- Cyberpunk color theme matching app design
- ResizeObserver for automatic terminal resizing
- AI assistant panel always visible (340px, no toggle)
- Connection status indicator (green/red dot)
Dependencies:
- Go: github.com/gorilla/websocket, github.com/creack/pty/v2
- npm: @xterm/xterm, @xterm/addon-fit, @xterm/addon-web-links
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
Update README to reflect TUI removal and new React desktop UI with
API backend, i18n, themes, and keyboard layout support. Fix duplicate
v0.2.1 entries in CHANGELOG and add [Unreleased] section for recent
desktop/i18n/theme changes.
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
Add full internationalization system with React context, French/English
translations, and AZERTY/QWERTY keyboard layout support. Dashboard now
uses a tabbed layout (Tools, Notifications, Workflows). Config page exposes
language and keyboard preferences persisted via new /api/preferences endpoint.
💕 Generated with Crush
Assisted-by: GLM-5-Turbo via Crush <crush@charm.land>
- Merge muyue + muyue-desktop into one binary (13MB)
- `muyue` starts TUI, `muyue desktop` launches web UI in browser
- Move frontend from cmd/muyue-desktop/frontend/ to web/ (standard Go layout)
- Add web/embed.go with //go:embed all:dist for frontend assets
- Add internal/desktop/ package (server, browser open, SPA routing, signals)
- Split internal/api/api.go into server.go + handlers.go
- Add internal/desktop/desktop.go with SPA fallback and --port/--no-open flags
- Clean package.json: remove unused @xterm/xterm, switch to ESM
- Fix vite.config.js proxy to use port 8095 for dev mode
- Add Makefile targets: frontend, desktop, dev-desktop
- Update all CI workflows: single binary build, web/ paths
- Remove cmd/muyue-desktop/ entirely
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
All three CI workflows now build the React frontend (npm ci && npm run
build) before any Go steps, so the go:embed directive in
cmd/muyue-desktop/main.go finds the dist/ directory.
- ci-develop.yml: already rewritten, included in this commit
- ci-main.yml: add Node 22 setup, cache, frontend build, desktop binary
builds for all platforms, updated changelog download table
- ci-pr.yml: add Node 22 setup, cache, frontend build, desktop binary
build check
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
New desktop application that launches a local HTTP server with embedded
React frontend. Opens in the user's browser automatically.
Architecture:
- internal/api/: REST API exposing all internal/ packages to frontend
- cmd/muyue-desktop/: entry point, serves embedded frontend + API
- cmd/muyue-desktop/frontend/: React + Vite SPA
Frontend features:
- 4 tabs: Dashboard, Studio, Shell, Config
- Cyberpunk red theme with CSS custom properties
- Theme system: 4 built-in themes (Cyberpunk Red, Pink, Midnight Blue, Matrix Green)
- Terminal with command execution via API
- Chat interface with sidebar (agents, workflows, commands)
- Live clock, status indicators, update badges
- Glitch/scanline/fade animations between tabs
- xterm.js included for future full terminal integration
Backend API endpoints:
- GET /api/info, /api/system, /api/tools, /api/config
- GET /api/providers, /api/skills, /api/lsp, /api/mcp, /api/updates
- POST /api/scan, /api/install, /api/terminal, /api/mcp/configure
Build: cd cmd/muyue-desktop/frontend && npm run build && go build ./cmd/muyue-desktop/
Binary: ~11MB single binary with embedded frontend
Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
Co-authored-by: Augustin <muyue@legion-muyue.fr>
Reviewed-on: #2
- Document 4-tab layout (Dashboard, Studio, Shell, Config)
- Add keyboard shortcuts table for new tabs
- Update version references from 0.2.0 to 0.2.1
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
- Add develop branch for integration
- Replace single ci.yml with 3 workflows: ci-pr (PR checks), ci-develop (beta releases), ci-main (stable releases)
- Add prerelease support in version.go (ldflags injection)
- Add tests for prerelease version formatting
- Document full GitFlow process, versioning, and contributing guide in README
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
Split monolithic app.go into focused modules (dashboard, chat, workflow,
config, agents, terminal, commands, handlers). Add proper error handling
for installer commands, proxy pipes, and MCP config parsing. Fix daemon
channel buffer, cap orchestrator history, compile think regex once, and
set HTTP timeouts on preview server. Improve CI with Go module caching,
dependency download step, and test stage with race detection.
😘 Generated with Crush
Assisted-by: GLM-5-Turbo via Crush <crush@charm.land>
- Remove Tab/Shift+Tab for tab switching (use only Ctrl+T)
- Tab key now inserts tab character in chat/terminal input
- Filter <think...> blocks from AI responses (MiniMax etc.)
- Filter << >> reasoning blocks from AI responses
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
- Remove WithMouseCellMotion to allow text selection in terminal
- Dashboard now uses 2-column layout (left: system/tools, right: actions/status)
- More compact dashboard with better space usage
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
- Fix Ctrl+M → Ctrl+T (Ctrl+M is Enter in terminals)
- Simplify header to single line: muyue v0.2.0 · Dashboard
- Add Terminal tab with shell command execution
- Run commands, cd, clear, ctrl+c to kill process
- Shows CWD and command history
- 6 tabs now: Dashboard, Chat, Workflow, Terminal, Agents, Config
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
Replace Alt+1-5 with Ctrl+M that opens a centered overlay showing
all tabs with descriptions. Navigate with arrows/j/k, select with
enter or 1-5, cancel with esc.
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
- Fix Docker latest version: use moby/moby instead of docker/compose
- Fix uv install: add ~/.local/bin to PATH in shell rc after install
- Add progress bar during tool installation in dashboard
- Show spinner + per-tool progress with X/Y counter
- Disable install key while installation is running
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
- Editors sorted by install status + platform relevance
- Languages sorted by detected runtimes/tools on system
- AI providers sorted by platform + local ollama detection
- Added Cursor, Zed editors; Dart/Flutter, Zig languages
- Added Ollama and OpenAI as provider options
- Installed tools show "(installed)" label in editor list
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
Gitea 1.25.2 does not support workflow_dispatch, which silently
prevented the workflow from being parsed. Also added if conditions
on release steps so they only run on push to main, not on PRs.
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
Simplify CI: one job does build, vet, cross-compile, then replaces
the "latest" release every push to main. No more separate jobs.
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
Gitea Actions wasn't running the separate release.yml. Now both build
and release are in ci.yml as two jobs: build then release (release only
on push to main, not on PRs).
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
Remove the skip-if-tag-exists check. Instead, delete old release+tag
for the version before creating a fresh one (like before but per-version).
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
- Replace 'q' quit with Ctrl+C confirmation dialog (Yes/No overlay)
Second Ctrl+C within 2s force quits
- Redesign TUI with Charm bubbles components: spinner, progress bar,
help bar, key bindings, better color palette, rounded borders
- Add Shift+Tab to cycle tabs backward
- Fix version: bump to 0.2.0, release workflow checks existing tags
before publishing (no more overwriting releases)
- Handle sudo: CLI auto-relaunches with sudo/pkexec for tools that
need elevated privileges, TUI shows clear error message
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
- Skip delete step gracefully if no releases exist
- Check GITEA_TOKEN is set before attempting API calls
- Add clear error message if secret is missing
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
GITEA_ENV/GITHUB_ENV doesn't take effect in the same step with
act_runner. Added explicit 'export PATH=/usr/local/go/bin:$PATH'
in every step that uses go.
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
- Use actions/checkout@v4 (works with Gitea runner)
- Simplified CI: build + vet
- Release: auto on push to main, creates/updates "latest" release
- Cleaned up archive step
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
The .gitignore pattern 'muyue' was matching the cmd/muyue/ directory,
preventing main.go from being tracked. Changed to '/muyue' to only
match the binary at repo root.
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
- Replaced actions/checkout with native git fetch (fixes directory not found)
- Release workflow now triggers on every push to main (no tags needed)
- Auto-creates/updates "latest" release with 6 cross-compiled binaries
- Includes checksums, install instructions, and recent commit log
- Requires GITEA_TOKEN secret in repo settings
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>
Replaced GitHub Actions with Gitea-compatible workflows:
- CI: build + test + vet on ubuntu-latest (self-hosted runner)
- Release: cross-compile 6 binaries (linux/darwin/windows x amd64/arm64)
with Gitea API release creation and asset uploads
- Removed .github/workflows in favor of .gitea/workflows
Requires Gitea secrets: GITEA_TOKEN, GITEA_SERVER, GITEA_REPO
💘 Generated with Crush
Assisted-by: GLM-5.1 via Crush <crush@charm.land>