The deliverable is a single-file portable executable whose Electron the project updates itself. The shell keeps context isolation on, Node integration off and the page sandboxed; one IPC channel returns the folder the portable launcher publishes. The build runs in a no-Wine image pinned by digest, relays no host variable, refuses to overwrite a built number, removes what a failed build leaves, and accepts only the name version.json gives. The spec stops claiming the portable target needs Wine. Checked: exe built in 86 s, resource FileVersion 2026.1005.1.0 and © 2026 TechnoLibre; 109 node tests pass; two end-of-build mutations fail. --- FR --- [ADD] electron : coquille propre, exécutable portable construit sous podman Le livrable est un exécutable portable à fichier unique, dont le projet met lui-même Electron à jour. La coquille garde l'isolation de contexte, coupe l'intégration de Node et isole la page ; un seul canal IPC rend le dossier que publie le lanceur portable. La construction s'exécute dans une image sans Wine épinglée par empreinte, ne relaie aucune variable de l'hôte, refuse d'écraser un numéro construit, retire ce qu'un échec laisse, et n'accepte que le nom que donne version.json. Le spec cesse d'affirmer que la cible portable exige Wine. Vérifié : exécutable construit en 86 s, ressource FileVersion 2026.1005.1.0 et © 2026 TechnoLibre ; 109 épreuves node passent ; deux mutations du contrôle de fin échouent. Assisted-by: Claude Opus 5.5
10 lines
550 B
JavaScript
10 lines
550 B
JavaScript
// © 2026 TechnoLibre (http://www.technolibre.ca)
|
|
// License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
|
|
|
|
// Version voisine d'une version affichée AAAA.MM.JJ.NN valide, pour les
|
|
// épreuves qui ont besoin d'une seconde version : même date, rang 01 changé
|
|
// en 02 et tout autre rang en 01. La date reste valide quelle qu'elle soit,
|
|
// un 29 février compris, et la voisine diffère toujours de la version reçue.
|
|
export function versionVoisine(version) {
|
|
return version.replace(/\d{2}$/, (rang) => (rang === '01' ? '02' : '01'));
|
|
}
|