70897 Commits
Author SHA1 Message Date
Peter SteinbergerandGitHub ea148e728d fix(ui): restore startup JS budget headroom for sandbox diagnostics (#111928) 2026-07-20 10:52:51 -07:00
ShakkerandGitHub 49aa383dd7 fix: consume ClickClack v1 setup claim contract (#111927)
Support ClickClack v1 setup claim URLs for split-origin and path-mounted deployments while preserving legacy setup flows and private transport overrides.

Refs #111919.
Prepared head SHA: c13ce82e38
Co-authored-by: Shakker <165377636+shakkernerd@users.noreply.github.com>
Reviewed-by: @shakkernerd
2026-07-20 18:50:30 +01:00
Peter SteinbergerandGitHub bf6961d33e fix(ui): actionable diagnostics for missing widget sandbox origin behind proxies (#111909)
* fix(ui): actionable error and doctor warning for missing widget sandbox origin

* fix(ui): phrase sandbox-origin diagnostics as conditional guidance

* test(ui): satisfy deadcode and mock-factory gates for sandbox diagnostics
2026-07-20 10:35:47 -07:00
Peter SteinbergerandGitHub 271e6b7391 fix(ui): tolerate absent chat-event messages in text extractors (#111918) 2026-07-20 10:33:20 -07:00
Peter SteinbergerandGitHub febeb6ac12 fix(dashboard): review follow-ups — provider lifecycle, scope-gated controls, pin robustness (#111907)
* fix(canvas): validate dashboard pins before materializing

* fix(ui): bound dashboard provider lifecycles

* fix(gateway): harden board widget descendant frames

* test(ui): clean up dashboard provider tests

* fix(ui): harden dashboard availability lifecycle

* fix(ui): invalidate stale board availability

* perf(ui): keep dashboard bundle within budget
2026-07-20 10:27:52 -07:00
Peter SteinbergerandGitHub 59bc78a5b2 fix(gateway): auto-approve trusted-proxy same-key device scope upgrades (#111916) 2026-07-20 10:25:25 -07:00
Peter SteinbergerandGitHub c715d89de8 fix(ui): show newly created PRs in session sidebar (#111783)
* fix(ui): surface newly created session PRs

* test(ui): split sidebar PR state coverage
2026-07-20 10:04:41 -07:00
Peter SteinbergerandGitHub e0206b4967 fix(dashboard): make the board face scrollable (#111911) 2026-07-20 09:53:27 -07:00
Peter SteinbergerandGitHub 38df399ed8 fix(macos): show local ClickClack session discussions (#111883)
* fix(macos): show local ClickClack session discussions

* fix(macos): support loopback aliases in discussion embeds

* fix(macos): allow trusted hosted ClickClack embeds

* fix(macos): trust only dashboard-initiated discussion frames
2026-07-20 09:33:27 -07:00
ec9bc46e80 Wear: animate Talk avatar from playback audio (#111516)
* Wear: animate Talk avatar from playback audio

* fix(wear): preserve PCM mouth frame continuity

---------

Co-authored-by: Colin <colin@solvely.net>
2026-07-20 12:33:09 -04:00
Josh LehmanandGitHub f0b18c1d74 fix(session): clear orphaned recovery fences (#111869) 2026-07-20 09:32:37 -07:00
Peter SteinbergerandGitHub 324fd4fe6e refactor(channels): delete all media-placeholder consumer awareness (#111891)
Final sweep of the media-placeholder program: with all eleven producers
migrated, the consumer regexes are dead input and are hard-deleted —
media-understanding token un-mixing (bodies are pure user text now),
the persisted-user-turn placeholder drop, the session-memory strip, and
the inbound-event mediaPlaceholder field with its replacement branch
(an intentional removal of shipped SDK surface per the program's
hard-delete decision: plugins still minting placeholder bodies render
them as literal text until updated). formatMediaPlaceholderText remains
the single owner of the <media:kind> vocabulary, used only for
text-only carriers. Legacy tokens in pre-migration history remain
ordinary text.
2026-07-20 09:31:51 -07:00
Peter SteinbergerandGitHub 5ca5c5c1e0 fix(ui): render sidebar view-archived icon as outline (#111867)
The .sidebar-view-archived svg rule set stroke: currentColor but never
fill: none, so the archive icon's lid <rect> rendered with SVG's default
black fill — a solid black bar instead of the outlined Lucide archive
box. Align the rule with sibling sidebar icon styles (fill: none,
1.7px stroke, round caps/joins).
2026-07-20 08:47:35 -07:00
xingzhouandGitHub ee74d7b8dc fix(teams-meetings): expose listening probe timeout (#111486) 2026-07-20 23:39:27 +08:00
Peter SteinbergerandGitHub 336b01a2e3 fix(dashboard): inset board widgets from pane edges (#111876) 2026-07-20 08:24:15 -07:00
Peter SteinbergerandGitHub 96ffdf15c7 docs(web): user guide for session dashboards (#111834)
* docs(web): user guide for session dashboards

* docs: format dashboards page
2026-07-20 08:23:14 -07:00
Peter SteinbergerandGitHub f6f484fb1c fix(ui): auto-show the discussion sidebar when a session has an open discussion (#111871)
* fix(ui): auto-show the discussion sidebar when a session has an open discussion

* docs(ui): document why probe resolution is the only auto-show hook
2026-07-20 08:22:04 -07:00
Peter SteinbergerandGitHub 5197428add feat(channels): batch 4 Telegram drops media placeholder bodies (#111855)
Final producer batch of the media-placeholder program: Telegram primary
bodies are caption-only with one aligned structured fact per native
media; the message-cache kind-parsing regex is deleted (native kind
stored directly); reply-chain, debounce/forward, group-history, and
ambient transcript lines render structured facts via the shared
formatter (removing the plugin-local duplicate of the caption-less
literal); audio-transcript and sticker-description replacements gate on
structured facts instead of exact placeholder strings. Also restores
unconditional failed-retryable recording when media resolution is
aborted for live updates, so shutdown cannot silently settle an
undispatched update.
2026-07-20 07:31:10 -07:00
570f8b4d9e fix(errors): recover from Z.AI token-limit errors (#111744)
* fix(errors): classify Z.AI token-limit overflow

* fix(zai): own token overflow classification

* fix(zai): classify live prompt overflow errors

---------

Co-authored-by: Altay <altay@hey.com>
2026-07-20 17:11:40 +03:00
Peter SteinbergerandGitHub 154a49a78b feat(dashboard): widget capabilities — net CSP, host tools, hardened shared sandbox (#111687)
* feat(boards): enforce widget capability grants

* feat(ui): expose dashboard widget capabilities

* test(dashboard): align rebased gateway contracts

* refactor(dashboard): finish capability alignment

* chore: internalize unused board sandbox exports

* test(dashboard): bind grants to widget instances

* fix(dashboard): close widget authority lifetime gaps

* refactor(ui): preserve modular widget frame ownership

* test(ui): preserve explicit MCP App lease refresh

* test(ui): use shared dashboard sandbox server

* fix(ui): settle widget requests on reconnect

* fix(ui): retry transient widget document loads

* refactor(dashboard): document WebRTC egress residual

* fix(dashboard): clear landing checks
2026-07-20 06:54:44 -07:00
Dinesh H SutharandGitHub 444fd4bbea test(ci): provide rg in PR wrapper fixture (#111824)
* test(ci): avoid lock path in wrapper opt-in test

* test(ci): stub rg in PR wrapper fixture
2026-07-20 06:49:32 -07:00
8d4d02a3cf fix(usage): guard malformed Z.AI usage payloads (#110741)
* fix(usage): guard malformed Z.ai usage payloads

* fix(usage): normalize Z.ai usage payloads

* fix(usage): preserve empty Z.ai snapshots

---------

Co-authored-by: Leon-SK668 <17695126+Leon-SK668@users.noreply.github.com>
Co-authored-by: Altay <altay@hey.com>
2026-07-20 16:14:42 +03:00
8518603392 fix(tts): contract speech requests hang on stalled endpoints (#110725)
* fix(tts): time out stalled contract speech requests

* fix(tts): release discarded contract responses

* test(tts): reuse canonical HTTP server helper

* test(tts): mark fixture credential synthetic

---------

Co-authored-by: Mason Huang <masonxhuang@proton.me>
2026-07-20 21:02:39 +08:00
756de70e84 fix(signal): report malformed release metadata cleanly (#110824)
* fix(signal): validate release metadata before install

* refactor(signal): normalize release metadata once

Co-authored-by: Alix-007 <li.long15@xydigit.com>

* test(signal): prove normalized install version

Co-authored-by: Alix-007 <li.long15@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-20 05:19:34 -07:00
Colin JohnsonandGitHub 2f967bc8f3 test(ios): refresh chat voice and sidebar UI coverage (#111655) 2026-07-20 08:02:16 -04:00
Peter SteinbergerandGitHub 0ac7b24d56 feat(channels): batch 3 producers drop media placeholder bodies (#111800)
* feat(channels): batch 3 producers drop media placeholder bodies

Media-placeholder program batch 3: iMessage, Signal, and WhatsApp stop
minting <media:kind> placeholder bodies. Primary bodies carry captions
only with one aligned structured fact per native attachment (type-only
for missing/rejected/oversized). Echo, quote, and pending-history
records gain structured media facts so dedupe and previews work without
rendered text. Signal media-only outbound sends drop the placeholder
body entirely (signal-cli accepts attachment-only sends; recipients now
see just the media). WhatsApp audio preflight de-stringed; qa-lab
sticker recognizer moved to structured facts; WhatsApp gif maps to
video (presentation mode, no behavioral consumer).

* test(whatsapp): keep media classifier private
2026-07-20 04:22:44 -07:00
7bac63889e fix(nostr): prefixed targets fail to send (#110881)
* fix(nostr): prefixed targets send successfully

* fix(nostr): address target normalization review

* fix(nostr): preserve invalid prefixed allowlist tokens

* test(nostr): cover prefixed npub outbound targets

Co-authored-by: 杨浩宇0668001029 <yang.haoyu@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-20 04:21:49 -07:00
Pavan Kumar GondhiandGitHub 8d5ad804a6 fix: require admin for keyed session model changes [AI] (#111651)
* fix: gate keyed session model creation

* fix: preserve fresh keyed session creation

* fix: cover existing keyed model adoption

* fix: keep keyed session create idempotent

* fix: resolve keyed session model aliases before gating

* fix: tighten keyed session gate comparison

* docs: clarify keyed session gate fail-closed cases

* docs: explain keyed session model error gating

* fix: clarify unscoped keyed session gate

* fix: share session model patch resolution

* fix: preserve existing auth profile no-op creates

* fix: resolve subagent defaults in keyed session gate
2026-07-20 16:33:33 +05:30
Peter SteinbergerandGitHub 8bec61bab1 fix(cli): reject unknown models in config set (#111571)
* fix(cli): validate configured model references

* fix(cli): cover dependent model references

* fix(cli): reject malformed model references

* test(cli): satisfy model validation gates

* fix(cli): harden model validation drafts

* fix(cli): preserve model runtime ownership

* fix(cli): validate expanded model references

* fix(cli): close model validation gaps

* fix(cli): preserve model alias ownership

* fix(cli): secure model validation context

* fix(cli): redact expanded model references

* fix(cli): validate inherited agent catalogs

* fix(cli): align canonical model resolution

* fix(cli): scope inherited catalog validation

* fix(cli): compare resolved model snapshots

* fix(cli): cover model dependency transitions

* fix(cli): isolate model env validation

* fix(cli): redact dependent model checks

* fix(cli): compare agent model identity

* fix(cli): validate expanded model removal

* fix(cli): defer unresolved fallback validation

* fix(cli): preserve authored model changes
2026-07-20 03:31:03 -07:00
fab745b82d fix(infra): guard malformed Claude usage responses (#111088)
* fix(infra): guard malformed Claude usage responses

* fix(infra): normalize Claude usage payloads

Co-authored-by: Leon-SK668 <17695126+Leon-SK668@users.noreply.github.com>

---------

Co-authored-by: Leon-SK668 <17695126+Leon-SK668@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-20 03:26:33 -07:00
Peter SteinbergerandGitHub 7fe1d70a50 fix(mcp): prevent custom server config races and parsing errors (#111761)
* fix(mcp): harden custom server management

* fix(ui): keep config patch types private
2026-07-20 02:34:13 -07:00
Peter SteinbergerandGitHub a1f43b218a feat(ui): offer page refresh on protocol-mismatch failure (#111772) 2026-07-20 02:31:40 -07:00
VectorPeakGitHubchatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>Peter Steinberger
3ef2d8cf05 fix(sms): trim prefixed phone number spacing (#111111)
Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-20 02:29:06 -07:00
Peter SteinbergerandGitHub 7defd4a7b4 refactor(android): split offline client databases (#111710)
* refactor(android): split offline client databases

* chore(android): refresh native i18n inventory

* test(gateway): close databases before transcript cleanup
2026-07-20 02:28:02 -07:00
Peter SteinbergerandGitHub 473f2aca33 fix(gateway): honor session title model routing (#111757)
Route automatic dashboard titles through the effective session model and auth profile while preserving explicit cross-provider utility ownership and the existing generic title fallback.
2026-07-20 02:19:57 -07:00
Peter SteinbergerandGitHub 9056c43368 docs(gateway): add client-building and embedding guides (#111726)
* docs(gateway): add client-building and embedding guides

* docs(gateway): harden package rollout guidance
2026-07-20 02:12:52 -07:00
Peter SteinbergerandGitHub fd081d6521 fix(ui): keep Codex commentary visible after runs (#111648)
* fix(ui): keep Codex commentary visible

* fix(codex): preserve commentary transcript ordering

* fix(ui): preserve commentary retention opt-out
2026-07-20 02:10:56 -07:00
2c05365fbd fix(plugins): decode self-hosted discovery JSON with fatal UTF-8 validation (#111113)
* fix(plugins): decode self-hosted discovery JSON with fatal UTF-8 validation

* ci: retrigger checks

* refactor(plugins): share self-hosted JSON decoding

Co-authored-by: zenglingbiao <zeng.lingbiao@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-20 02:07:45 -07:00
Peter SteinbergerandGitHub 922240568a fix(doctor): check every configured agent (#111758) 2026-07-20 02:05:53 -07:00
Peter SteinbergerandGitHub 5d80b62d21 fix(ui): nudge stale tabs after gateway updates (#111619)
* fix(ui): nudge stale tabs after gateway updates

* fix(ui): resolve external packages in worktrees
2026-07-20 01:51:22 -07:00
Wynne668andGitHub 72f77364b3 fix(google): keep embedding batch waits within timeout (#111674) 2026-07-20 11:46:06 +03:00
Peter SteinbergerandGitHub 6f2fa019bd fix: honor configured default agent in consults (#111749) 2026-07-20 01:43:00 -07:00
Jason (Json)andGitHub 779cf40d46 feat(dashboard): harden transcript MCP App pinning (#111748) 2026-07-20 02:42:00 -06:00
Pavan Kumar GondhiandGitHub 391c3bcb17 fix(ui): neutralize Usage CSV text cells [AI] (#111653)
* fix(ui): neutralize usage csv text cells

* test(ui): align usage csv fixture types

* fix(ui): preserve benign usage csv whitespace
2026-07-20 14:08:33 +05:30
Pavan Kumar GondhiandGitHub 1de4a099ca fix: keep exec approval carriers scoped [AI] (#111652)
* fix: unwrap shell argv carriers for exec approvals

* fix: constrain shell carrier unwraps

* fix: block command path-search carriers
2026-07-20 14:06:03 +05:30
Peter SteinbergerandGitHub 0e62293104 fix(ui): keep sidebar session titles aligned (#111698)
* fix(ui): stabilize sidebar session indicators

* test(ui): update sidebar leading-slot assertion
2026-07-20 01:27:25 -07:00
Peter SteinbergerandGitHub 343cfba638 fix(clickclack): private API base for gated hostnames and single discussion-provider registration (#111724)
* fix(clickclack): split API base and refresh discussion provider

* chore: regenerate bundled channel config metadata and docs map for the apiBaseUrl key
2026-07-20 01:27:13 -07:00
Peter SteinbergerandGitHub 629de998f9 feat(system-agent): agentic cached caretaker greeting with quick actions (#111615)
* feat(system-agent): agentic cached caretaker greeting with quick actions

* test(gateway): pin caretaker greeting in session-ownership tests

* fix(system-agent): offer agent handoff chip only when a model is available

* fix(ci): typecheck narrowing, lint, and knip gates for greeting module

* fix(system-agent): reject structured greeting output on every retained line

* test(gateway): split caretaker welcome tests under the max-lines gate
2026-07-20 01:21:09 -07:00
Peter SteinbergerandGitHub 6eee1dccfc fix(cloud-workers): reclaim sessions after workspace conflicts (#111714)
* fix(cloud-workers): make reclaim failures retryable

* chore: leave changelog to release flow

* chore: fix cloud reclaim lint

* fix(cloud-workers): preserve committed reclaim recovery
2026-07-20 01:16:07 -07:00
Peter SteinbergerandGitHub 83e78d8681 fix(ui): quiet the reconnect-wait queue row and hide its raw transport error (#111703) 2026-07-20 01:11:27 -07:00