5. Peer list + click-to-copy #6

Closed
opened 2026-05-16 01:38:40 +00:00 by jtmorris · 2 comments
Owner

Parent: PRD #1 (Tailscale Widget Plugin for Dank Bar)

Type: AFK

Blocked by: #5

Render the scrollable list of Tailscale peers inside the popout and implement click-to-copy for both hostname and IP address.

Acceptance Criteria

  • Peer list is derived from the Peer map in tailscale status --json
  • Each row shows hostname and first Tailscale IP
  • Clicking the hostname copies it to the clipboard via wl-copy
  • Clicking the IP address copies the IP to the clipboard via wl-copy
  • A toast confirms the copy action (ToastService.showInfo)
  • List is scrollable when it exceeds the popout height

Notes

This slice adds the majority of the interactive content inside the flyout.

Parent: PRD #1 (Tailscale Widget Plugin for Dank Bar) **Type:** AFK **Blocked by:** #5 Render the scrollable list of Tailscale peers inside the popout and implement click-to-copy for both hostname and IP address. ## Acceptance Criteria - Peer list is derived from the `Peer` map in `tailscale status --json` - Each row shows hostname and first Tailscale IP - Clicking the hostname copies it to the clipboard via `wl-copy` - Clicking the IP address copies the IP to the clipboard via `wl-copy` - A toast confirms the copy action (`ToastService.showInfo`) - List is scrollable when it exceeds the popout height ## Notes This slice adds the majority of the interactive content inside the flyout.
Author
Owner

Dependency note: This issue is now also dependent on #3.5 (via #5).

The peer list lives inside the popoutContent, which is not reachable until #3.5 is resolved (popout won't open on left-click). No work can be verified on #6 until #5 is functional, which itself depends on #3.5.

Dependency chain: #4 → #3.5 → #5#6#7

**Dependency note:** This issue is now also dependent on #3.5 (via #5). The peer list lives inside the `popoutContent`, which is not reachable until #3.5 is resolved (popout won't open on left-click). No work can be verified on #6 until #5 is functional, which itself depends on #3.5. Dependency chain: #4 → #3.5 → #5 → #6 → #7
Collaborator

Fixed in commits:

  • d8bd3c6 — Auto-detect clipboard tool at startup (priority: dms cl copy → wl-copy → clipmanctl copy → graceful error toast)
  • 2d43841 — Switch to single-arg ToastService.showInfo for copy confirmation toast

All acceptance criteria met:

  • Peer list derived from Peer map in tailscale status --json
  • Each row shows hostname + first Tailscale IP
  • Clicking hostname or IP copies to clipboard via auto-detected tool
  • Toast confirms: "Copied to clipboard"
  • List is scrollable when exceeding popout height
Fixed in commits: - d8bd3c6 — Auto-detect clipboard tool at startup (priority: dms cl copy → wl-copy → clipmanctl copy → graceful error toast) - 2d43841 — Switch to single-arg ToastService.showInfo for copy confirmation toast All acceptance criteria met: - Peer list derived from Peer map in tailscale status --json - Each row shows hostname + first Tailscale IP - Clicking hostname or IP copies to clipboard via auto-detected tool - Toast confirms: "Copied <text> to clipboard" - List is scrollable when exceeding popout height
vybe closed this issue 2026-05-18 05:48:17 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: jtmorris/dms_tailscalectl#6
No description provided.