Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 30 Jun 20:02
· 73 commits to main since this release

Added

  • app2clap (Windows only) — install and update support for jcsteh's
    app2clap, a CLAP plug-in that captures audio from other applications into
    REAPER (or any CLAP host). RABBIT tracks the rolling GitHub snapshots
    release, picks the highest-versioned build, and installs app2clap.clap
    into the per-user CLAP folder (%LOCALAPPDATA%\Programs\Common\CLAP), so no
    administrator rights are needed. It appears under the new Additional
    software
    group. Updates replace the existing copy (backing up the old one
    first); a copy installed for a different REAPER target or by hand is detected
    by file presence, with the version reported as unknown until RABBIT installs
    it itself. Like Surge XT, it's disabled on portable REAPER targets — the CLAP
    folder lives outside any portable REAPER folder.
  • French (fr-FR) UI translation. RABBIT now ships with English, German, and
    French out of the box; the language picker lists Français (France) and the
    OS-language auto-detection on first launch covers French locales (including
    regional variants such as fr-CA, which map to fr-FR).
  • Italian (it-IT) UI translation. The language picker now lists Italiano
    (Italia), it ships in the macOS app bundle, and OS-language auto-detection on
    first launch covers Italian locales (any it-*, which map to it-IT).
  • The wizard's primary action is now the window's default button, so pressing
    Enter activates it from anywhere in the page (Next on the navigation steps,
    Install on the review step) instead of only when a button already holds
    focus. This matches the standard dialog convention on both macOS and Windows.
    A disabled default button stays a no-op, so an invalid Target step or a
    review step that can't install yet won't advance.

Changed

  • The wizard's package list now groups packages into an Additional
    software
    section, separate from the main Packages list, for extras
    that aren't part of REAPER itself. Surge XT moves into this new group
    (and future additional software like app2clap will land there too). Each
    group has its own check-all header and aggregate state; the main Packages
    group is unaffected. The new group is localized in all four UI languages
    and only appears when at least one additional package is available for the
    selected target.
  • REAPER updates no longer leave an unwanted desktop icon on Windows.
    REAPER's silent installer always (re)creates a desktop shortcut, with no
    switch to suppress it, so updating a REAPER whose icon you'd deleted put it
    back. RABBIT now snapshots the desktop shortcuts before running the
    installer and, once the install is confirmed, removes a REAPER shortcut the
    installer freshly created — unless this is a brand-new standard install (the
    one case a new icon is wanted) or an icon was already there (never touched).
    Portable installs already create no shortcut, so this is a no-op for them.
    Windows only; checks both the per-user and the all-users desktop, and only
    removes a REAPER*.lnk that appeared during the install.
  • A single unreachable upstream no longer blocks the entire update check.
    Previously, when one latest-version provider failed (e.g. the SWS homepage
    being down), the wizard stopped on the version-check page and the CLI's
    latest / plan --online commands aborted — even though every other
    package could still be checked and updated. Now the check always completes
    with whatever providers answered: in the wizard, each failed package's row
    is disabled (unchecked, with a localized "online version check failed"
    indicator) and a note with the full error appears in the review summary,
    while all other packages keep their normal install/update flow. On the
    CLI, latest prints resolved versions to stdout and per-package warnings
    to stderr, and plan --online records each failure as a plan note. The
    latest --json output shape changed accordingly: it is now an object with
    packages and failures arrays instead of a bare array.

Fixed

  • A blocked plugin overwrite on macOS now explains how to fix it instead of
    showing a bare "OS error 1". That error is EPERM ("operation not
    permitted") and is not REAPER being open (that would be a different error
    — RABBIT already handles it), so closing REAPER doesn't help; it's a macOS
    permission/modification gate (App Management on Sonoma and later, an
    immutable file flag, or ownership). When replacing an installed extension
    such as reaper_kontrol.dylib fails with EPERM/EACCES, RABBIT now reports
    that it's a permission block and points the user to grant RABBIT Full Disk
    Access (or App Management) under System Settings → Privacy & Security, then
    quit and relaunch — rather than leaving them with an opaque error.
    Additionally, a new macOS preflight check catches this before downloading
    and installing: it rehearses the write into the UserPlugins folder
    (creating and deleting a probe file, and renaming each already-installed
    reaper_* plugin aside and back — non-destructively, the files are left
    exactly as they were) and fails up front with the same guidance if the OS
    denies it. macOS only; other failures and platforms are unchanged.
  • The "close REAPER before installing" preflight no longer fails open when
    REAPER's process is running but its executable path can't be read. On
    Windows that happens routinely — most often when REAPER is running elevated
    while RABBIT is not (the OS denies the image-path query), or under some
    antivirus — and RABBIT would detect the reaper.exe process by name but,
    unable to match its (unknown) path to the install target, silently treat it
    as a different REAPER and let the installer overwrite a running one. The
    check is now fail-safe: a running REAPER whose path we can't read is treated
    as the target and blocks the install (or warns, with the override on), so
    the user is told to close REAPER instead of getting a corrupted update. A
    REAPER with a readable, non-matching path is still correctly ignored.
  • Setup no longer fails with "stream did not contain valid UTF-8" when
    reapack.ini isn't UTF-8-encoded. ReaPack writes its config through the
    Win32 profile-string APIs, which use the active ANSI code page (or UTF-16
    when the file carries a BOM), so a repository name with a single non-ASCII
    character — e.g. a CP-1252 curly apostrophe — made RABBIT's strict UTF-8
    read error out and abort the run's post-install configuration step, right
    after all packages had installed successfully. RABBIT now decodes such
    files losslessly (UTF-8, UTF-16 LE/BE with BOM, or byte-preserving ANSI),
    edits them, and writes them back in their original encoding, so existing
    bytes survive untouched and ReaPack still parses the file. The same
    encoding-tolerant handling now covers reaper-kb.ini during OSARA key-map
    replacement, whose script names can carry ANSI bytes too. Reported in
    issue #7.