joshavant
f153858045
fix(onepassword): make SecretRef setup production-safe
2026-07-25 06:03:30 -05:00
sallyom
f045f33a62
feat(onepassword): add managed SecretRef integration
2026-07-25 06:03:30 -05:00
Vincent Koc
3af03aee6c
refactor(approvals): share native target resolvers ( #113568 )
2026-07-25 16:23:14 +08:00
Peter Steinberger
a5d758e74b
refactor(plugin-sdk): share channel DM policy setup ( #113537 )
2026-07-25 01:00:53 -07:00
Peter Steinberger
d6971f46ca
fix: make filesystem publication crash-durable ( #113453 )
...
* fix(fs): centralize directory durability
* chore: keep release notes in PR body
* test(sqlite): canonicalize read-only race paths
* test(fs): clean durability fixtures
* chore(lint): prune sqlite snapshot baseline
* fix(backup): reject unsupported commit sync
* fix(fs): enforce strict durability outcomes
* refactor(tls): flatten preserved-output failures
* fix(reef): require durable journal commits
* fix(fs): route durability through policy boundaries
* fix(reef): preserve Windows journal compatibility
* fix(fs): bind publication to canonical directories
* fix(ci): align durability boundary fixtures
2026-07-24 20:58:17 -07:00
joshavant
66a75bb9e5
fix(channels): unify routed outbound hook ownership
2026-07-24 20:05:30 -05:00
Peter Steinberger
5bea268128
feat(anthropic): complete Claude Opus 5 rollout ( #113392 )
...
* feat(models): add Claude Opus 5 support
* test(models): align Opus 5 setup fixtures
* test(models): update ambient Opus 5 detection
* fix(models): reconcile Opus 5 support with main
2026-07-24 14:55:36 -07:00
Jason (Json)
ee606def49
fix(codex): stop Computer Use readiness stalls across fallbacks ( #113393 )
...
* fix(codex): bound computer use readiness preflight
* chore(codex): keep service status internal
2026-07-24 14:27:53 -06:00
Peter Steinberger
1e9d918037
feat(sdk): always persist media facts and ship facts-first replacements for legacy Media* surfaces ( #113355 )
...
* feat(sdk): always persist media facts and ship facts-first replacements for legacy Media* surfaces
PR 1 of the media legacy retirement program (audit-frozen, 4 PRs).
- Every media-bearing user turn now persists normalized __openclaw.media
facts unconditionally while continuing to emit the legacy top-level
Media* projection byte-identically (dual-write bridge; the conditional
shouldPersistStructuredMediaEntries gate now always includes media).
- New replacement APIs, shipped before any removal: typed hook media
facts (media[], originalMedia[], mediaStagingPending) on message
events; {{AttachmentPath}}/{{AttachmentUrl}}/{{AttachmentContentType}}/
{{AttachmentDir}}/{{AttachmentIndex}} template variables; focused
openclaw/plugin-sdk/media-local-roots subpath split out of the
deprecated agent-media-payload facade.
- Every legacy surface carries @deprecated naming its replacement, under
one named compatibility record media-legacy-projection with the
operator-approved removeAfter 2026-10-01 (two release trains; deletion
additionally gates on a clean published-plugin artifact sweep).
- Generic transcript append invariant documented; SDK migration, hooks,
and configuration docs updated to the facts-first path.
Writer golden matrix proves legacy bytes and model prompt bytes are
unchanged while nested facts become unconditional. 2,189 broad media
tests green; SDK api-baseline regenerated on fresh-env Testbox.
* feat(sdk): register media-local-roots subpath exports and deprecation metadata
Completes PR 1: package export map for openclaw/plugin-sdk/media-local-roots
plus the deprecated-subpath inventory and doc metadata entries for the
media-legacy-projection record.
* chore(sdk): track media-local-roots entrypoint and deprecated-export budgets
* fix(sdk): keep deprecated MSTeams buildMediaPayload re-export through the compat window
Deleting shipped runtime-api re-exports belongs to retirement PR 4 after
the media-legacy-projection window; PR 1 only deprecates. Also formats
the migration-guide schedule table.
* docs: regenerate docs map for media migration additions
2026-07-24 10:42:17 -07:00
Jason (Json)
aee46707ba
feat(plugins): support manifest-declared MCP Apps in native plugins ( #113224 )
...
* feat(plugins): load native manifest MCP servers
* fix(gateway): advertise proxied plugin surface ports
* fix(codex): retain MCP App transcript previews
* fix(codex): render native MCP apps inline
* fix(mcp-apps): resolve harness-native views by session
* fix(codex): normalize null MCP result metadata
* fix(ui): give inline MCP apps full message width
* test(codex): use generic native MCP App fixtures
* chore(plugin-sdk): refresh harness runtime baseline
* refactor(codex): isolate native MCP App contracts
* fix(codex): satisfy native app CI contracts
* fix(ci): scope automation app tokens
* chore(ci): defer token scopes to current main
2026-07-24 01:43:48 -06:00
joshavant
a325467557
fix(cron): preserve scheduled caps across CLI and worker upgrades
2026-07-24 01:24:03 -05:00
joshavant
8287e21445
fix(cron): enforce caps across CLI backends
2026-07-24 01:24:03 -05:00
joshavant
51c222904e
docs(plugins): document scheduled policy context
2026-07-24 01:24:03 -05:00
Vincent Koc
5ff16901ef
refactor(browser): reuse shared error coercion ( #113229 )
2026-07-24 13:58:29 +08:00
Peter Steinberger
3b7b2a2a1f
chore: update dependencies and migrate major contracts ( #112963 )
...
* build(deps): complete latest dependency migrations
* fix(deps): satisfy updated dependency types
* fix(deps): hold incompatible build tooling
* fix(deps): preserve portable tooling contracts
* build(deps): allow reviewed fresh transitive releases
* fix(deps): repair major upgrade validation
* build(deps): regenerate current dependency graph
* fix(logging): keep tslog adapter type private
* fix(agents): narrow grep subprocess handle
* fix(codex): prefer pinned managed binary
* fix(codex): fence managed native provenance
* build(deps): align codex ACP with managed harness
* fix(slack): use socket-mode Undici runtime
* fix(slack): detect cross-runtime responses
* fix(slack): bridge package-owned fetch types
* fix(deps): retain tslog v4 JSON contract
* build(plugin-sdk): refresh logging API manifest
2026-07-23 21:21:01 -07:00
joshavant
17eea1c0ab
fix(channels): preserve visible partial delivery
2026-07-23 20:34:39 -05:00
joshavant
0a8831720d
fix(channels): observe deferred delivery rejection
2026-07-23 20:34:39 -05:00
joshavant
6ec2a70ae1
docs(plugins): define inbound delivery settlement
2026-07-23 20:34:39 -05:00
Peter Steinberger
73d279c232
fix(plugins): preserve shipped SDK and lifecycle state ( #113101 )
...
* fix(plugins): restore shipped channel compatibility
* docs(plugins): record shipped channel compatibility
* test(plugin-sdk): budget shipped channel compatibility
* docs(plugin-sdk): track shipped channel compat window
* test(plugins): align shipped compat guardrails
2026-07-23 12:30:54 -07:00
Peter Steinberger
129f86bbf5
feat: auto-collect durable meeting transcripts ( #113122 )
...
* feat(meetings): auto-collect durable transcripts
* chore(plugin-sdk): refresh meeting transcript API baseline
* fix(plugin-sdk): keep meeting transcript options implicit
* fix(meetings): satisfy transcript bridge typecheck
* fix(google-meet): preserve optional caption policy context
* fix(google-meet): retain caption mode callback type
* refactor(meetings): split transcript lifecycle helpers
* chore(plugin-sdk): refresh split meeting runtime baseline
* refactor(google-meet): split session helpers
* fix(meetings): decouple transcript retries from leave
* fix(meetings): isolate provider subscribers
* fix(meetings): harden capture lifecycle
* fix(meetings): preserve capture during storage outages
* fix(meetings): preserve pending transcript ordering
* fix(meetings): retry capture initialization
* test(agents): reflect default transcript registration
2026-07-23 11:41:08 -07:00
Peter Steinberger
12d7009f71
feat(google-meet): enable plugin by default ( #113053 )
...
Native App Locale Refresh / Refresh native fr (push) Blocked by required conditions
Native App Locale Refresh / Refresh native hi (push) Blocked by required conditions
Native App Locale Refresh / Refresh native id (push) Blocked by required conditions
Native App Locale Refresh / Refresh native it (push) Blocked by required conditions
Native App Locale Refresh / Refresh native ja-JP (push) Blocked by required conditions
Native App Locale Refresh / Refresh native ko (push) Blocked by required conditions
Native App Locale Refresh / Refresh native nl (push) Blocked by required conditions
Native App Locale Refresh / Refresh native pl (push) Blocked by required conditions
Native App Locale Refresh / Refresh native pt-BR (push) Blocked by required conditions
Native App Locale Refresh / Refresh native ru (push) Blocked by required conditions
OpenClaw Stable Main Closeout / Verify stable main closeout (push) Blocked by required conditions
Plugin Init Scaffold Validation / Validate provider scaffold (push) Waiting to run
Native App Locale Refresh / Refresh native sv (push) Blocked by required conditions
Native App Locale Refresh / Refresh native th (push) Blocked by required conditions
Native App Locale Refresh / Refresh native tr (push) Blocked by required conditions
Native App Locale Refresh / Refresh native uk (push) Blocked by required conditions
Native App Locale Refresh / Refresh native vi (push) Blocked by required conditions
Native App Locale Refresh / Refresh native zh-CN (push) Blocked by required conditions
Native App Locale Refresh / Refresh native zh-TW (push) Blocked by required conditions
Native App Locale Refresh / Commit native locale refresh (push) Blocked by required conditions
OpenClaw Stable Main Closeout / Resolve stable release closeout inputs (push) Waiting to run
Plugin NPM Release / preview_plugins_npm (push) Waiting to run
Plugin NPM Release / Validate release publish approval (push) Blocked by required conditions
Plugin NPM Release / preview_plugin_pack (push) Blocked by required conditions
Plugin NPM Release / Preflight plugin npm package () (push) Blocked by required conditions
Plugin NPM Release / publish_plugins_npm (push) Blocked by required conditions
Plugin NPM Release / verify_plugins_npm (push) Blocked by required conditions
Workflow Sanity / actionlint (push) Waiting to run
Workflow Sanity / no-tabs (push) Waiting to run
Workflow Sanity / generated-doc-baselines (push) Waiting to run
* feat(google-meet): enable plugin by default
* docs(google-meet): preserve browser enable recovery
2026-07-23 07:34:32 -07:00
Peter Steinberger
ad505a7b55
fix(swarm): keep collector results reliable through races and restarts ( #112989 )
...
* fix(swarm): harden collector lifecycle and dashboards
* fix(swarm): initialize collector completion state
* test(swarm): satisfy cross-environment type checks
* test(codex): allow direct request handler calls
* style(ui): avoid Swarm widget shadowing
* test(swarm): keep internal helpers private
* refactor(ui): own Swarm roster helpers in runtime
2026-07-23 06:26:31 -07:00
Peter Steinberger
41404f669a
feat: enable Teams and Zoom meeting plugins by default ( #113022 )
...
* feat(plugins): enable meeting plugins by default
* docs: refresh meeting plugin map
2026-07-23 06:18:37 -07:00
Peter Steinberger
9f13f9b140
feat(openai): make million-token context an explicit opt-in ( #112916 )
...
* feat(openai): add safe long-context opt-in
* fix(ci): keep long-context checks within gates
* fix(ci): keep Codex usage helpers internal
2026-07-23 05:34:54 -04:00
Peter Steinberger
cca67fc842
fix(meetings): verify talk-back loopback signal ( #112939 )
...
Workflow Sanity / actionlint (push) Waiting to run
Native App Locale Refresh / Refresh native zh-TW (push) Blocked by required conditions
Native App Locale Refresh / Commit native locale refresh (push) Blocked by required conditions
Native App Locale Refresh / resolve-base (push) Waiting to run
Native App Locale Refresh / Verify generated PR App permissions (push) Blocked by required conditions
Native App Locale Refresh / Refresh native ar (push) Blocked by required conditions
Native App Locale Refresh / Refresh native de (push) Blocked by required conditions
Native App Locale Refresh / Refresh native es (push) Blocked by required conditions
Native App Locale Refresh / Refresh native fa (push) Blocked by required conditions
Native App Locale Refresh / Refresh native fr (push) Blocked by required conditions
Native App Locale Refresh / Refresh native it (push) Blocked by required conditions
Native App Locale Refresh / Refresh native nl (push) Blocked by required conditions
Native App Locale Refresh / Refresh native hi (push) Blocked by required conditions
Native App Locale Refresh / Refresh native id (push) Blocked by required conditions
Native App Locale Refresh / Refresh native ja-JP (push) Blocked by required conditions
Native App Locale Refresh / Refresh native ko (push) Blocked by required conditions
Native App Locale Refresh / Refresh native pl (push) Blocked by required conditions
Native App Locale Refresh / Refresh native pt-BR (push) Blocked by required conditions
Native App Locale Refresh / Refresh native ru (push) Blocked by required conditions
OpenClaw Stable Main Closeout / Resolve stable release closeout inputs (push) Waiting to run
OpenClaw Stable Main Closeout / Verify stable main closeout (push) Blocked by required conditions
Plugin Init Scaffold Validation / Validate provider scaffold (push) Waiting to run
Plugin NPM Release / preview_plugins_npm (push) Waiting to run
Plugin NPM Release / Validate release publish approval (push) Blocked by required conditions
Plugin NPM Release / preview_plugin_pack (push) Blocked by required conditions
Plugin NPM Release / Preflight plugin npm package () (push) Blocked by required conditions
Plugin NPM Release / publish_plugins_npm (push) Blocked by required conditions
Plugin NPM Release / verify_plugins_npm (push) Blocked by required conditions
Workflow Sanity / no-tabs (push) Waiting to run
Workflow Sanity / generated-doc-baselines (push) Waiting to run
* fix(meetings): verify talk-back loopback signal
* refactor(meetings): keep verification helper private
* fix(meetings): type loopback buffers generically
* fix(meetings): bound loopback reference buffers
* fix(meetings): align loopback proof with playback
* chore(meetings): defer release note ownership
* fix(meetings): keep loopback health type private
2026-07-23 02:32:24 -04:00
Peter Steinberger
a542f01f49
refactor: remove dead tooling and deprecated exports ( #112915 )
2026-07-23 01:28:11 -04:00
Peter Steinberger
a12e0f26ee
fix(plugins): serialize lifecycle mutations and preserve setup-required installs ( #112763 )
...
* fix(plugins): harden concurrent lifecycle mutations
* fix(update): preserve post-core restart snapshot
* fix(update): retain authoritative plugin records on resume
* fix(update): reconcile plugin records after handoff
2026-07-22 23:25:48 -04:00
Jesse Merhi
4a2a600809
feat(channels): add channel-owned setup contracts ( #112176 )
...
* feat(channels): add channel-owned setup contracts
* test(channels): align legacy setup fixtures
* chore(channels): regenerate config and SDK baselines after rebase
* fix(update): run fresh doctor after current-process core changes
* fix(channels): align add pre-scan with execution precedence
* style(cli): format channels-cli test additions
* fix(channels): restore option-before-positional channel resolution via metadata arity scan
* fix(channels): keep help flags out of metadata arity escalation
* test(update): mock fresh post-update doctor in current-process suites
* style: format review fixes and correct entrypoint mock type
* fix(channels): register only modern contract options for dual-publishing plugins
* test(update): align downgrade suites with fresh-doctor child invocation
* docs(channels): record empty-contract and input-forwarding invariants
* fix(line): keep the shipped --token switch as a channel access token alias
* fix(signal): stop treating exact cross-family loopback endpoints as bind-aligned
* chore(config): regenerate docs config baselines after second rebase
* style: format rebased channels add tests
* fix(channels): enforce field-key and flag-name agreement in setup contracts
* fix(signal): detect container endpoints for bare --http-url setup
* fix(signal): ignore unconfigured accounts in transport collision checks
* fix(channels): validate negated setup flags in contract and normalizer
* fix(signal): preserve existing transport kind when setup detection is unreachable
* style(signal): use direct boolean check in collision guard
* style(signal): type test config literals
* docs(update): record two-read design of fresh-doctor validation gate
* fix(channels): satisfy post-rebase architecture gates
* docs: refresh channel setup map
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-22 19:57:42 -04:00
Peter Steinberger
1650faf6a1
refactor(plugin-sdk): remove unread setup helpers ( #112767 )
...
* refactor(plugin-sdk): remove unread setup helpers
* refactor(plugin-sdk): privatize removed setup edges
* test(channels): remove stale proxy mock import
2026-07-22 14:57:32 -07:00
Peter Steinberger
32d4323049
docs(plugins): link setup-input deprecations to the migration pattern and document reader sweeps ( #112692 )
...
* docs(plugins): link setup-input deprecations to the migration pattern and document reader sweeps
* ci: retrigger queued run
* docs: regenerate docs map
2026-07-22 11:04:19 -07:00
joshavant
6eea20ce18
fix(agents): finalize settled tool turns safely
2026-07-22 06:04:27 -05:00
joshavant
7c2829c0e0
fix(copilot): isolate settled turn finalization
2026-07-22 06:04:27 -05:00
Peter Steinberger
b40a8da70e
refactor(channels): trim deprecated setup-input fields and legacy promotion keys to published readers ( #112587 )
...
* refactor(channels): trim deprecated setup-input fields and legacy promotion keys to published readers
* ci: retrigger after dropped ready event
* fix(channels): update setup-input guardrails and dead code for the trimmed tier
2026-07-22 01:15:58 -07:00
Peter Steinberger
3c4a1ec905
refactor(agents): move CLI backend adapters from config DSL to registerCliBackend plugins (review request) ( #112539 )
...
* refactor(agents): move CLI backend adapters into plugins
* test(agents): register CLI backend fixtures through plugins
2026-07-22 00:25:29 -07:00
Peter Steinberger
f236e83de7
refactor(channels): shrink ChannelSetupInput to a generic envelope with a deprecated compatibility tier ( #112319 )
...
* refactor(channels)!: shrink ChannelSetupInput to a generic envelope with a deprecated compatibility tier
* fix(channels): keep ChannelSetupInput structurally assignable without an index signature
* docs: regenerate docs map
2026-07-21 22:17:03 -07:00
Peter Steinberger
c1a313676b
docs(computer-use): add cua-computer troubleshooting/error-code reference and fix stale Codex macOS claim ( #112502 )
2026-07-21 21:07:01 -07:00
Peter Steinberger
153636c702
feat(dashboard): workboard:mini aggregates all boards when boardId is unset ( #112484 )
...
* feat(dashboard): workboard:mini aggregates all boards when boardId is unset
* docs: regenerate docs map
2026-07-21 20:32:33 -07: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
Jason (Json)
24c20eec76
fix(agents): enforce Claude CLI cron tool policies ( #112457 )
...
* fix(agents): enforce Claude CLI tool policies
* fix(agents): bound CLI runtime tool grants
* fix(agents): isolate restricted Claude runs
2026-07-21 19:38:21 -06:00
Jason (Json)
55cf9523e0
feat: discover models from live provider catalogs ( #112412 )
...
* feat: discover models from live provider catalogs
* fix(provider-catalog): satisfy current catalog contracts
* fix(deps): update fast-uri past new advisory
* fix(deps): refresh fast-uri shrinkwraps
* fix(openrouter): satisfy provider catalog lint
* fix(agents): preserve refreshable catalog metadata
* test(agents): keep catalog fallback proof within lint budget
* fix(provider-catalog): honor live model contracts
* fix(minimax): type discovery headers explicitly
* docs(plugin-sdk): define live model discovery contract
2026-07-21 19:29:57 -06:00
Peter Steinberger
f0c43dcf72
feat(ui): format international phone numbers for display ( #112400 )
...
* feat(ui): format phone numbers for display
* ci: track normalization package exports in Knip
2026-07-21 17:10:25 -07:00
Peter Steinberger
440539b538
feat(workboard): routable boards, sidebar pinning, icon and color ( #112302 )
...
* feat(ui): add Workboard board routes and pins
* fix(ui): reject malformed Workboard board catalogs
* perf(ui): lazy-load Workboard sidebar runtime
* test(ui): align sidebar board fixtures with render contract
* fix(ui): clear Workboard landing gates
2026-07-21 15:16:38 -07:00
Peter Steinberger
e1d5d3dc16
refactor(channels): move single-account promotion keys to plugin declarations ( #112293 )
...
* refactor(channels): move single-account promotion keys to plugin declarations
* fix(channels): keep legacy promotion tier for undeclared setup adapters
* fix(channels): keep plugin discovery lazy in setup promotion helpers
* fix(channels): resolve bundled promotion surfaces from setup-only artifacts
* test(matrix): use vi.stubEnv in setup test env helper
2026-07-21 06:48:30 -07:00
Peter Steinberger
f695be341c
feat(cua-computer): add experimental Windows/Linux computer-use fulfiller ( #112267 )
...
* feat(cua-computer): add experimental Windows/Linux computer-use fulfiller
Bundled plugin that fulfills the capability-based computer.act + screen.snapshot
node contract on Windows and Linux by supervising a pinned cua-driver 0.10.x
daemon over MCP stdio. macOS keeps the Peekaboo fulfiller; this plugin is
disabled by default and never available on darwin.
Grounded in cua-driver 0.10.0 source (tool schemas, refusal codes, coordinate
spaces, session/daemon lifecycle). Notable safety and correctness properties:
- Deny-by-default env allowlist so OpenClaw secrets (provider/channel tokens,
CUA_API_KEY) never reach the separately installed daemon; telemetry and
update checks forced off.
- Version-gated handshake (exact-minor pin + capability/schema version),
time-bounded so a corrected driver recovers without a node restart.
- Robust daemon supervision: full readiness-budget polling, startup-race
tolerance, signal-death and spawn-error recovery, shared-daemon lifecycle
(never killed on dispose).
- Frame authorization preserved within upstream limits (generation + full live
geometry; capture refused when screen and screenshot geometry diverge).
- Action mapping refuses inputs cua-driver cannot faithfully deliver:
layout-shifted keys, modifier-held drag/scroll, Linux modifier clicks,
hold_key/mouse down-up, non-positive scroll; drag duration clamped.
* fix(cua-computer): satisfy lint, test-types, dead-code, and docs-map gates
2026-07-21 05:58:04 -07:00
Peter Steinberger
d725632ee7
refactor(channels): move channel-flavored setup flags into plugin manifests ( #112239 )
...
* refactor(channels): move channel-flavored setup flags into plugin manifests
* refactor(channels): normalize manifest cliAddOptions formatting, drop changelog entry
* fix(channels): dedupe channels add options by commander switch identity
* fix(channels): let the selected channel's cliAddOptions win switch dedupe
2026-07-21 02:50:19 -07:00
Peter Steinberger
be5e427f56
feat(dashboard): plugin-declared widget data bindings and action verbs ( #112083 )
...
* feat(dashboard): add plugin capability declarations
* docs(dashboard): describe plugin capabilities
* fix(plugins): preserve registry map cloning
* fix(dashboard): make plugin grant ids unambiguous
* fix(dashboard): align generated plugin grant ids
* chore(boards): internalize verb ids and refresh protocol snapshots
2026-07-20 22:43:04 -07:00
Peter Steinberger
78b49f3a05
docs: refresh stale cua-driver claims (cross-platform prerelease, real MCP tool names)
2026-07-20 22:18:21 -07:00
Peter Steinberger
d9cf85fa43
fix(cli): correct optional plugin guidance ( #112019 )
2026-07-20 21:31:30 -07:00
Jason (Json)
8968e955f7
fix(plugins): restore external runtime imports ( #112021 )
...
* fix(plugins): restore external runtime imports
* fix(plugins): support synthetic runtime builds
* test(plugins): type synthetic runtime plan
2026-07-20 21:45:23 -06:00
Peter Steinberger
bcbbf28093
docs(plugin-sdk): migrate retained SDK contracts ( #111535 )
...
* refactor(plugin-sdk): finish retained public demotions
* test(plugin-sdk): tighten surface budgets
* fix(plugin-sdk): retain static tool metadata contract
* fix(plugin-sdk): keep retained exports pending
* fix(plugin-sdk): satisfy registry lint
* docs(plugin-sdk): document retained consumer seams
2026-07-19 15:00:45 -07:00