From e3f34016c6a4901253e702d4e0b29d4935a469aa Mon Sep 17 00:00:00 2001 From: Shekhar Vaidya Date: Fri, 22 May 2026 20:54:55 +0530 Subject: [PATCH] =?UTF-8?q?chore:=20plan=20frontend=20UX=20improvements=20?= =?UTF-8?q?=E2=80=94=20expiry=20countdown,=20refresh,=20CLI=20tabs,=20rece?= =?UTF-8?q?ntly=20viewed,=20file=20size?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 10 +++++++++- PROGRESS.md | 12 ++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index 9222704..f84229f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -11,7 +11,7 @@ controlled by `CF_WORKER_URL` + `CF_WORKER_SECRET` env vars on the backend. - Small config/one-liner fixes → commit directly to main - Any meaningful feature or multi-file change → feature branch → PR → merge -- Always reference the GitHub issue number in the commit message (Closes #X) +- GitHub issues are for bugs and community contributions only — planned features tracked here and in PROGRESS.md - Commit messages follow conventional commits: `feat:`, `fix:`, `docs:`, `chore:` ## Backlog (implement when ready, in priority order) @@ -28,6 +28,14 @@ negative cache (60s), dynamic TTL, stale-on-failure, jitter. Verified in product - [x] **README architecture section** — caching layer, `/metrics`, env vars documented. - [ ] **Per-IP / per-product rate limiter** — deferred; revisit after 1 month of production traffic data. +### Frontend UX improvements (next feature branch) + +- [ ] **Expiry countdown** — parse `se` param from signed URL, show live countdown. Under 6h remaining → show "Refresh links" button. +- [ ] **Refresh links** — `?force=true` on `/proxy` bypasses cache, fetches fresh from Microsoft, resets countdown to ~24h. +- [ ] **CLI command tabs** — aria2 / wget / curl tabs instead of showing all at once. Persist last selected tab in localStorage. Default: wget. +- [ ] **Recently viewed** — localStorage only. Store product_id, name, version, se param. Show on homepage. Active links show countdown, expired links show "Expired" with re-fetch CTA. +- [ ] **File size** — verify if Microsoft CDN response includes file size. If yes, show alongside each download link (e.g. `x64 · 5.4 GB`). Research first before implementing. + ### Known bugs / open issues - [ ] **`_redirects` Cloudflare Pages** — SPA fallback rule (`/* /index.html 200`) is flagged diff --git a/PROGRESS.md b/PROGRESS.md index 589f010..894bb5f 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -67,6 +67,18 @@ CF Worker ensures Hetzner IP is never exposed to Microsoft — rate-limit block --- +## Planned — Frontend UX improvements + +| Feature | Notes | +|---|---| +| Expiry countdown | Parse `se` param from signed URL, live countdown. Under 6h → show Refresh button | +| Refresh links | `?force=true` on `/proxy` bypasses cache, returns fresh URL, resets countdown | +| CLI command tabs | aria2 / wget / curl tabs, persist selection in localStorage, default wget | +| Recently viewed | localStorage only — active links show countdown, expired show re-fetch CTA | +| File size | Research first — verify if Microsoft CDN response includes it | + +--- + ## Deferred | Item | Notes |