chore: plan frontend UX improvements — expiry countdown, refresh, CLI tabs, recently viewed, file size
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
17315ad4e9
commit
e3f34016c6
2 changed files with 21 additions and 1 deletions
10
CLAUDE.md
10
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
|
- Small config/one-liner fixes → commit directly to main
|
||||||
- Any meaningful feature or multi-file change → feature branch → PR → merge
|
- 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:`
|
- Commit messages follow conventional commits: `feat:`, `fix:`, `docs:`, `chore:`
|
||||||
|
|
||||||
## Backlog (implement when ready, in priority order)
|
## 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.
|
- [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.
|
- [ ] **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
|
### Known bugs / open issues
|
||||||
|
|
||||||
- [ ] **`_redirects` Cloudflare Pages** — SPA fallback rule (`/* /index.html 200`) is flagged
|
- [ ] **`_redirects` Cloudflare Pages** — SPA fallback rule (`/* /index.html 200`) is flagged
|
||||||
|
|
|
||||||
12
PROGRESS.md
12
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
|
## Deferred
|
||||||
|
|
||||||
| Item | Notes |
|
| Item | Notes |
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue