Vendor helgoboss/helgobox (ReaLearn) as basis for custom UI fork

Stripped upstream git history; starting point for replacing the native
SWELL/Win32 mapping UI with something more suited to bulk editing.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Paul Lipscomb
2026-07-15 17:38:29 -04:00
parent 583ed77a67
commit e58f06d9fa
2232 changed files with 685575 additions and 1 deletions
+3
View File
@@ -0,0 +1,3 @@
liberapay: helgoboss
custom:
- "https://paypal.me/helgoboss"
@@ -0,0 +1,31 @@
---
name: Bug report
about: Use this if something doesn't work
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. macOS]
- Version [e.g. Ventura 13.6.7]
**Additional context**
Add any other context about the problem here.
@@ -0,0 +1,11 @@
blank_issues_enabled: false
contact_links:
- name: Question
url: https://github.com/helgoboss/helgobox/discussions/categories/q-a
about: "GitHub Discussions: Ask or answer a question"
- name: Idea
url: https://github.com/helgoboss/helgobox/discussions/categories/ideas?discussions_q=category%3AIdeas+is%3Aopen+sort%3Adate_created+
about: "GitHub Discussions: Request a new feature or suggest an improvement (please watch out for existing issues first and vote for them)"
- name: General feedback
url: https://github.com/helgoboss/helgobox/discussions/categories/general
about: "GitHub Discussions: Give general feedback"
+50
View File
@@ -0,0 +1,50 @@
name: Build
description: Build and optionally Rust code
inputs:
args:
description: 'Cargo arguments'
required: false
default: ''
targets:
description: 'Additional Rust targets'
required: false
default: ''
test:
description: 'Test?'
required: false
default: 'true'
runs:
using: "composite"
steps:
- name: Install Rust
uses: dtolnay/rust-toolchain@1.84.0
with:
targets: ${{ inputs.targets }}
- name: Set up dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install nasm php libudev-dev libxdo-dev libx11-dev libxcursor-dev libxcb-dri2-0-dev libxcb-icccm4-dev libx11-xcb-dev mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev libspeechd-dev libgtk-3-dev
shell: sh
- name: Set up dependencies
run: brew install php
if: runner.os == 'macOS'
shell: sh
- name: Rust cache
uses: swatinem/rust-cache@v2
- name: cargo build
env:
ARGS: ${{ inputs.args }}
run: cargo build $ARGS
shell: sh
- name: cargo test
if: ${{ inputs.test == 'true' }}
env:
RUST_MIN_STACK: 5242880
ARGS: ${{ inputs.args }}
run: cargo test $ARGS -- --nocapture
shell: sh
+30
View File
@@ -0,0 +1,30 @@
name: Check
description: Check Rust code via Clippy
inputs:
args:
description: 'Cargo arguments'
required: false
default: ''
runs:
using: "composite"
steps:
- name: Install Rust
uses: dtolnay/rust-toolchain@1.84.0
with:
components: clippy
- name: Set up dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install nasm php libudev-dev libxdo-dev libx11-dev libxcursor-dev libxcb-dri2-0-dev libxcb-icccm4-dev libx11-xcb-dev mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev libspeechd-dev libgtk-3-dev
shell: sh
- name: Rust cache
uses: swatinem/rust-cache@v2
- name: cargo clippy
env:
ARGS: ${{ inputs.args }}
run: cargo clippy $ARGS -- -D warnings
shell: sh
+16
View File
@@ -0,0 +1,16 @@
name: fmt
description: Format Rust code via rustfmt
runs:
using: "composite"
steps:
- name: Install Rust
uses: dtolnay/rust-toolchain@1.84.0
with:
components: rustfmt
- name: Rust cache
uses: swatinem/rust-cache@v2
- name: cargo fmt
run: cargo fmt --all -- --check
shell: sh
@@ -0,0 +1,24 @@
name: Post-checkout
description: Checkout with Playtime Engine
inputs:
playtime-engine-deploy-key:
description: 'Playtime Engine deploy key'
required: true
license-processor-deploy-key:
description: 'License Processor deploy key'
required: true
runs:
using: "composite"
steps:
# Checkout with Playtime Engine
- name: Setup ssh-agent
uses: webfactory/ssh-agent@v0.7.0
with:
ssh-private-key: |
${{ inputs.playtime-engine-deploy-key }}
${{ inputs.license-processor-deploy-key }}
- name: Update submodules
run: |
git submodule update --init
shell: sh
@@ -0,0 +1,42 @@
on:
push:
branches:
- master
pull_request:
branches:
- master
workflow_dispatch:
# For quickly detecting important differences in runner configurations
schedule:
- cron: '0 5 * * MON'
name: Linux aarch64
jobs:
check:
name: Check
runs-on: ubuntu-22.04-arm
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/post-checkout
with:
playtime-engine-deploy-key: ${{ secrets.PRIVATE_PLAYTIME_CLIP_ENGINE_DEPLOY_KEY }}
license-processor-deploy-key: ${{ secrets.PRIVATE_HELGOBOSS_LICENSE_PROCESSOR_DEPLOY_KEY }}
- uses: ./.github/actions/check
with:
args: '--features playtime'
test:
name: Test
runs-on: ubuntu-22.04-arm
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/post-checkout
with:
playtime-engine-deploy-key: ${{ secrets.PRIVATE_PLAYTIME_CLIP_ENGINE_DEPLOY_KEY }}
license-processor-deploy-key: ${{ secrets.PRIVATE_HELGOBOSS_LICENSE_PROCESSOR_DEPLOY_KEY }}
- uses: ./.github/actions/build
with:
args: '--features playtime'
@@ -0,0 +1,54 @@
on:
push:
branches:
- master
pull_request:
branches:
- master
workflow_dispatch:
# For quickly detecting important differences in runner configurations
schedule:
- cron: '0 5 * * MON'
name: Linux x86_64
jobs:
check:
name: Check
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/post-checkout
with:
playtime-engine-deploy-key: ${{ secrets.PRIVATE_PLAYTIME_CLIP_ENGINE_DEPLOY_KEY }}
license-processor-deploy-key: ${{ secrets.PRIVATE_HELGOBOSS_LICENSE_PROCESSOR_DEPLOY_KEY }}
- uses: ./.github/actions/check
with:
args: '--features playtime'
test:
name: Test
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/post-checkout
with:
playtime-engine-deploy-key: ${{ secrets.PRIVATE_PLAYTIME_CLIP_ENGINE_DEPLOY_KEY }}
license-processor-deploy-key: ${{ secrets.PRIVATE_HELGOBOSS_LICENSE_PROCESSOR_DEPLOY_KEY }}
- uses: ./.github/actions/build
with:
args: '--features playtime'
fmt:
name: Rustfmt
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/post-checkout
with:
playtime-engine-deploy-key: ${{ secrets.PRIVATE_PLAYTIME_CLIP_ENGINE_DEPLOY_KEY }}
license-processor-deploy-key: ${{ secrets.PRIVATE_HELGOBOSS_LICENSE_PROCESSOR_DEPLOY_KEY }}
- uses: ./.github/actions/fmt
@@ -0,0 +1,31 @@
on:
push:
branches:
- master
pull_request:
branches:
- master
workflow_dispatch:
# For quickly detecting important differences in runner configurations
schedule:
- cron: '0 5 * * MON'
name: macOS aarch64
jobs:
test:
name: Build
runs-on: macos-14
env:
# The first aarch64 target
MACOSX_DEPLOYMENT_TARGET: 11.0
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/post-checkout
with:
playtime-engine-deploy-key: ${{ secrets.PRIVATE_PLAYTIME_CLIP_ENGINE_DEPLOY_KEY }}
license-processor-deploy-key: ${{ secrets.PRIVATE_HELGOBOSS_LICENSE_PROCESSOR_DEPLOY_KEY }}
- uses: ./.github/actions/build
with:
args: '--features playtime,egui'
@@ -0,0 +1,30 @@
on:
push:
branches:
- master
pull_request:
branches:
- master
workflow_dispatch:
# For quickly detecting important differences in runner configurations
schedule:
- cron: '0 5 * * MON'
name: macOS x86_64
jobs:
check:
name: Check
runs-on: macos-14
env:
MACOSX_DEPLOYMENT_TARGET: 10.9
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/post-checkout
with:
playtime-engine-deploy-key: ${{ secrets.PRIVATE_PLAYTIME_CLIP_ENGINE_DEPLOY_KEY }}
license-processor-deploy-key: ${{ secrets.PRIVATE_HELGOBOSS_LICENSE_PROCESSOR_DEPLOY_KEY }}
- uses: ./.github/actions/build
with:
args: '--features playtime,egui'
+193
View File
@@ -0,0 +1,193 @@
on:
create:
ref_type: tag
ref: 'v*'
workflow_dispatch:
name: Create release
jobs:
build-release-artifacts:
name: Build artifact
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- artifact: windows-x86_64
os: windows-2022
lib_file_name: helgobox.dll
extension_file_name: reaper_helgobox.dll
target: x86_64-pc-windows-msvc
profile: release
features: "playtime,egui,licensing"
macosx_deployment_target: ""
lib_file_name_dst: helgobox-windows-x86_64.dll
extension_file_name_dst: reaper_helgobox-windows-x86_64.dll
- artifact: windows-i686
os: windows-2022
lib_file_name: helgobox.dll
extension_file_name: reaper_helgobox.dll
target: i686-pc-windows-msvc
profile: release-llvm-out-of-memory-fix
features: "egui"
lib_file_name_dst: helgobox-windows-i686.dll
extension_file_name_dst: reaper_helgobox-windows-i686.dll
- artifact: macos-x86_64
os: macos-14
lib_file_name: libhelgobox.dylib
extension_file_name: libreaper_helgobox.dylib
target: x86_64-apple-darwin
profile: release-strip
features: "playtime,egui,licensing"
# The minimum version that I tested with is 10.13.
# Writing 10.7 builds, but it won't run, for example, on 10.14 (weird)!
# https://github.com/helgoboss/helgobox/issues/1384
macosx_deployment_target: "10.9"
lib_file_name_dst: helgobox-macos-x86_64.vst.dylib
extension_file_name_dst: reaper_helgobox-macos-x86_64.dylib
- artifact: macos-aarch64
os: macos-14
lib_file_name: libhelgobox.dylib
extension_file_name: libreaper_helgobox.dylib
target: aarch64-apple-darwin
profile: release-strip
features: "playtime,egui,licensing"
# First aarch64 macOS version
macosx_deployment_target: "11.0"
lib_file_name_dst: helgobox-macos-aarch64.vst.dylib
extension_file_name_dst: reaper_helgobox-macos-aarch64.dylib
- artifact: linux-x86_64
os: ubuntu-22.04
lib_file_name: libhelgobox.so
extension_file_name: libreaper_helgobox.so
target: x86_64-unknown-linux-gnu
profile: release-strip
features: "playtime,licensing"
macosx_deployment_target: ""
lib_file_name_dst: helgobox-linux-x86_64.so
extension_file_name_dst: reaper_helgobox-linux-x86_64.so
- artifact: linux-aarch64
os: ubuntu-22.04-arm
lib_file_name: libhelgobox.so
extension_file_name: libreaper_helgobox.so
target: aarch64-unknown-linux-gnu
profile: release-strip
features: "playtime,licensing"
macosx_deployment_target: ""
lib_file_name_dst: helgobox-linux-aarch64.so
extension_file_name_dst: reaper_helgobox-linux-aarch64.so
env:
MACOSX_DEPLOYMENT_TARGET: ${{ matrix.macosx_deployment_target }}
steps:
# Prepare (all)
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/post-checkout
with:
playtime-engine-deploy-key: ${{ secrets.PRIVATE_PLAYTIME_CLIP_ENGINE_DEPLOY_KEY }}
license-processor-deploy-key: ${{ secrets.PRIVATE_HELGOBOSS_LICENSE_PROCESSOR_DEPLOY_KEY }}
- name: Install Rust
uses: dtolnay/rust-toolchain@1.84.0
with:
target: ${{ matrix.target }}
- name: Rust cache
uses: swatinem/rust-cache@v2
# Install OS dependencies (Linux/macOS only)
- name: Set up dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install nasm php libudev-dev libxdo-dev libx11-dev libxcursor-dev libxcb-dri2-0-dev libxcb-icccm4-dev libx11-xcb-dev mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev libspeechd-dev libgtk-3-dev
shell: sh
- name: Set up dependencies
run: brew install php
if: runner.os == 'macOS'
shell: sh
# Build (all)
- name: Build release
shell: sh
env:
PLAYTIME_AUTHENTICITY_SIGNING_KEY: "${{ secrets.PLAYTIME_AUTHENTICITY_SIGNING_KEY }}"
PLAYTIME_LICENSE_VERIFYING_KEY: "${{ secrets.PLAYTIME_LICENSE_VERIFYING_KEY }}"
PLAYTIME_PRESET_VERIFYING_KEY: "${{ secrets.PLAYTIME_PRESET_VERIFYING_KEY }}"
AWS_LC_SYS_CMAKE_BUILDER: "1"
run: cargo build --features "${{ matrix.features }}" --profile ${{ matrix.profile }} --target ${{ matrix.target }}
# Upload to artifact
- name: Upload plug-in and extension to artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact }}
path: |
target/${{ matrix.target }}/${{ matrix.profile }}/${{ matrix.lib_file_name }}
target/${{ matrix.target }}/${{ matrix.profile }}/${{ matrix.extension_file_name }}
target/${{ matrix.target }}/${{ matrix.profile }}/helgobox.pdb
target/${{ matrix.target }}/${{ matrix.profile }}/deps/libhelgobox.dylib.dSYM/
target/${{ matrix.target }}/${{ matrix.profile }}/libhelgobox-debug.so
# Windows x64: Upload PDB to Sentry
- name: Upload PDB
if: startsWith(matrix.artifact, 'windows-x86_64')
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
shell: powershell
run: |
# Install Sentry CLI
npm install -g @sentry/cli
# Upload
sentry-cli debug-files upload --auth-token $env:SENTRY_AUTH_TOKEN -o $env:SENTRY_ORG -p $env:SENTRY_PROJECT "target/${{ matrix.target }}/${{ matrix.profile }}/helgobox.pdb"
- name: Check if release exists
id: check_release
shell: bash
env:
GITHUB_TOKEN: ${{ github.TOKEN }}
run: |
if gh release view ${{ github.ref_name }} &> /dev/null; then
echo "RELEASE_EXISTS=true" >> "$GITHUB_OUTPUT"
else
echo "RELEASE_EXISTS=false" >> "$GITHUB_OUTPUT"
fi
- name: Create release
if: steps.check_release.outputs.RELEASE_EXISTS != 'true'
shell: bash
env:
GITHUB_TOKEN: ${{ github.TOKEN }}
run: |
gh release create ${{ github.ref_name }} --draft --prerelease --verify-tag
- name: Download artifacts from build job
uses: actions/download-artifact@v4
- name: Upload lib file
shell: bash
env:
GITHUB_TOKEN: ${{ github.TOKEN }}
run: |
mv "target/${{ matrix.target }}/${{ matrix.profile }}/${{ matrix.lib_file_name }}" "${{ matrix.lib_file_name_dst }}"
gh release upload ${{ github.ref_name }} --clobber "${{ matrix.lib_file_name_dst }}"
- name: Upload extension file
shell: bash
env:
GITHUB_TOKEN: ${{ github.TOKEN }}
run: |
mv "target/${{ matrix.target }}/${{ matrix.profile }}/${{ matrix.extension_file_name }}" "${{ matrix.extension_file_name_dst }}"
gh release upload ${{ github.ref_name }} --clobber "${{ matrix.extension_file_name_dst }}"
@@ -0,0 +1,31 @@
on:
push:
branches:
- master
pull_request:
branches:
- master
workflow_dispatch:
# For quickly detecting important differences in runner configurations
schedule:
- cron: '0 5 * * MON'
name: Windows i686
jobs:
test:
name: Build
runs-on: windows-2022
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/post-checkout
with:
playtime-engine-deploy-key: ${{ secrets.PRIVATE_PLAYTIME_CLIP_ENGINE_DEPLOY_KEY }}
license-processor-deploy-key: ${{ secrets.PRIVATE_HELGOBOSS_LICENSE_PROCESSOR_DEPLOY_KEY }}
- uses: ./.github/actions/build
with:
# Prevent "LLVM ERROR: out of memory"
args: '--features egui --profile dev-llvm-out-of-memory-fix --target i686-pc-windows-msvc'
targets: 'i686-pc-windows-msvc'
test: 'false'
@@ -0,0 +1,28 @@
on:
push:
branches:
- master
pull_request:
branches:
- master
workflow_dispatch:
# For quickly detecting important differences in runner configurations
schedule:
- cron: '0 5 * * MON'
name: Windows x86_64
jobs:
test:
name: Test
runs-on: windows-2022
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/post-checkout
with:
playtime-engine-deploy-key: ${{ secrets.PRIVATE_PLAYTIME_CLIP_ENGINE_DEPLOY_KEY }}
license-processor-deploy-key: ${{ secrets.PRIVATE_HELGOBOSS_LICENSE_PROCESSOR_DEPLOY_KEY }}
- uses: ./.github/actions/build
with:
args: '--features playtime,egui'