API keys: make "via API key" and the key
Found by the epic 9324 finish check on dev (app.dev.jaah.ai, v1.2.3888, Org B owner, 1280 px).
Reproduction: create an API key in Settings › API keys, call `GET /api/projects` with it, then open /audit. The row's actor cell holds "orgb-admin@cockpit.local via API key finish-9373-probe" (8 such cells in the DOM), but it shows as "orgb-admin@cockpit.local…". The attribution AC13 asks for only shows on hover. In the Settings › API keys list, the owner cell shows "Org B orgb-admin@c…", and the row has no column labels, so "All" (permissions) and the trailing status/expiry text read as unlabelled facts.
Cause:
- `apps/web/src/pages/audit/UsersTab.tsx:388-399`: the `actor` slot is a fixed `ACTOR_SLOT` width with `mono`. `actorText` (`pages/audit/rows.ts:66`) appends " via API key <name>" to the address, so the suffix is the part that gets cut off.
- `apps/web/src/pages/settings/apiKeys/ApiKeysSection.tsx:114`: the `owner` slot `OWNER_SLOT` clips the owner label.
Suggested fixes (small, no new surface):
1. Audit: show the API-key attribution so it survives truncation. For example, put a short "API key <name>" chip or second line in the actor cell, or fold it into the row's summary. Keep the full text in the tooltip. Compose it at render time, never store it.
2. API keys list: show the owner's display name, or the email alone, not "<name> <email>" squeezed into one fixed slot. Keep the full label in the tooltip.
3. API keys list: label the permissions summary so "All" reads as "All permissions" (or "Read-only", "N of M permissions"), following docs/standards/ui-copy-standards.md.
Acceptance:
- On dev at 1280 px, an /audit row for a key request visibly shows the key's name or an API-key marker without hover. Oracle: Playwright screenshot plus `innerText` of the visible cell.
- At 390 px the same row stays readable, with no horizontal page scroll. Oracle: `scrollWidth == clientWidth`.
- The Settings › API keys row shows the owner without the email being clipped mid-word at 1280 px, and the permissions summary reads as a permissions fact. Oracle: screenshot.
- `rows.test.ts` and `ApiKeysSection.test.tsx` updated and green. `./dc check quick` green.
Out of scope: no backend or audit-storage change. No change to the API-key auth, routes or permission grid. No restyle of other audit columns or other Settings panels.
Done means:
- Screenshots on dev at 1280 and 390 px show the attribution and owner legibly, attached to the report.
- Web unit tests green, `./dc check quick` green, PR merged through the merge lane and Jaah Deploy succeeded.
Outcome
Audit actor cell leads with "Key <name>"; key owner shows as a name; permissions read "All permissions"/"N of M permissions". PR #6747 merged (2048bb0); deploy 5cde3f6 green, dev screenshots taken at 1280 and 390 px; unit, e2e and quick gate green. Memory: none applied.
Artifacts
Activity
- Ready
- Runner started
- Runner ended (done)