Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 0 additions & 40 deletions FIXDRY.md

This file was deleted.

6 changes: 3 additions & 3 deletions devenv.lock
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,11 @@
]
},
"locked": {
"lastModified": 1779592685,
"narHash": "sha256-p9d56GezhHRf4QfANxwa1d+fvwShvjB5XUhdIl7WEd0=",
"lastModified": 1783144302,
"narHash": "sha256-NQnzmXwpEAd5tjMBh2+P/y9NknF+WHv5+6yoXoN4h/Y=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "3a58b199e7c83a80b85c28044f808085ba7e941c",
"rev": "fe5aee0952e8e1525533d61defd9e36513db811b",
"type": "github"
},
"original": {
Expand Down
34 changes: 34 additions & 0 deletions docs/DECISIONS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Decision log

Durable "why we did it this way" records that are not obvious from the code.
Add a dated entry when a non-obvious architectural or dependency decision is
made or revisited.

## 2026-07: Infrastructure we keep custom instead of using a crate

A dependency audit replaced most general-purpose infrastructure code with
mature crates (`tempfile`, `which`, `plist`, `walkdir`, `xshell`, `sysinfo`,
`fs-err`, `backon`, `opener`, `etcetera`, and others — see the git history of
`FIXDRY.md` for the full list). The following stayed custom, deliberately:

- `openlogi-core::single_instance`: the `single-instance` crate uses different
backends (for example abstract Unix sockets on Linux) and does not preserve
OpenLogi's data-dir lock-file path, per-role names, and error classification
closely enough to be a safe deletion.
- Agent tray Quit's `openlogi://quit` dispatch keeps
`std::process::Command::output()` intentionally: it blocks until
LaunchServices accepts the Apple Event, while generic opener crates only
guarantee process spawn.
- GUI helper launch keeps `/usr/bin/open -g -n` intentionally: it needs
LaunchServices-specific flags to start the packaged agent under its own TCC
identity, which generic opener crates do not expose.
- Agent autostart install keeps direct `systemctl` calls because it is managing
systemd user units, not merely opening or spawning an arbitrary program.
- Self-restart and `disclaim` launches stay custom because they are process
identity / update lifecycle boundaries, not generic command orchestration.
- `openlogi-hook`: event suppression/rewriting and foreground-app lookup are
OpenLogi-specific and not covered cleanly by generic input crates.
- `openlogi-inject`: platform-specific action synthesis may overlap with
`enigo`, but current semantics are narrower and more controlled.
- `openlogi-hid` / vendored `openlogi-hidpp`: the right path is upstreaming
OpenLogi-specific fixes, not replacing the fork blindly.
Loading