Skip to content

[codex] Polish meteor ritual and unify tray icon#3

Draft
Evander764 wants to merge 15 commits into
mainfrom
codex/work-rituals-meteor-dawn-20260510
Draft

[codex] Polish meteor ritual and unify tray icon#3
Evander764 wants to merge 15 commits into
mainfrom
codex/work-rituals-meteor-dawn-20260510

Conversation

@Evander764

@Evander764 Evander764 commented May 10, 2026

Copy link
Copy Markdown
Owner

Summary

  • Keep Claude's Canvas 2D Meteor Dawn implementation as the source of truth and preserve the deployed ritual updates.
  • Upgrade only the Meteor Dawn Web Audio branch with a more cinematic dawn sound design: low-frequency pressure, meteor whoosh/riser layers, impact weight, and warm release.
  • Unify the Windows system tray/status-area icon source so the bottom-right tray icon uses the same .ico source as the packaged app icon.

Root Cause

  • The bottom-right status-area icon is created by new Tray(createAppIcon(16)) in src/main/windows.ts; it is not generated automatically by Windows.
  • createAppIcon() previously preferred ../renderer/tray-icon.png, then favicon.png, then favicon.ico and favicon.svg.
  • public/favicon.ico and buildResources/icon.ico are identical, but tray-icon.png is a separate PNG source, so the tray icon could drift from the taskbar/app icon.

Verification

  • npm.cmd run typecheck
  • npm.cmd test -- --run src/main/ritualHtml.test.ts
  • npx.cmd eslint src/main/windows.ts src/main/ritualHtml.ts src/main/ritualHtml.test.ts
  • npm.cmd run build
  • node --check out/main/index.js
  • npm.cmd run pack:win
  • npm.cmd run deploy:local
  • Verified buildResources/icon.ico and public/favicon.ico have the same SHA256 hash.
  • Verified source and deployed app.asar main process no longer contain tray-icon.png, favicon.png, or favicon.svg as tray icon candidates.
  • Verified deployed app.asar main process contains only .ico tray candidates plus the embedded fallback.

Note

  • Full npm.cmd run lint is still avoided because local .claude/worktrees directories have previously caused ESLint to discover multiple TSConfig roots; the changed files pass targeted lint.

@Evander764 Evander764 changed the title [codex] Add work rituals and meteor dawn polish [codex] Polish meteor ritual and unify tray icon May 12, 2026
Evander764 and others added 3 commits May 19, 2026 23:15
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant