Changes
- fix(wifi): normalise dBm/percentage signal strength (POC) (#116) @stein155
- chore(deps): bump the github-actions group with 3 updates (#117) @dependabot[bot]
- chore(deps-dev): bump the npm-development group in /frontend with 2 updates (#118) @dependabot[bot]
- Settings: flags, layout & copy fixes + plugin update disk hygiene (#114) @stein155
- feat(speaker): audio notifications via /speaker (replaces PCM) (#113) @stein155
- Redesign the plugin settings UI (iOS-style sections, slider + times fields, dark mode fixes) (#110) @milderdb
- Add Afvalwijzer plugin to the catalog (#107) @milderdb
- plugins: select field type in the manifest renderer (#109) @milderdb
- display: flicker-free content next to the firmware standby clock (#108) @milderdb
- Show internet radio icon on SoundTouch displays (#105) @milderdb
- Central OLED display manager + /api/display plugin endpoints (#106) @milderdb
- feat(plugins): hide version, flag updates with a "!" badge (#104) @milderdb
- feat: browse TuneIn by genre/region (#101) @milderdb
- fix: security & robustness bugs from an adversarial audit (#103) @milderdb
- fix: four bugs found by an adversarial audit (#102) @milderdb
- test(frontend): cover API client, MiniPlayer, StationLogo, optimistic playback (#100) @milderdb
- refactor(frontend): migrate the web UI to TypeScript (strict) (#99) @milderdb
- feat(settings): iOS-style Wi-Fi network settings (#62) @stein155
- fix(icy): decode Latin-1/Windows-1252 now-playing metadata (#98) @stein155
- test(sim): cover the simulator's wire format + state machine (#97) @milderdb
- refactor(frontend): component-per-folder layout with styled/index.js (#96) @milderdb
- chore: build the frontend on Node 24 (current LTS) (#95) @milderdb
- fix(frontend): resolve 8 UI state/lifecycle bugs (#94) @milderdb
- feat(display): show the live track on the speaker's own display via marge (#93) @milderdb
- refactor(web): extract telnet LAN-block into internal/telnet (#92) @milderdb
- refactor(speaker): own native-preset play and ContentItem XML (#91) @milderdb
- refactor: extract now-playing enrichment from web into internal/nowplaying (#90) @milderdb
- refactor: extract self-update engine from web into internal/update (#89) @milderdb
- feat(ui): tidy plugins UI — collapsible settings, no run-status text (#88) @stein155
- docs: regenerate README screenshots in English (#87) @stein155
- Ship Apple Home as a plugin (catalog entry + generic QR field) (#86) @stein155
- fix(ui): plugin catalog alignment + localised catalog strings (#85) @stein155
- Dark mode + gradient backdrop, cleaner scrolled header (#84) @stein155
- fix(ci): pass --repo to gh pr comment in beta publish job (#83) @stein155
- feat(security): settings login + close telnet immediately (#81) @stein155
- Runtime plugin host: install & manage plugins (ring, later HomeKit) from the UI (#79) @stein155
- feat(security): activate release signing; harden beta build workflow (#82) @stein155
- fix(security): harden logo proxy, SSRF, MQTT and update path (#80) @stein155
- chore(deps-dev): bump vitest from 4.1.9 to 4.1.10 in /frontend in the npm-development group (#78) @dependabot[bot]
Install / update
Install or update wirelessly from your computer:
curl -fsSL https://raw.githubusercontent.com/stein155/retouch/main/install/install.sh | sh