Releases: Timtam/ReaLackey
Releases · Timtam/ReaLackey
Release list
ReaLackey v0.3.1
Fixed
- The Gemini provider preset now defaults to
gemini-3.5-flash. The previous
default,gemini-2.0-flash, has been retired by Google, so adding a Gemini
provider seeded a model that no longer exists.gemini-3.5-flashis the current
latest stable Flash model (multimodal, free-tier accessible). You can still pick
another model with Fetch models… — e.g.gemini-2.5-flashor
gemini-2.5-flash-litefor higher free-tier throughput. - OpenAI-compatible providers: newer OpenAI models (GPT-5, the o-series)
no longer fail withUnsupported parameter: 'max_tokens'. Those models require
max_completion_tokensinstead ofmax_tokens; the adapter now sends the right
field forapi.openai.com, and for any other endpoint that needs it, it retries
once transparently and remembers the choice for the rest of the session. Servers
that only understandmax_tokens(Ollama, LM Studio, DeepSeek, Groq, …) are
unaffected.
ReaLackey v0.3.0
Added
- 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 viaRAAI_MEDIA_KEEP(default 2). - Prompt caching on the Anthropic path (
cache_controlon the tools+system
prefix): repeated turns re-read it as a rate-limit-free cache read.
RAAI_PROMPT_CACHE=offto disable. - Progressive tool disclosure (opt-in
RAAI_PROGRESSIVE_TOOLS=on): only a
core set + aload_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.
- Trimmed the tool descriptions and system prompt (deduped boilerplate now
- 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 viaRAAI_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 inpresets.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, andadd_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
optionalseekto move the edit cursor to the start), and
clear_time_selection; the time selection is also reported byget_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
.dylibis 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 — seedocs/macos-notarization.md), so
it loads without the manual quarantine step. Without the secrets it falls back
to an ad-hoc signature (users then runxattr -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.
ReaLackey v0.2.0
Added
- Item-edge trimming (
set_item_edge): move an item's left or right edge to an
absolute time in one undo block — the left edge shifts the take's source offset
so the audio content stays put. - Over-time audio analysis (
analyze_audio_timeline): a level envelope, silent
regions, transient onsets, and single-frequency tracking across a passage —
a time-series, not just one aggregate number. - Video production support:
capture_viewcan now snapshot REAPER's Video window
(the processed frame, with video FX applied) so the assistant can see it; the
Video processor's parameters and presets already work via the FX tools, and new
get_fx_config/get_track_state_chunk/set_track_state_chunktools reach
its EEL code and other advanced RPP-level edits. - Multiple API keys per provider, with automatic failover. A provider can hold an
ordered list of keys (add / delete / move up / move down in the settings dialog);
the top key is used and, on a quota or auth error, the assistant switches to the
next key — announced in the chat pane and via the screen reader — until it finds
one that works or all are exhausted. Useful when you have several keys for the
same provider (e.g. Gemini's free tier).
Removed
- The standalone "Set Anthropic API key" entry in the Extensions → ReaLackey
menu. API keys are now managed entirely in the Providers dialog (per provider,
as a key list), so the separate action was redundant.
Fixed
- macOS: the assistant windows never opened. "Open window" and "Providers"
in the Extensions menu did nothing (focus just returned to REAPER). The SWELL
dialog-resource tables generated fromassistant.rcweren't compiled into the
extension, so the native dialogs couldn't be created; they now are.
ReaLackey v0.1.0
Added
- Native REAPER extension with an AI assistant: a modeless chat window — an
embedded HTML pane (WebView2 on Windows, WKWebView on macOS) with a native
edit-control fallback on Linux — and an Extensions → ReaLackey menu. - ~100 tools spanning tracks/FX (incl. input & monitoring FX chains and preset
load), MIDI, sends/receives, automation envelopes (track, FX-parameter and
send/receive), markers/regions, tempo map, stretch markers, render settings,
item/take/track properties, grouping, copy/move/delete, and transport. - Multi-provider support: Claude (native) plus any OpenAI-compatible endpoint —
OpenAI, Gemini, Groq, OpenRouter, DeepSeek, xAI, Ollama, LM Studio, or custom —
managed from a Providers dialog with model fetching and per-provider settings. - Vision: capture and reason about custom plugin GUIs, and (opt-in) operate them
with synthetic clicks/drags/typing when a control has no automatable parameter. - Audio: pure-Rust DSP analysis (LUFS/LRA/true-peak, peak/RMS, clipping, spectral
profile) of raw or processed post-FX audio, plus listening to a rendered clip
on audio-capable models. - Accessibility: OSARA announcements, screen-reader-aware prompting, keyboard
flow,role="status"status line, and consent gates for any cloud upload. - Per-project memory and notes stored in the
.rpp. - Portable config under REAPER's resource path; API keys in the OS credential
store.