From 98ee293a49753705deceb0ca114f408c07b0c9cf Mon Sep 17 00:00:00 2001 From: nathaninline Date: Fri, 7 Aug 2026 20:00:36 +0200 Subject: [PATCH] Correction du build macOS casse par le nettoyage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit brandTemplatePNG n'etait pas du code mort : sys_tray_darwin.go l'utilise pour l'icone de barre de menus. Ce fichier ne compile qu'avec CGO, donc ni la compilation croisee depuis Windows ni staticcheck sans CGO ne le voyaient — la fonction passait pour inutilisee. Restauree. sys_service_darwin.go affichait encore le chemin de config.env, disparu avec le passage en base. Le piege est documente dans doc.go : seul le job macos de la CI attrape ce genre de regression. --- internal/ajean/doc.go | 7 +++++++ internal/ajean/sys_brand_icon.go | 12 ++++++++++++ internal/ajean/sys_service_darwin.go | 2 -- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/internal/ajean/doc.go b/internal/ajean/doc.go index d6128d2..1b31409 100644 --- a/internal/ajean/doc.go +++ b/internal/ajean/doc.go @@ -20,6 +20,13 @@ // Les suffixes _windows/_linux/_darwin/_unix/_other portent les contraintes de // compilation par OS. // +// ⚠️ Les fichiers macOS ne se compilent qu'AVEC CGO (l'icône de barre de menus +// passe par Cocoa). Une compilation croisée depuis Windows ou Linux, comme les +// analyseurs lancés sans CGO, ne les voit PAS : un symbole qu'eux seuls +// utilisent passe pour du code mort, et le supprimer casse le build macOS sans +// aucun avertissement local. Seul le job « macos » de la CI le détecte. Avant de +// supprimer un symbole jugé inutilisé, vérifier `grep` sur les fichiers _darwin. +// // DEUX SERVICES à l'exécution, un seul binaire : // - ajean-engine (« ajean serve ») exec llama-server ; // - ajean-ui (« ajean web ») sert l'UI locale, le tunnel du relais et diff --git a/internal/ajean/sys_brand_icon.go b/internal/ajean/sys_brand_icon.go index 1a63afc..295310c 100644 --- a/internal/ajean/sys_brand_icon.go +++ b/internal/ajean/sys_brand_icon.go @@ -84,6 +84,18 @@ func encodePNG(img *image.RGBA) []byte { // Exporté pour le générateur d'icône du .exe (tools/gen-icon). func BrandIconPNG(n int) []byte { return encodePNG(brandIconImage(n, brandBlack, brandWhite)) } +// brandTemplatePNG rend la variante « template » attendue par macOS : seule la +// couche alpha compte, le système colore la forme selon le thème de la barre de +// menus. Le « j » est donc DÉCOUPÉ (transparent) dans un carré opaque, sans quoi +// une icône entièrement noire disparaît sur une barre de menus sombre. +// +// Utilisée par sys_tray_darwin.go — un fichier que seule une compilation avec +// CGO voit. Les analyseurs lancés sans CGO la croient morte : elle avait été +// supprimée à ce titre, ce qui a cassé la compilation macOS en CI. +func brandTemplatePNG(n int) []byte { + return encodePNG(brandIconImage(n, brandBlack, brandClear)) +} + // BrandICO emballe une ou plusieurs tailles PNG dans un conteneur .ico. Windows // accepte le PNG comme image d'une entrée .ico (alpha conservé pour les coins // arrondis). Plusieurs tailles = un rendu net partout, de la barre des tâches diff --git a/internal/ajean/sys_service_darwin.go b/internal/ajean/sys_service_darwin.go index 25170b6..3a5f105 100644 --- a/internal/ajean/sys_service_darwin.go +++ b/internal/ajean/sys_service_darwin.go @@ -95,7 +95,6 @@ func serviceAction(action string) error { fmt.Printf("%s %s: arrêté\n", yellow("[info]"), svc) } fmt.Printf(" logs : %s\n", launchdLogPath()) - fmt.Printf(" config : %s\n", confPath()) return nil } return fmt.Errorf("action inconnue: %s", action) @@ -171,7 +170,6 @@ func userSvcAction(action string) error { fmt.Printf("%s %s: arrêté\n", yellow("[info]"), serviceName()) } fmt.Printf(" logs : %s\n", logFilePath()) - fmt.Printf(" config : %s\n", confPath()) return nil case "enable", "disable": fmt.Printf("%s '%s' réclame un service système : lance %s pour installer le LaunchDaemon.\n",