Xiaoshuai Zhang
72fd25d47d
fix(gateway): connect bootstrap clients to self-signed WSS ( #80204 )
...
* fix(gateway): propagate TLS pins to bootstrap clients
Co-authored-by: Xiaoshuai Zhang <dev@jetd.one >
Punchcard-Session: cobalt-brook-meadow-m9
* fix(gateway): keep TLS loader type private
Punchcard-Session: cobalt-brook-meadow-m9
* fix(gateway): preserve TLS pin transport policy
Punchcard-Session: cobalt-brook-meadow-m9
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
Co-authored-by: Xiaoshuai Zhang <dev@jetd.one >
2026-08-05 13:19:27 +08:00
Omar Shahine
2b3009f718
fix(gateway): preserve node invoke dispatch provenance ( #117139 )
...
* fix(gateway): preserve node invoke dispatch provenance
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
Copilot-Session: 6381c461-11aa-4700-8648-4da1393e1c59
* fix(gateway): preserve timeout precedence
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
Copilot-Session: 6381c461-11aa-4700-8648-4da1393e1c59
* fix(gateway): mark wake-path disconnect as not dispatched
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
Copilot-Session: 6381c461-11aa-4700-8648-4da1393e1c59
* fix(gateway): mark plugin dispatch after send
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
Copilot-Session: 6381c461-11aa-4700-8648-4da1393e1c59
* build(browser): regenerate Copilot runtime
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
Copilot-Session: 6381c461-11aa-4700-8648-4da1393e1c59
---------
Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com >
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
Copilot-Session: 6381c461-11aa-4700-8648-4da1393e1c59
2026-08-01 21:22:51 +00:00
Vincent Koc
8fdcdaba76
fix(talk): bound browser transcript ownership
2026-08-01 14:39:27 +08:00
Vincent Koc
20e68e01df
fix(gateway): sign device proofs with challenge time ( #116679 )
2026-07-31 16:45:53 +08:00
Vincent Koc
b015925bc3
test(core): remove dead and duplicate coverage ( #116641 )
...
* test(markdown): make code table style coverage assertive
* test(core): remove duplicate regression coverage
2026-07-31 11:48:46 +08:00
Shakker
2cdedd7eeb
test: isolate gateway sequence lifecycle coverage
2026-07-29 20:05:56 +01:00
Shakker
403a9b778b
test: cover gateway sequence reset on restart
2026-07-29 20:05:56 +01:00
Shakker
dbcd479007
test: cover gateway sequence reset on reconnect
2026-07-29 20:05:56 +01:00
Shakker
ab3f52c367
fix: reset gateway event sequence on reconnect
2026-07-29 20:05:56 +01:00
Peter Steinberger
fde4658bf6
fix(ui): recover sessions and dashboards after prolonged outages ( #115654 )
...
* fix(ui): recover long-running sessions and dashboards
* fix(ui): expose browser-safe gateway timers
* refactor(ui): keep browser timer surface minimal
* refactor(gateway): extract pending request state
* fix(ci): refresh browser runtime and format baseline
* fix(ci): exclude generated plugin outputs from targeted lint
* fix(ui): bound long-running connection and pane lifecycles
* refactor(ui): split long-running lifecycle regression coverage
* fix(ui): bound long-running media and lint ownership
* fix(security): preserve explicit workspace disable denylist
* fix(ci): preserve plugin manifest fallback lint
2026-07-29 10:09:51 -04:00
Peter Steinberger
ad36646ed1
fix(gateway): reconnect nodes after transient socket failures ( #115539 )
...
* fix(gateway): reconnect nodes after transient socket failures
* fix(browser): refresh bundled gateway reconnect runtime
* fix(gateway): preserve callback-owned reconnect state
2026-07-29 01:15:26 -04:00
Peter Steinberger
ad3f74f296
fix(chat): make web and terminal share one session state ( #115429 )
...
* fix(chat): consolidate web and terminal session state
* fix(chat): preserve live history across stale snapshots
2026-07-28 18:53:21 -04:00
Peter Steinberger
d239a59d82
fix(ui): make Control UI ownership and permissions reliable ( #115364 )
...
* fix(ui): unify connection-owned gateway event dispatch
* fix(qa): keep hosted UI smoke evidence truthful
* fix(ui): make mobile navigation drawer an accessible modal
* refactor(ui): centralize settings search destinations
* fix(ui): own chat media resource lifecycles
* fix(ui): unify sidebar session scope ownership
* refactor(ui): remove obsolete navigation backdrop styles
* refactor(ui): isolate dashboard provider lease capabilities
* fix(ui): centralize gateway operator permissions
* style(ui): format gateway event regressions
* fix(ui): render live dashboard permissions immediately
* fix(ui): enforce approval grant authority
* fix(gateway): fence retired sockets after event gaps
* fix(ui): isolate sidebar gateway fixtures across shared workers
* test(ui): isolate singleton-sensitive browser suites
* fix(ui): retire stale catalog pagination on gateway reconnect
* fix(ui): restore drawer focus after native dialog dismissal
* fix(ui): seed drawer threads and preserve modal focus ownership
* fix(ui): isolate nested native drawer overlay lifecycle
* test(ui): prove isolated dashboard lease authorization
* fix(ui): bound settled managed image resources
* fix(ui): type native modal focus and shared test helper
* fix(ui): correct approval mock types and trim dead export
* fix(ui): keep settings section metadata private
* fix(qa): keep hosted coverage regression within lint limit
* refactor(ui): keep catalog presence in its session data owner
* fix(browser): regenerate bundled copilot runtime
* test(ui): split board lease authorization regressions
* fix(ui): snapshot gateway listener fanout without redundant spread
* fix(ui): bind chat media subscriptions to image lifetime
* fix(ui): extract overlay access lifecycle
* fix(ui): restore guarded media after Lit reconnection
* test(ui): localize board lease fixture title
* fix(ui): reuse system approval fixture labels
* test(ui): narrow managed media lifecycle source
* fix(ui): prevent retired board gateway clients from rolling back leases
* fix(ui): expose pairing to pairing-scoped operators
* fix(ui): preserve legacy device pairing access
* fix(ui): preserve responsive sidebar ownership
* fix(ui): preserve responsive navigation and prove media ownership
* fix(ui): retire revoked catalog and refresh pairing grants
* test(ui): align typed catalog fixtures with main
2026-07-28 16:42:05 -04:00
Peter Steinberger
18ecde3d9f
refactor(chat): keep web and terminal sessions synchronized ( #115377 )
...
* refactor(chat): unify web and TUI session synchronization
* refactor(chat): extract canonical projection and transcript owners
* test(gateway): verify private transcript store identity
* test(agents): protect public transcript storage boundary
* fix(chat): harden cross-client identity and subscription lifecycles
* fix(gateway-client): preserve type-safe release callback rejection
* test(ui): complete shared sidebar gateway fixture
2026-07-28 16:08:10 -04:00
Peter Steinberger
98b8a18b4c
fix(node): harden reconnect and local inference cancellation ( #115033 )
...
* fix(node): harden reconnect and local inference cancellation
* fix(browser): refresh bundled gateway client
* fix(gateway): preserve restart after reconnect reset
* fix(node): preserve tracked remote command ownership
2026-07-28 04:18:51 -04:00
Peter Steinberger
edecdbd05e
refactor(config): config-surface reduction tranche 3 — product consolidations (review request) ( #111527 )
...
* refactor(config): consolidate media model lists
* refactor(config): unify memory configuration
* refactor(config): consolidate TTS ownership
* refactor(config): move typing policy to agents
* refactor(config): retire product-level config surfaces
* refactor(config): share scoped tool policy type
* chore(config): refresh generated baselines
* fix(config): honor agent typing overrides
* fix(config): migrate sibling config consumers
* refactor(infra): keep base64url decoder private
* fix(config): strip invalid legacy TTS values
* chore(config): refresh rebased baseline hash
* fix(doctor): route legacy messages.tts.realtime voice to talk during tts move
* refactor(config): polish final layout names
* refactor(config): freeze retired tuning defaults
* feat(config): add fast mode default symmetry
* refactor(config): key agent entries by id
* docs(config): update final layout reference
* test(config): cover final layout migrations
* chore(config): refresh final layout baselines
* fix(config): align final layout runtime readers
* fix(config): align remaining readers
* fix(config): stabilize final layout migrations
* fix(config): finalize config projection proof
* fix(config): address final layout review
* docs(release): preserve historical config names
* fix(config): complete keyed agent migration
* fix(config): close final migration gaps
* fix(config): finish full-branch review
* fix(config): complete runtime secret detection
* fix(config): close final review findings
* fix(config): finish canonical docs and heartbeat migration
* fix(config): integrate latest main after rebase
* refactor(env): isolate test-only controls
* refactor(env): isolate build and development controls
* refactor(env): collapse process identity indirection
* refactor(env): remove duplicate config and temp aliases
* docs(env): define the operator-facing allowlist
* ci(env): ratchet production variable count
* fix(env): remove stale provider helper import
* fix(env): make ratchet sorting explicit
* test(env): keep test seam in dead-code audit
* test(env): cover ratchet growth and boundary; document surface budgets
* docs(config): document tier-eval consolidations
* docs(config): clarify speech preference ownership
* test(memory): align retired tuning fixtures
* refactor(memory): freeze engine heuristics
* refactor(config): apply tier-eval tranche
* refactor(tts): move persona shaping to providers
* refactor(compaction): move prompt policy to providers
* test(config): align hookified prompt fixtures
* chore(deadcode): classify test-only exports
* chore(github): remove unused spawn helper
* chore(deadcode): classify queue diagnostics
* chore(deadcode): remove unused lane snapshot export
* chore(plugin-sdk): ratchet consolidated surface
* fix(config): integrate latest main after rebase
2026-07-21 20:28:43 -07:00
Peter Steinberger
6d4082ef97
fix(ui): prevent unsafe custodian nudge answers ( #111430 )
...
* fix(ui): harden custodian nudge actions
* refactor(ui): split custodian page helpers
* fix(ui): classify custodian nudge delivery
* fix(ui): ignore stale custodian question replies
* fix(ui): restore rejected custodian questions
* fix(ui): preserve custodian wizard uncertainty
* refactor(ui): keep nudge text helper private
* test(ui): model uncertain custodian delivery
* fix(ui): scope delayed custodian dismissals
* fix(ui): retain in-flight custodian nudges
* fix(ui): block nudges during hosted wizard input
* chore(protocol): regenerate gateway models
2026-07-19 11:10:41 -07:00
Peter Steinberger
62c5a8b888
fix(gateway): make scope errors machine-readable across clients ( #111013 )
...
* fix(gateway): consume structured scope errors
* docs(gateway): clarify tools error boundary
* refactor(gateway): unify node admin policy
2026-07-18 17:53:45 -07:00
Alix-007
deccdb5e57
fix(ui): bound browser gateway WebSocket opening ( #109037 )
...
* fix(ui): bound browser gateway socket opening
* fix(ui): use browser-safe timeout export
2026-07-18 09:38:37 +01:00
Peter Steinberger
ec8f6e5e03
feat(browser): add secure per-tab copilot panel ( #109817 )
...
* feat(browser): add copilot security contracts
* fix(gateway): expose verified client identity to handlers
* feat(browser): add secure per-tab copilot panel
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* refactor(browser): separate copilot gateway hint custody
* fix(browser): preserve legacy pairing parse shape
* fix(browser): harden copilot lifecycle custody
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* fix(browser): enforce copilot lifecycle boundaries
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* style(browser): format copilot sources
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* fix(browser): preserve copilot consent revocation
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* refactor(browser): split copilot custody owners
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* test(browser): normalize websocket array buffers
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* chore(protocol): regenerate Swift gateway models
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* refactor(browser): model copilot runtime entrypoints
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* fix(browser): honor extension build boundaries
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* test(gateway): assert targeted chat delivery
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* test(gateway): cover targeted delivery calls
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* fix(browser): declare copilot build dependencies
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* fix(ci): clear browser copilot gate failures
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* test(ci): cover copilot lint exclusion
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* fix(browser): gate copilot on relay custody
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
* test(browser): bound copilot relay frames
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
---------
Co-authored-by: Cameron Beeley <cameron.beeley@gmail.com >
2026-07-18 01:00:23 +01:00
Peter Steinberger
a719a851bb
refactor(gateway-client): centralize challenge timeout resolution ( #108932 )
2026-07-16 04:19:54 -07:00
NIO
dacf164793
fix(gateway-client): bound websocket opening handshake waits ( #108348 )
...
* fix(gateway-client): bound websocket opening handshake waits
* test(gateway-client): harden handshake timeout proof
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 03:36:17 -07:00
Josh Avant
4b7f193c9d
fix: gateway-owned work fails through same-host relay ( #108423 )
...
* fix(gateway): dispatch owned runtime work in process
* fix(gateway): publish canonical approval resolutions internally
* fix(gateway): seal owned approval runtime lifecycle
* fix(gateway): keep instance runtime contracts acyclic
* fix(gateway): remove stale runtime type imports
* fix(agents): reconcile ambiguous recovery timeouts
* refactor(gateway): constrain internal approval methods
* fix(agents): route orphan recovery in process
* fix(agents): preserve aborted restores for recovery
* fix(agents): keep lifecycle waits in process
* test(agents): type lifecycle runtime mock
* test(agents): complete restored session fixture
2026-07-15 20:51:57 -07:00
Peter Steinberger
b363d5a293
feat(linux): canvas UI via CLI-node + Tauri app IPC bridge ( #107633 )
...
* feat(linux): canvas via CLI-node + Tauri app IPC bridge
* refactor: extract gateway helper modules
* build(linux-canvas): register plugin package in lockfile
* fix(linux-canvas): move canvas advertise test out of core, regen docs/protocol/deadcode
* fix(gateway): break node-catalog/registry import cycle via leaf normalize module; add canvas glossary term
* style: oxfmt invoke.ts and runtime.ts after buildNodeEventParams extraction
* fix(linux): load Canvas WebView via dedicated data_directory context
Wry's Linux/WebKitGTK incognito mode discards Tauri's registered
WebContext (wry webkitgtk/mod.rs), so the Canvas window got a fresh
ephemeral context without the openclaw-canvas:// scheme handler — the
bundled A2UI page never committed (stayed about:blank) and every A2UI
command timed out. Use an isolated cache-backed data_directory instead,
which keeps the protocol handler while still isolating Canvas storage
from the dashboard window.
* fix(linux): keep Canvas WebView ephemeral via incognito + data_directory
Autoreview flagged that a dedicated data_directory alone persists Canvas
browser state (cookies, localStorage, IndexedDB, service workers) across
restarts, so an agent that navigates Canvas to a site could leak an
authenticated session into a later session. iOS uses a non-persistent
store; Linux should match.
Add .incognito(true) alongside .data_directory(): the distinct directory
gives Tauri a fresh WebContext key so it still attaches the
openclaw-canvas:// protocol closure, and incognito makes Wry swap in a
fresh *ephemeral* context carrying those protocols. Live-verified on a
Wayland/WebKitGTK box: the bundled page still loads
(location.href=openclaw-canvas://localhost/index.html, openclawA2UI
present, A2UI renders) and the canvas-webview dir holds no persistent
cookie/storage files.
2026-07-14 16:05:14 -07:00
Peter Steinberger
f81f9d8570
chore: enforce max-lines suppression ratchet ( #107315 )
...
* ci: enforce max-lines suppression ratchet
* chore: prune stale max-lines suppression
* fix: close max-lines ratchet enforcement gaps
* fix: harden max-lines ratchet checks
* fix(ci): satisfy max-lines ratchet checks
* style: format max-lines declarations
* fix(ci): match oxlint suppression grammar
* test: isolate max-lines git fixtures
* chore: prune resolved max-lines debt
* test: skip newline path fixture on Windows
* fix: harden max-lines suppression ratchet
* chore: refresh max-lines baseline
* fix: close max-lines ratchet bypasses
* fix: derive ratchet base from PR merge tree
* fix: support older Git in staged ratchet
* fix: align max-lines declarations and baseline
* chore: refresh max-lines baseline for current main
* fix: exclude generated wizard locales from max-lines
* chore: prune resolved max-lines debt
2026-07-14 09:27:02 -07:00
Peter Steinberger
c13aa612eb
fix(ws): normalize raw message payloads ( #107459 )
2026-07-14 05:38:38 -07:00
Peter Steinberger
7abb20fe33
fix(lint): buffer casts for nodebuffer ws message handlers
...
aae56539fa set binaryType=nodebuffer but left RawData-typed toString
calls; no-base-to-string fails check-lint repo-wide. Cast to Buffer like
the same commit's realtime-transcription site.
2026-07-14 05:18:39 -07:00
Peter Steinberger
aae56539fa
refactor(ws): use nodebuffer socket contracts
2026-07-14 05:03:57 -07:00
Vincent Koc
3aab2ce6a9
refactor(packages): remove dead internal helpers ( #107077 )
2026-07-14 11:48:14 +08:00
Vincent Koc
aea2dd6ab2
fix(test): follow private UI export cleanup
2026-07-13 20:56:46 +02:00
Peter Steinberger
f87a74602a
refactor(gateway): simplify canonical WebSocket client ( #106316 )
...
* refactor(gateway): simplify canonical websocket client
* refactor(gateway): keep protocol options internal
2026-07-13 05:34:57 -07:00
Peter Steinberger
7c9b8baa2b
refactor(gateway): consolidate TypeScript WebSocket clients ( #106113 )
...
* refactor(gateway): unify websocket clients
* fix(gateway): preserve adapter lifecycle behavior
* test(gateway): keep reconnect proof black-box
* chore(gateway): satisfy shared client lint
* refactor(gateway): keep protocol decisions internal
* refactor(gateway): preserve shared reconnect supervision
* test(gateway): use canonical browser barrel
* fix(gateway): resolve browser retry workspace source
* refactor(gateway): tighten shared protocol types
2026-07-13 03:08:21 -07:00
Peter Steinberger
2fc91410e8
refactor: consolidate reconnect supervisors ( #105987 )
...
* refactor: consolidate reconnect supervisors
* style: satisfy reconnect supervisor lint
* fix: keep reconnect supervisor internal
* refactor: keep retry supervisor lean
* chore: lower gateway client LOC baseline
* style: satisfy large-file LOC guard
* fix: cap long-lived reconnect backoff
* fix: preserve reconnect start failures
* test(sdk): include retry package in install smoke
2026-07-13 00:39:17 -07:00
Peter Steinberger
8fe6ac7fb9
refactor: remove pre-2026.4 compatibility shims and legacy migrations ( #104650 )
...
* refactor(matrix): retire pre-2026.4 legacy crypto and flat-storage migrations
* refactor(cli): drop pre-tsdown daemon-cli dist compat shim from the build
* refactor(diffs): remove deprecated image*/format tool params and output aliases
* refactor(ui): drop pre-gateway-scoped localStorage readers and legacy theme map
* refactor: remove assorted pre-2026.4 compat shims and deprecated aliases
* fix(discord): map legacy thread-binding fields in the doctor JSON import
* fix(msteams): keep bot read fallback for legacy imported conversation rows
* test(msteams): cover legacy bot-only imported conversation references
* fix(ui): keep channel-prefixed session key display fallback
* chore: refresh native i18n inventory and build-docker step count
* chore(matrix): drop now-unused migration-config module
* chore: re-pin plugin SDK public export budget after compat removals
* chore: refresh native i18n inventory after rebase
* chore: re-pin plugin SDK callable budget and refresh i18n inventory after rebase
2026-07-11 13:22:27 -07:00
Peter Steinberger
4b751ce48a
feat(tooling): complete packages/* noUncheckedIndexedAccess adoption (phase 2) ( #104626 )
...
* feat(tooling): extend strict-ratchet lane to all remaining leaf packages
* fix(packages): burn down indexed-access debt in ai and agent-core
All 196 noUncheckedIndexedAccess errors fixed behavior-identically
(iteration, .at()/slices, DataView byte math, guarded queue peeks) plus
cleanup finds: a sparse-tool diagnostic bug, deduplicated Responses
call/item ID parsing with an honest string|undefined splitter, and a
clearer local failure for redacted-thinking blocks missing signatures.
Removes all 17 remaining non-null assertions across ai, gateway-client,
and llm-core so the assertion ban aligns 1:1 with the ratchet lane.
speech-core joins memory-host-sdk as structurally deferred (imports
src/** via plugin-sdk path mappings).
2026-07-11 11:54:06 -07:00
NianJiu
54eda58447
fix(gateway-client): stop unbounded requests masking stalled transports ( #103407 )
...
* fix(gateway-client): keep watchdog active for unbounded requests
* test(gateway-client): prove watchdog recovery lifecycle
* style(gateway-client): satisfy watchdog test lint
---------
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 00:27:34 -07:00
Peter Steinberger
1bcc4c5e70
feat(gateway): add cooperative host suspension ( #103618 )
...
* feat(gateway): add cooperative suspension preparation
* style: satisfy suspension lint checks
* test(gateway): reset work admission between shared suites
* fix(gateway): reject upgrades during suspension
* fix(gateway): preserve admitted work during suspension
* test(gateway): isolate suspension and restart state
* fix(gateway): close suspension false-ready gaps
* refactor(protocol): slim suspension declaration graph
* refactor(plugin-sdk): sever protocol registry edges
* fix(gateway): preserve admitted restart follow-ups
* fix(gateway): make suspension recovery fail closed
* fix(protocol): keep validation formatter re-export only
* test(gateway): simplify deferred fixture type
* style(gateway): clarify suspension entry name
* fix(gateway): retain detached work admission
2026-07-10 20:24:53 +01:00
Dallin Romney
8fa83d2742
refactor(gateway): consolidate client contracts ( #101012 )
2026-07-08 10:56:31 -06:00
Dallin Romney
95e3b9243b
test: execute media and Talk runtime boundaries ( #101091 )
...
* test: execute media and Talk runtime boundaries
* test(qa): centralize gateway fixture startup
* test(qa): check in voice call plugin fixture
2026-07-06 16:25:33 -07:00
Josh Avant
cee2aca409
Scope agent cron operations to the calling agent ( #96883 )
...
* Scope agent cron operations to caller
* Scope OpenClaw tools MCP cron by session
* Address cron scope review feedback
* Preserve unscoped cron update retargeting
* Move cron caller identity into gateway context
* Clarify Gateway restart guidance
* Add cron caller identity regression proof
2026-06-26 21:41:14 -05:00
Peter Lee
6256ad86c9
fix(gateway): classify probe reachability by validated transport ( #93948 )
...
Distinguish validated gateway reachability from pre-open and TLS-validation failures, and sanitize close diagnostics before terminal output.
Fixes #79099 .
Co-authored-by: xialonglee <li.xialong@xydigit.com >
2026-06-19 11:56:16 +01:00
Vincent Koc
09427aa760
fix(gateway): contain lifecycle callback errors
2026-06-19 05:15:20 +02:00
Vincent Koc
47cad606f4
fix(gateway): clean pending request when send fails
2026-06-17 14:38:34 +02:00
Vincent Koc
9d04064e73
fix(gateway): honor injected env for watchdog timeouts
2026-06-17 14:26:07 +02:00
Vincent Koc
20964d3e3b
fix(gateway): tolerate transient pre-hello clean closes ( #93528 )
...
* fix(gateway): tolerate transient pre-hello clean closes
Co-authored-by: RayRuan <43744645+ruanrrn@users.noreply.github.com >
* fix(clownfish): address review for ghcrawl-156871-autonomous-smoke (1)
Co-authored-by: RayRuan <43744645+ruanrrn@users.noreply.github.com >
---------
Co-authored-by: openclaw-clownfish[bot] <280122609+openclaw-clownfish[bot]@users.noreply.github.com>
Co-authored-by: RayRuan <43744645+ruanrrn@users.noreply.github.com >
2026-06-16 14:43:36 +08:00
Vincent Koc
66749a3713
test: consolidate wrapper facade coverage
2026-06-09 20:12:25 +09:00
Peter Steinberger
4df95d3c3f
docs: document package sources
2026-06-04 20:54:41 -04:00
Peter Steinberger
5a10f46c56
docs: document sdk package facades
2026-06-04 01:26:12 -04:00
Vincent Koc
8c89d35a8a
fix(gateway): cancel stop terminate fallback
2026-06-03 17:28:00 +02:00
Peter Steinberger
27dde7a4d6
chore(lint): enable stricter error rules
2026-06-01 01:12:21 +01:00