Commit graph

70 commits

Author SHA1 Message Date
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
ltadeu6
bc00a7173c
fix: align reflection to visual feet using measured 11.1% transparent offset 2026-06-07 12:47:10 -03:00
ltadeu6
89f9c5c69a
fix: move reflection inside robot-wrap so bottom:0 aligns with feet 2026-06-07 12:40:19 -03:00
ltadeu6
8de8923785
feat: add perspective floor reflection of skeleton 2026-06-07 12:36:54 -03:00
ltadeu6
e4ecfb51c2
feat: remove robot floor shadow 2026-06-07 12:31:57 -03:00
ltadeu6
9f9fa2a49e
feat: artist name in cyan, song title in white 2026-06-07 12:24:50 -03:00
ltadeu6
9315655631
fix: music text color back to white 2026-06-07 12:23:40 -03:00
ltadeu6
47bcfd32f3
feat: remove NOW PLAYING label, style artist name in cyan 2026-06-07 12:22:58 -03:00
ltadeu6
93d0cb87e7
feat: fix skeleton to skeleton3 only, remove switcher 2026-06-07 12:20:44 -03:00
ltadeu6
6e178837d2
feat: increase album art to 330px (+50%) 2026-06-07 12:18:36 -03:00
ltadeu6
80c702fc2d
docs: add AGENTS.md with deploy and remote access guide 2026-06-07 11:23:23 -03:00
ltadeu6
3655fc2eec
chore: remove debug console logging 2026-06-07 10:45:58 -03:00
ltadeu6
f4d8b314bf
debug: re-enable console log 2026-06-07 10:44:38 -03:00
ltadeu6
2acd2389cb
feat: double album art size; remove horizon beat pulse
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:43:05 -03:00
ltadeu6
daaf947be3
refactor: load album art directly from http://127.0.0.1:8765/art
CORS is now fixed so img.src with http URL works. Remove temp file approach.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:41:38 -03:00
ltadeu6
235cbc4ab8
fix: add CORS header to music-light; remove debug logging
fetch() from file:// was blocked by missing Access-Control-Allow-Origin
on the music-light server. Both color and album art now work.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:40:37 -03:00
ltadeu6
8e8bccebe8
debug: log JS console to /tmp/skeledance_console.log via QML handler
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:39:13 -03:00
ltadeu6
458c90fb30
fix: load album art from file:///tmp/skeledance_art.jpg
Avoids WebEngine mixed-content block on http:// img src from file://.
music-light now saves the PIL image to disk on each track change.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:37:59 -03:00
ltadeu6
0a000a2cfb
fix: load album art via fetch+createObjectURL to bypass mixed content block
img src http:// from file:// page is blocked; fetch() to localhost
works, so fetch the blob and use a blob: URL instead.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:36:11 -03:00
ltadeu6
93c019c02e
fix: use img tag for album art instead of CSS background-image
CSS background-image url() from http:// is blocked in WebEngine local
context even when fetch() works; <img src> does not have this restriction.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:33:26 -03:00
ltadeu6
b4bf048487
fix: load album art via local /art proxy instead of external URL
WebEngine blocks fetching external Spotify URLs from local content.
Now uses http://127.0.0.1:8765/art which proxies the image locally.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:31:26 -03:00
ltadeu6
b6e0ef1c3c
fix: load album art via fetch+blob to bypass WebEngine URL restrictions
Direct background-image URLs to external hosts are blocked in the
local WebEngineView context; fetch the image as a blob and convert
to data URL instead.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:30:14 -03:00
ltadeu6
466bb1245a
feat: show album art in upper right corner
Fetches art_url from music-light /current and displays it as a
background-image div with themed box-shadow. Fades in/out with music.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:29:08 -03:00
ltadeu6
fd4ba05d1e
feat: fade meteors at horizon using mask-image on #meteorLayer
Meteors now dissolve as they approach the horizon line (fade from
50% to 60% viewport height) via CSS mask-image on their container.
Also fixed spawnMeteor appending to #meteorLayer instead of .scene.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:21:56 -03:00
ltadeu6
238c56eba4
Fix meteor animation: animate transform instead of static translate
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:17:35 -03:00
ltadeu6
1e9b63e577
Remove character bounce from beat, keep only horizon pulse
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:14:18 -03:00