Script pane, realtime peer sync, and logout button

- Script pane: PDF tab beside annotations; "Add script annotation" arms
  highlight mode on the draft, ✓/✕ to confirm/cancel, auto-scrolls to the
  active annotation's highlights during playback. Adds Project.script.
- Realtime: Django Channels websocket per project broadcasts attributed
  scene deltas after each save; peers merge them in (keeping local drafts).
- Logout link in the editor project-bar.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Your Name 2026-06-29 10:52:46 -04:00
parent 595ac5ba72
commit d3c8dcbdf2
13 changed files with 307 additions and 11 deletions

View file

@ -31,6 +31,8 @@ ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'testserver']
# Application definition
INSTALLED_APPS = [
'daphne', # ASGI server; must precede staticfiles so runserver uses it
'channels',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
@ -54,6 +56,11 @@ MIDDLEWARE = [
ROOT_URLCONF = 'server.urls'
# Realtime: push scene deltas to peers over websockets. In-memory layer is fine
# for a single process; swap to channels_redis when you run more than one worker.
ASGI_APPLICATION = 'server.asgi.application'
CHANNEL_LAYERS = {'default': {'BACKEND': 'channels.layers.InMemoryChannelLayer'}}
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',