Peter Steinberger
4e689a219d
test: speed async lifecycle and parity coverage ( #106605 )
...
* test: speed up async lifecycle suites
* test: stabilize async speedups
* test: remove duplicated provider auth parity suite
2026-07-13 15:40:16 -07:00
Peter Steinberger
2e0f6d5304
fix: recover browser routing and Discord voice context
2026-07-13 23:38:56 +01:00
Peter Steinberger
334e7f3f21
feat(apps): add native mobile Automations parity ( #106355 )
...
* fix(apps): address native Skills review feedback
* feat(apps): add native Automations parity
* fix(ios): preserve automation editor selection
* fix(android): page automation discovery
* chore(apps): refresh native source inventory
* fix(ios): refresh invalid automation diagnostics
* chore(apps): sync native localization
* fix(cron): stabilize paginated snapshots
* refactor(cron): split pagination helpers
* fix(apps): address final native review feedback
* chore(apps): refresh native source inventory
* fix(ios): dedupe automation list actions
* chore: keep release note in PR context
* fix(ci): repair current main architecture gates
* fix(ios): default new skill requirement fields
* fix(ios): retain queued automation reservations
2026-07-13 15:35:32 -07:00
Peter Steinberger
5c9e09af3a
style(codex): format prompt projection
2026-07-13 15:32:59 -07:00
Peter Steinberger
51fece4960
fix(codex): preserve failure-path ownership
2026-07-13 15:32:59 -07:00
Peter Steinberger
323a9fbe29
refactor(codex): split app server run attempt
2026-07-13 15:32:59 -07:00
Peter Steinberger
4319ddbe8c
feat(control-ui): import Codex and Claude Code memory ( #106406 )
...
* feat(control-ui): import coding assistant memory
* test(migrate): clean memory import temp dirs
* chore: move memory import note to PR body
* build: refresh memory import generated artifacts
* fix(control-ui): complete memory import checks
* build(control-ui): localize memory recovery labels
* fix(control-ui): harden memory import recovery
* refactor(migrate): keep memory import surfaces bounded
* fix(control-ui): use canonical agent row type
* fix(codex): drop dead migration type exports
* fix(migrate): restrict imported memory permissions
* fix(control-ui): preserve memory import recovery state
* fix(control-ui): retain memory import results
* build(control-ui): preserve translation memory history
* fix(control-ui): bind memory import state to agent
* fix(control-ui): unlock memory import after refresh
* test(gateway): preserve memory method suffix
* fix(migrate): bind reviewed memory imports
* fix(migrate): make memory imports retry-safe
* perf(ui): keep memory import lazy
* build: refresh generated artifacts after rebase
* chore: keep migration runtime within LOC guard
* build: refresh Swift protocol model
2026-07-13 15:30:06 -07:00
Peter Steinberger
4568606490
refactor(telegram): privatize doctor helpers ( #106861 )
2026-07-13 15:29:06 -07:00
Peter Steinberger
70833dab7f
ci: scope PR Node tests to changed targets ( #106633 )
...
* ci: scope PR Node tests to changed targets
* ci: bound targeted Node test plans
* test: cover changed path manifest input
* fix(ui): preserve model providers lazy boundary
* ci: cover public SDK re-export consumers
* ci: reject unresolved changed test targets
* ci: cover public SDK wrapper imports
* ci: preserve global checks in targeted plans
* docs(ci): clarify targeted boundary coverage
* test(plugins): declare computed runtime dependencies
2026-07-13 15:26:02 -07:00
Peter Steinberger
95da05ddce
fix(oc-path): preserve JSONC insertion formatting
2026-07-13 15:25:53 -07:00
Peter Steinberger
dc8ef09bbe
refactor(diagnostics-otel): keep extracted helpers private
2026-07-13 15:25:11 -07:00
Peter Steinberger
6454b07b17
refactor(diagnostics-otel): slim service orchestration
2026-07-13 15:25:11 -07:00
Peter Steinberger
00af5a5989
refactor(diagnostics-otel): extract event recorders
2026-07-13 15:25:11 -07:00
Peter Steinberger
351c069ed2
refactor(diagnostics-otel): extract telemetry foundations
2026-07-13 15:25:11 -07:00
Vincent Koc
a8548a1191
refactor(shared): narrow entry status API ( #106856 )
2026-07-14 06:24:21 +08:00
Peter Steinberger
bc8a44bc41
refactor(agents): extract attempt prompt submission
2026-07-13 15:24:18 -07:00
Peter Steinberger
00b38ebc20
feat(web): show session branch row for local changed files ( #106835 )
...
* feat(web): show session branch row for local changed files
The pre-PR branch row above the composer only appeared once the branch
was pushed and ahead of the default branch. Sessions with local work
(committed, uncommitted, or untracked changes) showed nothing.
The gateway now emits the branch payload whenever the working tree has
changed files vs the default-branch merge base; createUrl is withheld
until GitHub's pull/new page has something to compare, and the UI only
renders the Create PR link when it is present.
* refactor(gateway): keep control-ui-session-prs under LOC ratchet
* docs(gateway): note explicit-base diff counts conflict paths
2026-07-13 15:17:37 -07:00
Peter Steinberger
03455c9cd0
refactor(auto-reply): privatize finalization timeout ( #106853 )
2026-07-13 15:17:11 -07:00
wangmiao0668000666
5f681a1cb8
fix(memory-core): clear pending-update wait timer after update settles ( #106173 )
...
* fix(memory-core): clear pending-update wait timer after update settles
* test(memory-core): wrap setImmediate Promise executor in block body
`oxlint(no-promise-executor-return)` (enabled in the bundled-extension
config used by `pnpm lint:extensions:bundled` /`check-lint` /
`check-additional-extension-bundled`) flags the implicit return from
`new Promise((resolve) => setImmediate(resolve))`. The arrow function
is expression-bodied and returns the Immediate handle, which the rule
treats as a return inside a Promise executor.
Switch both occurrences in the regression guard to block bodies so the
executor callback does not return a value. Behavior is unchanged:
setImmediate still fires resolve on the next macrotask; the regression
assertion (process.getActiveResourcesInfo() delta) still passes.
* test(memory-core): track pending wait timer cleanup
* refactor(memory-core): keep timer cleanup LOC-neutral
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: Peter Steinberger <peter@steipete.me >
2026-07-13 15:16:19 -07:00
ruel225
b6330edbe4
fix(sdk): add prototype-pollution guard to migration config merge ( #103059 ) ( #106116 )
...
* fix(sdk): add prototype-pollution guard to migration config merge
mergeMigrationConfigValue and writeMigrationConfigPath had no
isBlockedObjectKey guard, allowing __proto__/constructor/prototype
keys from imported config files to trigger prototype pollution.
Add the same guard used by the sibling config-path writer
(setConfigValueAtPath/parseConfigPath) to reject blocked object
keys before they reach a bracket assignment.
Fixes #103059
* fix(sdk): harden migration config patches
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-13 15:14:58 -07:00
Peter Steinberger
e69df7ef22
refactor(cli): privatize internal exports ( #106848 )
2026-07-13 15:09:26 -07:00
Peter Steinberger
710d1eb443
refactor(agents): extract attempt prompt preflight
2026-07-13 15:03:45 -07:00
Peter Steinberger
99a7ac8743
refactor(cli): share Clack select styling
2026-07-13 15:01:41 -07:00
Peter Steinberger
856e1ab8d9
fix(ci): bind release target context ( #106836 )
2026-07-13 15:00:03 -07:00
Peter Steinberger
3c58dba07b
refactor(ui): privatize chat settings patch tracker ( #106842 )
2026-07-13 14:58:59 -07:00
Peter Steinberger
76834210f8
fix(lobster): restore literal dep reference for runtime contract
...
70ab6b324d dropped the last literal "@clawdbot/lobster" mention from the
runner while keeping the join-built dynamic import, so the unused-direct-
dependency contract started failing on main. Document the join trick with
the literal package path so the contract sees the dependency again.
2026-07-13 14:55:36 -07:00
Vincent Koc
898ef1f45c
refactor(macos): remove write-only voice wake state ( #106468 )
2026-07-14 05:54:25 +08:00
Vincent Koc
d08228eee1
refactor(shared): privatize requirement helpers ( #106837 )
2026-07-14 05:50:55 +08:00
Peter Steinberger
908230a537
fix(ui): keep tool-only turn details visible ( #106791 )
...
* fix(ui): keep tool-only turn details visible
* refactor(ui): keep tool card component size neutral
* style(ui): format tool turn e2e test
* chore: leave release notes to release automation
2026-07-13 14:42:09 -07:00
Qiong
8592b87c39
fix(node-pairing): require operator.admin to approve fs.listDir nodes ( #105936 ) ( #106004 )
...
* fix(node-pairing): require operator.admin to approve fs.listDir nodes (#105936 )
* fix(gateway): align node command authorization
---------
Co-authored-by: joshavant <830519+joshavant@users.noreply.github.com >
2026-07-13 16:40:55 -05:00
Peter Steinberger
030e7b9121
test(ui): deduplicate MCP security coverage ( #106762 )
...
* fix(ci): repair checks after dead export cleanup
* fix(ci): classify SQLite schema and migration boundaries
* fix(ci): avoid duplicate SQLite guard classification
2026-07-13 14:40:17 -07:00
Peter Steinberger
2d362a9b01
fix(ui): show mock task transcripts ( #106774 )
2026-07-13 14:39:47 -07:00
Peter Steinberger
70ab6b324d
refactor(lobster): use canonical core export
2026-07-13 14:39:18 -07:00
Josh Avant
65aa778171
fix: recover message sessions after reply finalization stalls ( #106792 )
...
* fix(auto-reply): bound reply finalization ownership
* fix(auto-reply): clean finalization exports
* fix(auto-reply): satisfy finalization lint
2026-07-13 16:36:35 -05:00
Peter Steinberger
a7e646f8b3
fix(ui): keep chat scrollbar flush with the sidebar divider ( #106775 )
2026-07-13 14:35:35 -07:00
Piotr Durlej
48279d46ca
fix(signal): detect native bot mentions in group gating ( #96738 )
...
* fix(signal): detect native bot mentions in group gating
* fix(signal): accept ordinary-text native mentions
* chore(signal): defer release note to release process
* fix(signal): satisfy mention gating quality gates
* test(signal): cover public mention facts helper
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-13 14:35:23 -07:00
Peter Steinberger
390ba9531c
fix: model probes find credentials stored under auth aliases ( #106736 )
...
* fix(models): resolve probe credentials through auth aliases
* fix(models): preserve alias-stored probe profiles
2026-07-13 14:34:01 -07:00
Vincent Koc
0f3dc25a3e
refactor(cli): privatize precomputed help parser ( #106692 )
2026-07-14 05:33:19 +08:00
Peter Steinberger
d1bb38345e
ci: preserve release target context ( #106783 )
2026-07-13 14:32:59 -07:00
Peter Steinberger
e858d8e6c6
fix: keep unresolved API-key providers visible ( #106754 )
...
* fix(gateway): keep unresolved API-key providers visible
* style: format models auth status fix
* fix(gateway): exclude ambient auth markers from status
* test(gateway): type auth health summary mock
* test(gateway): satisfy auth status lint
2026-07-13 14:31:50 -07:00
Peter Steinberger
5303174156
fix: redact migration terminal output ( #106806 )
2026-07-13 14:31:23 -07:00
Peter Steinberger
550d00d3b5
refactor(agents): extract attempt timeout phase
2026-07-13 14:30:13 -07:00
Peter Steinberger
3982424daa
fix: main build passes strict checks ( #106772 )
...
* fix: restore main build checks
* chore: drop superseded main fixes
* fix: restore architecture and lint checks
* test: align runtime plugin install mocks
* style: format current main files
* test: assert transcript policy caching directly
* fix: deduplicate SQLite guardrail allowlist
2026-07-13 14:28:48 -07:00
Peter Steinberger
9b64c861e5
fix(chat): prevent reasoning races after model changes ( #106534 )
...
* fix(chat): serialize session setting changes
* fix(chat): bind settings mutations to gateway routes
* fix(chat): align settings lanes with shared requests
* fix(ios): preserve injected session mutations
* fix(chat): preserve authoritative settings refreshes
* fix(chat): reconcile authoritative settings state
* fix(ci): satisfy session settings quality gates
* fix(android): regenerate native string resources
* fix(ci): update session settings export baseline
* fix(ci): reconcile dead export baseline
* fix(android): resume outbox after settings lane
* chore(i18n): refresh native source inventory
* chore(i18n): refresh rebased native inventory
* chore(i18n): sync control UI locales
* chore: keep release notes in pull request
* style(macos): fix settings comment format
* fix(ai): keep Google thinking type internal
2026-07-13 14:27:54 -07:00
Peter Steinberger
08d7440442
fix(channels): warn on scalar streaming fallback ( #106796 )
2026-07-13 14:27:39 -07:00
Peter Steinberger
2198591d0f
fix(ui): self-learning works after concurrent config changes ( #106764 )
...
* fix(ui): retry stale self-learning config updates
* chore: keep release notes out of the PR
2026-07-13 14:27:29 -07:00
Peter Steinberger
821ec6da45
refactor(agents): remove duplicate session tool exports ( #106828 )
2026-07-13 14:24:29 -07:00
Peter Steinberger
b4343426f1
docs: make CI polling sparse ( #106821 )
2026-07-13 14:19:54 -07:00
Peter Steinberger
771d370033
fix(ci): remove dead Google thinking type export ( #106823 )
2026-07-13 14:19:26 -07:00
Peter Steinberger
e2d6055371
refactor(media): inline CAF MIME fallback
2026-07-13 14:16:34 -07:00