- Backend: ?force=true on /proxy bypasses cache for fresh link fetch - Frontend: parse `se` param for live expiry countdown on download links - Frontend: show Refresh button when link expires in <6h, force-fetches fresh URL - Frontend: CliCommand component replaces Aria2Tip — wget/curl/aria2 tabs, persists selection in localStorage - Frontend: RecentlyViewed component — localStorage, shows active countdown or expired state - Frontend: FileSize shown alongside arch if returned by Microsoft CDN Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1.3 KiB
1.3 KiB
Issue Drafts
Inactive products still trigger backend requests
Summary
The new active: false catalog state is not fully enforced on the product detail page.
Inactive products still pass validation and trigger /skuinfo requests before the UI shows the discontinued-product panel.
Affected file
frontend/src/pages/ProductDetailPage.tsx
Current behavior
For a catalog entry with active: false:
- the page loads the product from
products.json setIsValidated(true)still runs- the follow-up effect calls
/skuinfo?product_id=... - the backend and Microsoft endpoints are still hit
- only afterward does the page render the
Product Discontinuedstate
Expected behavior
Inactive products should fail fast on the frontend and should not trigger backend or Microsoft API requests.
Risk
The inactive-product flow still consumes backend capacity and external request budget even though the user cannot download that release.
Suggested fix
- gate validation on
product.active !== false - avoid setting
isValidatedfor inactive products - ensure the
/skuinfoeffect only runs for active products
Prevention
- add a test covering an inactive catalog entry and assert that no backend request is made
- model the route state explicitly so
active,not_found, anderrorpaths cannot fall through into fetch logic