//! Blocker block-screen UI. //! //! Placeholder. No UI toolkit is bound here yet — see ADR-6 in //! `docs/DECISIONS.md` for why that is an open decision rather than an oversight. //! //! # What this process is for //! //! It is a short-lived, separately-executable window. The daemon stays resident //! and small; this launches when a block fires and exits when it lifts. Keeping //! them separate means a crash in window rendering cannot take enforcement down. //! //! # Design constraints that will apply (docs/UX-BLOCK-SCREEN.md) //! //! - Calm, not punitive. No red-alert styling, no shaming copy, no streak //! counters. The screen exists to end an argument with the user's own //! intention, so it must lower arousal. //! - It always states which schedule blocked and when it lifts. Uncertainty is //! what makes people fight the tool. //! - It is never a dead end: a plain-looking "How to turn this off" entry is //! always present, including under Strict Mode (CLAUDE.md section 1.5.4). //! - Under Strict Mode the *absence* of a bypass button is stated explicitly. //! Silently missing controls read as a bug and breed distrust. fn main() { println!("blocker-ui {} (M0 placeholder)", env!("CARGO_PKG_VERSION")); println!("UI toolkit undecided — ADR-6 in docs/DECISIONS.md"); }