Summary
Mirror the mobile app home Recent section on the web home (files.fx.land/app/): a horizontal strip at the TOP showing thumbnails of recently-opened cloud files, same style as native (lib/features/home/widgets/recent_files_section.dart).
Native reference
- SizedBox(height 120) horizontal ListView, max 10; header Recent (titleMedium, w600); empty state No recent files.
- Image/Video = 80px media card: cover thumbnail + bottom gradient + filename (white 10px) + video play badge. Audio/Documents/other = 100px doc card: 48x48 colored-icon tile + filename. Colors: image green, video red, audio orange, doc blue, else grey.
- Data: device-local Hive box recent_files, capped 30, sorted accessedAt desc, dedup. Recorded when a file is opened.
Web plan (advisor-reviewed: Gemini + Codex)
- New device-local, per-user, encrypted IndexedDB store (WebRecentFilesService) keyed by (bucket, objectKey); cap 30; dedup + move-to-top; reset on sign-out; owner-scoped (same HKDF+AES-GCM rationale as web_listing_cache, separate box).
- Thumbnails for IMAGES only: downscale decrypted bytes to ~160px via dart:ui instantiateImageCodec, store encrypted PNG with a byte cap; icon-only on low-end devices; icon cards for audio/docs/video.
- Record once after a successful open (no failed opens, no FutureBuilder dup), hooked in web_bucket_screen open paths.
- Tap a Recent card reopens the file by reusing the existing preview via /b/?open= (no extraction of the working open flow).
Acceptance
Recent strip on top of web home in native style; updates after opening files; tap reopens; per-user/device-local/capped; low-RAM safe; no regression; analyze + tests + web build green; live.
Part of the mobile->web parity work.
Summary
Mirror the mobile app home Recent section on the web home (files.fx.land/app/): a horizontal strip at the TOP showing thumbnails of recently-opened cloud files, same style as native (lib/features/home/widgets/recent_files_section.dart).
Native reference
Web plan (advisor-reviewed: Gemini + Codex)
Acceptance
Recent strip on top of web home in native style; updates after opening files; tap reopens; per-user/device-local/capped; low-RAM safe; no regression; analyze + tests + web build green; live.
Part of the mobile->web parity work.