Commit Graph

68281 Commits

Author SHA1 Message Date
Peter Steinberger
26fe6e8ea3 refactor(audit): trim internal input types (#107390) 2026-07-14 03:43:49 -07:00
Peter Steinberger
3229fbdc48 fix(config): render Feishu group policy in Form mode (#107336)
* fix(ui): scope unsupported config guidance to fields

* fix(config): export Feishu transform inputs

* chore: remove release-owned changelog entry
2026-07-14 03:42:43 -07:00
Peter Steinberger
b68714ee42 refactor(backup): use tar read-entry APIs 2026-07-14 03:42:07 -07:00
Peter Steinberger
723895d713 fix(deps): regenerate google-meet shrinkwrap for jszip
5c509efb02 added jszip without regenerating npm-shrinkwrap.json,
failing check-shrinkwrap on main.
2026-07-14 03:41:49 -07:00
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