Commit Graph

68277 Commits

Author SHA1 Message Date
Peter Steinberger 09e5d60d3c fix(ci): format node-host runtime/worker tests
Unformatted test edits landed on main and fail check-lint's oxfmt gate
on every branch.
2026-07-14 03:35:07 -07:00
Peter Steinberger 50e777bc25 refactor(tasks): trim internal export surface (#107385) 2026-07-14 03:33:52 -07:00
Peter Steinberger bc4ed5cf61 feat(macos): native-feel dashboard hosting — instant reopen, preload, frame autosave, ⌘N/⌘K, route memory (#106997)
* feat(macos): native-feel dashboard hosting: instant reopen, preload, frame autosave, ⌘N/⌘K, route memory

The hosted Control UI dashboard now skips SPA reloads when reopening an
unchanged endpoint (auth-equality gated), preloads after launch when a
credentialed local/direct config exists, autosaves its window frame, maps
⌘N/⌘K menu items onto the shipped native web events, filters browser-tell
context-menu items, restores the last committed route via web-side
localStorage memory, and themes the pre-paint background.

* refactor(ui): satisfy TS LOC ratchet: move optional lazy-element helpers out of app-host

app-host.ts is over the 500-line ratchet ceiling and may not grow; move the
self-contained optional custom-element block into lazy-custom-element.ts (its
natural owner) and fold the route-restore decision into native-route-memory's
considerRouteRestore so the shell only replaces-or-persists.

* fix(macos): recover stuck dashboard command queue via deliverability gate

Replace the failure-page-only fast-path check with canDeliverNativeCommands
(live document or in-flight load); a terminally cancelled reload now falls
through to the reload path instead of queueing ⌘N/⌘K forever.

* fix(ui): let in-flight navigation win over native route restore

The one-shot startup restore now checks the rendered/pending match against
the committed bootstrap route; an explicit navigation already in flight
(replayed native new-session, fast click) is no longer clobbered.

* docs(ui): note idempotent collapse of pending native new-session replays

* fix(macos): drop queued dashboard commands on terminal load failure

Queued ⌘N/⌘K are moment-bound; surviving a failure page meant a later
recovery reload replayed stale commands (double palette toggle nets closed,
surprise navigation). Both failure entry points now clear the queue.

* fix(ui): persist native route memory only for settled router states

Mid-navigation emissions still carry the stale committed bootstrap route; an
interrupted restore could overwrite the remembered destination with it.

* fix(macos): coalesce dashboard opens for queued native commands

One in-flight open drains a manager-level queue in press order; a Task per
key press could race window creation (duplicate windows) and reorder ⌘N/⌘K
delivery on the non-immediate remote path.

* fix(macos): correct dashboard placement after frame-autosave restore

setFrameAutosaveName re-applies the stored frame; run ensureOnScreen after
both autosave-name assignments so a frame saved on a disconnected monitor
cannot restore the window off-screen.

* fix(macos): clear dashboard failure state when history restores a real document

Swipe-back/⌘[ off the failure page commits an http(s) document without
passing through load(); the flag previously stayed set and forced a reload
on the next native command.

* fix(macos): keep in-flight dashboard loads instead of restarting them

An open/update during the launch preload previously cancelled and restarted
the same-URL load; in-flight non-failure documents now count as usable in
the reload decision.

* fix(macos,ui): ⌘K legacy fallback + transient search param filtering

Command palette dispatch now sends a cancelable toggle event and falls back
to the shipped open-search event when no handler acknowledges it, so ⌘K
keeps working against older gateway-served bundles. Route memory strips
one-shot action params (?draft=) before persisting; navigation state like
?session= still restores.

* chore(i18n): register dashboard menu strings + drop unused route-memory export

native:i18n:sync inventory + per-locale artifacts for New Session / Command
Palette…; StoredNativeRoute is module-internal after the considerRouteRestore
refactor (deadcode exports gate).

* chore(i18n): rebaseline raw-copy for relocated lazy-element labels

The lazy-custom-element extraction moved three internal load-failure labels
out of app-host.ts; refresh the keyless raw-copy baseline to match (main's
new ui:i18n:verify gate).
2026-07-14 03:33:25 -07:00
Peter Steinberger 5bc101bab2 fix(deadcode): remove stale UI baseline rows (#107383) 2026-07-14 03:31:48 -07:00
Peter Steinberger 5c509efb02 refactor(google-meet): use JSZip for exports 2026-07-14 03:29:43 -07:00
Peter Steinberger 276efaa48b refactor(ui): privatize chat helpers (#107379) 2026-07-14 03:27:45 -07:00
Josh Avant db541e5c60 fix(ios): preserve pinned tools for archive (#107188) 2026-07-14 03:25:56 -07:00
Peter Steinberger 5f75c05192 fix(deadcode): baseline new-session UI exports from #107358
check-dependencies failed on main and every PR because #107358 landed
four unused UI exports without a baseline update.
2026-07-14 03:25:29 -07:00
Peter Steinberger 20f145f9c1 fix(mac): enable terminal actions for paired-node sessions (#107361)
* fix(mac): enable paired-node terminal sessions

* fix(ci): align node worker bridge checks
2026-07-14 03:22:28 -07:00
Peter Steinberger b9d0473b2e refactor(plugins): match Jiti callable contract 2026-07-14 03:20:29 -07:00
Peter Steinberger 70dbbf3bcd fix(msteams): rename shadowed close callback in lifecycle test
ee472357cb added an app.listen callback param that the inner
server.close callback shadowed, failing oxlint no-shadow on main.
2026-07-14 03:17:59 -07:00
Jason (Json) 01a7f4fb3f feat(ui): add images and model selection to new sessions (#107358)
Merged via squash.

Prepared head SHA: cf99b5bab5
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com>
Reviewed-by: @fuller-stack-dev
2026-07-14 04:14:01 -06:00
Ayaan Zaidi 42bd094c12 chore(telegram): keep test-only spool constants module-local
The retention bound, claim lease default, and liveness options type were
exported only for tests, which fails the dead-export gate. Tests pin the
policy literals locally instead.

Refs #107246
2026-07-14 15:40:29 +05:30
Ayaan Zaidi c130ceb5e1 fix(telegram): accept delayed cross-lane spool replays exactly once
Telegram update ids are global across chats, but the update tracker rejected
any id at or below its single high-water mark. When one lane was delayed
while other lanes completed newer ids, the delayed durable-spool replay was
rejected as accepted-watermark and tombstoned without dispatch - silent
message loss. The tracker now rejects only restored-offset ids and exact ids
it already accepted, with the accepted-id set pruned at the persisted offset
plus a bounded retention window; the startup-only floor-replay special case
is deleted.

Refs #107246
2026-07-14 15:40:29 +05:30
Ayaan Zaidi f942734bb1 fix(telegram): bind spool claim liveness to process start identity
Spool claim owners now encode pid:starttime:uuid, and live-owner detection
requires the pid to exist with a matching process start time. Bare
process.kill(pid, 0) treated Linux thread IDs and recycled PIDs of the new
gateway as a live foreign owner, wedging a chat lane behind a dead claim for
the full 30-minute lease after a restart. Legacy pid:uuid and explicit-x
owners keep existence-only lease protection so rolling upgrades and
no-starttime platforms cannot double-dispatch a live worker's claim.

Refs #107246
2026-07-14 15:40:29 +05:30
Peter Steinberger e052d122d6 fix(ui): make scrollbars contextual (#107349) 2026-07-14 03:06:28 -07:00
Peter Steinberger ee472357cb refactor(msteams): use Express listen errors 2026-07-14 03:06:11 -07:00
Peter Steinberger 693d4f8fa3 test: avoid unrelated runtime discovery in agent runner tests (#107354) 2026-07-14 03:05:45 -07:00
Peter Steinberger 8ea5ee2f17 refactor(terminal): unify bounded buffers (#107337)
* refactor(terminal): unify bounded buffers

* refactor(terminal): tighten buffer closure

* refactor(terminal): keep buffer policy private
2026-07-14 03:04:37 -07:00
Peter Steinberger ac4fd2ad42 refactor(media): use qrcode buffer renderer 2026-07-14 02:59:19 -07:00
Peter Steinberger d8f705c0a2 refactor(skills): trim internal exports (#107353)
* refactor(skills): trim internal exports

* test(skills): derive mismatch fixture type
2026-07-14 02:58:34 -07:00
Alix-007 a9c70f3956 fix(twitch): time out Helix user resolution lookups (#105883)
* fix(twitch): time out Helix user resolution lookups

* test(twitch): satisfy resolver lint guards

* test(twitch): satisfy resolver account typing

* test(twitch): prove resolver recovery after timeout

* test(twitch): use explicit credential placeholder

* chore(changelog): defer Twitch note to release

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-14 02:56:39 -07:00
Peter Steinberger d79573d457 fix: avoid redundant image-model calls for vision agents (#107311)
* fix: route native image inspection directly

* fix: narrow image fallback route

* style: satisfy image tool size ratchet

* test: align image fallback auth coverage

* fix: complete native image routing
2026-07-14 02:54:34 -07:00
Peter Steinberger cd7290bc29 fix(discord): show only agent status in progress drafts (#107338)
* fix(discord): show agent status only in progress drafts

* test(discord): preserve explicit progress label expectation

* test(telegram): update default progress label fixtures

* test(ui): use supported hidden-label assertions
2026-07-14 02:52:01 -07:00
Peter Steinberger 673b163b72 refactor(cli): use Commander native APIs 2026-07-14 02:45:52 -07:00
xingzhou 8acbf209cd fix(gateway): prevent broken emoji in WebSocket log IDs (#105001)
* fix(gateway): preserve Unicode in WebSocket log IDs

* test(gateway): cover UTF-16-safe log IDs

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-14 02:41:55 -07:00
Peter Steinberger 103d9ceb5e refactor(secrets): trim internal exports (#107342) 2026-07-14 02:38:46 -07:00
Peter Steinberger 88e5dc1219 refactor(oc-path): reuse YAML path resolution 2026-07-14 02:33:33 -07:00
Dallin Romney 561cf56c53 refactor(workboard): share control ui contract (#102271)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-14 02:33:22 -07:00
Peter Steinberger 92cca9343e feat(linux): headless node device capabilities (camera, location, notifications) (#107193)
* feat(linux): add node device capabilities

* fix(linux-node): actionable pending-approval error + node-host advertise integration test

* fix(linux-node): map geoclue access-denied to LOCATION_DISABLED; floor camera maxWidth to avoid zero-height scale

* fix(linux-node): clamp small camera maxWidth to 2 instead of default

* docs(linux-node): clarify where-am-i -t is a process timeout, not update throttle

* refactor(gateway): extract legacy-node filter + rejection hint to fit LOC ratchet; docs-map + deadcode baseline

* fix(gateway): drop now-unused DEFAULT_DANGEROUS_NODE_COMMANDS import after hint extraction

* test(node-host): drop imports orphaned by removed error-code test
2026-07-14 02:30:36 -07:00
snowzlmbot e8ad0466ff fix: render assistant transcript headers safely (#99404)
* fix: render assistant transcript headers safely

Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com>

* fix(markdown): nest crossing annotation spans

* fix(markdown): protect final transport projections

* refactor(markdown): split transcript render ownership

* test(ui): cover assistant transcript render flag

* refactor(markdown): keep transcript helpers private

* docs(changelog): note assistant transcript headers

* chore(plugin-sdk): refresh transcript annotation baseline

* fix(markdown): harden final transcript projections

* docs(changelog): defer transcript note to release

* refactor(markdown): centralize HTML tokenization

* fix(markdown): satisfy lint gates

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com>
2026-07-14 02:25:37 -07:00
Peter Steinberger b89f6df6b8 refactor(net): share Undici fetch normalization 2026-07-14 02:22:28 -07:00
Peter Steinberger b54a455e38 test(zalo): prove poll backoff cancellation 2026-07-14 02:21:25 -07:00
NIO cc76dc1d8f fix(zalo): make poll error backoff abort-aware 2026-07-14 02:21:25 -07:00
Peter Steinberger d87aea2b83 test(auto-reply): accelerate fallback coverage (#107316) 2026-07-14 02:21:21 -07:00
SL4N 275cc7fd8f fix(sessions): disk budget counts unremovable *.migrated sidecars and evicts live sessions instead (#107238)
* fix(sessions): exclude migration archives from disk budget

Co-authored-by: SL4N <272086617+SL4N@users.noreply.github.com>

* refactor(sessions): keep disk budget scan bounded

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: SL4N <272086617+SL4N@users.noreply.github.com>
2026-07-14 02:19:08 -07:00
Peter Steinberger 31a845875d refactor(qa-matrix): trim internal exports (#107331) 2026-07-14 02:18:24 -07:00
Peter Steinberger 7ab879b45c refactor(net): consolidate Undici runtime loading 2026-07-14 02:11:05 -07:00
Peter Steinberger 22d30bee2b test(zalo): narrow message adapter fixture (#107326) 2026-07-14 02:09:12 -07:00
Peter Steinberger 4893523d69 refactor(oc-path): trim internal exports (#107321) 2026-07-14 02:03:58 -07:00
SL4N 45e651314c fix(cron): retry session lifecycle claim conflicts (#107236)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: SL4N <272086617+SL4N@users.noreply.github.com>
2026-07-14 02:02:39 -07:00
Peter Steinberger 4ab40c621a refactor(sqlite): use Kysely compile helpers 2026-07-14 02:01:04 -07:00
Peter Steinberger c0e0be041a fix: retain who said what across group chat turns (#107025)
* fix(sessions): preserve group sender context across turns

* refactor(sessions): isolate sender replay boundary

* refactor(sessions): adapt sender replay to session boundary

* fix(agent): align sender context boundary projections

* fix(agent): retain queued sender transcript pairs

* fix(agent): forward sender boundary through session runtime

* fix(agent): preserve sender boundary invariants

* fix(agent): correlate persisted sender turns

* test(agent): satisfy sender correlation lint

* fix(agent): retain sender on persisted retries

* test(agent): type persisted retry harness

* fix(agent): match textless sender turns exactly

* refactor(agent): keep session guard within LOC budget
2026-07-14 01:58:29 -07:00
Peter Steinberger d169dc4a12 feat(ui): hover preview of latest tasks on the running-tasks status row (#107297)
* feat(ui): add hover preview popover to running-tasks status row

* chore(ui-mock): exercise finished tasks and status-preview overflow in background-tasks mock

* refactor(ui): move status row into chat-background-tasks-status module (LOC ratchet)

* test(ui): add statusRowId to background-tasks props fixtures

* chore(i18n): record statusPreviewMore fallback baseline

* chore(i18n): sync locale bundles for statusPreviewMore
2026-07-14 01:57:30 -07:00
Peter Steinberger 4341d85268 refactor(google): use GenAI runtime enums 2026-07-14 01:51:34 -07:00
Peter Steinberger cbfad474a6 refactor(zalo): trim internal exports (#107312) 2026-07-14 01:51:09 -07:00
QiuYuang 9d1a75df2d fix(googlechat): bound auth transporter fetches (#106178)
* fix(googlechat): bound auth transporter fetches

* fix(googlechat): compose auth fetch deadlines

Co-authored-by: 毛宇豪0668001457 <mao.yuhao@xydigit.com>
Co-authored-by: 0668000787 <ma.weibin@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: 毛宇豪0668001457 <mao.yuhao@xydigit.com>
Co-authored-by: 0668000787 <ma.weibin@xydigit.com>
2026-07-14 01:50:15 -07:00
Dallin Romney 54d31a1306 refactor(qa): share Matrix flows across drivers (#101253) 2026-07-14 01:48:30 -07:00
Peter Steinberger 625d859938 test(ci): harden scheduled release probes (#107272)
* test(ci): harden scheduled release probes

* docs(agents): record testbox warmup failure

* test(wizard): avoid Promise executor return
2026-07-14 01:48:10 -07:00
Peter Steinberger 69e2282c46 test(wizard): satisfy promise executor lint (#107301) 2026-07-14 01:44:26 -07:00