• - Cookie-based viewer identity: first chat attempt prompts for a nickname
      (inline modal, not a blocking native prompt()), generates a client-side
      uid, both persisted in cookies for 1 year
    - Right panel is now a live chat feed (username + message + status) with
      an input row below it, replacing the old bare prompt textarea
    - New POST /api/chat: runs a moderation check (banned-word blocklist —
      ponytail: starter list, not a real content policy, swap in the real one)
      before a message is allowed into the existing prompt-matching/generation
      pipeline; rejected messages still show in the chat log, just flagged
    - New GET /api/chat: recent chat history (capped at 300), polled every 3s
    - Left queue simplified to prompt + submitter name only — dropped the
      resolution/duration/date metadata that was there before
    - schedule/promptQueue now carry `requestedBy`/`nickname` through to
      /api/live/state so the left queue and "now playing" bar can show who
      asked for what
    - /api/prompt kept working (now a thin wrapper over the same
      submitPromptToQueue() the chat endpoint uses) for direct API testing
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    yibo authored
     
    Browse File »
  • Inspected infiniteslop.ai's computed styles directly (fonts, colors, button
    shapes) rather than guessing from memory:
    - Pure black background, Tahoma body font (matches their retro-web feel)
    - Shrikhand display font for the logo mark, pink drop-shadow for pop
      (their black stroke doesn't read on a black background, so swapped)
    - Hot-pink accent (#ff90e8, their exact "Say" button color) for active
      tabs, the primary CTA button, and active-row/tab indicators
    - White pill buttons with bold black text for secondary controls (tabs,
      mute toggle) — matches their unmute/chat button treatment
    
    Layout structure (queue-left/player-center/input-right, mobile sub-tabs,
    no native video controls) is unchanged — this is a re-skin, not a layout
    clone, since that structure was built to this project's own requirements.
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    yibo authored
     
    Browse File »
  • - library.json: all 303 real entries now have casual zh/en names (prompt/promptEn)
    - ingest.js: fixed a data-loss bug where the H3 console fetch was hardcoded
      to limit=200, silently dropping older jobs (and their edited names) as new
      content pushed them out of the window; sync is now a non-destructive
      merge with a much higher fetch limit
    - ingest.js: replaced the prefix-only test-job regex with a length-gated
      word-boundary check after 5 infra smoke-test clips slipped past it
      ("test verify", "cancel test - ...", "final flip test") — no false
      positives against the 303 real entries
    - deleted the 5 stray test clips (also removed on the H3 console side)
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    yibo authored
     
    Browse File »
  • Static video-gen testing tool (MiniMax native API, then fal.ai) that grew
    into an AI drama live channel backed by an internal H3 Console GPU cluster:
    shared virtual-playhead live playback, prompt submit/match/generate queue,
    admin CRUD for the video library, and bilingual (zh/en) semantic clip names.
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
    yibo authored
     
    Browse File »