Skip to content

v1.6.3: decode interview_state from modern Z2M#102

Merged
tashda merged 2 commits into
mainfrom
dev
May 4, 2026
Merged

v1.6.3: decode interview_state from modern Z2M#102
tashda merged 2 commits into
mainfrom
dev

Conversation

@tashda
Copy link
Copy Markdown
Owner

@tashda tashda commented May 4, 2026

Summary

  • Modern Z2M replaced the legacy interviewing / interview_completed boolean pair on device records with a single interview_state enum (PENDING / IN_PROGRESS / SUCCESSFUL / FAILED). The legacy fields can stay false on fully-online devices, which made the device list row show "Interviewing" while the device card correctly showed "Online" — same data, two different reads.
  • Decode interview_state on Device, add a single Device.isInterviewing accessor that prefers the new enum and falls back to the legacy pair, and route every call site through it (rows, cards, footer, list filters, recents, network analysis, home snapshot, pairing wizard).
  • Mirror the new enum on device_interview events so optimistic updates also clear. Seeder fixtures + join scenario emit interview_state for parity.

Closes #101

Test plan

  • Pair a device against the dual-bridge mock seeder; confirm row + card both show "Interviewing" during the interview window and "Online" after.
  • Trigger a failed join (device/join with fail=true); confirm row + card both leave "Interviewing".
  • Connect to a real Z2M build that emits interview_state and confirm a paired device no longer reads "Interviewing" on the list once online.
  • Run the wizard end-to-end against the seeder; pairing wizard interview status (Waiting / Interviewing / Ready) tracks correctly.

🤖 Generated with Claude Code

tashda and others added 2 commits May 4, 2026 12:06
Recent Z2M replaced the legacy interviewing/interview_completed boolean
pair on device records with a single interview_state enum (PENDING /
IN_PROGRESS / SUCCESSFUL / FAILED). The legacy fields can stay false on
fully-online devices, which made DeviceRowView show "Interviewing" while
DeviceCard correctly showed "Online" — same data, two different reads.

Add Device.interviewState plus a single Device.isInterviewing accessor
that prefers the new enum and falls back to the legacy pair, then route
every existing call site (rows, cards, footer, list filters, recents,
network analysis, home snapshot, pairing wizard) through it. Mirror the
new enum on device_interview events so optimistic updates also clear.
Seeder fixtures and join scenario emit interview_state for parity.

Fixes #101

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@tashda tashda added this to the v1.6.3 milestone May 4, 2026
@tashda tashda added bug Something isn't working area:ui UI / UX redesign priority:high labels May 4, 2026
@tashda tashda self-assigned this May 4, 2026
@tashda tashda merged commit 065bbf3 into main May 4, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:ui UI / UX redesign bug Something isn't working priority:high

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Device list shows 'Interviewing' for fully online devices

1 participant