✓ capture required
  keys: j -> enter -> j -> escape -> q
  key.ignored        key=j focus=services mode=nav
  ui.key             key=j
  focus.capture      widget=services
  ui.key             key=enter
  services.cursor    index=1 service=auth-service
  ui.key             key=j
  focus.release      widget=services
  ui.key             key=escape
  ui.quit            focus=services captured=False
  ui.key             key=q
  ✓ key.ignored seen
  ✓ focus.capture seen
  ✓ services.cursor seen
  ✓ focus.release seen
  ✓ cmd.run absent

✓ ring navigation
  keys: tab -> tab -> shift_tab -> q
  focus.move         from_id=services to_id=search nav=tab
  ui.key             key=tab
  focus.move         from_id=search to_id=details nav=tab
  ui.key             key=tab
  focus.move         from_id=details to_id=search nav=shift_tab
  ui.key             key=shift_tab
  ui.quit            focus=search captured=False
  ui.key             key=q
  ✓ focus.move seen
  ✓ focus.capture absent

✓ capture owns keys
  keys: tab -> enter -> tab -> escape -> tab -> q
  focus.move         from_id=services to_id=search nav=tab
  ui.key             key=tab
  focus.capture      widget=search
  ui.key             key=enter
  key.ignored        key=tab focus=search mode=capture
  ui.key             key=tab
  focus.release      widget=search
  ui.key             key=escape
  focus.move         from_id=search to_id=details nav=tab
  ui.key             key=tab
  ui.quit            focus=details captured=False
  ui.key             key=q
  ✓ focus.capture seen
  ✓ key.ignored seen
  ✓ focus.release seen
  ✓ focus.move seen

✓ fuzzy search
  keys: tab -> enter -> d -> p -> j -> enter -> escape -> q
  focus.move         from_id=services to_id=search nav=tab
  ui.key             key=tab
  focus.capture      widget=search
  ui.key             key=enter
  search.query       query=d
  ui.key             key=d
  search.query       query=dp
  ui.key             key=p
  search.select      selected=1 match_count=2
  ui.key             key=j
  cmd.run            command=deploy auth-service query=dp
  ui.key             key=enter
  focus.release      widget=search
  ui.key             key=escape
  ui.quit            focus=search captured=False
  ui.key             key=q
  ✓ focus.move seen
  ✓ focus.capture seen
  ✓ search.query seen
  ✓ search.select seen
  ✓ cmd.run seen

✓ focus demo: 4/4 scenarios
