[ADD] electron: own shell, portable Windows exe built under podman
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
2026-10-05 13:13:32 -04:00
|
|
|
// © 2026 TechnoLibre (http://www.technolibre.ca)
|
|
|
|
|
// License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
|
|
|
|
|
|
|
|
|
|
// Configuration d'electron-builder : un exécutable Windows portable à fichier
|
|
|
|
|
// unique (§ 16), nommé d'après la version datée (§ 18.2).
|
|
|
|
|
//
|
|
|
|
|
// electron-builder ne lit ce fichier que par « --config
|
|
|
|
|
// electron-builder.config.cjs » : son nom n'est pas de ceux qu'il cherche
|
|
|
|
|
// seul, et sans lui il retombe sur ses défauts, dont un installateur. Le
|
|
|
|
|
// script scripts/construire_windows.sh le lui passe.
|
|
|
|
|
//
|
|
|
|
|
// Le nom du livrable sort de deriver, appliqué à version.json : la
|
|
|
|
|
// configuration ne le compose pas (§ 13.2). scripts/version.js est un module
|
|
|
|
|
// ESM, chargé ici par require : Node l'accepte depuis 20.19 et 22.12, pour un
|
|
|
|
|
// module sans await de premier niveau.
|
|
|
|
|
const { readFileSync } = require('node:fs');
|
|
|
|
|
const { join } = require('node:path');
|
|
|
|
|
const { deriver } = require('./scripts/version.js');
|
|
|
|
|
|
|
|
|
|
const lireJson = (nom) => JSON.parse(readFileSync(join(__dirname, nom), 'utf8'));
|
|
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
|
// Un seul identifiant pour toutes les plateformes, celui de Capacitor.
|
|
|
|
|
appId: lireJson('capacitor.config.json').appId,
|
|
|
|
|
productName: lireJson('package.json').productName,
|
|
|
|
|
// Champ LegalCopyright de la ressource de version de l'exécutable.
|
|
|
|
|
copyright: '© 2026 TechnoLibre',
|
|
|
|
|
directories: { output: 'dist-electron' },
|
|
|
|
|
// La page construite, la coquille, et package.json, dont electron-builder
|
|
|
|
|
// tire le point d'entrée. package.json ne déclarant aucune dépendance
|
|
|
|
|
// d'exécution, aucun node_modules n'entre dans le paquet.
|
|
|
|
|
files: ['www/**', 'electron/**', 'package.json'],
|
|
|
|
|
artifactName: deriver(lireJson('version.json').version).nomFichier,
|
[IMP] package: keep only French and US English Chromium locales
The portable executable carried Chromium's translations of its own texts
in 55 languages, about 48 MB unpacked, none of which the interface reads:
it holds its own labels. electron-builder now keeps fr and en-US, the
latter being Chromium's fallback. The executable drops from 100.9 MB to
93.1 MB, 326 MB unpacked instead of 373 MB. The package test pins the
list, and the closed list of configuration keys now includes it.
Checked: a full build under podman, locales/ holds fr.pak and en-US.pak
only; node 5175.
--- FR ---
[IMP] paquet : ne garder que les langues de Chromium fr et en-US
L'exécutable portable embarquait les traductions des textes propres à
Chromium en 55 langues, environ 48 Mo décompressés, qu'aucune interface ne
lit : elle porte ses propres libellés. electron-builder ne garde plus que fr
et en-US, la langue de repli de Chromium. L'exécutable passe de 100,9 Mo à
93,1 Mo, 326 Mo décompressé au lieu de 373 Mo. L'épreuve du livrable fige la
liste, et la liste fermée des clés de la configuration l'inclut.
Vérifié : une construction complète sous podman, locales/ ne contient que
fr.pak et en-US.pak ; node 5175.
Assisted-by: Claude Opus 5.5
2026-10-14 00:52:27 -04:00
|
|
|
// Les traductions des textes propres à Chromium (locales/*.pak) gardées
|
|
|
|
|
// dans le paquet : le français, et l'anglais des États-Unis, la langue de
|
|
|
|
|
// repli de Chromium. L'interface ne les lit pas : elle porte ses libellés.
|
|
|
|
|
electronLanguages: ['fr', 'en-US'],
|
[ADD] electron: own shell, portable Windows exe built under podman
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
2026-10-05 13:13:32 -04:00
|
|
|
win: { target: [{ target: 'portable', arch: ['x64'] }] },
|
|
|
|
|
};
|