Skip to content

Bundle curated suggestion icons, render list offline#403

Open
theoden8 wants to merge 3 commits into
masterfrom
claude/fdroid-reproducible-builds-ci-VG09f
Open

Bundle curated suggestion icons, render list offline#403
theoden8 wants to merge 3 commits into
masterfrom
claude/fdroid-reproducible-builds-ci-VG09f

Conversation

@theoden8

@theoden8 theoden8 commented Jun 7, 2026

Copy link
Copy Markdown
Owner

Add a network-free icon read path for the suggestions list and commit bundled favicon assets for curated defaults, so opening the add-site screen makes zero outbound requests. This lets fdroid and fmain ship identical suggestions defaults.

Changes:

  • Design doc and specs for offline icon read path (ICON-009, ICON-010, ICON-011), bundled assets (SUGGEST-008), and reconciled flavor defaults (SUGGEST-001, SUGGEST-007).
  • Task breakdown for implementation: bundled asset infrastructure, offline read entry point in icon_service, wiring suggestions grid to offline path, flavor reconciliation, and zero-network regression test.

Implementation plan:

  1. Add offline read entry point in icon_service.dart that consults bundled assets, in-memory caches, and persisted disk cache only—never calls _proxiedClient. On miss, resolves to placeholder.
  2. Commit favicon assets under assets/suggested_icons/ (keyed deterministically by suggestion host) and register in pubspec.yaml.
  3. Add developer-run regeneration script under scripts/ to fetch current favicons for kDefaultSuggestions and write assets; never invoked by the build.
  4. Route suggestions grid tiles through offline read path; keep add-suggestion action on network path to warm shared cache.
  5. Change flavorDefaultSuggestions to return kDefaultSuggestions for all flavors (drop fdroid empty branch).
  6. Add regression test asserting outboundHttp.clientFor() is never called while rendering curated suggestions.

Key invariants:

  • Offline and network paths share module-level caches so add-time fetches are visible to offline reads in-session (no forked cache).
  • Bundled assets are committed inputs (pinned, not build outputs), preserving reproducible builds.
  • Offline is distinct from fail-closed blocked—the offline path simply never calls the outbound factory.

https://claude.ai/code/session_01Ey8jYLEX9yyRyFAEkKz7eU

@theoden8 theoden8 force-pushed the claude/fdroid-reproducible-builds-ci-VG09f branch 3 times, most recently from f9e629c to c41996d Compare June 13, 2026 03:36
claude added 3 commits June 13, 2026 22:03
Render the suggestions list through a network-free icon read path
backed by committed bundled assets, warm the cache at add-time only,
and reconcile fmain/fdroid suggestion defaults once the list makes
zero outbound requests.
Suggestion tiles resolve icons from local sources only (committed
bundled asset, else a host-derived monogram) and never hit the network,
so opening the suggestions list contacts no third party. With that
guarantee, fdroid ships the same curated defaults as fmain.

Offline resolution lives at the widget layer because UnifiedFaviconImage
renders via CachedNetworkImage; a URL-returning icon_service helper would
still fetch bytes at render. Adds a regen runner for optional bundled
logos (never run by the build) and a zero-network regression test.
Commit pinned PNG favicons for the community/open-source suggestions
(Bluesky, Codeberg, Gitea, GitLab, Hugging Face, Mastodon) under
assets/suggested_icons/. Big corporate brands keep monograms to avoid
shipping trademarked logo binaries. Assets are committed inputs, not
fetched at build time, so reproducibility holds.
@theoden8 theoden8 force-pushed the claude/fdroid-reproducible-builds-ci-VG09f branch from c41996d to 304d1bd Compare June 13, 2026 21:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants