# 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`. ## Unreleased - **The app could refuse to start after an update, silently.** Installing a new version replaces the files on disk but leaves the running app alone: its daemon kept port 7317, so the version you just installed hit `EADDRINUSE`, its daemon died before the handshake, and the shell logged the failure to a console nobody sees and quit. Clicking the launcher appeared to do nothing at all. Three fixes: - **Every start-up failure now opens a dialog** with *Retry / Show log / Quit* instead of vanishing, and the daemon's output is kept in `/logs/daemon.log`. A daemon that dies *after* start-up is reported too, with an offer to restart it, instead of leaving a dead window on screen. - **A busy port is diagnosed, not just fatal** (`src/main/port-guard.ts`). The daemon we spawn is recorded in `/daemon/daemon.json`, so an *orphaned* daemon (its Electron gone after a crash, a `kill -9` or an upgrade) is reclaimed - SIGTERM then SIGKILL, waiting for the port to be effectively free - while a live sibling instance or third-party server is reported with the action that unblocks it, and never killed. - **An update installed while the app runs is announced** (`src/main/upgrade-watch.ts`). Until now the single-instance lock quietly routed you back to the old version's window; the shell now notices its own binary changed on disk and offers *Restart now*, which stops the daemon before relaunching. - **`ARBORETUM_DESKTOP_PORT`** picks another port, for machines where a service or terminal daemon owns 7317 permanently. ## 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/` 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 `.blockmap`s 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.