fix(release/2026.7.1): low-risk stable sweep — pairing authz, UTF-16 chunk safety, channel timeouts#104684
Merged
Merged
Conversation
…des (#104491) Approving a node whose pairing surface advertises browser.proxy only required operator.write, while invoking browser.proxy already requires operator.admin (server-methods/nodes.ts). resolveNodePairApprovalScopes bumped the approval scope to operator.admin only for NODE_SYSTEM_RUN_COMMANDS, so a write-scoped operator could trust a browser.proxy-capable node that later routes bundled browser-tool traffic. Add NODE_BROWSER_PROXY_COMMAND to the admin-approval set so approval scope matches the invoke-time gate. (cherry picked from commit 68c18ca) (cherry picked from commit f902110)
…02948) * fix(feishu): bound streaming-card API requests with a 30s timeout * fix(feishu): honor configured streaming timeout Signed-off-by: sallyom <somalley@redhat.com> * test(feishu): declare streaming mock credentials Signed-off-by: sallyom <somalley@redhat.com> --------- Signed-off-by: sallyom <somalley@redhat.com> Co-authored-by: NIO <nocodet@mail.com> Co-authored-by: sallyom <somalley@redhat.com> (cherry picked from commit 473df17) (cherry picked from commit 591df2e)
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 Problem This Solves
Follow-up to #104656 (merged): a curated sweep of small, isolated, user-visible or security fixes from
mainthat are worth having in the 2026.7.1 stable cut. Each is a clean-xcherry-pick, patch-id-identical to its reviewed main original.Why This Change Was Made
68c18caca06cfix(node-pairing): require operator.admin to approve browser.proxy nodes (fix(node-pairing): require operator.admin to approve browser.proxy nodes #104491) — security tightening, +11/-292870e520063fix(agents): preserve UTF-16 boundaries in block chunks (fix(agents): preserve UTF-16 boundaries in block chunks #104441) — streamed text no longer corrupts emoji/surrogate pairs at chunk boundaries473df17bd726fix(feishu): add 30 s request timeout to streaming-card API calls (fix(feishu): add 30 s request timeout to streaming-card API calls #102948) — prevents indefinite hangs03558dc00821fix(openrouter): Fusion prompt corrupts boundary emoji in model IDs (fix(openrouter): Fusion prompt corrupts boundary emoji in model IDs #104433)47751c117c17fix(discord): bound ffmpeg stderr by bytes (fix(discord): keep voice diagnostics bounded when ffmpeg errors are multibyte #104230) — bounds memory on noisy mediaEvaluated and dropped as not-clean backports (owning surface doesn't exist on this branch): #104464 (tool-title truncation lives in post-cut modules), #104608 (Telegram streamed-final pagination planner predates the fixed function here). #104555 was dropped from this sweep after it landed via #104656 with the release manager's "keep GPT-5.6 backport scoped" fixup; this PR does not re-add the descoped test blocks.
User Impact
Browser-proxy node approval requires
operator.admin; streamed messages stop corrupting emoji at chunk boundaries; Feishu streaming cards can no longer hang requests; OpenRouter model IDs with emoji render correctly; Discord ffmpeg stderr is memory-bounded.Evidence
mainwith green CI and are patch-id-identical picks.extensions/discord/src/voice/audio.test.ts,extensions/feishu/src/{reply-dispatcher,streaming-card}.test.ts,extensions/openrouter/index.test.ts,src/agents/embedded-agent-block-chunker.test.ts,src/infra/node-pairing-authz.test.ts): all passed,exit=0(leasetbx_01kx9a3j7k7dr1kh8490rffctv). An earlier 374-test changed-selection run covered the sibling migration/GPT-5.6 stack.doctor --fixconverged 30 orphaned legacy Codex binding sidecars in 26 s with 0 remaining, and fresh non-interactive onboarding persistedagents.defaults.model.primary = "openai/gpt-5.6".