Skip to content

feat: SyncDot indicator for local-only and in-flight sync states#155

Merged
neonwatty merged 3 commits intomainfrom
feat/sync-dot-indicator
Apr 19, 2026
Merged

feat: SyncDot indicator for local-only and in-flight sync states#155
neonwatty merged 3 commits intomainfrom
feat/sync-dot-indicator

Conversation

@neonwatty
Copy link
Copy Markdown
Collaborator

Summary

  • New SyncDot component — small colored dot indicating sync status: amber for local-only data, pulsing green for in-flight to GitHub, nothing for synced
  • Wired into ListRow (draft rows), CommentComposer (comment submission), and LabelManager (label toggle)
  • 1.5s minimum display time ensures the pulsing green dot completes at least one animation cycle before disappearing
  • Record<SyncStatus, string> map provides compile-time safety for CSS class lookups — adding a new status variant without a CSS class is a type error
  • prefers-reduced-motion support disables the pulse animation for accessibility
  • CLAUDE.md: added "Browser access" section documenting Playwright CLI policy

Test plan

  • pnpm turbo typecheck passes
  • Lint passes (pre-commit hook, 0 errors)
  • PR review toolkit: code-reviewer, comment-analyzer, silent-failure-hunter, type-design-analyzer — all critical/important issues resolved
  • Visual verification via Playwright: amber dot on draft rows, green pulsing dot on comment submission
  • Manual: create a draft (no repo selected) — amber dot appears with "local draft" label
  • Manual: post a comment on any issue — green pulsing dot appears for ~1.5s next to "sending..." button
  • Manual: toggle a label on any issue detail — green pulsing dot appears next to "Labels" header

Design for replacing Ghostty/iTerm2/Terminal.app launchers with
ttyd-based embedded terminals in the dashboard. Covers process
management, DB changes, slide-out panel UI, security model, and
lifecycle handling. Tracks issue #149.
4 milestones, 11 tasks with test checkpoints between each
milestone. Covers DB migration, ttyd process manager, terminal
launcher removal, launch flow rewiring, settings cleanup,
slide-out terminal panel UI, and E2E test updates.
Add a small colored dot component to visually communicate whether data
is local-only (amber) or in-flight to GitHub (pulsing green). Absence
of the dot means synced — no indicator needed for the expected state.

- SyncDot component with Record<SyncStatus, string> for compile-safe
  CSS class mapping and prefers-reduced-motion support
- ListRow: amber dot on draft rows replaces plain "local draft" text
- CommentComposer: pulsing green dot during comment submission with
  1.5s minimum display (one full pulse cycle)
- LabelManager: pulsing green dot during label toggle with same
  minimum display
- CLAUDE.md: document browser access policy (Playwright CLI only)
@neonwatty neonwatty added this pull request to the merge queue Apr 19, 2026
Merged via the queue into main with commit 9947ed2 Apr 19, 2026
5 checks passed
@neonwatty neonwatty deleted the feat/sync-dot-indicator branch April 19, 2026 20:50
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