Repository navigation
Conversation
Let explicitly opted-in plugins render growing fenced content and receive terminal lifecycle updates with original transcript identity. Preserve closed-fence props-once behavior for existing registrations. Observe asynchronous content growth without weakening the source fallback or renderer trust boundaries. Cover routing, stable local state, completion, unload and overflow using public host modules in isolated Electron.
Collaborator
|
需要解决所有ci问题 |
Carry the streaming renderer proposal onto the updated main baseline while preserving the new E2E scenarios from both branches. Use the required ADR heading and status section so documentation checks and their workspace test gate accept the proposal.
Keep the streaming renderer proposal current with the official target branch and retain both sets of E2E scenarios in the shared test plan.
Connect the validated proposal to its published head so the existing PR can advance without rewriting its history or replacing its authorship. Retain the corrected ADR metadata and both E2E scenario sets.
Report viewport geometry and active animation state around the reader stream assertion so Linux failures distinguish layout clamps from follow scrolling. Preserve the existing user path and two-pixel assertion.
Collaborator
|
Your answer about the checks holds up — all six pass on your latest commit, and the scroll problem you saw does reproduce on current main, so that was a fair call. It has stayed a draft for over two weeks and now conflicts, so it is closed here rather than left as a draft. The branch is preserved. If you want to continue: rebase, rerun that scenario, and mark it ready — or open an issue if you would rather hand it over. 你关于检查情况的回答成立——你最新那版提交六项全绿,你看到的滚动问题在当前主干上确实能复现,所以那个判断是对的。 它作为草稿放了两周多而且现在冲突,所以关掉,而不是留成草稿。分支保留。如果还想继续:变基、重跑那个场景、标为可评审;或者如果你更想交出来,开一个 issue。 |
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.
Renderer plugins currently receive a fenced block only after it closes, with no transcript identity or completion lifecycle. This prevents GenUI from displaying completed components while a reply is still arriving and from associating explicit actions with the original message.
Add an optional
streaming: trueblockRenderer registration. Opted-in plugins receive growing source, closed/streaming status, and host-owned session/message/fence identity. Terminal status updates are delivered even when source does not change. Legacy registrations retain their closed-fence, props-once behavior and original two props.Keep namespaced ownership, renderer trust, error/unload source fallback and the 4000px guard. Observe both the clamp and its content so asynchronous growth past 4000px remains detectable. Update the SDK types, contract documentation, E2E scenario and a proposed ADR.
This PR contains only the host/SDK support needed by streaming GenUI. It does not bundle GenUI, change renderer privileges or introduce automatic model actions. The JSX runtime work from #1644 is already in the base.
Draft / maintainer scope decision requested: this is a feature proposal. The repository currently limits external landing candidates to fix/perf; this draft is not a claim of a policy exception or approval to merge. Please confirm whether this additive plugin contract is in scope before considering landing.
Validation on head
0cc04fe9ac31963f36f5be263a75e3551acd6484, incorporating official main589e5803a7a9f4ebf7ec1e8849c43e44b4a198f7:node scripts/e2e-streaming-plugin-fences.mjs: passed in isolated Electron, covering incremental source, stable local state, unchanged-source terminal update, original identity, legacy props-once, unload, asynchronous overflow and render-error fallback.The reused host dependencies did not match the latest official Pi patch contracts. A worktree-local dependency refresh from the lockfile was necessary for validation; no dependency manifests or lockfiles changed. An initial pnpm invocation unexpectedly attempted dependency installation and failed before test execution; validation was rerun successfully after dependency repair.
GitHub Docs, PR-base and CI workflows were triggered for this updated head. Their final results are pending. Full workspace test execution, full Desktop/release builds, and installed-GenUI Desktop acceptance have not been run locally. No live user Desktop instance or real provider was used. GenUI plugin publishing remains separate.
Transcript E2E follow-up
Head
eaae69bb13e1d578d872c7f2201f65208f0e5eefadds diagnostic viewport geometry and animation state to the existing reader-position assertion; it does not change scrolling behavior, test steps, or tolerance. The complete transcript rendering E2E and disclosure-anchor E2E passed locally.The same
Long history: stream stole the reader's scroll positionfailure also occurred on official main commit42fb8b7b3d9ein this main CI job, before this PR update. Main later passed at589e5803a7a9. This establishes a pre-existing failure; its underlying cause remains unconfirmed. The first updated PR run failed this assertion; the diagnostic rerun passed all four CI jobs, including transcript rendering/disclosure and the full Trusted extensions Electron E2E suite. Docs and PR-base checks also passed for the diagnostic head. The intermittent failure is not claimed to be fixed by the diagnostic-only change.