Skip to content

Releases: assembledev/edgepad

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 18 Jul 14:56
b6d876a

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, and replay-raw now expect the default user config unless --config or --built-in-defaults is provided.
  • Replay fixtures require a timestamp on every SYN_REPORT and SYN_DROPPED boundary. Older captures without timestamps should be regenerated or updated.

Full Changelog: v0.2.1...v0.2.2

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 11 Jul 11:01
b334b4d

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.02

The 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.service is active before running diagnostics.
  • Packaged systemd units use Type=notify and become active only after the virtual touchpad is created and the physical device is grabbed.
  • edgepad status can 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

Choose a tag to compare

@github-actions github-actions released this 10 Jul 09:14
ac96845

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

Choose a tag to compare

@github-actions github-actions released this 07 Jul 19:19
5f9310f

Highlights

  • Added edgepad status for a short daemon/config/device/zones/actions summary.
  • Improved edgepad doctor output 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

Choose a tag to compare

@github-actions github-actions released this 05 Jul 09:34
b0da562

edgepad v0.1.1

Patch release focused on first-run UX, diagnostics, and installer rollback.

Highlights

  • edgepad daemon now reads the default user config from ~/.config/edgepad/edgepad.toml when --config is not passed.
  • edgepad daemon now fails early if the config has no [[gestures]], instead of running with no useful actions.
  • edgepad doctor now 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.sh now supports --uninstall.
  • install.sh --uninstall --purge also removes ~/.config/edgepad.

Install or upgrade

curl -fsSL https://raw.githubusercontent.com/assembledev/edgepad/main/install.sh | sh

Uninstall

curl -fsSL https://raw.githubusercontent.com/assembledev/edgepad/main/install.sh | sh -s -- --uninstall

Config is kept by default. Use --purge to remove it too.

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 04 Jul 14:50

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 doctor for 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 bounded proxy.

Assets

  • edgepad-x86_64-unknown-linux-gnu
  • 70-edgepad.rules
  • edgepad.service
  • edgepad.toml.example
  • checksums