| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(library): expand installed extension details | 2 个月前 | |
feat: sync extension discovery with resource catalog | 2 个月前 | |
feat(library): expand installed extension details | 2 个月前 | |
feat: sync extension discovery with resource catalog | 2 个月前 | |
feat(library): expand installed extension details | 2 个月前 | |
lint: clear the 10 release-pipeline warnings - skill-loading.verify: 4 unnecessary regex escapes (" in literals) - media-dir: control-char check rewritten per codepoint (no-control-regex), unused catch binding dropped - ResourceBrowser: split PreviewCleanup context + hook into ResourcePreviewContext.ts (only-export-components); imports updated in FxThumb/TransitionThumb - transitionPreview: split previewTransitionType into transitionPreview.ts; component imports disambiguated with .tsx - useExportDialogModel / TimelineComposition: pass/construct the exact fields instead of the whole state/status object, making the effect deps truthful (oxlint-disable did not suppress the built-in react-hooks rule in this setup) npm test 137 green, tsc -b + build green. | 2 个月前 | |
fix(media): recount media that lands after a frame-rate change Pool durations are frame counts at the project rate, but an import counts them at the rate it started with. Switching to 24 fps while a 6 s upload was still transcoding recounted the placeholder to 144 frames, then the finished import wrote back 180, so the card read 0:08. Relinked files, phone and watch-folder imports, and agent media landing on a project whose rate changed during the run did the same; template media kept the template's rate. addAsset and pool.relinkAsset now carry the rate their duration was counted at (durationFps), and the reducer recounts it into the project rate as it writes the pool; source identity stays the probed file's. Imports pass the rate they probed at and the commands default to the doc's own rate, so an agent draft's media is recounted when it lands on the live project. The pool import run moves to poolImportRun.ts to keep useEditorMediaIngest.ts under the size cap; the asset it returns to callers that place it right away is recounted too. Fixes #184 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> | 25 天前 | |
docs: translate code comments to English | 2 个月前 | |
docs: translate code comments to English | 2 个月前 | |
lint: clear the 10 release-pipeline warnings - skill-loading.verify: 4 unnecessary regex escapes (" in literals) - media-dir: control-char check rewritten per codepoint (no-control-regex), unused catch binding dropped - ResourceBrowser: split PreviewCleanup context + hook into ResourcePreviewContext.ts (only-export-components); imports updated in FxThumb/TransitionThumb - transitionPreview: split previewTransitionType into transitionPreview.ts; component imports disambiguated with .tsx - useExportDialogModel / TimelineComposition: pass/construct the exact fields instead of the whole state/status object, making the effect deps truthful (oxlint-disable did not suppress the built-in react-hooks rule in this setup) npm test 137 green, tsc -b + build green. | 2 个月前 | |
lint: clear the 10 release-pipeline warnings - skill-loading.verify: 4 unnecessary regex escapes (" in literals) - media-dir: control-char check rewritten per codepoint (no-control-regex), unused catch binding dropped - ResourceBrowser: split PreviewCleanup context + hook into ResourcePreviewContext.ts (only-export-components); imports updated in FxThumb/TransitionThumb - transitionPreview: split previewTransitionType into transitionPreview.ts; component imports disambiguated with .tsx - useExportDialogModel / TimelineComposition: pass/construct the exact fields instead of the whole state/status object, making the effect deps truthful (oxlint-disable did not suppress the built-in react-hooks rule in this setup) npm test 137 green, tsc -b + build green. | 2 个月前 | |
fix: harden imports and provider runtimes Serialize xAI OAuth lifecycle operations, reject stale sessions, and align Grok request contracts. Fix directory imports and Silero VAD state, bound imported document context, complete Russian Agent surfaces, and split oversized shared modules without changing their contracts. Shared paths: Agent prompts and execution errors, generation routes, media import, settings, and composer UI. Validation: npx tsc -b --force; npm run lint; npm run verify:affected (33); TEST_CONCURRENCY=4 npm test; npm run build; real DeepSeek Agent read_project/read_timeline calls in Chinese and Russian; Browser4 composer smoke with zero console warnings. | 1 个月前 | |
fix(library): localize sound category labels | 2 个月前 | |
fix: preserve offline edits and optimize editor workflows Recover conflicting offline project documents into verified, retry-safe copies without replacing the original project. Harden skill installation and media stream handling, deduplicate loudness work, reuse transcript projections, and load sequence options only when needed. Split oversized source modules while preserving their public exports. Expand affected verification coverage, add a macOS frame-sync CI job, and update vulnerable media dependency overrides. Shared-path impact: - Persistence recovery runs only for pending conflicting documents. Normal saves keep their existing format, media URLs, and ownership rules. Recovery confirms document and index writes before clearing pending state. - Agent and UI loudness paths retain existing volume limits and undo behavior; repeated sources share bounded analysis and stale sources are rejected. - Transcript, caption, preview, export, server, and desktop module moves keep existing call contracts. Differential checks cover projections and stored job reports; media transport checks cover ranges, empty files, and aborts. Validation: - Full TypeScript project build, zero-warning lint, and production build passed. - npm test preflight passed; all 172 test segments passed after registering the new verification files (TEST_CONCURRENCY=2 npm run test --ignore-scripts). - Final persistence changes passed project-store transport and recovery checks, lint, build, and the 561-verification gate coverage check. - npm audit --omit=dev reported zero vulnerabilities. - Real DeepSeek Agent invoked add_audio and normalize_loudness successfully. Browser checks covered import, save/reopen, undo/redo, and offline recovery with the original project and recovered media preserved. - Native macOS frame-sync checks and real FFmpeg media checks passed. The new remote macOS CI job has not yet run. | 1 个月前 | |
fix: preserve offline edits and optimize editor workflows Recover conflicting offline project documents into verified, retry-safe copies without replacing the original project. Harden skill installation and media stream handling, deduplicate loudness work, reuse transcript projections, and load sequence options only when needed. Split oversized source modules while preserving their public exports. Expand affected verification coverage, add a macOS frame-sync CI job, and update vulnerable media dependency overrides. Shared-path impact: - Persistence recovery runs only for pending conflicting documents. Normal saves keep their existing format, media URLs, and ownership rules. Recovery confirms document and index writes before clearing pending state. - Agent and UI loudness paths retain existing volume limits and undo behavior; repeated sources share bounded analysis and stale sources are rejected. - Transcript, caption, preview, export, server, and desktop module moves keep existing call contracts. Differential checks cover projections and stored job reports; media transport checks cover ranges, empty files, and aborts. Validation: - Full TypeScript project build, zero-warning lint, and production build passed. - npm test preflight passed; all 172 test segments passed after registering the new verification files (TEST_CONCURRENCY=2 npm run test --ignore-scripts). - Final persistence changes passed project-store transport and recovery checks, lint, build, and the 561-verification gate coverage check. - npm audit --omit=dev reported zero vulnerabilities. - Real DeepSeek Agent invoked add_audio and normalize_loudness successfully. Browser checks covered import, save/reopen, undo/redo, and offline recovery with the original project and recovered media preserved. - Native macOS frame-sync checks and real FFmpeg media checks passed. The new remote macOS CI job has not yet run. | 1 个月前 | |
lint: clear the 10 release-pipeline warnings - skill-loading.verify: 4 unnecessary regex escapes (" in literals) - media-dir: control-char check rewritten per codepoint (no-control-regex), unused catch binding dropped - ResourceBrowser: split PreviewCleanup context + hook into ResourcePreviewContext.ts (only-export-components); imports updated in FxThumb/TransitionThumb - transitionPreview: split previewTransitionType into transitionPreview.ts; component imports disambiguated with .tsx - useExportDialogModel / TimelineComposition: pass/construct the exact fields instead of the whole state/status object, making the effect deps truthful (oxlint-disable did not suppress the built-in react-hooks rule in this setup) npm test 137 green, tsc -b + build green. | 2 个月前 | |
Initial commit | 3 个月前 | |
feat(agent): complete structured drops and shortcut routing | 2 个月前 | |
feat(library): expand installed extension details | 2 个月前 | |
refactor(library): share virtual card grid metrics | 2 个月前 | |
refactor(library): share virtual card grid metrics | 2 个月前 | |
feat(agent): read installed plugin packs into the headless template catalog Headless sessions now see the same template catalog the renderer does, pack templates included: - server/plugins/extension-store.ts exports readInstalledPacks(), the on-disk reader behind the renderer's hydration. - offline-catalogs.ts merges those packs through pluginTemplates() — the very mapping the UI uses — after validating the envelope at the boundary: a pack whose mg-template items lack id/name/code is dropped rather than half-mapped into a template, and an unreadable pack store degrades to the bundled set. - offline-runtime.ts loads the catalog once per session (create() is async) and hands it to the AgentContext, so list_templates / search_templates / add_motion_graphic answer the same thing with or without a renderer. This closes the capability gap the previous commit documented. Supporting split: the pure pack → Tpl/zoom mapping moved out of src/library/pluginResources.ts (which imports ResourceBrowser.tsx) into src/library/pluginTemplateCatalog.ts, because the node-side build has no --jsx and pulled the component in. pluginResources.ts keeps the React hook and the resource-card mapping; the four import sites were updated. offline-runtime.ts also moved its context/status/failure projections into offline-session-view.ts — it had crossed the 500-line gate. Shared paths touched: the extension store gains one exported reader; the offline runtime splits two modules; the library split keeps one mapping implementation. Renderer behavior is unchanged (same function, same inputs). Verification: cli/cli.verify.ts installs a fixture pack into a throwaway HOME and asserts search_templates returns its template — the merge path, not just the bundled list; resourcePreview, offline-runtime, offline-mcp and verify:mcp pass; npm run build and npm run desktop:build:main pass; tsc -b clean; lint 0 warnings; registration and gate coverage pass; npm test 181/181 green. | 1 个月前 | |
feat(agent): read installed plugin packs into the headless template catalog Headless sessions now see the same template catalog the renderer does, pack templates included: - server/plugins/extension-store.ts exports readInstalledPacks(), the on-disk reader behind the renderer's hydration. - offline-catalogs.ts merges those packs through pluginTemplates() — the very mapping the UI uses — after validating the envelope at the boundary: a pack whose mg-template items lack id/name/code is dropped rather than half-mapped into a template, and an unreadable pack store degrades to the bundled set. - offline-runtime.ts loads the catalog once per session (create() is async) and hands it to the AgentContext, so list_templates / search_templates / add_motion_graphic answer the same thing with or without a renderer. This closes the capability gap the previous commit documented. Supporting split: the pure pack → Tpl/zoom mapping moved out of src/library/pluginResources.ts (which imports ResourceBrowser.tsx) into src/library/pluginTemplateCatalog.ts, because the node-side build has no --jsx and pulled the component in. pluginResources.ts keeps the React hook and the resource-card mapping; the four import sites were updated. offline-runtime.ts also moved its context/status/failure projections into offline-session-view.ts — it had crossed the 500-line gate. Shared paths touched: the extension store gains one exported reader; the offline runtime splits two modules; the library split keeps one mapping implementation. Renderer behavior is unchanged (same function, same inputs). Verification: cli/cli.verify.ts installs a fixture pack into a throwaway HOME and asserts search_templates returns its template — the merge path, not just the bundled list; resourcePreview, offline-runtime, offline-mcp and verify:mcp pass; npm run build and npm run desktop:build:main pass; tsc -b clean; lint 0 warnings; registration and gate coverage pass; npm test 181/181 green. | 1 个月前 | |
fix(library): clear stale template tab drags | 2 个月前 | |
feat(library): make template tabs draggable | 2 个月前 | |
fix: preserve offline edits and optimize editor workflows Recover conflicting offline project documents into verified, retry-safe copies without replacing the original project. Harden skill installation and media stream handling, deduplicate loudness work, reuse transcript projections, and load sequence options only when needed. Split oversized source modules while preserving their public exports. Expand affected verification coverage, add a macOS frame-sync CI job, and update vulnerable media dependency overrides. Shared-path impact: - Persistence recovery runs only for pending conflicting documents. Normal saves keep their existing format, media URLs, and ownership rules. Recovery confirms document and index writes before clearing pending state. - Agent and UI loudness paths retain existing volume limits and undo behavior; repeated sources share bounded analysis and stale sources are rejected. - Transcript, caption, preview, export, server, and desktop module moves keep existing call contracts. Differential checks cover projections and stored job reports; media transport checks cover ranges, empty files, and aborts. Validation: - Full TypeScript project build, zero-warning lint, and production build passed. - npm test preflight passed; all 172 test segments passed after registering the new verification files (TEST_CONCURRENCY=2 npm run test --ignore-scripts). - Final persistence changes passed project-store transport and recovery checks, lint, build, and the 561-verification gate coverage check. - npm audit --omit=dev reported zero vulnerabilities. - Real DeepSeek Agent invoked add_audio and normalize_loudness successfully. Browser checks covered import, save/reopen, undo/redo, and offline recovery with the original project and recovered media preserved. - Native macOS frame-sync checks and real FFmpeg media checks passed. The new remote macOS CI job has not yet run. | 1 个月前 | |
fix: preserve offline edits and optimize editor workflows Recover conflicting offline project documents into verified, retry-safe copies without replacing the original project. Harden skill installation and media stream handling, deduplicate loudness work, reuse transcript projections, and load sequence options only when needed. Split oversized source modules while preserving their public exports. Expand affected verification coverage, add a macOS frame-sync CI job, and update vulnerable media dependency overrides. Shared-path impact: - Persistence recovery runs only for pending conflicting documents. Normal saves keep their existing format, media URLs, and ownership rules. Recovery confirms document and index writes before clearing pending state. - Agent and UI loudness paths retain existing volume limits and undo behavior; repeated sources share bounded analysis and stale sources are rejected. - Transcript, caption, preview, export, server, and desktop module moves keep existing call contracts. Differential checks cover projections and stored job reports; media transport checks cover ranges, empty files, and aborts. Validation: - Full TypeScript project build, zero-warning lint, and production build passed. - npm test preflight passed; all 172 test segments passed after registering the new verification files (TEST_CONCURRENCY=2 npm run test --ignore-scripts). - Final persistence changes passed project-store transport and recovery checks, lint, build, and the 561-verification gate coverage check. - npm audit --omit=dev reported zero vulnerabilities. - Real DeepSeek Agent invoked add_audio and normalize_loudness successfully. Browser checks covered import, save/reopen, undo/redo, and offline recovery with the original project and recovered media preserved. - Native macOS frame-sync checks and real FFmpeg media checks passed. The new remote macOS CI job has not yet run. | 1 个月前 | |
fix(library): localize sound category labels | 2 个月前 | |
fix: preserve offline edits and optimize editor workflows Recover conflicting offline project documents into verified, retry-safe copies without replacing the original project. Harden skill installation and media stream handling, deduplicate loudness work, reuse transcript projections, and load sequence options only when needed. Split oversized source modules while preserving their public exports. Expand affected verification coverage, add a macOS frame-sync CI job, and update vulnerable media dependency overrides. Shared-path impact: - Persistence recovery runs only for pending conflicting documents. Normal saves keep their existing format, media URLs, and ownership rules. Recovery confirms document and index writes before clearing pending state. - Agent and UI loudness paths retain existing volume limits and undo behavior; repeated sources share bounded analysis and stale sources are rejected. - Transcript, caption, preview, export, server, and desktop module moves keep existing call contracts. Differential checks cover projections and stored job reports; media transport checks cover ranges, empty files, and aborts. Validation: - Full TypeScript project build, zero-warning lint, and production build passed. - npm test preflight passed; all 172 test segments passed after registering the new verification files (TEST_CONCURRENCY=2 npm run test --ignore-scripts). - Final persistence changes passed project-store transport and recovery checks, lint, build, and the 561-verification gate coverage check. - npm audit --omit=dev reported zero vulnerabilities. - Real DeepSeek Agent invoked add_audio and normalize_loudness successfully. Browser checks covered import, save/reopen, undo/redo, and offline recovery with the original project and recovered media preserved. - Native macOS frame-sync checks and real FFmpeg media checks passed. The new remote macOS CI job has not yet run. | 1 个月前 | |
feat(library): keep category navigation visible | 2 个月前 | |
perf: bound editor runtime and storage costs Virtualize large timeline and resource surfaces, defer Agent and media work, and bound rebuildable caches without evicting source media. | 2 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 25 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 |