Render exact image previews and make app icons source-driven - #334
Merged
hamzamerzic merged 3 commits intoJul 28, 2026
Merged
Conversation
Render protected chat images from durable authenticated URLs and other viewed images from exact tool output. Materialize manifest-declared icons at the accepted app revision, expose one canonical icon reference to the shell, keep owner artwork as an explicit override, and repair legacy local icons from accepted commits. Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
Classify historical effective icon bytes against the exact accepted package revision before package writers can replace them, preserving ambiguous values conservatively as owner overrides. Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
hamzamerzic
enabled auto-merge
July 28, 2026 18:49
# Conflicts: # backend/app/install.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Viewed-image activity can carry a private filesystem path that the browser cannot fetch, so successful inspections may end as “Image preview unavailable.” App artwork also had two competing truths: manifests declared an icon, but only Store installs materialized it, while the shell inferred icon availability from a separate boolean and compatibility fallback.
What changed
/tmpor source-tree serving route is added.icon_url(ornull) to the shell instead of a boolean plus reconstructed route; drawer, app links, and install UI consume that reference directly.Design notes
This deliberately removes the app-icon special case from viewed-image rendering: a source file inspection should show the exact bytes that were viewed, not whichever effective icon an owner override makes current. The package/apply boundary owns accepted assets; presentation code receives a usable reference rather than duplicating existence and cache-version rules.
Verification
MOBIUS_TEST_RUNTIME=1 pytest -q backend/tests/test_app_apply.py backend/tests/test_apps.py backend/tests/test_apps_install.py backend/tests/test_validate_app_cli.py --tb=short— 221 passed on the review branch; 220 passed after reconciling the backend half with the newer live platform tree.npm test— 2,179 passed.npm run build— passed.git diff --checkpassed.Prior work
PR #277 introduced native Codex image-view activity and was integrated in PR #304. This change completes its rendering path without exposing private files.
PR #321 is adjacent screenshot-settlement work. This contribution keeps capture settlement separate and focuses on output ownership, transcript rendering, and the app-icon lifecycle.