Presence dots: redrawn only when what they show changes #271

Merged
littlefox merged 2 commits from issue-233-idle into main 2026-10-22 07:17:20 +00:00
Owner

Closes #233

  • Each presence dot follows a memo of what it shows (state and title), so the two-minute refresh, which replaces the whole map, redraws only dots whose state or "aktiv för N min sedan" changed, not every dot on screen.
  • The rest of #233 came with #254: the seen check is event-driven instead of a 250 ms poll, and the thread and channel panes no longer redraw for the 30 s clock (only the time labels do).

Measured idle cost (tools/perf.sh, 20 s with a long thread open): main-thread 0.01 s, 0–1 layouts.

Verified: presence, side-column, thread and profile specs on three profiles, 27 passed; lint.

🤖 Generated with Claude Code

https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8

Closes #233 - Each presence dot follows a memo of what it shows (state and title), so the two-minute refresh, which replaces the whole map, redraws only dots whose state or "aktiv för N min sedan" changed, not every dot on screen. - The rest of #233 came with #254: the seen check is event-driven instead of a 250 ms poll, and the thread and channel panes no longer redraw for the 30 s clock (only the time labels do). Measured idle cost (`tools/perf.sh`, 20 s with a long thread open): main-thread 0.01 s, 0–1 layouts. Verified: presence, side-column, thread and profile specs on three profiles, 27 passed; lint. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
The presence refresh replaces the whole map every two minutes (idle
seconds tick on), and every dot read the whole map, so every dot on
screen was redrawn every refresh. Each dot now follows a memo of what it
shows, its state and title, so it is redrawn when that changes.

The rest of #233 came with #254: the seen check no longer polls every
250 ms, and the thread and channel panes no longer follow the 30 s clock
(only the time labels do).

Closes #233

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
Merge remote-tracking branch 'origin/main' into issue-233-idle
All checks were successful
ci / check (push) Successful in 12m10s
ci / desktop (push) Successful in 15m16s
ci / e2e (push) Successful in 28m55s
b7d062e79c
littlefox referenced this pull request from a commit 2026-10-22 14:11:06 +00:00
Sign in to join this conversation.
No description provided.