Review artefact for the Library → Add → Apply → enable/disable lifecycle. Every stage, every state, real strings, real tokens. Plan: docs/design-codebook-library.md. Switches below are live — click them to feel the fold.
Re-trued 26 Jul 2026 against docs/design-codebook-state-model.md. This mockup shows the Library modal + the codebook page. Two things it does not yet show, settled since: (1) Disable is now functional — "off means off": a disabled codebook also drops out of the tags sidebar and autocomplete, not just this page — distinct from the eye/Hide, which is tactical and keeps a stub. (2) The floor — your hand-made project codebook — is permanent: hide/show only, no switch, no Remove. Cross-surface consequences: the state-model consequences board.
The catalogue (install axis). Add ↔ Remove — one toggling button sharing a fixed footprint so the column never shifts. Add is free; Remove uninstalls (re-add later is free, retained). No enable/apply here — that's the codebook page.
States shown: not added (Add) · added (Remove, muted — same footprint as Add, so the right edge holds) · coming soon (greyed) · create new. Remove takes it out of your codebook entirely (back to Add here); the on/off + apply live on the codebook page. Decide later: dim an added tile to ~80% since it's no longer "addable"? Open Q2: "Your codebooks" apart from the frameworks shelf?
The workbench. Trailing control morphs Apply → switch on → switch off (fold). Title flush left; state on the right.
Landing: clicking Add in the Library closes the modal immediately and drops you here, anchor-scrolled to the codebook you just added, its Apply to N quotes button sitting at the top of your eyeline.
secB starts folded to show the disabled resting state: one line, "off · kept", switch ready to bring it back — free, no re-spend. No Remove on this page — the slider is disable (Hide/fold), not removal. Remove lives in the Library (uninstall) — a different axis.
Apply progress is out of scope this session. "Auto-coding 214 quotes…" is the existing floating activity indicator (already engineered to stay visible across every lens) — it is not an inline spinner in the codebook. Where it ultimately lives (project-status line / titlebar pill) is a separate session.
Status only — never a control. Lone dot, blue = on / grey = off, echoing the switch. Aligned to the first line like a bullet, so it holds its place when a long name wraps.
The second row wraps to two lines — the dot stays pinned to the first line (bullet alignment via flex-start + optical margin-top), not floating in the vertical centre of the wrapped block.
Toggle Edo above to check the blue holds in the warm palette.