CI / No em/en dashes (push) Successful in 4s
CI / Build & test (Node 24) (push) Successful in 10m50s
CI / Build & test (Node 22) (push) Successful in 11m5s
Release / Publish to Gitea npm registry (push) Successful in 10m57s
Desktop Release / Build Linux (AppImage + deb) (push) Successful in 13m27s
Desktop Release / Publish floating desktop-latest release (push) Successful in 10s
CI / Pack & boot smoke (Node 22) (push) Successful in 9m55s
Le desktop 0.2.4 embarque le daemon 3.7.0 et livre aussi les garde-fous de démarrage déjà sur main (dialogue d'échec, reprise d'un daemon orphelin, redémarrage après mise à jour installée à chaud).
107 lines
6.5 KiB
Markdown
107 lines
6.5 KiB
Markdown
# 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.4
|
||
|
||
Ships the daemon 3.7.0: terminals no longer go black, they can sit side by side in resizable columns,
|
||
and the Changes view follows the terminal you are working in. This release also carries the start-up
|
||
fixes below, which is what makes an update installed over a running app recover on its own.
|
||
|
||
- **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 `<userData>/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 `<userData>/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/<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 `.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.
|