Releases: assembledev/edgepad
Release list
v0.2.2
Highlights
edgepad v0.2.2 fixes physical touchpad button handling and makes capture, replay, and live diagnostics reproduce daemon behavior more accurately.
Physical clicks and click-drag
Physical touchpad buttons are now passed through to the virtual touchpad, including the device properties and button capabilities required by libinput.
On buttonpads and clickpads, a physical button press takes priority over edge recognition. Active edge contacts are promoted to normal passthrough contacts before the button event, allowing physical clicks and click-drag to work even inside configured edge zones.
The press cancels the pending edge gesture, while slider steps already emitted are preserved. Tap-to-click remains unchanged, and touchpads with separate physical buttons retain their existing edge behavior.
Held button state is also restored after SYN_DROPPED recovery and released during output cleanup, preventing stuck virtual buttons.
Config-aware diagnostics
edgepad proxy, edgepad replay, and edgepad replay-raw now use the normal edgepad configuration by default.
This keeps device selection, active zones, edge widths, swipe thresholds, tap timing, and sliders aligned with the running daemon. Use --config <file> to select another configuration or --built-in-defaults for an isolated recognizer profile.
Diagnostic replay and proxy commands report matched gestures and slider steps but never execute configured actions.
Timestamped capture and replay
Capture files now preserve the kernel timestamp for every frame boundary. Replay uses those timestamps to apply tap_min_duration_ms in the same way as the live proxy.
Both parsed and raw replay validate timestamp ordering, which makes tap and timing-related bugs reproducible from saved captures instead of approximating their behavior.
Documentation
Installation and onboarding documentation now follows the complete setup path for release and Nix users, including verification, updates, troubleshooting, emergency shutdown, and warnings before commands that grab the physical touchpad.
Compatibility
Existing edgepad configuration files remain valid.
Diagnostic command behavior has changed:
proxy,replay, andreplay-rawnow expect the default user config unless--configor--built-in-defaultsis provided.- Replay fixtures require a timestamp on every
SYN_REPORTandSYN_DROPPEDboundary. Older captures without timestamps should be regenerated or updated.
Full Changelog: v0.2.1...v0.2.2
v0.2.1
Highlights
edgepad v0.2.1 improves multitouch recovery, makes gesture distance consistent across touchpads, and makes release installs more portable and reliable.
Multitouch recovery after dropped events
edgepad now rebuilds its active multitouch state from the kernel after SYN_DROPPED.
Contacts that were already active are restored as normal passthrough contacts until release, rather than being reclassified as new edge gestures. The virtual touchpad is also settled before resynchronization, preventing stale or ghost contacts after an input queue overrun.
Consistent gesture distance
Swipe detection now uses normalized touchpad travel instead of raw device coordinates. The same physical gesture therefore behaves consistently across touchpads with different coordinate ranges.
The threshold defaults to 2% of the corresponding axis and can be configured explicitly:
swipe_min_distance = 0.02The Home Manager module exposes the same setting as services.edgepad.swipeMinDistance.
Portable release binary
GitHub Releases now ship a statically linked x86_64-unknown-linux-musl binary. It does not depend on the host's glibc loader, so the release installer works on NixOS and other x86_64 Linux distributions without compatibility wrappers.
The release workflow verifies that the binary has no dynamic interpreter before publishing it.
Installer and service readiness
- Re-running the installer now restarts an existing daemon instead of leaving the old process running.
- The installer verifies that
edgepad.serviceis active before running diagnostics. - Packaged systemd units use
Type=notifyand become active only after the virtual touchpad is created and the physical device is grabbed. edgepad statuscan report the ready daemon's PID, version, and selected device through systemd.- CI and release builds now require the locked Cargo dependency graph.
Compatibility
Existing configuration files remain valid. The default swipe threshold is now normalized to 2% of the relevant touchpad axis.
The release asset name changed from edgepad-x86_64-unknown-linux-gnu to edgepad-x86_64-unknown-linux-musl. The installer handles this automatically; manual downloads should use the new asset name.
Full Changelog: v0.2.0...v0.2.1
v0.2.0
Highlights
edgepad v0.2.0 adds continuous edge sliders, improves action responsiveness, filters accidental taps, and fixes a multitouch passthrough bug that could leave a stale virtual contact behind.
Continuous edge sliders
Touchpad edges can now act as step-based continuous controls such as volume and brightness:
[[sliders]]
zone = "left"
step = 0.04
up = ["pamixer", "-i", "3"]
down = ["pamixer", "-d", "3"]Side zones use vertical movement; top and bottom zones use horizontal movement. A slider can share its edge with a tap gesture.
Slider configuration is also available through the Home Manager module.
Accidental tap filtering
Very short edge contacts no longer trigger tap actions by default:
tap_min_duration_ms = 80
Set the value to 0 to restore the previous behavior. Directional swipes are unaffected by the tap-duration guard.
Multitouch passthrough fix
Fixed missing ABS_MT_SLOT context when a contact transitions into passthrough output.
This could leave the virtual touchpad with a stale active contact, causing ghost-finger behavior such as unexpected scrolling after mixed edge and center touches. Regression tests now cover passthrough contacts starting and ending after switching between multitouch slots.
Action and diagnostic improvements
- Reduced action command polling latency for more responsive repeated slider actions.
- Added slider information to status and doctor.
- Added slider-step statistics to proxy and replay summaries.
- Updated the example configuration and Nix documentation.
Compatibility
Existing gesture configurations remain valid. The only default behavior change is the new 80 ms minimum duration for tap gestures.
Full Changelog: v0.1.2...v0.2.0
v0.1.2
Highlights
- Added
edgepad statusfor a short daemon/config/device/zones/actions summary. - Improved
edgepad doctoroutput readability. - Report active and passthrough gesture zones in diagnostics.
- Claim only gesture zones that have configured bindings, leaving inactive edges as passthrough.
Full Changelog: v0.1.1...v0.1.2
v0.1.1
edgepad v0.1.1
Patch release focused on first-run UX, diagnostics, and installer rollback.
Highlights
edgepad daemonnow reads the default user config from~/.config/edgepad/edgepad.tomlwhen--configis not passed.edgepad daemonnow fails early if the config has no[[gestures]], instead of running with no useful actions.edgepad doctornow validates the config file, gesture bindings, configured device, and action executables.- Recognized gestures with no matching configured action are now logged.
- Action command failures now include gesture context.
install.shnow supports--uninstall.install.sh --uninstall --purgealso removes~/.config/edgepad.
Install or upgrade
curl -fsSL https://raw.githubusercontent.com/assembledev/edgepad/main/install.sh | shUninstall
curl -fsSL https://raw.githubusercontent.com/assembledev/edgepad/main/install.sh | sh -s -- --uninstallConfig is kept by default. Use --purge to remove it too.
v0.1.0
edgepad v0.1.0
Initial release.
Highlights
- Touchpad edge gestures for left, right, top, and bottom zones.
- User-session daemon with TOML config and command actions.
- Automatic touchpad detection with explicit
device = "auto"or/dev/input/eventX. edgepad doctorfor runtime diagnostics.- Startup retry for boot-time device/uinput/logind races.
- Release installer for x86_64 Linux with udev rules and systemd user service.
- Nix package, NixOS module, and Home Manager module.
- Debug tooling:
devices,dump,replay,replay-raw, and boundedproxy.
Assets
edgepad-x86_64-unknown-linux-gnu70-edgepad.rulesedgepad.serviceedgepad.toml.examplechecksums