Rebaptise AJEAN en Loki (fork, lignée conservée)

- module github.com/R0m1k3/Loki, cmd/loki, internal/loki (package loki)
- LOKI_HOME, LOKI_MODEL_DIRS, LOKI_SERVICE, LOKI_DL_CONNS ; /etc/loki ;
  units loki-engine / loki-ui ; binaire et aide CLI
- updateRepo pointe sur R0m1k3/Loki (l'auto-update ne tirera plus les
  binaires AJEAN amont)

Conservé à l'identique : le domaine ajean.link (service de tunnel amont),
les littéraux de migration 0.7.x (migrate_07.go), RELEASE_NOTES.md et
LICENSE (historique et licence de l'amont).

go build/vet/test : verts.
This commit is contained in:
Loki committed 2026-08-14 21:33:15 +00:00
1 parent 2164b46319
commit de6551a153
157 files changed
+928 -928

No files matched your search

+3 -3
View File
@@ -28,7 +28,7 @@ jobs:
# par Cocoa (CGO) → les cibles macOS se compilent sur un runner Apple
# (job « macos » ci-dessous, comme dans release.yml).
for t in linux/amd64 linux/arm64 windows/amd64 windows/arm64; do
GOOS=${t%/*} GOARCH=${t#*/} CGO_ENABLED=0 go build -o /dev/null ./cmd/ajean
GOOS=${t%/*} GOARCH=${t#*/} CGO_ENABLED=0 go build -o /dev/null ./cmd/loki
done
macos:
@@ -45,7 +45,7 @@ jobs:
- run: go test ./...
- name: build macOS (CGO, arm64 + amd64)
run: |
CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 go build -o /dev/null ./cmd/ajean
CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 go build -o /dev/null ./cmd/loki
CGO_ENABLED=1 GOOS=darwin GOARCH=amd64 \
CGO_CFLAGS="-arch x86_64" CGO_LDFLAGS="-arch x86_64" \
go build -o /dev/null ./cmd/ajean
go build -o /dev/null ./cmd/loki
+19 -19
View File
@@ -1,4 +1,4 @@
# Build macOS à la demande, SANS rien publier : produit AJEAN.app en artifact
# Build macOS à la demande, SANS rien publier : produit Loki.app en artifact
# téléchargeable depuis l'onglet Actions (visible seulement par le dépôt).
# Sert à tester le bundle avant de décider d'une vraie release (release.yml).
name: mac-build
@@ -13,40 +13,40 @@ jobs:
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: build + bundle AJEAN.app (arm64)
- name: build + bundle Loki.app (arm64)
run: |
mkdir -p dist
CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 \
go build -trimpath -ldflags="-s -w" -o dist/ajean-macos-arm ./cmd/ajean
mkdir -p /tmp/ajean.iconset
sips -s format png 'cmd/ajean/icon.ico' --out /tmp/icon.png >/dev/null 2>&1 || true
go build -trimpath -ldflags="-s -w" -o dist/loki-macos-arm ./cmd/loki
mkdir -p /tmp/loki.iconset
sips -s format png 'cmd/loki/icon.ico' --out /tmp/icon.png >/dev/null 2>&1 || true
for s in 16 32 128 256 512; do
sips -z $s $s /tmp/icon.png --out "/tmp/ajean.iconset/icon_${s}x${s}.png" >/dev/null 2>&1 || true
sips -z $s $s /tmp/icon.png --out "/tmp/loki.iconset/icon_${s}x${s}.png" >/dev/null 2>&1 || true
done
iconutil -c icns /tmp/ajean.iconset -o /tmp/ajean.icns >/dev/null 2>&1 || true
app="dist/AJEAN.app"
iconutil -c icns /tmp/loki.iconset -o /tmp/loki.icns >/dev/null 2>&1 || true
app="dist/Loki.app"
mkdir -p "$app/Contents/MacOS" "$app/Contents/Resources"
cp dist/ajean-macos-arm "$app/Contents/MacOS/ajean"
chmod +x "$app/Contents/MacOS/ajean"
cp /tmp/ajean.icns "$app/Contents/Resources/ajean.icns" 2>/dev/null || true
cp dist/loki-macos-arm "$app/Contents/MacOS/loki"
chmod +x "$app/Contents/MacOS/loki"
cp /tmp/loki.icns "$app/Contents/Resources/loki.icns" 2>/dev/null || true
printf '%s\n' \
'<?xml version="1.0" encoding="UTF-8"?>' \
'<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">' \
'<plist version="1.0"><dict>' \
'<key>CFBundleName</key><string>AJEAN</string>' \
'<key>CFBundleDisplayName</key><string>AJEAN</string>' \
'<key>CFBundleExecutable</key><string>ajean</string>' \
'<key>CFBundleIdentifier</key><string>link.ajean.app</string>' \
'<key>CFBundleIconFile</key><string>ajean</string>' \
'<key>CFBundleName</key><string>Loki</string>' \
'<key>CFBundleDisplayName</key><string>Loki</string>' \
'<key>CFBundleExecutable</key><string>loki</string>' \
'<key>CFBundleIdentifier</key><string>link.loki.app</string>' \
'<key>CFBundleIconFile</key><string>loki</string>' \
'<key>CFBundlePackageType</key><string>APPL</string>' \
'<key>LSMinimumSystemVersion</key><string>11.0</string>' \
'<key>LSUIElement</key><true/>' \
'<key>NSHighResolutionCapable</key><true/>' \
'</dict></plist>' > "$app/Contents/Info.plist"
codesign --force --deep -s - "$app" || true
(cd dist && zip -qry ajean-macos-arm.zip AJEAN.app && rm -rf AJEAN.app)
(cd dist && zip -qry loki-macos-arm.zip Loki.app && rm -rf Loki.app)
ls -l dist
- uses: actions/upload-artifact@v4
with:
name: ajean-macos-arm
path: dist/ajean-macos-arm.zip
name: loki-macos-arm
path: dist/loki-macos-arm.zip
+34 -34
View File
@@ -1,11 +1,11 @@
# Release : sur tag vX.Y.Z, compile les 6 cibles et publie la release GitHub
# avec les binaires (ajean-linux, ajean-macos, ajean-windows.exe et leurs
# variantes -arm) ET le fichier SHA256SUMS que `ajean update` vérifie avant
# avec les binaires (loki-linux, loki-macos, loki-windows.exe et leurs
# variantes -arm) ET le fichier SHA256SUMS que `loki update` vérifie avant
# d'installer. Ces noms doivent rester en phase avec assetNameFor (sys_update.go),
# sinon plus aucune machine ne se met à jour.
# ⚠️ NE PAS uploader de binaires à la main en plus : ce workflow écrase les
# assets du même nom (softprops remplace), et des sommes qui ne correspondent
# plus aux binaires font échouer `ajean update` (vécu sur v0.4.7).
# plus aux binaires font échouer `loki update` (vécu sur v0.4.7).
#
# Deux jobs de build : macOS a besoin d'un vrai runner Apple (l'icône de barre de
# menus passe par Cocoa → CGO, pas cross-compilable depuis Linux) ; Linux et
@@ -31,43 +31,43 @@ jobs:
mkdir -p dist
# arm64 = natif ; amd64 = cross avec le SDK universel (-arch x86_64).
CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 \
go build -trimpath -ldflags="-s -w" -o dist/ajean-macos-arm ./cmd/ajean
go build -trimpath -ldflags="-s -w" -o dist/loki-macos-arm ./cmd/loki
CGO_ENABLED=1 GOOS=darwin GOARCH=amd64 \
CGO_CFLAGS="-arch x86_64" CGO_LDFLAGS="-arch x86_64" \
go build -trimpath -ldflags="-s -w" -o dist/ajean-macos ./cmd/ajean
file dist/ajean-macos*
- name: bundles AJEAN.app
go build -trimpath -ldflags="-s -w" -o dist/loki-macos ./cmd/loki
file dist/loki-macos*
- name: bundles Loki.app
run: |
# Un binaire nu double-cliqué ouvrirait le Terminal. On publie donc
# aussi un vrai bundle AJEAN.app (zippé pour garder le bit exécutable) :
# au clic, le Finder lance Contents/MacOS/ajean, qui détecte le bundle
# aussi un vrai bundle Loki.app (zippé pour garder le bit exécutable) :
# au clic, le Finder lance Contents/MacOS/loki, qui détecte le bundle
# et bascule en mode « application » (UI web + navigateur + icône dans
# la barre de menus), comme le double-clic sur ajean.exe sous Windows.
# la barre de menus), comme le double-clic sur loki.exe sous Windows.
# LSUIElement : app de barre de menus, aucune icône dans le Dock.
# L'icône part du PNG 1024 généré avec le reste de la marque
# (cmd/ajean/icon.png, voir tools/gen-icon) : plus de conversion depuis
# (cmd/loki/icon.png, voir tools/gen-icon) : plus de conversion depuis
# le .ico, dont l'échec silencieux donnait une app sans icône.
mkdir -p /tmp/ajean.iconset
mkdir -p /tmp/loki.iconset
for s in 16 32 128 256 512; do
sips -z $s $s 'cmd/ajean/icon.png' --out "/tmp/ajean.iconset/icon_${s}x${s}.png" >/dev/null
sips -z $s $s 'cmd/loki/icon.png' --out "/tmp/loki.iconset/icon_${s}x${s}.png" >/dev/null
done
iconutil -c icns /tmp/ajean.iconset -o /tmp/ajean.icns
iconutil -c icns /tmp/loki.iconset -o /tmp/loki.icns
v="${GITHUB_REF_NAME#v}"
for bin in ajean-macos ajean-macos-arm; do
app="dist/bundle-$bin/AJEAN.app"
for bin in loki-macos loki-macos-arm; do
app="dist/bundle-$bin/Loki.app"
mkdir -p "$app/Contents/MacOS" "$app/Contents/Resources"
cp "dist/$bin" "$app/Contents/MacOS/ajean"
chmod +x "$app/Contents/MacOS/ajean"
cp /tmp/ajean.icns "$app/Contents/Resources/ajean.icns" 2>/dev/null || true
cp "dist/$bin" "$app/Contents/MacOS/loki"
chmod +x "$app/Contents/MacOS/loki"
cp /tmp/loki.icns "$app/Contents/Resources/loki.icns" 2>/dev/null || true
printf '%s\n' \
'<?xml version="1.0" encoding="UTF-8"?>' \
'<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">' \
'<plist version="1.0"><dict>' \
'<key>CFBundleName</key><string>AJEAN</string>' \
'<key>CFBundleDisplayName</key><string>AJEAN</string>' \
'<key>CFBundleExecutable</key><string>ajean</string>' \
'<key>CFBundleIdentifier</key><string>link.ajean.app</string>' \
'<key>CFBundleIconFile</key><string>ajean</string>' \
'<key>CFBundleName</key><string>Loki</string>' \
'<key>CFBundleDisplayName</key><string>Loki</string>' \
'<key>CFBundleExecutable</key><string>loki</string>' \
'<key>CFBundleIdentifier</key><string>link.loki.app</string>' \
'<key>CFBundleIconFile</key><string>loki</string>' \
'<key>CFBundlePackageType</key><string>APPL</string>' \
"<key>CFBundleShortVersionString</key><string>$v</string>" \
"<key>CFBundleVersion</key><string>$v</string>" \
@@ -78,7 +78,7 @@ jobs:
# Signature ad-hoc : sans elle, macOS refuse purement et simplement
# de lancer un binaire arm64 non signé (pas juste un avertissement).
codesign --force --deep -s - "$app" || true
(cd "dist/bundle-$bin" && zip -qry "../$bin.zip" AJEAN.app)
(cd "dist/bundle-$bin" && zip -qry "../$bin.zip" Loki.app)
rm -rf "dist/bundle-$bin"
done
ls -l dist
@@ -98,13 +98,13 @@ jobs:
- name: build Linux + Windows
run: |
mkdir -p dist
# Noms d'asset : ajean-<os>[-arm][.exe]. Volontairement lisibles, et
# volontairement DIFFÉRENTS du schéma ajean-<GOOS>-<GOARCH> des 0.7 :
# Noms d'asset : loki-<os>[-arm][.exe]. Volontairement lisibles, et
# volontairement DIFFÉRENTS du schéma loki-<GOOS>-<GOARCH> des 0.7 :
# leur mise à jour automatique ne trouve alors aucun asset et échoue
# sans rien remplacer, au lieu d'installer un binaire 0.8 sur une
# machine encore agencée en 0.7 (voir updateAssetName, sys_update.go).
for t in linux/amd64:ajean-linux linux/arm64:ajean-linux-arm \
windows/amd64:ajean-windows.exe windows/arm64:ajean-windows-arm.exe; do
for t in linux/amd64:loki-linux linux/arm64:loki-linux-arm \
windows/amd64:loki-windows.exe windows/arm64:loki-windows-arm.exe; do
target=${t%%:*}; name=${t#*:}
os=${target%/*}; arch=${target#*/}; ldflags="-s -w"
# Windows : sous-système CONSOLE, pour que `cmd` attende la fin du
@@ -112,7 +112,7 @@ jobs:
# fonctionnent. La console créée au double-clic est refermée par le
# programme lui-même (voir setupConsole, sys_console_windows.go).
GOOS=$os GOARCH=$arch CGO_ENABLED=0 \
go build -trimpath -ldflags="$ldflags" -o "dist/$name" ./cmd/ajean
go build -trimpath -ldflags="$ldflags" -o "dist/$name" ./cmd/loki
done
- uses: actions/download-artifact@v4
with:
@@ -120,11 +120,11 @@ jobs:
path: dist
- name: SHA256SUMS
run: |
chmod +x dist/ajean-macos dist/ajean-macos-arm
# Tous les assets commencent par « ajean- », zips compris : un seul
chmod +x dist/loki-macos dist/loki-macos-arm
# Tous les assets commencent par « loki- », zips compris : un seul
# motif suffit. Ajouter « *.zip » les compterait DEUX fois, et un
# SHA256SUMS à doublons est exactement ce que `ajean update` vérifie.
(cd dist && sha256sum ajean-* > SHA256SUMS)
# SHA256SUMS à doublons est exactement ce que `loki update` vérifie.
(cd dist && sha256sum loki-* > SHA256SUMS)
ls -l dist && cat dist/SHA256SUMS
- name: publier la release
uses: softprops/action-gh-release@v2