v0.8.6

chaitin/SafeLinev0.8.6Sep 19, 2026by github-actions[bot]

Upgrading?

AI Summary

This release focuses on extensive code refactoring to improve maintainability, splitting modules by responsibility (GUI, IPC, Hook, Device), and introducing performance optimizations for GUI asset generation. It also includes new features for installation detection and documentation improvements.

Key Highlights

  • Extensive refactoring of GUI, IPC, and core modules for better architecture.
  • Split macOS and Linux hook backends by responsibility.
  • Performance optimization: resolve device assets once per generation.
  • New feature: Detect and display installation sources in the GUI.

New Features

  • Detect and display installation sources

Full Release Notes

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


**Full Changelog**: https://github.com/AprilNEA/OpenLogi/compare/v0.8.5...v0.8.6

Related Repositories