Commit Graph
7 Commits
Author SHA1 Message Date
mathieuandClaude Opus 5 abaa520f59 Ouvre une voie d'hébergement hors YunoHost, en disant ce qu'elle coûte
Un tiers veut installer le projet sur un Synology, où rien du paquet
`_ynh` n'existe. L'application n'étant qu'un processus et un fichier
SQLite, un `Dockerfile` suffit — mais l'essentiel n'est pas là.

Sans portail SSO, il n'y a pas d'identité, et l'application ne s'en
invente pas : les données personnelles se ferment, les communes non.
Mesuré plutôt que supposé, et écrit comme tel : les deux replis
(utilisateur simulé, en-tête injecté) n'authentifient personne, et le
port ne doit être publié que sur la boucle locale.

Le déploiement de référence reste `mabibli_ynh`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 23:23:49 +02:00
mathieuandClaude Opus 5 63bf6be3e1 Documente qu'il n'y a plus qu'un script, et pourquoi il refuse
La chaîne de publication n'a plus qu'un point d'entrée. README.md décrit
`publier.sh` seul, ses deux refus (tag déjà pris, dépôt du code sale) et
le mode `--archive-seule` pour la marche à pied ; CLAUDE.md acte la fusion
et ce qu'elle empêche de refaire.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 23:12:52 +02:00
mathieuandClaude Opus 5 498579f27b Dis à l'application quelle version elle est, et sous quelle licence
Page « À propos » (/a-propos) : manuel annoncé à venir, contact, site de
l'auteur, version publiée avec sa date de build, et licence AGPL v3 avec le
lien vers le dépôt — l'AGPL attend que les utilisateurs d'un service en réseau
puissent en obtenir la source, ce lien n'est donc pas un ornement.

L'application ne connaissait pas sa version : elle vivait dans le manifeste du
paquet et dans les tags git, jamais dans le binaire. `build/publier-release.sh`
pose désormais `-p:Version` et `-p:MaBibliDateBuild` ; l'API rend les deux par
`GET /api/version`.

⚠️ L'horodatage est le TÉMOIN de l'injection, et rien ne le calcule côté
MSBuild. Sans lui, la version lue serait le « 1.0.0 » que le SDK pose par
défaut : il se lirait comme une vraie version alors qu'il ne désigne rien, et
c'est exactement la valeur qu'on ira chercher pour diagnostiquer un appareil au
cache dépareillé. Mieux vaut ne rien annoncer — un binaire compilé à la main se
déclare « version de développement », ce qui est vrai.

Autres décisions :

- l'entrée du menu est DÉTACHÉE des six destinations, par un filet au-dessus
  sur téléphone et à gauche en rangée sur PC : « À propos » est une annexe, pas
  une septième destination. Ses règles vivent en feuille GLOBALE, comme tout le
  menu — une règle scopée n'atteint pas ce que rend un NavLink ;
- le « mailto: » reste un lien même hors-ligne : il ne charge aucune page et
  passe la main au client de messagerie, qui sait mettre un message en attente.
  Le site et le dépôt, eux, basculent en boutons désactivés portant leur motif,
  comme les liens d'export des envies ;
- la version est un sixième instantané hors-ligne : on la lit justement quand
  quelque chose ne va pas, et un appareil qu'on soupçonne est souvent celui qui
  n'a plus de réseau. L'écran dit alors que c'est la dernière version vue du
  serveur.

Le point de rupture de 40 rem reste identique dans les deux feuilles, et
/a-propos est inscrite dans la table de remontée des routes.

Vérifié en exécution, l'API lancée : sans injection
`{"numero":null,"publiee":false}`, avec `-p:Version=0.4.1
-p:MaBibliDateBuild=…` `{"numero":"0.4.1","publiee":true}`. Le rendu des écrans
n'a PAS été vérifié en navigateur. 618 tests au vert (605 avant).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 14:50:34 +02:00
mathieuandClaude Opus 5 347e1ce7fd Regroupe toute la documentation dans le README principal
PUBLICATION.md et A_FAIRE.md du dépôt du paquet sont fondus ici, avec le contenu
et les points de conception de mabibli_ynh/README.md. Une seule chaîne de
publication et un seul projet : deux jeux de documentation finissaient par
diverger, sans qu'on sache lequel faisait autorité.

Restent à part doc/DESCRIPTION.md et doc/ADMIN.md, que YunoHost lit lui-même
pour les afficher dans son catalogue et son interface d'administration.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 19:49:30 +02:00
LIMONIER MathieuandCopilot cf5ada8bab Documenter la compilation et la publication dans le README
Ajoute les sections Compilation (dotnet build/test, publish
self-contained linux-x64) et Publication (script publier-release.sh
de mabibli_ynh, renvoi vers PUBLICATION.md pour la marche complète).
Corrige au passage la mention du scanner (ZXing.Net -> zbar), devenue
inexacte depuis la bascule documentée dans CLAUDE.md.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-20 15:04:05 +02:00
mathieuandClaude Opus 5 a5392cedac Acter les cinq decisions structurantes (offline, portee, ISBN, SSO, ebooks)
- Hors-ligne : consultation seule via cache des reponses GET. SQLite WASM
  cote client ecarte. L'UI devra desactiver explicitement les ecritures
  hors-ligne plutot que de les laisser echouer.
- Portee des donnees : collection commune au foyer. `UtilisateurId`
  (proprietaire) devient `AjoutePar` (tracabilite) — ne jamais filtrer les
  lectures dessus.
- Sources ISBN : BnF (SRU) en principale, OpenLibrary en secours. Motif :
  OpenLibrary est lacunaire sur le fonds francais. API BnF pas encore
  testee, a valider avant implementation.
- SSO : en-tetes SSOwat `YNH_USER` / `YNH_USER_EMAIL` / `YNH_USER_FULLNAME`.
  OIDC ecarte, non documente par YunoHost (verifie ce jour). Corrige au
  passage le nom d'en-tete, qui n'est pas `Remote-User`.
- Ebooks : fiches uniquement, pas de stockage de fichiers. Les prets ne
  concernent donc que les livres physiques.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 21:21:38 +02:00
mathieuandClaude Opus 5 d56061db6b Sortir les sources du tarball et acter ZXing.Net pour le scan ISBN
Le dépôt ne versionnait qu'une archive `mabibli-init.tar.gz`, ce qui
empêchait git de suivre le contenu des fichiers. Les trois fichiers sont
désormais à plat et l'archive est supprimée.

Scan ISBN : remplacement de `html5-qrcode` par ZXing.Net (C#, Apache 2.0).
Validé concrètement en .NET 10 — round-trip EAN-13 OK, publish Blazor WASM
OK, 0,53 ms/frame dans le pire cas (échec sur frame 640x480 bruitée),
+192 Ko brotli sur le payload. Motif principal : le décodage reste
réutilisable hors navigateur si le projet évolue en scanner de
bibliothèque.

Clarification du besoin hors-ligne : consultation de la bibliothèque
existante uniquement. Signale au passage que SQLite vit côté serveur et
qu'un cache client sera nécessaire — point d'architecture non résolu.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 21:01:46 +02:00