08a430ad9d
Frontend:
- Extract ProjectMeta to types/project.ts as single source of truth
- Add utils/projectMeta.ts with buildProjectMeta(), migrateMeta(), BLANK_META_OVERRIDES
- Refactor saveMetaToLocalFile() from 50+ lines to ~10 lines
- Refactor initProjectStore() with BLANK_META_OVERRIDES to prevent field leakage
- Fix createNewProject() reset logic using BLANK_META_OVERRIDES
- Remove all actualDuration/audioStartTime/audioEndTime fallback in VideoGeneration.tsx
- Add strict assertions in computeAssignedIntervals() (missing data throws)
- Remove 4 lines of dead code (commented imports, redundant disabled, dangling JSDoc)
- Pre-fill actualDuration in adaptScriptShots() and ScriptCreation handleFieldChange()
- Fix fs:allow-exists permission scope for external file paths
Backend:
- Fix extract_project_id_from_filename() rsplit bug (always returned None)
- Fix utils.rs path casing ("Projects" -> "projects")
- Add Vidu callback HMAC-SHA256 signature verification with nonce replay protection
- Update docs/vidu-tts-api.md with callback verification chapter