v0.8.6

silvia-odwyer/photonv0.8.6Sep 19, 2026by github-actions[bot]

Upgrading?

AI Summary

A major architectural refactor release that splits core modules (GUI, IPC, Device, Hook) into smaller, more focused components. It improves test coverage by splitting tests by their specific concerns and adds a feature to detect installation sources.

Key Highlights

  • Extensive refactoring of core modules (GUI, IPC, Device, Hook, HIDPP).
  • Improved test coverage by splitting tests by functionality.
  • Feature to detect and display installation sources.
  • Infrastructure: Added openlogi workflow skills.

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