Commit graph

40 commits

Author SHA1 Message Date
Vadym Samoilenko
a2358ba01c fix: correct Kling API params per official docs
- camera_control: only kling-v1 and kling-v1-5 support it (not v3)
- For preset types (down_back etc.), config must be absent — only
  'simple' type uses config fields
- camera_control and image_tail are mutually exclusive in I2V
- cfg_scale not supported by kling-v2.x models — now skipped
- duration sent as string to match API examples
- v3/v3-omni removed from camera control UI list

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 18:38:31 +01:00
Vadym Samoilenko
746cd42f6c fix: restrict camera control to supported models; update model list
Camera/motion control is only supported by kling-v1, kling-v1-5,
kling-v3, kling-v3-omni. Backend silently drops the camera_control
field for all other models. Frontend hides the camera control UI
and auto-clears the selection when switching to an unsupported model.

New models added: kling-v3-omni, kling-video-o1, kling-v1 (cam ctrl),
kling-v2-master. Duration validation loosened for v3/v3-omni (3-15s).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 18:35:34 +01:00
Vadym Samoilenko
fa7c67af6a refactor: move video prompt optimization to backend
Client-side Gemini calls were hitting the frontend API key's rate limits
and exposing the key in the browser. The optimizer now POSTs to
video_api.php (action=optimize_prompt) which calls Gemini server-side
using the backend key.

Rate-limited responses (429) silently fall back to the simple prompt
generator without showing an error.

Removes the @google/generative-ai import from VideoGenTab.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 18:32:30 +01:00
Vadym Samoilenko
866ff126d7 fix: nginx client_max_body_size 100M + silent 429 fallback
nginx inside the Docker container defaults to 1MB body limit —
base64 image payloads exceed this and return a 413 HTML page,
causing the "Unexpected token '<'" JSON parse error on video_api.php.

Gemini 429 rate limit errors on prompt optimization now fall back
silently instead of surfacing an error to the user.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 18:21:36 +01:00
Vadym Samoilenko
c030b47fcf fix: upgrade prompt optimizer to gemini-2.0-flash
gemini-2.0-flash-lite has lower RPM limits even on paid plans.
gemini-2.0-flash has higher quotas and better quality optimization.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 18:14:24 +01:00
Vadym Samoilenko
07aa52438c fix: accept any relative URL for Kling video validation
After changing the video URL prefix to /lux-studio/api/generated_videos/,
the old /generated_videos/ check caused a false-positive validation error.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 17:42:25 +01:00
Simeon.Schecter
95e6946807 feat: Kling integration, prompt optimizer rework, and stability fixes
Kling video generation:
- Full T2V, I2V, extend, and lip sync workflows via Kling API
- V3, V2.6, V2.5 Turbo, V2.1 Master, V1.6 model support
- Resolution selector (720p std / 1080p pro) with model constraints
- Native audio toggle with dialogue input for Kling
- Video ID tracking for extend and lip sync chains
- Camera control presets (pan, tilt, arc)

Prompt optimizer rework:
- Intent-preserving refinement (camera, action, mood are sacred)
- Mode-aware: T2V adds subject/environment detail, I2V describes only motion
- Reference images analyzed for content, not re-described
- Platform-specific quality anchors woven into positive prompt
- Negative prompts removed from optimizer (positive-only approach)
- 15-60 word target for concise, effective prompts

Backend fixes:
- Gemini responseModalities: ['TEXT', 'IMAGE'] for Flash model compatibility
- Veo first-frame resize to exact target dimensions (prevents letterboxing)
- Session directory re-creation in saveImage (auto-cleanup race condition)
- Kling API error logging with HTTP codes and payload details
- Lip sync endpoint updated to /v1/videos/lip-sync with video_id

Frontend stability:
- Tab persistence via CSS hidden (generation survives tab switches)
- Project switch protection (confirm dialog when generation in progress)
- Retina thumbnails (480px/q0.8) for library grid — prevents OOM crashes
- Thumbnail backfill migration for existing project items
- Project items refresh on tab visibility and after save
- 1:1 aspect ratio container for Kling videos
- Expanded video view matches library modal behavior

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 21:51:03 -04:00
Simeon.Schecter
696d8a985c style: tabs flush left with generous logo spacing, bump to 14px
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:46:10 -04:00
Simeon.Schecter
0fdb43fecf style: simplify storyboard exports — let the images speak
PNG: Remove card backgrounds, borders, header bars, and empty
annotation text. Just images in a grid with a small frame number.

PDF: Reduce margins and label reservation to maximize image size.
Frame number and annotation condensed to one small line below.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:44:46 -04:00
Simeon.Schecter
b94c5c6b2a style: separate tabs from logo, spread across header
Tabs now float between logo and user info via justify-between,
giving the logo more breathing room.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:40:15 -04:00
Simeon.Schecter
a7d409b7fc style: remove icons from tab navigation, text only
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:39:05 -04:00
Simeon.Schecter
02dd46e9d7 style: modals use bg-slate-800 to pop above dark overlay
Slate-925 panels are nearly invisible against black/60 overlays.
Modals need to be clearly visible, so they use slate-800.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:26:57 -04:00
Simeon.Schecter
b522f94ca9 style: minimize panel contrast — slate-925 panels on slate-950 ground
Custom slate-925 (#080d1b) sits just one shade above the 950 ground,
making panels barely visible. The content is the interface, not the
chrome. Reverts the inverted-depth experiment.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:23:44 -04:00
Simeon.Schecter
43833d7474 style: invert depth — lighter surround, darker content wells
Page ground from bg-slate-950 to bg-slate-800. Content panels stay
bg-slate-900, creating inset wells rather than floating cards.
Like a Braun control panel with recessed dark areas.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:21:20 -04:00
Simeon.Schecter
2a52106ba0 style: restore uppercase tracking on section labels in Image/Video Gen
Zone markers (Preset, Camera Body, Lens Kit, Duration, etc.) get
uppercase + wide tracking like Braun hi-fi category labels. Modal
form labels and interactive toggles stay sentence case.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:19:30 -04:00
Simeon.Schecter
efe5757edf style: add JetBrains Mono for data/spec text
Second typographic voice for timestamps, dimensions, file sizes,
session IDs, costs, word counts, resolution specs, and version number.
Like lens barrel markings — the data speaks in mono, the UI in sans.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:15:05 -04:00
Simeon.Schecter
a096cd8d88 style: standardize backgrounds to strict 5-tone scale (950/900/800/700/600)
Remove all opacity variants (bg-slate-900/50, bg-slate-800/50, etc.) in
favor of opaque tones. Inputs standardized to bg-slate-800 (Elevated).
hover:bg-slate-800 promoted to hover:bg-slate-700 (Interactive tier).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:06:34 -04:00
Simeon.Schecter
fdfb8ceb2e style: restore purple Optimize button in Image Gen and Video Gen
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 23:00:28 -04:00
Simeon.Schecter
7051d260fe style: remove tab underline indicator, let type color speak
Active tab is already distinguished by gold text color. The
underline was redundant decoration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:56:55 -04:00
Simeon.Schecter
af3f8f0536 style: revert toggle buttons back to gold
Off-white toggles did not improve things -- gold selected state
was already working well. Reverts 4c4c857.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:55:28 -04:00
Simeon.Schecter
4c4c8575e5 style: change selected toggle buttons from gold to off-white
Replace bg-cinema-gold with bg-slate-200 on all 21 toggle/selector
buttons. Gold now reserved exclusively for primary CTA buttons
(Generate Image, Generate Video). Creates quieter UI that lets
generated images and video stand out.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:52:57 -04:00
Simeon.Schecter
036884bf91 style: remove decorative borders, keep only functional ones
Strip panel/card wrapper borders, section separator borders, tooltip
borders, and modal borders. Remaining borders are all functional:
input fields, focus states, status indicators (green/red/amber),
dashed upload zones, active selection states, and type badges.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:50:20 -04:00
Simeon.Schecter
c5002b8c6b style: drop all type weight from medium (500) to normal (400)
DM Sans at weight 400 is clean and readable — hierarchy now comes
entirely from size, not weight. Lighter overall feel.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:44:32 -04:00
Simeon.Schecter
0093b6dc92 style: Rams refinement on ProjectsTab
Thin font weights, tighten border radii, remove dropdown shadows,
strip uppercase from section headers, flatten video placeholder
gradient, replace indigo/purple action buttons with neutral slate,
consolidate move/select toggles to cinema-gold. Keep type badges
(IMG/VID/KLING) as functional color indicators.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:33:48 -04:00
Simeon.Schecter
c5dcc68056 style: Rams refinement on VideoGenTab
Strip uppercase+tracking from all labels, thin font weights to medium,
tighten all border radii, replace indigo-to-purple gradient with neutral
slate button, flatten container gradient, consolidate indigo workflow
selector to cinema-gold, remove all indigo color references.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:31:53 -04:00
Simeon.Schecter
f1315a1662 style: Rams refinement on CinePromptStudio
Strip uppercase+tracking from all labels, thin font-bold to font-medium,
tighten all border radii, replace indigo-to-purple gradient with neutral
slate button, remove tooltip shadow, consolidate purple focus mode badge
to slate, remove decorative hover:scale on copy button.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:30:14 -04:00
Simeon.Schecter
d8c6f8db29 style: Rams refinement on VideoPlayer and StoryboardEditor
Tighten border radius (rounded-xl/lg→rounded), remove decorative
shadows, replace indigo Generate Video button with neutral slate,
thin heading font weights to medium.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:28:44 -04:00
Simeon.Schecter
6ba469c7b9 style: Rams refinement on LoginPage and AppContent
Thin font weights (bold→medium, semibold→medium), tighten border
radius (rounded-lg→rounded), reduce shadow (xl→sm) on login card.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 22:27:31 -04:00
Simeon.Schecter
35d19e3a25 Add Kling 3.0 models (V3 and V3 Omni) to video generation
- Add kling-v3 and kling-v3-omni to model selector and backend validation
- Set V3 as the new default model (was V2.6)
- V3 Omni includes built-in audio generation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 21:30:00 -04:00
Simeon.Schecter
b9f35de5ef Add Kling AI video generation engine alongside Veo 3.1
Integrates Kling AI as a second video engine in the Video Gen tab with
three cinema-relevant workflows: Generate (T2V/I2V with camera control),
Extend (video extension up to 3 min), and Lip Sync (image + audio).

Backend: New kling_api.php with pure PHP JWT auth, all workflows, async
status polling, and CDN video download. Env files updated with Kling
credential placeholders.

Frontend: Engine selector toggle, workflow-specific settings panels,
Kling polling, engine badges in ProjectsTab, rerun support.

Also includes image model toggle changes (Gemini Pro/Flash).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 18:22:39 -04:00
Manish Tanwar
988429a759 Merge origin/main: add custom presets, identity protection, video negative prompts, UX improvements
Resolved conflict in AppContent.jsx: combined MSAL fix (unconditional hooks) with
new features (Local Developer display name, conditional logout button).

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-02-25 17:43:38 +05:30
Manish Tanwar
3596826cc4 Fix MSAL auth (redirect mode, initialize), increase PHP timeouts, update CLAUDE.md
- main.jsx: always initialize MSAL with initialize() before rendering (MSAL v3 requirement)
- main.jsx: always wrap with MsalProvider regardless of SSO toggle
- AppContent.jsx: only show login gate when isSSOEnabled() is true
- LoginPage.jsx: switch loginPopup → loginRedirect for incognito compatibility
- authConfig.js: add navigateToLoginRequestUrl: false
- api.php: set_time_limit(120) to prevent Imagen 3 timeout
- video_api.php: set_time_limit(300) to prevent Veo polling timeout
- CLAUDE.md: fix IndexedDB schema, add AppContent/MSAL pattern, Vite proxy routes, missing packages

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-02-25 17:42:20 +05:30
Simeon.Schecter
836e6f9c06 Add custom presets, identity protection, video negative prompts, and UX improvements
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>
2026-02-16 20:58:23 -05:00
Manish Tanwar
3602cfd73b Update-video format api for reference images 2026-01-28 01:37:17 +05:30
Manish Tanwar
0017cc323d Update-thumbnail 2026-01-28 00:10:09 +05:30
Manish Tanwar
e1067b551e update 2026-01-27 18:36:53 +05:30
Manish Tanwar
660c8d7fa1 Image Fix 2026-01-19 18:04:16 +05:30
Manish Tanwar
278ace76b4 Local and Server Deployment 2026-01-19 11:53:17 +05:30
Manish Tanwar
a5434f5679 Deployment files update 2026-01-16 17:40:58 +05:30
Manish Tanwar
165a10694a Restructuring of files and Local Tested 2026-01-13 14:52:37 +05:30