Files
IdeA/agents-dev/L11-packaging.md
Blomios 307ae71857 feat: add main features
Agents for developpement added + frontend add + backend added. Git viewer created + agent and template creator + layout and project creator
2026-06-06 01:27:01 +02:00

4.4 KiB

L11 — Packaging & livraison

Binôme : dev-packaging / test-packaging Zones : app-tauri (bundle), CI Dépendances amont : transverse (mûrit avec les autres lots) ; finalisé en fin de cycle.

Objectif

Livrer IdeA : setup.exe (NSIS) Windows et AppImage Linux multi-distro. macOS plus tard.

Périmètre (DEV)

  • Config bundle Tauri v2 : NSIS (Windows), AppImage (Linux).
  • Vendoring statique des deps natives (git2/openssl → préférer rustls pour russh ; features git2) pour la portabilité AppImage.
  • Pipeline CI : build Linux + Windows, artefacts publiés.

Périmètre (TEST)

  • Le bundle se construit sur Linux et Windows (CI verte).
  • L'AppImage démarre sur ≥3 distros (Ubuntu, Fedora, Arch) — smoke test.
  • L'installeur Windows installe/lance/désinstalle proprement.

Definition of Done

  • CI produit un setup.exe et un AppImage fonctionnels ; smoke tests multi-distro verts.

Spike (cf. ARCHITECTURE §13)

  • AppImage multi-distro : glibc/openssl/libgit2 liés dynamiquement = risque ; valider le vendoring statique tôt (coordonné avec L8/L9).

Notes de build vérifiées (2026-06-04, premier build sur Arch)

  • CLI : @tauri-apps/cli v2 installé en devDependency frontend ; binaire à frontend/node_modules/.bin/tauri.
  • Hooks tauri.conf.json : Tauri exécute beforeBuildCommand/beforeDevCommand avec cwd = IdeA/crates/. Les chemins npm doivent donc être --prefix ../frontend (et NON ../../frontend ni frontend).
  • Arch Linux — linuxdeploy strip échoue : le strip embarqué dans linuxdeploy-x86_64.AppImage ne comprend pas la section ELF .relr.dyn des libs Arch modernes (libzstd.so.1, libyuv.so…) → erreur unknown type [0x13] section .relr.dyn. Parade : exporter NO_STRIP=true avant tauri build. À intégrer dans la CI/scripts de build Linux.
  • Build de référence OK : cd crates/app-tauri && NO_STRIP=true tauri build --bundles appimagetarget/release/bundle/appimage/IdeA_0.1.0_amd64.AppImage (~101 Mo).
  • Le 1er échec failed to run linuxdeploy masquait le vrai message (strip) ; --verbose est nécessaire pour le voir.
  • Écran blanc au lancement (Linux/WebKitGTK) : le renderer DMABUF de WebKitGTK rend une fenêtre blanche sur beaucoup de configs Linux récentes (Mesa/Nvidia, fréquent sur Arch). Fix baké dans crates/app-tauri/src/main.rs : on positionne WEBKIT_DISABLE_DMABUF_RENDERER=1 au début de main() (cfg target_os = "linux", seulement si non déjà défini) avant l'init du webview. Plus besoin de variable d'env côté utilisateur. Vérifié visuellement OK sur Arch (UI projets + health-check rendus).

Avancement (2026-06-05)

Fait

  • Icônes générées (tauri iconcrates/app-tauri/icons/, monogramme « IA » sombre/accent) — manquaient, requises par le bundle.
  • AppImage Linux reconstruite : target/release/bundle/appimage/IdeA_0.1.0_amd64.AppImage (~103 Mo), validée (ELF AppImage-runtime, libfuse2 présent, se lance directement). git2 lié à la libgit2 système via .cargo/config.toml (LIBGIT2_SYS_USE_PKG_CONFIG=1).
  • beforeBuildCommand/beforeDevCommand confirmés à --prefix ../frontend (cwd des hooks = IdeA/crates/).
  • Refonte disposition IDE (passe UI/altitude) : ProjectsView réécrit en disposition d'IDE — barre d'onglets projets en haut, sidebar (onglets Projects/Agents/Templates/Git, un panneau à la fois) + zone principale = LayoutGrid (grille de terminaux) qui remplit la hauteur. App shell en h-full. Composants ProjectLauncher/ProjectTabs/Workspace extraits. Hooks de test préservés ; front 158 tests verts, tsc clean. (Note : beforeBuildCommand retiré de tauri.conf.json — chemins de hook ambigus selon le cwd d'invocation ; on build le front manuellement (npm --prefix frontend run build) avant tauri build lancé depuis la racine du repo. C'est le recette déterministe vérifiée.)

Reste

  • Vendoring statique pour AppImage portable multi-distro : passer git2 en vendored-libgit2 (nécessite cmake, absent de la machine actuelle) + rustls pour russh (L9). Aujourd'hui l'AppImage lie la libgit2 système → portable seulement vers des distros fournissant libgit2 ≥ 1.9.
  • Windows setup.exe (NSIS) : non constructible ici (Linux) → CI Windows.
  • CI Linux+Windows (avec NO_STRIP=true côté Linux) + smoke tests ≥3 distros.