Troca o visual de simulação (milhares de partículas + grão) por pintura
estilizada: fita contínua de sprites grandes sobrepostos ao longo do
equador galáctico, 8 nuvens grandes em regiões reais (bojo, Scutum,
Carina, Cygnus) e Grande Fenda + Saco de Carvão recortados com
destination-out — bordas macias, zero ruído de pontos. A âncora
astronômica continua: tudo gira com o céu real. Sprites escalam com a
altura da tela (nítido em qualquer resolução).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HtPHsTnDcLVSCiF5FGHZj
Substitui a simulação procedural pelo mapa "Gaia's sky in colour"
(ESA/Gaia/DPAC, CC BY-SA 3.0 IGO): tools/build_skymap.py baixa o
original 8000x4000 em projeção Hammer, reprojeta para plate carrée e
gera milkyway.jpg (3072x1536). O dancer.html amostra a textura por
pixel em (l,b) galácticas reais — grade pré-computada por resolução/
latitude, com só a rotação sideral variando por passo (matriz E2G·Rz
combinada). Nível de preto remove o véu de fundo do mapa; extinção e
clarão aplicados por pixel. Remove mwGlow/mwGrain/poeira procedural.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HtPHsTnDcLVSCiF5FGHZj
Substitui as faixas senoidais binárias por: queda quadrática suave nas
bordas, caminho/largura irregulares (senos incomensuráveis), escuridão
variando em manchas ao longo da banda e nuvens escuras discretas em
posições reais (Saco de Carvão junto ao Cruzeiro, Cachimbo em Ofiúco).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HtPHsTnDcLVSCiF5FGHZj
Via Láctea em três camadas ancoradas em coordenadas galácticas reais:
véu difuso (3600 blobs) com gradiente térmico — creme-âmbar no núcleo,
azul no anticentro —, grão estelar fino (9500 pontos sub-pixel) e
estrutura: bojo central, Grande Fenda + faixa de poeira secundária,
14 nuvens estelares (Scutum/Sagitário/Carina).
Layout: capa do álbum vai para a esquerda, letra para a direita
(alinhada à direita).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HtPHsTnDcLVSCiF5FGHZj
O wallpaper age como janela real: estrelas nascem subindo dentro da
cena e o núcleo galáctico entra em cena nas noites de inverno.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HtPHsTnDcLVSCiF5FGHZj
Substitui os 220 pontos aleatórios por projeção alt-az real: tempo
sideral local (GMST validado contra Meeus 12b), estrelas do catálogo
com cor/brilho reais e Via Láctea procedural gerada em coordenadas
galácticas (matriz Hipparcos J2000) — a banda gira rígida com o céu,
com Grande Fenda e núcleo em Sagitário. Vista para o sul (Cruzeiro,
α Cen e Carina quase sempre em cena). Camada estática pré-renderizada
offscreen; só estrelas de mag<=4 cintilam por frame; reprojeção a cada
30s. Extinção atmosférica no horizonte e clarão ao redor do sol
cenográfico. Debug: window.__skyTimeOffset.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HtPHsTnDcLVSCiF5FGHZj
tools/build_catalog.py baixa o bsc5-short.json, converte RA/Dec/V/K e
emite starcatalog.js compacto (65KB) com paleta de cores por
temperatura (corpo negro dessaturado).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HtPHsTnDcLVSCiF5FGHZj
Recarrega o plugin via D-Bus (troca para org.kde.image e volta) e
alterna chuva -> balada -> chuva -> retrowave com pausas configuráveis
para inspecionar as transições.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HtPHsTnDcLVSCiF5FGHZj
Rain and globe rAF loops now start on demand and stop when their
effect fully fades, instead of ticking every frame forever. Lightning
clears the bluish strobe tint after each burst. Removed triggerStrobe,
which was disabled and unreferenced.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HtPHsTnDcLVSCiF5FGHZj
On page load the first poll counted as a change and applied the file
value, so a stale /tmp file could flip the mode set by the Plasma
config ~800ms after startup. Record the baseline silently; only real
changes toggle modes.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HtPHsTnDcLVSCiF5FGHZj
Rain mode with canvas rain, stormy sky, sun-to-moon transition and
lightning strobe. Mode switching fixed so only one of moon/globe shows:
file pollers are edge-triggered (stale /tmp files no longer fight),
toggle scripts keep the files mutually exclusive, exits fade fast while
entrances stay slow, drawGlobe solely owns globe opacity, and leaving
chuva restores the album-color theme on fog/horizon.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HtPHsTnDcLVSCiF5FGHZj
Removes the pynput/curl-based shortcut approach in favour of a plain
Plasma wallpaper config checkbox (ShowSkeleton). QML reads the setting
on page load and on change, calling setShowSkeleton() in JS directly.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Also switch lyric lines to word-wrap layout with a translateY inner
container, so long lines wrap instead of being cut with ellipsis.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace circular ring-buffer scroll with verse-aware display: backend
now groups lyrics into verses on empty lines or timestamp gaps >3.5s
and exposes verse_lines + verse_active; frontend rebuilds the DOM once
per verse (fade-out/in) and animates only opacity/font/glow when the
active line advances within the same verse. CSS mask-image gradient
replaces hard overflow clipping at top and bottom edges.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
position:absolute children with width:100% require explicit parent width.
max-width alone leaves the container at 0px, hiding all text via overflow:hidden.
Also removed jump-detection branch to avoid opacity:0 dead-ends.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace blink-all transition with a circular ring buffer: each lyric
line is absolutely positioned (30px slot). On advance the ring scrolls
up, the outgoing element is recycled to the bottom with new content
(transition disabled for the snap). All style properties (top, opacity,
font-size, color, text-shadow) animate together via CSS transition so
the new active line gains focus as it scrolls into center position.
Jumps (seek / track change) still use a crossfade.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- get-playing.sh: iterates playerctl players, picks the one actually
Playing; QML now calls this instead of bare playerctl metadata so
a paused Spotify no longer blocks a playing YouTube from showing
- dancer.html: replace single lyric line with 5-slot karaoke display —
active line (center) is full-brightness with theme-color glow; 2 lines
before/after are progressively dimmed; slots fade out/in (0.18s/0.45s)
when the active line advances
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
qdbus6 refreshCurrentShell sometimes reloads the page before the
WebEngine has settled, leaving innerWidth/Height at 0. Canvas stays
0x0 and the rAF loops draw nothing. initCanvases() now polls every
80ms until dimensions are valid before calling resizeCanvas/resizeFloor.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
music-light fetches synced LRC lyrics from lrclib.net on track change,
tracks playback position via a 0.5s background thread, and exposes the
current lyric line in /current. dancer.html polls /current at 700ms and
displays the line bottom-left with a cyan glow, subtitle style.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
rgba(20,0,50,0.72) lets the gradient bleed through the bands, reducing
harsh contrast while keeping the stripe effect visible.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
280px circle with repeating stripe overlay (13px gap / 4px band),
yellow→orange→magenta→purple gradient, positioned half-buried at the
horizon so the floor grid renders over the lower half and the fog floats
in front. Atmospheric halo via ::after pseudo-element.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>