[codex] Polish meteor ritual and unify tray icon#3
Draft
Evander764 wants to merge 15 commits into
Draft
Conversation
Introduces a token layer (radius/spacing/elevation/accent/surface) and a
shared .surface-card primitive with --dark/--xl/--mini variants so the six
duplicated card treatments on the calibration overview (.calibration-task-row,
.calibration-audit-panel, .calibration-timeline-row, .calibration-section,
.calibration-section-index button, .calibration-work-mode) share one
consistent border / radius / lift / shine recipe instead of repeating it.
The two formerly bare display cards (.calibration-date-card,
.calibration-meter) now have subtle surface backgrounds, an inner divider
between weekday and lunar date, and a hover shine without lift so the live
numbers stay still. The progress track fill gains a 1px inner highlight for
metallic feel, and .glass-card is promoted to radius-lg with an inset
highlight plus a top drag-handle gradient hint.
Accessibility: role="status" + aria-live on the live countdown, generated
id + aria-labelledby on each AuditPanel section, focus-visible orange
outline on every interactive card, and the meta text on dark surfaces is
raised from #b8bec8 to #c8cdd6 (AA -> AAA at small sizes).
Card.tsx is extended with optional variant ('panel' | 'surface' |
'surface-dark' | 'glass') and interactive props while defaulting to its
previous behavior so existing call sites are unaffected.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The Windows packaging script created a junction in %TEMP% pointing back to the project root and ran build + electron-builder through it. Node's fs.mkdir(recursive: true) on Windows returns ENOENT when the path traverses a junction and the leaf does not exist yet, so rollup failed creating out/main and electron-builder failed creating release/<version>-<ts>/. The junction had no documented purpose, did not shorten the path (its %TEMP% location is longer than the real project root), and is the source of the mkdir bug. Drop it and run both commands from projectRoot directly. Also recreate out/ after rm in clean-output.mjs so the directory is left empty-but-existing for any later consumer. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Bug fixes on the Overview card system from c0c7167: - Task row hover overlay covers the text. .calibration-task-row's ::before shine is position:absolute (positioned descendant) while the span children are static. Per CSS painting order, positioned descendants paint above static ones in the same stacking context, so the shine slid across the numerals and titles on hover. Last round added z-index hygiene to the audit panel and timeline row but missed the task row -- added the same > * { position: relative; z-index: 1 } here, and pinned ::before to z-index 0. - Focus ring clipped by overflow:hidden. The :focus-visible rules used outline-offset: 2px, which draws the outline 4px outside the card's border-box. The ancestor .calibration-section has overflow:hidden, which clips descendant outlines that extend past the section content area -- so cards near the section edge lost part or all of their orange ring. Switched all six card :focus-visible rules to outline-offset: -2px so the ring renders just inside the border, fully visible regardless of ancestor clipping. - Meter L-shape at <=1180px. The earlier upgrade gave .calibration-meter a full surface-card border, but the existing @media (max-width: 1180px) block was written for the pre-upgrade "border-left only" shape -- it set border-top + reset border-left/padding-left but left border-right and border-bottom in place. Reset border, border-radius, background, padding and hide the shine in the media query so the meter cleanly becomes a top-divider strip on narrow screens. Chrome unification with the design tokens introduced last round: - Sidebar links: 6px -> --radius-md, hover bg #f1eee8 -> --accent-soft, active shadow -> --elevation-card-hover, added :focus-visible inset ring. - TitleBar window controls + End Day button: tokens for radius / fill / border / shadow, added focus-visible. - Button.tsx: rounded-lg -> --radius-md token, primary shadow -> --elevation-card-hover, ghost/secondary hover -> --accent-soft, every variant gets focus-visible. - EmptyState: --surface-fill-light + --radius-md. - Toggle: hardcoded outline color -> var(--color-primary). - .overlay-tool-button / .overlay-card-menu / .os-command-list / .os-command-item: tokens for radius + border, added focus-visible. Desktop widget pass: - New Badge.tsx primitive (~25 lines, three tones) replaces three near-identical status-pill spans in DesktopMainPanel / CountdownWidget / MemoWidget. - DesktopMainPanel: date card + SectionFrame radius 18px -> 14px, borders and fill use the surface tokens, shadow uses --elevation-card. - DailyTaskWidget: 18px checkbox -> 16px standard, left divider uses --surface-border-light. - MemoWidget: 22px radius -> 14px, padding 5 -> 4, status pill via Badge. - PrincipleWidget inherits focus-visible via the .overlay-tool-button refactor (no JSX change needed). Overview second pass: - Section ::after shine peak 0.34 -> 0.28 so hover no longer "white-flashes" over the content. - Task row hover lights up the checkbox border in --accent-strong as a click affordance. - Done stamp settles at rotate(-3deg) and tilts to rotate(-7deg) scale(1.04) on hover, restoring the ritual feel for already-completed rows. - Progress track 8px -> 10px for readability. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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.
Summary
.icosource as the packaged app icon.Root Cause
new Tray(createAppIcon(16))insrc/main/windows.ts; it is not generated automatically by Windows.createAppIcon()previously preferred../renderer/tray-icon.png, thenfavicon.png, thenfavicon.icoandfavicon.svg.public/favicon.icoandbuildResources/icon.icoare identical, buttray-icon.pngis a separate PNG source, so the tray icon could drift from the taskbar/app icon.Verification
npm.cmd run typechecknpm.cmd test -- --run src/main/ritualHtml.test.tsnpx.cmd eslint src/main/windows.ts src/main/ritualHtml.ts src/main/ritualHtml.test.tsnpm.cmd run buildnode --check out/main/index.jsnpm.cmd run pack:winnpm.cmd run deploy:localbuildResources/icon.icoandpublic/favicon.icohave the same SHA256 hash.app.asarmain process no longer containtray-icon.png,favicon.png, orfavicon.svgas tray icon candidates.app.asarmain process contains only.icotray candidates plus the embedded fallback.Note
npm.cmd run lintis still avoided because local.claude/worktreesdirectories have previously caused ESLint to discover multiple TSConfig roots; the changed files pass targeted lint.