feat(#3996): render generated images from manifest-gated portable blobs - #4029
Open
aheritier wants to merge 2 commits into
Open
feat(#3996): render generated images from manifest-gated portable blobs#4029aheritier wants to merge 2 commits into
aheritier wants to merge 2 commits into
Conversation
Collaborator
Author
|
👋 This PR has merge conflicts with the base branch. Please rebase or merge the latest base branch and resolve them. I've moved it to draft and added |
aheritier
force-pushed
the
generated-image-inline-tui
branch
from
August 24, 2026 15:13
7438c97 to
2bb441e
Compare
aheritier
force-pushed
the
generated-image-inline-tui
branch
from
August 25, 2026 08:01
2bb441e to
105245f
Compare
aheritier
force-pushed
the
generated-image-inline-tui
branch
from
August 25, 2026 08:17
105245f to
d9ac92d
Compare
aheritier
force-pushed
the
generated-image-inline-tui
branch
from
August 25, 2026 08:33
d9ac92d to
781cec4
Compare
aheritier
force-pushed
the
generated-image-inline-tui
branch
from
August 25, 2026 20:24
781cec4 to
5339887
Compare
aheritier
force-pushed
the
generated-image-inline-tui
branch
from
August 26, 2026 11:11
5339887 to
28ee2f3
Compare
Collaborator
Author
|
👋 This PR has merge conflicts with the base branch. Please rebase or merge the latest base branch and resolve them. I've moved it to draft and added |
aheritier
force-pushed
the
generated-image-inline-tui
branch
from
September 1, 2026 16:30
28ee2f3 to
f209843
Compare
aheritier
force-pushed
the
generated-image-inline-tui
branch
from
September 1, 2026 19:59
f209843 to
20a7918
Compare
aheritier
force-pushed
the
generated-image-inline-tui
branch
from
September 6, 2026 16:15
20a7918 to
2b3832d
Compare
aheritier
force-pushed
the
generated-image-inline-tui
branch
from
September 7, 2026 11:19
2b3832d to
07465fa
Compare
aheritier
force-pushed
the
generated-image-inline-tui
branch
from
September 7, 2026 11:35
07465fa to
c64ba62
Compare
aheritier
force-pushed
the
generated-image-inline-tui
branch
from
September 7, 2026 16:25
c64ba62 to
39a1e31
Compare
aheritier
force-pushed
the
generated-image-inline-tui
branch
from
September 7, 2026 16:48
39a1e31 to
7d74be6
Compare
aheritier
force-pushed
the
generated-image-inline-tui
branch
from
September 8, 2026 06:17
7d74be6 to
6261e50
Compare
aheritier
force-pushed
the
generated-image-inline-tui
branch
from
September 8, 2026 07:58
6261e50 to
7479fbe
Compare
aheritier
force-pushed
the
generated-image-inline-tui
branch
from
September 8, 2026 17:31
7479fbe to
167f4dc
Compare
Resolve authorized workspace files asynchronously outside the TUI update loop using the owning session, never viewing CWD. Reject unknown or historical external roots before any lookup. Require manifest identity, containment, regular-file and opened-file identity checks. Revalidate manifest authorization on every resolution so deletion revokes references; cache only workspace provenance. Route replacements by message ID, and preserve text and unavailable placeholders for forged or missing references.
Authorize owning-session workspace references against the manifest before preferring portable blobs. Fall back to workspace files only when the optional blob interface is absent or reports blob-not-found; other errors fail closed. Portable bytes survive missing files and workspace provenance, with a recorded relative display label in that case. Generated-media reads have no application byte cap; ordinary attachment limits are unchanged.
aheritier
force-pushed
the
generated-image-inline-tui
branch
from
September 8, 2026 20:36
167f4dc to
950d801
Compare
aheritier
marked this pull request as ready for review
September 8, 2026 20:39
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.
What and why
Revalidate generated-file authorization against the current manifest on every resolution, by owner, path, and workspace root. Session deletion revokes references even when workspace provenance is cached. Invalid POSIX/Windows paths and unknown/external roots are rejected before any lookup. Prefer portable blobs. Fall back only when the optional blob interface is absent or the blob is not found, and only to the owning workspace; other blob errors fail closed. Portable bytes may survive a missing WorkingDir and then use the recorded relative display path, not a verified absolute path. Legacy ordinary-file contents are not integrity-verified. Resolve bytes off the TUI Update path and preserve adjacent text.
Part of #3996. Review this PR against its immediate parent, #4028, rather than the aggregate stack against
main.Commit inventory
Head:
950d801ff3a2eb4ee5aaf56265bf6fe8faa54110; parent SHA:8eed51894134f104fa449f2cfbe7e510a22d3956.8c2a76fad28771134b95cd1d797221403ea4f3f8— feat: render generated images through workspace manifest authorization950d801ff3a2eb4ee5aaf56265bf6fe8faa54110— feat: restore generated media from portable session blobsValidation
Build, test compilation, owning-package tests and the named fixture passed at this PR head.
Exact deterministic fixture command:
Matched top-level tests:
pkg/runtime: 52;pkg/tui/components/message: 4;pkg/tui/components/messages: 5;pkg/tui/page/chat: 3.Deterministic scope: the named local fixture exercises this PR boundary with disposable configuration/stores and fake or loopback providers as applicable. Every listed package ran nonzero matching top-level tests.
Deferred/live scope: No active database or remote runtime was exercised. The final stack head passed build, lint, full tests, an uncached full suite, focused race tests and documentation checks in disposable environments. Remote CI is tracked by the checks below; no new paid-provider or active-database validation was run.