fix(android): the merge lost folders, and the pending dot was on one screen

Two defects found by re-reading before adding more, along with a test plan.

MergeSnapshots merged entries and tombstones but not folders. A folder created
on the phone - offline, or just before another device published - vanished
from the list while the entries kept its name: filed under a folder nothing
displays, unfindable without knowing it. That is exactly what EnsureFolder was
written against, come back through another door.

The pending dot sat on the padlock, which only exists in the list. After
locking one lands on the home screen - precisely where one decides to sync -
and it said nothing there. It is on Sync as well now.

TESTS.md records what the reading checked and what it left alone, with reasons
for the two defects deliberately not fixed, and a scenario that says what each
step must PRODUCE rather than only what to do.
This commit is contained in:
r-zakarya
2026-08-22 15:24:01 +01:00
parent af2a0dfed8
commit 92ceb1e8c9
3 changed files with 164 additions and 3 deletions
+6 -2
View File
@@ -181,8 +181,8 @@
.btn.ico-btn:active { opacity: .45; }
/* Le point des modifications en attente. Sur le cadenas parce qu'il est
toujours a l'ecran de la liste, et qu'il parle deja de l'etat du coffre. */
.ico.pending { position: relative; }
.ico.pending::after {
.ico.pending, .btn.pending { position: relative; }
.ico.pending::after, .btn.pending::after {
content: ''; position: absolute; top: 6px; right: 6px;
width: 9px; height: 9px; border-radius: 50%;
background: #ffb44d; box-shadow: 0 0 0 2px var(--bg-top);
@@ -1471,7 +1471,11 @@ var PM = {
/// qu'on ne le cherche pas, mais present a chaque coup d'oeil - c'est la
/// seule facon de savoir que le depot ignore encore ce qu'on vient de taper.
setPending: function (on) {
// LES DEUX ECRANS, pas seulement la liste. Apres un verrouillage on
// atterrit sur l'accueil - precisement la ou l'on decide de synchroniser -
// et le cadenas de la liste n'y est plus. Le temoin n'y disait donc rien.
document.getElementById('lock').classList.toggle('pending', !!on);
document.getElementById('btnSync').classList.toggle('pending', !!on);
},
setBusy: function (on) {
if (on) document.getElementById('busy').firstChild.innerHTML =