Commit Graph

45 Commits

Author SHA1 Message Date
ComputerTech effb52c5df fix: revert listener port to 5001; set SRT port to 5005 via mediamtx_srt_port config 2026-04-04 12:39:03 +01:00
ComputerTech 498832bdcb chore: change listener port from 5001 to 5005 2026-04-04 12:36:37 +01:00
ComputerTech 20e56f37b8 Fix Qt client music not playing on listener page
Replace PulseAudio monitor capture with direct file streaming.
Qt6's FFmpeg/PipeWire-native audio backend ignores PULSE_SINK so
the monitor captured silence. StreamingWorker now receives the
playing file path via a command queue and pipes it through ffmpeg
-re (real-time rate) directly to the server as audio_chunk events.

- Add switch_file() / stop_file() to StreamingWorker
- Replace ffmpeg pulse capture loop with file-based cmd loop
- DeckWidget.play() calls switch_file(path, position_ms)
- DeckWidget.pause()/stop() calls stop_file()
- Add now_playing socket relay in server.py
- listener.js handles now_playing event to show track title
- Add deck_glow emission from Qt deck play/pause/stop
2026-04-03 14:18:28 +01:00
ComputerTech 35adfa7feb Tauri v2 migration: asset protocol, desktop CSS polish, absolutePath in library 2026-03-28 11:49:00 +00:00
ComputerTech d2e6e2a7d7 Update script.js, settings.json; remove MOBILE_IMPROVEMENTS.md 2026-03-28 11:24:46 +00:00
ComputerTech eb3e66ba61 Implement Duplicate Upload Prevention
- Server: /upload rejects existing files with 409 Conflict
- Web: handleFileUpload skips duplicates with toast feedback
- Qt: upload_track blocks duplicate imports and uploads with dialog alert
2026-03-12 19:12:07 +00:00
ComputerTech 44b36bf08d Comprehensive DJ Panel Improvements:
- Added toast notification system for visible feedback
- Implemented settings persistence via localStorage
- Added auto-crossfade logic (smooth 5s transition)
- Removed ~100 lines of dead SERVER_SIDE_AUDIO code
- Fixed seekTo speed bug by capturing current playbackRate
- Debounced drawWaveform with requestAnimationFrame
- Added 'SETTINGS' header and close button to settings panel
- Wired loadFromServer errors to toast notifications
- Stacked control buttons vertically to clear crossfader
2026-03-12 16:52:21 +00:00
ComputerTech 2e64870daa UI improvements: glow effects, deck colors, listener count, remove black bar, mobile header fix 2026-03-11 19:34:32 +00:00
ComputerTech af109381c1 Reduce buffering: 250ms DJ chunks, 1024-chunk preroll, X-Accel-Buffering header 2026-03-10 19:32:24 +00:00
ComputerTech 43a3e692fc Fix upload error handling; log 413 nginx size limit clearly 2026-03-10 19:13:39 +00:00
ComputerTech 1fa6887efd Fix stream URL detection for custom domains; add listener_url config 2026-03-10 19:07:04 +00:00
ComputerTech dfccec2b48 Stability fixes: loop end-of-track guard, DJ disconnect grace period, StreamingWorker race condition fix, various audit cleanups 2026-03-10 18:53:17 +00:00
ComputerTech 8c3c2613b1 Fix broadcast broken: reconnect loop, listener stuck on waiting
- server.py: Increase ping_timeout 10->60, ping_interval 5->25 to prevent
  frequent socket disconnects during audio streaming
- server.py: Guard dj_start() against reconnect loops - only clear pre-roll
  and emit broadcast_started on a fresh broadcast, not on DJ reconnects
- listener.js: Add polling fallback to transports (websocket-only caused
  silent failure on upgrade error), set reconnectionAttempts to Infinity
- script.js: Same transport fallback fix for DJ panel socket
- techdj_qt.py: Add _broadcast_started flag to StreamingWorker.on_connect
  so streaming_started signal only fires once; reconnects resume silently.
  Reset flag in stop_streaming() for clean next session.
2026-03-09 20:47:52 +00:00
ComputerTech abf907ddfb Fix 6 bugs: remove dead listener code from DJ panel, fix StreamingWorker socket reuse, fix GUI-blocking time.sleep, fix abort import
- script.js: Remove ~500 lines of dead listener mode code (initListenerMode, enableListenerAudio, setListenerVolume, startListenerVUMeter, getMp3FallbackUrl, listener variables). Listener page now uses listener.js exclusively.
- script.js: Remove ?listen=true detection from DOMContentLoaded that could activate broken listener UI on DJ panel.
- script.js: Clean up initSocket() to remove dead listener mode detection logic.
- index.html: Remove dead #listener-mode div (now served by listener.html).
- server.py: Move 'abort' import to top-level Flask import instead of per-request import.
- techdj_qt.py: Fix StreamingWorker to create fresh socketio.Client on each streaming session, preventing stale socket state on reconnect.
- techdj_qt.py: Fix time.sleep(0.2) blocking GUI thread in stop_streaming() by removing it and using try/except for clean disconnect.
2026-03-09 19:16:42 +00:00
ComputerTech df283498eb Add config.json system; fix bugs across server.py, script.js, techdj_qt.py
- Add config.example.json with all options: host, dj_port, listener_port,
  dj_panel_password, secret_key, music_folder, stream_bitrate, max_upload_mb,
  cors_origins, debug (copy to config.json to use)
- server.py: drive host/ports/secrets/CORS/upload limit from config.json;
  fix serve_static to use allowlist only; move re import to top-level;
  fix inconsistent indentation in login/logout/before_request handlers
- script.js: fix undefined decks.crossfader in updateUIFromMixerStatus;
  declare mediaRecorder as a proper let variable
- techdj_qt.py: replace blocking time.sleep poll in YTDownloadWorker with
  non-blocking QTimer; fix fragile or-chained lambda in recording reset
2026-03-09 18:02:47 +00:00
ComputerTech 1f07b87c36 Fix actual root causes: waveform black block, body gradient bleed, JS glow override 2026-03-05 18:02:08 +00:00
ComputerTech 49062cf6de Fix VU canvas black blocks and colored glow-bleed lines 2026-03-05 17:25:40 +00:00
ComputerTech b5ea9e8d01 Final bug sweep: fix event param, remove dead code, dedupe CSS; add .gitignore recordings/ 2026-03-05 14:28:17 +00:00
ComputerTech 12c01faa83 feat: add integrated deck queues and track loop functionality 2026-02-07 20:14:04 +00:00
ComputerTech 6246b26925 Mobile UX improvements: Remove emojis, convert to British English, fix queue navigation and floating buttons
- Removed all emojis from UI (replaced with text labels)
- Converted all American English to British English (initialise, optimise, visualiser)
- Fixed mobile queue section visibility in portrait/landscape modes
- Added proper CSS rules for show-queue-A and show-queue-B classes
- Repositioned floating action buttons to prevent overlap with mobile tabs
- Added responsive button sizing for mobile (50px) and small screens (45px)
- Stacked buttons vertically on screens ≤480px
- Disabled all body::before border effects that were blocking UI
- Fixed crossfader width: 70% in portrait, 100% in landscape
- Removed unnecessary .md files (COMPARISON.md, PYQT5_FEATURES.md, QUICKSTART.md, README_PYQT5.md)
- Updated README.md with British English and removed emojis
2026-02-02 02:37:56 +00:00
ComputerTech 02f72e2372 Fix buffering issue and app bugs: improve stream delivery, fixed reset UI desync, and EQ naming 2026-01-20 18:14:50 +00:00
ComputerTech 69cdbd5b3b Implement comprehensive Mobile UX overhaul: portrait layout, haptics, swipes, and touch optimization 2026-01-18 20:00:13 +00:00
ComputerTech 405efb6472 Add custom keyboard mapping and remove remote stream relay 2026-01-18 14:57:10 +00:00
ComputerTech 508b93125d Optimize Stream: YouTube removal, Latency improvements, Hotel Wi-Fi kit, and Listener sync 2026-01-18 14:16:06 +00:00
3nd3r 81120ac7ea Add remote stream relay feature: relay remote DJ streams to listeners
- Server-side: Added remote URL support in ffmpeg transcoder
- UI: Added relay controls in streaming panel with URL input
- Client: Added start/stop relay functions with socket communication
- Listener: Shows remote relay status in stream indicator
2026-01-03 10:29:10 -06:00
3nd3r 7087d553b0 Use same-origin MP3 stream URL for proxies 2026-01-03 09:54:58 -06:00
3nd3r 2db40e4547 Switch listener streaming to MP3-only 2026-01-03 08:14:03 -06:00
ComputerTech 111f4b347e beep 2026-01-03 14:02:07 +00:00
3nd3r c08ee70fe8 Add listener spectrum visualizer 2026-01-02 23:41:36 -06:00
3nd3r 8cf76c1d71 Fallback to MP3 stream on NotSupportedError 2026-01-02 22:21:17 -06:00
3nd3r da7e1b7276 Add MP3 fallback stream when Opus unsupported 2026-01-02 22:17:45 -06:00
3nd3r af76717871 Use video element for listener MSE playback 2026-01-02 22:13:13 -06:00
3nd3r a5223a01fc Fix listener chunksReceived ReferenceError 2026-01-02 22:10:47 -06:00
3nd3r 1612c21c8e Improve listener error reporting and add auto-retry for empty buffers 2026-01-02 21:59:26 -06:00
3nd3r f048be3640 Fix browser blocked audio by calling play() immediately on user gesture 2026-01-02 21:50:59 -06:00
3nd3r 41d2d57b7e Add codec support check and better buffering status for listener 2026-01-02 21:44:55 -06:00
3nd3r 1a1f389ab7 Fix audio autoplay blocking by creating AudioContext only on user interaction 2026-01-02 21:36:26 -06:00
3nd3r e8163fb9a2 Improve downloading with yt-dlp fallback and fix listener streaming 2026-01-02 21:20:32 -06:00
ComputerTech 5026d39280 hmm 2026-01-02 20:29:45 +00:00
ComputerTech 6ec51a5768 hmm 2026-01-02 20:22:01 +00:00
ComputerTech 28e2994649 aaa 2026-01-02 20:15:32 +00:00
computertech312 0fb7bc6f9e moo 2026-01-02 20:00:10 +00:00
Colby Lipsett b726180083 Upload files to "/" 2026-01-02 19:37:56 +00:00
Colby Lipsett da54fa9bbb Delete script.js 2026-01-02 19:37:30 +00:00
Colby Lipsett ec1735b9e3 Upload files to "/" 2026-01-02 18:31:55 +00:00