docs: section 6 is done - both ends sync through Gitea

The full round trip ran: the desktop pushes (second commit in pm_sync), the
phone reads what it published. The proof was one entry - "gitea token read",
created on the desktop, appeared on the phone without touching sync.php or
WebDAV, and the trash did not travel, which is what buildSyncSnapshot intends.

Recorded with it are the three details that would cost an evening to
rediscover: sha omitted rather than empty on a first push, branch omitted so
the repo default is used, and the desktop token needing write:repository while
the phone keeps read.

Also recorded, though unrelated to sync: settings sections are mapped to tabs
by their visible label text, so renaming one moves the section to the wrong tab.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-08-17 15:20:11 +01:00
parent eac3cac9d6
commit 930f74147f
+29 -3
View File
@@ -470,9 +470,35 @@ Deux frottements rencontrés en chemin, tous deux corrigés :
rangé avec le coffre, pas le champ. Changer de conteneur demande donc un rangé avec le coffre, pas le champ. Changer de conteneur demande donc un
*Sync* explicite au moins une fois. *Sync* explicite au moins une fois.
**Reste à faire** : le PUT (§4 seulement — la lecture n'écrit rien), la même ### Le poste publie aussi — vérifié le 2026-08-17
bascule côté poste Windows en remplacement de WebDAV, et une purge périodique de
l'historique — sans quoi le dépôt grossit Les deux bouts parlent Gitea, et le trajet complet a tourné : le poste pousse
(`sync from test`, 2ᵉ commit dans `pm_sync`), le téléphone lit l''instantané
publié. La preuve tenait dans une entrée : *gitea token read*, créée sur le
poste, est apparue sur le téléphone sans jamais passer par `sync.php` ni WebDAV.
Côté poste, tout est confiné à deux endroits : le pont ([UMainForm.pas](../delphi-backend/UMainForm.pas))
change l''en-tête et le type de contenu, et [app.sync.js](../js/app.sync.js) lit
et construit l''enveloppe JSON. Le `sha` remplace l''ETag partout, et le **409**
de Gitea est traité comme le **412** de WebDAV — on rejoue pull→fusion→push.
Trois détails qui coûtent une soirée si on les redécouvre :
- `sha` **omis** et non vide au premier envoi : Gitea lit sa présence comme
« remplace cette version précise ».
- `branch` omis aussi, pour prendre la branche par défaut du dépôt plutôt qu''un
nom devine.
- le jeton du poste doit être en **`write:repository`** ; celui du téléphone
reste en lecture.
**Piège rencontré, sans rapport avec la sync** : `applySettingsTab` associe les
sections de réglages aux onglets **par le texte de leur intitulé**. Renommer
« Sync (WebDAV) » a fait retomber la section sur `general` — pas perdue, mais
sous le mauvais onglet, ce qui est pire qu''absente.
**Reste à faire** : le PUT depuis le téléphone (§4 seulement — la lecture
n''écrit rien), retirer WebDAV le jour où il n''a plus d''usage, et une purge
périodique de l''historique — sans quoi le dépôt grossit
d'un instantané complet à chaque synchronisation, pièces jointes comprises. d'un instantané complet à chaque synchronisation, pièces jointes comprises.
## Ordre proposé ## Ordre proposé