You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Reasoning display: models that expose their chain-of-thought — DeepSeek-R1,
Qwen3, and Ollama "thinking" models over the OpenAI-compatible endpoint (via reasoning_content) — now stream it into a collapsible Reasoning block above
the answer. It's shown separately from the reply and is not spoken as the final
answer.
Anthropic extended thinking, as a per-provider toggle ("Extended thinking
(reasoning)" in the provider settings dialog, Anthropic only). When on, the
request asks for adaptive thinking — the model reasons more on hard tasks, less
on easy ones — and streams that reasoning into the same collapsible Reasoning
block as above. The thinking blocks are stored and replayed verbatim (with their
signatures) so multi-step tool-use conversations keep their reasoning continuity;
toggling thinking back off cleanly drops them from the ongoing conversation.
Requires a model that supports adaptive thinking (Claude Opus 4.8 / 4.7 / 4.6,
Sonnet 4.6+); older models reject it.
Lower per-request token usage (helps free-tier keys, which meter tokens/minute
and re-charge the whole tool list + prompt every agentic turn):
Trimmed the tool descriptions and system prompt (deduped boilerplate now
stated once) — ~12% off the static overhead, no behaviour change.
Media eviction: past screenshots/audio/video-clip frames were re-uploaded
every later turn; now only the most recent captures stay live (older ones
become a placeholder). Tunable via RAAI_MEDIA_KEEP (default 2).
Prompt caching on the Anthropic path (cache_control on the tools+system
prefix): repeated turns re-read it as a rate-limit-free cache read. RAAI_PROMPT_CACHE=off to disable.
Progressive tool disclosure (opt-in RAAI_PROGRESSIVE_TOOLS=on): only a
core set + a load_tools(query) loader are sent; the model pulls in the rest
by capability on demand (session-persisted, with keyword pre-loading). Cuts the
tool payload ~70–90% for the turn — aimed at free tiers like Gemini.
Video-clip vision (capture_video_clip): instead of a single screenshot of
REAPER's Video window, the assistant can grab several frames across a time
range (stepping the edit cursor, playback stopped) and — for audio-capable
models — the clip's audio, so it can reason about motion, cuts, transitions,
on-screen text timing, and A/V sync. One consent covers the whole clip. Range
defaults to the time selection; frame count defaults to 6 (2–12). The
seek-to-frame settle delay is tunable via RAAI_VIDEO_SETTLE_MS (default 250 ms)
if a heavy video-FX chain needs longer to re-render.
Per-provider "Supports audio (listening)" checkbox in the provider settings
dialog, next to "Supports images". Audio input was previously auto-detected from
the model id only, so a locally-run multimodal model (e.g. Google Gemma
3n/4 via Ollama or LM Studio) had no way to enable listening; now you can toggle
it explicitly. Gemma is also recognized as vision-capable by default. (Whether a
given local server accepts audio input is up to the server/model.)
Prompt presets: save reusable prompts and drop them into the chat composer
instead of retyping. Manage them (add / edit / delete) from Extensions →
ReaLackey → "Prompt presets…"; in the chat window the Presets button (or Alt+P) opens a picker that inserts the chosen prompt into the composer so
you can tweak it before sending. Stored globally in presets.json, next to providers.json.
Chat message navigation + copy: Alt+1 … Alt+0 (and the key right of 0) jump
to that message and move focus to it (the screen reader reads it); a quick second
press of the same combo copies that message — your request or the model's
response — to the clipboard.
Action & keyboard-shortcut tools: search_actions (find actions by name), get_action_info (an action's name, toggle state, and bound shortcuts), run_action (run any action by id or named command — a catch-all for anything
without a dedicated tool), delete_action_shortcut, and add_action_shortcut
(opens REAPER's key-assignment dialog, since the API can't bind a key directly).
Time-selection tools: get_time_selection, set_time_selection (with an
optional seek to move the edit cursor to the start), and clear_time_selection; the time selection is also reported by get_transport.
The assistant can now mark a range and then analyse, render, or measure it (the
analysis/render tools default to the time selection).
Fixed
The assistant no longer finishes silently when the model returns an empty
response (no answer and no tool call). Previously the status just went to
"Ready." with nothing shown — which reads as a crash — most visibly with local
models (Ollama) that don't reliably do tool use. It now says the response was
empty and hints at likely causes.
macOS: the release .dylib is now a universal binary (Apple Silicon + Intel).
It previously shipped arm64-only, so it silently failed to load in REAPER on
Intel Macs or under Rosetta.
macOS: the release is now Developer-ID-signed and Apple-notarized (when the
repo's signing secrets are configured — see docs/macos-notarization.md), so
it loads without the manual quarantine step. Without the secrets it falls back
to an ad-hoc signature (users then run xattr -dr com.apple.quarantine).
macOS: keyboard handling in the chat window. Keys typed in the composer could be
swallowed by REAPER — arrow keys jumping focus to the arrange, and Cmd+C/V/X not
reaching the text field (they hit REAPER's Edit menu). When the window is in
front, its keystrokes are now handed to the webview's native editing
(copy/paste/cut/select-all, arrow keys, typing) instead of REAPER's global
shortcuts/menu.