7275fcab35
fix: implement all 24 FIX_PLAN issues across 6 phases
...
Phase 1 — Critical Safety:
- #11 : bounded IPC reads via read_bounded_line (server + client)
- #13 : sound Send+Sync via Arc<Mutex<RuntimeHandle>>; remove unsafe impl Sync
- #10 : ItemSource enum (Core/NativePlugin/ScriptPlugin) on LaunchItem;
script plugin allowlist guard in launch_item()
Phase 2 — Config System Overhaul:
- #6 : remove dead enabled_plugins field
- #1 : replace #[serde(flatten)] with explicit Config::plugin_config
- #4 : Server.config Arc<RwLock<Config>>; ConfigProvider shares same Arc
- #2/#3: atomic config save (temp+rename); TOCTOU fixed — write lock held
across mutation and save() in config_editor
- #23 : fs2 lock_exclusive() on .lock sidecar file in Config::save()
- #16 : SIGHUP handler reloads config; ExecReload in systemd service
Phase 3 — Plugin Architecture:
- #7 : HostAPI v4 with get_config_string/int/bool; PLUGIN_CONFIG OnceLock
in native_loader, set_shared_config() called from Server::bind()
- #5 : PluginEntry + Request::PluginList + Response::PluginList; plugin_registry
in ProviderManager tracks active and suppressed native plugins;
cmd_list_installed shows both script and native plugins
- #9 : suppressed native plugin log level info! → warn!
- #8 : ProviderType doc glossary; plugins/mod.rs terminology table
Phase 4 — Data Integrity:
- #12 : all into_inner() in server.rs + providers/mod.rs → explicit Response::Error;
watcher exits on poisoned lock
- #14 : FrecencyStore::prune() (180-day age + 5000-entry cap) called on load
- #17 : empty command guard in launch_item(); warn in lua_provider
- #24 : 5-min periodic frecency save thread; SIGTERM/SIGINT saves frecency
before exit (replaces ctrlc handler)
Phase 5 — UI & UX:
- #19 : provider_meta.rs ProviderMeta + meta_for(); three match blocks collapsed
- #18 : desktop file dedup via seen_basenames HashSet in ApplicationProvider
- #20 : search_filtered gains tag_filter param; non-frecency path now filters
- #15 : widget refresh 5s→10s; skip when user is typing
Phase 6 — Hardening:
- #22 : catch_unwind removed from reload_runtimes(); direct drop()
- #21 : AtomicUsize + RAII ConnectionGuard; MAX_CONNECTIONS = 16
Deps: add fs2 = "0.4"; remove ctrlc and toml_edit from owlry-core
2026-04-08 16:43:52 +02:00
8b444eec3b
refactor: rename daemon binary from owlry-core to owlryd
...
- Binary: owlry-core → owlryd
- Systemd: owlry-core.service → owlryd.service, owlry-core.socket → owlryd.socket
- Client: systemctl start owlryd
- AUR package name stays owlry-core (installs owlryd binary)
2026-03-28 12:39:37 +01:00
d4f71cae42
feat: add systemd user service and socket units for owlry-core
...
Add owlry-core.service (Type=simple, restart-on-failure) and
owlry-core.socket (listening on $XDG_RUNTIME_DIR/owlry/owlry.sock)
for socket-activated daemon deployment.
2026-03-26 12:59:49 +01:00