diff --git a/brain/app/main.py b/brain/app/main.py
index 4fdcf38..86f3e2a 100644
--- a/brain/app/main.py
+++ b/brain/app/main.py
@@ -26,7 +26,7 @@ from app.infrastructure.ollama_model_installer import ensure_ollama_embedding_mo
app = FastAPI(
title="LoreMind Brain",
description="Backend IA pour la génération de contenu narratif.",
- version="0.17.3",
+ version="0.18.0",
)
logger = logging.getLogger(__name__)
diff --git a/core/pom.xml b/core/pom.xml
index fdd897b..91f2cf5 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -14,7 +14,7 @@
com.loremind
loremind-core
- 0.17.3
+ 0.18.0
LoreMind Core
Backend Core - Architecture Hexagonale
diff --git a/installers/install.ps1 b/installers/install.ps1
index 9dee923..64b7da1 100644
--- a/installers/install.ps1
+++ b/installers/install.ps1
@@ -1,7 +1,7 @@
#Requires -Version 5.1
<#
.SYNOPSIS
- Installeur officiel de LoreMindMJ pour Windows 10/11.
+ Installeur officiel de DM Loremind pour Windows 10/11.
.DESCRIPTION
Script d'installation pas-a-pas qui :
@@ -18,7 +18,7 @@
Le code source de ce script est public et auditable a l'adresse indiquee dans .LINK.
.PARAMETER InstallDir
- Dossier d'installation. Defaut : %LOCALAPPDATA%\LoreMind
+ Dossier d'installation. Defaut : %LOCALAPPDATA%\DM Loremind
.PARAMETER ComposeUrl
URL du fichier docker-compose.yml a recuperer. Defaut : version officielle du depot.
@@ -39,7 +39,7 @@
.NOTES
Auteur : ietm64
Licence : AGPL-3.0
- Projet : LoreMindMJ - assistant pour Maitres de Jeu de JDR
+ Projet : DM Loremind - assistant pour Maitres de Jeu de JDR
Version : 0.8.3
.LINK
@@ -48,7 +48,7 @@
[CmdletBinding()]
param(
- [string]$InstallDir = "$env:LOCALAPPDATA\LoreMind",
+ [string]$InstallDir = "$env:LOCALAPPDATA\DM Loremind",
[string]$ComposeUrl = "https://raw.githubusercontent.com/IGMLcreation/LoreMind/main/docker-compose.yml",
[int]$WebPort = 8081,
[switch]$NonInteractive
@@ -142,7 +142,7 @@ if (-not (Test-Admin)) {
Write-Host ""
Write-Host "============================================================"
-Write-Host " LoreMindMJ - Installeur Windows" -ForegroundColor Magenta
+Write-Host " DM Loremind - Installeur Windows" -ForegroundColor Magenta
Write-Host "============================================================"
Write-Host ""
@@ -250,7 +250,7 @@ if ($llmProvider -eq 'onemin' -and -not $NonInteractive) {
# pare-feu pour que Docker puisse l'atteindre sans exposer le port.
# 2. Embarque : Ollama tourne dans un conteneur Docker dedie (profile local-ollama).
# 3. Aucun : on n'installe rien tout de suite. L'utilisateur configurera
-# Ollama plus tard via la page Parametres de LoreMind.
+# Ollama plus tard via la page Parametres de DM Loremind.
$ollamaMode = 'embedded' # valeurs : 'host' | 'embedded' | 'none'
$ollamaBaseUrl = 'http://ollama:11434'
if ($llmProvider -eq 'ollama') {
@@ -298,7 +298,7 @@ if ($llmProvider -eq 'ollama') {
# sera installe plus tard sur l'hote. L'utilisateur peut aussi changer
# l'URL via la page Parametres pour pointer vers un Ollama distant.
$ollamaBaseUrl = 'http://host.docker.internal:11434'
- Write-Warn2 "Aucun Ollama ne sera installe pour le moment. Configurez-le plus tard via la page Parametres de LoreMind."
+ Write-Warn2 "Aucun Ollama ne sera installe pour le moment. Configurez-le plus tard via la page Parametres de DM Loremind."
}
}
@@ -404,7 +404,7 @@ if ($ollamaMode -eq 'embedded' -and $llmProvider -eq 'ollama') {
$url = "http://localhost:$WebPort"
Write-Host ""
Write-Host "============================================================" -ForegroundColor Green
-Write-Host " LoreMindMJ est lance !" -ForegroundColor Green
+Write-Host " DM Loremind est lance !" -ForegroundColor Green
Write-Host "============================================================" -ForegroundColor Green
Write-Host " URL : $url"
Write-Host " Identifiant : $adminUser"
diff --git a/installers/install.sh b/installers/install.sh
index 4540d74..5763e68 100644
--- a/installers/install.sh
+++ b/installers/install.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# ==========================================================================
-# Installeur LoreMindMJ pour Linux (Debian/Ubuntu/Fedora/Arch)
+# Installeur DM Loremind pour Linux (Debian/Ubuntu/Fedora/Arch)
# Usage :
# curl -fsSL https://raw.githubusercontent.com/IGMLcreation/LoreMind/main/installers/install.sh | bash
# ==========================================================================
@@ -71,7 +71,7 @@ install_docker() {
# ---------------------------------------------------------------------------
echo
echo "============================================================"
-echo -e " ${c_cyan}LoreMindMJ - Installeur Linux${c_off}"
+echo -e " ${c_cyan}DM Loremind - Installeur Linux${c_off}"
echo "============================================================"
echo
@@ -169,7 +169,7 @@ if [ "$LLM_PROVIDER" = "ollama" ]; then
# sera installe plus tard sur l'hote. L'utilisateur peut aussi
# changer l'URL via la page Parametres pour un Ollama distant.
OLLAMA_BASE_URL_VAL="http://host.docker.internal:11434"
- warn "Aucun Ollama ne sera installe pour le moment. Configurez-le plus tard via la page Parametres de LoreMind."
+ warn "Aucun Ollama ne sera installe pour le moment. Configurez-le plus tard via la page Parametres de DM Loremind."
;;
esac
fi
@@ -268,7 +268,7 @@ fi
URL="http://localhost:${WEB_PORT}"
echo
echo -e "${c_green}============================================================${c_off}"
-echo -e "${c_green} LoreMindMJ est lance !${c_off}"
+echo -e "${c_green} DM Loremind est lance !${c_off}"
echo -e "${c_green}============================================================${c_off}"
echo " URL : $URL"
echo " Identifiant : $ADMIN_USERNAME"
diff --git a/installers/secure-host-ollama.ps1 b/installers/secure-host-ollama.ps1
index cbf2b82..7ebc0d6 100644
--- a/installers/secure-host-ollama.ps1
+++ b/installers/secure-host-ollama.ps1
@@ -1,10 +1,10 @@
#Requires -Version 5.1
<#
.SYNOPSIS
- Configuration securisee d'Ollama hote pour LoreMindMJ (Windows).
+ Configuration securisee d'Ollama hote pour DM Loremind (Windows).
.DESCRIPTION
- But : permettre au conteneur Docker LoreMind d'atteindre l'Ollama installe
+ But : permettre au conteneur Docker DM Loremind d'atteindre l'Ollama installe
sur l'hote, SANS exposer Ollama sur le LAN ni Internet.
Strategie (specifique a Docker Desktop / WSL2 sur Windows) :
diff --git a/installers/secure-host-ollama.sh b/installers/secure-host-ollama.sh
index 9b5dcda..671add0 100644
--- a/installers/secure-host-ollama.sh
+++ b/installers/secure-host-ollama.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# ============================================================================
-# LoreMindMJ - Configuration securisee d'Ollama hote (Linux)
+# DM Loremind - Configuration securisee d'Ollama hote (Linux)
# ----------------------------------------------------------------------------
# But : permettre au conteneur Docker de LoreMind d'atteindre l'Ollama
# installe sur l'hote, SANS l'exposer sur le LAN ni Internet.
diff --git a/web/package-lock.json b/web/package-lock.json
index 889106d..4190165 100644
--- a/web/package-lock.json
+++ b/web/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "loremind-web",
- "version": "0.17.3",
+ "version": "0.18.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "loremind-web",
- "version": "0.17.3",
+ "version": "0.18.0",
"dependencies": {
"@angular/animations": "^21.2.16",
"@angular/common": "^21.2.16",
diff --git a/web/package.json b/web/package.json
index 275ed97..4758a73 100644
--- a/web/package.json
+++ b/web/package.json
@@ -1,6 +1,6 @@
{
"name": "loremind-web",
- "version": "0.17.3",
+ "version": "0.18.0",
"description": "LoreMind Frontend - Angular",
"scripts": {
"ng": "ng",
diff --git a/web/src/app/app.component.html b/web/src/app/app.component.html
index 29a255c..2e0305d 100644
--- a/web/src/app/app.component.html
+++ b/web/src/app/app.component.html
@@ -20,6 +20,3 @@
-
-
-
diff --git a/web/src/app/app.component.ts b/web/src/app/app.component.ts
index 66d9756..d49295f 100644
--- a/web/src/app/app.component.ts
+++ b/web/src/app/app.component.ts
@@ -6,7 +6,6 @@ import { SecondarySidebarComponent } from './shared/secondary-sidebar/secondary-
import { GlobalSearchComponent } from './shared/global-search/global-search.component';
import { UpdateBannerComponent } from './shared/update-banner/update-banner.component';
import { ConfirmDialogHostComponent } from './shared/confirm-dialog/confirm-dialog-host.component';
-import { FirstRunLanguageComponent } from './shared/first-run-language/first-run-language.component';
import { LayoutService } from './services/layout.service';
import { GlobalSearchService } from './services/global-search.service';
import { VersionCheckerService } from './services/version-checker.service';
@@ -20,7 +19,6 @@ import { VersionCheckerService } from './services/version-checker.service';
GlobalSearchComponent,
UpdateBannerComponent,
ConfirmDialogHostComponent,
- FirstRunLanguageComponent,
AsyncPipe
],
templateUrl: './app.component.html',
diff --git a/web/src/app/services/language.service.ts b/web/src/app/services/language.service.ts
index 091734b..9d54007 100644
--- a/web/src/app/services/language.service.ts
+++ b/web/src/app/services/language.service.ts
@@ -77,23 +77,13 @@ export class LanguageService {
}
private resolveInitialLang(): string {
+ // 1) Choix mémorisé (sélecteur in-app) → prioritaire.
const stored = this.read();
if (stored && this.languages.some((l) => l.code === stored)) {
return stored;
}
- const browser = this.translate.getBrowserLang();
- if (browser && this.languages.some((l) => l.code === browser)) {
- return browser;
- }
- return this.defaultLang;
- }
-
- /**
- * Vrai si une langue a déjà été choisie explicitement (mémorisée en localStorage).
- * Faux au tout premier lancement → on propose alors l'écran de choix de langue.
- */
- hasExplicitChoice(): boolean {
- return this.read() !== null;
+ // 2) Sinon, détection du système : français → fr, toute autre langue → en.
+ return this.translate.getBrowserLang() === 'fr' ? 'fr' : 'en';
}
private read(): string | null {
diff --git a/web/src/app/shared/first-run-language/first-run-language.component.html b/web/src/app/shared/first-run-language/first-run-language.component.html
deleted file mode 100644
index 58ce620..0000000
--- a/web/src/app/shared/first-run-language/first-run-language.component.html
+++ /dev/null
@@ -1,17 +0,0 @@
-@if (visible) {
-
-
-

-
Bienvenue · Welcome
-
Choisissez votre langue · Choose your language
-
- @for (opt of options; track opt.code) {
-
- }
-
-
-
-}
diff --git a/web/src/app/shared/first-run-language/first-run-language.component.scss b/web/src/app/shared/first-run-language/first-run-language.component.scss
deleted file mode 100644
index 5372ccc..0000000
--- a/web/src/app/shared/first-run-language/first-run-language.component.scss
+++ /dev/null
@@ -1,76 +0,0 @@
-.flo-overlay {
- position: fixed;
- inset: 0;
- z-index: 10000;
- display: flex;
- align-items: center;
- justify-content: center;
- padding: 1.5rem;
- background: rgba(10, 10, 20, 0.82);
- backdrop-filter: blur(8px);
- -webkit-backdrop-filter: blur(8px);
-}
-
-.flo-card {
- width: 100%;
- max-width: 420px;
- padding: 2.5rem 2rem;
- text-align: center;
- background: #12121f;
- border: 1px solid rgba(108, 99, 255, 0.25);
- border-radius: 18px;
- box-shadow: 0 30px 80px -30px rgba(0, 0, 0, 0.8);
-}
-
-.flo-logo {
- width: 64px;
- height: 64px;
- border-radius: 14px;
- object-fit: contain;
-}
-
-.flo-title {
- margin: 1rem 0 0.3rem;
- font-size: 1.5rem;
- font-weight: 700;
- color: #fff;
-}
-
-.flo-sub {
- margin: 0 0 1.8rem;
- font-size: 0.95rem;
- color: #9ca3af;
-}
-
-.flo-buttons {
- display: flex;
- flex-direction: column;
- gap: 0.75rem;
-}
-
-.flo-btn {
- display: flex;
- align-items: center;
- gap: 0.9rem;
- width: 100%;
- padding: 0.9rem 1.1rem;
- font-size: 1.05rem;
- font-weight: 600;
- color: #e0e0e0;
- background: rgba(108, 99, 255, 0.08);
- border: 1px solid rgba(108, 99, 255, 0.25);
- border-radius: 12px;
- cursor: pointer;
- transition: background 0.15s, border-color 0.15s, transform 0.12s;
-}
-
-.flo-btn:hover {
- background: rgba(108, 99, 255, 0.18);
- border-color: rgba(108, 99, 255, 0.5);
- transform: translateY(-1px);
-}
-
-.flo-flag {
- font-size: 1.5rem;
- line-height: 1;
-}
diff --git a/web/src/app/shared/first-run-language/first-run-language.component.ts b/web/src/app/shared/first-run-language/first-run-language.component.ts
deleted file mode 100644
index 661d267..0000000
--- a/web/src/app/shared/first-run-language/first-run-language.component.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import { Component, inject } from '@angular/core';
-import { LanguageService } from '../../services/language.service';
-
-/**
- * Écran de choix de langue au TOUT PREMIER lancement (overlay one-shot).
- *
- * Ne s'affiche que si aucune langue n'a encore été choisie explicitement
- * (cf. LanguageService.hasExplicitChoice). Le choix est mémorisé en localStorage
- * via LanguageService.use() → aux lancements suivants l'overlay ne réapparaît pas,
- * et le sélecteur de langue habituel prend le relais.
- *
- * Textes volontairement BILINGUES / neutres (l'utilisateur n'a pas encore choisi).
- */
-@Component({
- selector: 'app-first-run-language',
- standalone: true,
- templateUrl: './first-run-language.component.html',
- styleUrls: ['./first-run-language.component.scss'],
-})
-export class FirstRunLanguageComponent {
- private readonly language = inject(LanguageService);
-
- visible = !this.language.hasExplicitChoice();
-
- /** Libellés NATIFs (indépendants de la langue courante). */
- readonly options: ReadonlyArray<{ code: string; native: string; flag: string }> = [
- { code: 'fr', native: 'Français', flag: '🇫🇷' },
- { code: 'en', native: 'English', flag: '🇬🇧' },
- ];
-
- choose(code: string): void {
- this.language.use(code); // applique + mémorise
- this.visible = false;
- }
-}