Commit Graph

66965 Commits

Author SHA1 Message Date
Oliver Mee
ae11ea5ba9 feat(qwen): add Token Plan (Team Edition) provider (#94419)
* feat(qwen): add Token Plan provider

Co-authored-by: Oliver Mee <102673257+Omee11@users.noreply.github.com>

* docs: regenerate documentation map

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Oliver Mee <102673257+Omee11@users.noreply.github.com>
2026-07-09 22:07:01 +01:00
Peter Steinberger
62de86c978 fix(ui): split-view pane header opens a hidden session dropdown when clicked (#103107)
* fix(ui): replace split pane header session select with a static title

* test(ui): focus split pane button in chat-flow e2e after select removal
2026-07-09 22:03:48 +01:00
Peter Steinberger
129e2795ae fix: stabilize SwiftFormat 0.62 lint (#103098) 2026-07-09 21:48:14 +01:00
Peter Steinberger
8021f35195 docs(changelog): credit preserved UTF-16 fixes (#103105) 2026-07-09 21:46:48 +01:00
Peter Steinberger
4b86909135 docs(changelog): consolidate recent fixes (#103102) 2026-07-09 21:42:55 +01:00
Peter Steinberger
71f7fef7a2 fix(ci): isolate OpenWebUI release smoke (#103095)
* fix(ci): isolate OpenWebUI release smoke

* docs: format release validation table
2026-07-09 21:38:33 +01:00
Simon-XYDT
bb16ca50d6 fix(identity): keep bounded identity values UTF-16 safe (#103034)
* fix(identity): keep bounded values UTF-16 safe

Co-authored-by: simon-w <weng.qimeng@xydigit.com>

* test(identity): cover reachable surrogate boundary

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 21:27:01 +01:00
Peter Steinberger
af6a58a2ba refactor(android): remove orphaned sheet composer (#103094) 2026-07-09 21:25:22 +01:00
Peter Steinberger
45f571e739 feat(webchat): lobster pet shape variants (build, claw size, tail fan) (#103091)
Adds three seeded shape traits composable with all existing looks:
round/squat/slender builds via aspect-ratio stretch (svg renders with
preserveAspectRatio=none so eyes, claws, accessories, and rare-variant
geometry stay aligned), dainty/regular/mighty claw sizes scaled on the
paths inside the claw groups so wave/snip act animations still compose,
and a ~30% tail fan with lobes peeking out behind the lower body. Shape
rolls come after the original traits in the RNG sequence, so existing
seeds keep their palette and personality. The sprite svg gains
overflow: visible so scaled mighty claws are not clipped at the viewBox
edge; the host strip still owns the ledge clipping.
2026-07-09 21:23:20 +01:00
Peter Steinberger
127a2c550d feat(ui): add single-key shortcuts to session and link context menus (#103090)
Session menu items (Open chat, Pin, Mark unread, Rename, Fork, Workboard,
Archive, Delete) and native link menu items (Sidebar, Browser, Copy) now
render right-aligned accelerator hints and activate on bare letter keys
while the menu is open. Disabled items and modified keystrokes are ignored;
buttons expose aria-keyshortcuts.

Closes #103086
2026-07-09 21:16:28 +01:00
Peter Steinberger
2a6251bafb feat(docs): refresh landing hero to current brand and complete quick-start grid (#102880)
The docs landing page and README still led with the retired cartoon
crawfish wordmark while the rest of the site uses the round mascot brand.
Swap in generated hero banners (dark/light), add the missing fourth
quick-start card (Connect a Channel), align the Mintlify backup palette
with the site coral tokens, and drop the old logo assets.
2026-07-09 21:15:21 +01:00
Agustin Rivera
47ec6237ff fix(nvidia): sync recommended models with featured catalog (#99242)
* fix(nvidia): refresh bundled featured models

* fix(nvidia): match featured model feed exactly

* fix(nvidia): remove transient feed detail

* fix(nvidia): correct super context window

* fix(nvidia): align auth choice expectation

* fix(nvidia): hide deprecated models from selection

Refresh the bundled featured catalog while retaining deprecated model metadata for exact-reference compatibility. Route NVIDIA onboarding and catalog picker surfaces through selectable-only provider builders.

* fix(nvidia): simplify featured model table

* fix(nvidia): restore shipped compatibility rows
2026-07-09 13:09:38 -07:00
sparkyrider
bf84515463 fix(markdown): align code tables by display width (#55596)
* fix(markdown): align code tables by display width

Co-authored-by: Sparkyrider <will@willthings.com>

* fix(terminal): distinguish emoji presentation width

Co-authored-by: Sparkyrider <will@willthings.com>

* fix(terminal): count only flag pairs as wide

* refactor(terminal): validate emoji grapheme sequences

* test(terminal): cover text presentation selectors

* test(terminal): cover wide text presentation base

* chore(changelog): defer release note

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 21:08:34 +01:00
Ben.Li
1d4c17073c fix(android): keep link preview metadata UTF-16 safe (#102988)
* fix(android): keep link preview metadata UTF-16 safe

* refactor(android): share UTF-16-safe truncation

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 20:58:18 +01:00
Peter Steinberger
7d5eba3106 fix(ci): restore Kova managed-service scenarios (#103085) 2026-07-09 20:56:26 +01:00
Vincent Koc
ee9d9ea6db fix(ci): verify live provider traffic in performance runs (#103073)
* fix(diagnostics): emit provider request timeline events

* fix(ci): verify Kova live provider evidence
2026-07-09 12:39:41 -07:00
Bartok
1b03e51e18 fix(qqbot): render safe exec approval previews (#102119)
Render pending approvals from shared typed views, add marked grapheme-safe display wraps for QQ Desktop, preserve the 300 UTF-16-unit cap, fence command and metadata safely, and report plugin expiry from the runtime clock.

Fixes #101979
2026-07-09 20:31:57 +01:00
Peter Steinberger
d64b9a30cb fix(ci): remove duplicate Kova gate helper (#103082) 2026-07-09 20:28:35 +01:00
Peter Steinberger
7647d5cfbe perf(test): isolate session provider artifacts 2026-07-09 15:24:40 -04:00
abel-zer0
b47405954e fix(skills): preserve compact prompt descriptions (#88426)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 20:23:05 +01:00
Vincent Koc
266ca5b3a2 fix(providers): publish Meta provider (#103070) 2026-07-09 12:11:56 -07:00
Peter Steinberger
11fa0cf2d5 fix(ci): honor Kova performance report contracts (#103030) 2026-07-09 20:08:25 +01:00
Shakker
8656c3b357 docs: note session workspace shortcut (#103064) 2026-07-09 19:30:37 +01:00
Shakker
fc107382b9 docs: document session workspace shortcut 2026-07-09 19:30:37 +01:00
Shakker
88f2785a0f test: cover session workspace shortcut hint 2026-07-09 19:30:37 +01:00
Shakker
fe8e0bd508 test: cover session workspace keyboard shortcut 2026-07-09 19:30:37 +01:00
Shakker
d909af51a0 test: cover session workspace toggle 2026-07-09 19:30:37 +01:00
Shakker
56a398725d feat: show session workspace shortcut 2026-07-09 19:30:37 +01:00
Shakker
60f25c31c6 feat: toggle session workspace from keyboard 2026-07-09 19:30:37 +01:00
Shakker
58f53ed326 refactor: centralize session workspace toggle 2026-07-09 19:30:37 +01:00
Gio Della-Libera
188d109eda feat: show marketplace feed trust state (#98350) 2026-07-09 11:27:04 -07:00
Vincent Koc
a9578436de fix(ci): accept valid Kova PASS records without violations (#103002) 2026-07-09 11:05:32 -07:00
Gio Della-Libera
9f248969f6 Verify signed marketplace feed refresh (#98338)
* feat: verify signed marketplace feed refresh

* test: fix signed marketplace feed CI

* Guard signed feed refresh trust state

* test(feeds): sign decoded hosted feed payloads

* fix(feeds): make signed snapshot writes monotonic

---------

Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
Co-authored-by: Gio Della-Libera <giodl@microsoft.com>
2026-07-09 10:46:06 -07:00
Peter Steinberger
745b8c315e fix(codex-supervisor): ship CLI metadata entry (#102803)
* fix(codex-supervisor): ship CLI metadata entry

* chore: keep release notes in PR body

---------

Co-authored-by: Peter Steinberger <peter@steipete.me>
2026-07-09 10:31:47 -07:00
mushuiyu886
b714fdb3ae fix(sandbox): keep redacted session keys UTF-16 safe (#102969)
* fix(sandbox): keep redacted session keys UTF-16 safe

* test(sandbox): cover UTF-16 redaction boundaries

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 18:31:21 +01:00
Hamid Shojanazeri
08a957e0ae feat(providers): add Meta Model API - muse-spark-1.1 (#102873)
* feat(providers): add Meta Model API - muse-spark-1.1

Adds meta-model-api provider via bundled extension:
- extensions/meta-model-api/ (provider, catalog, stream, thinking, onboarding)
- docs/providers/meta-model-api.md
- core wiring: env-api-keys, zod-schema, provider-display-names, dotenv, provider-env-vars

Model: meta-model-api/muse-spark-1.1 (Responses API at https://api.ai.meta.com/v1)
Auth: MODEL_API_KEY (Bearer)
Default reasoning: high, maps --thinking off -> minimal (model rejects none)

Fix: bump live test maxTokens 200->4000 (high reasoning uses ~300 tokens for reasoning alone)

Co-authored-by: Meta

* fix(meta-model-api): clean reasoning lint

* test(meta-model-api): align live proof checks

* chore(meta-model-api): bundle provider metadata

* docs: fix Meta Model API setup wording

* docs: format Meta Model API provider page

---------

Co-authored-by: Dave Morin <dave@morin.com>
Co-authored-by: Colin <colin@solvely.net>
Co-authored-by: Josh Lehman <josh@martian.engineering>
2026-07-09 10:27:09 -07:00
mushuiyu886
b451d8b5e5 fix(workshop): keep approval target names UTF-16 safe (#102963)
* fix(workshop): keep approval target names UTF-16 safe

* test(workshop): tighten UTF-16 approval regression

* test(workshop): mirror approval budget exactly

* docs(plugins): correct approval description limit

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 18:26:08 +01:00
mushuiyu886
88acda11b8 fix(nextcloud-talk): keep error snippets UTF-16 safe (#102949)
* fix(nextcloud-talk): keep error snippets UTF-16 safe

* test(nextcloud-talk): assert exact safe error

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 18:21:26 +01:00
Peter Steinberger
8c78e1c035 fix(cli): keep session key truncation UTF-16 safe (#103010) 2026-07-09 18:17:09 +01:00
zhangqueping
921b6c1e2d fix(agent-runner-memory): use truncateUtf16Safe for memory flush error truncation (#102685)
* fix(agent-runner-memory): use truncateUtf16Safe for memory flush error truncation

Replace raw UTF-16 slices in buildMemoryFlushErrorPayload and
truncateMemoryFlushErrorMessage with truncateUtf16Safe to prevent
surrogate pair splitting in error messages shown to users.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

* test(auto-reply): cover UTF-16-safe memory errors

* test(auto-reply): tighten UTF-16 memory error coverage

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 18:13:49 +01:00
Peter Steinberger
5013f4a166 test(ui): harden device token revoke flow (#103016) 2026-07-09 18:12:14 +01:00
xingzhou
f1e7081b4d fix(active-memory): recall context breaks when recent turns contain emoji (#102877)
* fix(active-memory): keep recall query snippets utf16-safe

* test(active-memory): exercise recall hook for utf16 bounds

* test(active-memory): detect only unpaired surrogates

* fix(active-memory): bound timeout partials safely

Co-authored-by: 张贵萍0668001030 <zhang.guiping@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 18:03:34 +01:00
Josh Lehman
2367511310 docs: refresh contributing maintainer roster (#102998) 2026-07-09 10:02:23 -07:00
Peter Steinberger
cd50d4983b test(ci): serialize real TUI PTY backends (#103006) 2026-07-09 17:55:39 +01:00
Peter Steinberger
372b527da4 fix(ci): back off OCM asset retries (#102996) 2026-07-09 17:38:47 +01:00
wendy
5f77553f6c fix(heartbeat): remove static iteration cap in seekNextActivePhaseDueMs (#96684)
* fix(heartbeat): remove static iteration cap in seekNextActivePhaseDueMs

* fix(heartbeat): floor seek step at 60s to bound active-hours seek iterations

The static MAX_SEEK_ITERATIONS cap (10,080 ≈ 7 days / 1 min) was removed
in the previous fix but replaced the risk with unbounded iteration for
sub-minute intervals.  Floor the seek step at 60s via MIN_SEEK_STEP_MS
so the loop is always bounded by MAX_SEEK_HORIZON_MS / 60_000 = ~10,080
iterations regardless of the configured intervalMs.  Active-hours windows
are minute-granular, so finer steps add no precision.

* fix(heartbeat): batch seek in whole-interval multiples to preserve phase alignment

Use the smallest intervalMs multiple >= 60s as the seek step so every
candidate checked is reachable from startMs by whole intervalMs steps.
This fixes the phase-alignment regression from the previous fix where
Math.max(intervalMs, 60_000) could return off-phase slots for non-divisor
sub-minute intervals like 45s.

Added a regression test for 45s interval to verify the returned candidate
is phase-aligned.

* fix(heartbeat): check every phase candidate, bound only by 1M-iter safety cap

Drop batched seeking (intervalMs-multiple steps) because any multiplier > 1
can skip phase slots inside narrow active windows.  Instead check every
phase candidate, with a 1M-iteration safety cap that prevents event-loop
stalls from sub-ms intervals while covering the full 7-day horizon for
intervals >= 605ms.

Added regression test for 59s interval / 1min active window where batched
steps (118s) would skip from 08:59:44 past 09:00:43 to 09:01:42.

* fix(heartbeat): bound sub-second seek with batch-step + backward-walk

Replace the 1M-iteration per-candidate cap with a two-tier strategy:
- intervalMs >= 1s: per-candidate scan (naturally bounded by horizon)
- intervalMs < 1s: batch in whole-interval multiples >= 1s, with
  backward walk on inactive->active transitions to find the earliest
  phase-aligned active slot

Max iterations <= 604,800 in all cases (~10 ms for trivial predicates,
~0.6-6 s for production isWithinActiveHours with Intl.DateTimeFormat).

Added tests:
- Sub-second interval, startMs already active -> returns directly
- Sub-second interval, inactive->active transition -> backward walk
  finds earliest phase-aligned slot

* fix(heartbeat): unify seek at >= 30s batch step, max 20,160 predicate calls

Use a single batched-seek path for all intervals: step in whole-interval
multiples >= 30 s with backward walk on inactive->active transitions.

For intervalMs >= 30 s (30 s, 59 s, 60 s+): multiplier = 1, effectively
per-candidate with no batch overhead.

For intervalMs < 30 s (1 s, 500 ms, 1 ms): batched at >= 30 s, backward
walk finds the first active phase-aligned slot in the window.

Max predicate calls <= 20,160 for any interval (30 s minimum step /
7-day horizon). Production isWithinActiveHours (Intl.DateTimeFormat)
cost: ~20–200 ms worst case vs 0.6–6 s for the per-candidate approach.

* fix(heartbeat): bound active-hours seek cost

* fix(heartbeat): resolve current main

* test(heartbeat): isolate active-window regression

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 17:37:32 +01:00
Vincent Koc
afe00f6c7b fix(test): tolerate Docker heartbeat clock rollover (#102986) 2026-07-09 09:35:07 -07:00
Vincent Koc
d18e48c928 fix(ci): ignore profiling-only resource gate failures (#102894) 2026-07-09 09:22:11 -07:00
Peter Steinberger
44ee7b3fa6 test(ci): harden live tool nonce retries (#102980) 2026-07-09 17:17:09 +01:00
lin-hongkuan
148ec3282f fix: require env resolution for web provider refs (#96400)
* fix: require env resolution for web provider refs

* chore: retrigger PR checks

---------

Co-authored-by: lin-hongkuan <lin-hongkuan@users.noreply.github.com>
2026-07-09 17:10:22 +01:00