Files
arboretum/packages/desktop/CHANGELOG.md
T
johanleroy ce224fd470 fix(web): les fichiers s'ouvrent enfin, et le travail git par projet au centre
Deux défauts d'usage de la zone centrale de l'IDE.

1. Ouvrir un fichier affichait une page vide. Le conteneur de l'unique instance
   Monaco vivait sous le `v-if="activeTab"` : monté sans onglet actif (premier
   usage, ou après avoir tout fermé), `onMounted` sortait en silence sur
   `!host.value`, `ready` restait faux pour toujours, et les deux watchers
   d'affichage étaient gardés par lui. Le conteneur est désormais toujours monté
   (v-show, jamais v-if : sous un v-if, fermer le dernier onglet détruisait le
   DOM et l'éditeur gardait une référence sur un noeud détaché) et l'éditeur est
   créé paresseusement depuis `showTab`, devenu l'unique entonnoir d'affichage.
   `useMonaco` ne mémoïse plus un échec, l'attente et l'erreur sont visibles, et
   la relecture disque ne se tait plus. Sur mobile, ouvrir un fichier amène enfin
   la zone centrale au premier plan et la valeur morte `mobilePanel = 'sidebar'`
   disparaît (migrée).

   Trouvé par l'E2E : seul l'`editor.worker` était fourni, donc ouvrir un `.ts`
   lançait le service TypeScript contre un worker qui n'en connaissait pas les
   méthodes, et jetait un rejet non géré à chaque ouverture. Les workers de
   langage sont fournis (chunks à la demande), diagnostics sémantiques coupés
   (sans tsconfig ni node_modules, ils inventeraient des erreurs).

2. Le statut git était à l'étroit et mono-projet. La zone centrale porte un mode
   « Fichiers / Changements » (bascule à icônes dans la barre d'onglets, donc
   accessible même sans onglet ouvert). La vue Changements montre un bloc par
   worktree pour TOUS les projets ouverts : fichiers indexés et non indexés, diff
   déplié sur place, commit, push, fetch, pull et historique par bloc. Le panneau
   Git de la barre latérale devient l'index (compteurs déjà diffusés par WS, donc
   zéro requête) et le badge de la barre d'activité, codé à 0, compte enfin les
   worktrees à traiter.

   Au passage : `canPush` était faux dans les deux sens (actif sans rien à
   pousser, bloqué en étant seulement en retard), l'amend d'un message seul est
   accepté comme le serveur le permettait déjà, le rebase est proposé dès qu'on
   est en retard, une confirmation d'abandon ne survit plus au rechargement de la
   liste, et `commit`/`fetch`/`push` émettent enfin `worktree_changes` (le
   compteur « n non poussés » restait périmé juste après un push).

Vérifié : 528 tests, acceptations P7/P9/P14/P15, `verify-ui` (4 captures
nouvelles) et un `verify-editor` qui prouve par clics réels l'ouverture d'un
fichier sans onglet persisté, la fermeture/réouverture, la bascule mobile et le
chunk éditeur absent. Ce dernier échoue bien si l'on remet le conteneur sous un
v-if.
2026-08-04 23:18:40 +02:00

4.7 KiB
Raw Blame History

Changelog

Notable changes to the Arboretum desktop app (packages/desktop). The daemon and the VS Code extension keep their own changelogs in packages/server/CHANGELOG.md and packages/vscode/CHANGELOG.md.

0.2.3

Ships the daemon 3.6.0. Files open again (the editor area could stay blank), and uncommitted work gets a real surface in the centre of the IDE: one block per project, with staging, commit and push. The Electron shell itself is unchanged.

0.2.2

  • Clipboard bridge. The renderer cannot use navigator.clipboard (Electron rejects it with NotAllowedError), so copying a terminal selection did nothing in the app even after 0.2.1. The preload now exposes arboretumDesktop.clipboard, relaying to Electron's clipboard module over IPC (read and write, writes capped at 1M chars). Ships the daemon 3.5.1, whose SPA uses that bridge first.

0.2.1

Ships the daemon 3.5.0, which fixes the black window seen after updating the app.

  • Black window after an update, fixed. The window loaded an index.html kept from the previous version (revalidated as 304 because the tarball mtime is constant, so the etag did not change) whose /assets/<hash> files no longer existed. Nothing painted. If you hit it before updating, the app repairs itself now; clearing ~/.config/Arboretum/Partitions/arboretum/Cache was the manual fix.
  • Copy & paste in session terminals. Ctrl+Shift+C / Ctrl+Shift+V (Cmd+C / Cmd+V on macOS); the Edit menu's Copy also works on a terminal selection now. Ctrl+C still interrupts.
  • Browse the files of a group's worktrees straight from the Groups panel.

The Electron shell itself is unchanged.

0.2.0

Distribution release: the Linux launcher icon finally shows up, Windows becomes a first-class target, and the embedded runtime loses a third of its weight.

  • Launcher icon fixed (Linux). Earlier packages installed a single 895×895 icon. That size is not declared in hicolor/index.theme, so by the freedesktop spec every desktop environment ignored it and the launcher fell back to a generic icon. The build now generates the standard set (16 → 512) plus a proper .ico for Windows, and forces executableName: arboretum (the scoped package name was producing @arboretumdesktop as binary, .desktop file and icon name).
  • Package metadata. A non-empty short description in apt show (deb.synopsis was missing), Section: devel instead of default, a single-line Comment in the desktop entry (it was multi-line, hence invalid), plus GenericName and Keywords for search.
  • Windows. Build scripts run on a Windows host again (npm/npx are .cmd shims that execFileSync cannot resolve; the Node extraction used unzip and bash -c cp/rm, none of which exist there). The daemon side gained what it needed to actually work: where.exe to find the Claude CLI, PowerShell as the launch shell, a .cmd askpass so HTTPS clone/push with a token works, and taskkill /T so stopping a terminal takes its whole process tree down. CI has a windows-latest job, enabled by the ENABLE_WINDOWS_BUILD repository variable, see docs/CI_RUNNERS.md.
  • Auto-update repaired. Shipped binaries point at a desktop-latest release that never existed, so no client could ever see an update. The release workflow now recreates that floating release on every version and attaches the latest*.yml files and installers to it, with .blockmaps for differential updates and SHA256SUMS.
  • Smaller download. The bundled Node runtime is pruned to the binary and its licence (no headers, no docs, no npm/corepack): ~205 MB → ~118 MB. Nothing at runtime used them, the daemon's dependencies being installed at build time.
  • macOS integration. An application menu (without it ⌘C / ⌘V / ⌘A were not bound anywhere in the app), app.on('activate') so the Dock icon brings back a hidden window, and a monochrome template tray icon that follows the menu-bar theme.
  • PATH enrichment on Windows. %LOCALAPPDATA%\Programs and %APPDATA%\npm are added to the daemon's PATH, where the Claude CLI and global npm binaries live (this was POSIX-only).

0.1.3

Ships the 3.3.0 daemon ("Start the project": launch commands and multi-terminal boot).

0.1.2

Ships the 3.2.0 daemon (Emerald visual overhaul, light and dark themes).

0.1.1

  • Fixed the missing window/launcher logo under Debian and Wayland by pinning the runtime app id (app.setName('Arboretum')) to the StartupWMClass written in the desktop entry.

0.1.0

First desktop release: an Electron shell that runs the daemon as a child process and opens its UI already authenticated, with a bundled Node runtime, a tray icon, launch-at-login and auto-update.