b56f0e88ca
Three QA-found issues in the approval gate: - displayState gated the in-session/approval surfaces on hasApproval before sessionEntered, so moving the list cursor onto a session with a pending gate auto-opened it, and `l` back-to-list couldn't escape (the gate re-popped). Require sessionEntered first. - The band ran every preview through the two-column diff renderer, so a shell tool's argv JSON rendered as an identical-column "diff". Detect real unified diffs (isUnifiedDiff); render other previews as plain text, and drop the ^x fullscreen hint when there's nothing to expand. - The footer duplicated the band's approve/reject/steer/diff keys. It now shows navigation (l back / e events / q quit) instead.