❌

Lees weergave

v0.8.15

What's Changed

  • feat(device): hold Back or Forward to scroll sideways with the main wheel (0x1b04 raw wheel) by @AprilNEA in #1828
  • test(gui): draw dialogs at rest before clicking their buttons by @AprilNEA in #1832
  • feat(desktop): offer hold-to-scroll-sideways for Back and Forward by @AprilNEA in #1835
  • feat(device): smooth a mouse's main wheel by diverting it (0x2121) by @AprilNEA in #1837
  • feat(desktop): add a per-device smooth wheel switch to the Scrolling card by @AprilNEA in #1839
  • feat(device): reach Litra lights over HID++ 0x1990 with read-back by @AprilNEA in #1841
  • fix(gui): show the Actions Ring tab for keyboards with a Keys panel by @4ni1ak in #1844
  • fix(gui): retain observed connection icons for offline devices by @i0ntempest in #1830
  • fix(cli): drop a paired device with no identity from fixture capture by @4ni1ak in #1861
  • fix(gui): recognize the MX Ergo precision-mode button slot by @4ni1ak in #1855
  • fix(agent): log thumb-wheel continuous-scroll dispatch by @4ni1ak in #1852
  • fix(i18n): translate the hold-modifiers and tap-key actions in Czech by @Imbecile6197 in #1850
  • feat(gui): add a Next / Previous Desktop thumb-wheel preset by @Rothschildiuk in #1848
  • fix(agent): write a light only when a reload changes its settings by @AprilNEA in #1865
  • feat(agent): keep a change made on a Litra as its setting and publish it by @AprilNEA in #1866
  • feat(gui): add device default option for keyboard bindings by @clifinger in #702
  • fix(linux): report input access as denied when the event node is unreadable by @AalmanSadath in #787
  • fix(gui): embed the Sleep action's moon glyph by @AalmanSadath in #790
  • feat(gui): add a Reset to defaults button to the F-key binding panel by @4ni1ak in #1255
  • fix(gui): enlarge About panel logo by @4ni1ak in #1364
  • fix(hid): open HID++ channels concurrently, not one node at a time by @4ni1ak in #1443
  • feat(gui): add Power User actions to the Action Ring editor by @4ni1ak in #1445
  • fix(inject): give the Windows Screenshot action its own Win+PrtScn chord by @AprilNEA in #1867
  • fix(linux): keep "pen" out of the uinput device names by @AprilNEA in #1868
  • fix(linux): grab a mouse again after it reconnects or appears late by @AprilNEA in #1869
  • feat(desktop): save a change made on a Litra as its setting by @AprilNEA in #1870
  • fix(hook): fall back to a recent device attribution on macOS by @andybateman in #805
  • fix(hid): suppress duplicate Bolt pairing slots by @xcouturecc in #963
  • fix(gui): allow clearing function-key bindings by @xcouturecc in #962
  • feat(gui): show the receiver slot on each device card by @garysassano in #1802
  • fix(gui): fold leftover receiver pairings into one device card by @garysassano in #1801
  • fix(hid): capture the M720 Triathlon's multiplatform gesture button by @kurtlieber in #1613
  • fix(i18n): route hardcoded GUI labels through the catalog by @eibidia in #1331
  • fix(macos): preserve fractional wheel distance by @li-shch in #1154
  • feat(linux): route window-manager native actions through KWin D-Bus on KDE by @werwolf2303 in #1087
  • feat(linux): support Hyprland native remaps by @shawnyeager in #1152
  • fix(agent): include MiddleClick in the macOS HID++ gesture ownership by @tims2002 in #1380
  • test(inject): cover the macOS Lock Screen chord by @AprilNEA in #1885
  • feat(overlay): show keyboard backlight level by @nathan-fontenele in #1695
  • ci(macos): lint the macOS cfg with clippy by @AprilNEA in #1883
  • chore: drop stale lint suppressions and reject module-wide #![allow] by @AprilNEA in #1884
  • feat(core,gui): allow middle click gesture mode by @PedroDiogo in #1738
  • feat(hidpp): add scrolling force control for smartshift enhanced mice by @pedrohgmacedo in #1636
  • fix(core,agent): chain swipes within one gesture-button hold by @sarat03 in #1652
  • feat(linux): ship a Flatpak bundle with each release by @AalmanSadath in #767
  • ci: sweep stale #[allow] on Linux, Windows, and macOS weekly by @AprilNEA in #1887
  • feat(overlay): show a notice when a device's battery runs low by @AprilNEA in #1891
  • feat(overlay): show an indicator when a keyboard turns a lock key on or off by @AprilNEA in #1898
  • fix(device): drop a lock-state read that answers after a reconnection by @AprilNEA in #1899
  • fix(overlay): draw one Actions Ring per display on Wayland by @AprilNEA in #1906
  • feat(core,gui): share per-app profiles across platforms with [apps] aliases by @AprilNEA in #1907
  • chore: release v0.8.15 by @AprilNEA[bot] in #1831

New Contributors

Full Changelog: v0.8.14...v0.8.15

  •  

v0.8.14

What's Changed

  • fix(gui): prefer the Buttons panel over Keys when kind resolution is wrong by @4ni1ak in #1702
  • docs(readme): add Spanish translation by @eibidia in #1314
  • fix(gui): let the theme card name shrink so the badge fits by @4ni1ak in #1435
  • fix(hook): carry the mouse's vendor/product ID onto its uinput mirror by @4ni1ak in #1453
  • fix(cli): let macOS prompt for Input Monitoring before diag opens a device by @4ni1ak in #1256
  • fix(gui): draw the client-side titlebar only where the compositor declines one by @4ni1ak in #945
  • fix(inject): distinguish Linux Capture Region from Screenshot by @4ni1ak in #1433
  • fix(hook): preserve low-res wheel events during Linux pass-through by @nathan-fontenele in #1693
  • fix(i18n): use Spain's Spanish terms in the es catalog by @eibidia in #1326
  • docs(i18n): add Portuguese README translation by @obrenoalvim in #1371
  • fix(windows): enable HID++ side-button gestures by @c1m-Chenym in #1635
  • fix(agent): emit scroll input queued across a smoothing toggle instead of dropping it by @isleofgreg in #1721
  • fix(agent): honor an overflow cancel from a generation the scroll worker has not seen by @isleofgreg in #1720
  • feat(device): Detect Logitech G735 headset dongle by @xvilo in #1040
  • fix(i18n): translate the custom-action input error in Czech by @Imbecile6197 in #1728
  • fix(overlay): set the macOS activation policy before gpui_platform starts by @4ni1ak in #1692
  • fix(hid): capture alternate gesture controls by @4dux in #1561
  • feat(camera): expose pan, tilt, gain and backlight compensation by @yuzi-co in #1020
  • feat(gui): add precise camera control entry by @vinayaksodar in #1047
  • fix(device): omit raw-xy flags when diverting or restoring keyboard controls by @henius98 in #1726
  • fix(inject): send hi-res wheel events for Linux scroll actions (by @RisenID) by @Fede2782 in #1719
  • fix(assets): resolve variants for depots whose manifests key on depot name or stem by @felipecadal in #1295
  • fix(gui): render camera depots that ship no hotspot metadata by @MattijsE in #1265
  • fix(inject): give App Expose/Mission Control/Show Desktop/Launchpad a GNOME implementation by @4ni1ak in #1446
  • fix(gui): open the config folder from the fail-closed config screen by @yuzi-co in #942
  • fix(gui): give MenuRow-based list rows an accessible name by @4ni1ak in #1448
  • fix(camera): collapse a Brio's IR node into one Linux camera entry by @4ni1ak in #1234
  • docs: add Turkish README translation by @4ni1ak in #1734
  • feat(hook): reverse the wheel in software for devices without 0x2121 by @4ni1ak in #847
  • feat(gui): add custom-shortcut Tap/Hold recorder to the button picker by @fahadjibransheikh in #1396
  • fix(agent): reapply volatile settings on device reconnection and retry disagreeing DPI writes by @isleofgreg in #1270
  • fix(overlay): properly position and scale Actions Ring on Windows mixed-DPI displays by @c1m-Chenym in #1745
  • fix(camera): pass the pan/tilt payload by value by @SMRehan in #1740
  • feat(core): add an action that holds modifiers and taps the key once by @Rick0525 in #1161
  • feat(gui): update macOS through Sparkle by @AprilNEA in #1744
  • docs(ipc): move PROTOCOL_VERSION once per release by @AprilNEA in #1760
  • fix(hidpp): write 0x1990 non-linear level tables whole by @AprilNEA in #1765
  • fix(hidpp): read the 0x4530 platform with function 0 by @AprilNEA in #1766
  • fix(hidpp): write each 0x0007 name chunk at its own offset by @AprilNEA in #1767
  • fix(hidpp): preserve device state OpenLogi does not own on writes by @AprilNEA in #1753
  • fix(device): encode 0x8080 tail frames and 0x8070 fixed colour per device by @AprilNEA in #1758
  • fix(device): write SmartShift torque and DPI only as the device advertises by @AprilNEA in #1759
  • fix(device): give the Litra Beam its own brightness range by @AprilNEA in #1763
  • fix(device): stop misreading 0x1000 and 0x1001 battery states by @AprilNEA in #1768
  • fix(device): stop committing 0x8080 frames the keyboard rejected by @AprilNEA in #1764
  • fix(device): own RGB software control for the agent session by @AprilNEA in #1769
  • fix(hidpp): require the 0x8081 zone echo before reporting a write by @AprilNEA in #1771
  • fix(hidpp): refuse short 0x1990 info and level replies by @AprilNEA in #1772
  • fix(device): confirm the haptic repair from the device's reply by @AprilNEA in #1773
  • fix(device): confirm SmartShift writes from the device's reply by @AprilNEA in #1775
  • fix(agent-core): close the RGB release races left by #1769 by @AprilNEA in #1770
  • fix(hidpp): require the sensor echo in DPI replies by @AprilNEA in #1776
  • fix(device): end a thumb-wheel roll whose Stop never arrives by @AprilNEA in #1777
  • docs(hidpp): say that a None remap keeps the current mapping by @AprilNEA in #1778
  • fix(hidpp): hold 0x8060 and 0x8061 rates to what the features define by @AprilNEA in #1779
  • fix(hidpp): decode every 0x2121 capability flag and the horizontal delta by @AprilNEA in #1780
  • fix(hidpp): decode 0x1c00 empty actions and status, and 0x4531 OS bits by @AprilNEA in #1781
  • fix(hidpp): keep 0x0003 firmware entity types without a name by @AprilNEA in #1783
  • fix(hidpp): refuse a short 0x40A3 reply instead of zero-filling it by @AprilNEA in #1782
  • fix(hidpp): treat a Bolt protocol byte in 0x41 as an encrypted link by @AprilNEA in #1784
  • fix(device): reconcile inventory on 0x1000/0x1001 battery broadcasts by @AprilNEA in #1787
  • fix(device): wait for the Unifying lock to open before searching by @AprilNEA in #1785
  • fix(device): report no percentage for a 0x1004 battery without a gauge by @AprilNEA in #1788
  • fix(hidpp): check the echoed index in 0x8070/0x8071 info and 0x0007 name reads by @AprilNEA in #1789
  • fix(hidpp): read a non-BCD 0x0003 firmware version as binary by @AprilNEA in #1790
  • fix(device): re-read settings the device changes itself by @AprilNEA in #1791
  • fix(device): drive Fn-lock on keyboards that only have 0x40a0 by @AprilNEA in #1792
  • fix(device): play only the haptic waveforms the device advertises by @AprilNEA in #1796
  • feat(camera): name webcams that report no USB product string by @DonovanMontoya in #1793
  • chore(deps): bump rustls to 0.23.46 by @AprilNEA in #1805
  • feat(device): keep multi-platform keyboards on the host OS layout by @AprilNEA in #1806
  • feat(device): adjust the report rate of mice with 0x8060 or 0x8061 by @AprilNEA in #1808
  • feat(device): set keyboard backlight automatic brightness, level and battery saving by @AprilNEA in #1811
  • feat(desktop): control the keyboard backlight from the Device tab by @AprilNEA in #1812
  • fix(device): refuse haptic plays while 0x19b0 reports a non-zero status by @AprilNEA in #1817
  • fix(linux): settle the uinput action device before its first emit by @4ni1ak in #1810
  • fix(device): don't let a stuck Empty host-slot status refuse a real pairing by @4ni1ak in #1813
  • fix(agent): divert a keyboard key explicitly bound to Action::None by @4ni1ak in #1819
  • fix(device): discard the stale first raw-XY report of every gesture hold by @DonovanMontoya in #1786
  • fix(scroll): post phaseless continuous scroll events on macOS by @isleofgreg in #1157
  • fix(gui): gate debug diagnostics imports in release builds by @gitsacha in #1815
  • fix(agent): anchor the recovery-scan timer to scan start, not scan end by @4ni1ak in #1809
  • fix(agent): queue HID requests before response timeout by @sh3ll3x3c in #936
  • fix(linux): open the Actions Ring at the cursor on Wayland by @AalmanSadath in #1004
  • fix(agent): hand off capture across receiver routes by @justinechang39 in #1198
  • Horizontal Scroll Reversed #1120 by @romanr in #1140
  • feat(device): read Easy-Switch host names and OS, and rename hosts (0x1815) by @AprilNEA in #1824
  • fix(overlay): configure accessory policy after GPUI initialization by @gitsacha in #1814
  • fix(hook): keep software scroll inversion applied when the agent intercepts the wheel by @4ni1ak in #1749
  • feat(desktop): show Easy-Switch hosts on the Device tab and rename them by @AprilNEA in #1825
  • fix(hook): keep the pixel delta when inverting a macOS wheel event by @AprilNEA in #1827
  • chore: release v0.8.14 by @AprilNEA[bot] in #1718

New Contributors

Full Changelog: v0.8.13...v0.8.14

  •  

v0.8.13

What's Changed

  • fix(linux): add a Spanish comment to the desktop entry by @eibidia in #1468
  • fix(agent): let a thumb-wheel swipe fire Volume Up/Down more than once by @4ni1ak in #1455
  • feat(hid): recognise Powerplay receiver 046d:c53a by @FelipeIzui in #1267
  • feat(hid): add G733 battery and power-state support by @d-tatianin in #1601
  • fix(i18n): improve Turkish catalog wording by @volkanncicek in #1415
  • docs(core): clarify persisted device identifier scope by @yuzi-co in #670
  • fix(macos): respect the selected Apple developer directory by @4ni1ak in #1457
  • fix(gui): restore the config-error folder action by @4ni1ak in #1458
  • fix(core): resolve connection transport from live routes by @4ni1ak in #1367
  • feat(gui): add custom actions to the mouse picker by @4ni1ak in #1452
  • fix(gui): show friendly names for Windows app profiles by @4ni1ak in #1463
  • feat(hidpp): implement pointer motion scaling by @Chernicharo in #1347
  • fix(inject): restore macos 27 space swipes by @4ni1ak in #1703
  • fix(hook): identify unbundled macos applications by @4ni1ak in #1469
  • chore: release v0.8.13 by @AprilNEA[bot] in #1716

New Contributors

Full Changelog: v0.8.12...v0.8.13

  •  

v0.8.12

What's Changed

  • test(agent): cover a BLE mouse that wakes as a new node by @kohjunhao in #1649
  • fix(gui): seed the DPI editor from config while the live read is pending by @4ni1ak in #1628
  • fix(hid): recognize Lightspeed receiver 046d:c541 by @hamfield-eu in #1679
  • fix(gui): truncate the function-row key callout's name instead of overflowing by @4ni1ak in #1691
  • fix(gui): wrap the device-enabled caption so the switch stays in the card by @Imbecile6197 in #1670
  • feat(fixture): add an MX Ergo Unifying fixture by @Chernicharo in #1374
  • fix(gui): set text color on mouse pairing passkey click icons by @ZOZiBoi in #1640
  • fix(hidpp): tell another protocol's reports apart from malformed HID++ by @Chernicharo in #1373
  • fix(macos): log the candidate displays when Space state has no match by @4ni1ak in #1694
  • fix(agent): phase horizontal thumb-wheel scroll when smoothing is off by @nredd in #1689
  • feat(i18n): add Czech locale by @Imbecile6197 in #1669
  • fix(core): write config through symlinks instead of replacing them by @FunJim in #1642
  • fix(hook): keep the short budget for tap teardown after a probe break by @TheMedpreneur in #1600
  • fix(i18n): name the real update-check host in the consent dialog by @4ni1ak in #1629
  • fix(agent): restore ring toggle and publish expired sessions by @isleofgreg in #1665
  • fix(gui): scale configuration labels with interface text by @4ni1ak in #1627
  • fix(agent): fall back to focus when the pointer target is unidentified by @kohjunhao in #1648
  • fix(gui): anchor scrollbar overlays in action ring editor and app picker by @lynicis in #1360
  • fix(i18n): track the locale catalogs as build inputs by @zmingxie in #1327
  • fix(gui): wrap the About page's link row instead of clipping it by @crnst8 in #885
  • fix(cli): replace the stale receiver note with a Linux udev hint by @Chernicharo in #1348
  • fix(gui): show wheel controls without adjustable dpi by @minatoaquaMK2 in #1369
  • fix(gui): recognize MX Ergo's DPI slot name for the mouse diagram by @armandodollia in #1391
  • fix(macos): write the scroll point delta last so pixel precision survives by @isleofgreg in #1156
  • chore: release v0.8.12 by @AprilNEA[bot] in #1646

New Contributors

Full Changelog: v0.8.11...v0.8.12

  •  

v0.8.11

What's Changed

  • fix(macos): press Back and Forward as the frontmost app's menu item by @AprilNEA in #1622
  • chore(nix): update flake.lock by @AprilNEA[bot] in #1217
  • fix(agent): recognize an overlay tenant by any image we ever shipped by @AprilNEA in #871
  • feat(linux): add verified release installer by @AprilNEA in #1109
  • ci(nix): only run Nix CI on flake and packaging changes by @davidbudnick in #1250
  • fix(macos): confirm desktop switches with private space APIs by @AprilNEA in #1586
  • fix(macos): drive the device-I/O gate from powerd instead of workspace notifications by @AprilNEA in #1323
  • fix(core): match Actions Ring layouts with the per-app selector by @AprilNEA in #643
  • chore: release v0.8.11 by @AprilNEA[bot] in #1637
  • fix: clear the lints rustc 1.99 raises on untouched code by @AprilNEA in #1638
  • chore: release v0.8.11 by @AprilNEA in #1643
  • chore: release v0.8.11 by @AprilNEA in #1644

Full Changelog: v0.8.10...v0.8.11

  •  

v0.8.10

What's Changed

  • feat(keyboard): key controls by HID++ control ID, fix Keys tab and Fn-lock by @AprilNEA in #1604
  • fix(macos): keep the hook from hearing the keys OpenLogi posts by @AprilNEA in #1618
  • fix(gui): unpair a forgotten receiver device so it stays deleted by @AprilNEA in #1617
  • fix(macos): press shortcut keys where the active layout types them by @guslipkin in #948
  • feat(core): add a Super modifier and make Win/Meta name it by @sungyongcho in #1387
  • fix(agent): re-arm a crash respawn instead of going dormant by @AprilNEA in #1619
  • fix(hook): give the macOS tap's capability probes their own watchdog budget by @hyspacex in #1282
  • fix(hook): give the callback watchdog the same watched-time rule by @AprilNEA in #1624
  • chore: release v0.8.10 by @AprilNEA[bot] in #1616

New Contributors

Full Changelog: v0.8.9...v0.8.10

  •  

v0.8.9

What's Changed

  • fix(gui): swap the thumb-wheel volume preset labels onto the pairing they describe by @4ni1ak in #1436
  • fix(hook): stop the GNOME frontmost observer leaking a socket per renewal by @sungyongcho in #1418
  • fix(gui): rebuild the agent's launchd registration when its job is gone by @raphaeljostan in #1303
  • fix(hook): hit-test the window under the pointer through AppKit by @pseudoseed in #1568
  • chore: release v0.8.9 by @AprilNEA[bot] in #1599

New Contributors

Full Changelog: v0.8.8...v0.8.9

  •  

v0.8.8

What's Changed

  • feat(hid): recognise Nano receiver 046d:c534 (MK270, MK295) by @4ni1ak in #1456
  • fix(agent): divert a single-bound gesture button by @pseudoseed in #1569
  • fix(gui): restore per-app profile removal and add reset controls by @AprilNEA in #1580
  • fix(gui): prefer firmware codename over catalog name for M650 variants by @4ni1ak in #1366
  • refactor(gui): simplify variant name correction ownership by @AprilNEA in #1585
  • chore: release v0.8.8 by @AprilNEA[bot] in #1573

New Contributors

Full Changelog: v0.8.7...v0.8.8

  •  

v0.8.6

What's Changed

  • refactor(gui): split app_icon around an AppIconExt trait by @AprilNEA in #1422
  • fix(gui): hold a config reload until the agent connects by @AprilNEA in #1416
  • refactor(ipc): own the client handshake once and guard it with ast-grep by @AprilNEA in #1424
  • refactor(core): name the process roles, host profiles, and environment knobs once by @AprilNEA in #1426
  • refactor(ipc,cli): bound the handshake once and give the CLI one agent door by @AprilNEA in #1427
  • refactor(core): build every worker runtime in one place by @AprilNEA in #1428
  • refactor(core): spell the app bundle's layout once by @AprilNEA in #1429
  • docs(infra): add openlogi workflow skills by @AprilNEA in #1409
  • docs(infra): refine agent guidance and diagnostic workflows by @AprilNEA in #1485
  • refactor(cli): give the command modules that carry code a file of their own by @AprilNEA in #1494
  • refactor(hidpp): split the pending-request queue and the mock channel out of channel.rs by @AprilNEA in #1495
  • refactor(hook): split the macOS backend by responsibility by @AprilNEA in #1496
  • refactor(hook): split the Linux backend into the evdev hook and the foreground watcher by @AprilNEA in #1497
  • chore: drop an unused dependency, a dead parameter, and stale docs by @AprilNEA in #1487
  • refactor(gui): let state mutators own their events and views share one relevance filter by @AprilNEA in #1505
  • refactor(gui): give write-on-release sliders one component by @AprilNEA in #1506
  • refactor(ipc): own the observe loop's connection state in one Observer by @AprilNEA in #1507
  • perf(gui): resolve each device's assets once per asset generation by @AprilNEA in #1508
  • refactor(gui): say what the state types are by @AprilNEA in #1509
  • refactor(core): give the key vocabulary one owner by @AprilNEA in #1488
  • refactor(core): give seven copied decisions one owner each by @AprilNEA in #1489
  • refactor(xtask): spell xtask's waits and its bundle builder in the workspace's vocabulary by @AprilNEA in #1490
  • ci(windows): run the tests on Windows by @AprilNEA in #1491
  • refactor(device): drop the capture paths nothing calls and type the session errors by @AprilNEA in #1500
  • refactor(core): split the config module by concern by @AprilNEA in #1511
  • refactor(device): split the inventory and probe modules by responsibility by @AprilNEA in #1512
  • refactor(device): call durations that bound a wait timeouts by @AprilNEA in #1513
  • refactor(device): run gesture and keyboard capture through one session skeleton by @AprilNEA in #1501
  • refactor(device): share one pending-restore token between capture and host switch by @AprilNEA in #1502
  • refactor(agent): run the capture watchers on one harness and name the device-access handles by @AprilNEA in #1503
  • refactor: say what eight identifiers are by @AprilNEA in #1517
  • refactor(camera): suffix the macOS backends like the other platforms' by @AprilNEA in #1518
  • refactor(gui): move the F-key geometry into function_row/key_points.rs by @AprilNEA in #1525
  • refactor(agent): move the device list and re-apply plan into orchestrator/devices.rs by @AprilNEA in #1526
  • refactor(gui): split the AppState tests by what they exercise by @AprilNEA in #1527
  • refactor(inject): run scripts and workflows once, over four platform hooks by @AprilNEA in #1529
  • refactor(core): split the config tests by what they exercise by @AprilNEA in #1530
  • refactor(device): split the inventory and gesture capture tests by what they exercise by @AprilNEA in #1531
  • refactor(agent): split the orchestrator tests by what they exercise by @AprilNEA in #1532
  • refactor(hidpp): split the channel tests by what they exercise by @AprilNEA in #1533
  • refactor(device): move the host-switch session's tests to host_switch/tests.rs by @AprilNEA in #1535
  • refactor(agent): move the button runtime's worker loop into button/worker.rs by @AprilNEA in #1536
  • refactor(inject): break the macOS injector into scroll, browser and SPI modules by @AprilNEA in #1537
  • refactor(gui): move the mouse view's binding labels and tests out of view.rs by @AprilNEA in #1538
  • refactor(gui): move the camera panel's row builders into controls/rows.rs by @AprilNEA in #1539
  • feat(gui): detect and display installation sources by @AprilNEA in #1515
  • docs(gui): mend the desktop crate's intra-doc links by @AprilNEA in #1541
  • chore: release v0.8.6 by @AprilNEA[bot] in #1481

Full Changelog: v0.8.5...v0.8.6

  •  

v0.8.5

What's Changed

  • fix(gui): resolve depot metadata named only by the manifest by @4ni1ak in #836
  • docs(gui): adopt upstream gpui kit skills by @AprilNEA in #1400
  • fix(linux): keep the generated systemd unit out of the user's tier by @AalmanSadath in #796
  • fix(hidpp): stop HID++ replies landing on the wrong request by @isleofgreg in #1286
  • feat(gui): enable supported button gestures by @juan-apa in #1167
  • fix(gui): restore stacked card layout under gpui-kit 0.6 by @AprilNEA in #1408
  • chore: release v0.8.5 by @AprilNEA[bot] in #1399

Full Changelog: v0.8.4...v0.8.5

  •  

v0.8.4

What's Changed

  • feat(i18n): migrate catalogs to semantic TOML keys by @AprilNEA in #1169
  • perf(i18n): avoid copying borrowed translations by @AprilNEA in #1184
  • fix(i18n): polish supported locale copy by @AprilNEA in #1180
  • fix(i18n): localize DPI steps and correct count labels by @AprilNEA in #1292
  • fix(i18n): polish Brazilian Portuguese profile and settings copy by @uricholiveira in #1276
  • fix(i18n): refine French asset and control descriptions by @didlawowo in #1278
  • fix(hid): keep pairing phase after device selection by @AprilNEA in #1181
  • refactor(gui): model camera preview lifecycle states by @AprilNEA in #1182
  • refactor(agent): consolidate capture manager slots by @AprilNEA in #1183
  • docs(linux): fix the Debian install command and the bug form's platform note by @AalmanSadath in #791
  • docs: add Russian README translation by @MonteNegroX in #1039
  • Fix typo in installation guide by @mikevankuik in #1189
  • fix(i18n): correct mistranslations in the Spanish catalog by @eibidia in #1315
  • feat(i18n): Updated French README.md file by @DimitriDR in #1271
  • fix: add Debian runtime dependencies by @MauricioSilv in #1249
  • fix(hook): normalize Windows cursor position to DIP scale by @fly530 in #1246
  • fix(agent): restore diverted HID++ controls on a clean shutdown by @4ni1ak in #1106
  • refactor(hook): type windows cursor dpi normalization by @AprilNEA in #1318
  • fix(linux): declare F13-F20 in uinput key capabilities by @costantinoai in #1224
  • fix(core): stop seeding Back/Forward with a divertable default by @litityum in #1225
  • fix(agent): fence queued pairing discovery after selection by @AprilNEA in #1320
  • fix(agent): avoid capture recovery deadline busy loops by @AprilNEA in #1321
  • test(gui): cover camera preview lifecycle by @AprilNEA in #1322
  • fix(gui): place Windows actions ring correctly across mixed-DPI monitors by @AprilNEA in #1319
  • fix(gui): stop linking SMAppServiceErrorDomain so macOS 13 and 14 can launch by @AprilNEA in #1324
  • feat(hid): add hardware-aware mock device record and replay by @AprilNEA in #1165
  • test(agent): cover native and browser side-button profiles by @AprilNEA in #1325
  • fix(macos): bind Safari navigation to press-time process by @foleykyle01 in #1082
  • fix(camera): surface startup failures and retry preview by @yuzi-co in #1069
  • chore(gui): upgrade to gpui kit 0.6.1 and published pre adapters by @AprilNEA in #1338
  • feat(hid): add rgb-effects lighting and receiver routing by @LuisUrrutia in #351
  • fix(gui): keep update consent buttons visible by @AprilNEA in #1398
  • fix(linux): preserve gesture capture across receiver probes by @yvvlee in #1043
  • chore: release v0.8.4 by @AprilNEA[bot] in #1179

New Contributors

Full Changelog: v0.8.3...v0.8.4

  •  

v0.8.2

What's Changed

  • fix(camera): read WhiteBalance, not ColorEnable, on Windows by @yuzi-co in #662
  • refactor(hid): name the divert intents instead of passing flag bools by @AprilNEA in #1071
  • refactor(linux): make the hidraw probe outcome an explicit enum by @AprilNEA in #1073
  • feat(macos): let launchd own the agent lifecycle via SMAppService by @AprilNEA in #1031
  • docs: character stand-in icon rule + crate-homed agent guides by @AprilNEA in #1026
  • Map SLOT_NAME_DPI_BUTTON to DpiToggle and add verification tests by @ediaz2 in #703
  • fix(agent): harden capture sessions, arming, and observe staleness by @AprilNEA in #1077
  • refactor(hid): fold the one-shot retry state into a OneShotScan type by @AprilNEA in #1070
  • refactor(gui): name the scrolling card's facts instead of a five-tuple by @AprilNEA in #1072
  • feat(agent): localize the menu-bar tray by @AprilNEA in #1038
  • refactor: make the audited implicit state machines typed by @AprilNEA in #1080
  • fix: resolve remaining state-machine audit findings by @AprilNEA in #1083
  • feat(gui): add per-app Actions Ring editor by @AprilNEA in #1085
  • feat(i18n): add Belarusian (be) locale by @aliaksandr-trush in #912
  • fix(macos): capture side-button gestures over HID++ by @juan-apa in #722
  • perf(agent): replace capture polling with events by @AprilNEA in #1136
  • perf(agent): replace lifecycle polling with native events by @AprilNEA in #1137
  • fix(macos): prevent HID activity from promoting DarkWake by @AprilNEA in #1142
  • fix(hid): normalize thumbwheel direction per device by @AprilNEA in #1158
  • chore: release v0.8.2 by @AprilNEA[bot] in #1056

New Contributors

Full Changelog: v0.8.1...v0.8.2

  •  

v0.8.1

What's Changed

Full Changelog: v0.8.0...v0.8.1

  •  

v0.8.0

Highlights

  • One device, however you connect it. The same mouse now keeps one device card and one set of settings across receiver and USB connections. Existing configurations migrate automatically and are backed up before the first save. (#876)
  • A redesigned device workspace makes larger setups easier to manage. A responsive grid, compact cards, clearer battery status, custom device names, scalable interface presets, and a dedicated action menu make devices faster to scan and configure.
  • Per-app profiles are now editable in the GUI. Pick an installed application from the new catalog, see which profile is active, and customize its button bindings without editing TOML. (#976)
  • Scrolling is smoother and more configurable. Built-in smooth scrolling, vertical sensitivity controls, preserved fractional motion, rebindable wheel tilt, and fixes for diverted high-resolution wheels deliver more consistent scrolling across main and thumb wheels. (#902, #925, #992)
  • Buttons can now distinguish a tap from a hold. TOML bindings can assign independent short- and long-press actions with a 500 ms threshold, while held shortcuts remain active until the button is released. (#961)

What's Changed

  • chore(gui): bump gpui-component to da4f9369 by @AprilNEA in #655
  • refactor(hid): centralize device identities by @AprilNEA in #831
  • docs(agents): scale local gate to affected packages by @AprilNEA in #696
  • feat(core,gui): make the main wheel's tilt rebindable (MX anywhere 2s,...) by @6lv1-blr in #902
  • fix(linux): install the app icon at every indexed hicolor size by @4ni1ak in #837
  • fix(gui): recognize mx ergo wheel tilt metadata by @AprilNEA in #905
  • ci: automate typo checks and consolidate configs by @AprilNEA in #906
  • refactor(gui): convert app state to entity events by @AprilNEA in #904
  • fix(mouse): compose thumb-wheel preset labels from translated action names by @NatsUIJM in #910
  • fix(linux): restore glibc 2.35 package baseline by @AprilNEA in #911
  • fix(gui): restore full-phrase thumb-wheel preset labels by @AprilNEA in #913
  • refactor(gui): componentize free-function builders by @AprilNEA in #914
  • fix(macos): honor XDG state dir in permission diagnostics by @AprilNEA in #915
  • fix(hid): improve Unifying receiver discovery reliability by @v14 in #853
  • feat(gui): add per-app profiles and redesign device workspace by @AprilNEA in #907
  • fix(macos): use reliable async-hid report writes by @sh3ll3x3c in #889
  • fix(hid): preserve usage pairs in native handle cache by @sh3ll3x3c in #882
  • fix: show Windows MSI completion and failure state by @mvanhorn in #819
  • feat(gui): make custom controls keyboard-operable by @AprilNEA in #916
  • style(gui): refine profile toolbar layout by @AprilNEA in #921
  • refactor(gui): clean up render paths and element ids by @AprilNEA in #926
  • fix(hidpp): read Unifying link encryption from bit 5, not the software-present bit by @AprilNEA in #924
  • refactor(gui): tighten typed rendering and async ownership by @AprilNEA in #931
  • refactor(gui): move device reads onto swr by @AprilNEA in #929
  • feat(gui): add scalable interface presets by @AprilNEA in #934
  • feat(agent): unify button Down/Up/Cancel lifecycle by @AprilNEA in #933
  • feat(i18n): add Turkish (tr) interface locale by @4ni1ak in #835
  • feat(gui): add switchable device gallery views by @AprilNEA in #927
  • refactor(gui): improve shared component quality by @AprilNEA in #966
  • feat(agent): hold shortcut output until button release by @AprilNEA in #960
  • fix(thumbwheel): scale remapped vertical scrolling by @hsearcy in #925
  • refactor(gui): structure app state by domain by @AprilNEA in #974
  • feat(gui): add installed application catalog picker by @AprilNEA in #976
  • feat(gui): add polished battery indicator by @AprilNEA in #983
  • feat(scroll): preserve precise scroll distances by @AprilNEA in #973
  • ci: replace target caches with sccache by @AprilNEA in #984
  • feat(scroll): add finite smooth scroll runtime by @AprilNEA in #975
  • feat(scroll): smooth diverted thumbwheel input by @AprilNEA in #977
  • feat(gui): polish the app catalog picker and device cards by @AprilNEA in #986
  • feat(scroll): add vertical scroll sensitivity by @AprilNEA in #978
  • feat(scroll): expose smooth scrolling setting by @AprilNEA in #979
  • refactor(gui): strengthen typed render boundaries by @AprilNEA in #981
  • fix(core,gui,agent): key device settings by identity, not by transport by @yuzi-co in #876
  • feat(agent): dispatch independent long-press actions by @AprilNEA in #961
  • refactor(agent): complete thumbwheel state machine by @AprilNEA in #968
  • fix(hid): preserve diverted wheel reporting by @AprilNEA in #992
  • chore: release v0.8.0 by @AprilNEA[bot] in #991

New Contributors

Full Changelog: v0.7.10...v0.8.0

  •  

v0.7.10

What's Changed

  • fix(gui): check the open helper's exit status when launching the agent by @AprilNEA in #820
  • fix(nix): provide git to the sandboxed test phase by @AprilNEA in #833
  • feat(ipc): surface HID open failures in agent status by @AprilNEA in #822
  • fix(agent): follow the picked app icon in the menu bar by @AprilNEA in #846
  • feat(cli): read the running agent's inventory in openlogi list by @AprilNEA in #823
  • fix(thumbwheel): stop the tap firing App ExposΓ©, and scroll by the wheel's native amount by @AprilNEA in #857
  • chore: release v0.7.8 by @AprilNEA[bot] in #834
  • fix(gui): stop discarding correctly rebuilt device records by @AprilNEA in #868
  • fix(overlay,agent): stop the anonymous overlay tenant from wedging the Actions Ring by @AprilNEA in #848
  • refactor(gui): put the asset tier on an swr cache by @AprilNEA in #869
  • chore: release v0.7.9 by @AprilNEA[bot] in #870
  • chore: release v0.7.10 by @AprilNEA in #874

Full Changelog: v0.7.7...v0.7.10

  •  

v0.7.7

v0.7.5 and v0.7.6 were tagged but never published β€” their macOS packaging failed before a single artifact was uploaded, so no release exists for either. Everything both of them contained ships here, and the changes below cover everything since v0.7.4.

What's Changed

  • docs(ci): map every CI job to a local command by @davidbudnick in #732
  • feat(i18n): add Ukrainian (uk) locale by @dima-karpenko in #715
  • ci(shell): gate every shell script with shellcheck and shfmt by @AprilNEA in #745
  • docs(core): correct the model_ids transport ordering, and fix the MX Keys mock by @yuzi-co in #668
  • refactor(xtask): move ci-local.sh and write-changelog.sh into xtask by @AprilNEA in #746
  • refactor(xtask): split bundle.rs along what it actually does by @AprilNEA in #753
  • feat(cli): report feature flags and firmware entities in diag features by @yuzi-co in #690
  • refactor(cli): render diagnostics with display adapters by @AprilNEA in #758
  • refactor: stream display-only formatting by @AprilNEA in #768
  • feat(camera): add anti-flicker and low-light controls by @awesamarth in #793
  • refactor(hid): split the HID++ device layer from the host backend by @AprilNEA in #772
  • chore: cut manifest comments that describe instead of constrain by @AprilNEA in #809
  • fix(hook): stop trusting AXIsProcessTrusted as a revocation signal by @AprilNEA in #801
  • fix(hook): keep macOS tap lifecycle instance-owned by @AprilNEA in #808
  • feat(gui): pick the app icon in Settings by @AprilNEA in #812
  • build(macos): name the helper bundles after their display names by @AprilNEA in #814
  • docs(agents): add a macOS permissions task skill by @AprilNEA in #813
  • fix(agent): shut down when the app is uninstalled by @AprilNEA in #810
  • fix(ipc,agent,desktop): surface Input Monitoring via agent status and fix registry bincode by @rekcilyssup in #760
  • fix(hid): take async-hid 0.5.3 so a denied HID open stops leaking by @AprilNEA in #804
  • fix(hid): park the Windows HID read on a permanently dead handle by @yuzi-co in #779
  • chore: release v0.7.5 by @AprilNEA[bot] in #750
  • fix(release): use changelog as release PR body by @AprilNEA in #821
  • refactor(agent): split the binary watcher from how it relaunches by @AprilNEA in #816
  • refactor(agent-core): give the polling watchers one loop by @AprilNEA in #818
  • feat(hid): recognise Lightspeed receiver 046d:c54d (PRO X SUPERLIGHT 2 DEX) by @v14 in #811
  • chore: release v0.7.6 by @AprilNEA[bot] in #824
  • fix(agent): make macOS permission failures diagnosable by @AprilNEA in #817
  • fix(ci): build both macOS legs with an Icon Composer-capable Xcode by @AprilNEA in #815
  • chore: release v0.7.7 by @AprilNEA[bot] in #830

New Contributors

Full Changelog: v0.7.4...v0.7.7

  •  

v0.7.2

What's Changed

  • fix(agent): reapply volatile settings after Windows resume by @davidbudnick in #639
  • build(nix): make Linux packaging first-class by @AprilNEA in #632
  • chore(infra): add CODEOWNERS by @AprilNEA in #646
  • fix: bind the Actions Ring overlay to one agent run by @AprilNEA in #645
  • chore: converge the repository top level by @AprilNEA in #647
  • refactor(gui): split the GPUI side into app, ui, and overlay crates by @AprilNEA in #672
  • refactor(ipc): replace the GUI's poll loop with a level-triggered state channel by @AprilNEA in #675
  • build(windows): ship the openlogi CLI in the zip and MSI by @yuzi-co in #659
  • build(infra): drop dependency debuginfo in dev builds by @AprilNEA in #695
  • refactor(core): extract openlogi-permissions and give shared constants one definition by @AprilNEA in #697
  • fix(gui): use the GPUI executor timer, not tokio::time::interval, for camera scans by @charliecai01 in #686
  • fix(overlay): prevent GPUI from exiting on window close by @clifinger in #700
  • fix(agent): relaunch after granting Input Monitoring by @AprilNEA in #713
  • chore: release v0.7.2 by @AprilNEA[bot] in #642

New Contributors

Full Changelog: v0.7.1...v0.7.2

  •  
❌