Skip to content

Kiosk: replace the wallpapers with scenic landscapes - #6

Merged
EveAeternam merged 3 commits into
mainfrom
claude/kiosk-wallpapers-g2yjrq
Oct 13, 2026
Merged

EveAeternam merged 3 commits into
mainfrom
claude/kiosk-wallpapers-g2yjrq

Conversation

@EveAeternam

Copy link
Copy Markdown
Collaborator

Requested by Evie · project thread

What changed and why

Before: kiosk mode's wallpapers were a nearly invisible circuit-board schematic, a hex tile, three blurry flat gradients and a synthwave scene whose header text got cropped off and whose grid never animated (the <set attributeName="begin"> trick doesn't work). The picker showed made-up gradients instead of the wallpapers, and desktop icon labels used the theme's text colour, so they went dark-on-dark in the light theme.

After: eight drawn landscapes (mountains at dusk as the new default, moonlit forest, dawn at sea, kelp forest with a whale, desert dusk, northern lights, the Lascaux frieze on a torchlit cave wall, plain graphite). The picker shows each real wallpaper as a 16:10 thumbnail and is translated; icon labels are always white with a shadow.

How: ui/scripts/wallpapers.py (no dependencies, seeded so re-runs are stable) draws the scenes into ui/src/kiosk/wallpapers/*.svg at 2560×1600 with xMidYMax slice, so the horizon stays in view on 16:9, ultrawide and portrait screens; the top third stays calm for the icons, and a fine grain stops dark gradients banding. It reuses whale.svg and lascaux-frieze.svg from the theme scenery. wallpapers.ts imports them with ?url; ids from the old set fall back to the default (minimal maps to graphite). Default dimming drops from 25% to 10% since the scenes are already dark where the icons sit.

How you tested it

  • scripts/check.sh pieces: tsc --noEmit clean; regression suite 425/427, the two failures (integrity_test backup permissions under root, smoke_test /api/models with no Ollama) are environment-only and untouched by this diff
  • User-visible change: entry added at the top of docs/changelog.json
  • New UI strings wrapped in t('…') with French lines appended to ui/src/i18n/fr.json (not re-sorted)
  • Manual or API docs updated where a route, tool or table changed (none changed)
  • No secrets, chats or personal data in the diff or the screenshots

npm run build passes. Each wallpaper was rendered in Chromium at 1920×1080 and 800×1280, and the picker plus desktop icons were rendered in a harness page. Not yet tried on the Spark's real kiosk display.

Screenshots

Before/after sheets and the new picker are attached in the project thread.

New dependencies

None.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LNy4Cm6Yon9iovsqAFxxtf


Generated by Claude Code

The old set was a hand-drawn circuit board, a hex tile, three flat gradients and a synthwave
scene whose header text was cropped off and whose grid never animated. The picker showed
gradients instead of the wallpapers, and icon labels used the theme's text colour, so they went
dark-on-dark in the light theme.

- scripts/wallpapers.py draws eight layered scenes (mountains at dusk, moonlit forest, dawn at
  sea, kelp forest with a whale, desert dusk, northern lights, the Lascaux frieze on a torchlit
  wall, plain graphite) into src/kiosk/wallpapers/*.svg, anchored to the bottom edge so any
  screen shape keeps the horizon, with grain against banding.
- The picker shows each real wallpaper as its thumbnail; its strings are translated (French
  appended to fr.json).
- Desktop icon labels are always white with a shadow.
- Default dimming 25% -> 10%; stored ids from the old set fall back to the new default.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LNy4Cm6Yon9iovsqAFxxtf
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LNy4Cm6Yon9iovsqAFxxtf
@EveAeternam EveAeternam self-assigned this Oct 13, 2026
Conflicts in docs/changelog.json and ui/src/i18n/fr.json: both sides added entries in the same
place. Kept all of them: the kiosk changelog entry stays on top, and the kiosk French strings
come after main's new ones at the end of fr.json.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LNy4Cm6Yon9iovsqAFxxtf
@EveAeternam
EveAeternam marked this pull request as ready for review October 13, 2026 02:31
@EveAeternam
EveAeternam merged commit f8bb3e7 into main Oct 13, 2026
2 checks passed
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.

2 participants