Skip to content

Commit d4371d5

Browse files
mpstatonclaude
andcommitted
fix(org-workbench), test(browser-drive): drive-proven relations + tags; hover-only actions now keyboard-reachable
The Playwright drive (#54) walked the full round-trip on the live shell — relate → Part of renders → click-through navigation → Contains on the reverse side → tag chip add/remove → relation remove with confirm — with throwaway drive-proof-* orgs, accessibility snapshots, zero console errors, and zero DB residue after cleanup. Its one finding is fixed here: RelatedOrgs' hover-revealed ✎/× used visibility:hidden, which also removed the buttons from keyboard focus and the a11y tree (the drive's click couldn't reach them). Now opacity-based with :focus-within so Tab reveals them. svelte-check clean after the fix. Refs #54. Files changed: - apps/org-workbench/src/RelatedOrgs.svelte - changelog/2026-07-27_01_Organizations-Learn-Their-Family-Tree-Parent-Child-Peer-Relations-Plus-Org-Tags.md Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RW28dw3kQAKXr2ZNefCukE
1 parent afbfa21 commit d4371d5

2 files changed

Lines changed: 21 additions & 1 deletion

File tree

apps/org-workbench/src/RelatedOrgs.svelte

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,9 @@
261261
.ro-kind { font-size: 0.72rem; padding: 0.05rem 0.4rem; border: 1px solid var(--color-border, #2a2c33); border-radius: 999px; opacity: 0.8; white-space: nowrap; }
262262
.ro-desc { font-size: 0.78rem; opacity: 0.6; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; min-width: 0; }
263263
.ro-actions { margin-left: auto; display: inline-flex; gap: 0.25rem; }
264-
.ro-row:not(:hover) .ro-actions { visibility: hidden; }
264+
/* opacity, not visibility — the buttons stay focusable/clickable for
265+
keyboard users and assistive tech; :focus-within reveals them on Tab */
266+
.ro-row:not(:hover):not(:focus-within) .ro-actions { opacity: 0; }
265267
.ro-add { display: flex; flex-direction: column; gap: 0.25rem; }
266268
.ro-picked, .ro-edit-name { font-size: 0.85rem; font-weight: 600; white-space: nowrap; }
267269
</style>

changelog/2026-07-27_01_Organizations-Learn-Their-Family-Tree-Parent-Child-Peer-Relations-Plus-Org-Tags.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,3 +145,21 @@ deliberately share one vocabulary). Tag removal rides its own verb rather
145145
than `resolver.update_org`, because tags are per-client observations, not
146146
fields on the shared org row. The row renders even when empty so the
147147
affordance is discoverable — an untagged org shows the ➕, not nothing.
148+
149+
### The agent drove it before asking a human to (#54)
150+
151+
Playwright drive against the live shell (`localhost:3100`, Augment-from-DB
152+
flow), throwaway `drive-proof-*` orgs only, accessibility snapshots
153+
throughout, deleted to zero residue after: relate via the ➕ form →
154+
**Part of** renders with kind badge + description → row click navigates
155+
the workbench to the parent → reverse projection shows **Contains**
156+
tag add renders the chip → ✕-confirm removes it (empty row keeps its ➕)
157+
→ relation ✕-confirm removes the edge. Zero console errors across the
158+
whole drive.
159+
160+
One finding, fixed live: the hover-revealed ✎/× used `visibility: hidden`,
161+
which also removed them from keyboard focus and the accessibility tree —
162+
the drive's click literally couldn't reach them. Now opacity-based with
163+
`:focus-within`, so Tab reveals them too. The drive proving the buttons
164+
*work* is exactly the rung that caught the button you couldn't Tab to;
165+
the human walk-through still judges whether the surface is *usable*.

0 commit comments

Comments
 (0)