Passage à la 0.17.3 et ajout d'un splash screen pour le démarrage de l'application
Some checks failed
E2E Tests / e2e (push) Has been cancelled
Tests unitaires / Brain (Python · pytest + couverture) (push) Successful in 18s
Tests unitaires / Web (Angular · vitest + couverture) (push) Successful in 28s
Build & Push Images / build (brain) (push) Successful in 1m11s
Tests unitaires / Core (Java · mvn test + JaCoCo) (push) Successful in 2m9s
Build & Push Images / build (web) (push) Successful in 1m48s
Build & Push Images / build-switcher (push) Successful in 44s
Build & Push Images / build (core) (push) Successful in 3m2s
Some checks failed
E2E Tests / e2e (push) Has been cancelled
Tests unitaires / Brain (Python · pytest + couverture) (push) Successful in 18s
Tests unitaires / Web (Angular · vitest + couverture) (push) Successful in 28s
Build & Push Images / build (brain) (push) Successful in 1m11s
Tests unitaires / Core (Java · mvn test + JaCoCo) (push) Successful in 2m9s
Build & Push Images / build (web) (push) Successful in 1m48s
Build & Push Images / build-switcher (push) Successful in 44s
Build & Push Images / build (core) (push) Successful in 3m2s
This commit is contained in:
@@ -26,7 +26,7 @@ from app.infrastructure.ollama_model_installer import ensure_ollama_embedding_mo
|
|||||||
app = FastAPI(
|
app = FastAPI(
|
||||||
title="LoreMind Brain",
|
title="LoreMind Brain",
|
||||||
description="Backend IA pour la génération de contenu narratif.",
|
description="Backend IA pour la génération de contenu narratif.",
|
||||||
version="0.17.2",
|
version="0.17.3",
|
||||||
)
|
)
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
<groupId>com.loremind</groupId>
|
<groupId>com.loremind</groupId>
|
||||||
<artifactId>loremind-core</artifactId>
|
<artifactId>loremind-core</artifactId>
|
||||||
<version>0.17.2</version>
|
<version>0.17.3</version>
|
||||||
<name>LoreMind Core</name>
|
<name>LoreMind Core</name>
|
||||||
<description>Backend Core - Architecture Hexagonale</description>
|
<description>Backend Core - Architecture Hexagonale</description>
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import org.springframework.context.annotation.Profile;
|
|||||||
import org.springframework.context.event.EventListener;
|
import org.springframework.context.event.EventListener;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.awt.SplashScreen;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* En mode bureau (profil "local"), ouvre le navigateur par defaut sur
|
* En mode bureau (profil "local"), ouvre le navigateur par defaut sur
|
||||||
* l'application des que le serveur est pret. L'app n'ayant pas de fenetre
|
* l'application des que le serveur est pret. L'app n'ayant pas de fenetre
|
||||||
@@ -25,7 +27,26 @@ public class DesktopBrowserOpener {
|
|||||||
|
|
||||||
@EventListener(ApplicationReadyEvent.class)
|
@EventListener(ApplicationReadyEvent.class)
|
||||||
public void onReady() {
|
public void onReady() {
|
||||||
|
// Ferme le splash natif (affiche par la JVM via -splash des le double-clic)
|
||||||
|
// juste avant d'ouvrir le navigateur : le relais visuel est assure.
|
||||||
|
closeSplash();
|
||||||
log.info("[Desktop] Application prete — ouverture du navigateur.");
|
log.info("[Desktop] Application prete — ouverture du navigateur.");
|
||||||
DesktopSingleInstance.openAppInBrowser();
|
DesktopSingleInstance.openAppInBrowser();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ferme l'ecran de demarrage si l'app a ete lancee avec {@code -splash:...}
|
||||||
|
* (cas des installeurs jpackage). No-op silencieux sinon (lancement dev sans
|
||||||
|
* splash, ou environnement sans affichage).
|
||||||
|
*/
|
||||||
|
private void closeSplash() {
|
||||||
|
try {
|
||||||
|
SplashScreen splash = SplashScreen.getSplashScreen();
|
||||||
|
if (splash != null) {
|
||||||
|
splash.close();
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.debug("[Desktop] Pas de splash a fermer : {}", e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -165,6 +165,9 @@ cp "$jar" "$STAGE_DIR/loremind-core.jar"
|
|||||||
[[ -d "$BRAIN_EMBED/python" ]] || { err "Brain introuvable (brain/dist-embed-linux). Relancez sans --skip-brain."; exit 1; }
|
[[ -d "$BRAIN_EMBED/python" ]] || { err "Brain introuvable (brain/dist-embed-linux). Relancez sans --skip-brain."; exit 1; }
|
||||||
mkdir -p "$STAGE_DIR/brain"
|
mkdir -p "$STAGE_DIR/brain"
|
||||||
cp -r "$BRAIN_EMBED/." "$STAGE_DIR/brain/"
|
cp -r "$BRAIN_EMBED/." "$STAGE_DIR/brain/"
|
||||||
|
|
||||||
|
# Splash : copie dans la charge utile -> atterrit dans $APPDIR/splash.png (cf. -splash plus bas).
|
||||||
|
[[ -f "$SCRIPT_DIR/splash.png" ]] && cp "$SCRIPT_DIR/splash.png" "$STAGE_DIR/splash.png"
|
||||||
ok "Charge utile prete ($STAGE_DIR)"
|
ok "Charge utile prete ($STAGE_DIR)"
|
||||||
|
|
||||||
# --- 5. jpackage -> app-image ----------------------------------------------
|
# --- 5. jpackage -> app-image ----------------------------------------------
|
||||||
@@ -191,7 +194,8 @@ jpackage \
|
|||||||
--main-class org.springframework.boot.loader.launch.JarLauncher \
|
--main-class org.springframework.boot.loader.launch.JarLauncher \
|
||||||
--dest "$OUT_DIR" \
|
--dest "$OUT_DIR" \
|
||||||
--java-options '-Dspring.profiles.active=local' \
|
--java-options '-Dspring.profiles.active=local' \
|
||||||
--java-options "-Dbrain.sidecar.command=$BRAIN_CMD"
|
--java-options "-Dbrain.sidecar.command=$BRAIN_CMD" \
|
||||||
|
--java-options '-splash:$APPDIR/splash.png'
|
||||||
|
|
||||||
APPIMG_SRC="$OUT_DIR/$APP_NAME" # dossier produit par jpackage (avec espace)
|
APPIMG_SRC="$OUT_DIR/$APP_NAME" # dossier produit par jpackage (avec espace)
|
||||||
[[ -d "$APPIMG_SRC" ]] || { err "app-image jpackage introuvable ($APPIMG_SRC)."; exit 1; }
|
[[ -d "$APPIMG_SRC" ]] || { err "app-image jpackage introuvable ($APPIMG_SRC)."; exit 1; }
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ $StageDir = Join-Path $CoreDir 'target\dist-input' # charge utile jpackage
|
|||||||
$OutDir = Join-Path $CoreDir 'target\dist-out' # .msi produit
|
$OutDir = Join-Path $CoreDir 'target\dist-out' # .msi produit
|
||||||
$IconFile = Join-Path $PSScriptRoot 'app-icon.ico' # icone de l'app (.msi + raccourcis)
|
$IconFile = Join-Path $PSScriptRoot 'app-icon.ico' # icone de l'app (.msi + raccourcis)
|
||||||
$WixDir = Join-Path $PSScriptRoot 'wix' # main.wxs surcharge (case "Lancer" en fin d'install)
|
$WixDir = Join-Path $PSScriptRoot 'wix' # main.wxs surcharge (case "Lancer" en fin d'install)
|
||||||
|
$SplashFile = Join-Path $PSScriptRoot 'splash.png' # ecran de demarrage (affiche par la JVM via -splash)
|
||||||
|
|
||||||
# --- Version (numerique pour MSI) ------------------------------------------
|
# --- Version (numerique pour MSI) ------------------------------------------
|
||||||
if (-not $Version) {
|
if (-not $Version) {
|
||||||
@@ -192,6 +193,9 @@ if (-not (Test-Path $BrainEmbed)) { Write-Err "Brain introuvable (brain/dist-emb
|
|||||||
$stageBrain = Join-Path $StageDir 'brain'
|
$stageBrain = Join-Path $StageDir 'brain'
|
||||||
New-Item -ItemType Directory -Force -Path $stageBrain | Out-Null
|
New-Item -ItemType Directory -Force -Path $stageBrain | Out-Null
|
||||||
Copy-Item (Join-Path $BrainEmbed '*') $stageBrain -Recurse
|
Copy-Item (Join-Path $BrainEmbed '*') $stageBrain -Recurse
|
||||||
|
|
||||||
|
# Splash : copie dans la charge utile -> atterrit dans $APPDIR\splash.png (cf. -splash plus bas).
|
||||||
|
if (Test-Path $SplashFile) { Copy-Item $SplashFile (Join-Path $StageDir 'splash.png') }
|
||||||
Write-Ok "Charge utile prete ($StageDir)"
|
Write-Ok "Charge utile prete ($StageDir)"
|
||||||
|
|
||||||
# --- 5. jpackage -> .msi ---------------------------------------------------
|
# --- 5. jpackage -> .msi ---------------------------------------------------
|
||||||
@@ -237,6 +241,7 @@ jpackage `
|
|||||||
--dest $OutDir `
|
--dest $OutDir `
|
||||||
--java-options '-Dspring.profiles.active=local' `
|
--java-options '-Dspring.profiles.active=local' `
|
||||||
--java-options "-Dbrain.sidecar.command=$brainCmd" `
|
--java-options "-Dbrain.sidecar.command=$brainCmd" `
|
||||||
|
--java-options '-splash:$APPDIR\splash.png' `
|
||||||
--win-per-user-install `
|
--win-per-user-install `
|
||||||
--win-upgrade-uuid 'a7c4e1d2-9b3f-4e6a-8d05-1f2c3b4a5e6d' `
|
--win-upgrade-uuid 'a7c4e1d2-9b3f-4e6a-8d05-1f2c3b4a5e6d' `
|
||||||
--win-menu --win-menu-group 'DM Loremind' `
|
--win-menu --win-menu-group 'DM Loremind' `
|
||||||
|
|||||||
BIN
installers/desktop/splash.png
Normal file
BIN
installers/desktop/splash.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
4
web/package-lock.json
generated
4
web/package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "loremind-web",
|
"name": "loremind-web",
|
||||||
"version": "0.17.2",
|
"version": "0.17.3",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "loremind-web",
|
"name": "loremind-web",
|
||||||
"version": "0.17.2",
|
"version": "0.17.3",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "^21.2.16",
|
"@angular/animations": "^21.2.16",
|
||||||
"@angular/common": "^21.2.16",
|
"@angular/common": "^21.2.16",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "loremind-web",
|
"name": "loremind-web",
|
||||||
"version": "0.17.2",
|
"version": "0.17.3",
|
||||||
"description": "LoreMind Frontend - Angular",
|
"description": "LoreMind Frontend - Angular",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"ng": "ng",
|
"ng": "ng",
|
||||||
|
|||||||
Reference in New Issue
Block a user