Repository navigation
Add fleet transition notifications - #268
Guffawaffle wants to merge 14 commits into
Conversation
Use one descriptor catalog for parsing, dependency checks, and toast-state lookup while preserving unconditional config normalization.
25ac470 to
1151d28
Compare
# Conflicts: # xmake.lua
|
Hook/feature alignment follow-up for #313 Follow-up to #313: keep hook installation independent of feature enablement, with default-enabled compatibility switches under
Published 4b0d57e: independent default-enabled fleetnotificationhooks, current desktop/audio choices, consumed disabled arrivals, quiet OPC baselines, current fast-poll demand and separately idempotent Mac authorization. Fixed length/NUL/UTF8 fleet token parsing and removed the stale startup audio mask cache. Exact Windows build, arrival/cache fixtures, parser constexpr cases and all 11 TOMLs pass; three lanes reviewed full PR plus correction. Windows270 static node fit is 25 within128 bytes. Native output/toggles/OS behavior and Mac extent/layout/audio-thread evidence remain unqualified. New CI is queued; proceeding without waiting. |
…on-notifications # Conflicts: # .github/workflows/ci.yaml # mods/src/config.cc # mods/src/config.h
Adds opt-in fleet desktop notifications on Windows and macOS with independently selectable audio cues. [ui].notify_fleet_events accepts ArrivedInSystem, ArrivedAtDestination, StartedMining, NodeDepleted, Docked, RepairComplete, MinerOPC or All; [audio].alert_fleet_* selects individual cues. Case-insensitive fleet tokens use length-aware ASCII matching, including safe rejection of embedded-NUL suffixes and non-ASCII unknown values.
Following #313, default-enabled [patches].fleetnotificationhooks owns installation independently. Fleet Watch subscribes continuously and output reads current choices; disabled arrivals are consumed and MinerOPC crossings update quiet baselines, preventing replay after re-enable. Current enabled events control fast polling. NodeDepleted forwards native handling once and suppresses duplicate desktop forwarding only while the custom desktop alert is selected. macOS authorization is separately idempotent and can be requested when desktop alerts are enabled after audio-only/all-off startup; delivery still depends on OS permission.
Uses the existing Fleet Watch/shared screen dispatcher and the explicitly inherited audio-cue dependency #253. No second mining poll or notification delegate is added. The startup-only audio-mask cache is removed; callbacks derive enabled audio from current cue values.
Validation: exact Windows release build, arrival/MinerOPC cache fixtures, four constexpr parser boundary cases and all 11 example TOMLs pass. Three independent reviews cover the complete PR and final correction. Windows270 NodeDepleted static fit is a 25-byte overwrite within a 128-byte extent. Exact-artifact output/toggle/authorization/audio behavior, Mac native extents and inherited EventModel/audio-thread qualification remain open; current cargo metadata matches but existing property helpers retain future metadata-drift risk. CI starts on publication without waiting for results.