fix(rituals): UI/UX debug pass — overview, calendar, crons (cave-v1x6)#3717
Merged
Conversation
…cave-v1x6) Overview: - Log pane rows now show when the item fired (firedAt ?? updatedAt ?? createdAt) instead of the future fireAt, so times are monotonic with the sort order - Search icon no longer disappears when the list is empty (dead-end state) - Focus returns to the header action button after delete for reminders AND crons (previously only the New-reminder path was restored, and never for crons) Calendar: - Single-letter view shortcuts (t/d/w/m/a/n) no longer hijack Cmd/Ctrl/Alt chords like Cmd+M (minimize) or Ctrl+D - Month prev/next now clamps to the last day of the target month instead of overflowing (Jan 31 -> Mar 3 skip-month bug) - Agenda view: items always sort ascending; 'Show N past items' control is also rendered when future groups exist (was only reachable on an empty agenda) Crons: - Detail panel Last/Next run uses the same relative-time formatting as the list (was absolute date past 60m, inconsistent side by side) - Weekly cadence echo lists days in week order (Mon, Wed, Fri) rather than click order - Replaced hard-coded rgba(255,255,255,*) and raw oklch() literals with semantic tokens (--foreground color-mix, --color-success/warning/danger) across status-icon, schedule-list, cron/reminder detail panels Verified: targeted test suites + typecheck green; fixes confirmed live via Playwright against a built server (Cmd+M guard, log-pane times, agenda past-items control, cron detail badge/relative times). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
UI/UX debug pass over the Rituals surface to fix several interaction and display bugs across the Overview, Calendar, and Crons tabs, and to align styling with theme tokens (especially for light mode). The PR also adds/extends source-pin tests to prevent regressions in the fixed behaviors.
Changes:
- Calendar: keep agenda ordering chronological when revealing past items; make “Show past items” reachable even when future groups exist; harden keyboard shortcuts against modified keypresses; clamp month navigation to avoid short-month overflow.
- Overview/Crons: fix timestamp presentation (log vs scheduled time) and unify cron run time formatting between list and detail panel; order weekly cadence display by week order.
- Theming: replace hard-coded white/oklch literals with semantic tokens and
color-mix(...)-based derived colors across multiple Rituals components; add regression pins in existing test suites.
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/components/calendar-view.tsx | Agenda ordering + “show past” control; keyboard shortcut modifier guards; month navigation clamp. |
| src/components/calendar-view-polish.test.ts | Adds pins asserting modifier-guarded shortcuts, month clamp logic, and agenda showPast behavior. |
| src/components/automations/status-icon.tsx | Replaces hard-coded rgba whites with theme-derived color-mix(...) values for status dots. |
| src/components/automations/schedule-list.tsx | Aligns paused indicator styling with theme-derived color-mix(...) tokens. |
| src/components/automations/ritual-overview.tsx | Adds timeMode to render log rows using last-activity time rather than future schedule time. |
| src/components/automations/reminder-detail-panel.tsx | Swaps hard-coded oklch/red hover colors for semantic theme tokens and color-mix(...). |
| src/components/automations/cron-detail-primitives.tsx | Uses semantic success token for “active” summary tile tone. |
| src/components/automations/cron-detail-panel.tsx | Uses relativeTimeSigned for run timestamps; week-orders cadence echo; replaces hard-coded colors with theme tokens. |
| src/components/automations-view.tsx | Fixes focus restoration after deletes across tabs; removes search dead-end gating; passes timeMode="log" for log rows. |
| src/components/automations-view.test.ts | Updates pins for focus-restore helper, overview search gating removal, log-time rendering, and “no hardcoded white rgba” rule. |
| src/components/automations-detail-inputs.test.ts | Adds pins for cron panel relative time formatting, week-ordered cadence echo, and tokenized status colors. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
1599
to
+1601
| case "ArrowLeft": if (target.closest('[data-calendar-event="true"], [data-month-cell="true"]')) break; e.preventDefault(); navigate(-1); break; | ||
| case "ArrowRight": if (target.closest('[data-calendar-event="true"], [data-month-cell="true"]')) break; e.preventDefault(); navigate(1); break; | ||
| case "t": case "T": setAnchor(new Date()); break; | ||
| case "d": case "D": setViewMode("day"); break; | ||
| case "w": case "W": setViewMode("week"); break; | ||
| case "m": case "M": setViewMode("month"); break; | ||
| case "a": case "A": setViewMode("agenda"); break; | ||
| case "t": case "T": if (e.metaKey || e.ctrlKey || e.altKey) break; setAnchor(new Date()); break; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Autopilot UI/UX debug pass over the Rituals surface (bead cave-v1x6). Bugs were identified by driving a built server with Playwright + seeded data, then fixed and re-verified live.
Overview tab
firedAt ?? updatedAt ?? createdAtbut rendered the futurefireAt, producing jumbled labels (in 6d, in 2d, in 1d, in 3h…).RitualItemRowgained atimeModeprop; the Log pane passestimeMode="log"and shows the same timestamp it sorts by. Verified live: log rows now read24m ago / 27m ago…monotonically.items.length > 0, so with an empty inbox the search icon vanished entirely (and an active query that filtered to 0 could never be cleared on mobile). Gate removed.focusHeaderAction()which falls backnewBtnRef → newCronBtnRef.Calendar tab
Cmd+M(minimize),Ctrl+D, etc. switched calendar views because the handler ignored modifiers. Each view case now breaks onmetaKey/ctrlKey/altKey. Verified live:Cmd+Mleaves the view unchanged; plainmstill switches to Month.navigate()month case steps from day 1 and clamps to the target month's last day.Crons tab
relativeTimeSigned— same run shown two ways side-by-side. Panel now usesrelativeTimeSigned.RRULE_DAY_ORDER(the generated RRULE was already ordered — display-only bug).rgba(255,255,255,*)withcolor-mix(in oklch, var(--foreground) N%, transparent)and rawoklch()literals with semantic tokens (--color-success/warning/danger) acrossstatus-icon,schedule-list,cron-detail-panel,cron-detail-primitives,reminder-detail-panel.Verification
css-source-contracthook where the runner applies it):automations-view,automations-detail-inputs,calendar-view-polish,calendar-keyboard,calendar-agenda-redesign,rituals-tabs,rituals-overview,calendar-actions,inbox-feed-a11y,delete-undo-surfaces,a11y-audit-fixes,github-subscribe-ux,mobile-shell-smoke,offline-work-queue,inbox-calendar-familiar-scope,calendar-view-primitives,calendar-overflow-pill,surface-preferences,pausable-poll-disciplinepnpm typecheckclean; fullpnpm buildcleanautomations-view.test.ts,calendar-view-polish.test.ts,automations-detail-inputs.test.ts