|
| 1 | +# Sync Page Tabs Redesign |
| 2 | + |
| 3 | +Date: 2026-03-06 |
| 4 | +Status: Approved |
| 5 | + |
| 6 | +## Problem |
| 7 | + |
| 8 | +The current sync page has 4 tabs (Overview, Members, Projects, Activity) with several UX issues: |
| 9 | + |
| 10 | +1. **Overview is overloaded** — contains sync engine control, team management, stats, getting started guide, machine details, AND pending actions (6 concerns). |
| 11 | +2. **Information duplication** — "Your Sync ID" appears in both Overview and Members. Member/project counts in TeamSelector AND Overview stats. |
| 12 | +3. **Team management is scattered** — create team via TeamSelector, delete in Overview, add members in Members tab. |
| 13 | +4. **Activity shows raw Syncthing events** — `FolderCompletion`, `StateChanged` etc. are meaningless to users who care about session sync. |
| 14 | + |
| 15 | +## Design |
| 16 | + |
| 17 | +### Tab Structure |
| 18 | + |
| 19 | +``` |
| 20 | +Overview | Team | Projects | Activity |
| 21 | +``` |
| 22 | + |
| 23 | +Four tabs with clear, non-overlapping responsibilities. |
| 24 | + |
| 25 | +### Tab 1: Overview — "What's happening right now?" |
| 26 | + |
| 27 | +At-a-glance health check. Is sync working? Any problems? |
| 28 | + |
| 29 | +**Sections (top to bottom):** |
| 30 | + |
| 31 | +1. **Sync Engine Banner** — full-width, prominent. Running/Stopped status with start/stop button. The #1 operational control. |
| 32 | + |
| 33 | +2. **Stats Row** (4 cards): |
| 34 | + - Members Online: `2/3 connected` |
| 35 | + - Projects Syncing: `4 projects` |
| 36 | + - Sessions Shared: total packaged count (outbox) |
| 37 | + - Sessions Received: total received from teammates (inboxes) |
| 38 | + |
| 39 | +3. **Pending Actions** — only renders when count > 0. Folder offers from teammates needing acceptance. When zero, section doesn't appear at all. |
| 40 | + |
| 41 | +4. **Machine Details** — your name, machine ID, Sync ID with copy button, Syncthing version. Reference info at the bottom. |
| 42 | + |
| 43 | +### Tab 2: Team — "Who am I syncing with?" |
| 44 | + |
| 45 | +Replaces "Members" tab. Absorbs team-level config that was scattered across Overview and Members. |
| 46 | + |
| 47 | +**Sections:** |
| 48 | + |
| 49 | +1. **Team Header Card** — team name, backend type. "Delete Team" as a danger-zone action (behind `...` menu or at bottom). |
| 50 | + |
| 51 | +2. **Your Sync ID** (copyable) — "Share this with teammates to connect." Natural home: you're looking at team membership. |
| 52 | + |
| 53 | +3. **Members List** — each member as a card: |
| 54 | + - Name, connection status dot (green/gray) |
| 55 | + - Data transferred (in/out bytes) |
| 56 | + - Last seen / address |
| 57 | + - Remove button (hover-reveal) |
| 58 | + |
| 59 | +4. **Add Member Form** — inline at bottom: Sync ID input + Name input + Add button. |
| 60 | + |
| 61 | +### Tab 3: Projects — "What am I syncing?" |
| 62 | + |
| 63 | +Toggle which projects sync. See per-project health. |
| 64 | + |
| 65 | +**Sections:** |
| 66 | + |
| 67 | +1. **Header row** — "X of Y syncing" + "Enable All" button + search filter |
| 68 | + |
| 69 | +2. **Project List** — each row: |
| 70 | + - Project name + path |
| 71 | + - Toggle switch (synced/not synced) |
| 72 | + - Sync health when enabled: |
| 73 | + - Local sessions count |
| 74 | + - Packaged count (outbox) |
| 75 | + - Gap indicator ("3 behind" warning, or "up to date" green) |
| 76 | + - Per-member received counts (e.g., "alice: 12, bob: 8") |
| 77 | + - "Sync Now" button |
| 78 | + |
| 79 | +### Tab 4: Activity — "What happened recently?" |
| 80 | + |
| 81 | +Session-level sync feed. Human-readable, not raw Syncthing events. |
| 82 | + |
| 83 | +**Sections:** |
| 84 | + |
| 85 | +1. **Header** — "Activity" + "Sync Now" button (rescan all) |
| 86 | + |
| 87 | +2. **Live Status Bar** (compact) — upload/download rate, single line. No full bandwidth chart. |
| 88 | + |
| 89 | +3. **Session Activity Feed** — translated events: |
| 90 | + - "alice synced 3 sessions for claude-karma — 5 min ago" |
| 91 | + - "bob's machine connected — 12 min ago" |
| 92 | + - "Received 2 new sessions from alice — 1 hr ago" |
| 93 | + |
| 94 | +4. **Folder Status** (collapsible, advanced) — raw Syncthing folder stats. Collapsed by default with "Show folder details" toggle. |
| 95 | + |
| 96 | +## Information Placement Rules (no duplication) |
| 97 | + |
| 98 | +| Information | Lives in | NOT in | |
| 99 | +|---|---|---| |
| 100 | +| Sync engine start/stop | Overview | — | |
| 101 | +| Members online count | Overview (stats) | Team tab | |
| 102 | +| Member list + connection details | Team tab | Overview | |
| 103 | +| Your Sync ID | Team tab | Overview | |
| 104 | +| Machine details (name, hostname, version) | Overview | Team tab | |
| 105 | +| Project list + toggle | Projects tab | Overview | |
| 106 | +| Project sync health (local/packaged/gap) | Projects tab | Activity | |
| 107 | +| Pending folder offers | Overview | Team tab | |
| 108 | +| Session activity feed | Activity tab | Overview | |
| 109 | +| Bandwidth rates | Activity tab (compact) | Overview | |
| 110 | +| Delete team | Team tab | Overview | |
| 111 | + |
| 112 | +## Non-goals |
| 113 | + |
| 114 | +- No admin/member privilege system (fully peer-to-peer, trust-based) |
| 115 | +- No multi-team dashboard view (team-scoped via TeamSelector) |
| 116 | +- No raw bandwidth chart (users can open Syncthing UI at localhost:8384) |
| 117 | + |
| 118 | +## CLI Feature Parity |
| 119 | + |
| 120 | +All CLI sync features accessible via web UI: |
| 121 | + |
| 122 | +| CLI Command | Web UI Location | |
| 123 | +|---|---| |
| 124 | +| `karma init --backend syncthing` | SetupWizard (pre-tabs) | |
| 125 | +| `karma team create` | TeamSelector "+ New Team" | |
| 126 | +| `karma team add` | Team tab → Add Member form | |
| 127 | +| `karma team remove` | Team tab → member hover → Remove | |
| 128 | +| `karma team list` | Team tab → Members List | |
| 129 | +| `karma project add --team` | Projects tab → toggle on | |
| 130 | +| `karma project remove --team` | Projects tab → toggle off | |
| 131 | +| `karma project list` | Projects tab | |
| 132 | +| `karma watch --team` | Overview → Sync Engine start | |
| 133 | +| `karma accept` | Overview → Pending Actions → Accept All | |
| 134 | +| `karma status` | Overview (stats) + Projects tab (per-project health) | |
| 135 | +| `karma ls` | Projects tab (received counts per member) | |
0 commit comments