appId: fr.lidge.arboretum productName: Arboretum copyright: Copyright © 2026 Johan Leroy directories: output: release buildResources: resources # Le bundle esbuild (dist/) va dans l'ASAR ; le daemon et le runtime Node restent des fichiers # reels sur disque (extraResources, hors ASAR) : les binaires natifs (.node de node-pty) se # chargent proprement, ce qu'un .asar interdirait. files: - dist/**/* - "!**/*.map" asar: true extraResources: - from: build/server to: server - from: build/node to: node - from: resources/icon.png to: icon.png - from: resources/trayTemplate.png to: trayTemplate.png - from: resources/trayTemplate@2x.png to: trayTemplate@2x.png # Icônes : générées par `python3 brand/build-assets.py` depuis le logo source. # - `resources/icons/` : jeu Linux aux TAILLES STANDARD hicolor (16→512). Indispensable : sans lui, # electron-builder installe l'unique taille du PNG source (895x895), or `hicolor/index.theme` ne # déclare pas ce répertoire, donc la spécification freedesktop l'ignore et AUCUN logo n'apparaît # au lanceur (c'était le bug du .deb 0.1.x). # - `resources/icon.png` (1024) : source macOS et dérivations. # - `resources/icon.ico` : Windows (installeur NSIS + fenêtre). linux: target: [AppImage, deb] category: Development icon: resources/icons # `executableName` explicite : sinon electron-builder le dérive du `name` SCOPÉ du package # (@arboretum/desktop → « @arboretumdesktop »), qui se retrouvait dans /usr/bin, le .desktop et son # `Icon=` · un nom d'icône commençant par « @ » n'est pas résoluble. executableName: arboretum artifactName: ${productName}-${version}-${arch}.${ext} synopsis: Self-hosted multi-project AI IDE for git worktrees # Entrée .desktop (forme plate, mergée telle quelle par electron-builder 25). StartupWMClass DOIT # correspondre à l'app_id runtime (posé par app.setName('Arboretum') dans src/main/main.ts) pour # que GNOME/Wayland associe la fenêtre au lanceur et affiche le logo. Redondant avec le défaut # (productName) mais explicite et robuste à un futur changement de productName. desktop: StartupWMClass: Arboretum GenericName: AI IDE for git worktrees Keywords: git;worktree;claude;ide;terminal; # Pas de `Comment` ici : electron-builder l'écrase systématiquement après la surcharge # (LinuxTargetHelper : desktopMeta.Comment = deb.description || package.json description). C'est # donc la description du package.json qui fait foi, et elle DOIT rester sur une seule ligne : un # texte multi-lignes produirait une entrée .desktop invalide (lignes suivantes lues comme clés). # Note : avec des tailles standard, GTK/KDE résolvent l'icône même sans cache d'icônes rafraîchi # (le postinst d'electron-builder n'appelle pas gtk-update-icon-cache). L'AppImage, lui, n'installe # aucun .desktop sans intégration (appimaged) : sur Debian, préférer le .deb. deb: # git est requis pour les operations de worktree ; claude n'est pas dans les depots (documente). depends: [git] # Mainteneur .deb explicite (electron-builder l'exige ; sinon derive de author.email du package.json). maintainer: Johan LEROY # `synopsis` alimente la description COURTE du paquet : sans lui, `apt show` affichait une ligne # vide (electron-builder concatène `synopsis || ''` puis la description longue). # `synopsis` = description COURTE du paquet : sans elle, `apt show` affichait une ligne vide # (electron-builder concatène `synopsis || ''` puis la description longue). La description longue # reste celle du package.json, volontairement sur une seule ligne (cf. note sur Comment ci-dessus). synopsis: Self-hosted multi-project AI IDE for git worktrees # electron-builder nomme ce champ `packageCategory` (et non `section`) : il alimente le champ # Section: du paquet, qui valait « default » jusqu'ici. packageCategory: devel priority: optional win: target: - target: nsis arch: [x64] - target: portable arch: [x64] icon: resources/icon.ico # Affiché par SmartScreen et dans les métadonnées de l'exécutable. Le binaire n'est PAS signé : # SmartScreen montrera « éditeur inconnu » (documenté dans le README). publisherName: Johan LEROY artifactName: ${productName}-${version}-${arch}.${ext} nsis: oneClick: false perMachine: false allowToChangeInstallationDirectory: true shortcutName: Arboretum uninstallDisplayName: Arboretum ${version} createDesktopShortcut: true license: ../../LICENSE mac: target: [dmg, zip] icon: resources/icon.png category: public.app-category.developer-tools # macOS best-effort : non signe (documente : clic droit -> Ouvrir, ou xattr -dr com.apple.quarantine) identity: null hardenedRuntime: false # Auto-update (electron-updater) : provider generic pointant sur un tag FLOTTANT `desktop-latest`, # que la CI recrée à chaque release en y attachant les installeurs et les `latest*.yml`. Ce tag doit # exister, sinon l'updater reçoit un 404 (c'était le cas jusqu'en 0.1.3) : voir # .gitea/workflows/desktop-release.yml, étape « Publish floating desktop-latest release ». publish: provider: generic url: https://git.lidge.fr/johanleroy/arboretum/releases/download/desktop-latest