Peter Steinberger
ae3008c70a
fix(ios): show unavailable Watch approval state
2026-07-11 23:19:37 -07:00
Peter Steinberger
1e0c3e9ee9
build(android): refresh stable dependencies ( #105037 )
2026-07-12 07:13:17 +01:00
Peter Steinberger
2a02ab6bbe
refactor(apps): reuse Watch approval transport models ( #105024 )
...
* refactor(apps): reuse watch approval transport models
* fix(ios): satisfy exact identifier lint
2026-07-12 07:08:03 +01:00
Vincent Koc
01b9c428aa
chore(i18n): reconcile native locale inventory
2026-07-12 13:45:20 +08:00
Peter Steinberger
d14bb8ec44
fix: resume replay-safe work after gateway restarts ( #104997 )
...
* fix: resume replay-safe work after gateway restart
* chore: leave restart note to release process
* fix: sync restart recovery protocol artifacts
2026-07-12 06:37:22 +01:00
Peter Steinberger
a40e43e46e
feat(mac): redesign the menu bar critter to match the mascot ( #104846 )
...
* feat(mac): redesign menu bar critter to match the mascot
* fix(mac): draw happy-eye arcs upward and guard stale celebration expiry
* docs(mac): update menu bar icon states for critter redesign
* fix(mac): own celebration expiry with a start-only generation counter
* fix(mac): give voice-wake antennae real headroom at 18pt
2026-07-12 06:35:02 +01:00
dependabot[bot]
33da64c5d0
build(deps): bump the android-deps group across 1 directory with 4 updates ( #104807 )
...
Bumps the android-deps group with 4 updates in the /apps/android directory: [gradle-wrapper](https://github.com/gradle/gradle ), [io.kotest:kotest-assertions-core-jvm](https://github.com/kotest/kotest ), [io.kotest:kotest-runner-junit5-jvm](https://github.com/kotest/kotest ) and [com.google.devtools.ksp](https://github.com/google/ksp ).
Updates `gradle-wrapper` from 9.4.1 to 9.6.1
- [Release notes](https://github.com/gradle/gradle/releases )
- [Commits](https://github.com/gradle/gradle/compare/v9.4.1...v9.6.1 )
Updates `io.kotest:kotest-assertions-core-jvm` from 6.2.1 to 6.2.2
- [Release notes](https://github.com/kotest/kotest/releases )
- [Commits](https://github.com/kotest/kotest/compare/6.2.1...6.2.2 )
Updates `io.kotest:kotest-runner-junit5-jvm` from 6.2.1 to 6.2.2
- [Release notes](https://github.com/kotest/kotest/releases )
- [Commits](https://github.com/kotest/kotest/compare/6.2.1...6.2.2 )
Updates `io.kotest:kotest-runner-junit5-jvm` from 6.2.1 to 6.2.2
- [Release notes](https://github.com/kotest/kotest/releases )
- [Commits](https://github.com/kotest/kotest/compare/6.2.1...6.2.2 )
Updates `com.google.devtools.ksp` from 2.3.9 to 2.3.10
- [Release notes](https://github.com/google/ksp/releases )
- [Commits](https://github.com/google/ksp/compare/2.3.9...2.3.10 )
---
updated-dependencies:
- dependency-name: gradle-wrapper
dependency-version: 9.6.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: android-deps
- dependency-name: io.kotest:kotest-assertions-core-jvm
dependency-version: 6.2.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: android-deps
- dependency-name: io.kotest:kotest-runner-junit5-jvm
dependency-version: 6.2.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: android-deps
- dependency-name: io.kotest:kotest-runner-junit5-jvm
dependency-version: 6.2.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: android-deps
- dependency-name: com.google.devtools.ksp
dependency-version: 2.3.10
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: android-deps
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-12 06:30:17 +01:00
WhatsSkiLL
604c026409
fix(android): keep session search in context ( #104792 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
2026-07-12 06:27:07 +01:00
Vincent Koc
da78d6f2a5
chore(i18n): reconcile native locale artifacts
2026-07-12 13:12:45 +08:00
github-actions[bot]
0a957a265e
chore(i18n): refresh native locales
2026-07-12 13:12:45 +08:00
WhatsSkiLL
86b10ffb8e
Android: polish workspace file navigation ( #104873 )
...
* fix(android): polish workspace file navigation
* fix(android): serialize workspace file requests
---------
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
Co-authored-by: Colin Johnson <colin@solvely.net >
2026-07-12 00:03:46 -04:00
Vincent Koc
32631fdfac
refactor(android): remove retired voice wake stack ( #104914 )
...
* refactor(android): remove retired voice wake stack
* chore(android): refresh native i18n inventory
2026-07-12 11:52:51 +08:00
Vincent Koc
9443a5914e
chore(apps): refresh native i18n inventory
2026-07-12 05:28:28 +02:00
Peter Steinberger
ac89350327
feat(apps): review durable approvals on mobile ( #104913 )
...
* feat(apps): Android, iPhone, and Watch approval clients
Squash-rebased #103912 segment onto the deep-links tip on current main.
Native approval surfaces: iOS approval presentation with gateway-switch
lease preservation and resolution fencing, watchOS inbox + approval
actions with shipped-shape payload codec, Android approval notices with
publication-tokened dismissal. Native i18n inventory regenerated.
(cherry picked from commit 428a76670ffeede54248b7bd7aa4438e2589851b)
(cherry picked from commit 80225d5707c3645eeea5435f266131037b50ede6)
(cherry picked from commit 2a23b714dc30d773a294aa45adc617e46b80732e)
(cherry picked from commit 9ff1153827769e2cbab7c11c153f0f8634662c28)
(cherry picked from commit 5b25723525bd562e5f97478af492f7b46ad30fd1)
(cherry picked from commit 8c80e8467b5fe89aad0d4c74a0573f1600ed3af9)
(cherry picked from commit ad4037bc9846bf6f082b41c129ee68aa344576c3)
(cherry picked from commit fdf767dd662cff3c8a5a6d571f38f153410651ca)
(cherry picked from commit 00c120376ffd992ea68ce29254a9bc0a25ed1740)
(cherry picked from commit f36a95213e )
(cherry picked from commit e2c25cbe2baacab44d21871d8cb6734704f065ac)
(cherry picked from commit 7c4fda519080486d341a9f4df36d63f9e24b1235)
(cherry picked from commit 1b3d4eda3dc5988012124597f9454ae21fb187a1)
(cherry picked from commit 2a60619722 )
(cherry picked from commit 6f0c386567 )
(cherry picked from commit 784a5857b7 )
(cherry picked from commit cbf294e026841c9bc2799da0fc7db666a69c52db)
* fix(apps): harden approval reconciliation and watch states
2026-07-11 19:59:07 -07:00
Vincent Koc
2236246a43
refactor(android): remove unreachable chat code ( #104887 )
2026-07-12 10:41:42 +08:00
Peter Steinberger
4b6bbd52e6
fix(mac): prevent onboarding installer output hang ( #104827 )
2026-07-11 18:05:06 -07:00
Peter Steinberger
82667a66e5
feat(ui): editable file panel with CodeMirror and sessions.files.set hash-CAS writes ( #104757 )
...
* feat(gateway): add sessions.files.set workspace file write with hash CAS (#104698 )
* feat(ui): CodeMirror file editor panel with CAS save + clickable tool-card paths (#104698 )
* fix(gateway): issue the file CAS hash only for strict-UTF-8 text (#104698 )
* docs(web): document the editable file detail panel (#104698 )
* fix(gateway,ui): round-trip BOM and CRLF bytes through the file editor (#104698 )
* fix(ui): keep mixed-line-ending files read-only in the file editor (#104698 )
* fix(ui): re-gate editability when a conflict reload returns non-editable content (#104698 )
* fix(gateway): reject NUL bytes in sessions.files.set replacement content (#104698 )
* fix(gateway,ui): regenerate protocol bindings, fix prod types and lint for file editor (#104698 )
2026-07-11 17:36:28 -07:00
Peter Steinberger
3255b3218a
feat: unify external sessions with native catalog pagination ( #104717 )
...
* feat(gateway): add generic sessions.catalog surface with plugin SDK registration seam
* feat(agents): support one-shot forked CLI session resume with successor rebinding
* feat(anthropic): adopt local Claude CLI sessions into native chats via catalog continue
* feat(codex): register the session catalog provider independently of supervision
* refactor(ui): delete the retired custom Claude/Codex session tab views
* feat(ui): render external session catalogs as native sidebar sessions and chat panes
* docs: describe the unified native session catalog
* fix: harden forked CLI resume and catalog transcript mapping after review
* fix: satisfy strict typecheck for catalog source guard and imported message cast
* chore(i18n): regenerate session catalog locales
* fix(codex): simplify session source guard type
* fix(ui): paginate sidebar session catalogs
* chore(i18n): refresh catalog metadata after main merge
* fix(ui): harden session catalog pagination refresh
* test(agents): use sqlite session accessor in fork tests
* fix(ci): refresh session catalog generated surfaces
* fix(ui): align session catalog locales
* fix: address session catalog review findings
* fix(sessions): roll back failed plugin catalog adoption
* test(sessions): preserve CLI binding literals
* fix(ui): restore native session pagination label
* docs: note external session catalogs
* Revert "docs: note external session catalogs"
This reverts commit cfb503f160 .
2026-07-11 17:26:26 -07:00
snowzlmbot
be373ea516
improve(android): show provider-configured model details ( #101912 )
...
* feat(android): show provider model inventory
Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com >
* fix(gateway): project provider inventory routes
* style(android): satisfy provider inventory ktlint
* chore(android): sync provider inventory i18n
* style(android): finish provider inventory formatting
* fix(android): harden provider inventory refresh
* test(gateway): type provider inventory fixture
* chore(protocol): regenerate Swift model choice
* chore(android): sync provider inventory i18n
* test(gateway): pin provider inventory discovery mode
* chore(android): sync provider inventory landing
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com >
2026-07-11 17:22:16 -07:00
Igor Guarisma
4147345bcd
feat(android): show agent avatar instead of first-letter badge ( #103248 )
...
* feat(android): render configured agent avatars
Co-authored-by: Igor Guarisma <igor.guarisma@gmail.com >
* style(android): satisfy avatar ktlint
* style(android): fix avatar test formatting
* style(android): align avatar test indentation
* fix(android): initialize safe image client first
* chore(android): sync avatar i18n inventory
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 17:07:46 -07:00
xingzhou
57c2d65ad5
fix(apps): reconcile slow Apple chat replies ( #97722 )
...
* fix(apps): reconcile slow chat replies
Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com >
* style(apps): wrap wait diagnostic
* chore(apps): refresh native i18n inventory
* chore: leave changelog release-owned
* style(apps): normalize Swift modifiers
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 17:01:40 -07:00
Peter Steinberger
02dc25a1b5
feat(gateway): persist operator approvals ( #103579 )
...
* feat(gateway): persist operator approvals
* fix(gateway): preserve approval ids exactly
* fix(gateway): enforce approval reviewer bindings
* fix(gateway): reconcile durable approvals with exec revocation hardening
Map #103515 semantics onto the durable lifecycle: resolutionSource and
one-shot consumeAskFallback stay process-local record facts, trusted
auto-review resolves through the durable CAS as a runtime resolver, and
lost races settle with the winner's operator source. Also: derive the
audience walker cap from the store cap, report APPROVAL_ALREADY_RESOLVED
for a resolve that loses the CAS race, document approval.get/resolve in
the protocol docs, and regenerate Swift models on the new base.
* fix(approvals): validate resolver kind
* docs(approvals): explain malformed verdict denial
* fix(protocol): regenerate approval models after rebase
* chore: leave changelog entry to release generation
* fix(gateway): preserve approval registration boundaries
* test(gateway): prove multi-device approval races
* test(gateway): keep approval order assertion stable
* docs: index operator approval architecture
* fix(protocol): bound approval declaration exports
2026-07-11 16:53:49 -07:00
Peter Steinberger
f929fd9865
feat(ui): chat background-tasks rail detects running work eagerly and shows live tool activity ( #104776 )
...
* feat(ui): detect background tasks eagerly and show live tool activity in the chat rail
Track tool-start counts and the last tool name per task run in the task
registry, persist them on task_runs, and expose them as additive optional
TaskSummary fields. The chat background-tasks rail now loads its snapshot
eagerly so the collapsed toggle badge detects running work immediately,
and rows show a live elapsed timer, tool-use count, and the tool
currently in use (run duration for finished rows).
Issue: #104775
* fix(ui): translate background-task activity strings and refresh generated protocol models
The singular tool-use label is literal ("1 tool use") because several
locales legitimately drop the count placeholder in singular forms, which
fail-closes the placeholder guard in the i18n sync. Locale bundles are
the authenticated ui:i18n:sync output (fallbacks=0); GatewayModels.swift
is protocol:gen:swift output for the new TaskSummary fields.
* chore(ui): refresh i18n raw-copy baseline after rebase
2026-07-11 16:51:48 -07:00
NianJiu
d1f614c9e6
feat(android): add system share target ( #104571 )
...
* feat(android): receive system shares safely
Co-authored-by: NianJiuZst <3235467914@qq.com >
* fix(android): preserve share FIFO in composer
* fix(android): serialize cross-task share imports
* chore(android): sync share import i18n
* fix(android): retry shares in resumed composer
* chore(android): sync resumed share i18n
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 16:44:34 -07:00
Peter Steinberger
847460600f
feat(macos): redesign device-code sign-in ( #104766 )
...
* feat(macos): redesign device-code sign-in
* chore(i18n): refresh native string inventory
* fix(macos): localize device-code completion action
* fix(auth): preserve device-code fallback copy
* fix(xai): report browser launch accurately
2026-07-11 16:43:21 -07:00
Josh Avant
793fe4bfc7
fix(android): require installed-apps disclosure consent ( #97888 )
...
* fix(android): require installed-apps disclosure consent
Co-authored-by: Josh Avant <830519+joshavant@users.noreply.github.com >
* chore(android): sync native i18n inventory
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 15:56:12 -07:00
NianJiu
b5bea9073d
fix: recover Android permission request timeouts ( #103011 )
...
* fix(android): recover permission request timeouts
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
* chore(android): sync native i18n inventory
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
2026-07-11 15:35:41 -07:00
lin-hongkuan
522e253c53
fix(ios): resize oversized shared images ( #103860 )
...
* fix(ios): resize oversized shared images
* fix(ios): satisfy SwiftFormat await rules
* fix(ios): integrate share image processing
* fix(ios): type share attachment failures
---------
Co-authored-by: lin-hongkuan <lin-hongkuan@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 15:16:45 -07:00
WhatsSkiLL
ca09fcaff1
fix(android): refresh notification access on resume ( #104460 )
...
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
2026-07-11 14:49:33 -07:00
WhatsSkiLL
efc7759f38
[AI-assisted] Fix Android workspace filename wrapping ( #104075 )
...
* [AI-assisted] Fix Android workspace filename wrapping
* [AI-assisted] Keep Android i18n inventory stable
---------
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
2026-07-11 14:45:32 -07:00
WhatsSkiLL
e0162ea9e2
feat(android): add chat image previews ( #104620 )
...
Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com >
2026-07-11 17:28:59 -04:00
Peter Steinberger
c60b1b25bf
fix(macos): make onboarding default action keyboard-accessible ( #104705 )
2026-07-11 14:20:36 -07:00
Peter Steinberger
da257661f3
fix(ui): hide web sidebar toggles when the macOS titlebar hosts the toggle ( #104694 )
2026-07-11 13:46:15 -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
7a466b33f3
feat: add metadata-only message audit events ( #103903 )
...
* feat: add metadata-only message audit events
* chore(protocol): restore generated swift models and config baseline after rebase
* fix(state): gate agent-db ownership check before schema version
* fix(cli): sync audit command description into the root-help catalog
* fix(audit): require destination proof before classifying outbound messages as direct
* refactor(audit): drop dead migration guard and add contract comments
* docs(gateway): add dedicated audit history page and cross-links
* test(e2e): enable direct-mode message audit in the telegram proof SUT config
* test(channels): expect declared conversationKind in durable delivery session context
* fix(audit): record the routing channel id for inbound rows from plugin channels
* fix(audit): match channel-prefixed delivery targets in the destination route gate
* fix(audit): validate explicit target kind against the destination route kind
* fix(audit): use the canonical target-prefix grammar in the destination route gate and fail closed on foreign migration tables
* fix(audit): normalize nested provider and kind target prefixes in the destination gate
* fix(audit): strip registered provider aliases and the direct kind prefix in the destination gate
* chore(docs): refresh config baseline after rebase
2026-07-11 13:14:08 -07:00
Peter Steinberger
8310c565e0
feat(onboarding): add provider sign-in ( #104502 )
...
* feat(onboarding): add provider sign-in flows
* fix(oauth): keep callback compatibility
* fix(onboarding): reconcile lost auth outcomes
* fix(onboarding): lock auth cancellation at commit
* fix(onboarding): close provider auth lifecycle gaps
* fix(onboarding): make terminal auth failures dismissable
* fix(onboarding): satisfy native app checks
* fix(onboarding): reconcile absent auth sessions
* fix(onboarding): bound provider auth sessions
* fix(onboarding): open provider auth links safely
* test(onboarding): use scanner-safe auth fixtures
* revert: keep established onboarding auth fixtures
* fix(onboarding): close provider auth cancellation gaps
* fix(gateway): retain uncollected wizard results
* fix(onboarding): bind provider reconciliation attempt
* fix(i18n): avoid guessing moved string identities
* style(onboarding): normalize remote auth choices efficiently
* fix(protocol): refresh optional provider auth choices
* test(gateway): cover provider auth dispatch order
* refactor(macos): split onboarding setup support
* fix(macos): refresh merged native checks
2026-07-11 13:00:17 -07:00
Peter Steinberger
38edd6969a
feat(macos): relocate transient app launches ( #104661 )
2026-07-11 12:44:00 -07:00
Peter Steinberger
9ad59ae788
improve(macos): replace browser cookie-import modal with an inline dashboard banner ( #104591 )
...
* feat(macos): replace browser cookie-import modal with dashboard banner
* fix(macos): cross-browser menu identity, banner pane ownership, docs map
* chore: refresh native i18n inventory
* fix(macos): stale import status polls no longer clobber fresher banner state
* fix(macos): generation-guard stale import polls; drop dashboard-show poll trigger
* fix(macos): session-sticky dismissal and localized banner copy
2026-07-11 11:11:42 -07:00
Peter Steinberger
96f0983a85
fix(onboarding): skip setup for configured gateways and require inference first ( #102883 )
...
* fix(crestodian): keep onboarding RPCs restart-safe
* fix(profiles): isolate approval state migrations
* fix(crestodian): bypass configured gateway setup
* test(crestodian): type onboarding mocks
* fix(onboarding): require inference before Crestodian
* fix(onboarding): enforce verified inference handoff
* fix(macos): reset setup on gateway endpoint edits
* chore(i18n): refresh native source inventory
* fix(gateway): keep socket on request cancellation
* test(packaging): require workspace templates
* fix(onboarding): bind setup to verified inference
* fix(onboarding): align inference gate contracts
* fix(crestodian): classify concurrent policy rejection
* test(crestodian): expect registry restoration
* fix(onboarding): bind setup to configured gateways
* fix(codex): preserve startup phase deadlines
* test(crestodian): match fail-closed policy ordering
* test(onboarding): assert bound gateway handoff
* fix(codex): bind runtime resolution to spawn cwd
* test(crestodian): assert policy rejection order
* fix(cli): preserve gateway routing across restarts
* fix(macos): fail closed during gateway edits
* test(macos): cover gateway route generation races
* chore: keep release notes out of onboarding PR
* fix(ci): refresh onboarding generated checks
* style(swift): align gateway channel formatting
* fix(ci): refresh plugin SDK surface budgets
* fix(ci): resync native string inventory
* refactor(swift): split gateway channel support
* test(doctor): isolate plugin compatibility registry
* test(macos): isolate gateway onboarding fixtures
* test(macos): assert gateway lease health ordering
* fix(codex): reconcile computer-use startup changes
2026-07-11 10:25:14 -07:00
Peter Steinberger
49b5b862ac
feat: node-hosted plugins — dynamic tools, MCP servers, and skills ( #90431 )
...
* feat: node-hosted plugins — dynamic tools, MCP servers, and skills
Nodes become declarative plugin hosts:
- node.pluginTools.update: node hosts publish plugin-registered agent tool
descriptors; gateway materializes them as agent tools executing via
node.invoke under the node command allowlist, with tools.effective
invalidation and node online/offline removal.
- Trusted paired-node descriptors: no gateway-side plugin registration
required; gateway.nodes.pluginTools.enabled off-switch (default on);
description/count caps; deterministic node-prefixed collision names.
- Declarative node-hosted MCP: nodeHost.mcp.servers (McpServerConfig shape)
starts MCP clients on the node host, publishes tools as pluginId node-mcp,
executes via built-in mcp.tools.call.v1 with per-layer timeouts, failure
isolation, and orphan-safe shutdown. No re-pairing when servers change.
- Node-hosted skills: node.skills.update publishes ~/.openclaw/skills
content (64 skills/64KB/512KB caps both sides); gateway merges them into
the skills snapshot while connected and exec host=node is available, with
node:// locators, node-prefixed collisions, disabled command dispatch,
and gateway.nodes.skills.enabled + nodeHost.skills.enabled switches.
- Security: node-supplied pluginIds cannot satisfy pluginId-scoped tool
allowlists unless gateway-registered; reserved node-mcp id requires the
core MCP descriptor shape; protocol registry kept out of public
plugin-sdk dts.
- E2E: pond harness proves publication, MCP round-trip, skills locator, and
disconnect/reconnect for all three surfaces.
* style: format node-plugin-tools test
* fix(skills): keep status loader unfiltered when eligibility is passed
skills.status started passing eligibility for the node-skill merge, which
flipped loadWorkspaceSkillEntries into filtered mode and dropped disabled
skills from status reports (QA plugin-lifecycle-hot-reload timeout). Status
now merges node skills explicitly around an unfiltered load. Also: regen
docs_map for new node docs sections; add the intentional node-host MCP
onclose suppression to the lint-suppression allowlist.
2026-07-11 10:16:34 -07:00
Peter Steinberger
60c6960168
fix(macos): add breathing room between dashboard titlebar buttons ( #104572 )
2026-07-11 10:12:14 -07:00
Peter Steinberger
5ca46a6554
feat(cloud-workers): pinned SSH tunnel runtime and provider-owned key resolution ( #104553 )
...
* feat(cloud-workers): add pinned SSH tunnel runtime
* feat(crabbox): resolve cloud worker SSH identities
* docs(cloud-workers): document SSH tunnel contracts
2026-07-11 09:26:08 -07:00
Peter Steinberger
c3b426f280
feat: add Claude session fleet ( #104528 )
...
* feat: add Claude session fleet
* chore: leave release notes to release automation
* chore: refresh generated catalogs
* fix: satisfy session catalog lint gates
2026-07-11 08:22:59 -07:00
Peter Steinberger
03cab29505
feat(cloud-workers): worker bundle production, pinned SSH bootstrap, and admission handshake ( #104532 )
...
* feat(gateway-protocol): add worker admission handshake
* feat(cloud-workers): build and bootstrap worker bundles
* feat(cloud-workers): wire bootstrap lifecycle
* fix(cloud-workers): state host-key TOFU fallback without warning-comment suppression
* test(cloud-workers): assemble host-key fixture to satisfy review secret scanner
* test(cloud-workers): assemble redaction fixture to satisfy review secret scanner
* fix(cloud-workers): require pinned SSH host keys
* fix(state): add ssh_host_key to additive worker_environments migration
2026-07-11 08:14:30 -07:00
Peter Steinberger
fa77fe10d5
chore: migrate active GPT-5.5 references to GPT-5.6 ( #104452 )
...
* chore(models): migrate active GPT-5.5 references
* test(workboard): expect GPT-5.6 Sol default
* chore: keep release notes in PR body
* test(models): align picker fixtures with Sol default
* test: update PDF default model expectation
* test(qa): migrate thinking smoke to Luna
* test(gateway): align mock catalog with Sol default
* ci: retrigger exact-head PR checks
* test(gateway): document default catalog invariant
2026-07-11 06:30:57 -07:00
Peter Steinberger
05aecc1d6f
feat: show Codex transcripts in the sidebar ( #104437 )
...
* feat: show Codex transcripts in sidebar
* fix: clear Codex sidebar on Gateway switch
* chore: leave release notes to release workflow
* chore: refresh native i18n inventory
* fix: satisfy macOS Codex node lint
* fix: refresh native localization inventory
* docs: refresh documentation map
* chore: refresh UI locale metadata
2026-07-11 05:39:29 -07:00
haruai
597de699d0
fix: route node policy plugin approvals ( #98561 )
...
* fix: route node policy plugin approvals
* refactor(gateway): simplify node approval routing
* fix(gateway): preserve node approval routes
* chore(protocol): refresh node invoke model
---------
Co-authored-by: haruaiclone-droid <281899875+haruaiclone-droid@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 05:37:45 -07:00
Peter Steinberger
b2a6408964
build(android): eliminate Gradle and manifest warnings ( #104451 )
2026-07-11 05:08:45 -07:00
Peter Steinberger
90e465833b
feat(gateway): durable cloud worker environments, provider SDK contract, and lifecycle RPCs ( #104401 )
...
* docs(plan): add cloud workers design plan
* feat(plugin-sdk): add cloud worker provider foundations
* feat(protocol): add worker environment lifecycle shapes
* feat(gateway): persist worker environment lifecycles
* test(gateway): pin environment inventory assertion for damaged worker store
* style(cloud-workers): satisfy lint and docs formatting
* fix(gateway): narrow worker environment type boundaries
* chore(plugin-sdk): account for WorkerProvider surface growth
* docs: regenerate docs map
2026-07-11 04:54:27 -07:00
NianJiu
d85e8a5f23
fix(android): restore sticky node service ( #104226 )
...
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
2026-07-11 04:45:43 -07:00