diff --git a/ROADMAP-UI.md b/ROADMAP-UI.md index 90f3587..461f206 100644 --- a/ROADMAP-UI.md +++ b/ROADMAP-UI.md @@ -91,7 +91,19 @@ Shipped. Stale fallback colors purged (~65 instances), fonts self-hosted regressions (half-step tokens), theme settings default, surface overflow, and user menu zoom drift. See CHANGELOG.md. -### v0.6.15 — Usability Survey Gate +### v0.6.15 — User Display Audit + +Every place a user identity appears in the UI must show a human-readable +name, never a UUID. Fallback chain: `display_name → username → "Unknown"`. + +| Step | Description | +|------|-------------| +| Participant display-name resolution | `chat-core` participants endpoint resolves `display_name` from the users table at query time instead of relying on a creation-time snapshot. If the stored `display_name` is empty, look up `users.display_name` or `users.username` by `participant_id`. | +| Audit all user-facing identity surfaces | Walk every surface that shows user identity: chat participant list, chat message sender names, chat typing indicators, workflow assignees, team member lists, admin user list, notification actor names. Ensure the fallback chain is `display_name → username → "Unknown"` everywhere. | +| SDK user-resolve utility | Add `sw.users.resolve(id)` or similar to the SDK — returns `{id, username, display_name, avatar}` with local caching. Surfaces use this instead of ad-hoc lookups. | +| Stale snapshot cleanup | Remove or deprecate the static `display_name` column in the participants table. All display names come from the users table via the resolve utility. | + +### v0.6.16 — Usability Survey Gate Make the UI machine-auditable so Claude Code can run an automated survey. @@ -102,7 +114,7 @@ Make the UI machine-auditable so Claude Code can run an automated survey. | Component coverage matrix | Markdown table: each kernel primitive (button, input, dropdown, dialog, toast, menu, tabs, avatar, spinner, tooltip, drawer, banner) × each surface that uses it. Identifies surfaces still using deprecated old-style components. | | Touch target audit | Script that finds all `