fix(calendar): the polish round — review fixes and the revised handoff #268
No reviewers
Labels
No labels
adr
android
area/calendar
area/design-system
area/i18n
area/jobs
area/offline
area/server
area/testing
bug
ci
duplicate
enhancement
help wanted
invalid
notifications
question
reliability
security
severity/low
severity/medium
tracking
web
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
eagraiclainne/app!268
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/calendar-polish"
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?
Stacked on #265 (
feat/calendar-toolbar) — merge that first. The morning review's fixes plus the handoff's post-1.8.1 revisions, both surfaces:Review fixes
Handoff revisions (§2.1/§2.4/§2.5)
--surfacepanel with a--lineedge — the page's dot matrix never shows through; the selected column, untimed band and today's rail stay--card.on-marktoken —cmd/tokengencomputes the pick (on-accent vs ink, pole fallback under AA) per theme × mode × mark, custom themes re-make it at apply time,conformance/on-mark.jsonpins web and Android to the same choices.late(now its own span — fixture updated), the title never falls below ~6em, the pill never leaves, the row clips its own content.Issues #266 (Android confirm counts) and #267 (golden coverage for the new sheets) track the remaining calendar follow-ups.
Review round against the updated handoff (after a live
make deployaudit): seven more commits.data-cal-viewlanded, so it scrolled adisplay:noneview. Week now opens at 08:00/now-line, agenda opens on today inside its own scrolling plane (demo's 40rem cap); the week axis viewport drops to 26rem so the anchor is reachable.make check, gallery 53/53, live pages 66/66, Android tests + Roborazzi all green; page goldens re-recorded in their own commit.Week-view follow-ups from the deployed check, four more commits:
board.loadingis now a dep, so reload-into-week/agenda anchors too (folded into the anchors commit).Page goldens re-recorded;
make check, pages 66/66, Android tests + Roborazzi green.3e597648afff62a68eb6Two more from the live check:
The week cursor follows the month cursor (one commit, both surfaces): paging months in the month or agenda view moved only the fetch window —
weekSelstayed behind, so opening the week view landed on a week outside the loaded range and drew empty until a week step forced the window over. Stepping the month now carries the week cursor: today's week when the month holds today, else the month's first week. Verified live: month → next month → Week opens on the new month's first week with its data.The Month→Week default flip was not a code bug — it was me. My verification scripts clicked the Week/Agenda toggles while signed in as the real account, and
calendar_viewsyncs through UserSettings (ADR-0029), so they overwrote the stored pref. I've restored it to auto (Month on desktop) with a maskedsettingswrite; the rest of the settings record (mark, theme, text scale, card tilt) was untouched. Apologies for the confusion that caused.make check, pages 66/66, Android tests + Roborazzi green.Test report
Coverage: 27.0%
Updated by the check workflow · commit
68f5b3c14eAndroid test report
Coverage: 10.5% of lines
Updated by the android workflow · commit
68f5b3c14eThe repeat-editor formatting report, two commits:
The interval field wears the sheet's ink. The underline treatment was scoped to the jobs repeat sheet's wrapper on the old reasoning that the event form was a form — that form died in #264, so the event repeat sheet and the new-job sheet rendered a bare
<input>thatcolor-scheme: darkpaints as the browser's own near-black box. The underline is now the editor field's own dress; the jobs wrapper keeps only its width override. (Android's Material field already follows the theme.)Your job screenshot also caught a real leak: it shows a Yearly chip, which the job repeat SHEET filters out — meaning it was the NEW-JOB sheet, which called the shared editor unfiltered on both surfaces. Creating a job could offer
EVERY_N_YEARS, whichdomain.ValidateRepeatrejects on an item at save. Both create flows now pass the sameJOB_KINDSfilter the repeat sheet documents.Verified live in dark mode: event editor keeps five shapes with a themed underlined field; the new-job editor offers four. Gallery 53/53,
make check, Android tests + Roborazzi green.Ruling applied — the new job's Repeats is now a row that opens the sheet, both surfaces (one commit):
Repeats · No ›picker row opens the sameJobRepeatSheetthe job sheet already uses, and the row's value reads the rule's own words (jobRepeatLabel) once one is picked.Repeats? No | Yes).JOB_KINDSexport moves back inside the sheet on both surfaces — with the inline call site gone, the sheet is the only job path into the shared editor again.Yesmsgid fell out of the catalogs with the toggle (extract --clean + android-i18n ride the commit).Verified live: screen two is rows (
Repeats · No ›/Worth · Nothing yet ›), the row opens the full sheet (phrased chips, builder, readback), a chip pick commits and lands back on the row.make check, Android tests + Roborazzi green; no goldens pose the new-job screens (#267's gap again).On-device check found a launch crash on the phone (API 31):
NoSuchFieldError: ListFormatter$Type.UNITSinwaitingNames— the Type/Width overload andType.UNITSitself only exist from API 33 (minSdk is 26), and Robolectric's pinned sdk 35 meant no suite could see it. Below 33 the names now fall back to a comma join (byte-identical toconformance/render-job.json's English pick,Ali, Sam); 33+ keeps ICU's per-locale list styling. Swept the rest of theandroid.icuusage — MessageFormat, DateFormat skeletons and the plainListFormatter.getInstance(locale)are all API 24–26 — and a lint pass shows zero remaining NewApi hits. Verified on the device: reinstall, launch, boards render, no crash.