Sally O'Malley
cdb58cafb5
fix(migrations): converge recoverable legacy state ( #104529 )
...
Signed-off-by: sallyom <somalley@redhat.com >
2026-07-11 11:19:12 -07:00
Peter Steinberger
96f0983a85
fix(onboarding): skip setup for configured gateways and require inference first ( #102883 )
...
* fix(crestodian): keep onboarding RPCs restart-safe
* fix(profiles): isolate approval state migrations
* fix(crestodian): bypass configured gateway setup
* test(crestodian): type onboarding mocks
* fix(onboarding): require inference before Crestodian
* fix(onboarding): enforce verified inference handoff
* fix(macos): reset setup on gateway endpoint edits
* chore(i18n): refresh native source inventory
* fix(gateway): keep socket on request cancellation
* test(packaging): require workspace templates
* fix(onboarding): bind setup to verified inference
* fix(onboarding): align inference gate contracts
* fix(crestodian): classify concurrent policy rejection
* test(crestodian): expect registry restoration
* fix(onboarding): bind setup to configured gateways
* fix(codex): preserve startup phase deadlines
* test(crestodian): match fail-closed policy ordering
* test(onboarding): assert bound gateway handoff
* fix(codex): bind runtime resolution to spawn cwd
* test(crestodian): assert policy rejection order
* fix(cli): preserve gateway routing across restarts
* fix(macos): fail closed during gateway edits
* test(macos): cover gateway route generation races
* chore: keep release notes out of onboarding PR
* fix(ci): refresh onboarding generated checks
* style(swift): align gateway channel formatting
* fix(ci): refresh plugin SDK surface budgets
* fix(ci): resync native string inventory
* refactor(swift): split gateway channel support
* test(doctor): isolate plugin compatibility registry
* test(macos): isolate gateway onboarding fixtures
* test(macos): assert gateway lease health ordering
* fix(codex): reconcile computer-use startup changes
2026-07-11 10:25:14 -07:00
Kevin Lin
b769964e82
feat(codex): support workspace-directory plugins ( #104188 )
...
* feat(codex): support workspace directory plugins
* fix(codex): contain workspace catalog failures
* chore(config): refresh documentation baseline
2026-07-11 09:04:55 -07:00
clawsweeper[bot]
1b6393c51e
fix (Computer Use) Stabilize Codex Computer Use readiness ( #103331 )
...
* fix (Computer Use) Stabilize Codex Computer Use readiness
Co-authored-by: Ben Badejo <188106718+bdjben@users.noreply.github.com >
* fix (Computer Use) Stabilize Codex Computer Use readiness
* fix (Computer Use) Stabilize Codex Computer Use readiness
* fix (Computer Use) Stabilize Codex Computer Use readiness
* fix(clawsweeper): address review for automerge-openclaw-openclaw-103331 (1)
* fix (Computer Use) Stabilize Codex Computer Use readiness
---------
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: Ben Badejo <188106718+bdjben@users.noreply.github.com >
2026-07-11 09:42:27 -05:00
Peter Steinberger
fa77fe10d5
chore: migrate active GPT-5.5 references to GPT-5.6 ( #104452 )
...
* chore(models): migrate active GPT-5.5 references
* test(workboard): expect GPT-5.6 Sol default
* chore: keep release notes in PR body
* test(models): align picker fixtures with Sol default
* test: update PDF default model expectation
* test(qa): migrate thinking smoke to Luna
* test(gateway): align mock catalog with Sol default
* ci: retrigger exact-head PR checks
* test(gateway): document default catalog invariant
2026-07-11 06:30:57 -07:00
Peter Steinberger
05aecc1d6f
feat: show Codex transcripts in the sidebar ( #104437 )
...
* feat: show Codex transcripts in sidebar
* fix: clear Codex sidebar on Gateway switch
* chore: leave release notes to release workflow
* chore: refresh native i18n inventory
* fix: satisfy macOS Codex node lint
* fix: refresh native localization inventory
* docs: refresh documentation map
* chore: refresh UI locale metadata
2026-07-11 05:39:29 -07:00
xingzhou
745cfc028e
fix(codex): bound shared app-server startup waits ( #89442 )
...
* fix(codex): isolated cron reports Codex startup stalls
* fix(codex): isolated cron reports Codex startup stalls
* fix(codex): bound shared app-server startup waits
Co-authored-by: 张贵萍0668001030 <zhang.guiping@xydigit.com >
* test(codex): satisfy startup lifecycle checks
* test(codex): align deferred auth test type
* test(codex): type auth mock as async void
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 04:58:55 -07:00
Peter Steinberger
0ef9a62eaf
fix(codex): allow slower Mac session catalogs ( #104332 )
2026-07-11 02:05:55 -07:00
Peter Steinberger
20fe3f46db
fix: paired Mac Codex sessions finish loading ( #104299 )
...
* fix(codex): allow cold Mac session catalogs
* chore: keep release notes in PR body
2026-07-11 01:14:36 -07:00
Peter Steinberger
7bf80dc2c6
chore(tooling): enforce formatting and refresh TypeScript checks ( #104239 )
...
* chore(tooling): enforce current formatter and refresh checks
* chore(tooling): keep release changelog formatter-owned
* chore(tooling): retain compatible Node type surface
* ci: enforce formatting for docs-only changes
* ci: isolate docs formatter check
* chore(tooling): apply updated lint and format rules
* chore(tooling): satisfy updated switch lint
* style(ui): apply Linux formatter layout
* test(doctor): match quiet local audio contribution
* test(doctor): assert quiet output only
* test(doctor): follow restored information contract
2026-07-11 01:09:51 -07:00
Peter Steinberger
f94a7dc183
feat(codex): supervise native Codex sessions ( #104045 )
...
* feat(codex): add native session supervision
* fix(codex): harden supervision integration
* fix(codex): preserve locked harness ownership
* fix(codex): fence native session archive
* fix(codex): revalidate archive binding ownership
* feat(codex): integrate supervision runtime
* feat(sessions): preserve harness-owned execution
* feat(sessions): persist harness ownership invariants
* feat(gateway): enforce harness-owned sessions
* feat(setup): enable detected Codex supervision
* feat(mac): expose supervised Codex sessions
* feat(ui): make Codex sessions actionable
* docs(codex): document session supervision
* test(codex): cover integration ownership
* chore(i18n): refresh supervision inventories
* fix(setup): finalize Codex activation atomically
* test(codex): narrow binding store update
* fix(sessions): preserve legacy model locks
* test(macos): serialize Codex catalog fixtures
* fix(sessions): preserve legacy lock admission
* chore(i18n): reconcile supervision metadata
* test(sessions): mark legacy lock fixture
* fix(macos): drain final Codex catalog frame
* docs: leave supervision note to release
* style(macos): satisfy Codex catalog type length
* chore: record session accessor seam owners
* fix(macos): honor configured Codex supervision
* fix(codex): preserve harness-owned model locks
* fix(codex): satisfy supervision lint gates
* chore(i18n): refresh native supervision inventory
* fix(codex): align supervision validation contracts
* fix(codex): close supervision boundary gaps
* fix(codex): preserve supervision activation contracts
* fix(codex): dispose standalone supervision runtime
* fix(codex): pin supervised source connection
* fix(plugins): bind delegated runs to exact session target
* fix(codex): scope supervised sessions to configured agents
* fix(codex): fingerprint effective supervision home
* fix(codex): normalize supervision plugin policy
* fix(codex): keep supervised bindings stable across upgrades
* fix(codex): guard all supervised binding connections
* fix(codex): preserve catalog filters and pending CAS identity
* fix(codex): preserve supervision identity for diagnostics
* fix(codex): bind uncertain commits to supervision connection
* fix(codex): satisfy supervision type boundaries
* fix(macos): reconcile current main validation
* fix(codex): handle absent runtime config in supervision
* fix(doctor): own local audio acceleration check
* fix(codex): satisfy integration lint gates
* fix(codex): satisfy lifecycle safety guards
2026-07-11 00:12:08 -07:00
Peter Steinberger
82abf7244d
fix(codex): expose selectable node exec ( #104198 )
...
* fix(codex): expose selectable node exec
* chore: defer Codex node release note
2026-07-10 22:50:55 -07:00
Josh Avant
fbd330b7aa
fix(channels): honor configured read target policies ( #99905 )
...
* fix(channels): enforce configured read targets
* test(channels): align policy checks with boundaries
* fix: bind channel reads to trusted turn context
* test: satisfy gateway lint
* fix: narrow message action channel imports
* fix(feishu): authorize message reads before provider access
* fix(slack): await reaction clear authorization
* fix(channels): align provider action contracts
* fix(matrix): read direct-room account data before sync
* fix(channels): reject unsupported attachment actions early
* fix: restore trusted operator conversation reads
* fix(matrix): authorize pin actions before provider reads
* fix: preserve trusted channel read workflows
* fix(discord): resolve current channel ids consistently
* fix(agents): preserve message action turn capability
* fix(plugins): enforce host-owned read provenance
* fix(channels): harden Teams and Discord read policy
* fix(channels): preserve exact-current action compatibility
* fix(imessage): authorize trusted current chat aliases
* fix(channels): preserve normalized current aliases
* fix(channels): preserve external current target aliases
* fix: reconcile channel policy with current main
* fix(discord): isolate DM read policy
* fix(channels): enforce provider read gates
* fix(gateway): await serialized message action identity tokens
* fix(ci): refresh channel protocol contracts
2026-07-10 22:29:37 -05:00
Peter Steinberger
dba64d574f
chore(release): set version to 2026.7.2
2026-07-11 04:00:49 +01:00
James Armstead
65cc86f45c
Refresh MCP OAuth auth-profile tokens ( #96120 )
...
* Refresh MCP OAuth auth-profile tokens
* Rotate Codex MCP binding on bearer changes
* Preserve agent scope for MCP auth profiles
* Preserve Codex MCP tool filters
* Keep Codex MCP projection helper local-only
* Fix Codex projection package boundary artifacts
* Revert "Fix Codex projection package boundary artifacts"
This reverts commit 13bcaed3da .
* Revert "Keep Codex MCP projection helper local-only"
This reverts commit 19751f4922 .
* Trigger CI rerun for OAuth MCP PR
* Fail closed for remote Codex MCP bearer projection
* Fix MCP OAuth bearer token projection
* fix: project MCP-native OAuth credentials
* fix: align MCP SDK surface budget
* fix(mcp): keep agents available before OAuth login
---------
Co-authored-by: Josh Lehman <josh@martian.engineering >
2026-07-10 17:49:43 -07:00
wings1029
63859f73e6
fix(codex): preserve Unicode diagnostics boundaries ( #103740 )
...
* fix(codex): preserve Unicode diagnostics boundaries
Co-authored-by: 陈志强0668000989 <chen.zhiqiang1@xydigit.com >
* test(codex): assert diagnostics preview boundary
* test(codex): narrow diagnostics result text
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 00:45:57 +01:00
Peter Steinberger
5aea34ad8c
fix(webui): keep tool activity paired without model calls ( #103821 )
...
* fix(webui): make tool activity rendering deterministic
* fix(protocol): remove stale tool-title models
* fix(i18n): translate tool activity labels
* fix(i18n): translate tool activity labels
2026-07-10 18:21:08 +01:00
JC
59e95fe3fd
feat: support GPT-5.6 Ultra across OpenClaw and Codex runtimes ( #98021 )
...
* feat: support GPT-5.6 Ultra across agent runtimes
Co-authored-by: J Cai <anyech@gmail.com >
* fix: keep harness projections discovery-free
* fix(codex): mirror V2 native subagent tasks
* chore: refresh plugin SDK surface budgets
* test: expose Ultra wire effort proof
* test(cron): avoid hoisted mock initialization race
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 15:23:24 +01:00
Peter Steinberger
b07a2eecc0
fix(codex): defer sandbox cleanup until process close ( #103617 )
2026-07-10 11:02:56 +01:00
Ben Badejo
1f3ea6faaa
fix(codex): prevent startup hangs after binding migration ( #103281 )
...
* fix(codex): archive imported orphan binding sidecars
* fix(codex): harden binding sidecar migration
Co-authored-by: Benjamin Badejo <ben@benbadejo.com >
* chore: keep release notes out of contributor PRs
---------
Co-authored-by: Benjamin Badejo <ben@benbadejo.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 10:38:35 +01:00
Peter Steinberger
ab5d143d59
feat(openai): default new setups to GPT-5.6 ( #103581 )
...
* feat(openai): default fresh setup to GPT-5.6
* test(crestodian): expect GPT-5.6 Codex defaults
* test(crestodian): expect GPT-5.6 bootstrap default
2026-07-10 10:22:58 +01:00
Eva
2b223549ed
fix(codex): cap native tool output before replay ( #99578 )
...
The Codex app-server projector now caps native tool output at 10k chars before it reaches OpenClaw's replayable surfaces (transcript tool results, trajectory output, progress text, streamed delta accumulation, MCP/dynamic tool text), with an explicit truncation notice carrying the original length. Assistant-item echo suppression is scoped to raw-lane promotions with bounded multi-shape signatures: typed agentMessage finals are never content-filtered (verbatim tool-output answers are preserved), fine-grained streams cannot evict the start-summary signature, and the post-truncation prefix freeze from main is restored so surrogate-boundary cuts cannot corrupt echo matching. This closes the projector-side replay amplification from #99465 ; native/provider-side replay budgets remain tracked in #99551 .
Fixes #99465
Thanks to Eva (@100yenadmin) for the contribution.
2026-07-10 14:06:56 +05:30
Peter Steinberger
a97633a9ad
fix(codex): require human approval for app-server commands ( #103457 )
...
* fix(codex): require human approval for app-server commands
* docs(exec): clarify Codex approval fallback
2026-07-10 08:07:18 +01:00
Peter Steinberger
0f3fb9ea58
fix(codex): prefer ChatGPT desktop resources ( #103470 )
...
Co-authored-by: Hiroshi Tanaka <solavrc@gmail.com >
2026-07-10 07:44:24 +01:00
Peter Steinberger
461772868d
fix(computer): prevent stale, replayed, and post-cancel desktop actions ( #103422 )
...
* fix(ai): preserve streamed tool-call identity
* fix(computer): bind actions to current tool authority
* fix(macos): serialize computer control lifecycle
* docs(computer): document hardened control contract
* chore: follow release-owned changelog policy
* test(agents): cover node list cancellation
2026-07-10 06:47:56 +01:00
Peter Steinberger
9d4fb60e90
fix: harden exec auto-review approvals ( #103430 )
2026-07-10 06:44:03 +01:00
Peter Steinberger
98b8c8c4ae
feat(memory-wiki): isolate vaults per agent ( #103349 )
...
* feat(memory-wiki): isolate per-agent vaults
Refs #63829 .
Co-authored-by: SunnyShu <shu.zongyu@xydigit.com >
* fix(memory-wiki): scope agent status metadata
Refs #103088 and #103196 .
Co-authored-by: SunnyShu <shu.zongyu@xydigit.com >
---------
Co-authored-by: SunnyShu <shu.zongyu@xydigit.com >
2026-07-10 05:19:13 +01:00
Peter Steinberger
a789b92b39
fix(macos): harden fresh AI onboarding ( #102637 )
...
* fix(macos): bootstrap Codex before onboarding test
* fix(plugins): activate deferred runtimes on demand
* fix(macos): stage Codex runtime for onboarding probe
* fix(macos): expose sanitized onboarding errors
* fix(codex): reuse native CLI auth during onboarding
* fix(macos): hide Crestodian without inference
* fix(codex): honor explicit runtime policy during setup
* fix(onboarding): redact verification errors
* fix(macos): reset onboarding state with gateway route
* fix(onboarding): persist Codex plugin install metadata
* chore: refresh onboarding inventories
* fix(macos): restart AI setup after gateway change
* chore: refresh native onboarding inventory
* fix(onboarding): defer gateway restart until setup persists
* fix(macos): reset Crestodian on gateway changes
* chore(macos): refresh native i18n inventory
* fix(onboarding): harden inference setup state
* docs(skills): reuse pristine Parallels snapshots
* chore(macos): refresh onboarding i18n inventory
* fix(onboarding): prevent stale gateway and install state
* docs(skills): preserve saved Parallels sessions
* fix(macos): balance AI onboarding layout
* fix(parallels): parse npm workspace pack output
* chore(macos): refresh onboarding i18n inventory
* fix(parallels): bundle workspace runtime in package artifact
* fix(parallels): isolate canonical package helper
* fix(parallels): pack self-contained workspace artifact
* fix(packaging): exclude macOS app bundle
* fix(macos): restart inference checks after route changes
* docs(changelog): defer onboarding note to release
* fix(onboarding): enforce inference-first gateway setup
2026-07-10 04:59:15 +01:00
NianJiu
7e20018b69
fix: count multi-failure tool summaries accurately ( #102981 )
...
* fix: count tool summary failures
* fix(agents): preserve per-call tool failures
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
---------
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 00:53:06 +01:00
Vincent Koc
eaee8b7e74
chore(codex): update managed app-server to 0.144.1 ( #103156 )
2026-07-09 16:52:33 -07:00
Ayaan Zaidi
474d660137
fix(infra): converge legacy state migrations on archive collisions
2026-07-09 18:57:58 +05:30
Peter Steinberger
124119a898
test(plugins): sync release contracts ( #102777 )
...
* test(plugins): sync release contracts
* test(codex): isolate dynamic tool capability test
2026-07-09 13:57:35 +01:00
lzyyzznl
e99b5deb7a
fix(codex): keep dynamic tool output UTF-16 safe ( #102622 )
...
* fix(codex-dynamic-tools): use truncateUtf16Safe for notice text truncation
* fix(codex): keep dynamic tool text UTF-16 safe
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 12:44:34 +01:00
wings1029
0bdd646fc2
fix(text): keep context tails UTF-16 safe ( #102599 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 12:37:07 +01:00
Peter Steinberger
3ccf2a0739
feat: render inline web chat widgets via capability-gated show_widget tool ( #101840 )
...
Adds client-capability-gated tool availability: gateway clients declare
capabilities at connect (new inline-widgets cap), chat.send stamps them into
the run context, and every tool assembly path (embedded runner, queued
followups, Codex app-server harness, plugin-only construction plans) drops
tools whose requiredClientCaps the originating client did not declare. The
Canvas plugin ships the first such tool, show_widget: agents pass SVG or an
HTML fragment plus a title; the plugin hosts it as a bounded, retention-scoped
Canvas document and returns the existing canvas preview handle, which web chat
renders as a sandboxed iframe fitted to the widget's reported content height.
Widget frames never get allow-same-origin (per-preview sandbox ceiling,
including the sidebar path) and the Canvas host serves widget documents with a
CSP sandbox header so direct navigation runs in an opaque origin. Verified
live end-to-end on a Testbox with gpt-5.5 (screenshots on the PR). CLI-backed
model backends do not carry client caps yet and stay fail-closed (#102577 ).
Closes #101790
2026-07-09 12:29:50 +01:00
lsr911
f650d641e4
fix(codex): use truncateUtf16Safe in trajectory and client parse log truncation ( #102576 )
...
* fix(codex): use truncateUtf16Safe in trajectory and client parse log truncation
Replace naive .slice(0, N) with truncateUtf16Safe() in:
- trajectory.ts: payload redaction display (20k char limit)
- client.ts: parse error log truncation
Co-Authored-By: Claude <noreply@anthropic.com >
* test(codex): cover UTF-16 truncation boundaries
---------
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 10:53:25 +01:00
Ayaan Zaidi
1ad346e465
test(codex): align shared-client version fixtures with the 0.143.0 floor
2026-07-09 14:26:05 +05:30
Ayaan Zaidi
8589759818
fix(codex): keep terminal idle backstop gated during in-flight app-server requests
2026-07-09 14:26:05 +05:30
Ayaan Zaidi
bb1da73b14
fix(codex): fail detached-but-leased clients on suspect retirement
2026-07-09 14:26:05 +05:30
Ayaan Zaidi
80b2b709ca
fix(codex): scope client fan-out to terminal liveness kills
2026-07-09 14:26:05 +05:30
Ayaan Zaidi
ca3f247eb2
fix(codex): fan out app-server liveness retirement
2026-07-09 14:26:05 +05:30
lsr911
32de666163
fix(codex): use truncateUtf16Safe for tool transcript output truncation ( #102522 )
...
* fix(codex): use truncateUtf16Safe for tool transcript output truncation
Replace naive .slice(0, N) with truncateUtf16Safe() in event-projector
tool transcript output text to prevent surrogate pair splitting.
Co-Authored-By: Claude <noreply@anthropic.com >
* fix(codex): keep streamed output utf16-safe
* refactor(codex): use plugin sdk text runtime
---------
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 09:37:07 +01:00
xingzhou
b23fdcfac9
fix(codex): avoid broken emoji in dynamic tool timeout logs ( #102509 )
...
* fix(codex): keep dynamic tool log fields UTF-16 safe
* test(codex): narrow dynamic tool response item
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 09:26:22 +01:00
xingzhou
4adfc30b90
fix(codex): app inventory error diagnostics stay UTF-16 safe ( #102414 )
...
* fix(codex): keep app inventory error messages UTF-16 safe
* refactor(codex): unify app inventory error truncation
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 07:31:18 +01:00
Vincent Koc
8a5ad170c0
chore(codex): bump app-server to 0.143.0
2026-07-08 23:07:20 -07:00
Vincent Koc
bf3e2f5b80
fix(codex): migrate retired approval policy
2026-07-08 23:07:20 -07:00
Peter Steinberger
ed28c57e20
fix(codex): validate maintained app-server types ( #101726 )
...
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-07 15:48:08 +01:00
Peter Steinberger
176fee5d07
fix: prevent garbled emoji at remaining text limits ( #101685 )
...
* fix: keep remaining bounded text UTF-16 safe
Co-authored-by: 0668000787 <ma.weibin@xydigit.com >
Co-authored-by: ben.li <li.yang6@xydigit.com >
Co-authored-by: 廖石荣 0668000909 <liao.shirong@xydigit.com >
Co-authored-by: 陈志强0668000989 <chen.zhiqiang1@xydigit.com >
* test: use tracked prompt template fixture
---------
Co-authored-by: 0668000787 <ma.weibin@xydigit.com >
Co-authored-by: ben.li <li.yang6@xydigit.com >
Co-authored-by: 廖石荣 0668000909 <liao.shirong@xydigit.com >
Co-authored-by: 陈志强0668000989 <chen.zhiqiang1@xydigit.com >
2026-07-07 14:49:15 +01:00
lsr911
37d613a596
fix(codex): use truncateUtf16Safe for attempt notification text truncation ( #101534 )
...
* fix(codex): use truncateUtf16Safe for attempt notification text truncation
.slice(0, 237) on notification text can split surrogate pairs from
CJK characters or emoji in agent output, producing U+FFFD in Codex
desktop notifications.
Co-Authored-By: Claude <noreply@anthropic.com >
* test(codex): cover UTF-16-safe attempt previews
* test(codex): assign notification coverage to a shard
---------
Co-authored-by: Claude <noreply@anthropic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-07 12:00:35 +01:00
Peter Lee
c2cc50c9a0
fix(codex): use UTF-16-safe truncation for approval display paths ( #100177 )
...
* fix(codex): use UTF-16-safe truncation for approval display paths
* fix(codex): resolve oxlint errors in approval-bridge and elicitation-bridge tests
* test(codex): cover approval Unicode boundaries
* test(codex): narrow approval command assertion
* chore: remove generated changelog entry
* chore: restore CHANGELOG.md to upstream/main baseline
* test(codex): tighten UTF-16 approval assertions
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-07 11:46:50 +01:00