Skip to content

Display v1.1: info panel with live countdown and progress bar - #3

Merged
sumitake merged 4 commits into
mainfrom
dev/claude/display-v1.1
Aug 4, 2026
Merged

Display v1.1: info panel with live countdown and progress bar#3
sumitake merged 4 commits into
mainfrom
dev/claude/display-v1.1

Conversation

@sumitake

@sumitake sumitake commented Aug 4, 2026

Copy link
Copy Markdown
Owner

Operator-approved redesign of the 72×16 display output (layout A + progress accent bar):

  • Calendar: left progress bar drains toward event start (configurable window), HH:MM + title row, native firmware countdown element (ticks every second on-device), urgency colors (white/amber/red), teal in-progress mode counting down to event end. Also fixes a latent bug where an in-progress event with nothing upcoming cleared the display.
  • CI: full-panel rounded badge (red failure / amber stuck) with bold text, replacing bare scrolling text.
  • New config keys: notice_minutes (15), progress_window_minutes (60).
  • Firmware gotcha found on live hardware: RectangleElement defaults to a 1px white border — explicitly disabled, with regression tests.
  • Docs: spec v1.1 section, README updates, corrected stale log paths.

Tests: 50 passed (was 36). Verified pixel-by-pixel on the device via /api/screen captures across all six visual states.

🤖 Generated with Claude Code

…down

Replace the single scrolling text line with layout "A + progress accent
bar": a 2px bottom-anchored bar showing time-to-event within
progress_window_minutes, a title row (HH:MM + event title, scrolling
only when it doesn't fit), and a native countdown element that ticks
on-device every second instead of being redrawn per poll.

Bar and countdown turn amber within notice_minutes (new config key,
default 15) and red within warn_minutes of the event start; an
in-progress event switches to a full-height teal bar and a countdown to
the event's end instead of its start. run_once now checks for an active
event unconditionally (previously only under auto_busy) and prefers it
over a later upcoming one for display.

Also fixes a firmware gotcha found via on-device verification:
RectangleElement defaults to a 1px white border that, at 2px bar width,
painted the whole bar white regardless of fill_colors -- now disabled
explicitly with border_width=0.

format_countdown is removed; its only caller (the old renderer) is gone
and no test needs it.
build_ci_payload now draws a rounded-rect background behind the bold
scrolling alert text instead of plain colored text on black: red
#A32D2DFF for failures, amber #BA7517FF for stuck queues, matching text
in white / black respectively. show_green and LED blink behavior are
unchanged. Same RectangleElement border gotcha as the calendar bar
applies here (border_width=0 needed to avoid an unwanted white outline
around the badge).

main.py's summary line now looks up the text element by type instead of
assuming elements[0], since the background rect is now first.
Add a dated addendum to the design spec covering the new layout, the
new config keys, and the RectangleElement border_width gotcha found
during on-device verification. Update both integration READMEs to
describe the new display (progress bar + title row + native countdown
for calendar; full-panel badge for CI alerts) and the two new
calendar_countdown config keys.
Both integrations' Logs sections still pointed at /tmp/busybar-*.log,
but commit 84bf461 moved the LaunchAgent plists to log under
~/Library/Logs/busybar/ for persistence. Update path + tail command in
both READMEs to match.
@sumitake
sumitake merged commit 8d816a2 into main Aug 4, 2026
2 checks passed
@sumitake
sumitake deleted the dev/claude/display-v1.1 branch August 4, 2026 00:01
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