Files
MuyueWorkspace/CHANGELOG.md
Muyue a3487392c0
All checks were successful
PR Check / check (pull_request) Successful in 1m3s
fix(windows/conpty): pass HPCON value, not &hPC (v0.7.8)
User reported regression introduced in v0.7.6: PowerShell / cmd open
in a separate external console window instead of attaching to the
xterm.js tab (v0.7.5 worked).

Root cause: the ConPTY wiring used
  attrList.Update(PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE,
                  unsafe.Pointer(&hPC),    // ← wrong
                  unsafe.Sizeof(hPC))

The PSEUDOCONSOLE attribute is a Win32 API quirk: lpValue must be
the HPCON *value* (cast to PVOID), not a pointer to the local
variable holding the handle. With &hPC the kernel reads garbage,
silently drops the attribute, and CreateProcessW spawns the child
with a fresh console — hence the external window.

Fix is one line:
  unsafe.Pointer(uintptr(hPC))

Confirmed against Microsoft's EchoCon sample and Go libraries that
work in production (UserExistsError/conpty, aymanbagabas/go-pty).

- internal/version/version.go: 0.7.7 → 0.7.8
- CHANGELOG.md: v0.7.8 entry with the diagnostic write-up
2026-04-27 14:39:26 +02:00

59 KiB
Raw Blame History

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

v0.7.8

Fix régression v0.7.6 : terminaux ouverts en fenêtre externe

Symptôme rapporté : depuis v0.7.6, cliquer sur PowerShell / cmd dans l'onglet Terminal ouvre une fenêtre console séparée au lieu de s'afficher dans le tab xterm.js (régression — v0.7.5 fonctionnait).

Cause : le binding ConPTY introduit en v0.7.6 passait &hPC (pointeur vers la variable Go locale) à UpdateProcThreadAttribute(PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE, …). Or cet attribut est un quirk de l'API Win32 : lpValue doit être la valeur du handle (cast en PVOID), pas un pointeur vers la variable. Avec &hPC, le kernel lisait des octets aléatoires, l'attribut PSEUDOCONSOLE était silencieusement ignoré, et CreateProcessW créait une nouvelle console pour l'enfant — d'où la fenêtre externe.

Fix (1 ligne) :

// Avant
unsafe.Pointer(&hPC)

// Après
unsafe.Pointer(uintptr(hPC))  // le HPCON value comme PVOID

Référence : Microsoft EchoCon sample + bibliothèques Go ConPTY existantes (UserExistsError/conpty, aymanbagabas/go-pty) utilisent toutes la valeur du handle directement.

Conséquence : terminaux PowerShell / cmd / WSL s'ouvrent à nouveau dans le tab xterm.js avec TTY complet (ANSI, prompt couleur, vim, etc.).

v0.7.7

Fix : install Windows échoue silencieusement quand une version précédente tourne

Symptôme rapporté en mettant à jour de v0.7.5 → v0.7.6 : Expand-Archive ... -Force semble réussir mais le .exe n'est en réalité pas écrasé (Windows refuse de remplacer un fichier verrouillé), donc après l'install, muyue lance toujours l'ancienne version. Aucun message d'erreur visible — d'où le côté traître.

Fix : ajout d'une 1ʳᵉ ligne au snippet d'install qui tue toute instance Muyue déjà lancée :

Get-Process muyue, muyue-windows-amd64 -ErrorAction SilentlyContinue | Stop-Process -Force; Start-Sleep -Milliseconds 500

-ErrorAction SilentlyContinue rend l'étape idempotente (pas d'erreur si rien ne tourne, cas d'install propre). Le Start-Sleep 500ms laisse Windows libérer le file handle. Le snippet officiel passe à 6 lignes ; une note explicative est ajoutée dans la section Install du changelog généré.

v0.7.6

Trois fixes Windows + une amélioration agent

Métriques dashboard à 0 sur Windows

Symptôme : CPU / RAM / Réseau toujours à 0 dans le panneau Dashboard sous Windows. Cause : handleSystemMetrics lisait exclusivement /proc/stat, /proc/meminfo, /proc/net/dev — fichiers absents sur Windows, donc os.ReadFile échouait silencieusement et la struct restait à zéro.

Split en fichiers _unix.go / _windows.go :

  • metrics_unix.go (!windows) : reprend tel quel le code /proc/... existant.
  • metrics_windows.go : appelle kernel32!GetSystemTimes (CPU, ratio idle/total entre deux samples) et kernel32!GlobalMemoryStatusEx (RAM totale + dispo). Pas de spawn PowerShell, ~50 µs par appel. Réseau à zéro pour l'instant — MIB_IF_ROW2 est trop sensible aux versions de Windows pour faire ça à la main proprement (TODO à part).
  • handleSystemMetrics réduit à un appel à collectSystemMetrics().

Terminal écran noir sur Windows

Symptôme : sous Windows native, le tab terminal ouvre la connexion mais l'écran reste noir, aucune sortie. Cause : creack/pty/v2 retourne "operating system not supported" → fallback aux pipes. Pipes ne portent pas les signaux TTY, donc cmd.exe / pwsh / wsl.exe détectent l'absence de TTY et passent en mode silencieux ou attendent indéfiniment.

Implémentation ConPTY native via kernel32!CreatePseudoConsole (internal/api/terminal_conpty_windows.go) :

  • Probe runtime canUseConPTY() (cache la disponibilité — Windows 10 1809+ requis).
  • Crée un pseudo-console + 2 pipes anonymes, les passe au child via STARTUPINFOEX + PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE (utilise windows.NewProcThreadAttributeList).
  • CreateProcessW lance le shell avec le PC attaché → ANSI / cursor / line discipline marchent comme sur un vrai TTY.
  • ResizePseudoConsole câblé sur les events de redimensionnement xterm.
  • Fallback pipeSession conservé si canUseConPTY() est false (Windows < 1809) ou si startConptySession échoue.
  • Restructure des fichiers : terminal_session.go (interface + structs), terminal_session_unix.go (creack/pty), terminal_session_windows.go (ConPTY → pipe fallback), terminal_conpty_windows.go (impl).

Limite d'itérations d'outils agent

Symptôme : "l'IA semble s'arrêter après 15 exécutions d'outils, je veux qu'elle puisse en faire 100, voire 1000". Cause : MaxToolIterations = 15 dans chat_engine.go.

Bump : 15 → 500. Cap reste pour éviter les boucles infinies en cas de bug modèle, mais 500 itérations couvre largement les cas réels (refactor multi-fichiers, debug exploratoire). Documentation inline ajoutée pour expliquer pourquoi le cap existe et quand il faudrait s'inquiéter de le toucher.

v0.7.5

Fix Windows : commande muyue reconnue après install

Symptôme rapporté : après les commandes d'install, muyue retourne n'est pas reconnu comme nom d'applet de commande. Causes :

  • Le binaire extrait s'appelle muyue-windows-amd64.exe — taper muyue ne résoud pas
  • La PATH utilisateur a été mise à jour mais la session PowerShell courante n'en hérite que pour les NOUVEAUX processus

Corrections dans install-shortcuts :

  • Copie canonique : muyue.exe est créé à côté de muyue-windows-amd64.exe (copy, pas rename — le binaire en cours d'exécution est verrouillé sur Windows). Les raccourcis Bureau / Menu Démarrer ciblent désormais cette copie.
  • Hint de session : la commande imprime $env:Path += ';...' à coller pour activer muyue dans le shell courant sans rouvrir un terminal.

Snippet d'install passe à 5 lignes : la dernière ($env:Path += ";$dest") rend la commande dispo immédiatement dans la session.

Fix Windows : double-clic du raccourci fonctionne enfin

Symptôme rapporté : après installation, double-clic sur le raccourci Bureau → boîte de dialogue "This is a command line tool. You need to open cmd.exe and run it from there.". Cause : charmbracelet/huh (utilisé pour la TUI de premier lancement) détecte l'absence de TTY interactif quand le binaire est lancé via Explorer Windows et avorte avec ce message.

Double correctif :

  1. Skip de la TUI sans terminal interactif (cmd/muyue/commands/root.go::isInteractiveStdin) — si os.Stdin.Stat() indique pas de os.ModeCharDevice, on saute profiler.RunFirstTimeSetup et on persiste un config.Default(). L'onboarding web (déjà existant) prend ensuite le relais dès l'ouverture du navigateur — aucune régression : avec un vrai terminal, la TUI continue de tourner comme avant.

  2. Build Windows en GUI subsystem (-H=windowsgui ajouté aux Windows builds dans ci-main.yml et ci-develop.yml) — le binaire ne demande plus de console, donc plus aucun flash de fenêtre noire au double-clic.

Conséquence : les sous-commandes CLI (muyue scan, muyue version, muyue install-shortcuts) ne produiraient plus d'output quand lancées depuis cmd.exe. Mitigation : nouveau fichier cmd/muyue/console_windows.go qui appelle kernel32!AttachConsole(ATTACH_PARENT_PROCESS) au démarrage. Si un terminal parent existe, on s'y rattache et os.Stdout / os.Stderr / os.Stdin y sont rebindés ; sinon, on tourne silencieusement (cas double-clic). Compatible des deux usages sans deux binaires séparés.

v0.7.4

Logo Muyue intégré

  • LogoMuyue.png ajouté à la racine + déclinaisons générées dans assets/ (16/32/64/128/256/512 px) et assets/muyue.ico (multi-résolution 16-256 px).
  • Binaire Windows : icône embarquée comme ressource Windows via github.com/akavel/rsrc au build CI (génération de cmd/muyue/rsrc_windows_{amd64,arm64}.syso). Conséquences :
    • Explorateur Windows affiche l'icône Muyue sur le .exe
    • Les raccourcis créés par install-shortcuts héritent de l'icône (via IconLocation = "$exe,0")
    • Aucune dépendance Go à runtime ; les .syso sont gitignorés et regénérés à chaque build
  • UI web : favicon réel (16/32 px), apple-touch-icon (256 px) et logo affiché dans le header à côté de "MUYUE".
  • Snippet d'install Windows : 1ʳᵉ ligne idempotente (New-Item -ItemType Directory -Force) pour gérer le cas d'une ré-exécution après install partielle.
  • Préservation du logo source en pleine résolution (912×950 RGBA) — pas de perte d'information.

v0.7.3

Onboarding — focus MiniMax + MiMo

  • L'étape apikey du wizard de premier lancement propose désormais les deux clés (MiniMax + MiMo) côte à côte ; au moins une doit être validée pour continuer.
  • Les autres fournisseurs (OpenAI, Anthropic, Z.AI, Ollama) ne sont plus proposés dans le wizard — l'utilisateur les configure ensuite via l'onglet Configuration s'il le souhaite. Justification : pour les nouveaux utilisateurs, deux choix simples > six choix qui ralentissent le démarrage.
  • Si MiniMax est validé, il devient le provider actif. Sinon, c'est MiMo. Si les deux sont validés, MiniMax reste actif (peut être basculé via /model change plus tard).

Install Windows — pas d'admin + raccourcis automatiques

  • Avant : la 3ᵉ ligne du snippet d'install (Move-Item ... C:\Windows\muyue.exe) échouait avec UnauthorizedAccessException sur PowerShell sans élévation.
  • Maintenant : 4 lignes, toutes exécutables sans admin :
    $dest = "$env:LOCALAPPDATA\Muyue"
    Invoke-WebRequest -Uri ".../muyue-windows-amd64.zip" -OutFile "$env:TEMP\muyue.zip"
    Expand-Archive -Path "$env:TEMP\muyue.zip" -DestinationPath $dest -Force
    & "$dest\muyue-windows-amd64.exe" install-shortcuts
    
  • Nouvelle commande muyue install-shortcuts (Windows uniquement) :
    • crée Muyue.lnk sur le Bureau et dans le Menu Démarrer (résolus via [Environment]::GetFolderPath, robuste OneDrive / profils non-standards) ;
    • utilise WScript.Shell COM via PowerShell pour générer les .lnk (pas de dépendance Go ajoutée) ;
    • ajoute le dossier d'install au PATH utilisateur (scope User, pas de modif système).
  • Une icône custom pourra être branchée plus tard en remplaçant la ressource embed du .exe ; pour l'instant, l'icône Windows par défaut du binaire est utilisée.

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 closedcreack/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
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.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)

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)

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): cleanAIResponseCleanAIResponse 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
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.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)

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)

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

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)

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

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)

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

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)

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

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
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 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
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 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)

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