Loomworks Companion build — running queue — v0_1
> ⚠️ SUPERSEDED by loomworks-companion-build-queue-v0_3.md (2026-06-27). v0.3 is the single canonical queue; it reconciled this doc with the build-queue-and-list-loading lineage (broader framing wins) and corrected "list-loading" to the cross-cutting pagination concern (the home loading-states this doc described are a sub-item). Kept alongside per discovery-trajectory discipline — do not maintain this file; maintain v0.3.
Version. v0.1
Date. 2026-06-27
Purpose. The single ordered queue for the Companion frontend build. Supersedes scattered queue-tracking across CRs, checklists, and chat — maintained here as one ordered list as items land and new gaps surface. Operator-continuity doc (bring to Claude.ai between sessions). Markdown canonical; HTML companion can follow if it stabilizes.
Branch. loomworks feat-companion-surface (off cr-2026-125-companion-surface-phase1). Not pushed — Operator authorizes the push.
Method (standing). Mockup-as-spec (appearance AND stated behavior); self-verify + conformance checklist before surfacing; per-step commits, suite green at each; halt before push.
✅ Landed (in order)
- Integration foundation — known-good adapters reused (memory / renders / converse / focus); semantic palette tokens at the exact mockup hex.
- In-engagement surface, responsive (mockups 1 & 2) — desktop dual-pane + mobile single-column; fixed input zone; rooms (Memory/Rendering live, Manifestation/Shaping honest-empty); Enter-sends, chips, mic toggle. Conformance checklist v0_1.
- Type scale — named reading-role tokens (
--font-heading/body/label/meta, roomy ~16px body) swept across the surface; pays down the deferred type debt (full type-scale system still deferred).
- File upload restore — attach affordance in the input row (desktop + mobile); single/multi-file wired via the proven pathway; folder upload NOT surfaced (incomplete end-to-end).
- Dev tunnel fix —
npm run dev sets NEXT_PUBLIC_API_URL=/api so the same-origin proxy is used; loomworks-dev.dunin7.com now loads engagements (was "Failed to fetch").
- Across-engagements home (mockups 3 & 4) — three visibility zones + three lenses (My engagements · Needs you {n} · Recent), real data + per-engagement attention from the dashboard adapter; unified open; Administrative (E0001) hidden. Conformance checklist (this batch).
- Nav loop — in-engagement "Loomworks" link + focus-chip × (+ mobile ‹ back) → the home. Round trip complete.
▶ Up next (ordered)
- Conversation-content issue — Operator-queued; deferred through the surface + home builds. Needs scoping (what the issue is, expected behavior) before build.
- List-loading — the home's list-loading UX: loading / empty / error states for the engagement list + the Needs-you / Recent lenses. Today: a single "Catching you up…" while loading, and needs/recent are best-effort (a fetch failure falls back to empty silently). Decide the intended loading + failure surfacing (skeletons? per-lens error? retry?).
◻ Open gaps / follow-ons (surfaced during the build; slot into the queue when they earn it)
- Shared-zone visibility signal. The home splits zones by visibility, but
/engagements carries no visibility field. Current heuristic: Shared = title === BRAND.productName (single predicate, white-label-keyed). A real visibility='automatic' signal (engine projection) would replace it. Until then the commons is correctly placed only when its title matches the product name.
- Folder upload (directory ingestion). Engine is ready (folder_manifest + per-file relative_path); the frontend client sends basenames (no
webkitRelativePath) and the Phase 60 OL composer-completeness piece is unwired. Waits for the Phase 60 OL work + a frontend relative-path send.
- Suggestion-chip contextual wording (in-engagement). Renders standing prompts; the contextual "Confirm N held notes" variant is wired but fed 0 (no shared held-count source on the conversation pane yet). Operator to refine wording.
- Personal "things known" count. The mockup's Personal card shows a count; the assertions endpoint 422s for the personal engagement, so the count is honestly omitted. Needs a personal-count path.
- Commons member count. Mockup shows "N members"; no endpoint in scope — omitted.
- Needs-you / Recent item actions. Items currently open the engagement; richer per-item actions (Commit / Confirm / Review / Download) could earn a pull once the lens is real.
- Desktop home voice. Mockup 3 shows the voice-hint text but no mic (voice is mobile-only on the home today); a desktop voice entry is TBD.
- Mobile in-engagement transcript. Per mockup 2 there is no conversation transcript; Companion replies surface transiently in the hint line. Confirm this is the intended end state.
- NotFoundPanel. Pre-existing serif error panel with raw hex + hardcoded strings; not on the type scale / tokens. Out of scope so far — tidy if it earns it.
- Type-scale system (full). Only the reading-role floor is set; the full designed type-scale system remains deferred debt.
Push status
All work is committed on feat-companion-surface, nothing pushed. Per-push Operator authorization required.
DUNIN7 — Done In Seven LLC — Miami, Florida
Loomworks Companion build — running queue — v0_1 — 2026-06-27