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
+272
View File
@@ -0,0 +1,272 @@
[workspace]
resolver = "2"
members = [
"allocator",
"api",
"dialogs",
"extension",
"macros",
"playtime-clip-engine",
"playtime-api",
"pot",
"pot-browser",
"csi",
"main",
"rx-util",
"swell-ui",
"base",
"artwork-processor",
# Will probably be excluded from the workspace in future
"main/lib/helgoboss-learn"
]
[workspace.dependencies]
# Own
base = { path = "base" }
pot = { path = "pot" }
pot-browser = { path = "pot-browser" }
helgobox-dialogs = { path = "dialogs" }
reaper-common-types = { git = "https://github.com/helgoboss/reaper-rs.git", branch = "master" }
reaper-rx = { git = "https://github.com/helgoboss/reaper-rs.git", branch = "master" }
reaper-fluent = { git = "https://github.com/helgoboss/reaper-rs.git", branch = "master" }
reaper-high = { git = "https://github.com/helgoboss/reaper-rs.git", branch = "master", features = ["serde"] }
reaper-medium = { git = "https://github.com/helgoboss/reaper-rs.git", branch = "master", features = ["serde"] }
reaper-low = { git = "https://github.com/helgoboss/reaper-rs.git", branch = "master" }
reaper-macros = { git = "https://github.com/helgoboss/reaper-rs.git", branch = "master" }
rppxml-parser = { git = "https://github.com/helgoboss/reaper-rs.git", branch = "master" }
swell-ui = { path = "swell-ui" }
rx-util = { path = "rx-util" }
playtime-clip-engine = { path = "playtime-clip-engine" }
helgobox-api = { path = "api" }
helgobox-macros = { path = "macros" }
helgobox-allocator = { path = "allocator" }
playtime-api = { path = "playtime-api" }
realearn-csi = { path = "csi" }
helgoboss-learn = { path = "main/lib/helgoboss-learn", features = ["reaper-low"] }
helgoboss-midi = { version = "0.4", features = ["serde", "serde_repr"] }
helgoboss-license-api = { git = "https://github.com/helgoboss/helgoboss-license-api" }
# 3rd-party
scopeguard = "1.1.0"
rxrust = { git = "https://github.com/rxRust/rxRust", rev = "349e50b3197e05926e2378ef8fc45cb67ad43b83" }
indexmap = "2.1.0"
itertools = "0.12.0"
wildmatch = "2.1.0"
serde = { version = "1.0", features = ["derive", "rc"] }
serde_json = "1.0"
serde_plain = "1.0.2"
derive_more = "0.99.16"
tokio = { version = "1", features = ["rt-multi-thread", "sync", "macros", "time"] }
enum-map = { version = "2.4.1", features = ["serde"] }
once_cell = "1.4.0"
strum = { version = "0.25.0", features = ["derive"] }
regex = "1"
walkdir = "2"
either = "1.8.0"
tracing = "0.1.40"
tracing-core = "0.1.32"
tracing-subscriber = "0.3.7"
futures = { version = "0.3", default-features = false }
derivative = "2.2.0"
tempfile = "3.1.0"
xxhash-rust = { version = "0.8.15", features = ["xxh3"] }
crossbeam-channel = "0.5"
futures-timer = "3.0.2"
metrics = "0.22.0"
ascii = "1.0"
winapi = "0.3"
bindgen = "0.69.2"
enumflags2 = "0.7.4"
nanoid = "0.4.0"
slug = "0.1.4"
num_enum = "0.7.2"
nom = "7.0.0"
semver = { version = "1.0.17", features = ["serde"] }
enumset = "1.0.12"
mlua = { version = "0.10.2", features = ["vendored", "luau", "serialize", "anyhow"] }
chrono = "0.4.11"
dirs = "5.0.1"
libloading = "0.8"
tokio-stream = { version = "0.1.8", features = ["sync"] }
raw-window-handle = "0.4.2"
egui = "0.21.0"
egui_extras = "0.21.0"
egui-toast = "0.6.0"
bytesize = "1.0.1"
hex = "0.4.2"
rmp-serde = "1.1.1"
anyhow = "1.0.71"
thiserror = "1.0.45"
enum_dispatch = "0.3.6"
simple_moving_average = "1.0.2"
tinyvec = "1.6.0"
erased-serde = "0.4.2"
fragile = "2.0.0"
approx = "0.5.1"
serde_repr = "0.1.5"
serde_with = "3.4.0"
lazycell = "1.2"
rosc = "0.10.1"
rust-ini = "0.20.0"
function_name = "0.3.0"
num = "0.4.1"
logos = "0.13.0"
camino = "1.1.7"
auto_impl = "1.1.0"
bytemuck = "1.13.1"
palette = "0.7.4"
libc = "0.2.153"
path-slash = "0.2.1"
pathdiff = "0.2.1"
open = "5.0.1"
url = "2.5.2"
atomic = "0.6.0"
static_assertions = "1.1.0"
image = { version = "0.25.2", default-features = false }
cached = "0.53.1"
imageproc = "0.25.0"
tower = "0.5.2"
axum = "0.7.9"
axum-server = "0.7.1"
tower-http = "0.6.2"
tonic = "0.12.3"
prost = "0.13.4"
rcgen = "0.12.0"
dns-lookup = "2.0.4"
hostname = "^0.3"
askama = "0.12.1"
serde_ini = "0.2.0"
webbrowser = "0.8.12"
runas = "1.1.0"
qrcode = "0.14.1"
uuid = "1.6.1"
vst = "0.4.0"
c_str_macro = "1.0.2"
arboard = "3.3.0"
smallvec = "1.7.0"
backtrace = "0.3.74"
serde_yaml = "0.8.17"
fasteval = { version = "0.2.4", default-features = false }
maplit = "1.0.2"
metrics-exporter-prometheus = { version = "0.13.0", default-features = false }
embed-resource = "2.4.1"
sysinfo = "0.30.5"
sys-info = "0.9.1"
# We use a special version because of "link_lib_modifiers", which allows us to add "+whole-archive"
# in a convenient way. TODO-low-wait https://github.com/rust-lang/cc-rs/pull/671
cc = { git = "https://github.com/petrochenkov/cc-rs.git", rev = "4d52bd211aeb2b4ddccd1b9c0a0841e03aaaef7c" }
built = "0.7.1"
tts = { git = "https://github.com/helgoboss/tts-rs", branch = "helgoboss-fixes" }
edit = { git = "https://github.com/helgoboss/edit", branch = "realearn" }
async-channel = "2.1.1"
env_logger = "0.10.1"
egui-baseview = { git = "https://github.com/helgoboss/egui-baseview.git", branch = "realearn" }
baseview = { git = "https://github.com/helgoboss/baseview.git", branch = "realearn" }
include_dir = "0.7.3"
whoami = "1.4.1"
streamdeck = "0.9.0"
ab_glyph = "0.2.29"
hidapi = "2.4"
xcap = "0.0.13"
syn = "2.0.48"
darling = "0.20.3"
heck = "0.4.0"
stylua = "0.19.1"
resvg = "0.44.0"
enigo = "0.0.14"
device_query = "1.1.1"
macos-accessibility-client = "0.0.1"
base64 = "0.21.2"
rtrb = "0.3.0"
envcrypt = "0.5.0"
glidesort = "0.1.2"
ebur128 = "0.1.8"
tracing-test = "0.2.4"
rstest = "0.18.2"
lexical-sort = "0.3.1"
splitty = "1.0.1"
riff-io = "0.1.2"
rusqlite = "0.30.0"
sanitize-filename = "0.5.0"
lru = "0.12.1"
pulldown-cmark = "0.9.2"
rfd = "0.12.1"
opener = "0.7.1"
objc2 = "0.3.0-beta.3"
reqwest = { version = "0.12.9", default-features = false }
rustls = { version = "0.23.20", default-features = false }
[profile.release]
debug = 2
[profile.release-strip]
inherits = "release"
# We use this profile on Linux and macOS only. To support Windows 7, we should build with Rust
# version 1.77.2 on Windows. This old version strips away too much due to an implementation
# error in rustc:
#
# "Prior to 1.79, this unintentionally disabled the generation of *.pdb files on MSVC, resulting
# in the absence of symbols."
# (https://doc.rust-lang.org/rustc/codegen-options/index.html#strip).
#
# Not stripping on Windows is okay because the PDB is a separate file anyway. We do the following
# mainly for macOS. There's a long reasoning about the concrete values in CONTRIBUTING.adoc.
# BTW, switching to "symbols" would reduce size even more but leads to useless stack traces when
# panicking.
strip = "debuginfo"
split-debuginfo = "packed"
[profile.dev-llvm-out-of-memory-fix]
inherits = "dev"
# Lately, i686 Windows builds often fail due to "LLVM ERROR: out of memory".
# Lowering the amount of debug information included in the binary is supposed to fix that.
debug = 1
[profile.release-llvm-out-of-memory-fix]
inherits = "release"
# Lately, i686 Windows builds often fail due to "LLVM ERROR: out of memory".
# Lowering the amount of debug information included in the binary is supposed to fix that.
debug = 1
[patch.crates-io]
# TODO-low-wait
# I absolutely need Flutter to be able to connect with ReaLearn based on a LAN IP address. Without this hack, Flutter
# will fail to connect with a TLSV1_ALERT_DECODE_ERROR. As soon as https://github.com/briansmith/webpki/issues/54 is
# closed and rustls has updated the dependency, we should remove this!
#webpki = { git = "https://github.com/helgoboss/webpki.git", branch = "workaround/54-alert-decode-error-0.22.0" }
# Yes! Thanks to the use of axum-server (instead of warp) we don't need this Hyper patch anymore! axum-server seems to
# use lower-level Hyper features and implements a proper graceful shutdown feature on it that allows one to specify a
# timeout. If not all connections are closed until that timeout, it just shuts down forcibly. That's important and
# exactly what we need. We need the server shutdown happen immediately before ReaLearn is unloaded without having to
# force the user to wait for open connections to finish. The following was a temporary hack to make this possible.
# See https://github.com/hyperium/hyper/issues/1885, https://github.com/hyperium/hyper/issues/2386.
# For a moment, I thought that I need to reintroduce this patch for gRPC, which is driven by tonic. Indeed, when using
# tonic's serve_with_shutdown() feature, REAPER doesn't quit until Playtime gRPC client has disconnected :/ But
# fortunately, using the tokio::select! workaround (mentioned in issue 2386) works and *also* closes the ports this
# time! Turns out the same is actually true for axum, so we use select! there as well.
#hyper = { git = "https://github.com/helgoboss/hyper.git", branch = "feature/realearn" }
# We need to use our on "vst" crate that contains a bunch of improvements
vst = { git = "https://github.com/helgoboss/vst-rs.git", branch = "feature/param-props" }
#vst = { path = "../vst-rs" }
# This is for temporary development with local reaper-rs.
#[patch.'https://github.com/helgoboss/reaper-rs.git']
#reaper-common-types = { path = "../reaper-rs/main/common-types" }
#reaper-fluent = { path = "../reaper-rs/main/fluent" }
#reaper-high = { path = "../reaper-rs/main/high" }
#reaper-medium = { path = "../reaper-rs/main/medium" }
#reaper-macros = { path = "../reaper-rs/main/macros" }
#reaper-low = { path = "../reaper-rs/main/low" }
#reaper-rx = { path = "../reaper-rs/main/rx" }
#rppxml-parser = { path = "../reaper-rs/main/rppxml-parser" }
## This is for temporary development with local egui-baseview.
#[patch.'https://github.com/helgoboss/egui-baseview.git']
#egui-baseview = { path = "../egui-baseview" }
#
## This is for temporary development with local baseview.
#[patch.'https://github.com/helgoboss/baseview.git']
#baseview = { path = "../baseview" }