48955634af
feat(streamer): now-playing watcher with cover resolver
2026-04-30 15:17:37 +06:00
23d98320df
feat(streamer): env config parsing + validation
2026-04-30 15:14:48 +06:00
cc1f278fb8
feat(streamer): scaffold package, tsconfig, dockerfile
2026-04-30 15:12:42 +06:00
08f3f6e7da
feat(liquidsoap): raw-pcm tcp tap on :9100 for streamer
2026-04-30 15:09:25 +06:00
83df3b4602
feat(liquidsoap): emit cover_path + up_next in now-playing json
...
also fix path.extension -> file.extension (path module has no .extension in 2.3.3)
2026-04-30 15:04:25 +06:00
68a02ff250
fix(liquidsoap): deck filters audio, guards empty, avoids cross-deck repeat
2026-04-30 14:59:17 +06:00
fcb783ffca
feat(liquidsoap): deck-shuffle playlist with peek-ahead
2026-04-30 14:56:38 +06:00
f6ce00a6b1
fix(scripts): quote remote glob, drop UUOC in cover upload
2026-04-30 14:55:37 +06:00
703d7532f7
chore: mark restore-album-covers.sh executable
2026-04-30 14:54:28 +06:00
824192b856
chore: script to restore per-album covers from archives
2026-04-30 14:53:26 +06:00
d3e919d4c8
chore: gitignore .design-prototype-stream/
2026-04-30 14:51:06 +06:00
52c6750a51
fix(liquidsoap): switch append_history to let json.parse with typed record
...
old json.parse(default=...) silently failed on every track change so
recent-played always showed only one entry. modern let-form parses
the existing history file correctly.
2026-04-30 11:22:50 +06:00
abca97b4ac
chore(frontend): trim ticker copy, set default volume to 67%
2026-04-30 11:17:55 +06:00
922f3d9e10
docs: note that tracks/ supports nested album subdirectories
2026-04-30 11:15:28 +06:00
21d214abe9
docs: add CLAUDE.md operator manual and README.md
2026-04-30 11:01:01 +06:00
9500a93fde
chore: gitignore .design-prototype/ handoff bundle
2026-04-30 10:57:12 +06:00
38394f40a6
fix: compute duration via request.duration when decoder metadata is empty
2026-04-30 10:55:24 +06:00
8d00c10b9f
fix(frontend): defer date and localStorage reads to post-mount to fix hydration mismatches
2026-04-30 10:08:15 +06:00
9f9c2148b4
chore: deploy frontend to summer; fix healthcheck localhost→127.0.0.1
...
alpine wget resolves localhost to ::1 (IPv6) but node only binds IPv4;
switched healthcheck URL to 127.0.0.1 to fix unhealthy container.
2026-04-30 09:52:03 +06:00
eb701bbb8a
feat: add frontend service + dockerfile + env example
2026-04-30 09:45:18 +06:00
04835f31b6
feat(frontend): add static shell + index page
2026-04-30 09:44:14 +06:00
01c281ca80
feat(frontend): add HistoryCard + HistoryList
2026-04-30 09:42:16 +06:00
65d88be032
feat(frontend): add HeroPlayer interactive island
2026-04-30 09:41:07 +06:00
7ab3c850bf
feat(frontend): add player store + WebAudio Spectrum
2026-04-30 09:36:35 +06:00
f069eef8a8
feat(frontend): add Tape presentational component
2026-04-30 09:34:49 +06:00
d16bc80ac8
feat(frontend): add /api/stations.json and /api/stations/:id/cover
2026-04-30 09:33:37 +06:00
a7256bc13c
feat(frontend): add stations library reader with tdd
2026-04-30 09:31:59 +06:00
a1e24c6a81
feat(frontend): add types + format helpers with tdd
2026-04-30 09:29:52 +06:00
3b8400b2ed
feat(frontend): add tokens, global css, self-hosted fonts
2026-04-30 09:28:05 +06:00
f1a0d1ddef
chore: scaffold astro frontend with static output
2026-04-30 09:24:40 +06:00
6bec95a563
feat: emit duration + per-station history in liquidsoap
2026-04-30 09:18:18 +06:00
439ae3c9c0
fix: use restart:always so containers recover from process crashes
2026-04-30 08:34:23 +06:00
a8bb02732f
chore: gitignore .claude/ tooling dir
2026-04-30 01:06:19 +06:00
f0ae93a522
feat: emit now-playing json on track change
2026-04-30 01:06:01 +06:00
fd3453c5bc
feat: add opus output for minecraft station
2026-04-30 00:24:40 +06:00
cbd8bdfd3b
fix: use pidof (pgrep absent in savonet image) for liquidsoap healthcheck
2026-04-30 00:23:32 +06:00
55c7de8785
chore: minecraft.mp3 mount live on summer
2026-04-30 00:22:18 +06:00
7a7b017f0a
chore: populate minecraft library (c418 vols alpha+beta, 54 tracks)
2026-04-30 00:18:31 +06:00
1203c10cd0
feat: add liquidsoap service to compose
2026-04-29 23:55:42 +06:00
b23f957ecb
feat: add liquidsoap script with minecraft mp3 stream
2026-04-29 23:53:28 +06:00
9963b723f9
fix: restore read_only on icecast config mount
2026-04-29 23:50:39 +06:00
c1a8e2b049
chore: first icecast deploy on summer
2026-04-29 23:49:25 +06:00
4899bf5c00
fix: correct paths and healthcheck for libretime/icecast image
...
- fix config paths from icecast2 to icecast (correct for this image)
- fix mount target to /etc/icecast.xml (not /etc/icecast2/icecast.xml)
- replace wget healthcheck with bash /dev/tcp (wget absent in container)
2026-04-29 23:49:22 +06:00
13bc038004
feat: add icecast service to compose
2026-04-29 23:18:57 +06:00
7db31e326d
feat: add icecast config template + envsubst renderer
2026-04-29 23:15:58 +06:00
b122cdaf34
chore: scaffold denpa-radio repo
2026-04-29 23:12:27 +06:00