diff --git a/README.md b/README.md index 83b5332..0330a7b 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,8 @@ is a Tabata whether or not anything is labelled "Tabata". - **Offline-first** — precached service worker, no backend, no accounts, no analytics. Installable as **Timer**; waiting updates apply immediately when no Routine is active. - **Automatic updates** — an active or paused Routine defers a waiting worker until Done or Reset. The - new build reloads automatically, then the bottom version shows green **NEW vx.x.x** for that reload only. + new build reloads automatically; releases show green **NEW vx.x.x** at right, while dev previews append + green **NEW** to the PR/deployment clue at left. - **Progressive enhancement** — audio session, Wake Lock and vibration are feature-detected and no-ops where absent. The app is fully correct without any of them. - **Semantic and accessible** — [Pico CSS](https://picocss.com/) classless, WCAG 2.2 AA in every slice. @@ -88,7 +89,8 @@ published, served at [timer.marcosgilf.com](https://timer.marcosgilf.com). Release Please opens Release PRs from Conventional Commits. Merging a Release PR bumps `package.json`, updates `CHANGELOG.md`, creates a `vX.Y.Z` Git tag and a GitHub Release. Publishing -that release triggers the production deploy. The app shows that version in the bottom-right corner. +that release triggers the production deploy. The app shows that version in the bottom-right corner; +production update highlights stay there, while preview highlights use the left deployment clue. Use commit prefixes intentionally: diff --git a/docs/spec.md b/docs/spec.md index 5705bf3..8d6ba21 100644 --- a/docs/spec.md +++ b/docs/spec.md @@ -431,9 +431,10 @@ layer below is feature-detected, adds capability where present, and is a no-op w - No update button, confirmation prompt, toast dependency, popover/polyfill, polling or custom service-worker manager. Standalone Home Screen PWAs use the same service-worker lifecycle: on launch, registration checks for an update; `updateSW(true)` activates it and reloads the page. -- Before activation, store a session marker. The new build consumes the marker on first render, prefixes - the bottom version with green **NEW vX.X.X**, then clears it. Version highlighting is optional; storage - failures do not block update activation or timer behavior. +- Before activation, store a session marker. The new build consumes the marker on first render, then clears + it. Production releases prefix the bottom version with green **NEW vX.X.X**. Dev deployments append green + **NEW** to the left PR/deployment clue. Version highlighting is optional; storage failures do not block + update activation or timer behavior. - Registration errors are swallowed; offline use of the current version remains unaffected. ### Install and manifest @@ -594,8 +595,8 @@ Genuinely undecided. An implementer should raise these rather than assume. - **Default values for `Prefs`** — only `prepareMs` has a stated default (10s). Starting `muted`, `volume`, `ticks` and `vibrate` values are unspecified. - ~~**Update-prompt UI**~~ — resolved: no update control. A waiting worker activates immediately when - idle, or after an active Routine reaches Done/Reset; the new build labels its bottom version **NEW vX.X.X** - in green for that reload only. + idle, or after an active Routine reaches Done/Reset; production labels its version **NEW vX.X.X** in + green, while dev deployments append **NEW** to the left PR/deployment clue. - **Install guidance copy for iOS** — decided that it must be static copy (no `beforeinstallprompt`), but not what it says or which screen hosts it. - ~~**App name, iconography, favicon/manifest icon set, `theme_color`**~~ — resolved: app name diff --git a/src/layouts/AppLayout.astro b/src/layouts/AppLayout.astro index 8a88c0f..5687315 100644 --- a/src/layouts/AppLayout.astro +++ b/src/layouts/AppLayout.astro @@ -38,7 +38,7 @@ const deployLabel =