| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix: harden Sonilo sound generation Stream local video uploads, parse the official audio response shape, and persist asynchronous Sonilo sound jobs with recovery checkpoints. Shared-path impact: ElevenLabs remains synchronous, exact asset IDs retain priority, ambiguous shorthand now fails explicitly, and embedded MCP ports remain stable across relaunches. Validation: TypeScript build, zero-warning lint, affected checks, production build, 103 full test segments, Sonilo protocol/job integration checks, and a real DeepSeek submit_sound tool call. | 2 个月前 | |
fix: harden Sonilo sound generation Stream local video uploads, parse the official audio response shape, and persist asynchronous Sonilo sound jobs with recovery checkpoints. Shared-path impact: ElevenLabs remains synchronous, exact asset IDs retain priority, ambiguous shorthand now fails explicitly, and embedded MCP ports remain stable across relaunches. Validation: TypeScript build, zero-warning lint, affected checks, production build, 103 full test segments, Sonilo protocol/job integration checks, and a real DeepSeek submit_sound tool call. | 2 个月前 | |
feat(providers): add opt-in Fal.ai image and video generation Adds a curated Fal.ai catalog behind FAL_KEY, opt-in and inert until a key is set: image and video model pickers in Settings, per-model constraints in the submit_image / submit_video tool schemas, queue submission that persists the request ID before polling so a resume never pays for a second job, and an endpoint allow-list on the saved checkpoint. Rebased onto main by the maintainer: the key names moved to the split keystore-names module, the video unions and validator keep the OFox provider alongside fal, the Claude Code status argument is preserved in the vendor pane, the tool-schema asset was regenerated, and the Fal catalog note moved to its own component to keep settingsVendorPane.tsx within the 500-line gate. Full CI (lint, npm test, agent-skill contract, build, macOS export frame synchronization) passes on the rebased branch. | 1 个月前 | |
fix(quality): revive watchdogs, fix orphan checks, and unify skill count Resurrect two silent quality gateways and wire them into the test suite, catch up CHANGELOG and skill-count docs, and convert every orphaned verify/check file into a tracked, npm-wired regression. Quality watchdogs (now in pretest): - verify:shortcuts: catalog count 54->56, keymap scope, native-copy - verify:i18n: check-i18n.mjs now exempts test files; 4 real UI files wrapped in t(); 62 missing en keys added across 9 dict slices - Fixed stableOverrideKeys merging distinct legacy caption overrides when wordRef is empty (3 overrides collapsed to one key) - Fixed buildFollowupWidget silently dropping option-less choice fields (now degrades to a prompt line) - Fixed apply_script repack being silently rejected by the same-track overlap guard: reorderTrackItems now accepts explicit starts and apply_script rebuys atomically per track Docs: - CHANGELOG [Unreleased]: SQLite migration, session-recovery, chat-load-perf, Geist fonts, platform inference routing; fixed link refs - Skill count unified to 26 (README/README_ZH/AGENTS.md/tools.ts) Verify/check cleanup: - Promoted 81 .check.ts to tracked .verify.ts and deleted the originals - Fixed 20+ stale assertions (PROJECT_VERSION 3->7, sourceRevision, caption-track structure, legacy index selectors, shader hash re-pins, abort wiring refactor, stock orientation enum) - 8 new verify groups (editor/captions/agent-tools/components/ media-persist/export-gl/server-extra/sqlite-migration) wired into pretest - Orphan verify count: 158 -> 0 Full npm test, tsc -b --force, and npm run lint all pass. | 2 个月前 | |
fix: export QA duration, overwrite ghost tracks, IDB connection leak, download revocation, normalize-media errors - export-plan: expected durationSeconds must follow the output fps (retimeFps), not the timeline fps. A retime pass keeps the frame count and retimes the container, so every fps-resampled export reported a duration far off the produced file and failed its own duration QA (duration_mismatch) plus a wrong export-history duration. - storeCommandBuilder: fold staged track.create actions into the timeline state BEFORE planning an overwrite placement. The overwrite commits via setFullState, which used to replace the timeline without the just-staged tracks and left the new item referencing a ghost track (no kind, wrong lane rendering). - sharedKv / mediaBlobStore / plugins store: reuse a single IndexedDB connection per document. Opening a fresh connection per read/write and never closing leaked connections until the browser refused new ones, at which point persistence silently degraded to the in-memory store. - generate-tool-handlers (FCPXML export) / media-export: delay URL.revokeObjectURL after anchor.click(). A synchronous revoke can cut the download short before the browser starts reading the blob - the same failure exportFiles.ts already documents and avoids. - normalize-media: wrap the request handler so oversized/invalid JSON bodies get a 400 response instead of an unhandled rejection and a hanging socket. | 1 个月前 | |
fix: harden Sonilo sound generation Stream local video uploads, parse the official audio response shape, and persist asynchronous Sonilo sound jobs with recovery checkpoints. Shared-path impact: ElevenLabs remains synchronous, exact asset IDs retain priority, ambiguous shorthand now fails explicitly, and embedded MCP ports remain stable across relaunches. Validation: TypeScript build, zero-warning lint, affected checks, production build, 103 full test segments, Sonilo protocol/job integration checks, and a real DeepSeek submit_sound tool call. | 2 个月前 | |
feat: land professional timeline, durable jobs, and safe media flows Add slip/rate-stretch, nested sequences, multicam sync, durable generation/export recovery, media intelligence, and hardened MCP/media boundaries while keeping the implementation local-first and cross-platform. | 2 个月前 | |
fix: harden Sonilo sound generation Stream local video uploads, parse the official audio response shape, and persist asynchronous Sonilo sound jobs with recovery checkpoints. Shared-path impact: ElevenLabs remains synchronous, exact asset IDs retain priority, ambiguous shorthand now fails explicitly, and embedded MCP ports remain stable across relaunches. Validation: TypeScript build, zero-warning lint, affected checks, production build, 103 full test segments, Sonilo protocol/job integration checks, and a real DeepSeek submit_sound tool call. | 2 个月前 | |
feat: harden media captions and offline editing | 2 个月前 | |
feat(providers): add opt-in Fal.ai image and video generation Adds a curated Fal.ai catalog behind FAL_KEY, opt-in and inert until a key is set: image and video model pickers in Settings, per-model constraints in the submit_image / submit_video tool schemas, queue submission that persists the request ID before polling so a resume never pays for a second job, and an endpoint allow-list on the saved checkpoint. Rebased onto main by the maintainer: the key names moved to the split keystore-names module, the video unions and validator keep the OFox provider alongside fal, the Claude Code status argument is preserved in the vendor pane, the tool-schema asset was regenerated, and the Fal catalog note moved to its own component to keep settingsVendorPane.tsx within the 500-line gate. Full CI (lint, npm test, agent-skill contract, build, macOS export frame synchronization) passes on the rebased branch. | 1 个月前 | |
feat(providers): add StepFun/BytePlus LLM, WaveSpeed/BytePlus image, BytePlus video, and Inworld/Fish Audio/Speechify TTS Adds new agent-brain, image, video, and TTS providers following each capability's existing conventions: - LLM: StepFun and BytePlus ModelArk (data-driven preset registry, no bespoke code needed beyond the preset entry + vendor icon). - Image: WaveSpeed (async task submit/poll) and BytePlus Seedream. - Video: BytePlus Seedance, sharing the existing seedance2/Volcengine Ark task API and reference limits via a config-driven refactor of generateSeedance() instead of duplicating it. - Voice/TTS: Inworld, Fish Audio, and Speechify (minimal text+voiceId+ modelId surface, matching the simplest existing provider shape). BytePlus image/video share one BYTEPLUS_API_KEY/BASE_URL pair (same convention as MiniMax's shared key across its four capabilities), separate from LLM_BYTEPLUS_* used for Agent chat. Also fixes the settings panel's "test & discover models" button/copy to key off any field with discoverableModel:true instead of a hardcoded llm/ page-key prefix, and wires model discovery into the new BytePlus image/video probes so their model pickers work the same way the LLM pages already did. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> | 2 个月前 | |
feat(voice): support configured Doubao speaker IDs Add a default 音色 ID setting and pass user-supplied Volcengine speaker IDs verbatim as references[].speaker. Use the saved speaker in the connection probe and expose it to the agent prompt; keep curated aliases working. | 6 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 6 天前 |