Date: 2026-05-20
Tester: Tessa
Device: 375x812 mobile (Chrome DevTools device emulation, deviceScaleFactor=2)
MC Version: http://localhost:3001
Time spent: ~25 min
| Severity | Count |
|---|---|
| Blocker | 2 |
| Major | 4 |
| Minor | 2 |
| Polish | 1 |
| Total | 9 |
Page: /board
Screenshot: /tmp/tessa-board-fab-zone.png, /tmp/tessa-board-scroll.png
What I did: Opened Board, scrolled down to see ticket cards.
What happened: The blue "+" FAB (new ticket, fixed at x=303-359, y=684-740) sits directly on top of the last visible ticket card's "✗" (dismiss/reject) action button (x=308-352, y=715-759). The FAB covers the ✗ button completely. The user can see only 3 of 4 action buttons on the bottom card.
Proof: elementsFromPoint(330, 710) returns [BUTTON.fab, A.ticket-card, ...] — the FAB intercepts all taps at that location.
Fix: Increase FAB bottom offset so it clears the nav bar with enough room for one card row below it. Use bottom: calc(56px + 16px + 44px) (nav height + gap + one action row). Or move FAB to bottom-left side.
Page: /console
Screenshot: /tmp/tessa-console-full.png, /tmp/tessa-console-bottom-detail.png
What I did: Opened Console, looked at the quickkeys shortcut bar.
What happened: The Console's "+" FAB (fab-create, x=311-359, y=684-732) overlaps the "Down" shortcut button (x=288-330, y=686-716). Tapping "Down" at x=311-330 will hit the FAB instead. Additionally, the shortcut bar (overflow-x: auto) extends 710px but viewport is 375px — "PgUp", "PgDn", "0-5" are off-screen with no visible scroll indicator.
Fix: The FAB on Console should either be hidden or positioned so it doesn't overlap the shortcut bar. The shortcut bar needs a scroll indicator (e.g., fading right edge gradient) so users know more shortcuts exist.
Page: /ticket/{id}
Screenshot: /tmp/tessa-ticket-bottom.png
What I did: Opened a ticket from the board (ticket/3851), scrolled to bottom.
What happened: When scrolled to bottom of ticket page, the bottom nav bar renders broken — only 3 of 5 tabs visible (Overview, Board, Tasks) with Apps and More cut off. The nav right property reported as 658px on a 375px viewport. The fab-back (back button) reports y=1261 even at scrollY=0 which is way outside the viewport.
Root cause suspicion: A CSS transform on a parent container is breaking position: fixed on the nav and fab-back elements (CSS spec: fixed positioning is relative to the nearest containing block with a transform, not the viewport). The ticket page likely wraps content in a transformed container.
Fix: Find any transform, perspective, or will-change: transform on ancestor containers of .bottom-nav and .fab-back in the ticket layout and remove them, or ensure the nav/fab-back are NOT children of transformed containers.
Page: /console
Screenshot: /tmp/tessa-console-full.png
What I did: Opened Console, looked at the preset tabs row.
What happened: The horizontal session-preset tabs ("Claude", "Claude Anthropic", "Claude GLM", "Claude Kimi...") overflow the viewport. The last tab "Claude Kimi" is clipped at the right edge with no scroll indicator. User doesn't know more presets exist.
Fix: Add overflow-x: auto + right-fade gradient indicator to the presets tab row, same as the shortcut-row already has.
Page: /runtime-workbench
Screenshot: /tmp/tessa-workbench-full.png
What I did: Opened Workbench on a ticket.
What happened: The .wb-tools-bar contains tabs: Status, Runtime, WAT, Session (visible), then Keys (x=353), Brief (x=431), Danger (x=504) — all off the 375px screen. The container has overflow-x: auto so they ARE reachable by swiping, but there is no visual affordance (no fade, no ">" indicator, no scroll shadow). Users will not discover these tabs.
Fix: Add a right-fade gradient to .wb-tools-bar when scrollWidth > clientWidth.
Page: /insights (7-day period)
What I did: Checked the "398 TICKETS DONE" figure against SELECT COUNT(*) FROM tickets WHERE status='done' AND updated_at >= 7-days-ago.
What happened: DB returns 418 tickets. Insights shows 398. Discrepancy: 20 tickets (4.8%).
Note: Could be updated_at vs done_at semantics. Needs investigation to confirm which timestamp the insights query uses.
Fix: Verify the Insights query uses the correct timestamp column. If done_at is NULL for some tickets, add a fallback.
Page: /runtime-workbench
Screenshot: /tmp/tessa-workbench-full.png
What I did: Used the Workbench page as a first-time user.
What happened: The page defaults to showing the ticket description in a big text block above the chat area. A real Claude Code / Aion-style workbench would lead with the chat feed and push the ticket description to a collapsible sidebar. The current layout feels like a "ticket viewer with a chat at the bottom" rather than a "live AI agent session".
Fix: Consider making the chat feed the primary focus (full height) and moving ticket description to a collapsible "Ticket" tab panel. This is an aesthetics/UX direction question for Elmar.
Page: / (Overview)
What I did: Loaded overview with cache-bust.
What happened: The BODY element had text "You're offline — showing cache..." visible in DOM structure. Likely a service worker cache message that flickers on hard reload. Not consistently reproducible but present in DOM text content.
Fix: Ensure the offline banner only shows when actually offline (check navigator.onLine state before showing).
Page: /board
Screenshot: /tmp/tessa-board-correct.png
What I did: Looked at the Board page Quick Start chip area.
What happened: The "QUICK START" label is on the same row as the first chip row but the label is in uppercase small-caps style while chips are regular weight. The label and chips don't visually form a clear grouped unit — the label appears orphaned to the left.
Fix: Add align-items: center to the Quick Start row, or move the label to its own line above the chips.
| Page | FAB Issue | Scroll | Buttons Accessible | Data OK |
|---|---|---|---|---|
Overview / |
Minor (cloud FAB, no overlap) | OK | OK | OK |
Board /board |
BLOCKER (+ FAB covers ✗ btn) | OK | 3/4 action btns per last card | OK |
Tasks /tasks |
None | OK | OK | OK |
Apps /apps |
None | OK | OK | OK |
| More sheet | None (sheet z-index above cloud FAB) | OK | OK | OK |
Workbench /runtime-workbench |
None | OK | "Keys/Brief/Danger" hidden (scrollable) | OK |
Console /console |
BLOCKER (+ FAB covers Down btn) | OK | Shortcut bar overflow, no indicator | OK |
Briefings /briefings |
None | OK | OK | OK |
Ticket Detail /ticket/{id} |
N/A | OK | nav broken (only 3/5 tabs) | OK |
Insights /insights |
None | OK | OK | Data off by 20 |
| # | Issue | Severity | Screenshot |
|---|---|---|---|
| 1 | Board FAB covers ticket ✗ button | Blocker | /tmp/tessa-board-fab-zone.png |
| 2 | Console FAB covers "Down" shortcut | Blocker | /tmp/tessa-console-full.png |
| 3 | Ticket detail nav bar broken (only 3 tabs, fixed positioning fails) | Major | /tmp/tessa-ticket-bottom.png |
| 4 | Console preset tabs overflow with no indicator | Major | /tmp/tessa-console-full.png |
| 5 | Workbench "Keys/Brief/Danger" tabs off-screen no scroll hint | Major | /tmp/tessa-workbench-full.png |
Tessa sign-off: NOT APPROVED FOR ELMAR — 2 Blockers + 3 Majors outstanding.