From ffc8f2a558c1f84cda3c8ce25d931c84be12e651 Mon Sep 17 00:00:00 2001 From: cottongin Date: Sat, 17 Jan 2026 19:09:53 -0500 Subject: [PATCH] add version info --- .gitignore | 3 +- app.js | 44 +++++++++++++++ index.html | 15 +++++ styles.css | 161 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 222 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 957b8aa..8787b45 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .DS_Store .old/ -.cursor/ \ No newline at end of file +.cursor/ +tag-release.sh \ No newline at end of file diff --git a/app.js b/app.js index 0f0a5bc..4653ea7 100644 --- a/app.js +++ b/app.js @@ -1,3 +1,4 @@ +const APP_VERSION = '0.1.0-beta'; const playlist = [ { url: 'https://feed.falsefinish.club/Echo%20Reality/PINK%20FLIGHT/MP3%20BOUNCE/01.%20PINK%20FLIGHT%20ATTENDANT.mp3', name: 'TRACK 1 - PINK FLIGHT ATTENDANT' }, { url: 'https://feed.falsefinish.club/Echo%20Reality/PINK%20FLIGHT/MP3%20BOUNCE/02.%20NOW.mp3', name: 'TRACK 2 - NOW' }, @@ -1182,6 +1183,8 @@ document.addEventListener('keydown', (e) => { closeVideo.click(); } else if (albyPanel.classList.contains('active')) { toggleAlbyPanel(); + } else if (versionModal && versionModal.classList.contains('active')) { + toggleVersionModal(); } } }); @@ -1351,3 +1354,44 @@ updateAlbyBoostButton(); // ======================================== // ALBY LIGHTNING PANEL FUNCTIONALITY - END // ======================================== + +// ======================================== +// VERSION MODAL FUNCTIONALITY - START +// Simple modal to display app version +// ======================================== + +const versionBtn = document.getElementById('versionBtn'); +const versionOverlay = document.getElementById('versionOverlay'); +const versionModal = document.getElementById('versionModal'); +const versionCloseBtn = document.getElementById('versionCloseBtn'); +const versionNumber = document.getElementById('versionNumber'); + +// Set version from APP_VERSION constant (defined at top of file) +versionNumber.textContent = APP_VERSION; + +/** + * Toggle the version modal open/closed + */ +function toggleVersionModal() { + const isActive = versionModal.classList.contains('active'); + if (isActive) { + versionModal.classList.remove('active'); + versionOverlay.classList.remove('active'); + } else { + versionModal.classList.add('active'); + versionOverlay.classList.add('active'); + } +} + +// Version button click handler +versionBtn.addEventListener('click', toggleVersionModal); + +// Close button click handler +versionCloseBtn.addEventListener('click', toggleVersionModal); + +// Overlay click handler - close modal when clicking backdrop +versionOverlay.addEventListener('click', toggleVersionModal); + +// ======================================== +// VERSION MODAL FUNCTIONALITY - END +// ======================================== diff --git a/index.html b/index.html index 738a04a..fea7c9e 100644 --- a/index.html +++ b/index.html @@ -53,6 +53,21 @@ VOL + + + + + + +
+
+
+ VERSION + +
+
+
...
+
diff --git a/styles.css b/styles.css index 9691986..72ad5b6 100644 --- a/styles.css +++ b/styles.css @@ -1264,3 +1264,164 @@ simple-boost { /* ======================================== ALBY LIGHTNING PANEL STYLES - END ======================================== */ + +/* ======================================== + VERSION BUTTON & MODAL STYLES - START + Subtle version indicator and info modal + ======================================== */ + +/* Version button - very subtle, bottom right of player */ +.version-btn { + position: absolute; + bottom: 8px; + right: 10px; + width: 16px; + height: 16px; + background: transparent; + border: none; + color: #333; + font-family: 'Courier New', monospace; + font-size: 10px; + cursor: pointer; + opacity: 0.2; + transition: opacity 0.2s; + padding: 0; + z-index: 5; +} + +.version-btn:hover { + opacity: 0.5; +} + +/* Version modal backdrop */ +.version-overlay { + display: none; + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + background: rgba(0, 0, 0, 0.7); + z-index: 1000; +} + +.version-overlay.active { + display: block; +} + +/* Version modal container */ +.version-modal { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%) scale(0.9); + opacity: 0; + width: 280px; + background: linear-gradient(145deg, #2a2a2a 0%, #1a1a1a 50%, #0f0f0f 100%); + border: 6px solid #0a0a0a; + border-radius: 8px; + box-shadow: + inset 0 0 0 2px #3a3a3a, + inset 0 0 50px rgba(0,0,0,0.9), + 0 20px 60px rgba(0,0,0,0.8); + z-index: 1001; + transition: transform 0.2s ease-out, opacity 0.2s ease-out; + font-family: 'Courier New', monospace; + pointer-events: none; +} + +.version-modal.active { + transform: translate(-50%, -50%) scale(1); + opacity: 1; + pointer-events: auto; +} + +/* Version modal header */ +.version-modal-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 15px; + background: linear-gradient(180deg, #1a1a1a 0%, #0f0f0f 100%); + border-bottom: 4px solid #000; + border-radius: 4px 4px 0 0; +} + +.version-modal-title { + color: #00ff00; + font-size: 14px; + font-weight: bold; + text-shadow: + 0 0 10px rgba(0, 255, 0, 0.5), + 0 0 20px rgba(0, 255, 0, 0.3); + letter-spacing: 2px; +} + +/* Close button styled like cassette buttons */ +.version-close-btn { + width: 28px; + height: 28px; + background: linear-gradient(180deg, #3a3a3a 0%, #1a1a1a 100%); + border: 3px solid #000; + color: #666; + font-size: 16px; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + box-shadow: + inset 0 -2px 0 rgba(0,0,0,0.5), + 0 2px 4px rgba(0,0,0,0.6); + transition: all 0.1s; +} + +.version-close-btn:hover { + color: #aa0000; +} + +.version-close-btn:active { + transform: translateY(2px); + box-shadow: + inset 0 -1px 0 rgba(0,0,0,0.5), + 0 1px 2px rgba(0,0,0,0.6); +} + +/* Version modal body */ +.version-modal-body { + padding: 25px; + text-align: center; +} + +/* Version number display - CRT style */ +.version-number { + background: linear-gradient(180deg, #0a1a0a 0%, #050f05 100%); + border: 3px solid #000; + padding: 15px 20px; + color: #00ff00; + font-size: 20px; + font-weight: bold; + text-shadow: + 0 0 10px #00ff00, + 0 0 20px #00ff00; + letter-spacing: 2px; + box-shadow: + inset 0 0 20px rgba(0,0,0,0.9), + inset 0 0 5px rgba(0,255,0,0.1); + position: relative; +} + +/* Scanlines effect on version display */ +.version-number::after { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: repeating-linear-gradient(0deg, transparent, transparent 1px, rgba(0,0,0,0.4) 1px, rgba(0,0,0,0.4) 2px); + pointer-events: none; +} + +/* ======================================== + VERSION BUTTON & MODAL STYLES - END + ======================================== */