Add a Stats mode: day, week, month and year views #3

Merged
govtech42 merged 1 commit from feat/stats into main 2026-08-27 14:49:10 +00:00
Owner

A third tab next to the timer and the clock. Day shows stacked hourly bars
(focus + break, trimmed to the active range); Week shows bars per weekday;
Month is a calendar of dots sized by focus time (area-proportional); Year is
a heatmap grouped by month. Every view carries the focus/break/block totals,
a focus-break ratio split bar and the average focus by time of day. Tapping
a day anywhere drills into the Day view.

Everything is aggregated on the fly from the existing log — no new storage,
no chart library, charts are plain divs. Monday-first everywhere, matching
the ISO week numbers shown in the month view. The model's "Interruptions"
stat is deliberately replaced by "Blocks": interruptions are not tracked and
tracking them would mean new storage.

Ten new i18n keys across the six languages; month, weekday and date names
come from Intl. Self-checks cover the ISO week (Sep 2026 = week 36), the
ratio rounding (20% / 23%, validated against the reference app) and the
splitting of entries across hour and period boundaries.

Co-Authored-By: Claude Opus 5 noreply@anthropic.com

A third tab next to the timer and the clock. Day shows stacked hourly bars (focus + break, trimmed to the active range); Week shows bars per weekday; Month is a calendar of dots sized by focus time (area-proportional); Year is a heatmap grouped by month. Every view carries the focus/break/block totals, a focus-break ratio split bar and the average focus by time of day. Tapping a day anywhere drills into the Day view. Everything is aggregated on the fly from the existing log — no new storage, no chart library, charts are plain divs. Monday-first everywhere, matching the ISO week numbers shown in the month view. The model's "Interruptions" stat is deliberately replaced by "Blocks": interruptions are not tracked and tracking them would mean new storage. Ten new i18n keys across the six languages; month, weekday and date names come from Intl. Self-checks cover the ISO week (Sep 2026 = week 36), the ratio rounding (20% / 23%, validated against the reference app) and the splitting of entries across hour and period boundaries. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A third tab next to the timer and the clock. Day shows stacked hourly bars
(focus + break, trimmed to the active range); Week shows bars per weekday;
Month is a calendar of dots sized by focus time (area-proportional); Year is
a heatmap grouped by month. Every view carries the focus/break/block totals,
a focus-break ratio split bar and the average focus by time of day. Tapping
a day anywhere drills into the Day view.

Everything is aggregated on the fly from the existing log — no new storage,
no chart library, charts are plain divs. Monday-first everywhere, matching
the ISO week numbers shown in the month view. The model's "Interruptions"
stat is deliberately replaced by "Blocks": interruptions are not tracked and
tracking them would mean new storage.

Ten new i18n keys across the six languages; month, weekday and date names
come from Intl. Self-checks cover the ISO week (Sep 2026 = week 36), the
ratio rounding (20% / 23%, validated against the reference app) and the
splitting of entries across hour and period boundaries.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
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
govtech42/pomolog!3
No description provided.