- Extract canonical date algorithm to src/date.rs; remove duplicates in log.rs and detect.rs
- Extract build_std_command in launch.rs; unify needs_host_library_injection via pub(crate) delegation
- Add missing unknown-setting warning to parse_imported_config in share.rs
- Extract format_with_hint helper in error.rs; set_proton_no_sync helper in env.rs
- Remove dead match in completion.rs shell_path_literal; use parse_fps for FpsCap in keys.rs
- Replace six as_str() impls with impl_as_str! macro in schema.rs
- Collapse ResolvedSettings::apply (~110 lines) with apply_scalar!/apply_opt!/apply_clone! macros
- Replace six color functions with color_fn! macro in color.rs
89/89 tests passing, zero clippy warnings.
Co-Authored-By: claude-flow <ruv@ruv.net>
Hook reliability:
- Add hook-errors = "warn" | "fail" setting (default: warn); in fail
mode, abort launch when pre-launch hook exits nonzero or can't execute
- Ensure post-launch hook runs unconditionally, even when execute_wait()
fails to spawn the game
- Propagate game's real exit status via std::process::exit(); report
post-hook failures clearly to stderr
- Centralize hook execution via run_hook() helper (sh -c)
New features in this batch:
- Sparse config and profile support: only configured fields are written;
unset fields fall back through profile → global chain
- config show --effective flag: renders the fully-resolved view
- Config migration: upgrades legacy flat config to current schema
- Structured decision logging (src/log.rs) for session-level audit trail
- Gamescope improvements: additional flags and validation
- CHANGELOG.md tracking template releases
Schema / UX:
- HookErrors enum (Warn/Fail) added to Settings and ResolvedSettings
- hook-errors key in keys.rs, mod.rs rendering, completion candidates,
doctor output, help text, README, and dry-run display
- 9 focused tests covering warn/fail behavior, exit propagation,
round-trip (set/show/reset), profile round-trip, export/import
Co-Authored-By: claude-flow <ruv@ruv.net>
Steam-first Linux game launcher wrapper for MangoHud and GameMode.
Manages launch behavior via TOML config with named profiles, per-game
bindings, and full diagnostics. All v1 criteria validated.
Co-Authored-By: claude-flow <ruv@ruv.net>