phase: 154_sync_status_freshness
All 4 task files exist in `complete/`, and only `00_phase.md` remains in `todo/`. This is the final verification pass. I'll read through the task files and check the current state of the code.
This commit is contained in:
@@ -306,6 +306,15 @@ first).
|
||||
|
||||
- Re-uploading the same filename replaces the source **in place** (no
|
||||
second folder, no duplicate row).
|
||||
- After the 202 the form settles into the ready-for-sync line
|
||||
"Uploaded <source> (<stamp>) — press Sync sources to import it." —
|
||||
the completion stamp (phase 154: the same date-qualified freshness
|
||||
rule as the sync badge — `HH:MM` on the same local day,
|
||||
`M/D, h:MM AM/PM` otherwise, `M/D/YYYY` across years) rides the
|
||||
line on EVERY render path, so a line that outlives its upload is
|
||||
self-dating: after a reload the source name is gone (it was
|
||||
page-local) but the stamp survives, coming from the server
|
||||
payload's `finished_at`.
|
||||
- Zip-bomb guard: absolute member paths, `..` traversal, and symlinks
|
||||
escaping the unpack folder are rejected.
|
||||
- Archives unpack under `BOR_UPLOAD_DIR` (default `~/bor-sources/uploads`).
|
||||
@@ -358,9 +367,13 @@ whole git-source refresh in one click:
|
||||
pre-phase result-line announcer into the box). At settle the box
|
||||
STAYS visible to carry the result line — the counts line
|
||||
("N added · …") after a success, "Sync cancelled" after a cancel —
|
||||
and the button leaves the running state (the "Synced HH:MM" pill
|
||||
after a success, the retry-ready "Sync sources" pill after a
|
||||
failure); the box hides only when its text is empty (a failed sync
|
||||
and the button leaves the running state (the "Synced <stamp>" pill
|
||||
after a success — the date-qualified freshness stamp (phase 154):
|
||||
`HH:MM` on the same local day, `M/D, h:MM AM/PM` otherwise
|
||||
(`M/D/YYYY` across years — a badge that tells the owner *when*),
|
||||
the bare "Synced" when the stamp is missing — the retry-ready
|
||||
"Sync sources" pill after a failure); the box hides only when its
|
||||
text is empty (a failed sync
|
||||
— the banner + modal carry the error — and the true idle). No
|
||||
client-side timeout — a clone + embed can legitimately take minutes.
|
||||
- One sync at a time: a second trigger while a run is in flight gets a
|
||||
|
||||
Reference in New Issue
Block a user