Skip to content

v1.174.0

Latest

Choose a tag to compare

@deivid11 deivid11 released this 30 Jul 06:54

What's New

Releases the work merged in #14 and #15.

Added

  • Upload your own notification sounds — each of the three events (agent asks you something / sends a notification / finishes working) can be overridden with your own audio file from Settings → General → Sounds per event. Uploads are stored server-side (mp3, wav, ogg, m4a, aac, webm — 5 MB cap), so the same sounds apply on every device connected to that commander, not just the browser that uploaded them. Per event, not all-or-nothing: anything you don't override keeps its built-in cue, and a file that fails to play (bad codec, missing file, autoplay blocked) falls back to the synthesized cue instead of going silent.
  • Slash-command autocomplete in chat — typing / suggests the commands the commander can actually deliver (/compact, /clear, /context, /cost), gated per provider. Interactive-only commands like /model and /login are deliberately absent: agents run headless, where those silently do nothing.

Changed

  • Warmer built-in cues — the synthesized sounds were pure oscillators with exact-octave overtones, which is precisely what reads as "electronic beep". They're now synthesized as struck bars: inharmonic partials (2.005×, 3.01×, 5.43×) like a real marimba, a short filtered-noise mallet transient, per-partial decay, a gentle lowpass, and a ~10 ms attack instead of a clicky onset. Same melodies and pitch-bend, so every cue stays recognizable — only the timbre changed.

Fixed

  • Context counter drifting out of sync — a turn can bill several models (the conversation model plus short auxiliary Haiku calls), and modelUsage key order follows first use, so the first key was frequently Haiku and its 200k window got reported as the agent's: replaying 1578 real result events, 290 of 402 multi-model turns were mis-attributed. The meter now picks the model the main loop actually streamed. A prompt larger than the tracked window is no longer discarded (which collapsed the meter to 0.0k mid-conversation) but widens the stale window instead, and the terminal footer, mobile bar and flat view now share one precedence helper instead of three.
  • /compact leaving a stale context number on screen until the next message.
  • Slash commands looking like a no-op — hidden in four places, they now render as a chip in both live and reloaded-history paths, server-intercepted commands (/context, /cost, /clear) are echoed so they reach the chat, and Echo Prompt no longer mangles /compact into something the CLI won't treat as a command.
  • CSS leaking into highlighted code — a global .class-name rule collided with Prism's builtin class-name token and capitalized cd/echo in every command shown in chat; a global .tag rule hit Prism's markup token, giving HTML/JSX blocks display: inline-flex and a red hover. Both scoped to their owners.
  • Commands mislabelled as GREP — the classifier matched grep anywhere in the string, so a multi-step build gate got labelled by one late pipe stage.

Technical Details

  • New /api/custom-sounds routes (list / upload / serve / delete), storing under the app data dir alongside the existing custom-class-icons pattern
  • New slashCommands.ts catalog with per-provider gating; getDisplayContextInfo is now the single source of truth for context display
  • Quality gates: ESLint 0 warnings, TypeScript 0 errors, 1210 tests across 101 files
  • Android: versionName 1.174.0 / versionCode 1174000