KDE Plasma 6 wallpaper — DANCEBOT-9000 animated dancing robot
  • JavaScript 43.3%
  • HTML 37%
  • Python 17.2%
  • Shell 1.6%
  • QML 0.9%
Find a file
vini cb6caf3d95 Bring the horizon down, pull the cross, put real clouds in the sky
Three things asked for together, and they turn out to be one: the sky
needed room.

HORIZON. It was 66% of the screen, hardcoded in eight places between the
CSS and the JS. It is now one number -- DAY_THEME.horizonPct -- with
HORIZON_F, HORIZON_B, the floor canvas ratio and the CSS variables
--day-horizon-pct / --horizon-bottom all derived from it, and it sits at
72%. Two things had to stop being screen fractions to survive the move.
The dancer's foot is now a fraction of the *floor* (0.68 of
--horizon-bottom): under one-point perspective the screen height below
the horizon is the distance of whoever stands on it, so the ratio is
what keeps him at the same place in the scene. The sun's culmination
stays measured from the bottom of the screen (SUN_TOP_PCT = 78) --
that height was picked by eye and should not move when the horizon
does; what changes is how far the sun climbs.

MONUMENT. Markup out of <body>, everything else left standing: the CSS
block, the art, the tool, and the five lines that bring it back quoted
in a comment where they used to sit. monumentClear() already returned 1
with no element, so --sun-art becomes altitude alone and the tarot face
now stays in the sky until dusk fades it.

CLOUDS. Cut from photographs, not drawn. The procedural version came
first and was not naive -- five-octave fBm with the domain warped by two
independent fields, an envelope of bulbs seated on a flat condensation
level, light from optical depth accumulated row by row with lateral
scattering -- and it still read as a cartoon. A cumulus silhouette is
the record of a history: it grew, was sheared, evaporated on one side.
An isotropic field has no history, so every stretch of its edge looks
like every other, and that is what reads as false. More octaves do not
buy history. Same lesson as the sun's orbit circles, drawn in CSS and
then re-cut from the art.

So tools/build_clouds.py separates cloud from sky by the red/blue ratio
-- the standard discriminator of whole-sky imagers, because Rayleigh
leaves the sky blue at R/B ~ 0.5 while droplets scatter colourlessly at
~1.0, shaded bases included. Measured here the histogram is bimodal with
a wide valley, and the valley is not noise to discard: it is the
physically semi-transparent edge, so the alpha is a ramp across it. Cost
of getting there, all recorded in the tool: a global sky median
oversubtracts where the blue is darker and outlines every cloud in
black (hence a local sky map), np.kron on the 1/8 permission mask
staircases the whole silhouette (bilinear plus a box blur), and a
component touching its neighbour cannot be cut at all -- the boundary
comes from the grid and draws rectangles, which is the same straight-cut
defect that sank the procedural version.

Placement stays procedural, because it is not shape. One nearness value
drives height, size, squash, opacity, speed and haze mix. The drift
phase is divided rather than drawn: with a handful of samples chance
clumped every cloud into the left half. #dayClouds gets isolation:
isolate -- opacity: 1 creates no stacking context, so the per-cloud
z-index escaped to the root and clouds passed in front of the sun and
the card. It sits before #duskSky so the golden hour washes over them,
which is free and is the loudest tell when it is missing.

And the sun's aura lost its middle stops (0.60/0.38/0.20 ->
0.52/0.26/0.13). Its box is 4.9x the disc, nearly the screen width, so a
38% cream veil at 36% of it covered the central third of the sky and no
cloud survived there. The first two stops are untouched. Tile memory
measured after: 0/min in steady state.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LFMiWt5zjgsFgxGowDtFgU
2026-09-06 18:51:25 -03:00
art Bring the horizon down, pull the cross, put real clouds in the sky 2026-09-06 18:51:25 -03:00
plugin Bring the horizon down, pull the cross, put real clouds in the sky 2026-09-06 18:51:25 -03:00
tools Bring the horizon down, pull the cross, put real clouds in the sky 2026-09-06 18:51:25 -03:00
.gitignore Bring the horizon down, pull the cross, put real clouds in the sky 2026-09-06 18:51:25 -03:00
AGENTS.md Note that accepted suggestions arrive unlabelled 2026-08-13 20:59:14 -03:00
CLAUDE.md Bring the horizon down, pull the cross, put real clouds in the sky 2026-09-06 18:51:25 -03:00
dev-server.sh Improve floor grid and add dev tooling 2026-06-07 07:42:19 -03:00
install.sh Initial commit — DANCEBOT-9000 KDE Plasma wallpaper plugin 2026-06-07 07:11:26 -03:00
preview-constellation.sh Add fixed constellation inspection mode 2026-07-19 14:32:48 -03:00
set-camera-position.sh Add fixed custom camera positions 2026-07-19 14:58:47 -03:00
set-sky-time.sh Force C locale for sky offset decimal point 2026-07-19 21:42:33 -03:00
set-sun-art.sh Keep the chosen sun art across a reboot 2026-08-17 09:16:22 -03:00
test-modes.sh test: script para ciclo manual de modos com reload do wallpaper 2026-07-19 10:27:04 -03:00
toggle-balada.sh feat: chuva mode — moon, rain, lightning; clean transitions with balada 2026-07-19 10:18:34 -03:00
toggle-camera-rotation.sh Add five minute panoramic sky rotation 2026-07-19 14:54:42 -03:00
toggle-chuva.sh feat: chuva mode — moon, rain, lightning; clean transitions with balada 2026-07-19 10:18:34 -03:00
toggle-constellations.sh refactor: controla constelações por script de atalho 2026-07-19 13:52:31 -03:00
toggle-ground.sh Give the floor a ground field: relief and a drawn stroke 2026-08-17 14:32:31 -03:00
toggle-skeleton.sh feat: balada mode — mirror ball, disco floor, spotlights, sun transition 2026-06-13 19:36:24 -03:00
toggle-sky-timelapse.sh Add accelerated sky preview 2026-07-19 14:22:19 -03:00
uninstall.sh Initial commit — DANCEBOT-9000 KDE Plasma wallpaper plugin 2026-06-07 07:11:26 -03:00