Features:
- Custom user presets: Create, edit, delete, export/import lighting presets
stored in IndexedDB (useCustomPresets.js hook, DB schema v3→v4)
- Identity protection: LLM-mediated name-to-style translation prevents
generating recognizable real people while preserving style references.
Active divergence breaks likeness convergence. Defense-in-depth across
both prompt paths + generateImage() fallback
- Video negative prompts: AI auto-generates suggested negative prompts
during Veo 3.1 prompt optimization. Collapsible editable textarea
teaches creatives what to exclude. Sent as negativePrompt parameter
- Generate Video from Library: Image preview modal now has a gold
"Generate Video" button that loads the image as a first frame reference
- Expanded preview overlays: Maximize button on generated images and
videos opens a large centered overlay (90vw, not fullscreen)
- Move items between projects: ArrowRightLeft button in Library list
and preview modal
- Preset display in Library: Shows which preset was used per generation
Backend improvements:
- video_api.php: negativePrompt passthrough to Veo 3.1 parameters,
lastFrame interpolation works with fast model (8s required)
- api.php: Exponential backoff retry (3 attempts), increased memory/
POST limits for 4K images, user-friendly 500 error messages
- enhance_prompt.php: User lighting intent now respected over preset
defaults (critical fix for night/sunset scene descriptions)
- session_manager.php: Fix images subdirectory creation race condition
Infrastructure:
- SSO made conditional via VITE_SSO_ENABLED env variable — hooks only
called when SSO is active, local dev bypasses auth cleanly
- .gitignore updated for root-level generated_videos/, uploads/,
config.php, backend/php.ini, Prompt_Studio/
- Wire up dead getNegativeConstraints() code in both prompt paths
No env files or secrets included. Production deploys via deploy.sh
using .env.production templates (SSO_ENABLED configurable per env).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>