From 930f74147f1ced163ec4e58cb810e95d72a1b2d4 Mon Sep 17 00:00:00 2001 From: r-zakarya <82443831+r-zakarya@users.noreply.github.com> Date: Mon, 17 Aug 2026 15:20:11 +0100 Subject: [PATCH] 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 --- android-client/PLAN.md | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/android-client/PLAN.md b/android-client/PLAN.md index afbb162..7a3fca8 100644 --- a/android-client/PLAN.md +++ b/android-client/PLAN.md @@ -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 *Sync* explicite au moins une fois. -**Reste à faire** : le PUT (§4 seulement — la lecture n'écrit rien), la même -bascule côté poste Windows en remplacement de WebDAV, et une purge périodique de -l'historique — sans quoi le dépôt grossit +### Le poste publie aussi — vérifié le 2026-08-17 + +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. ## Ordre proposé