Skip to content

Add a contact detail pane to the Contacts page - #9

Merged
sg merged 1 commit into
mainfrom
web-contact-detail-pane
Jun 12, 2026
Merged

sg merged 1 commit into
mainfrom
web-contact-detail-pane

Conversation

@sg

@sg sg commented Jun 12, 2026

Copy link
Copy Markdown
Owner

Summary

Adds a detail pane to the right of the Contacts listing that shows all of a contact's details when a row is selected — modeled on the Packets screen's inspector pane.

Changes (web-ui/src/views/Manage.vue)

  • Layout: the Contacts tab is now a two-pane flex split (.contacts-split) — the list (search/filter/delete toolbar + table) in a left .pane, and a Contact detail .pane on the right. Each pane scrolls independently at full height, so the detail stays put while you scroll a long (up to 500-row) list.
  • Selection: clicking a row selects it (tr.clickable + tr.selected highlight, same as Packets); the pane reads "select a contact" until then. The per-row delete checkbox uses @click.stop so toggling delete-selection doesn't change the detail view.
  • Details shown: every column the contacts API returns — name, type, full public key, flags, out path (rendered as flood (no path) / direct (0 hops) / <hex> (N hops)), path hash mode, location (lat, lon), last advert, last modified, first seen, last synced.
  • No new endpoint: the list already comes back as SELECT *, so the full row is in hand. Selection is tracked by pubkey (not the row object), so it survives a contacts reload and resolves to "none" if the row was deleted.
  • Rebuilt the tracked webapi/static/ assets.

Testing

web-ui builds clean (npm run build). Front-end only — no API or schema changes. (A live visual check needs the bot running against a radio with contacts, which isn't available in CI.)

🤖 Generated with Claude Code

Selecting a contact in the list now shows all of its details in a pane to
the right, mirroring the Packets screen's inspector.

- Contacts tab is a two-pane flex split: the list (toolbar + table) on the
  left, a "Contact" detail pane on the right; each scrolls independently at
  full height so the detail stays put while scrolling a long list.
- Row click selects (tr.clickable/tr.selected highlight); the delete
  checkbox uses @click.stop so it doesn't disturb the detail selection.
- Detail shows every contact column: name, type, full public key, flags,
  out path (flood / direct / <hex> (N hops)), path hash mode, location,
  last advert, last modified, first seen, last synced. No new API — the
  list already returns SELECT *; selection is tracked by pubkey so it
  survives reloads and resolves to none if the row is deleted.
- Rebuild webapi/static assets.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@sg
sg merged commit a80154b into main Jun 12, 2026
1 check passed
@sg
sg deleted the web-contact-detail-pane branch June 12, 2026 07:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant