-
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