..
tests
Split test_smart_plug.py at the config/operations seam
2026-08-27 23:22:12 +02:00
__init__.py
Add tests and fix pre-commit issues across all projects
2026-04-12 20:45:24 +02:00
_alarm_display.py
feat: split oversized modules for 500-line limit, fix kasa coverage gap
2026-06-14 07:19:37 +02:00
_alarm_flash.py
Phase 4: wire sink reactivation into the alarm (finishes item 6)
2026-08-27 20:14:00 +02:00
_alarm_payload.py
Discover alarm device directories instead of reading a fixed phone path
2026-08-09 17:06:43 +02:00
_alarm_session.py
Phase 6: vmbox becomes the gate for the system scripts (item 10)
2026-08-27 20:49:16 +02:00
_alarm_state.py
Phase 5: the power button no longer ends the alarm (item 2)
2026-08-27 20:26:37 +02:00
_alarm_timers.py
Phase 4: wire sink reactivation into the alarm (finishes item 6)
2026-08-27 20:14:00 +02:00
_alarm_view.py
Size the alarm's type in pixels, and gate every screen on fitting 768px
2026-08-03 16:04:27 +02:00
_alarm.py
Phase 5: the power button no longer ends the alarm (item 2)
2026-08-27 20:26:37 +02:00
_audio.py
Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules
2026-08-26 23:46:10 +02:00
_beep_loop.py
Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules
2026-08-26 23:46:10 +02:00
_brightness.py
Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules
2026-08-26 23:46:10 +02:00
_challenges.py
Fire alarm daily, harden dismissal challenge; ignore wake_state.json
2026-07-10 23:14:40 +02:00
_constants.py
Make the alarm fully automatic and un-weakenable (08:00, earlier-only)
2026-08-27 23:03:00 +02:00
_correlation.py
Phase 5: the power button no longer ends the alarm (item 2)
2026-08-27 20:26:37 +02:00
_countdown.py
Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules
2026-08-26 23:46:10 +02:00
_curtains.py
Phase 7: curtains open on the alarm, no-op until hardware exists (item 5)
2026-08-27 21:00:11 +02:00
_dismiss_view.py
Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules
2026-08-26 23:46:10 +02:00
_escalation.py
Phase 2b: add the 5-minute audio failsafe, and retune escalation to fit it
2026-08-26 23:17:41 +02:00
_escape_flow.py
Size the alarm's type in pixels, and gate every screen on fitting 768px
2026-08-03 16:04:27 +02:00
_gating.py
Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules
2026-08-26 23:46:10 +02:00
_inhibit.py
Phase 6: vmbox becomes the gate for the system scripts (item 10)
2026-08-27 20:49:16 +02:00
_lock_setup.py
Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules
2026-08-26 23:46:10 +02:00
_log_dedupe.py
Phase 1: structured JSONL logging with cross-process dedupe
2026-08-26 23:00:08 +02:00
_log_sink.py
Phase 1: structured JSONL logging with cross-process dedupe
2026-08-26 23:00:08 +02:00
_logging_setup.py
Phase 1: structured JSONL logging with cross-process dedupe
2026-08-26 23:00:08 +02:00
_reactivate.py
Phase 4: wire sink reactivation into the alarm (finishes item 6)
2026-08-27 20:14:00 +02:00
_rounds.py
Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules
2026-08-26 23:46:10 +02:00
_screen_flash.py
Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules
2026-08-26 23:46:10 +02:00
_sinks.py
Replace sleep-and-hope audio waits with per-cycle presence checks
2026-07-11 18:51:03 +02:00
_smart_plug.py
Extract wake_alarm from testsAndMisc as a standalone repo
2026-06-22 12:31:40 +02:00
_startup.py
Phase 7: curtains open on the alarm, no-op until hardware exists (item 5)
2026-08-27 21:00:11 +02:00
_state.py
Extract wake_alarm from testsAndMisc as a standalone repo
2026-06-22 12:31:40 +02:00
_sync.py
Discover alarm device directories instead of reading a fixed phone path
2026-08-09 17:06:43 +02:00
_tone.py
Phase 3: remove the max-fan ramp, split _alarm.py, wire the new modules
2026-08-26 23:46:10 +02:00
_trigger.py
Make the alarm fully automatic and un-weakenable (08:00, earlier-only)
2026-08-27 23:03:00 +02:00