Commit graph

98 commits

Author SHA1 Message Date
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
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
ltadeu6
60a8190bd7
Remove spectrum visualizer
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:12:59 -03:00
ltadeu6
134d09c93f
Fix redeclared const scene breaking entire script
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:11:11 -03:00
ltadeu6
ad81c6fb69
Add horizon beat pulse, spectrum visualizer, meteor shower, theme color
- Horizon flashes brighter on each beat (synced with character bounce)
- Spectrum visualizer behind the character shows mid/high frequencies
- Meteors streak across the sky randomly every 4-10s
- fetchTheme() pulls dominant color from music-light and tints horizon

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:08:15 -03:00
ltadeu6
e858583964
Remove skeleton.apng from repo
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:00:42 -03:00
ltadeu6
31dc0dae15
Remove skeleton.apng from rotation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 09:57:26 -03:00
ltadeu6
fa5c99c30d
Fix SSE server blocking: use ThreadingHTTPServer
HTTPServer is single-threaded, so the wallpaper's persistent SSE
connection blocked all subsequent requests. ThreadingHTTPServer
handles each connection in its own thread.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 09:55:59 -03:00
ltadeu6
85726b8c41
Add beat-synced bounce effect to character
Detects bass beats from CAVA data using a fast/slow EMA ratio.
On each beat, applies a CSS scale+translateY animation to .beat-wrap
without interfering with the APNG playback or positioning.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 09:49:17 -03:00
ltadeu6
d0f72716c2
Fix duplicate CAVA instances via lockfile
pkill pattern was wrong (path has dancingcharacter not skeledance).
Now uses a lockfile to prevent QML from spawning multiple instances.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 09:43:40 -03:00
ltadeu6
39e7c07309
Replace QML CAVA polling with SSE server for smooth bars
DataSource fork+exec was limited to ~1fps. Now cava pipes into a Python
SSE server (port 5555) and the HTML connects directly via EventSource,
getting updates at up to 60fps without QML overhead.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 09:37:58 -03:00
ltadeu6
5876701a64
Add real-time CAVA audio visualizer for VU bars
CAVA runs in background via cava-start.sh, writing bar values to
/tmp/skeledance_bars. A new QML DataSource polls that file at 80ms
and calls updateBars() in JS. Falls back to rest state when not playing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 09:35:35 -03:00
ltadeu6
b2df95ed10
Hide music ticker when nothing is playing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 09:30:38 -03:00
ltadeu6
2ee2470089
Tie animations to playback state
- Paused/stopped playerctl treated as no music (QML change)
- Character and notes only appear when Playing
- VU meter always visible but in rest state (3px, faint) when idle

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 09:28:36 -03:00
ltadeu6
b6eb089c2c
Show character and VU bars only when music is playing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 09:23:17 -03:00
ltadeu6
cfbc8ef5e1
Switch skeleton only on track change, not on timer
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 09:17:35 -03:00
ltadeu6
d13d6e5e53
Move music ticker to top of screen
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 09:14:49 -03:00
ltadeu6
6b8eb21086
Fix JS error and add skeleton preloading
Remove dead EQ bar code referencing elements removed with the CSS robot.
Preload all APNG files on startup so skeleton switches are instant.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 09:13:33 -03:00
ltadeu6
9fbfb0592d
Replace CSS robot with animated character switcher
Swaps DANCEBOT-9000 CSS robot for a pool of APNG characters that cycle
randomly every 8s and on track change: 4 skeleton GIFs, a dancing baby
(YouTube clip), and Pepe. Background removal done with ffmpeg colorkey.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 08:59:29 -03:00
ltadeu6
5378772d8a
Replace CSS floor with canvas perspective grid
Draws vertical lines radiating from a true central vanishing point
and horizontal lines with perspective-correct spacing — giving the
classic retrowave convergence effect instead of parallel lines viewed
from above. Horizon glow line restored above the canvas layer.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 08:10:22 -03:00
ltadeu6
22d9f9672b
Improve floor grid and add dev tooling
- Scale floor perspective with viewport height so grid reaches horizon
  on full-screen KDE (was broken with fixed 700px perspective value)
- Increase grid line thickness 1px → 2px to reduce sub-pixel flickering
- Remove DANCEBOT-9000 title text
- Add viewport meta tag for correct layout in WebEngineView
- Add dev-server.sh (port 3000) with in-browser music ticker shim

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 07:42:19 -03:00
ltadeu6
c5668b8d62
Initial commit — DANCEBOT-9000 KDE Plasma wallpaper plugin
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 07:11:26 -03:00