| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks failed
wasm-build.yml / cmms-embed: kicad AI chat editor-buffer bridge (PCBJam Part 2) (push) Failing after 0s
wasm-build.yml / cmms-embed: kicad AI chat editor-buffer bridge (PCBJam Part 2) (release) Failing after 0s
release / meta (push) Has been cancelled
release / build (push) Has been cancelled
release / publish-wasm (push) Has been cancelled
release / deploy-demo (push) Has been cancelled
release / deploy-editor (push) Has been cancelled
release / Build all tools + KiCad e2e (Ubicloud) (push) Has been cancelled
web/standalone only, no C++/wasm/shared changes: - lib/cmms-config.ts (new): fetch /api/cmms-config once on boot (dark, aiEnabled, aiEditorKind, csrfToken, entityType, entityId). Absent route / non-2xx / malformed JSON all mean "no widget" - never throws, never blocks boot. Same API base + credentials:"include" as the existing /api/me call. - components/CmmsAiWidget.tsx (new): floating launcher + panel, inert unless aiEnabled. Mounted once in App.tsx alongside VersionBadge. Mirrors render_ai_assistant_editor_embed()'s markup/CSS shape (position, colors) but fixed-position - the draggable/resizable geometry system is CMMS-side static JS this bundle can't import. Follows `dark` from the config fetch, belt-and-braces alongside the existing `?theme=` hand-off (which already wins whenever set). - wasm/collab/ai-bridge.ts (new): the cmms-ai-editor-* postMessage protocol (same shape as the cad-editor / pcb-retrace bridges). get-buffer: yToDoc + docToFile on the active sheet's live Y.Doc (read-only, reflects in-progress edits including a peer's - not last-saved-to-MEMFS). apply: docDelta + applyDeltaToY, treating the AI's proposed file as though a peer had made the edit, through the same item-observer path every real co-edit already takes - NOT a reuse of KicadBinding.seed(), which is a boot-time/reconnect-only function (three branches, each with its own empty/hollow-doc edge cases) that doesn't have a branch for "live populated doc gets replaced with unrelated content", and this subsystem's git history (sibling-restage, paste-collision, ysync 0001-0008) is almost entirely bugfixes in exactly that state-transition space. - WasmTool.tsx: registerActiveCollabDoc(doc, filePath) mirrored onto each of the three existing setPanelDoc(...) call sites (single-room collabHandle, multi-sheet onActiveChange, teardown) - reuses the existing "which doc does the SheetPanel show right now" signal rather than adding new state. Known gaps, flagged not silently skipped: - docDelta only diffs items, not layout/preamble (page size, title block) - matches its own doc comment; an AI edit to those won't apply. Items (symbols/footprints/wires) are the expected AI edit surface for now. - No client-side read-only-viewer gate on apply - a tab opened as a read-only viewer has no local-edit path, but this pushes the AI's delta into the Y.Doc the same as a remote peer would, which a viewer's binding was never checked against. Write authorization is expected to live server-side (the AI tool implementation deciding whether to call write_editor_buffer at all, matching the cad_generation_enabled gate on the cad-editor bridge) - worth an explicit look before this ships broadly. Verified: tsc --noEmit clean, vitest run 469/469 passing, vite build succeeds. No kicad/wxwidgets changes - the existing wasm/ build (vendor-766e2f4-20260904-r4-debug) is unaffected; this is a dist-only release. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> |
||
| .. | ||
| public | ||
| scripts | ||
| src | ||
| .env.example | ||
| .env.production | ||
| index.html | ||
| package.json | ||
| postcss.config.js | ||
| tailwind.config.js | ||
| tsconfig.json | ||
| vite.config.ts | ||
| vitest.config.ts | ||
| wrangler.staging.jsonc | ||