| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
docs: translate code comments to English | 2 个月前 | |
feat: refine resource export and extension center | 3 个月前 | |
refactor(auth): drop launch-token and editor-credential handshakes Local trust now rests on the request shape alone: loopback binding + Host check + matching Origin + browser-enforced Sec-Fetch-Site for the project store writes; loopback host + Origin for editor endpoints (uploads, model packs, ASR, external-agent bridge). Removed: /session exchange endpoint, launch token persistence, process-local sessions, the no-auth escape hatch env var, and every credential header on the browser side; editor bootstrap now exposes only the MCP token (external-agent Bearer mechanism unchanged). Shared paths touched: server/project-store-http-auth.ts (write gate), server/editor-auth.ts, server/plugins/project-store-plugin.ts, src/persist/projectStoreTransport.ts, src/agent/editor-credential.ts and the external-agent bridge registration helpers. Existing behavior is preserved for non-loopback callers (rejected) and the desktop shell. Verification: tsc -b --force clean, oxlint 0 warnings, full npm test (89 verifies) green, production build passes, and a real-browser smoke on localhost:5199 renders the editor and performs project-store reads and writes from a bare URL without any token. | 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 个月前 | |
feat(agent): run edit_item and manage_effects without the browser The offline MCP executor — and therefore the occ CLI — can now run the two tools whose validators consult the GL catalogs. Shader sources: GL catalogs no longer import ./x.frag?raw. That suffix only resolves inside Vite's own client build graph; Node, the desktop esbuild bundle and the rolldown step that bundles config/vite.config.ts all fail on it, which is how reaching these modules broke npm run build. Every .frag keeps a generated .frag.ts twin next to it (scripts/sync-shader-sources.mjs), enforced by scripts/shader-sources.verify.mjs in npm test and prebuild, so the shader text is still authored once and every host resolves it identically. Whitelist: edit_item and manage_effects join the server-direct set after review — both only touch the draft's EditorCore commands plus state/doc. edit_item's template-add path degrades with an explicit error because the offline context carries no template catalog; that is a capability gap, not a silent no-op. Executor: both schemas are exposed offline and dispatched through a lazy import, so a bare tsx host that never calls them never loads the GL modules. Shared paths touched: src/gl (import form only — shader text unchanged and the twins are verified byte-for-byte equal), the external-tool-policy whitelist, the offline tool catalog and executor, package.json (two scripts, one command in test:serial, one prebuild check). Preview, export and the Remotion render path are untouched. Verification: npm test 181/181 green (including the two new verifies); npm run build; npm run desktop:build:main (51 shaders inlined into app-main.mjs); npm run verify:mcp; cli/cli.verify.ts drives edit_item through an offline session and reads the written opacity back; offline-runtime, offline-mcp and offline-mcp-process-recovery verifies; chroma-key, clipFxPreview and clipFxExport GL verifies; tsc -b; lint 0 warnings; registration and gate coverage. | 1 个月前 | |
docs: translate code comments to English | 2 个月前 | |
docs: translate code comments to English | 2 个月前 | |
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 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 |