← index2026-05-10 07:57 (Beirut)(backfill from DOCUMENTATION/)

HeyBrian v4 — user test plan (5 minutes, pass/fail)

HeyBrian v4 — user test plan (5 minutes, pass/fail)

Run this once after a build to confirm "fully functioning product".
Each item is a single user action with a single observable outcome.
If anything fails, copy the line into the chat and we fix it.

Setup state assumed

1 — Wake word

Action: say "Hey Brian" in normal speaking voice.
Pass: orb appears bottom-right, animates to listening state, chime plays.
Fail: nothing happens → check pgrep -fl wakeword_daemon and
~/.heybrian/venv/bin/python3 -c "import openwakeword, sounddevice".

2 — Voice command (one-shot)

After wake, say a short instruction like "what time is it".
Pass: orb fades to interpreting → reply spoken or printed within ~2s.
Fail: orb stuck in listening, or no reply.

3 — Voice "start a call" — restored 2026-05-10

Wake the orb. Say one of:
• "start a call"
• "begin a call"
• "make a call"
• "call brian"
Pass: orb transitions to call mode, Gemini Live connects, you can speak.
Fail: routes to /api/brian/ask instead → CommandRouter regression.

4 — Click orb to start a call

When the orb is visible (or after wake), left-click on it.
Pass: same as #3 — call mode begins.
Fail: starts a one-shot voice command instead.

5 — Voice "end call" inside the call — restored 2026-05-10

While in a Gemini Live call, say one of:
• "end call"
• "end the call"
• "hang up"
• "bye"
• "goodbye"
Pass: call disconnects, orb returns to idle.
Fail: Brian replies normally and call continues → server may not be
forwarding input_transcript.

6 — Voice loop fix — verified 2026-05-10

In a Gemini Live call, ask Brian a normal question. Listen for Brian's
reply playing through your speakers.
Pass: Brian replies once and stops; mic does NOT pick up Brian's own
voice as your next utterance.
Fail: Brian replies, then immediately replies again to its own
playback (the loop you saw in chat history at 06:02–06:03).

7 — Right-click orb menu

Right-click the visible orb.
Pass: glassmorphic 9-item menu appears: Start/End Call · Start/Stop
Meeting · Pause/Resume Screen Memory · Text Input · Take Screenshot ·
Notifications · Send Message · Calendar · Settings.
Fail: nothing happens, or menu shows fewer items.

8 — Menubar shortcuts

Click the menubar B icon.
Pass: menu shows Start Call (Cmd-C) · Start Meeting (Cmd-M) · Show Orb
· Start Listening · Wake Word Detection · Open Settings (Cmd-,) ·
Quit. Cmd-C while menu is open should start a call.
Fail: items missing or shortcuts not working.

9 — Settings WKWebView

Click menubar B → "Open Settings…" (or Cmd-, with menu open).
Pass: 980×720 window opens, embeds the cpanel UI, shows 12 cap rows
with risk-tier badges, permissions card, recent audit ring.
Fail: window doesn't open, or shows a 404/blank page.

10 — Meetings — restored 2026-05-10

Click menubar B → Start Meeting (Cmd-M). Wait 60+ seconds. Click again
to end (or Stop Meeting from the orb menu).
Pass: Brian speaks "Meeting recording started" and "Meeting ended,
processing transcript". Server-side: meeting state goes
recording → processing → completed within ~2 min.
Fail: 404 errors or no audio chunks transcribed → check server log
journalctl -u agent-api --since "2 min ago" | grep meeting.

11 — Screen memory

Ask Brian: "what was I doing in the last 10 minutes?"
Pass: Brian recalls recent active apps + summaries (e.g. "you were
viewing Adobe Photoshop with the Vita Herbs design").
Fail: empty recall → screen-watcher may have stalled; check
pgrep -fl watcher.py on Mac and tail ~/Library/Logs/Brian/screen-watcher.log.

12 — Cpanel from phone

On phone, open https://mac.jonahtebaa.com/cpanel.
Pass: 🛰️ HeyBrian title, 12 cap rows with green pills + risk-tier
badges, permissions card with current TCC grants.
Fail: token prompt every time → localStorage didn't persist across
visits; copy token from ~/.brian/cpanel_token once via the URL
fragment trick #t=<hex>.

Known limitations (not bugs)

What to do if something fails

  1. Note which step failed and the exact symptom.
  2. Run: tail -50 ~/Library/Logs/HeyBrian/heybrian.log and copy.
  3. Paste both into chat. I'll trace and fix.