State panel — renders storage.readState(). Visually distinguish
entity states (e.g. done vs open). No click handlers for domain actions.
Conversation log — most recent at bottom, auto-scroll. Populated
from transcription + assistant events.
Three session buttons — Start Session, Push to Talk, End Session
(see Session lifecycle). Visibility swaps based
on the current phase; the PTT button pulses while recording.
PTT hint text — a one-line label under the buttons: "Hold Push to
Talk (or Space) to speak. Session auto-closes after 3 minutes of
silence." Helps first-time users.