All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.6.23 - 2026-07-31
- (hid) declare Win32_System_IO feature for windows-sys WriteFile (#458)
0.6.22 - 2026-07-21
- (gui) add asset source selector
- (gui) label the official asset source as OpenLogi
- (core) describe selected asset source
0.6.21 - 2026-07-19
- (hid) add native wheel resolution control
- (hid) make one-shot enumerate retry transport-agnostic so Unifying partial drains recover (#287)
- (core) add hires_wheel to the inventory equality test helper (#417)
0.6.20 - 2026-07-18
- (core) preserve hash-prefixed lighting colors
- (core,gui,agent,cli) validate the lighting color once as a typed Rgb
- (smartshift) stop runaway free-spin scroll and control snap-back (#333)
- (core) document the remaining public items and deny missing_docs
- (core) move the swipe-gesture machinery to binding/swipe.rs
- (core) persist the config through atomic-write-file
- (agent,core) resolve the LaunchAgents path via core paths
- replace assert!(matches!(…)) with std assert_matches
- (core) split config.rs into settings and device submodules
- (core) drop fs4 in favor of std File::try_lock
0.6.19 - 2026-07-04
- (windows) notification-area tray icon for the agent (#347)
- (windows) bundle and package the background agent (#347)
0.6.18 - 2026-06-29
- (hidpp) add typed reprog controls support
- Clarify MX Master 4 gesture control semantics (#325)
0.6.17 - 2026-06-24
- add Capture Region to Clipboard button action (#296)
0.6.16 - 2026-06-22
- (scroll) support per-device inversion
- (scroll) require native hidpp inversion
- (config) key settings by physical device
- (infra) use crates for paths and language matching
0.6.15 - 2026-06-21
- (scroll) per-device inverted scrolling (#126)
0.6.14 - 2026-06-15
- (hid) solid keyboard colour via 0x8070 effect (#205)
- (core) extract the OS input-injection layer into openlogi-inject (#240)
0.6.13 - 2026-06-15
- (hidpp) address review — multi-impl macro arm + 4-bit function guard
- (hidpp) fold per-feature request framing into FeatureEndpoint
- (hidpp) express the feature registry as a data macro
0.6.12 - 2026-06-13
- (gui) keep asleep devices and their panels in the device list
- (agent) persist DPI/SmartShift per device and reapply volatile settings on reconnect
0.6.11 - 2026-06-13
- (hid) replay a node's last inventory through transient probe failures (#222)
0.6.10 - 2026-06-13
- (config) add auto_download_assets app setting
- (gui) keep the diagnostics report truthful across agent restarts (#230)
0.6.9 - 2026-06-12
- (gui) add a Copy Diagnostics button to the About window (#206)
0.6.8 - 2026-06-12
- (linux) launch_at_login + input device access permission check (#172)
- add mouse button 4 and 5 options (#96)
0.6.7 - 2026-06-12
- (core) post macOS volume and media keys as NX system-defined events (#184)
- (ipc) pin the wire format with golden bytes and mark wire types
0.6.6 - 2026-06-10
- (hidpp) bound device-controlled name lengths in Bolt parsing (#200)
0.6.5 - 2026-06-10
- collapse nested ifs flagged by current stable clippy (#197)
0.6.4 - 2026-06-10
- (core) complete the macOS->Windows CustomShortcut keycode map
- (windows) native input + HID++ leaf support
- (openlogi-gui) expand UI to 19 fully-translated locales (#24)
- (gui) glow keyboard card in lighting colour (#185)
0.6.3 - 2026-06-09
- (core) unify button + gesture bindings into one Binding map
- (core) harden gesture Binding defaults, migration, and projection
0.6.2 - 2026-06-08
- (i18n) integrate Crowdin localization workflow (#174)
- switch release notes generation to Codex (#177)
- add code of conduct
0.6.1 - 2026-06-08
- (cli) diag selects a device that exposes the feature under test (#150)
0.6.0 - 2026-06-07
- (agent) tarpc IPC server backed by the orchestrator + device I/O
- (agent) define tarpc IPC service contract + serde-derive wire types
- (agent) give the agent its own single-instance lock
- Merge origin/master into feat/agent-daemon-split
0.5.3 - 2026-06-06
- (gui) prefer asset-registry kind + harden device-kind classification
- gate config panels on HID++ capabilities, not device kind
0.5.2 - 2026-06-05
- (core) LockScreen and media actions via D-Bus on Linux
- (core) expose action_device_path for evtest attachment
- (core) implement Action::execute on Linux via uinput
- enable Thumb Wheel Up/Down mapping, "Do Nothing" action, and native scroll sensitivity (#125)
- (core) fmt + clarify mpris fallback log on the Linux D-Bus code
- (core) address PR #124 review comments
- (core) drop unused REL_X/REL_Y from the action uinput device
- (core) cover Action::None in execute_linux
- (core) address PR review comments
- (core) use enumerate_dev_nodes_blocking for correct event path
- (core) address code review findings
- run clippy on Windows instead of bare cargo check (#146)
- (core) simplify D-Bus helpers and add -v flag to inject_action
- (core) simplify inject_action parsing, guard --delay
- (core) extract KEY_CAPABILITIES const, drop too_many_lines allow
- (core) note LockScreen Linux limitation and D-Bus follow-up
- (core) note Ctrl+Shift+Z vs Ctrl+Y redo shortcut choice on Linux
- (core) clarify scroll unit difference between post_horizontal_scroll and HorizontalScroll* actions
- (core) simplify Linux execute helpers and doc fixes
- (core) add vk_mapping tests and inject_action example
0.5.1 - 2026-06-05
- (assets) match devices against every model id a depot lists
- (assets) lock the index.json modelIds schema contract
0.5.0 - 2026-06-05
- add wired G-series keyboard RGB control (#29)
0.4.1 - 2026-06-03
- (gui) refine device gallery worktree changes
- (nix) wire passthru.updateScript for nix-update / autobump
- (nix) add nixpkgs package + flake; commit the prebuilt app icon
- route issue-chooser questions to GitHub Discussions
- update Telegram invite link to the new channel
- (release) disable homebrew-tap dispatch (openlogi moved to homebrew-cask) (#105)
- add GitHub issue form templates (#102)
- configure release-plz branch prefix
0.4.0 - 2026-06-02
- (i18n) add zh-TW (Traditional Chinese, Taiwan) locale (#57)
0.3.4 - 2026-06-01
- (openlogi-hidpp) vendor the hidpp 0.3 fork from lus/logy
- address /code-review findings (write timeouts, scanning fallback, asset sync, CoreBluetooth safety)
- (hidpp) up-convert short→long inside the channel for long-only BLE
0.3.3 - 2026-06-01
- (assets) match devices by displayName when no PID lookup hits
0.3.2 - 2026-06-01
- simplify format
0.3.1 - 2026-06-01
- (updater) use static R2 manifest (#43)
0.3.0 - 2026-06-01
- (openlogi-gui) add Russian localization and language select (#38)
- (gui) stabilize device tab ordering (#37)
0.2.0 - 2026-05-31
- (openlogi-hid) route HID++ writes to directly-attached devices (#5)
0.1.4 - 2026-05-31
- update workflow actions for Node 24
- (release-plz) fail loudly when a release silently stalls
0.1.3 - 2026-05-31
- macOS menu-bar (tray) app: lives in the menu bar with the interactive mouse diagram, a mappable gesture-button hotspot, and live Open / Quit
- Dynamic Dock + menu-bar presence — full window with the app menu when open, tray-only once the window is closed; optional silent start-minimized on login
- "Show in menu bar" setting to keep OpenLogi in the menu bar, or run it as an ordinary Dock app instead
- ⌘W closes the focused window
- Use the real Xcode toolchain for GUI builds and build the installer DMG correctly
0.1.2 - 2026-05-31
- Check for Updates in the About window, backed by the gpui-updater crate
- One opt-in update check on launch, with a first-run prompt to enable it
- Live download progress, and a clickable version that links to its GitHub release
0.1.1 - 2026-05-30
- (release-plz) write a single root changelog, not one per crate
- (release-plz) load CARGO_REGISTRY_TOKEN from 1Password