- DB: paths table (contract #3) + helpers; patch_anchor (label/color) - API: GET /api/beats, POST /api/director (valid-empty degradation), /api/paths CRUD (validated POST -> 422), PATCH /api/anchors/{id}; manifest gains capsule:false (test_api.py key-set lock updated consciously) - CLI: features | direct | capsule subcommands -> lane stubs (exit-2 degradation) - Backend stubs with frozen contracts in docstrings: audio_features, director, capsule - Frontend: six lane stub modules imported from main.js; all phase-5 buttons pre-wired hidden in index.html; write-ui/body.capsule read-only mode; __F4D_API_BASE__ runtime override in state.js - Hooks (contract #6): transport.captureAudioStream/releaseAudioStream, scene3d.focusOn, scene3d.setHelpersVisible (+registerHelper; camPath gizmos) - Suite 121 -> 127 passed; npm build clean; live-browser verified (status file) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
20 lines
1.1 KiB
JavaScript
20 lines
1.1 KiB
JavaScript
// Anchor manager & friend tags (spec M13, lane F). STUB — lane F fills THIS FILE ONLY.
|
||
//
|
||
// Pre-wired by foundation2: the hidden ⚓ toggle (#btn-anchors) and the empty #anchor-panel
|
||
// container in index.html, this module's import + init() call in main.js, the hooks
|
||
// `scene3d.focusOn(x, y, z)` (jump-to) and `PATCH ${state.apiBase}/api/anchors/{id}`
|
||
// {label?, color?} (rename/recolor), plus DELETE /api/anchors/{id} from phase 4.
|
||
//
|
||
// When implementing: unhide the button, set `ready = true`; build the collapsible list
|
||
// (color dot, label, jump-to, rename, recolor, delete) from state.anchors; after any
|
||
// mutation update state.anchors and emit("anchors-changed") so scene3d + overlays refresh.
|
||
// The + Tag flow reuses the M8 bbox-annotation flow WITHOUT an event (annotate.js is
|
||
// frozen — drive it, don't edit it) and names the resulting anchor.
|
||
// Capsule mode: give every MUTATING control the `write-ui` class — body.capsule hides that
|
||
// class globally (contract #5); the read-only list + jump-to stay available.
|
||
|
||
export const anchorPanel = {
|
||
ready: false,
|
||
init() {}, // ponytail: stub — lane F replaces the body
|
||
};
|