Commit Graph

70422 Commits

Author SHA1 Message Date
Peter Steinberger
019e42e013 fix(ios): auto-scroll to the reply when sending with the keyboard open (#110944) 2026-07-18 21:41:47 +01:00
Wynne668
a9fb5b4e3f fix(diagnostics-otel): ignore blank protocol env overrides (#110674) 2026-07-18 21:38:44 +01:00
Peter Steinberger
0f5d030cb1 fix(ci): sweep PRs with unknown mergeability — stuck merge-ref is the target pathology (#110945)
Live verification showed dropped-CI PRs report mergeable=null and
mergeable_state=unknown indefinitely: the stuck merge-ref computation is
the same failure that dropped their CI, and close/reopen is what
un-sticks it. The pending-mergeability skip therefore made the primary
repair population permanently unsweepable (three real dropped PRs skipped
across three consecutive sweeps). Keep skipping computed conflicts; a
not-yet-computed conflict costs at most one budgeted re-fire.
2026-07-18 21:37:53 +01:00
Peter Steinberger
47f42fdda9 feat(cron): unattended-run preamble and watcher-authoring guidance (#110949)
* feat(cron): add unattended-run preamble to isolated agent turns

Isolated cron and hook agent turns received only the job tag, message,
and time line — no operating contract for unattended execution. Runs
ended in questions, plans, or bare acknowledgements (the runtime even
re-prompts once for interim acks). Append a static per-class preamble:
the final reply is the deliverable, HEARTBEAT_OK when idle, plain
failure statements. Trusted jobs additionally defer to the job's own
instructions on conflict and learn removal-only self-cleanup;
external-hook runs get only the common core so fenced webhook content
cannot use an override clause or a destructive affordance advertised in
the trusted suffix. Free-form job names stay out for the same reason.

* feat(cron): teach watcher authoring rules in the cron tool description

Trigger-script guidance covered only the return contract. Add the
operating rules that keep watchers trustworthy: fire on every
actionable state including failures (success-only watchers go silent
when broken), dedupe via returned state, keep scripts read-only with
actions in the payload, and make the fired message self-contained.
2026-07-18 21:35:30 +01:00
mushuiyu886
331eb0d439 fix(huggingface): discover models when HTTP proxy is required (#110924) 2026-07-18 21:31:24 +01:00
Peter Steinberger
b6f905b410 test(codex): repair app-server extension shard fixtures (#110951) 2026-07-18 21:29:36 +01:00
Wynne668
37b0b12eb7 fix(tlon): release failed upload response bodies (#110442)
* fix(tlon): release failed upload response bodies

* fix(tlon): settle guarded upload responses

Co-authored-by: ZengWen-DT <ceng.wen@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 21:19:03 +01:00
SymbolStar
a7e47653fc fix(cron): run explicit wakes outside heartbeat hours (#105830)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 21:10:27 +01:00
Peter Steinberger
ef7f4f2a61 feat(ui): Labs settings page for experimental feature toggles (#110359)
* feat(ui): add Labs settings page

* chore(ui): drop changelog entry — release generation owns CHANGELOG

* fix(ui): drop lint suppression, sync Apple i18n catalogs for Labs keys

* ci: retrigger CI on current head

* docs(ui): clarify swarm labs-entry gating comment
2026-07-18 21:08:52 +01:00
Peter Steinberger
2bcbe3a612 feat(reef): follow up on unconfirmed deliveries instead of staying silent (#110938)
* feat(reef): follow up on unconfirmed deliveries instead of staying silent

* test(reef): satisfy lint and test-type gates for delivery notices

* test(reef): keep rejection notifier mock signature untyped
2026-07-18 21:08:10 +01:00
Peter Steinberger
1cacb12c4d feat(canvas): give show_widget a design system — theme tokens, base styles, live host theme bridge (#110832) 2026-07-18 21:05:16 +01:00
WhatsSkiLL
1626a1696c fix(ui): clean up timed-out channel wizard starts (#110146)
* fix(ui): clean up timed-out channel wizard starts

* refactor(ui): centralize stale wizard cleanup

Co-authored-by: WhatsSkiLL <284122573+IWhatsskill@users.noreply.github.com>

---------

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 20:59:44 +01:00
Peter Steinberger
377303da9f fix(openai): sync Codex catalog client version (#110936)
* fix(openai): sync Codex catalog client version

* docs(changelog): note Codex catalog version sync

* docs(changelog): defer Codex catalog note to release
2026-07-18 20:52:49 +01:00
Peter Steinberger
09fa5818e8 refactor(ui): render Ask OpenClaw chat through the shared chat presentation layer (#110934) 2026-07-18 20:52:44 +01:00
Peter Steinberger
1d492f5c53 fix(gateway): honor scopes for WebChat session mutations (#110931)
* fix(gateway): authorize webchat session mutations by scope

* chore: keep gateway release note in PR body
2026-07-18 20:48:39 +01:00
zw-xysk
db1b932749 fix(cron): prevent re-enabled active run overlap (#102255)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 20:48:15 +01:00
Omar Shahine
bbad877aed fix: deliver Codex-generated images on message-tool routes (#110893)
* fix: deliver Codex-generated images on message-tool routes

* test(codex): cover native image delivery path

Document trusted harness artifact provenance and cover the runner-to-dispatch bridge.\n\nRelease note: Codex-generated images now reach message-tool-only routes while normal source suppression remains intact.\n\nCo-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com>

---------

Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 20:45:57 +01:00
Peter Steinberger
bf2da1ce1a fix(agents): parent resumes after yielded child handoff (#110922)
* fix(agents): resume handoff after requester yield

* fix(agents): retain handoff through requester settle

* fix(agents): avoid duplicate future-child wake

* fix(agents): rearm in-flight handoff on yield
2026-07-18 20:39:23 +01:00
WhatsSkiLL
2632969aae fix(ui): use clipboard fallback in setup wizards (#110139)
* fix(ui): use clipboard fallback in setup wizards

* test(ui): verify wizard clipboard payloads

Co-authored-by: WhatsSkiLL <284122573+IWhatsskill@users.noreply.github.com>

---------

Co-authored-by: Codex <codex@openai.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: WhatsSkiLL <284122573+IWhatsskill@users.noreply.github.com>
2026-07-18 20:36:30 +01:00
Peter Steinberger
be80cc747c feat(zalouser): recover accepted messages after local crashes (#110916)
* feat(zalouser): add durable ingress recovery

* fix(zalouser): settle aborted ingress claims

* fix(zalouser): preserve concurrent ingress lanes

* docs: refresh generated channel map

* refactor(zalouser): simplify ingress abort listener
2026-07-18 20:32:30 +01:00
Peter Steinberger
d630f8dc2c feat(gateway): parent dashboard sessions to agent main (#110913) 2026-07-18 20:30:56 +01:00
Dallin Romney
6325b0f3c4 fix(qa): hydrate full profile live credentials (#110897) 2026-07-18 12:29:13 -07:00
Peter Steinberger
7359009dcc test(memory-wiki): allow agent isolation proof to finish (#110919) 2026-07-18 20:27:58 +01:00
Peter Steinberger
6589788c02 docs: The main session concept page and shipped-sidebar updates (#110905)
* docs: add The main session concept page and cross-links

* docs: precise memory-priming wording on the main-session page

* docs: update Control UI sidebar description to the Home and zones model
2026-07-18 20:23:09 +01:00
Peter Steinberger
a314a3e3be fix(cron): preserve flattened triggers (#110912) 2026-07-18 20:20:32 +01:00
Peter Steinberger
3dd26e7d9c feat(irc): add durable ingress queue (#110914)
* feat(irc): add durable ingress queue

* fix(irc): preserve ingress connection context

* fix(irc): accept colonless privmsg bodies

* fix(irc): pause ingress during disconnects

* fix(irc): ignore self echoes in activity

* fix(irc): bind private ingress to connections
2026-07-18 20:19:19 +01:00
Peter Steinberger
04a9552a1f chore(codex): update app-server to 0.144.6 [AI] (#110821)
* build(codex): bump app-server to 0.144.6

* build(codex): align ACP runtime to 0.144.6

* test(codex): harden live image probe

* test(codex): accept alphanumeric image tokens

* test(codex): stabilize image probe glyphs

* test(gateway): disable cron probe delivery

* test(codex): enlarge live image token

* test(codex): tie compaction proof to native output

* test(codex): accept wrapped native stress commands

* test(codex): stabilize compaction acknowledgements

* docs(changelog): note Codex 0.144.6 update

* docs(changelog): defer Codex note to release
2026-07-18 19:19:17 +00:00
Peter Steinberger
138d2d071c feat(tlon): add durable ingress (#110910) 2026-07-18 20:19:04 +01:00
Peter Steinberger
53ad69c6ee ci: hourly sweeper re-fires dropped pull_request CI runs (#110889)
* ci: add hourly PR CI sweeper for dropped pull_request runs

Fresh PRs race GitHub's merge-ref computation: the open-event CI run can
drop entirely or be created as an un-rerunnable startup_failure (~10-16
runs daily). The sweeper lists recently updated open PRs hourly, finds
heads whose only pull_request-event CI runs are startup failures (or
missing), and re-fires the event by close/reopen with the Barnacle app
token (GITHUB_TOKEN events would not trigger workflows).

Safety: 10-minute quiet window, 24h lookback, skips drafts, merge
conflicts, pending mergeability, and auto-merge PRs (close cancels
auto-merge); revalidates state, head, and CI attachment immediately
before mutating; per-PR budget of two sweeper closes and a per-sweep cap
of ten; reopen-on-unknown ownership so a stranded close (silent) always
loses to a spurious reopen (visible); manual dispatch supports dry_run.

Accepted tradeoffs are documented inline: shared-SHA PR topologies can
mask a dropped run (skip-only miss; run.pull_requests matching would
break fork PRs), and app-auth failover at worst doubles the close budget.

* test(ci): exercise pr-ci-sweeper runner with a faked client

* fix(test): lint-clean pr-ci-sweeper runner fakes
2026-07-18 20:18:57 +01:00
Peter Steinberger
36cba351e5 feat(ui): distinct Apps icon and pairing shortcut on the Apps page (#110909) 2026-07-18 20:17:25 +01:00
Peter Steinberger
41fdcac4d7 fix(ui): drop the Subagent prefix from named sidebar threads (#110891) 2026-07-18 20:17:20 +01:00
WhatsSkiLL
b526af1a7e fix(ui): lock channel wizard controls while busy (#110163)
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
2026-07-18 20:09:31 +01:00
Peter Steinberger
2438a9cc3c fix(qqbot): guard storage clear ingress effects (#110904) 2026-07-18 20:08:08 +01:00
Peter Steinberger
5fdb0cd24e feat(chat): switch between session transcript branches from the chat header (#110857)
* feat(chat): switch between session transcript branches from the chat header

* fix(chat): type fixes and protocol regen for branch switcher CI
2026-07-18 20:06:36 +01:00
Peter Steinberger
64019bc0c2 refactor(ui): split lobster-pet into look/plans/element modules (#110816)
* refactor(ui): split lobster-pet into look/plans/element modules

Move existing behavior along appearance and seeded visit-planning ownership seams without changing runtime behavior.

Extract only the bounded logo stand-in, WebAudio chirp, and pure render-template helpers while keeping the state machine in the element. Remove the grandfathered max-lines suppression and baseline entry.

* style(ui): format lobster-pet split modules

* fix(ui): keep lobster split internals unexported, refresh i18n raw-copy baseline

knip flags the split's newly exported internals (strangerLookFor,
renderCrabSvg, lobsterPetSpriteStyle, LobsterPasserKind) — they have no
external consumers; the html-text raw-copy baseline is file-keyed, so the
sprite z/Z markup moving into lobster-pet-look.ts needs a regen.

* fix(ui): satisfy lint for the lobster-pet split (param reassign, max-lines)

* fix(ui): keep moved act-profile internals unexported
2026-07-18 20:02:24 +01:00
Peter Steinberger
9a9f5919e5 fix(ui): defer remembered camera auto-enable until talk reaches listening (#110874) 2026-07-18 20:00:40 +01:00
Peter Steinberger
bef8a82762 feat(synology-chat): add durable ingress (#110899) 2026-07-18 20:00:06 +01:00
Peter Steinberger
e80b0b5aa5 fix(reef): stop leaking the inbox loop across channel crash restarts (#110870)
* fix(reef): stop leaking the inbox loop across channel crash restarts

* fix(reef): move channel lifecycle helper to its own module for lint/deadcode gates
2026-07-18 19:59:58 +01:00
Peter Steinberger
90a6256370 test(telegram): isolate miniapp bootstrap fixtures (#110895) 2026-07-18 19:59:02 +01:00
Peter Steinberger
84446ae1ce fix(whatsapp): avoid deprecated access guard collision (#110890) 2026-07-18 19:57:50 +01:00
Peter Steinberger
9f5958e75d fix(ui): collapse doubled sidebar footer divider and enlarge settings gear (#110892) 2026-07-18 19:57:23 +01:00
Peter Steinberger
f669fb925a fix: preserve same-session hook bursts (#110575)
* fix(gateway): serialize same-session agent hooks

* fix(gateway): canonicalize queued hook sessions

* fix(gateway): preserve hook runner routing contract

* docs(gateway): explain hook reload identity
2026-07-18 19:53:36 +01:00
Peter Steinberger
bb5a31f5d6 fix(ios): "Jump to latest" no longer appears while the assistant is still writing (#110811)
* fix(ios): keep jump-to-latest hidden while the reader is at the live edge

* fix(ios): refresh native i18n inventory line offsets
2026-07-18 19:52:43 +01:00
Peter Steinberger
884fdba81c fix(telegram): local turn tests complete on macOS (#110894)
* test(channels): mock core turn dispatch for delivery traces

* test(telegram): scope bot tests to a fresh state dir

Assembled turns resolve session/agent bindings through the state DB; an
ambient operator Codex binding fails generation reclaim and drops the turn,
adding misleading noise to reply-wait timeouts.

* test(telegram): drive bot turn tests through a prepared-dispatch mock

Core's turn lifecycle hard-wires its own provider dispatcher for assembled
turns, so the harness's injected dispatcher never fires and every reply-wait
turn test hangs to timeout locally. Convert resolved turns to prepared ones
that dispatch through the harness mock, restoring the file's original
authored contract.

* test(telegram): mark trace token as synthetic

* test(telegram): centralize trace dispatch mocks

* test(telegram): preserve assembled dispatch wiring

* test(telegram): guard trace dispatch seam

* test(telegram): avoid duplicate turn lifecycle
2026-07-18 19:52:27 +01:00
Peter Steinberger
a0cc7d11fb fix(scripts): restore Testbox lease claims to the originating repo after delegated runs (#110869)
* fix(scripts): restore Testbox lease claims to the originating repo after delegated runs

Delegated Blacksmith Testbox runs execute from throwaway sparse-sync checkouts, so Crabbox stamps retained lease claims with that temporary cwd. Restore only claims still pointing at the child checkout after the run on both success and failure, preserving foreign claims and every other field. This repairs the post-run artifact instead of weakening the pre-run ownership guard.

* fix(scripts): restore claims for delegated runs that create retained leases
2026-07-18 19:49:04 +01:00
Josh Lehman
453444636c feat: bound transcript reads across replacements (#110374) 2026-07-18 11:41:39 -07:00
Colin Johnson
1ca6b6ff67 feat(ios): unify chat and voice experience (#107879)
* feat(ios): unify chat and voice experience

* refactor(ios): finish unified chat ownership

* fix(ios): unify chat and voice capture ownership

* fix(ios): serialize Talk permission hydration

* fix(ios): clear voice CI regressions

* fix(ios): clear remaining unified chat CI failures

* chore(i18n): sync native source inventory

* refactor(ios): defer provider-only realtime voice

* fix(ios): clean unified chat voice PR

* fix(ios): localize unified voice controls

* fix(ios): serialize composer audio controls

* fix(ios): isolate dictation preparation lifecycle

* fix(ios): key chat tab icons by appearance

* fix(ios): preserve talk upgrade handshakes

* fix(ios): refresh native i18n inventory

* fix(ios): reconcile shared locale artifacts

* fix(ios): satisfy chat view lint limit

* fix(ios): reconcile shared composer implementation

* test(apple): avoid XCTest actor deinit crash

* fix(ios): satisfy SwiftFormat scope spacing

* fix(ios): remove duplicate merged helper declarations
2026-07-18 14:30:10 -04:00
Peter Steinberger
3572fba7f9 feat(plugin-sdk): guard ingress effects once per event (#110846)
* feat(plugin-sdk): add ingress effect guard

* docs: refresh docs map

* fix(plugin-sdk): propagate effect commit failures

* fix(plugin-sdk): isolate ingress effect namespaces
2026-07-18 19:23:39 +01:00
Peter Steinberger
b7f99d0ffd fix(macos): harden Quick Chat capture (area-send visibility, AX text quality, overlay race) (#110830)
* fix(macos): harden Quick Chat capture — drop AX-role text, restore bar after area capture, guard overlays post-permission

* chore(i18n): refresh native inventory line numbers after capture hardening
2026-07-18 19:08:23 +01:00
Peter Steinberger
e04ea7916c feat(twitch): preserve accepted chat through local crashes (#110852)
* feat(twitch): add durable ingress queue

* fix(twitch): satisfy ingress type boundaries
2026-07-18 18:50:56 +01:00