diff --git a/CLAUDE.md b/CLAUDE.md index 4f3bd45..48d7e47 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -33,6 +33,9 @@ plugin/ contents/ui/ main.qml # Plasma WallpaperItem — hosts everything dancer.html # Self-contained animation (HTML + CSS + JS) + starcatalog.js # Generated star data (Yale BSC) — see tools/build_catalog.py +tools/ + build_catalog.py # Regenerates starcatalog.js from the Yale Bright Star Catalog ``` ### main.qml — the Plasma host @@ -47,7 +50,7 @@ Pure HTML/CSS/JS, no external dependencies. All visuals are self-contained: | Layer | Technique | |---|---| -| Starfield | `` + `requestAnimationFrame` | +| Realistic sky (stars + Milky Way) | ``; real-time alt-az projection of `starcatalog.js` (2,887 Yale BSC stars) + seeded procedural Milky Way for the configured lat/long (default Toledo-PR). Static layer pre-rendered offscreen, bright stars twinkle per frame; reprojects every 30 s. Debug: `window.__skyTimeOffset` (ms) fast-forwards the sky | | Nebula blobs, grid floor, horizon | CSS animations | | DANCEBOT-9000 robot | Pure CSS (divs + `@keyframes`) | | Chest EQ bars & VU meter | JS-driven `requestAnimationFrame` | diff --git a/plugin/contents/config/main.xml b/plugin/contents/config/main.xml index bc52416..58bb539 100644 --- a/plugin/contents/config/main.xml +++ b/plugin/contents/config/main.xml @@ -14,5 +14,11 @@ false + + -24.72 + + + -53.74 + diff --git a/plugin/contents/ui/config.qml b/plugin/contents/ui/config.qml index 54e83e0..cc054f0 100644 --- a/plugin/contents/ui/config.qml +++ b/plugin/contents/ui/config.qml @@ -9,6 +9,8 @@ ColumnLayout { property alias cfg_ShowSkeleton: skeletonCheck.checked property alias cfg_BaladaMode: baladaCheck.checked property alias cfg_ChuvaMode: chuvaCheck.checked + property double cfg_Latitude + property double cfg_Longitude spacing: Kirigami.Units.largeSpacing @@ -34,5 +36,28 @@ ColumnLayout { text: i18n("Lua + chuva + relâmpagos") onCheckedChanged: if (checked) baladaCheck.checked = false } + + Kirigami.Separator { Kirigami.FormData.isSection: true } + + // Observador do céu realista (aceita vírgula ou ponto decimal) + TextField { + id: latField + Kirigami.FormData.label: i18n("Latitude:") + Component.onCompleted: text = root.cfg_Latitude + onTextChanged: { + const v = parseFloat(text.replace(",", ".")) + if (!isNaN(v) && v >= -90 && v <= 90) root.cfg_Latitude = v + } + } + + TextField { + id: lonField + Kirigami.FormData.label: i18n("Longitude:") + Component.onCompleted: text = root.cfg_Longitude + onTextChanged: { + const v = parseFloat(text.replace(",", ".")) + if (!isNaN(v) && v >= -180 && v <= 180) root.cfg_Longitude = v + } + } } } diff --git a/plugin/contents/ui/dancer.html b/plugin/contents/ui/dancer.html index 16caced..ed8919e 100644 --- a/plugin/contents/ui/dancer.html +++ b/plugin/contents/ui/dancer.html @@ -164,7 +164,7 @@ body.balada .nebula::after { opacity: 1; } .album-art { position: absolute; top: 4%; - right: 2%; + left: 2%; width: 330px; height: 330px; border-radius: 6px; @@ -254,7 +254,7 @@ body.balada .music-ticker { ============================================================ */ .lyric-display { position: absolute; - left: 2%; + right: 2%; top: 4%; width: 38%; height: 150px; @@ -273,6 +273,7 @@ body.balada .music-ticker { .lyric-ctx { display: block; width: 100%; + text-align: right; /* letra ancorada à direita da tela */ font-family: 'Courier New', monospace; letter-spacing: 0.02em; white-space: normal; @@ -1198,6 +1199,7 @@ body.chuva #sunChuvaFace { opacity: 1; transition: opacity 5s ease; } +