[Seasonal · human approval required] Autumn: better design & features #237

Closed
opened 2026-09-25 13:03:46 -04:00 by jared · 2 comments
Owner

Autumn seasonal theme: better design and features

Human approval required. AI may research, design, prototype and implement changes for this theme, but it may not approve or close this issue. Only a human (Jared) closes it, after reviewing the rendered result. Work happens on a branch (seasonal/autumn) and reaches lotus only when a human merges it.

Active: Sep 21 – Oct 14 (auto), or any time via Settings → General → Seasonal Theme
Code: src/app/components/seasonal/themes/Autumn.tsx + Autumn.css.ts; schedule in seasonSchedule.ts

What it does today

Amber-to-rust wash, sun shafts, drifting dust motes and maple/oak leaves tumbling down, with a warm vignette.

Baseline: what it actually looks like (rendered 2026-09-25, not inferred from the code)

Left to right: desktop mid-animation (5 s in), desktop with reduced motion, phone (Pixel 7). Light theme, a real room with messages.

Autumn baseline

What the render shows:

  • Almost invisible mid-animation at desktop size: the wash is faint and no leaves were on screen in the captured frame.
  • The reduced-motion scene shows a few leaves, some on top of text ("Sends 179…", the members area).
  • The seasonal floating button (bottom-right) overlaps the composer's send button on a phone.
  • Only the light theme was rendered for this baseline; dark (and the other colour themes) must be checked too.

Ideas to explore (not decisions)

  • Make it noticeably autumnal without covering text: leaves along the edges/bottom, a stronger warm light.
  • Optional: a pile of leaves along the bottom edge that grows through the season.

Hard requirements for any design

  • Text stays readable: nothing opaque or high-contrast over message text, names, the composer, headers or controls. Check WCAG AA contrast of text over the effect.
  • Reduced motion: a static version that still looks good (reduced prop).
  • Performance: transform/opacity animation only; no measurable jank while scrolling or typing; nothing runs when the theme is off.
  • No pointer interference: the overlay never blocks clicks or taps.

Required process: render and look, don't trust the code

Every iteration must be rendered in a real browser and looked at before it's proposed. Code review alone is not enough.

  • Screenshots of: desktop and phone, light and dark theme, reduced motion, and 2–3 frames of the animation (or a short recording), in a room with real messages.
  • Before/after images posted on this issue for each iteration, with a short note on what changed and why.
  • Checked against the hard requirements above, on the rendered images.

Approval (human only)

  • A human has reviewed the rendered design and approves it.
  • A human has merged seasonal/autumn.
  • A human closes this issue.
## Autumn seasonal theme: better design and features > **Human approval required.** AI may research, design, prototype and implement changes for this theme, but it **may not approve or close this issue**. Only a human (Jared) closes it, after reviewing the rendered result. Work happens on a branch (`seasonal/autumn`) and reaches `lotus` only when a human merges it. **Active:** Sep 21 – Oct 14 (auto), or any time via Settings → General → Seasonal Theme **Code:** `src/app/components/seasonal/themes/Autumn.tsx` + `Autumn.css.ts`; schedule in `seasonSchedule.ts` ### What it does today Amber-to-rust wash, sun shafts, drifting dust motes and maple/oak leaves tumbling down, with a warm vignette. ### Baseline: what it actually looks like (rendered 2026-09-25, not inferred from the code) Left to right: desktop mid-animation (5 s in), desktop with reduced motion, phone (Pixel 7). Light theme, a real room with messages. ![Autumn baseline](https://code.lotusguild.org/attachments/2bb6934a-616b-4e0a-b877-a3847eee897f) What the render shows: - Almost **invisible** mid-animation at desktop size: the wash is faint and no leaves were on screen in the captured frame. - The reduced-motion scene shows a few leaves, some on top of text ("Sends 179…", the members area). - The seasonal floating button (bottom-right) overlaps the composer's send button on a phone. - Only the **light** theme was rendered for this baseline; dark (and the other colour themes) must be checked too. ### Ideas to explore (not decisions) - Make it noticeably autumnal without covering text: leaves along the edges/bottom, a stronger warm light. - Optional: a pile of leaves along the bottom edge that grows through the season. ### Hard requirements for any design - **Text stays readable**: nothing opaque or high-contrast over message text, names, the composer, headers or controls. Check WCAG AA contrast of text *over* the effect. - **Reduced motion**: a static version that still looks good (`reduced` prop). - **Performance**: transform/opacity animation only; no measurable jank while scrolling or typing; nothing runs when the theme is off. - **No pointer interference**: the overlay never blocks clicks or taps. ### Required process: render and look, don't trust the code Every iteration must be **rendered in a real browser and looked at** before it's proposed. Code review alone is not enough. - [ ] Screenshots of: desktop and phone, light and dark theme, reduced motion, and 2–3 frames of the animation (or a short recording), in a room with real messages. - [ ] Before/after images posted on this issue for each iteration, with a short note on what changed and why. - [ ] Checked against the hard requirements above, on the rendered images. ### Approval (human only) - [ ] A human has reviewed the rendered design and approves it. - [ ] A human has merged `seasonal/autumn`. - [ ] A human closes this issue.
jared added the enhancementuxarea: appearanceneeds-human-review labels 2026-09-25 13:03:46 -04:00
Author
Owner

Pass 1 is ready for human review: PR #241 (branch seasonal/autumn)

The theme doesn't change on lotus until a human merges the PR. Only a human closes this issue.

What changed

  • The main problem was a bug, not the design. Every falling leaf sat in a leaf-sized wrapper pinned to the top of the screen, and that wrapper had contain: layout paint style. Paint containment clips children to the box, so each leaf stopped being drawn as soon as it fell out of its first ~40 px. That's why Autumn looked empty. The page still reported 10–16 leaves on screen, because a position check doesn't see the clipping; only the rendered image showed it. It's now contain: layout style.
  • Leaf shapes: a flag-style maple with bold lobes and a stem, which stays recognisable at 30 px (the old outline read as a star or splat), an oak with a stem, and a new aspen. Each has a gradient body and darker veins.
  • Palette: crimson, pumpkin orange, gold, russet and burnt orange, instead of muted tans that read as beige on the light theme.
  • Density: 12 leaves (was 16) at 28–52 px, with opacity capped at 0.5–0.65 so text under a passing leaf stays readable.
  • Dark themes: the leaves are brightened there. In the first redesign pass they sank into the dark warm wash.
  • Reduced motion: the resting leaves moved into empty parts of the layout (the middle of the left icon rail and the space under the member list), partly off-edge. They previously sat on the sidebar, the member list, the composer and the corner controls.

How it was judged

I captured frames at 10, 15 and 20 s after load, in light, dark, phone and reduced motion. The capture script also counts visible leaves and how many sit on text. That count missed the clipping bug; only looking at the images caught it. There were three passes:

  1. Fixed the clipping. The leaves appeared, but read as splats in a beige palette.
  2. New shapes and palette. Good in light mode, but the leaves nearly vanished in dark, and the resting leaves covered controls.
  3. Brightened the leaves in dark mode and moved the resting leaves to empty areas. This is the pass shown below.

Light, 15 s in (left: before, right: after)
light

Dark, 15 s in
dark

Reduced motion and phone at 20 s (before / after / before / after)
reduced and phone

Close-up of the new leaves (light theme, actual size)
close-up

Open questions for the reviewer

  • Falling leaves still pass over text now and then, for a second each; the text stays readable underneath (see the dark frame). Is that acceptable, or should leaves avoid the reading column?
  • Is the light-theme intensity right? It's gentle, not loud.
  • The sun-shaft light bands and the warm wash are unchanged. Should they be kept, toned down or dropped?
  • Not in this pass: the "leaf pile" idea and any other features.
## Pass 1 is ready for human review: PR #241 (branch `seasonal/autumn`) **The theme doesn't change on `lotus` until a human merges the PR. Only a human closes this issue.** ### What changed - **The main problem was a bug, not the design.** Every falling leaf sat in a leaf-sized wrapper pinned to the top of the screen, and that wrapper had `contain: layout paint style`. Paint containment clips children to the box, so each leaf stopped being drawn as soon as it fell out of its first ~40 px. That's why Autumn looked empty. The page still reported 10–16 leaves on screen, because a position check doesn't see the clipping; only the rendered image showed it. It's now `contain: layout style`. - **Leaf shapes:** a flag-style maple with bold lobes and a stem, which stays recognisable at 30 px (the old outline read as a star or splat), an oak with a stem, and a new aspen. Each has a gradient body and darker veins. - **Palette:** crimson, pumpkin orange, gold, russet and burnt orange, instead of muted tans that read as beige on the light theme. - **Density:** 12 leaves (was 16) at 28–52 px, with opacity capped at 0.5–0.65 so text under a passing leaf stays readable. - **Dark themes:** the leaves are brightened there. In the first redesign pass they sank into the dark warm wash. - **Reduced motion:** the resting leaves moved into empty parts of the layout (the middle of the left icon rail and the space under the member list), partly off-edge. They previously sat on the sidebar, the member list, the composer and the corner controls. ### How it was judged I captured frames at 10, 15 and 20 s after load, in light, dark, phone and reduced motion. The capture script also counts visible leaves and how many sit on text. That count missed the clipping bug; only looking at the images caught it. There were three passes: 1. Fixed the clipping. The leaves appeared, but read as splats in a beige palette. 2. New shapes and palette. Good in light mode, but the leaves nearly vanished in dark, and the resting leaves covered controls. 3. Brightened the leaves in dark mode and moved the resting leaves to empty areas. This is the pass shown below. **Light, 15 s in** (left: before, right: after) ![light](https://code.lotusguild.org/attachments/8113709e-3f05-49c3-9586-4da9c04ed064) **Dark, 15 s in** ![dark](https://code.lotusguild.org/attachments/4efbacb9-a2c2-4232-bbab-83656603e9ed) **Reduced motion and phone at 20 s** (before / after / before / after) ![reduced and phone](https://code.lotusguild.org/attachments/6f83f30a-d9b8-42d3-8737-eb97ba8430b7) **Close-up of the new leaves** (light theme, actual size) ![close-up](https://code.lotusguild.org/attachments/4164e013-f3df-452f-b0b5-2291a29b9e73) **Open questions for the reviewer** - Falling leaves still pass over text now and then, for a second each; the text stays readable underneath (see the dark frame). Is that acceptable, or should leaves avoid the reading column? - Is the light-theme intensity right? It's gentle, not loud. - The sun-shaft light bands and the warm wash are unchanged. Should they be kept, toned down or dropped? - Not in this pass: the "leaf pile" idea and any other features.
Author
Owner

Pass 2 is ready for human review (PR #241, now at 3e132069)

Jared said the orange tint felt off and asked me to keep redesigning until I was satisfied. These are the changes since pass 1, each judged on renders:

  • Tint removed. The amber wash, sun-shaft bands and vignette are gone. They turned the user's theme beige (muddy brown on dark) and lowered contrast everywhere. Autumn is now the app as it is, with leaves.
  • Dust motes removed. They were invisible specks that added nothing.
  • New: a gust. About every 42 s (the first ~8 s after load), five leaves blow across the screen together, rising and spinning, in about 5 s. I tracked their positions frame by frame. The first version stalled mid-screen for a second, because an eased timing curve is applied to each keyframe segment. It now uses linear timing and keeps moving.
  • Softer flutter. Leaves used to flatten into slivers mid-flip.
  • Stronger leaf colour (opacity 0.58–0.73, a less pale gold) and brighter leaves on the dark themes.
  • Phones with reduced motion. A phone has no icon rail, so the resting leaves were landing on the timeline icons. They now tuck further off-edge and are smaller.
  • Settings thumbnail. It used the reduced scene and came out as a black square with two leaf fragments at its edges. A new optional preview prop on the seasonal overlays lets Autumn draw a composition made for the tile.
  • Performance: 60 fps with the theme on and off; the 95th-percentile frame is 16.7 ms either way.

Light: original vs now
light

Dark: original vs now
dark

Reduced motion (desktop), phone, and phone with reduced motion
reduced and phone

A gust passing, full size (t ≈ 10 s)
gust

Settings thumbnail
preview

Still open for the reviewer

  • Leaves still cross text for a moment as they fall, and the gust briefly crosses the middle of the screen. Text stays readable underneath.
  • With reduced motion on a phone the scene is very calm (a few leaves tucked at the edges). I chose that deliberately, since there's no empty space on a phone.

Only a human approves this, merges PR #241 and closes #237.

## Pass 2 is ready for human review (PR #241, now at `3e132069`) Jared said the orange tint felt off and asked me to keep redesigning until I was satisfied. These are the changes since pass 1, each judged on renders: - **Tint removed.** The amber wash, sun-shaft bands and vignette are gone. They turned the user's theme beige (muddy brown on dark) and lowered contrast everywhere. Autumn is now the app as it is, with leaves. - **Dust motes removed.** They were invisible specks that added nothing. - **New: a gust.** About every 42 s (the first ~8 s after load), five leaves blow across the screen together, rising and spinning, in about 5 s. I tracked their positions frame by frame. The first version stalled mid-screen for a second, because an eased timing curve is applied to each keyframe segment. It now uses linear timing and keeps moving. - **Softer flutter.** Leaves used to flatten into slivers mid-flip. - **Stronger leaf colour** (opacity 0.58–0.73, a less pale gold) and brighter leaves on the dark themes. - **Phones with reduced motion.** A phone has no icon rail, so the resting leaves were landing on the timeline icons. They now tuck further off-edge and are smaller. - **Settings thumbnail.** It used the reduced scene and came out as a black square with two leaf fragments at its edges. A new optional `preview` prop on the seasonal overlays lets Autumn draw a composition made for the tile. - **Performance:** 60 fps with the theme on and off; the 95th-percentile frame is 16.7 ms either way. **Light: original vs now** ![light](https://code.lotusguild.org/attachments/3fd8d0f1-2040-486c-916e-dcbc9daad876) **Dark: original vs now** ![dark](https://code.lotusguild.org/attachments/a25a57b8-0711-46ad-8d45-860c7aee4ab5) **Reduced motion (desktop), phone, and phone with reduced motion** ![reduced and phone](https://code.lotusguild.org/attachments/fd10df43-0cff-496c-a37c-9c43e0a6924d) **A gust passing, full size (t ≈ 10 s)** ![gust](https://code.lotusguild.org/attachments/909a5efd-ebe1-4c5e-887d-27fe941eadee) **Settings thumbnail** ![preview](https://code.lotusguild.org/attachments/8d1ee0b0-6c9d-4603-8a24-09d064b6545e) **Still open for the reviewer** - Leaves still cross text for a moment as they fall, and the gust briefly crosses the middle of the screen. Text stays readable underneath. - With reduced motion on a phone the scene is very calm (a few leaves tucked at the edges). I chose that deliberately, since there's no empty space on a phone. Only a human approves this, merges PR #241 and closes #237.
jared closed this issue 2026-09-25 14:29:08 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LotusGuild/cinny#237