This file tracks places where OpenLogi carries general-purpose infrastructure code that can be replaced by mature crates. The goal is not to add dependencies for their own sake, but to delete code where an external crate is a better source of truth.
- Replace
xtask's custom temporary-directory guard withtempfile. - Replace
xtask's customPATHscanning withwhich. - Replace macOS LaunchAgent plist string rendering / XML escaping with
plist. - Replace hand-built GUI
file://URLs withurl::Url::from_file_path.
- Replace
openlogi-assets::http::write_replacewithatomic-write-file, preserving atomic replacement and symlink safety. - Replace recursive asset-cache directory walking with
walkdir. - Replace
xtaskcommand orchestration withxshell. - Replace stale-agent process discovery/signalling through
pgrep/killwithsysinfo. - Replace
xtaskfile/path helpers withfs-errandpath-absolutize. - Replace remaining
xtaskproduction file operations withfs-err. - Replace
xtask's hand-written SHA-256 file loop withsha2_hasher. - Replace
xtaskmanifest tests' custom temp directory withtempfile. - Replace macOS iconset shell-out (
sips+iconutil) withimage+icns. - Replace GUI asset-sync retry delay math with
backon's exponential backoff. - Replace generic GUI/agent
openshell-outs withopener.
- Evaluate
etceterafor XDG-style config/data/runtime paths. Adoptedetcetera::base_strategy::Xdg, not platform-native macOS paths. - Evaluate
fluent-langnegfor locale matching, while keeping OpenLogi's shipped-locale policy for Chinese, Portuguese, and Norwegian variants.
openlogi-core::single_instance:single-instanceuses 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://quitdispatch keepsstd::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 -nintentionally: 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
systemctlcalls because it is managing systemd user units, not merely opening or spawning an arbitrary program. - Self-restart and
disclaimlaunches 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 withenigo, but current semantics are narrower and more controlled.openlogi-hid/ vendoredopenlogi-hidpp: the right path is upstreaming OpenLogi-specific fixes, not replacing the fork blindly.