Commit Graph

  • 000b204215 refactor: keep style-specific config off the base class via **kwargs feature/alarm-styles gurix 2026-08-02 22:09:46 +02:00
  • 3a7b6ac7a3 refactor: styles own their ringing tone directly (Pattern C) gurix 2026-08-02 21:50:00 +02:00
  • 92eba762ce feat: styles own their ringing tone (simple beeps, blink plays music) gurix 2026-08-02 16:29:40 +02:00
  • 88a57dab6e refactor: drop unused AlarmStyle re-export from styles package gurix 2026-08-02 10:01:46 +02:00
  • 670119f93e docs: document alarm styles and per-alarm style selection gurix 2026-07-31 16:20:50 +02:00
  • c50f296232 feat: pass alarm style through crontab manager and GraphQL API gurix 2026-07-31 16:20:16 +02:00
  • b3f3db6f13 feat: add pluggable alarm styles and migrate wecker.py gurix 2026-07-31 16:19:14 +02:00
  • 7ee28d72b6 docs: plan for pluggable alarm styles gurix 2026-07-31 13:41:17 +02:00
  • 0f70e832bf fix: set SDL_AUDIODRIVER=pulse and XDG_RUNTIME_DIR for cron/API audio main Markus Graf 2026-06-26 07:42:19 +02:00
  • e118dbc357 refactor: share alarm loading between get_alarms and get_alarm gurix 2026-06-22 10:37:52 +02:00
  • 3fae274aa0 refactor: centralize alarm dict-to-GraphQL mapping gurix 2026-06-22 10:30:01 +02:00
  • a67f57c37e refactor: remove command field from GraphQL Alarm type gurix 2026-06-22 10:04:48 +02:00
  • b2bb5bdaf9 docs: document API security considerations and rate-limiting recommendation gurix 2026-06-18 17:22:55 +02:00
  • 8a46ff8487 refactor: locate project root by pyproject.toml marker gurix 2026-06-18 17:20:51 +02:00
  • 77f215be84 refactor: explicitly handle missing API key header gurix 2026-06-18 17:20:01 +02:00
  • 0472de5a5d fix: add SIGKILL fallback when SIGTERM does not stop the alarm gurix 2026-06-18 17:17:56 +02:00
  • 4d9f08f21f refactor: make blink_led non-blocking in the state machine gurix 2026-06-18 17:09:10 +02:00
  • dfc9f0cd94 feat: make alarm music file configurable via env var and CLI arg gurix 2026-06-18 17:01:26 +02:00
  • 434c49b609 refactor: move GPIO and pygame initialization into setup() gurix 2026-06-18 16:58:57 +02:00
  • 0621ab6190 chore: replace weak example API key with strong generated key gurix 2026-06-18 16:53:15 +02:00
  • 748a3be4b8 fix: validate cron expression before writing to crontab gurix 2026-06-18 16:47:56 +02:00
  • 1a8e4e2186 fix: verify /proc/PID/cmdline in isRinging to prevent PID reuse false positives gurix 2026-06-18 16:45:52 +02:00
  • b62a1d10c1 fix: rotate wecker.log to prevent unbounded growth gurix 2026-06-18 16:41:30 +02:00
  • d349478e07 fix: start wecker without shell=True gurix 2026-06-18 16:38:58 +02:00
  • 7e8e915024 fix: use fcntl file lock to prevent PID file race condition gurix 2026-06-18 15:27:21 +02:00
  • 058de8089c fix: use constant-time comparison for API key gurix 2026-06-18 15:23:57 +02:00
  • 124a6a4916 fix: remove custom command from setAlarm to prevent command injection gurix 2026-06-18 15:23:14 +02:00
  • 75b56e2f1e refactor: extract _default_command() to eliminate DRY violation Markus Graf 2026-05-19 15:31:24 +02:00
  • 41d8ffc404 refactor: rename startWecker/stopWecker mutations to startRinging/stopRinging Markus Graf 2026-05-19 15:28:44 +02:00
  • df7bec1054 feat: add startWecker and stopWecker mutations to start/stop alarm via API Markus Graf 2026-05-19 15:22:48 +02:00
  • 558c4ff5b6 Add isRinging query to check alarm state via API Markus Graf 2026-05-19 15:15:05 +02:00
  • 29aff04e33 Emphasize strict adherence to development guidelines (TDD, DRY, MVP) Markus Graf 2026-05-19 14:48:58 +02:00
  • 62c98f0a87 Add unit tests for single instance enforcement Markus Graf 2026-05-19 14:45:26 +02:00
  • 6c088661fd Implement single instance enforcement using PID file Markus Graf 2026-05-19 14:39:51 +02:00
  • 190c1c8b0d chore: add *.pid to .gitignore Markus Graf 2026-05-11 22:11:13 +02:00
  • 64947deeb1 fix: use append (>>) instead of overwrite (>) for cron logs and add missing dependencies Markus Graf 2026-05-11 22:08:57 +02:00
  • ff79224560 feat: make command parameter optional in set_alarm mutation Markus Graf 2026-05-11 15:05:29 +02:00
  • 5b5b845e41 Fix premature evaluation after blinking completes Markus Graf 2026-05-10 07:41:00 +02:00
  • a7c4febd67 test: add tests and refactor wecker.py state machine for testability Markus Graf 2026-05-09 22:31:28 +02:00
  • 1a9bcd7158 docs: update README with systemd instructions and tailscale ip Markus Graf 2026-05-09 22:24:51 +02:00
  • 90001675ce docs: update README with graphql api documentation and uv setup Markus Graf 2026-05-09 22:18:43 +02:00
  • 96aa183434 feat: implement graphql API with static key authentication Markus Graf 2026-05-09 22:18:40 +02:00
  • 36bfe0c69d feat: implement crontab manager for managing alarms Markus Graf 2026-05-09 22:18:38 +02:00
  • ea0f4c0a83 chore: setup environment variables and gitignore for API key Markus Graf 2026-05-09 22:18:35 +02:00
  • a215eb7106 chore: setup uv dependency management and required packages Markus Graf 2026-05-09 22:18:29 +02:00
  • be7f037c13 docs: add TDD, MVP, and linting guidelines to AGENTS.md Markus Graf 2026-05-09 22:18:25 +02:00
  • a00a79ff86 docs: move author section to bottom of README Markus Graf 2026-05-01 07:36:11 +02:00
  • 0c9108686b docs: document ALSA audio error fix for cron and update agent instructions Markus Graf 2026-05-01 07:33:25 +02:00
  • dd4b3367b0 docs: Add cronjob setup instructions to README Markus Graf 2026-04-30 13:41:40 +02:00
  • f44e0c5fdb Initial commit: Add smart arcade button alarm clock Markus Graf 2026-04-30 13:32:32 +02:00