Peter Steinberger
7a551bff0c
fix(vault): aggregate provider outage diagnostics ( #110908 )
...
* fix(vault): aggregate provider outage diagnostics
* fix(vault): classify revoked token outages
* fix(vault): preserve scoped ACL failures
* fix(vault): keep token probes advisory
* test(vault): satisfy gateway proof gates
* fix(secrets): attribute web provider outages
* test(secrets): prove web outage fan-out in owner suite
* fix(vault): scope malformed responses per secret
* test(secrets): harden exec fanout fixtures
2026-07-18 22:44:06 +01:00
Peter Steinberger
5fe8d6a852
fix(gateway): clients can identify authorization failures ( #110925 )
...
* fix(gateway): structure authorization errors
* test(gateway): align authorization contracts
* fix(gateway): regenerate protocol bindings
* fix(gateway): preserve optional scope errors
* fix(gateway): report complete pairing scopes
* style(gateway): format protocol exports
2026-07-18 22:02:28 +01:00
sheyanmin
ff3ed99cde
fix(usage-bar): validate meter width with strict integer parsing ( #110410 )
...
* fix(usage-bar): validate meter width with strict integer parsing
* fix(usage-bar): restore canonical meter width range [0, 100]
* fix(usage-bar): preserve bounded meter defaults
Co-authored-by: sheyanmin <she.yanmin@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-18 21:57:11 +01:00
Peter Steinberger
242093fb00
fix(ui): dark theme AA contrast for coral fills — deepen primary/destructive, add widget accent-fill token ( #110957 )
2026-07-18 21:56:24 +01:00
Peter Steinberger
81362bf643
feat(apps,ui): question surface parity and composer takeover ( #110681 )
...
* feat(apple): question parity — persistent summaries, skip, reconnect fallback, macOS keyboard
* feat(android): question parity — persistent summaries, skip, reconnect fallback
* feat(ui): question panel replaces composer while expanded
* fix(apps): regenerate question parity contracts
* fix(apps): preserve question reconciliation state
* fix(apps): keep question terminal state monotonic
* test(android): satisfy question test formatting
* fix(security): restore skill audit file reads
* fix(apps): harden question parity edge cases
* fix(apps): preserve expired question summaries
* fix(apps): keep question recovery retries current
* fix(apps): retry stale question recovery snapshots
* fix(android): reset stale question retry budgets
* docs(tools): clarify question composer takeover
* fix(apps): satisfy question recovery release gates
* fix(apps): preserve unknown question outcomes
* fix(apps): harden question action state
* fix(apps): keep unavailable questions terminal
* fix(apps): finalize local question outcomes
* fix(apps): preserve question card API
* fix(apps): reconcile external question answers
* fix(apps): reset question backoff budget
* chore(apps): refresh native i18n inventory
* fix(android): distinguish question skip progress
* fix(android): reconcile locally expired questions
* fix(apps): keep question recovery state fresh
* docs: note question surface parity
* fix(ui): reconcile IME draft before question takeover
* docs: leave question parity notes to release workflow
2026-07-18 21:42:15 +01:00
Peter Steinberger
09a64f7ab0
feat(models): make per-agent allowlists explicit ( #110888 )
2026-07-18 21:42:05 +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
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
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
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
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
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
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
Josh Lehman
453444636c
feat: bound transcript reads across replacements ( #110374 )
2026-07-18 11:41:39 -07: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
8a5c8690e1
fix(secrets): keep unaffected owners live during reload failures ( #110779 )
...
* fix(secrets): isolate reload failures per owner
* refactor(secrets): split runtime activation helpers
* fix(secrets): export web warning type
* fix(secrets): reject unsafe degraded config writes
* fix(secrets): derive reload defaults type
* fix(secrets): defer reload state publication
* fix(secrets): preserve partial refresh state
* fix(secrets): retry superseded reload preflight
* fix(secrets): bind stale credentials to owner contracts
* fix(secrets): scope degraded credential contracts
* fix(secrets): restore source ownership guards
* fix(secrets): recover provider-only degradation
* fix(secrets): enforce degraded reload contracts
* fix(secrets): preserve scoped reload state
* fix(secrets): reconcile deferred descendant state
* fix(secrets): commit reload state atomically
* fix(secrets): preserve source transaction lineage
* test(secrets): use non-secret lineage marker
* chore(plugin-sdk): refresh API baseline
* fix(secrets): canonicalize web owner contracts
* fix(plugin-sdk): preserve legacy secret owner contracts
* fix(secrets): satisfy startup activation types
* test(secrets): align reload fixtures with owner contracts
* refactor(secrets): move source recovery scope helper
* fix(secrets): preserve owner contracts on web failures
* fix(secrets): bind legacy web resolution contract
* fix(secrets): retry stale auth publication
2026-07-18 18:29:24 +01:00
Peter Steinberger
4d27b5b67e
refactor(macos): move PortGuardian state to SQLite ( #110527 )
...
* refactor: compose native SQLite bootstrap tables
* refactor: share native SQLite state bootstrap
* refactor(macos): move PortGuardian state to SQLite
* test: align PortGuardian future-schema fixture
* fix(macos): reserve PortGuardian ledger across tunnel spawn
* fix(ci): align PortGuardian migration gates
* fix(macos): tolerate vanished SQLite sidecars
* fix(macos): revalidate PortGuardian writes
* test(macos): use sqlite identity bootstrap
2026-07-18 18:15:17 +01:00
Peter Steinberger
c8fe8f102f
feat(macos): Quick Chat area capture and focused-app text context ( #110635 )
...
* feat(macos): add Quick Chat capture context
* docs(macos): describe Quick Chat capture context
* fix(macos): bound the AX text walk with deadline, cancellation, and per-message timeout; keep distinct repeated text
* fix(macos): ancestry-scoped echo suppression and adapter-wide AX timeouts
* fix(macos): hard outer timeout abandons a hung AX walk
* fix(macos): truly abandon hung AX walks; hide the bar synchronously before area selection
* chore(i18n): refresh native locale artifacts for Quick Chat capture strings
2026-07-18 17:45:52 +01:00
Peter Steinberger
98410d986e
refactor(state): move device identity into canonical SQLite state ( #110392 )
...
* refactor: store device identities in SQLite
* style: satisfy Swift identity lint limits
* test: harden device identity migration fixtures
* fix: harden SQLite device identity recovery
* chore: remove stale identity helper
* refactor: isolate device identity repair
* chore: remove stale migration import
* test: validate migrated identity key types
* fix: harden device identity repair
* style: format device identity assertion
* fix: derive repaired identity key from PEM
* style: remove redundant PEM conversions
* fix: align native identity store with schema v4
* fix(state): satisfy SQLite identity CI gates
* fix(state): coordinate native identity migration
* test(doctor): include native identity claim path
* fix(infra): preserve coordinator release error
* fix(state): clear identity validation gates
* refactor(apple): remove identity test-only APIs
* refactor(apple): remove dead identity error type
* test(apple): use canonical identity test seam
* test(macos): isolate gateway readiness identity
2026-07-18 17:43:56 +01:00
Peter Steinberger
33f9c47e3c
fix(ui): label the local-only chat message delete honestly as hide ( #110801 )
2026-07-18 17:27:51 +01:00
Peter Steinberger
9177601e7e
fix(plugin-sdk): refresh merged API baseline ( #110751 )
2026-07-18 16:05:55 +01:00
Peter Steinberger
5143d909b9
feat(macos): Quick Chat streamed replies and continue-recent targeting ( #110631 )
...
* feat(macos): stream Quick Chat conversations
* docs(macos): explain Quick Chat recents
* fix(macos): bind the Quick Chat reply consumer before dispatching the send
* fix(macos): pre-bind reply consumer for all send paths; gate rebind on visible route
* fix(macos): revalidate recents eligibility after the async fetch
* fix(macos): invalidate in-flight recents fetches on competing interactions
* fix(macos): single-owner recents invalidation; fresh presentations clear prepared replies
* docs(macos): name the accepted scheduler-scale pre-bind tradeoff
* chore(i18n): refresh native locale artifacts for new Quick Chat strings
* fix(macos): keep Quick Chat placeholder and recents titles localizable
2026-07-18 15:58:49 +01:00
Peter Steinberger
d7b0bacf10
fix(teams-meetings): join and transcribe live meetings reliably ( #110615 )
...
* fix(teams-meetings): validate live web flows
* chore(plugin-sdk): update meeting runtime baseline
* test(teams-meetings): align live validation fixtures
* fix(teams-meetings): harden live browser validation
* fix(teams-meetings): preserve live transition lifecycles
* fix(meeting-bot): pass wait budget during recovery
* test(teams-meetings): satisfy extension lint
* fix(teams-meetings): preserve browser session ownership
* fix(teams-meetings): retire audio bridges after leave
* fix(teams-meetings): harden leave and audio ownership
* fix(teams-meetings): preserve leave transition ownership
* fix(teams-meetings): serialize leave cleanup safely
* fix(teams-meetings): guard live transition cleanup
* fix(teams-meetings): preserve adapter boundaries
* fix(teams-meetings): await caption readiness
* fix(teams-meetings): surface caption blockers
* fix(teams-meetings): retry transient media playback
* chore(teams-meetings): defer release notes
* refactor(meeting-bot): isolate navigation error helper
* test(teams-meetings): keep page control helper private
* fix(meeting-bot): bound caption lifecycle cleanup
* chore(plugin-sdk): refresh API baseline
* test(teams-meetings): split caption ownership coverage
* fix(teams-meetings): retry pending audio routing
* fix(teams-meetings): retain leave transition ownership
* fix(teams-meetings): refresh transcript target
* fix(teams-meetings): bound audio routing retries
* fix(teams-meetings): retry pending remote audio
* fix(teams-meetings): harden media source ownership
2026-07-18 15:57:22 +01:00
Peter Steinberger
a115af2774
feat(ui): add reactive OpenClaw health nudges ( #110708 )
...
* feat(ui): add reactive custodian health nudges
* fix(ui): distinguish stopped channels from startup failures
* test(ui): update custodian route gateway fixture
* fix(ui): preserve current channel health failures
* fix(ui): ignore recovered channel errors
2026-07-18 15:44:29 +01:00
Peter Steinberger
0acece4591
feat(chat): rewind and fork a session from a message bubble ( #110660 )
...
* feat(chat): rewind and fork a session from a message bubble
* docs(web): document chat rewind and fork bubble actions
* fix(chat): lint cleanups, protocol regen, and test splits for rewind/fork CI
* fix(ui): fit chat rewind disabled styles inside the startup CSS budget
2026-07-18 14:46:34 +01:00
Peter Steinberger
9710a1339e
refactor(canvas): promote inline-widget hosting and show_widget to core ( #110475 )
...
* refactor(canvas): promote inline widgets to core
* docs(agents): note discord show_widget ownership at core registration
* ci: retrigger after GitHub scheduling outage
* fix(canvas): satisfy dead-code and test type checks
2026-07-18 14:40:45 +01:00
Peter Steinberger
42133d0c3c
feat(mac): show native notification permission in dashboard Notifications settings ( #110646 )
...
* feat(mac): show native notification permission in dashboard Notifications settings
The Mac app's embedded Control UI showed the web-push section as
Unsupported/Not subscribed even though the app delivers notifications
natively. The dashboard now installs an openclawNotifications WebKit
bridge (status / request-permission / send-test) and the Notifications
settings page renders native permission state with Enable, Open System
Settings, and Send test actions when hosted in the Mac app. Browsers
keep the existing web-push UI. The notifications section renderer moved
out of the oversized config view module.
* fix(ui): break config view import cycle and satisfy lint/deadcode/i18n gates
Move the notifications section props to a leaf contract (no view.ts
type import), unexport the status-event constant, use bracket access
for the injected dunder global, default-case the status switch, and
refresh the native i18n inventory line offset.
2026-07-18 14:13:06 +01:00
Peter Steinberger
1cddec35f4
feat(clients): session groups, batch actions, inspector, and worktree-aware creation for native chat ( #110347 )
...
* feat(clients): gateway session groups, batch operations, session inspector, and new-session options
* chore(i18n): translate session management strings and regenerate catalogs
* chore(i18n): complete translation artifacts for session management strings
* fix(clients): fail closed when a transport cannot honor agent or base-ref session options
* fix(clients): authoritative agent identity for new-session parents and revision-keyed sidebar group refresh
* fix(clients): refetch session groups on remote catalog events and correct Swedish repository-root translation
* fix(clients): resilient new-session popover, revision-keyed group manager, and popover string translations
* fix(clients): scope reset fallback to plain new-session requests and revision-key the inspector groups
* fix(clients): reject empty agent catalogs and refresh sessions on remote group events
* refactor(clients): drop unused agents fetch wrapper and runtime memberwise init flagged by periphery
* chore(i18n): realign locale artifacts after rebase onto model-controls main
* chore(clients): split session creation into the session-actions extension and realign i18n after ask-user main rebase
* chore(i18n): resync derived artifacts after question-card main rebase
2026-07-18 14:09:42 +01:00
Peter Steinberger
40793e6f8b
fix: bound pasted input and provider response bodies ( #110627 )
...
* refactor(runtime): centralize bounded I/O handling
* fix(runtime): finalize bounded I/O contracts
* chore(security): drop stale audit import
* docs(changelog): credit bounded I/O fixes
Co-authored-by: Pick-cat <huang.ting3@xydigit.com >
* fix(agents): keep provider HTTP options private
* fix(ai): traverse OpenAI schema maps by value
* fix(runtime): preserve absolute download deadlines
* ci(ui): stabilize compressed CSS budget
* fix(ai): traverse legacy schema applicators
---------
Co-authored-by: Pick-cat <huang.ting3@xydigit.com >
2026-07-18 13:54:56 +01:00
Peter Steinberger
28069db63a
feat(macos): render system chat option cards ( #110584 )
...
* feat(macos): render system chat option cards
* fix(macos): localize question card controls
* test(macos): stabilize main actor attachment tests
2026-07-18 13:23:59 +01:00
Peter Steinberger
bc8d0da092
feat(linux): Quick Chat streamed replies and precise pairing states ( #110632 )
...
* feat(linux): stream Quick Chat gateway events
* feat(linux): render streamed Quick Chat replies
* fix(linux): correlate Quick Chat streams by run
* style(linux): rustfmt
* test(linux): move Quick Chat stream helper tests into the tooling vitest project
* test: type the Linux quickchat stream harness for strict checks
* test: explicit harness shape for the root test typecheck
2026-07-18 13:22:48 +01:00
Peter Steinberger
74880cb56f
feat(ui): manage MCP servers directly from Settings → MCP ( #110654 )
...
* feat(ui): manage MCP servers directly on the Settings MCP page
* refactor(ui): mcp config section owned by the MCP settings page only
* chore(ui): drop test-only McpServersCard export for knip
2026-07-18 12:54:05 +01:00
cxbAsDev
05fb8e6e61
fix(cli): bound --message-file reads for agent command ( #101442 )
...
* fix(cli): bound --message-file reads for agent command
* fix(cli): preserve symlinked --message-file paths with bounded reads
* fix(cli): preserve FIFO message files with bounded reads, document 4 MiB cap
* fix(cli): accept FIFO --message-file targets via bounded descriptor read
* test(cli): drop duplicate FIFO message-file read test
* docs(cli): note 4 MiB --message-file cap in agent help text
* style(commands): format agent-via-gateway test
* fix(cli): preserve procfs message-file reads
Co-authored-by: 陈宪彪0668000387 <chen.xianbiao@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: Peter Steinberger <peter@steipete.me >
2026-07-18 12:29:33 +01:00
Peter Steinberger
105aebacea
fix: report agent deletion cleanup failures ( #110560 )
2026-07-18 12:23:39 +01:00
Peter Steinberger
01a9e1d398
feat(memory): default cross-conversation recall for personal installs ( #110597 )
...
* feat(memory): default private recall for personal installs
* fix(memory): repair remember-across CI checks
2026-07-18 12:16:49 +01:00
Peter Steinberger
3b2797f09b
improve(ui): settings cleanup batch — universal config.changed emitter, synced chat prefs, dedupe and copy fixes ( #110581 )
...
* fix(gateway): emit config.changed from the reload committer for every accepted write
Agent config_set, CLI, and doctor writes reach the gateway through the file
watcher's reload path, which never broadcast config.changed - only direct RPC
writes did. Move the broadcast to a single onConfigCandidateCommitted hook in
the reload committer so all writers notify connected UIs, including
runtime-skipped commits (writer-intent echo suppression, reload mode off),
and delete the duplicate RPC-side broadcasts.
* feat(ui): sync chat follow-up and commentary prefs across devices
Add chatPersistCommentary and chatFollowUpMode to the ui.prefs sync surface
(schema, types, docs) with clearable null removal for the follow-up override.
Rewrite server-prefs around a descriptor table so a synced pref is one entry
instead of five hand-written code sites. Caption synced rows/sections
(chat prefs, theme, language) and refresh the stale Settings subtitle.
* refactor(ui): dedupe settings constants, drop dead composer branch, refresh copy and docs
Derive the Security tool-profile options from PROFILE_OPTIONS and General's
thinking levels from BASE_THINKING_LEVELS instead of parallel literals.
Remove the unused composer mode:"model" branch, the orphaned
.config-view-toggle CSS family, and stale quick-settings wording. Add static
settings-search entries for the Sessions and Managed Worktrees pages plus a
provenance-row test, and update docs/cli/openclaw.md to describe the current
system-agent config-write policy (denylist roots, route-backing plugin guard,
per-agent routing escalations).
* chore: refresh plugin SDK API baseline after rebase onto current main
2026-07-18 12:10:20 +01:00
Peter Steinberger
0ac69b9fe8
fix(zalo): prevent webhook message loss after acknowledgment ( #110630 )
...
* fix(zalo): adopt durable ingress drain with ack gated on raw-envelope append
OA webhooks acked before detached processing behind a 5-minute in-memory
guard, and Zalo does not retry (silent loss). Raw webhook JSON now appends
durably (event_id = Bot API message.message_id, lane per chat.id) before the
200; failed appends answer 400/500 so nothing acks unpersisted. Dispatch runs
through the core drain with serialized admissions across append backoff,
deferred claims held through shutdown until adoption, retry/dead-letter
classification, and 30d/20k tombstones replacing the deleted 5min/5k guard
after its parity test. Webhook and polling transports stay mutually
exclusive; no twin scenario exists across the four received-event types.
Autoreview scanner false-positive on deleted-line token field references; full
manual review performed (ack ordering, dual-transport exclusivity, eleven-test
matrix). Part of the #109657 fleet program (wave 3).
* refactor(zalo): keep webhook runtime exports private
* test(zalo): use managed temp directories
2026-07-18 12:09:22 +01:00
Peter Steinberger
347ee45895
fix(secrets): surface degradation in logs and doctor ( #109792 )
...
* fix(secrets): surface degraded owners safely
* fix(secrets): preserve degradation ownership across reloads
* fix(secrets): require cold ownership for source recovery
* refactor(secrets): keep assignment provenance internal
* test(secrets): use provider error contract
* fix(secrets): attribute provider failures to active co-owners
* test(secrets): clarify provider failure fixture
* fix(secrets): redact doctor degradation reasons
* test(secrets): align reload harness with runtime state
* test(secrets): cover atomic source publication
* fix(secrets): preserve web owner degradation context
* fix(secrets): retain active web degradation co-owners
* fix(secrets): keep web provider error internal
* refactor(secrets): unify reload degradation state
* refactor(config): remove obsolete source snapshot setter
2026-07-18 11:46:53 +01:00
Peter Steinberger
9d97e10efe
refactor: move non-session runtime journals to SQLite ( #109427 )
...
* refactor: migrate runtime JSONL state to SQLite
* chore: refresh SQLite migration validation
* fix: preserve safe audit migration order
* fix: sanitize retired audit archives safely
* fix: satisfy SQLite storage architecture gates
* fix: serialize plugin doctor state migrations
* fix: bound memory event SQLite projections
* fix: rotate memory event projections safely
* fix: preserve imported event retention age
* fix: harden memory event export projection
* fix: canonicalize memory event migrations
* fix: harden legacy journal migrations
* fix: report unsafe legacy journal paths
* fix: preserve journal ownership during migration
* fix: keep legacy file imports doctor-only
* fix: align SQLite audit CI coverage
* refactor: keep state helpers module-private
* fix: harden legacy state migration recovery
* fix: reconcile SQLite state audit migration
* test: use neutral audit redaction fixtures
* fix: close SQLite migration recovery gaps
* refactor: split audit migration recovery helpers
* test: prove completed audit pads stay out of backups
* fix: preserve audit record ordinals across blank lines
* fix: align SQLite audit CI contracts
* build: package SQLite audit E2E entries
* fix: preserve audit ordinals in backup snapshots
2026-07-18 11:42:14 +01:00
Peter Steinberger
16bd13d254
fix(plugin-sdk): refresh channel send API baseline ( #110620 )
2026-07-18 11:25:52 +01:00
Peter Steinberger
52d49a69b2
fix(plugin-sdk): refresh config schema API baseline ( #110614 )
2026-07-18 11:14:41 +01:00
Peter Steinberger
7a7c158210
perf(ci): parallelize gateway watch artifact check ( #110609 )
2026-07-18 11:01:08 +01:00
Peter Steinberger
a068d38b66
refactor(plugins)!: remove experimental workspaces plugin ( #110416 )
...
* refactor(plugins)!: remove experimental workspaces plugin
* fix(doctor): remove retired workspaces plugin state
* refactor(doctor): settle retired-workspaces cleanup before legacy-state detect
* chore(i18n): leave workflow-owned locale artifacts to the locale refresh
* ci: retrigger after GitHub scheduling outage
2026-07-18 10:56:37 +01:00
Peter Steinberger
f14947d256
fix(codex): persist automatic compaction history ( #110587 )
...
* fix(codex): persist automatic compaction counts
* test(codex): stress compaction and restart recovery
* test(codex): bind compaction waves to fresh counts
* chore: keep Codex release note in PR
2026-07-18 10:37:25 +01:00
Peter Steinberger
75b1ac12df
feat(onboarding): enable lean mode for local models ( #110596 )
2026-07-18 10:31:58 +01:00
Peter Steinberger
e1d87e9a9d
fix(sessions): preserve parent lifecycle for parallel children ( #110541 )
...
* fix(sessions): declare parent lifecycle disposition
Co-authored-by: Luiz Antonio Busnello <lab@generantis.com.br >
* chore: keep release notes in PR body
* fix(sessions): preserve parallel fallback on old gateways
* chore(i18n): refresh native source inventory
---------
Co-authored-by: Luiz Antonio Busnello <lab@generantis.com.br >
2026-07-18 10:16:14 +01:00
Peter Steinberger
222dc58011
feat(linux): native gateway transport for Quick Chat — device identity, TLS pinning, ack-driven sends ( #110491 )
...
* feat(gateway): add Linux native auth surface
* feat(linux): persist Gateway device identity
* feat(linux): add native Gateway WebSocket client
* feat(linux): route Quick Chat through Gateway
* feat(cli): expose dashboard transport handoff
* docs(linux): document native Quick Chat transport
* test(linux): placeholder-shaped fixture token in device-auth payload test
* test: placeholder-shaped credential fixtures; reshape device-token rebind
* test: keep auth-method enums verbatim; rename only credential fixtures
* test(gateway): move Linux native admission coverage to a dedicated test file
* style: replace scanner-evasion literals with honest shapes; shared trim helper for auth material
* style(cli): join-built computed keys instead of literal concatenation
* chore: drop release-owned CHANGELOG edit from feature branch
2026-07-18 09:59:10 +01:00
Peter Steinberger
654560f289
feat(ui): add Apps & extensions page to the Control UI ( #110563 )
...
* feat(ui): add Apps & extensions page
* feat(ui): add per-theme app-art card illustrations
* docs: describe the Apps and extensions page in control-ui
* fix(ui): keep icons.ts under max-lines, drop unused export, regen docs map
2026-07-18 09:52:34 +01:00
Peter Steinberger
ab093bded4
docs(onboarding): finalize phase status and phase 7 decision ( #110543 )
...
* docs(onboarding): final phase status and phase 7 decision
* docs(onboarding): remove shipped refresh follow-up
* docs(onboarding): remove shipped browser follow-up
2026-07-18 09:44:20 +01:00