From 65a09b5c664bfd7866ef781fd752eb7a44736aeb Mon Sep 17 00:00:00 2001 From: timmy Date: Sat, 8 Aug 2026 02:41:09 +0000 Subject: [PATCH] feat: add mobile Later queue (#254) --- README.md | 8 ++ frontend/index.html | 68 ++++++++++--- frontend/later-work.js | 113 +++++++++++++++++++++ frontend/service-worker.js | 3 +- tests/test_my_work.py | 184 ++++++++++++++++++++++++++++++++++- tests/test_service_worker.py | 3 +- 6 files changed, 365 insertions(+), 14 deletions(-) create mode 100644 frontend/later-work.js diff --git a/README.md b/README.md index d6989d7..a91ee70 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,14 @@ filter, preserves the selected release lane, shows the current draft count, resp the device safe area, and moves out of the way while a full-screen task is open. Desktop layout is unchanged. +My Work also has a local **Later** queue. **Later today** defers an item for four +hours, while **Tomorrow** returns it at 09:00 in the device's local timezone. +Deferred items leave normal and Attention queues without marking notifications read +or changing any Gitea issue or pull request. They automatically return to their +existing priority position at the wake time, and **Bring back now** restores them +early. Later state is stored only in this browser, scoped to the confirmed Gitea +login, and removed when fully loaded work confirms that an item no longer exists. + After one successful online load, the installed dashboard precaches a versioned, subpath-scoped application shell. During a network outage or a dashboard HTTP `500`, `502`, `503`, or `504` response, navigation falls back to that shell when diff --git a/frontend/index.html b/frontend/index.html index 805b807..e171104 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -82,6 +82,8 @@ textarea { resize: vertical; min-height: 120px; } .my-work-card-main.review-trigger { width:100%; text-align:left; font:inherit; } .my-work-card:hover { border-color:var(--accent); } .my-work-card-title { display:block; margin:5px 0; font-weight:650; } +.later-actions { display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); gap:8px; } +.later-actions button { min-height:44px; width:100%; } .mark-update-read { min-height:44px; width:100%; } .read-update { min-height:44px; width:100%; display:flex; align-items:center; justify-content:center; } .load-more-notifications { min-height:44px; width:100%; margin-top:10px; } @@ -312,6 +314,7 @@ textarea { resize: vertical; min-height: 120px; } +