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
+258
View File
@@ -0,0 +1,258 @@
[package]
name = "helgobox"
version = "2.18.3-pre.1"
authors = ["Benjamin Klum <benjamin.klum@helgoboss.org>"]
edition = "2021"
build = "build.rs"
license = "GPL-3.0"
rust-version = "1.84.0"
publish = false
[features]
default = []
# Builds ReaLearn together with the Playtime Clip Engine. This should only be enabled if you have access to the
# private playtime-clip-engine repository, otherwise the build will fail.
playtime = ["dep:playtime-clip-engine"]
# Activates license checks for Playtime Clip Engine. If not enabled, license checks will always fail.
licensing = ["playtime", "playtime-clip-engine/licensing"]
# Enables a bunch of features that need the egui user interface framework to work.
egui = ["dep:baseview", "dep:egui-baseview", "dep:egui", "dep:egui_extras", "pot-browser"]
# Regenerate bindings (for dialog resource IDs and EEL functions)
generate = []
[dependencies]
# Own
base.workspace = true
reaper-rx.workspace = true
reaper-high = { workspace = true, features = ["sentry"] }
reaper-medium.workspace = true
reaper-common-types = { workspace = true, features = ["color-macros", "palette"] }
reaper-low.workspace = true
reaper-macros.workspace = true
swell-ui.workspace = true
rx-util.workspace = true
pot.workspace = true
helgobox-api.workspace = true
# For obtaining dialog constants from dialog crate
helgobox-dialogs.workspace = true
# In future (when helgoboss-learn has matured), this will become a crates.io dependency
helgoboss-learn.workspace = true
helgoboss-midi.workspace = true
helgoboss-license-api.workspace = true
playtime-api.workspace = true
playtime-clip-engine = { workspace = true, optional = true }
# 3rd-party
# For easier error handling
anyhow.workspace = true
# For being able to (de)serialize using FromStr and Display
serde_with.workspace = true
# For panicking when accessing something from the wrong thread
fragile.workspace = true
# For acting as DAW plug-in
vst.workspace = true
rxrust.workspace = true
serde.workspace = true
serde_json.workspace = true
serde_repr.workspace = true
derive_more.workspace = true
num_enum.workspace = true
crossbeam-channel.workspace = true
scopeguard.workspace = true
uuid = { workspace = true, features = ["v4", "serde"] }
# New logging (for Playtime matrix)
tracing.workspace = true
tracing-core.workspace = true
tracing-subscriber = { workspace = true, features = ["env-filter"] }
# For interacting with the OS clipboard
arboard.workspace = true
once_cell.workspace = true
# For being able to exclude fields from the derived Debug implementation
derivative.workspace = true
chrono.workspace = true
smallvec.workspace = true
regex.workspace = true
enum-map.workspace = true
# For generating controller file names from controller names
slug.workspace = true
# For generating random session IDs
nanoid.workspace = true
# For ReaLearn's servers
futures.workspace = true
tokio.workspace = true
tokio-stream.workspace = true
tower.workspace = true
# For ReaLearn's http server (used for projection)
axum = { workspace = true, features = ["ws"] }
# Use "tls-rustls-no-provider" instead of "tls-rustls" because we want to use "ring" for
# cryptography instead of "aws-lc-rs" (because the latter causes build issues on Windows)
axum-server = { workspace = true, features = ["tls-rustls-no-provider"] }
rustls = { workspace = true, features = ["ring"] }
tower-http = { workspace = true, features = ["cors"] }
# For ReaLearn's gRPC server
tonic.workspace = true
prost.workspace = true
# For generating projection QR code
qrcode.workspace = true
# For rendering projection QR code to PNG
image = { workspace = true, features = ["png"] }
# For generating self-signed certificate for projection web server
rcgen.workspace = true
# For showing different ways of connecting to this computer (projection feature)
dns-lookup.workspace = true
hostname.workspace = true
# For rendering projection setup HTML page template
askama.workspace = true
# For persisting app configuration
serde_ini.workspace = true
# For opening projection setup page and companion app in local browser
webbrowser.workspace = true
# For writing generated projection setup page to disk
tempfile.workspace = true
# For adding firewall rules
runas.workspace = true
# For building URls, e.g. companion web app URL
url.workspace = true
# For grouping mappings by virtual control elements and grouping outgoing OSC messages by device
itertools.workspace = true
# For being able to configure logging via environment variable RUST_LOG
env_logger.workspace = true
# To open user guide in local PDF app
open.workspace = true
# For comparing ReaLearn versions in order to determine if preset migration is necessary
semver.workspace = true
# Maybe better asynchronous channel than in futures or tokio (basically the async version of crossbeam)
async-channel.workspace = true
# For displaying snapshot sizes
bytesize.workspace = true
# For OSC
rosc.workspace = true
# For letting the user edit advanced mapping settings
edit.workspace = true
# For parsing/formatting advanced mapping settings
serde_yaml.workspace = true
# For parsing hexadecimal data notation to byte vector (for system-exclusive lifecycle MIDI messages)
hex.workspace = true
# For evaluation of <Dynamic> formulas
fasteval = { workspace = true, default-features = false }
# For wildcard support when using "By name" selector
wildmatch.workspace = true
# For creating HashSet literals for projection feedback and in unit tests
maplit.workspace = true
# For easier support of named virtual control elements
ascii.workspace = true
# For using bit flags in the reaper-rs API.
enumflags2.workspace = true
# For detecting undesired (de)allocation in real-time threads.
helgobox-allocator.workspace = true
# For being able to cleanly implement targets in separate files without needing to resort to dynamic dispatch.
enum_dispatch.workspace = true
# For processing mappings in user-defined order
indexmap = { workspace = true }
# For comparing floating point numbers in tests
approx.workspace = true
# For the API (ReaLearn Script) and MIDI scripts
mlua.workspace = true
# For convenient converting prop key to prop enum variant
strum.workspace = true
metrics.workspace = true
metrics-exporter-prometheus = { workspace = true, default-features = false }
# For parsing OSC argument value ranges
nom.workspace = true
# For being able to return iterators of different types
either.workspace = true
# For reading preset directories recursively
walkdir.workspace = true
# For egui graphics
egui-baseview = { workspace = true, optional = true }
baseview = { workspace = true, optional = true }
egui = { workspace = true, optional = true }
egui_extras = { workspace = true, optional = true }
# Pot Browser
pot-browser = { workspace = true, optional = true }
# For decompressing App
zstd = "0.13.0"
tar = "0.4.40"
# For loading App
libloading.workspace = true
# For embedding factory presets into the binary
include_dir.workspace = true
# For prefixing preset IDs with the user name
whoami.workspace = true
# For passing MIDI device inquiry replies from audio thread to main thread
tinyvec.workspace = true
# For not having to deal with non-UTF8 paths if we are sure we don't have them
camino.workspace = true
# For not having to manually implement Lua module finder trait for smart pointers
auto_impl.workspace = true
# For some color in the otherwise boring GUI
palette.workspace = true
# For parsing/formatting enum-like target values from/to a stable and ID-like representation
serde_plain.workspace = true
# For sharing variables between main thread and real-time threads
atomic.workspace = true
# For making sure that sharing global audio state uses atomics
static_assertions.workspace = true
# For Stream Deck support
streamdeck.workspace = true
# For Stream Deck support
ab_glyph.workspace = true
# For Stream Deck support
hidapi.workspace = true
# For caching button images for Stream Deck
cached.workspace = true
# For drawing knobs for Stream Deck button
imageproc.workspace = true
# For relativizing paths for Stream Deck button images
pathdiff.workspace = true
# For fetching Helgobox remote config.
# Important to not use default features because we want to avoid the libssl dependency on Linux.
reqwest = { workspace = true, default-features = false, features = ["rustls-tls-no-provider"] }
# For MIDI clock processing
simple_moving_average.workspace = true
[target.'cfg(any(target_os = "windows", target_os = "macos"))'.dependencies]
# For speech source
tts.workspace = true
[target.'cfg(windows)'.dependencies]
# For detecting the Windows version (to determine whether special characters can be displayed)
sys-info.workspace = true
# For converting virtual umlaut/special keys into character codes (keyboard source)
winapi = { workspace = true, features = ["winuser"] }
[target.'cfg(target_os = "macos")'.dependencies]
# For taking screenshots for docs
xcap.workspace = true
# For taking screenshots for docs
dirs.workspace = true
[build-dependencies]
# For making Git commit hash available to code
built = { workspace = true, features = ["git2", "chrono"] }
# For generating bindings (for dialog resource IDs and EEL functions)
bindgen.workspace = true
# For compiling EEL and SWELL dialog resources
cc.workspace = true
# For embedding dialog resource files on Windows
embed-resource.workspace = true
# For RC dialog file generation
helgobox-dialogs.workspace = true
[dev-dependencies]
# For the EEL memory consumption test
sysinfo.workspace = true
[lib]
name = "helgobox"
crate-type = ["cdylib"]
[lints.clippy]
# TODO-high-refactoring Activate at some point. For now it's just too much to handle.
#enum_glob_use = "deny"