gestion_table_tournante_libre/src/stockage
Mathieu Benoit 82e57f47df [FIX] web storage: refuse a name Chromium did not convert, UTF-8 launch
Under a non-UTF-8 locale, Chromium returns the parent folder for an
accented folder name without raising, so a write meant for that folder
replaced a file of the same name in its parent. Each step of a path walk
now compares the handle with its parent and refuses NOM_NON_CONVERTI —
LECTURE on reads, ECRITURE on writes — and nothing lands elsewhere. The
test launcher gives Chromium LANG=C.UTF-8 when the locale is not UTF-8, as
the containers do, and the matrix installs ps where an image lacks it.
Checked: 1776 node and 45 browser tests; the guard holds under LC_ALL=C.

--- FR ---

[FIX] stockage web : refuser un nom non converti, lancement en UTF-8

Hors locale UTF-8, Chromium rend le dossier parent pour un nom de dossier
accentué, sans lever : une écriture destinée à ce dossier remplaçait un
fichier homonyme de son parent. Chaque pas d'un chemin compare désormais le
dossier obtenu à son parent et refuse NOM_NON_CONVERTI — LECTURE en lecture,
ECRITURE en écriture — : rien n'atterrit ailleurs. Le lanceur des épreuves
donne LANG=C.UTF-8 à Chromium quand la locale n'est pas UTF-8, comme les
conteneurs, et la matrice installe ps là où une image en manque.
Vérifié : 1776 node, 45 navigateur ; la garde tient sous LC_ALL=C.

Assisted-by: Claude Opus 5.5
2026-10-07 02:35:12 -04:00
..
canonique.js [ADD] storage: event document, canonical form, consistency check 2026-10-06 13:11:34 -04:00
canonique.test.js [FIX] storage: compact seat patches, checked poses, 32-bit identifiers 2026-10-06 19:22:02 -04:00
correctifs.js [ADD] storage: empty chair in a table list when seats are assigned 2026-10-07 02:31:26 -04:00
correctifs.test.js [ADD] storage: empty chair in a table list when seats are assigned 2026-10-07 02:31:26 -04:00
depot.js [FIX] storage, session: strict UTF-8, lost journal, lock, exclusions 2026-10-07 01:20:42 -04:00
depot.long.test.js [ADD] storage: measured cost of a complete save on the big demo 2026-10-06 23:05:57 -04:00
depot.test.js [FIX] storage, session: strict UTF-8, lost journal, lock, exclusions 2026-10-07 01:20:42 -04:00
document.js [ADD] storage: empty chair in a table list when seats are assigned 2026-10-07 02:31:26 -04:00
document.test.js [ADD] storage: empty chair in a table list when seats are assigned 2026-10-07 02:31:26 -04:00
dossier_travail.js [ADD] storage: working-folder rule, portable data/ or Documents 2026-10-06 14:47:22 -04:00
dossier_travail.test.js [ADD] storage: working-folder rule, portable data/ or Documents 2026-10-06 14:47:22 -04:00
erreurs.js [FIX] storage, session: strict UTF-8, lost journal, lock, exclusions 2026-10-07 01:20:42 -04:00
fichiers_electron.js [ADD] electron: confined file system, atomic writes, lock, bridge 2026-10-06 17:34:31 -04:00
fichiers_web.js [FIX] web storage: refuse a name Chromium did not convert, UTF-8 launch 2026-10-07 02:35:12 -04:00
fichiers_web.navigateur.test.js [FIX] web storage: refuse a name Chromium did not convert, UTF-8 launch 2026-10-07 02:35:12 -04:00
journal.js [FIX] storage, session: strict UTF-8, lost journal, lock, exclusions 2026-10-07 01:20:42 -04:00
journal.long.test.js [ADD] storage: append-only journal, snapshots every fifty, undo threads 2026-10-06 14:45:56 -04:00
journal.test.js [FIX] storage, session: strict UTF-8, lost journal, lock, exclusions 2026-10-07 01:20:42 -04:00
noms.js [ADD] storage: copy, rename, import, delete events; local settings 2026-10-06 23:17:05 -04:00
noms.test.js [ADD] storage: event file names that Windows accepts, bounded paths 2026-10-06 13:11:37 -04:00
operations.js [FIX] storage, session: strict UTF-8, lost journal, lock, exclusions 2026-10-07 01:20:42 -04:00
operations.test.js [FIX] storage, session: strict UTF-8, lost journal, lock, exclusions 2026-10-07 01:20:42 -04:00
placements.js [ADD] storage: empty chair in a table list when seats are assigned 2026-10-07 02:31:26 -04:00
placements.test.js [ADD] storage: empty chair in a table list when seats are assigned 2026-10-07 02:31:26 -04:00
reglages_locaux.js [ADD] storage: copy, rename, import, delete events; local settings 2026-10-06 23:17:05 -04:00
reglages_locaux.test.js [ADD] storage: copy, rename, import, delete events; local settings 2026-10-06 23:17:05 -04:00
systeme_fichiers.js [FIX] electron: lock liveness only when certain, retries on every write 2026-10-07 02:00:36 -04:00
systeme_fichiers.test.js [ADD] storage: file-system interface, failing test double, contract 2026-10-06 13:12:25 -04:00
types.js [FIX] storage, session: strict UTF-8, lost journal, lock, exclusions 2026-10-07 01:20:42 -04:00