Commit Graph

6 Commits (01d293ebe269cbf18c5f146d0eb4c9ecd460b5da)

Author SHA1 Message Date
Sean Doran 01d293ebe2
fix: build frontend and fix tsc errors blocking the build
vite.config.ts used defineConfig from 'vite' which doesn't accept the
'test' key — switch to 'vitest/config' which extends it. Also type the
onChange test helper as (knob: KnobConfig) => void instead of the overly
broad ReturnType<typeof vi.fn>. Run npm run build to ship the compiled
static assets.
2026-03-07 23:16:05 -05:00
Sean Doran 42fa2fb78a
Revert "chore: build frontend and fix tsc config for vitest/config import"
This reverts commit 9bebb13b2c.
2026-03-07 23:15:28 -05:00
Sean Doran 9bebb13b2c
chore: build frontend and fix tsc config for vitest/config import 2026-03-07 23:14:32 -05:00
Sean Doran fc9ac17f1e
feat: replace free-text target fields with device/app dropdowns
- sink_volume and source_volume knobs now show a dropdown of active
  PulseAudio/PipeWire output/input devices (monitors excluded), with
  the system-default device marked in the label
- app_volume knob shows a dropdown of running apps (was already a
  dropdown, previously had a textarea for group_volume)
- group_volume knob shows a <select multiple> listbox so several apps
  can be selected at once with ctrl/shift-click
- Add GET /api/sinks and GET /api/sources backend endpoints
- Add fetchSinks() / fetchSources() in api.ts with AudioDevice type
- Load sinks and sources in App.tsx alongside running apps on refresh
- All 23 frontend tests pass
2026-03-06 20:44:56 -05:00
Sean Doran 88216187d4
feat: show running PulseAudio apps in a dropdown for easier knob targeting
- Add GET /api/apps endpoint that queries pulsectl for active sink inputs
  and returns deduplicated app names (application.name + process.binary)
- Add fetchRunningApps() API helper (returns [] on any failure, non-fatal)
- Fetch running apps on page load; expose a Refresh button in the Knobs
  section header to re-query without a full page reload
- KnobCard app_volume: wire target input to an HTML5 <datalist> so the
  browser shows a native autocomplete dropdown of running apps
- KnobCard group_volume: add a select + Add button beneath the textarea so
  users can pick a running app and append it without typing
- CSS: style the app-picker row and the compact refresh button in h2
2026-02-28 17:29:52 -05:00
Sean Doran 8f8d9ac3fa
feat: add React/Vite PWA web UI with FastAPI backend
- FastAPI + uvicorn server (turnup-ui) serving config API and static files
- React + TypeScript frontend: connection, global LEDs, per-knob/button
  cards, preset save/load/apply, toast notifications, dark theme
- Vite builds into src/turnup/ui/static/ so no Node.js needed at install time
- PWA assets (manifest, service worker, icon) in ui/public/
- turnup-ui.service systemd user unit; enabled globally via turnupd.install
- PKGBUILD: add python-fastapi + python-uvicorn deps, install UI service file
- pyproject.toml: ui extras group, turnup-ui entry point
2026-02-27 21:25:16 -05:00