Commit graph

95 commits

Author SHA1 Message Date
vini
fd7f131b26 Revert "feat: Via Láctea real — mapa all-sky do Gaia amostrado por pixel"
This reverts commit c4c9574946.
2026-07-19 11:26:52 -03:00
vini
c4c9574946 feat: Via Láctea real — mapa all-sky do Gaia amostrado por pixel
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
2026-07-19 11:23:32 -03:00
vini
2014dcf9b7 fix: poeira da Via Láctea orgânica — bordas suaves, manchas, Saco de Carvão
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
2026-07-19 11:11:31 -03:00
vini
2f4994918d feat: Via Láctea estilo astrofoto + capa/letra trocadas de lado
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
2026-07-19 11:08:07 -03:00
vini
0474a9ab83 feat: vista do céu voltada para o leste — a tela física olha p/ leste
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
2026-07-19 11:02:32 -03:00
vini
54666b0fc2 fix: Via Láctea ~3.5x mais brilhante — era imperceptível sob scanlines
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HtPHsTnDcLVSCiF5FGHZj
2026-07-19 10:55:07 -03:00
vini
1c1a854875 docs: CLAUDE.md — céu realista e tools/build_catalog.py
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HtPHsTnDcLVSCiF5FGHZj
2026-07-19 10:52:06 -03:00
vini
6415112f9a feat: latitude/longitude configuráveis para o céu realista
Padrão Toledo-PR (-24.72, -53.74); campos aceitam vírgula ou ponto.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015HtPHsTnDcLVSCiF5FGHZj
2026-07-19 10:52:05 -03:00
vini
05e465e33f feat: céu realista em tempo real — estrelas do BSC + Via Láctea
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
2026-07-19 10:52:05 -03:00
vini
998de4a945 feat: catálogo de estrelas embutido (Yale BSC, V<=5.5, 2887 estrelas)
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
2026-07-19 10:52:05 -03:00
vini
0caf1fbbf8 test: script para ciclo manual de modos com reload do wallpaper
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
2026-07-19 10:27:04 -03:00
vini
de994bced9 refactor: idle-friendly render loops, drop dead strobe code
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
2026-07-19 10:23:16 -03:00
vini
f20d8adf4f fix: first /tmp file poll is baseline only, no longer overrides config
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
2026-07-19 10:18:53 -03:00
vini
39bc5d0794 feat: chuva mode — moon, rain, lightning; clean transitions with balada
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
2026-07-19 10:18:34 -03:00
vini
36220dc34f fix: smooth balada nebula color transition via ::after opacity 2026-06-14 13:27:27 -03:00
vini
d422cea905 feat: balada mode — mirror ball, disco floor, spotlights, sun transition
- Mirror ball globe: canvas-based tile rendering with winner-takes-all
  specular lighting + Lambert diffuse edges; 8 orthogonal lights orbit
  slowly (~4 min/rev) ensuring no dark periods
- Disco floor tiles: per-frame alpha/color lerp (dt-based) decoupled from
  the 400ms randomization gate — eliminates choppy low-FPS appearance;
  smooth ~1.2s fade-in, ~2.4s color blending per tile
- Sun: organic JS-generated stripes (sqrt-spaced, perspective-correct),
  opacity crossfade overlay for retrowave↔balada gradient transition,
  slow position animation (rises to sky in balada mode)
- Spotlights, disco particles, ray rotation, beat pulse
- toggle-balada.sh / toggle-skeleton.sh: external IPC scripts via /tmp files

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 19:36:24 -03:00
ltadeu6
71845ff2a7
refactor: replace keybind toggle with config checkbox for skeleton visibility
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>
2026-06-10 15:00:44 -03:00
ltadeu6
02edf4d9af
fix: eliminate verse-transition flicker by deferring opacity until position is snapped
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>
2026-06-08 18:09:15 -03:00
ltadeu6
4c4b1bbb96
feat: verse-based lyric display with smooth active-line transitions
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>
2026-06-08 17:33:12 -03:00
ltadeu6
2b05d5844d
fix: explicit width on lyric-display + simplify scroll logic
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>
2026-06-08 17:16:30 -03:00
ltadeu6
b75cec0107
fix: correct stale currentLyricKey ref → currentActive in updateMusic
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 17:07:41 -03:00
ltadeu6
fdc68594d5
feat: smooth karaoke scroll — no blink on lyric advance
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>
2026-06-08 17:05:40 -03:00
ltadeu6
10b3bbbf2e
feat: multi-player support + 5-line karaoke lyrics display
- 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>
2026-06-08 16:53:17 -03:00
ltadeu6
1a0f8c7ea5
tweak: lyrics min font 12px→16px
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 14:39:59 -03:00
ltadeu6
1c8909f128
tweak: lyric text-shadow uses theme color for glow
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 14:31:07 -03:00
ltadeu6
2552c9ccb3
tweak: slow music icon pulse 0.5s→1.8s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 14:16:09 -03:00
ltadeu6
b5eacd35d2
tweak: lyrics top-left, smaller font clamp(12px,1.3vw,18px)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 14:04:15 -03:00
ltadeu6
e59e797f9d
tweak: move lyrics back to bottom-left (left:3%, bottom:16%)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 14:03:00 -03:00
ltadeu6
54f452a82a
tweak: reduce lyrics font to clamp(18px,2.2vw,32px)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 14:02:21 -03:00
ltadeu6
9ce98a08db
tweak: increase lyrics font to clamp(24px,3.2vw,48px)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 13:57:56 -03:00
ltadeu6
ca21a96292
tweak: lyrics position 8%/8%, larger font clamp(16px,1.9vw,26px)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 13:57:23 -03:00
ltadeu6
bc1cbcdc9e
tweak: move lyrics display to top-left corner
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 13:55:38 -03:00
ltadeu6
7d87ec4c47
fix: retry canvas init until WebEngine reports valid dimensions
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>
2026-06-07 13:52:20 -03:00
ltadeu6
347b3729c8
feat: synced lyrics display from LRCLib
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>
2026-06-07 13:50:04 -03:00
ltadeu6
99851a2ee7
tweak: darken sun 35%, increase skeleton height 40vh→44vh
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 13:38:03 -03:00
ltadeu6
43e314176b
tweak: sun stripes use semi-transparent purple instead of solid black
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>
2026-06-07 13:35:33 -03:00
ltadeu6
d822b1c669
feat: add classic synthwave sun at horizon
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>
2026-06-07 13:32:24 -03:00
ltadeu6
b3acbeb78d
perf: reduce fog from 5 to 3 wisps, blur 60px→45px
Fewer compositing layers speeds up WebEngine initialization after deploy.
will-change hint lets the browser pre-promote layers before animation starts.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 13:29:32 -03:00
ltadeu6
bf2a10a111
tweak: increase fog opacity for more visible synthwave haze
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 13:28:28 -03:00
ltadeu6
775bad978d
feat: synthwave fog rising above horizon
Five blurred elliptic wisps anchored at the horizon line, each drifting
upward at different speeds (8-15s) and delays for an organic breathing
effect. Color synced with the dominant album art color via applyTheme.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 13:26:55 -03:00
ltadeu6
510e677c30
revert: use single dominant color on VU bars, drop secondary gradient
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 13:22:12 -03:00
ltadeu6
7ed455f72b
feat: secondary color gradient on VU meter bars
Extract a hue-distinct secondary color from album art and apply a
primary→secondary gradient across the VU meter bars (bass end = primary,
treble end = secondary). Falls back to complementary hue if no distinct
color is found.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 13:10:24 -03:00
ltadeu6
1957fda57e
perf: reduce GC pressure in render loops
- Pre-compute star RGB components to avoid 3 string.replace() calls per
  star per frame (~40K string allocs/sec eliminated)
- Cache floor gradient object; rebuild only on canvas resize
- Batch CAVA bar DOM updates through requestAnimationFrame so SSE events
  never trigger mid-frame style mutations

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 13:07:33 -03:00
ltadeu6
e7a95c8c86
feat: skeleton3.apng at 25fps (midpoint between 33 and 16.7) 2026-06-07 12:59:05 -03:00
ltadeu6
26d7906eb2
feat: slow skeleton3.apng to half speed (50/3 fps) 2026-06-07 12:57:43 -03:00
ltadeu6
6ead16ff08
Revert "feat: floor speed responds to BPM; skeleton glow reacts to bass"
This reverts commit 7cd9f6bf2b.
2026-06-07 12:56:56 -03:00
ltadeu6
7cd9f6bf2b
feat: floor speed responds to BPM; skeleton glow reacts to bass
- Beat detection restored with BPM tracking (avg of last 8 beats)
- Floor scroll speed = 0.025 * musicSpeed (BPM/120), slower by default
- Skeleton drop-shadow intensity driven by bass energy

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 12:55:27 -03:00
ltadeu6
8a73e76e61
feat: skeleton bottom 28% (midpoint) 2026-06-07 12:49:54 -03:00
ltadeu6
e98a9d5786
feat: move skeleton lower (bottom 32% -> 24%) 2026-06-07 12:49:27 -03:00
ltadeu6
390edd2624
revert: remove floor reflection 2026-06-07 12:48:59 -03:00