Skip to content

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 30 Jun 12:54
· 94 commits to main since this release

Bug Fixes

πŸ–ŠοΈ Light-touch trackpad drawing (ABS_MT_TRACKING_ID)

The engine now tracks ABS_MT_TRACKING_ID (finger-on-surface) instead of requiring BTN_TOUCH (physical click). This means you can draw on your laptop's trackpad with a light touch β€” no click needed. Many modern trackpads only emit ABS_MT_TRACKING_ID for surface contact and reserve BTN_TOUCH for physical clicks.

⌨️ Ctrl+Space IME switch no longer conflicts

Removed the hardcoded Super+space capture. IBus trigger keys are user-configurable via ibus-setup / dconf, so the engine no longer intercepts them. Previously, pressing Ctrl+Space (or the configured IBus trigger) would be eaten by the engine instead of switching the input method.

πŸ”Œ udev ATTRS parent-chain walk

The udev rule now walks the parent device chain to match ATTRS{name}, improving compatibility with trackpads where the name property lives on a parent device node (e.g. I2C-hid buses).

Packaging

πŸ“¦ Debian / Ubuntu (.deb)

  • python3-venv dependency added
  • Post-install (postinst): automatically downloads the PP-OCRv6 ONNX model and character dictionary, creates a Python virtual environment with onnxruntime, and installs a wrapper script as the engine binary
  • Model path: IBUS_HANDWRITE_PPOCR_MODEL env var supports tiny, small (default), medium

πŸ“¦ Fedora / openSUSE (.rpm)

  • Fully rewritten %post section β€” same logic as debian postinst: model download, venv creation, wrapper script
  • Engine binary installed to /usr/local/share/ibus-handwrite-chinese/ (not /usr/local/bin/)
  • Wrapper at /usr/local/bin/ibus-engine-handwrite-chinese routes through the venv for onnxruntime
  • Dependencies synced with debian control (removed python3-venv from RPM Requires β€” it's part of python3-libs on RPM distros)

πŸš€ Cross-distro bootstrap (bootstrap.sh)

  • python3-venv added to detect-deps
  • openSUSE zypper install retry with --no-gpg-checks for transient repo timeouts
  • Removed duplicate model download (now handled by postinst / install.sh)

CI/CD

βœ… CI (ci.yml)

All 21 jobs pass across 5 distros:

  • Fixed openSUSE Tumbleweed zypper refresh timeout (cdn.opensuse.org unreachable)
  • Fixed Fedora fedora-cisco-openh264 repo timeout β€” --disablerepo=fedora-cisco-openh264 added
  • Fixed cascading artifact name empty β€” if: always() on Set artifact name step
  • 10 GTK writing test containers all green

βœ… Release (release.yml)

16 jobs, all green:

  • .deb build + verify: fixed missing python3-venv in verify step
  • .rpm build + verify: fixed engine path, postinst logic, Fedora openh264 repo
  • Test packages across all 10 distro containers pass
  • Upload release assets: successful

Maintenance

  • Build script tools/build-test-usb-iso.sh for creating a Linux Mint 22 live USB with ibus-handwrite-chinese pre-installed (not in this release, development use)
  • README updated with new install paths, requirements, troubleshooting

Assets

  • .deb β€” Debian 11+, Ubuntu 22.04+, Linux Mint 21+
  • .rpm β€” Fedora 40+, openSUSE Tumbleweed
  • .tar.gz β€” source tarball (PKGBUILD reference in packaging/)
  • All packages auto-download PP-OCRv6 model on install