sunlit-deng
478a895623
fix(voice-call): keep custom tail cursor aligned with short reads ( #108322 )
...
* fix(voice-call): keep custom tail cursor aligned with short reads
* test(voice-call): preserve timer behavior after rebase
* fix(voice-call): reset custom tail after short-read truncation
* style(voice-call): format custom log regression
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 23:25:11 -04:00
Peter Steinberger
e0a119dabf
fix(channels): own account status in one closed state machine ( #114775 )
...
* refactor(channels): own account status in one closed state machine
* fix(gateway): stop storing derived reasons and configured in channel runtime
* fix(channels): separate linkage from configuration in whatsapp and zalo personal
* fix(cli): render channel state reasons apart from runtime failures
* refactor(channels): keep account-state projection internal to its owner
2026-07-27 23:04:28 -04:00
Peter Steinberger
577a0642fa
fix(plugin-sdk): classify loopback hosts consistently ( #114832 )
...
* fix(plugin-sdk): expose loopback host classifier
* fix(ollama): remove stale host normalizer import
* chore: keep release notes in PR context
2026-07-27 22:55:44 -04:00
sunlit-deng
b4e246be01
fix(line): preserve webhook object error details ( #113606 )
...
* fix(line): preserve webhook object error details
* fix(line): preserve structured errors on the live webhook route
* test(line): provide the complete typed runtime to webhook proof
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 22:46:21 -04:00
Peter Steinberger
f2a12916d7
fix(codex): refuse Platform routes on a subscription-signed native Codex home ( #114719 )
...
A user-home app-server keeps its native Codex account, and OpenClaw verified only
half of that contract. A subscription route was checked against the native
account, but a Platform (API-key) route was not: an operator signed in to Codex
with a ChatGPT subscription who selected an API-billed model silently spent their
plan. Both directions of the same billing boundary now share one account/read
check. An absent account is left alone, since a native home may serve a custom
model provider that reports no OpenAI account at all.
The home-scope rule behind #114397 was also expressed four times: two
prepared-auth call sites spread it in conditionally from raw plugin config, two
others read resolved start options, and the supervision connection applied its
own default inline. resolveCodexAppServerHomeScope now owns it, and homeScope is
a required argument of resolveCodexAppServerPreparedAuthHandoff, so a new call
site that forgets it fails to compile instead of failing every turn.
Docs dropped the stale user-home paragraph that still described the startup
failure #114397 removed and told operators to delete a working OpenAI profile.
2026-07-27 22:42:18 -04:00
Peter Steinberger
4273ca9dbd
refactor(sessions): remove file-era transcript runtime ( #113233 )
...
* refactor(sessions): keep helper transcripts in memory
* refactor(sessions): remove file-era transcript storage
* test(sessions): use SQLite identity in attempt persistence
* test(codex): isolate legacy transcript fixtures
* fix(sessions): preserve SQLite transcript identity
* fix(sessions): harden transcript lifecycle invariants
* fix(sessions): validate transcript identities
* fix(sessions): close identity compatibility gaps
* fix(sessions): preserve leaf and plugin identities
* fix(sessions): retain dispatch transcript targets
* fix(sessions): preserve active transcript context
* fix(sessions): isolate artifact accounting
* fix(sessions): bound SQLite usage accounting
* fix(sessions): retain bounded latest usage
* fix(sessions): align rebased transcript targets
* test(sessions): align accessor scope fixture
* fix(telegram): derive SQLite transcript identity
* refactor(sessions): remove file-era compaction residue
* chore(sessions): lower max-lines baseline
* fix(sessions): preserve structured transcript identity
* test(sessions): align doctor identity assertions
* fix(sessions): isolate default SDK database
* refactor(sessions): remove dead file-era exports
* fix(sessions): reconcile SQLite transcript identity
* fix(sessions): pass checkpoint identity explicitly
* test(sessions): make entry field probe explicit
* test(sessions): satisfy transcript cleanup lint
* test(sessions): align diagnostics identity proof
* fix(sessions): finish transcript runtime teardown
* fix(sessions): preserve transcript identity invariants
* fix(sessions): harden transcript compatibility edges
* fix(sessions): preserve checkpoint transcript anchors
* fix(sessions): preserve SQLite lifecycle invariants
* fix(sessions): retarget compaction successors
* test(sessions): preserve transcript fixture semantics
* feat(plugin-sdk): add command transcript targets
* fix(sessions): serialize transcript rewrites
* fix(sessions): validate legacy successor identity
* fix(sessions): normalize compaction ownership
* fix(sessions): validate successor identity before adoption
* fix(sessions): preserve plugin transcript ownership
* fix(sessions): carry transcript identity through commands
* fix(sessions): import legacy checkpoint artifacts into SQLite
* fix(sessions): preserve successor transcript ownership
* fix(sessions): align transcript consumers with target identity
* fix(sessions): scope transcript token estimates
* fix(sessions): retain agent identity across lifecycle hooks
* fix(sessions): resolve scoped SQLite targets
* fix(sessions): isolate lifecycle transcript targets
* fix(sessions): validate compaction agent ownership
* fix(sessions): preserve reset and cleanup lifecycle
* fix(sessions): serialize prompt cleanup lifecycle
* fix(sessions): remove stale lock import
* fix(sessions): preserve reset target context
* fix(sessions): fence prompt reload takeover
* fix(sessions): unblock abort and default lifecycle reads
* fix(sessions): validate legacy successor scope
* fix(sessions): reject metadata-only runtime rows
* fix(sessions): propagate custom transcript stores
* fix(sessions): preserve adopted retry targets
* fix(sessions): allow unkeyed usage reads
* fix(sessions): harden runtime target boundaries
* fix(sessions): serialize retry transcript writes
* fix(sessions): bound prompt reload disposal
* fix(sessions): complete retry marker identity
* fix(sessions): keep legacy marker identity minimal
* test(sessions): tighten teardown fixture types
* fix(sessions): preserve compatibility target identity
* test(sessions): persist post-checkpoint boundary turn
* test(sessions): align runtime store mock contracts
* style(sessions): simplify persisted identity guard
* fix(sessions): prefer complete typed targets
* fix(sessions): recover legacy marker targets
* test(sessions): align marker lookup fixture scope
* fix(sessions): validate partial transcript targets
* fix(sessions): reconcile partial transcript identities
* fix(sessions): canonicalize compatibility identities
* test(sessions): cover compatibility aliases
* fix(sessions): adopt legacy successor identity
* fix(sessions): preserve usage read identity
* fix(sessions): preserve partial marker compatibility
* fix(sessions): validate legacy successor mappings
* fix(sessions): reconcile marker store mappings
* fix(sessions): preserve legacy fallback identity
* fix(sessions): harden marker alias resolution
* fix(sessions): prefer verified successor aliases
* fix(sessions): resolve preferred marker aliases
* fix(sessions): serialize cleanup admission
* fix(sessions): align marker lookup scopes
* fix(codex): type marker alias summaries
* style(sessions): satisfy changed lint
* test(sessions): align structured target assertions
* fix(sessions): reconcile latest identity contracts
* fix(sessions): validate transcript identity boundaries
* docs(sessions): explain stable registry keys
* fix(sessions): harden compatibility target round trips
* fix(sessions): port usage identity to split modules
* test(sessions): align subagent transcript identity
* fix(sessions): finish transcript identity migration
* fix(agents): route subagent completion capture through transcript targets
* fix(agents): settle SQLite prompt handoff during cleanup
* chore: shrink max-lines baseline after teardown
* fix(sessions): port teardown across split runtime owners
* fix(sessions): carry transcript targets through split owners
* test(agents): use SQLite compaction target in abort coverage
* chore: retain unrelated max-lines suppressions
* chore: shrink max-lines baseline after main splits
* style(agents): const compaction checkpoint locals
* fix(sessions): harden SQLite teardown boundaries
* test(sessions): use typed metadata in predicate isolation fixture
* test(agents): cover malformed settlement rejections lint-safely
* fix(sessions): close remaining SQLite identity races
* fix(agents): fail closed on incomplete successor targets
* fix(sessions): preserve transcript identity fallbacks
* fix(agents): preserve session-key abort admission
* fix(trajectory): validate incomplete export targets
* test(sessions): drop retired pricing cache imports
* fix(sessions): validate partial transcript identities
* fix(sessions): close transcript identity edge cases
* fix(plugins): reserve retired transcript locator slot
* fix(sessions): scope transcript locks by target
* style(sessions): simplify SDK initialization error
* fix(sessions): preserve initialized transcript state
* fix(codex): verify mirrored history session keys
* fix(sessions): reject stale transcript ownership
* fix(sessions): anchor asynchronous transcript ownership
* fix(sessions): measure active transcript state
* fix(sessions): preserve scoped transcript compaction
* fix(sessions): harden transcript identity and lifecycle
* fix(sessions): resolve scoped command transcript stores
* fix(sessions): make transcript appends failure-atomic
* fix(sessions): enforce scoped transcript ownership
* fix(sessions): reject cross-owner transcript handoffs
* fix(sessions): fence cleanup transcript ownership
* fix(sessions): retire stale write ownership contexts
* fix(sessions): preserve pending session migration state
* fix(sessions): validate migrated transcript ownership
* fix(sessions): validate usage transcript targets
* fix(sessions): clear predecessor transcript metadata
* fix(sessions): align durable session event targets
* fix(sessions): fence late prompt handoffs
* fix(sessions): fence lifecycle transcript fallbacks
* fix(sessions): bound zero-length memory capture
* fix(sessions): preserve transcript teardown ownership
* fix(sessions): reject duplicate cleanup ownership
* fix(sessions): serialize runtime writes with sqlite leases
* fix(sessions): close sqlite teardown concurrency gaps
* fix(sessions): preserve nested lifecycle failures
* fix(sessions): canonicalize sqlite transcript ownership
* fix(sessions): settle disposed prompt handoffs
* fix(sessions): resolve canonical attempt lock targets
* test(sessions): align canonical target fixtures
* test(sessions): retire redundant jsonl parser coverage
* refactor(sessions): split active transcript cursors
* test(memory): retire legacy marker fixture
* fix(sessions): preserve canonical transcript access after rebase
* fix(sessions): fence prompt lease and return transcript targets
* fix(sessions): colocate transcript leases with target store
* fix(sessions): canonicalize transcript lease and worker targets
* fix(sessions): preserve plugin and fork identity markers
* fix(sessions): complete sqlite transcript target migration
* fix(sessions): integrate canonical followup identity
* fix(sessions): preserve bounded transcript topology
* fix(sessions): validate transcript identity boundaries
* fix(context): separate caller and successor targets
* test(sessions): split persistence compatibility coverage
* test(sessions): preserve fixture topology efficiently
* chore(sdk): refresh plugin api baseline
* test(agents): align compaction lock target mocks
* test(sessions): seed malformed transcript fixtures directly
* fix(agents): canonicalize transcript compatibility inputs
* fix(agents): type optional tool result ids
* test(ci): stabilize loaded process timing
* test(tui): wait for collect queue admission
2026-07-27 22:33:24 -04:00
Peter Steinberger
9bcc44301b
fix(nodes): preserve gateway connections and local inference ( #114857 )
2026-07-27 22:28:32 -04:00
RileyJJY
6de4b47203
fix(ollama): release failed discovery bodies ( #109967 )
...
* fix(ollama): release failed discovery bodies
* test(ollama): prove failed discovery sockets close
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 22:20:15 -04:00
Leon-SK668
c3713317b8
fix(active-memory): accept max thinking config ( #103614 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 22:06:00 -04:00
Peter Steinberger
56d9d07516
feat(ui): match ClickClack discussion sidebars to host themes ( #114812 )
...
* feat(ui): align ClickClack discussion themes
* fix(ui): synchronize custom discussion palettes from first paint
* fix(clickclack): explicitly identify theme-aware discussion embeds
2026-07-27 22:03:58 -04:00
Leon-SK668
a90bef3970
fix(usage): guard malformed Copilot payloads ( #110795 )
...
Co-authored-by: Leon-SK668 <17695126+Leon-SK668@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 21:55:15 -04:00
joshavant
d0669429d8
fix(telegram): suppress unsafe reply previews
2026-07-27 20:31:51 -05:00
Peter Steinberger
d5907ca619
fix(google): keep static compat flags on discovered Gemini id variants ( #114831 )
2026-07-27 21:13:44 -04:00
Peter Steinberger
92fff941ef
perf(anthropic): memoize the local Claude session scan ( #114833 )
...
* perf(anthropic): memoize the local Claude session scan
* fix(anthropic): make the scan memo freshness gate race-safe
2026-07-27 21:13:12 -04:00
Peter Steinberger
b2f137797b
fix(codex): isolate QA sandbox from production policy ( #114830 )
2026-07-27 21:05:41 -04:00
Peter Steinberger
0bfe7dd357
feat(plugins): deliver sessions.changed to plugin services ( #114813 )
...
* feat(plugins): deliver sessions.changed to plugin services
* docs: regenerate docs map
* refactor(clickclack): split reconcile scheduler and history formatting out of the discussion service
* style: format discussion service
2026-07-27 20:56:44 -04:00
Peter Steinberger
fafe7d9dad
fix: prevent cron and Workboard execution races ( #114808 )
2026-07-27 20:33:53 -04:00
Peter Steinberger
a1e0c9ea09
refactor(packages): DM-policy contract suite, dead routes, package folds ( #114776 )
...
* test(channels): share DM policy contract suite
* refactor(memory): remove dead host CLI routes
* refactor(acp): use canonical normalization helpers
* refactor(web): fold provider runtime into core
* refactor(packages): remove dead runtime exports
* chore(knip): drop retired ACP entry roots
2026-07-27 20:20:13 -04:00
Peter Steinberger
9ea545c123
test(active-memory): canonicalize session delivery fixtures ( #114806 )
...
Five session-store fixtures in index.test.ts still seeded the legacy flat
channel/origin fields. #113225 (73bba03e4c ) moved the plugin's channel
resolution to canonical delivery state only, which broke two tests
(canonical session key by sessionId; resolved channel over wrapper hint)
and left three others passing vacuously (the #77396 colon-channel guard
and both weak-wrapper precedence tests no longer exercised their store
fixtures). Seed the canonical external delivery shape so all five tests
exercise the real read path again.
Test-only change; runtime behavior is untouched. Full suite:
extensions/active-memory 203/203 passing (was 201/203).
2026-07-27 20:12:29 -04:00
Peter Steinberger
4301ca9831
refactor(channels): mattermost event-plan builder and whatsapp durable admission ( #114763 )
...
* refactor(mattermost): consolidate event planning
* refactor(whatsapp): use shared durable admission
* refactor(channels): keep ingress helpers private
* fix(whatsapp): preserve receive-time ingress identity
* style(whatsapp): format durable receive helper
2026-07-27 19:43:56 -04:00
Peter Steinberger
37cf0c6064
improve: reduce GPT-5.6 coding harness overhead ( #114574 )
...
* improve: reduce GPT-5.6 coding harness overhead
* refactor: extract runtime parity timing helpers
* fix(qa): verify native apply-patch runtime parity
* fix(qa): use mock patch execution evidence
* fix(qa): preserve workspace templates in full syncs
* fix(qa): make rejected patch fixtures deterministic
* fix(qa): prove apply-patch workspace containment
* fix(qa): expose runtime prompt-cache usage
* fix(codex): confine forced private QA patch turns
* fix(qa): verify native patch execution and sandbox precedence
* fix(qa): execute native patches and prove disk mutation
* fix(codex): avoid duplicate native patch registration
* perf(agents): keep code mode catalog guidance compact
* fix(qa): make native Codex patch evidence deterministic
* fix(qa): recognize native sandbox denial errors
* fix(qa): advertise native Codex mock model capabilities
* fix(qa): seed native Codex mock model catalog at startup
* fix(qa): recognize native Codex patch denial results
* fix(ci): repair Codex harness parity checks
* fix(qa): distinguish unknown prompt-cache measurements
* fix(qa): accept native Codex project patch denials
* fix(ci): isolate runtime parity report contracts
* fix(codex): eliminate native runtime transport overhead
* fix(qa): consume runtime parity report contract
* fix(qa): compare matched runtime timing captures
* fix(qa): type native response delta context
* fix(qa): satisfy native codex websocket lint
2026-07-27 19:24:52 -04:00
Ayaan Zaidi
b37e819d74
fix(telegram): show progress for queued replies ( #114590 )
...
* fix(telegram): preserve queued followup progress
* fix(auto-reply): restore queued progress lifecycle
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
2026-07-28 08:12:17 +09:00
joshavant
bc1a317e29
fix: preserve message route and account defaults
2026-07-27 17:55:44 -05:00
joshavant
6add1a72ce
fix: validate explicit message account selection
2026-07-27 17:55:44 -05:00
Peter Steinberger
b5bb29a36e
fix(code-mode): preserve direct tools and secure suspended runs ( #114778 )
...
Preserve trusted policy-required message delivery and native image/computer tools across Code Mode catalogs and provider transports. Keep preferred Gemini capability metadata during live discovery, escape MCP declaration keywords, and reject suspended-run resumes with missing owner identity. Add before-and-after regressions for each user path. Closes #114753 .
2026-07-27 18:47:33 -04:00
Peter Steinberger
e5e77b656a
fix: keep dynamic model switching and agent catalogs reliable ( #114760 )
...
* fix: keep dynamic model switching and agent catalogs reliable
* test: use schema-valid dynamic model regression fixtures
* test: align utility completion with configured model fallback
2026-07-27 18:30:40 -04:00
Ayaan Zaidi
5e8555a7c9
fix(telegram): keep media-less unmentioned group messages on the canonical mention gate
2026-07-28 06:57:02 +09:00
Peter Steinberger
d0948c33b5
fix: prevent cron and Workboard lifecycle races ( #114744 )
2026-07-27 17:55:17 -04:00
Peter Steinberger
7e8afba703
feat(plugins): mirror local coding sessions to a remote Beam receiver ( #114735 )
...
* feat(plugins): mirror local coding sessions to a remote Beam receiver
* fix(plugins): satisfy static gates for the Beam mirror seam
* fix(plugins): import the config type from the narrow contracts subpath
* fix(plugins): require catalog consent and loopback-only plaintext for the Beam mirror
2026-07-27 17:31:34 -04:00
LZY3538
903d8bc9d5
fix(imessage): detect remote wrappers when HOME is blank ( #111715 )
...
* fix(imessage): detect remote hosts when HOME is blank
* fix(imessage): resolve blank HOME in SSH wrappers (#111715 )
Resolve explicitly blank or whitespace HOME values from the operating-system account, preserve configured and unset home contracts, and share the canonical resolver with the iMessage monitor and recovery cursor. Add unmocked subprocess coverage for account-home resolution and working-directory tilde shadows.
Co-authored-by: LZY3538 <liu.zhenye@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 17:14:38 -04:00
Peter Steinberger
960b050add
refactor(extensions): remove orphaned shadow trial and retired config aliases ( #114709 )
...
* refactor(memory-core): remove orphaned shadow trials
* refactor(qqbot): migrate direct voice upload formats
Release note: QQBot configs using voiceDirectUploadFormats now migrate through openclaw doctor --fix to audioFormatPolicy.uploadDirectFormats at root and account scope. Existing nested uploadDirectFormats values win conflicts, and runtime reads only the nested policy.
* refactor(feishu): migrate tools base alias
Release note: Feishu configs using tools.base now migrate through openclaw doctor --fix to tools.bitable at root and account scope. Existing bitable values win conflicts, and runtime accepts only the canonical key.
* refactor(extensions): remove dead runtime state
* chore(config): refresh bundled channel metadata
* refactor(codex): keep realtime fallback type private
* test(ci): align QA compatibility scenario count
2026-07-27 17:12:41 -04:00
Jason (Json)
62baf451c1
fix(deepinfra): remove deprecated embedding provider warning ( #114727 )
...
* fix(deepinfra): migrate embedding provider registration
* fix(deepinfra): preserve embedding index identity
2026-07-27 14:53:34 -06:00
Peter Steinberger
f4058528e5
refactor(agents): centralize message-tool and direct-visibility predicates ( #114720 )
...
* refactor(agents): centralize message-tool and direct-visibility predicates
* refactor(agents): unexport classifyTool and drop redundant union
2026-07-27 16:51:20 -04:00
Peter Steinberger
6d9b2d4d66
refactor(outbound): consolidate fenced cross-channel delivery ( #114689 )
...
* refactor(outbound): consolidate fenced delivery ownership
* fix(outbound): break durable-delivery contract cycle
* fix(outbound): align delivery queue owner tests and exports
2026-07-27 16:50:58 -04:00
Peter Steinberger
7394262cd1
feat: per-model code-mode capability flags with an "auto" master-switch tier ( #114695 )
...
* feat(tools): per-model code-mode capability flags and auto master-switch tier
* feat(anthropic): flag claude-sonnet-4-6 as code-mode preferred
* revert(anthropic): drop claude-sonnet-4-6 from the code-mode preferred set
* test(anthropic): type the manifest compat field in the catalog contract test
* fix(anthropic): carry catalog compat onto hand-built forward-compat model rows
2026-07-27 16:47:41 -04:00
Peter Steinberger
0e37f143f5
refactor(slack)!: retire inline interactive directives for typed presentation ( #114738 )
...
* refactor(slack): retire inline interactive directives
Release note: Slack configs using channels.slack.capabilities.interactiveReplies, including per-account settings, are removed by openclaw doctor --fix. Slack-only [[slack_buttons:...]] and [[slack_select:...]] markup is no longer parsed; emit typed presentation buttons and selects instead.
* docs: refresh Slack docs map
2026-07-27 16:41:00 -04:00
Peter Steinberger
17e42229d2
feat: teach models to use collapsible details where supported ( #114706 )
...
* feat: teach models to use collapsible details where supported
* fix: accept nullable accountId in telegram rich-messages helper
* docs: regenerate docs map for collapsible details heading
* fix(ci): remove duplicate Codex prewarm test route
2026-07-27 16:06:33 -04:00
Peter Steinberger
f0371e8d88
fix: stop blocked tool loops stalling until timeout ( #114673 )
...
* fix(agents): make global loop breaker reachable
Record loop-detector vetoes as typed no-progress outcomes so repeated blocked calls continue the existing streak without colliding with plugin or approval denials. Extract streak accounting into its own owner module and keep completed veto records out of argument reconciliation.\n\nFixes #109435 .
* test: harden isolated project routing
Route registry-sensitive UI tests through the isolated project for both focused and broad runs, centralize the isolated file list, and register the Codex prewarm test in the full extension shard.
* test(qa): prove global loop breaker runtime
Drive 31 identical read attempts through the real QA Gateway agent loop and verify the typed veto streak reaches the global circuit breaker before the turn returns a final marker.
* test: keep isolated UI files out of shared runs
Always exclude registry-sensitive files from the shared UI project and reject broad watch targets that would span shared and isolated projects.
2026-07-27 16:02:28 -04:00
Peter Steinberger
7361455160
fix(clickclack): name discussion channels from session titles ( #114711 )
2026-07-27 15:45:42 -04:00
Peter Steinberger
3dc3370d9e
fix(copilot): keep tool transcript groups structurally complete ( #114403 )
...
* refactor(copilot): make SQLite own transcripts
* fix(copilot): harden transcript event projection
* test(copilot): tighten transcript journal types
* fix(copilot): retain unmatched usage metadata
* refactor(copilot): commit tool groups atomically
* fix(copilot): break journal bridge import cycle
* fix(copilot): preserve grouped transcript replay
* test(copilot): cover opaque replay state
* fix(copilot): invalidate lossy transcript replay
* fix(copilot): guard transcript rewrite topology
* fix(copilot): drain transcript finalization
* fix(copilot): preserve resumed session history
* fix(copilot): dedupe replayed transcript snapshots
* fix(copilot): isolate transcript write hooks
* fix(copilot): track staged transcript identities
* fix(copilot): isolate ephemeral transcript events
* fix(copilot): coalesce assistant snapshots
* fix(copilot): invalidate unprojected SDK context
* fix(copilot): guard resumed transcript replay
* fix(plugin-sdk): expose strict transcript append
* fix(copilot): persist journal provenance safely
* fix(copilot): separate live and durable deltas
* fix(copilot): require durable projection ownership
* fix(copilot): preserve strict append typing
* fix(copilot): gate deferred session deletion
* fix(copilot): preserve transcript replay identity
* fix(copilot): retain cited replay history
* fix(copilot): require complete replay provenance
* fix(copilot): reject ambiguous assistant snapshots
* fix(copilot): return latest assistant snapshot
* chore(copilot): align transcript lint gates
* test(lint): cover Copilot line budgets
* test(ci): dedupe Codex prewarm shard
2026-07-27 15:42:00 -04:00
Peter Steinberger
bbc73c36bd
feat(plugins): beam local coding sessions into a read-only catalog ( #112323 )
...
* feat(plugins): add read-only session beam
* test(plugins): tighten Beam HTTP fixtures
* docs(plugins): refresh Beam inventory counts
* fix(plugins): keep Beam wire types private
* fix(plugins): stabilize Beam transcript paging
* fix(plugins): honor Beam Control UI base paths
2026-07-27 15:37:36 -04:00
Peter Steinberger
e1e62f2a6e
fix: prevent cron and Workboard lifecycle races ( #114674 )
...
* fix: harden cron and workboard lifecycle races
* fix: include missing app-server test in CI shard
2026-07-27 14:52:06 -04:00
Peter Steinberger
778edf0a81
refactor(providers): consolidate compatible replay policies ( #114669 )
2026-07-27 14:15:53 -04:00
Peter Steinberger
892b8b4c22
fix(qa): allow tracked runtime harness gaps ( #114667 )
2026-07-27 14:09:14 -04:00
ClawSweeper
e073d17be1
perf(codex): prewarm app server during attempt setup ( #114551 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 11:02:16 -07:00
Luka Dolenc
600fac1cf7
fix(memory-core): prune dangling recall refs during repair ( #114419 )
...
* fix(memory-core): prune dangling recall refs during repair
* refactor(memory-core): clarify dangling audit count
---------
Co-authored-by: Luka Dolenc <266726612+DolencLuka@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 13:54:01 -04:00
Peter Steinberger
8f8e40dabe
perf(gateway): share one node.list snapshot across session catalog providers ( #114646 )
2026-07-27 13:14:07 -04:00
Onur Solmaz
89c5b02832
revert(openai): remove loopback Codex proxy support ( #114616 )
...
Reverting PR from runaway clanker, sorry! Won't happen again!
2026-07-27 23:15:42 +08:00
Peter Steinberger
17ed69e103
fix(agents): preserve prompt caches across tool discovery ( #114572 )
2026-07-27 09:58:19 -04:00
Peter Steinberger
de3616526b
fix(release): repair plugin prerelease contracts ( #114597 )
2026-07-27 09:57:43 -04:00