Peter Steinberger
c539c77057
fix(ios): expose expandable chat agent identity ( #113917 )
2026-07-25 17:42:17 -07:00
Colin Johnson
de9ed64c29
feat(talk): enable GPT Live with Codex OAuth ( #113354 )
2026-07-25 20:41:27 -04:00
Peter Steinberger
9defe24ec2
fix(chat): restore canonical native session ordering and search ( #113886 )
2026-07-25 16:42:33 -07:00
Peter Steinberger
af44cb1a72
feat(native): show Swarm progress in chat ( #113850 )
...
* feat(native): show swarm progress
* fix(native): align swarm progress lifecycle
* chore(native): shorten swarm progress source name
* style(macos): pad swarm progress surfaces
* chore(native): use compact swarm source name
* fix(native): harden swarm route ownership
* fix(native): preserve swarm render ownership
* chore(i18n): refresh native swarm inventory
* fix(native): bound swarm refresh ownership
* fix(native): remove unused swarm capability initializer
2026-07-25 15:11:19 -07:00
Peter Steinberger
ce5ab8adb8
refactor(gateway): remove dead sessions.observer.ask rpc ( #113791 )
...
* refactor(gateway): remove dead sessions.observer.ask rpc
* docs: record btw and companion contract split
* fix(gateway): unexport observer model sanitizer after ask removal
2026-07-25 14:44:02 -07:00
Peter Steinberger
935ee7fedf
fix(wear): keep active watch replies when older turns finish ( #113804 )
...
* fix(wear): preserve active replies when older turns end
* fix(wear): isolate terminal events at the watch
---------
Co-authored-by: Peter Steinberger <steipete@golden-gate.local >
2026-07-25 12:42:42 -07:00
Peter Steinberger
fca18dddc7
fix(native): preserve active chat when another run ends ( #113786 )
...
Co-authored-by: Peter Steinberger <steipete@golden-gate.local >
2026-07-25 11:04:35 -07:00
Peter Steinberger
a1d666fdc3
fix(native): keep images and voice notes visible in chat and exports ( #113764 )
...
* fix(native): preserve image and audio in chat transcripts
* fix(native): refresh extracted media localization source lines
---------
Co-authored-by: Peter Steinberger <steipete@golden-gate.local >
2026-07-25 10:49:56 -07:00
Peter Steinberger
a95486cefc
feat: session rail with read-only session companion in Control UI chat ( #113698 )
...
* feat(protocol): add session companion schemas
* feat(gateway): add session companion service
* feat(gateway): expose session companion rpc
* fix(gateway): harden companion runtime limits
* test(gateway): fix companion type assertions
* test(gateway): align companion test target
* feat(ui): replace observer HUD and side chat with session rail
* docs: session rail companion for control ui
* test(ui): align session rail client mock
* fix(ui): drop stale chat search import
* fix: satisfy session companion lint contracts
* refactor(gateway): isolate companion state contract
* fix(ui): keep session rail reachable while idle
* fix(agents): clamp derived openai prompt cache keys at boundary
* fix(ai): clamp chatgpt responses session_id affinity header
* fix(ci): align session companion branch gates
* fix(ui): require run id for sessionless terminal chat events
* fix(agents): scope internal run events to transcript
* chore: revert changelog edit (release generation owns changelog)
2026-07-25 08:14:32 -07:00
Peter Steinberger
53be78269e
fix(android): connect to pasted manual gateway host and port ( #113722 )
...
* fix(android): preserve pasted manual gateway authorities
* fix(android): align gateway formatting and native i18n baseline
---------
Co-authored-by: Peter Steinberger <steipete@golden-gate.local >
2026-07-25 07:52:46 -07:00
Vincent Koc
d338b348c5
test(macos): await prepare wizard progress ( #113682 )
2026-07-25 21:31:21 +08:00
openclaw-mantis[bot]
92e404176b
chore(i18n): refresh native locales ( #113493 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-25 20:33:38 +08:00
Peter Steinberger
7e80f36723
fix(apps): restore live session updates after native reconnects ( #113634 )
...
* fix(apps): replay session visibility across native reconnects
* fix(apps): refresh shifted native i18n source lines
---------
Co-authored-by: Peter Steinberger <steipete@golden-gate.local >
2026-07-25 04:58:41 -07:00
Peter Steinberger
dd7f7ada7e
feat(sessions): show preambles as live subtitles ( #112958 )
...
* feat(sessions): show preambles as live subtitles
* fix(sessions): harden preamble observer ordering
* fix(sessions): suppress duplicate preamble restore
* fix(sessions): preserve preamble observer lifecycle
* fix(ci): satisfy session subtitle checks
* fix(sessions): preserve terminal and preamble dedupe
* fix(sessions): finalize contextless terminal runs
* test(sessions): cover dormant contextless terminals
* fix(sessions): preserve queued preambles across dormancy
2026-07-25 01:26:50 -07:00
Vincent Koc
509a5f0373
fix(sqlite): reject schema data loss during upgrades ( #113473 )
...
* fix(sqlite): reject schema data loss during upgrades
* test(macos): align native state schema boundary
2026-07-25 12:22:02 +08:00
Peter Steinberger
c30c07071f
feat(setup): download-model actions on web and macOS onboarding ( #113476 )
...
* feat: add local model download setup actions
* chore(i18n): refresh native source inventory
* fix(setup): satisfy model setup lint checks
2026-07-24 20:52:58 -07:00
scotthuang
2900026b33
fix: stop selected channel sessions from WebChat ( #111108 )
...
* fix: stop selected channel sessions from WebChat
* fix: clear channel working state after stop
* fix: cancel queued turns before session abort
* fix: replay pending stops after reconnect
* fix: align stop lifecycle test fixtures
* fix(ui): bind pending aborts to gateway client
* test(ui): keep chat pane specs within line limit
* chore(ios): refresh native i18n inventory
* chore: retrigger PR checks
* fix(system-agent): avoid blocking TUI catalog discovery
* fix: preserve session abort ownership
* test: align abort coverage with current main
* test: assert scoped session abort broadcast
* fix(agent-runs): expose SDK runtime abort state
* fix(ui): clear queued main-session stops by scope
* fix(ui): replay only exact run aborts
* fix(gateway): protect session abort cleanup
* fix(ui): narrow session abort intent
* test(ui): avoid unbound request assertions
---------
Co-authored-by: scotthuang <scotthuang@tencent.com >
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-07-24 14:36:18 -05:00
Pavan Kumar Gondhi
1fc81c2054
fix: reusable exec approvals apply to approved arguments ( #112946 )
...
* fix: bind allow-always exec approvals to argv
* test: update exec approval persistence expectations
* fix: hash reusable exec approval arguments
* test: pin POSIX exec approval hash expectation
* fix: match hashed exec approvals in macOS
* fix: encode exec approval argv hashes unambiguously
* fix: bind native exec approval grants to argv
* test: expect hashed exec approval patterns
* fix: ignore legacy broad exec approval grants
* fix: hash shell script allow-always grants
* fix: require argv binding for package manager grants
* fix: bind positional carrier approval grants
* fix: address approval check failures
* fix: format approval policy test
* fix: reject context-changing package manager grants
* fix: keep build-enabled pnpm dlx grants one-shot
* fix: reject npm exec context grants
* fix: catch npm exec tail context options
* fix: block npm package context approvals
* fix: block leading pnpm dlx context grants
* fix: restrict durable positional carrier grants
* docs: clarify generated exec approvals
* fix: block post-dlx pnpm context grants
2026-07-24 15:38:38 +05:30
Vincent Koc
b3e3f06584
fix(i18n): correct Indonesian seconds labels
2026-07-24 17:17:56 +08:00
github-actions[bot]
2a465debe8
chore(i18n): refresh native locales
2026-07-24 17:17:56 +08:00
Vincent Koc
e3c2a8be58
fix(i18n): drop concatenated runtime prefixes
2026-07-24 16:29:32 +08:00
Vincent Koc
ac3eb02951
fix(android): avoid pluralized observation copy
2026-07-24 16:29:32 +08:00
Vincent Koc
6dbe278283
fix(android): allow post-merge flavor translations
2026-07-24 15:26:58 +08:00
Vincent Koc
48b4be5c4c
build(i18n): align iOS source inventory lines
2026-07-24 15:26:58 +08:00
Vincent Koc
a911bfb716
style(ios): satisfy settings chat formatting
2026-07-24 15:26:58 +08:00
Vincent Koc
80c94becee
build(i18n): refresh mobile source inventory
2026-07-24 15:26:58 +08:00
Vincent Koc
9cecc3083d
fix(ios): localize settings chat fixtures
2026-07-24 15:26:58 +08:00
Vincent Koc
a3911fe9ff
fix(apple): localize TLS connection problems
2026-07-24 15:26:58 +08:00
Vincent Koc
2f85a77cc1
fix(android): localize accessibility executor UI
2026-07-24 15:26:58 +08:00
Vincent Koc
292cc5659d
fix(android): localize recommended option labels
2026-07-24 15:26:58 +08:00
joshavant
96539d1c3c
test(cron): align generated and compatibility gates
2026-07-24 01:24:03 -05:00
joshavant
ed7d9ef441
fix(ios): preserve planned build during release validation
2026-07-23 21:34:34 -05:00
Peter Steinberger
90aee82793
feat(sessions): suggestion queue + typing indicator ( #113173 )
...
* feat(protocol): add session collaboration contracts
* feat(gateway): add session suggestion queue and typing
* feat(ui): add session suggestion controls
* fix(collaboration): restrict suggestion resolution
* fix(collaboration): dedupe suggestion dispatch modes
* fix(collaboration): preserve resolver identity
* fix(collaboration): reconcile suggestion state
* fix(collaboration): filter identityless suggestion events
* fix(ui): expose full suggestion text
* fix(collaboration): durably claim suggestion dispatch
* fix(collaboration): harden suggestion events and typing
* fix(collaboration): reconcile suggestion races
* fix(ui): reconcile suggestion capabilities
* fix(collaboration): close suggestion privacy races
* test(ui): satisfy suggestion lifecycle lint
* fix(collaboration): fence resolved suggestion events
* test(collaboration): type deferred audit result
* fix(collaboration): fence delayed typing events
* fix(ui): coalesce suggestion refreshes
* fix(ui): preserve resolved self suggestions
* fix(collaboration): enforce draft suggestion visibility
* fix(collaboration): fence post-dispatch finalization
* fix(ui): retain suggestions across visibility changes
* fix(collaboration): fence suggestion context and archives
* fix(collaboration): fence suggestion resolve lifecycle
* fix(collaboration): map suggestion replacement races
* refactor(gateway): extract session typing state
* fix(collaboration): integrate suggestion storage with session nodes
* refactor(gateway): extract session sharing snapshot cache
* fix(collaboration): satisfy protocol and deadcode gates
* fix(ci): register iOS release script entrypoints
* fix(collaboration): fence typing by session instance
* fix(collaboration): enforce incognito suggestion privacy
* docs(ui): clarify solo suggestion dormancy
* test(gateway): preserve incognito literal type
* test(gateway): split session typing coverage
* test(gateway): register collaboration method expectations
2026-07-23 18:59:58 -07:00
joshavant
d87707d806
chore(ios): refresh native i18n source inventory
2026-07-23 20:45:33 -05:00
joshavant
0030a8c808
fix(ios): cache location authorization state
2026-07-23 20:45:33 -05:00
joshavant
ee317497d9
fix(ios): isolate release screenshot captures
2026-07-23 20:45:33 -05:00
joshavant
ba09e05e97
refactor(ios): append unpadded App Store revisions
2026-07-23 18:42:16 -05:00
joshavant
0558831b92
fix(ios): normalize App Store build upload state
2026-07-23 18:26:29 -05:00
joshavant
b7d77b0f21
feat(ios): deterministically plan App Store releases
2026-07-23 18:18:32 -05:00
joshavant
30395ba31b
feat(ios): support App Store release revisions
2026-07-23 16:24:15 -05:00
Peter Steinberger
cbf94c0d8b
feat(sessions): drafts UX — create-as-draft, promote, admin ghost treatment ( #113127 )
...
* feat(protocol): support draft session creation
* feat(ui): add draft session workflows
* docs: explain multi-user drafts
* test(ui): tighten draft ownership fixture
* test(ui): satisfy draft E2E lint
* test(ui): keep draft fixtures strictly typed
* docs: add drafts implementation report
* docs: clarify implementation LOC summary
* test: strengthen draft compatibility coverage
* docs: correct drafts cleanup report
* fix: harden draft availability policy
* docs: update draft policy review notes
* test(ui): type draft policy mock control
* fix: preserve keyed draft creation retries
* fix: keep disabled draft retries idempotent
* docs: finalize drafts cleanup report
* fix(ui): keep draft ownership helper internal
* docs: refresh drafts docs map
2026-07-23 13:06:35 -07:00
Peter Steinberger
c519e01a24
feat(gateway): chat.send expectedLeafEntryId precondition keeps stale panes off switched branches ( #113073 )
2026-07-23 12:33:31 -07:00
Peter Steinberger
013b24dd6d
feat(sessions): archive attribution (archivedBy) ( #113116 )
...
* feat(sessions): attribute archive transitions
* docs: add archive attribution report
* fix(sessions): restore alias layout after archive audit failure
* docs: update archive attribution report
* fix(sessions): isolate archive audit rollback
* docs: record final archive rollback design
* fix(sessions): make archive audit note best-effort
* docs: record best-effort archive audit policy
* chore: refresh native i18n baseline
2026-07-23 11:23:30 -07:00
Jason (Json)
2f5e7cfc5d
fix(ui): prevent duplicate image prompt and flicker ( #113113 )
...
* fix(ui): stabilize initial image prompt handoff
* chore(protocol): refresh sessions create model
* chore(i18n): refresh native source inventory
2026-07-23 12:11:52 -06:00
Peter Steinberger
3e2b3ea4d5
feat(cron): database-backed heartbeat monitor scratch replaces HEARTBEAT.md ( #112967 )
...
* feat(cron): move heartbeat context into database-backed per-job cron scratch
- new additive cron_job_scratch SQLite table (revision tombstones keep
compare-and-swap monotonic across unset/recreate; 256KiB cap)
- heartbeat runner reads monitor scratch instead of workspace HEARTBEAT.md;
heartbeat_respond gains a private scratch replacement parameter
- openclaw doctor --fix migrates HEARTBEAT.md into scratch (hash-verified,
archived under state backups, idempotent, symlink-contained)
- gateway cron.scratch.get/set admin RPCs + openclaw cron scratch CLI
- workspace bootstrap no longer seeds HEARTBEAT.md; Codex heartbeat file
guidance removed; docs and prompt snapshots updated
* fix(cron): review round 2 — shared-workspace heartbeat migration and non-default agent monitors
- doctor migration groups agents by heartbeat source file and imports into
every monitor before archiving/removing the shared file once
- exempt heartbeat payloads from the main-session default-agent restriction:
monitors only poke the wake bus, so non-default agents converge again
- document why disabled monitors retain their last cadence (config default
already resolves before the fallback)
* fix(cron): honor configured cron store, legacy heartbeat fallback, and safer doctor claim
* fix(cron): claim HEARTBEAT.md before committing scratch and restore without clobbering
* fix(cron): pin migration CAS to precondition revision, re-verify claim on release, archive first, report scratch as pending
* docs(heartbeat): remove retired config options
* fix(cron): crash-recoverable migration claims, partial-import rollback, latest-response scratch pairing
* test(heartbeat): keep latest scratch proposal paired
* fix(cron): roll back committed scratch on changed-claim release and restore no-row state
* fix(cron): revision-guarded rollback delete and recreated-file detection on claim release
* fix(cron): treat every failed claim re-verification as a migration conflict
* test(heartbeat): rename ack test after ackMaxChars retirement
* fix(heartbeat): keep monitor scratch out of bypass-scope runs
* fix(cron): resolve claimed symlinks on release and gate legacy fallback on proven scratch state
* fix(cron): strict claim-name recovery and per-entry migration grouping
* fix(ci): heartbeat scratch gate repairs — lint causes, dead exports, since-train, inventory path, prompt snapshot, regenerated docs map, SDK baseline, protocol bindings
* fix(cron): live-owner claim guard and canonical entry-key migration grouping
* fix(cron): archive claimed inode on release and flag orphan claims beside recreated files
* docs(cron): document process-global state-db invariant for scratch service ops
* chore(i18n): refresh native inventory line numbers after protocol binding regen
2026-07-23 11:10:49 -07:00
Peter Steinberger
78b987aa2e
fix: keep model catalog coherent across config reloads ( #112331 )
...
* fix(gateway): keep model catalog reads generation-safe
* fix(gateway): type owner-aware catalog snapshots
* fix(sessions): break lifecycle accessor import cycle
* fix(gateway): preserve requested catalog owner
* fix(gateway): keep catalog owner identity explicit
* fix(gateway): isolate catalog snapshot types
* fix(gateway): respect published catalog owner
* fix(gateway): reject mismatched catalog owners
* test(apple): gate unread patch timing explicitly
* fix(gateway): keep startup metadata bounded
* fix(gateway): forbid startup catalog fallback
* test(apple): wait for terminal outbox flush
* fix(cron): follow published model catalog owner
* test(cron): align catalog runtime mocks
* test(system-agent): isolate TUI catalog metadata
* test(gateway): refresh deletion session snapshot
* fix(gateway): preserve authoritative catalog owners
* fix(gateway): retain equivalent catalog preload
* fix(gateway): reject ownerless catalog projections
* fix(gateway): scope catalog loads to resolved agent
* fix(gateway): restore canonical catalog owner identity
* fix(cron): preserve published catalog owner
* test(cron): align owner snapshot mocks
* fix(cron): preserve replacement owner workspace
* fix(runtime): reject explicit catalog owner mismatch
* fix(runtime): preserve implicit owner fallback
* test(cron): resolve implicit owner fixtures
2026-07-23 10:54:27 -07:00
joshavant
3d7e996fd3
docs(ios): default releases to gateway version
2026-07-23 12:07:09 -05:00
Peter Steinberger
acd92f6a3d
chore(deps): refresh repository dependencies ( #112453 )
...
* build(deps): update QA broker dependency
* build(deps): refresh repository dependencies
* build(deps): reconcile rebased shrinkwraps
* test(plugins): remove stale loader test state
* test(deps): stabilize updated dependency coverage
* fix(swift): use caller-isolated TaskLocal overload
* build(deps): regenerate rebased shrinkwraps
* test(msteams): preserve DNS validation in fetch helper
* fix(deps): avoid vulnerable optional image stack
* test(deps): validate generated LRU override
* refactor(ui): extract chat resizable divider
* test(ui): update divider ownership path
* fix(matrix): retain restart-compatible SDK
* style(cron): format update test
2026-07-23 16:17:13 +00:00
joshavant
b85c0e2064
fix(ios): harden release screenshot capture
2026-07-23 11:09:06 -05:00
Peter Steinberger
09672312c4
feat(gateway): incognito sessions for the web Control UI ( #113006 )
...
* feat(gateway): add web-only incognito sessions held in process memory
* feat(ui): add incognito toggle and badges to the web new-session flow
* fix(sessions): classify incognito by key shape, fail closed on stale keys, and gate memory writes
* fix(codex): start harness threads ephemeral for incognito sessions
* fix(sessions): reshape internal-effects incognito keys and add doctor repair for reserved key collisions
* refactor(plugin-sdk): export canonical incognito key classifier and guard the sentinel path
* fix(state): classify incognito DB handles from the recorded open-time set
* fix(gateway): isolate incognito sessions from durable lineage and allocation on read-only misses
* docs(sessions): pin the reserved incognito namespace ownership decision
* feat(gateway): admin-scope incognito visibility and incognito-blind cross-session surfaces
* fix(ci): repair kysely guardrails, dead export, docs map, protocol bindings, and ACP reset rotation
* fix(gateway): remove non-admin observability side channels for incognito sessions
* fix(gateway): enforce admin-scope incognito access and cover all parent-reference creation paths
2026-07-23 09:04:36 -07:00