The README led with a transparent mascot cutout floating on the GitHub
background. Swap in generated full-bleed banners (ink starfield dark
variant, warm paper light variant) with the wordmark, tagline, and
one-liner baked in, and drop the now-redundant EXFOLIATE text line.
* fix(usage-bar): cap warnedTemplateOverrides warn-once dedupe cache
Replace unbounded warnedTemplateOverrides Set with createDedupeCache(maxSize=256)
for consistency with the bounded fileCache Map (MAX_CACHED_TEMPLATE_FILES=64)
already present in the same file.
Co-Authored-By: Claude <noreply@anthropic.com>
* fix(usage-bar): bound invalid-template warnings
Co-authored-by: ZengWen-DT <ceng.wen@xydigit.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
* fix(infra): cap session-maintenance-warning dedupe cache with LRU eviction
The warnedContexts Map accumulated every warned session key forever
with no eviction, TTL, or size cap. A long-running gateway would grow
this unboundedly.
Add a 4 096-entry LRU cache with touch-on-read so frequently re-warned
sessions survive and old entries are evicted on overflow.
* fix(test): restore original unicode escapes and add LRU eviction tests
* fix(test): seed eviction entries with real warning context keys
ClawSweeper P3: the eviction test seeded but the production
buildWarningContext computes . The mismatch
meant params1 could redeliver because the context changed, not because
LRU eviction actually worked. Seed the exact context pattern so the
test fails when eviction breaks.
* fix(infra): bound maintenance warning cache
Co-authored-by: sunlit-deng <sunlit-deng@users.noreply.github.com>
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: sunlit-deng <sunlit-deng@users.noreply.github.com>
* refactor(voice): dedupe talk audio primitives into OpenClawKit
One buffered TTS clip player (watchdog + metering) shared by iOS and
macOS replaces the near-identical pair; macOS TalkPlaybackResult was a
field-for-field duplicate of StreamingPlaybackResult and is gone. One
AVAudioPCMBuffer RMS helper replaces five per-file copies; the metered
PCM passthrough moves into PCMPlaybackEnvelope; TalkModeManager's
duplicated ElevenLabs PCM-then-mp3-retry blocks collapse into one
helper. Net -378 lines, no behavior change.
* fix(ios): drop stray blank line and resync i18n inventory
* fix(ios): drop stray blank line after helper extraction
* fix(discord): add timeouts to voice upload requests
* fix(discord): refine voice upload timeouts
Use the normalized REST timeout for upload negotiation and the existing attachment transfer budget for the signed audio upload. Reuse the shared loopback test harness and verify both hanging sockets close.
Thanks @Alix-007 for the original timeout fix.
Co-authored-by: llagy009 <0668001470@xydigit.com>
---------
Co-authored-by: llagy009 <0668001470@xydigit.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
* fix(anthropic): don't crash models list when a configured Sonnet 5 model has no cost
applyAnthropicSonnet5Cost read params.model.cost.input unconditionally, so
'openclaw models list' aborted with 'Cannot read properties of undefined
(reading input)' whenever config supplied an anthropic Sonnet 5 model row
without cost metadata (e.g. an agents.defaults.models runtime binding).
Guard with optional chaining — a costless model now falls through and gets
the canonical Sonnet 5 cost applied.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(models): normalize missing Sonnet 5 costs
Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
* chore(plugin-sdk): refresh API baseline
* ci(plugin-sdk): update surface budgets
---------
Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
* improve(webchat): replace picker speed buttons with a fast-mode toggle
Speed is now one bolt toggle per provider contract: OpenAI toggles the
priority tier (Standard/Fast), other fast-mode providers toggle between the
inherited default and fast; auto and explicit standard stay reachable via
/fast and render truthfully. openrouter is removed from the supported set
because it has no runtime fast-mode mapping. Also fixes a render freeze
shipped with the immediate-apply picker: the slider drag preview wrote
textContent into a Lit-managed span, ejecting its ChildPart markers and
breaking every later menu render.
* fix(webchat): keep unmapped-provider speed overrides clear-only
* fix(webchat): make the active speed toggle always write an explicit off
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.
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
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.
* 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
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