4db7165797
- Restructured project into /app, /server, /client with run.py entry point - WSServer (QWebSocketServer) with log_signal, start/stop, client tracking - HTTP server serves /client on port 8080 - Vanilla JS client: faders, toggles, transport, drag-to-arrange, lock/save layout - Start Tablet button + floating Tablet log window in app UI - Preset broadcast on load/switch, DAW state relay, hardware sync via widget_update - Widget colors synced from app palette, toggle state fixed (sends 0/127 correctly) - Layout saved per preset UUID back to presets.json Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
26 lines
705 B
Python
26 lines
705 B
Python
import os
|
|
import threading
|
|
from http.server import SimpleHTTPRequestHandler, HTTPServer
|
|
|
|
_CLIENT_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "client")
|
|
|
|
|
|
class _Handler(SimpleHTTPRequestHandler):
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, directory=_CLIENT_DIR, **kwargs)
|
|
|
|
def log_message(self, fmt, *args):
|
|
pass
|
|
|
|
|
|
def start_http_server(port=8080):
|
|
server = HTTPServer(("0.0.0.0", port), _Handler)
|
|
thread = threading.Thread(target=server.serve_forever, daemon=True)
|
|
thread.start()
|
|
return server
|
|
|
|
|
|
def stop_http_server(server):
|
|
if server:
|
|
threading.Thread(target=server.shutdown, daemon=True).start()
|