fix(agenda): show multi-day events on every day they span #83
Reference in New Issue
Block a user
Delete Branch "fix/agenda-multiday"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Multi-day events in the agenda
Fixes multi-day events showing up on only their first day in the agenda
(screen and home-screen widget). They now list under every day
they span, with a day-aware time line so each day reads on its own:
Starts 14:00on the first day,All dayon the daysin between,
Ends 10:00on the last day.All dayon each day it covers.14:00 – 15:00/All day).Notable pieces
groupAgendaDaysnow expands each instance across the days it occupies(clamped to the visible window), shared by the screen and the agenda
widget so both group identically.
LazyColumnkeys — a spanning event's id is no longerunique across days (would crash the list otherwise).
detail card), so a one-day all-day event can't leak onto the next day
east of UTC.
agendaTimeLabel(event, day, zone)in the shared agenda layer; the screen and widget both resolvestrings from it, so they stay consistent.
Strings
Adds
agenda_span_starts/agenda_span_ends(English only — owes aWeblate backfill for the other locales).
Tests
JVM tests for the grouping (incl. an eastern-zone all-day regression)
and for
agendaTimeLabel's first/middle/last-day resolution.On-device verified on a Pixel (screen + widget). Branched off, and
merged up to, the current
release/v2.16.0(per-event time zones).🤖 Generated with Claude Code
A multi-day event now appears under every day it spans, so keying its row by instanceId alone repeated the key across days and crashed the LazyColumn ("Key already used") on scroll. Scope the key by day. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>A multi-day event repeated the same "start – end" on every day it spans ("14:00 – 14:00"), which reads as meaningless. Show only the part relevant to each day, with a "→" marking that it carries past the day's boundary: the first day shows the start ("14:00 →"), the last day the end ("→ 10:00"), and whole days in between an all-day span arriving from and continuing into their neighbours ("→ All day →"). Single-day rows are unchanged. Factors the span first/last-day resolution into shared EventInstance helpers reused by groupAgendaDays and the label. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>The "→" arrow convention read as unclear. Spell each day out instead: the first day names the start ("Starts 14:00"), the last day the end ("Ends 10:00"), and whole days in between read as "All day". All-day multi-day events stay "All day" on every day. Single-day rows unchanged. Adds agenda_span_starts / agenda_span_ends (owes Weblate backfill). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>