From 9e31e147b55c85e231b96113b0be52f56ebc657a Mon Sep 17 00:00:00 2001 From: mathieu Date: Sat, 22 Aug 2026 13:03:45 +0200 Subject: [PATCH] Remplace l'URL du depot par un placeholder, et dit quoi changer avant de publier MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sortie du projet. Le README ouvre desormais sur une section « A faire avant de publier ce projet quelque part » : ce que commande la ligne unique de publier.sh, ce qui reste a changer a la main, et ce qu'il ne faut surtout PAS changer a la main (amd64.url, reecrite a chaque publication). ⚠ Le remplacement de fichiers ne regle pas l'historique git, qui porte ces URL dans chaque ancien commit. Seul un depot neuf sans historique en vient a bout. Restent volontairement : maintainers, l'adresse de contact et le site de l'auteur dans /a-propos — l'AGPL attend qu'on puisse joindre la source, donc l'auteur. 626 tests au vert. Co-Authored-By: Claude Opus 5 --- CLAUDE.md | 34 +++++++++++++++++++-- MaBibli.Client/Pages/APropos.razor | 2 +- README.md | 48 ++++++++++++++++++++++++++---- 3 files changed, 75 insertions(+), 9 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 51d2d32..978c7bd 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -2374,6 +2374,36 @@ référencés mais qui partaient dans chaque release. L'archive passe de **69 à l'écart est bien moindre que sur disque (8,4 Mo), les *source maps* étant du texte qui se compresse très bien. **Toujours mesurer sur l'archive, jamais sur le disque.** +## Les URL de dépôt sont un placeholder — sortie du projet (2026-08-22) + +`https://forge.example.org/mabibli` remplace partout l'URL du Gitea privé de l'utilisateur. +`example.org` est réservé à la documentation par la **RFC 2606** : le placeholder est donc +définitivement injoignable, ce qui est exactement ce qu'on veut d'un placeholder. + +⚠️ **Une seule ligne commande tout** : `depot_code`, en tête de `build/publier.sh`. Les URL +de release, d'archive et le message de fin en dérivent. `--depot-code URL` fait la même +chose sans modifier le fichier. + +⚠️ **`publier.sh` REFUSE de publier tant que le placeholder est en place**, et il refuse +**avant de compiler**, comme ses autres garde-fous. Sans lui, on écrirait dans +`manifest.toml` une `amd64.url` que personne ne peut télécharger — et l'échec surviendrait +**bien plus loin**, à l'installation, sous la forme d'un `ynh_setup_source` en erreur, sans +rapport apparent avec la cause. C'est la même famille de panne que le manifeste corrigé mais +non poussé : un défaut posé ici, constaté ailleurs. + +⚠️ **Ce que le remplacement de fichiers ne règle PAS** : l'**historique git** porte ces URL +dans chaque ancien commit, et le dépôt du paquet contient en plus une archive de 68 Mo +committée par erreur à la 0.1.0 puis retirée. Seul un dépôt **neuf, sans historique**, en +vient à bout — c'est ce qui a été décidé pour la sortie. + +⚠️ **`amd64.url` ne se change pas à la main** : `publier.sh` la réécrit à chaque +publication. La corriger donnerait l'illusion que c'est fait. + +Ce qui **reste** volontairement : `maintainers = ["mathieu"]` (c'est le champ prévu par le +format v2), l'adresse de contact et le site de l'auteur dans `/a-propos` (décidé au lot Y — +l'AGPL attend d'ailleurs qu'on puisse joindre la source, donc l'auteur), et `"mathieu"` +comme nom de lecteur dans les jeux de test. + ## Historique du projet (pourquoi ces choix) L'utilisateur a testé deux solutions existantes avant de se lancer dans un projet custom : @@ -2692,8 +2722,8 @@ Vérifié en exécution, styles calculés à l'appui : à 375 px, menu déployé Relevé dans la console de l'application installée, le 2026-08-20 : ``` -Access to manifest at 'https://akbar.nohost.me/yunohost/sso?r=…' - (redirected from 'https://mabibli.akbar.nohost.me/manifest.webmanifest') +Access to manifest at 'https://exemple.tld/yunohost/sso?r=…' + (redirected from 'https://mabibli.exemple.tld/manifest.webmanifest') blocked by CORS policy: No 'Access-Control-Allow-Origin' header ``` diff --git a/MaBibli.Client/Pages/APropos.razor b/MaBibli.Client/Pages/APropos.razor index 1bd3b88..9494151 100644 --- a/MaBibli.Client/Pages/APropos.razor +++ b/MaBibli.Client/Pages/APropos.razor @@ -121,7 +121,7 @@ private const string Site = "https://www.limonier.be"; /// Dépôt du code — ce que l'AGPL attend qu'on rende accessible. - private const string Depot = "https://git.akbar.nohost.me/mathieu/mabibli"; + private const string Depot = "https://forge.example.org/mabibli"; private VersionApplication? _version; diff --git a/README.md b/README.md index 0cd6513..79c6017 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,42 @@ des décisions à destination de Claude Code, et `IDEES.md`, les pistes **non ac | [Publication](#publication) | sortir une version, en une commande | | [Mettre en production](#mettre-en-production) | installer, mettre à jour, revenir en arrière, désinstaller | +## ⚠️ À faire avant de publier ce projet quelque part + +Les URL de dépôt sont un **placeholder volontaire**, `https://forge.example.org/mabibli` +(le domaine `example.org` est réservé à la documentation par la RFC 2606, donc +définitivement injoignable). Rien ne fonctionnera tant qu'il n'est pas remplacé. + +**Une seule ligne commande tout le reste** — `depot_code`, en tête de +`mabibli_ynh/build/publier.sh`. Elle produit les URL de release, celles d'archive, et le +message de fin. Pour un essai ponctuel, `--depot-code https://…` fait la même chose sans +modifier le fichier. + +⚠️ **`publier.sh` refuse de publier tant que le placeholder est en place**, et il refuse +*avant* de compiler. C'est délibéré : publier avec une URL morte écrirait dans +`manifest.toml` une `amd64.url` que personne ne peut télécharger, et l'échec surviendrait +bien plus tard, à l'installation, sous la forme d'un `ynh_setup_source` en erreur — sans +rapport apparent avec la cause. + +Restent à changer à la main, une fois seulement : + +| Fichier | Quoi | +|---|---| +| `mabibli_ynh/manifest.toml` | `code = "…"`, et `maintainers` | +| `mabibli_ynh/conf/systemd.service` | `Documentation=…` | +| `mabibli_ynh/doc/ADMIN.md` | le lien de bas de page | +| `mabibli_ynh/README.md`, ce fichier | les liens et les commandes d'exemple | +| `MaBibli.Client/Pages/APropos.razor` | `Depot`, `Site`, et l'adresse de contact | + +⚠️ **`amd64.url` dans le manifeste n'est PAS à changer à la main** : `publier.sh` la +réécrit à chaque publication. La corriger donnerait l'illusion que c'est fait alors que la +source du problème est ailleurs. + +⚠️ **Le dépôt du code doit être PUBLIC.** `ynh_setup_source` télécharge sans jeton, et +Gitea comme GitHub répondent **404** — pas 403 — à un anonyme sur un dépôt privé. Le +symptôme est alors rigoureusement identique à « la release n'existe pas ». Contrôle qui +tranche, hors session authentifiée : `curl -fsSLI ""`. + ## Demande initiale Gérer une bibliothèque personnelle (livres physiques et numériques), avec : @@ -81,7 +117,7 @@ complet à une machine qui n'en a pas besoin, pour une compilation lente. Voir ## Le paquet YunoHost -MaBibli se déploie via un **second dépôt**, [`mabibli_ynh`](https://git.akbar.nohost.me/mathieu/mabibli_ynh), +MaBibli se déploie via un **second dépôt**, [`mabibli_ynh`](https://forge.example.org/mabibli_ynh), qui **ne contient aucun code C#** : il porte le manifeste, les configurations nginx et systemd, et les scripts d'installation. Toute la documentation, elle, vit ici — ce fichier est le point d'entrée unique du projet. @@ -261,7 +297,7 @@ Vérification, à faire **sans être authentifié** (autre navigateur, ou `curl` ci-dessous) : ```bash -curl -fsSLI "https://git.akbar.nohost.me/mathieu/mabibli/releases/download/v0.1.0/mabibli-0.1.0-linux-x64.tar.gz" | head -1 +curl -fsSLI "https://forge.example.org/mabibli/releases/download/v0.1.0/mabibli-0.1.0-linux-x64.tar.gz" | head -1 ``` Attendu : `HTTP/2 200`. Un 404 signifie soit que la release n'est pas déposée, soit que @@ -283,13 +319,13 @@ Le contrôle qui tranche, quel que soit le chemin suivi — c'est le manifeste * serveur le lira** : ```bash -curl -fsSL "https://git.akbar.nohost.me/mathieu/mabibli_ynh/raw/branch/main/manifest.toml" | grep amd64 +curl -fsSL "https://forge.example.org/mabibli_ynh/raw/branch/main/manifest.toml" | grep amd64 ``` #### A.5 Installer ```bash -sudo yunohost app install https://git.akbar.nohost.me/mathieu/mabibli_ynh --debug +sudo yunohost app install https://forge.example.org/mabibli_ynh --debug ``` YunoHost demande le domaine (celui créé en A.1) et le groupe autorisé (`all_users`). @@ -385,7 +421,7 @@ Créer la release `v0.1.1` dans Gitea, y téléverser `build/dist/mabibli-0.1.1-linux-x64.tar.gz`, puis vérifier sans authentification : ```bash -curl -fsSLI "https://git.akbar.nohost.me/mathieu/mabibli/releases/download/v0.1.1/mabibli-0.1.1-linux-x64.tar.gz" | head -1 +curl -fsSLI "https://forge.example.org/mabibli/releases/download/v0.1.1/mabibli-0.1.1-linux-x64.tar.gz" | head -1 ``` #### B.5 Pousser le paquet @@ -406,7 +442,7 @@ sudo yunohost backup create --apps mabibli ``` ```bash -sudo yunohost app upgrade mabibli -u https://git.akbar.nohost.me/mathieu/mabibli_ynh --debug +sudo yunohost app upgrade mabibli -u https://forge.example.org/mabibli_ynh --debug ``` ⚠️ **L'option `-u` n'est pas facultative ici.** MaBibli n'est pas dans le catalogue