Compare commits
3 Commits
v0.1.0-bet
...
branding-t
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
373fe8b835 | ||
|
|
2a839de999 | ||
|
|
bbf4d88f61 |
BIN
assets/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 1.9 MiB After Width: | Height: | Size: 1.9 MiB |
BIN
assets/favicon-96x96.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
assets/favicon.ico
Normal file
|
After Width: | Height: | Size: 15 KiB |
3
assets/favicon.svg
Normal file
|
After Width: | Height: | Size: 206 KiB |
21
assets/site.webmanifest
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"name": "ECHO REALITY",
|
||||||
|
"short_name": "ECHO REALITY",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "/assets/web-app-manifest-192x192.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image/png",
|
||||||
|
"purpose": "maskable"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "/assets/web-app-manifest-512x512.png",
|
||||||
|
"sizes": "512x512",
|
||||||
|
"type": "image/png",
|
||||||
|
"purpose": "maskable"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"theme_color": "#ffffff",
|
||||||
|
"background_color": "#ffffff",
|
||||||
|
"display": "standalone"
|
||||||
|
}
|
||||||
BIN
assets/web-app-manifest-192x192.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
assets/web-app-manifest-512x512.png
Normal file
|
After Width: | Height: | Size: 215 KiB |
12
index.html
@@ -3,8 +3,14 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>16-Bit Cassette Player</title>
|
<title>ECHO REALITY</title>
|
||||||
<link rel="stylesheet" href="styles.css">
|
<link rel="icon" type="image/png" href="/assets/favicon-96x96.png" sizes="96x96" />
|
||||||
|
<link rel="icon" type="image/svg+xml" href="/assets/favicon.svg" />
|
||||||
|
<link rel="shortcut icon" href="/assets/favicon.ico" />
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png" />
|
||||||
|
<meta name="apple-mobile-web-app-title" content="ECHO REALITY" />
|
||||||
|
<link rel="manifest" href="/assets/site.webmanifest" />
|
||||||
|
<link rel="stylesheet" href="assets/styles.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="player">
|
<div class="player">
|
||||||
@@ -156,6 +162,6 @@
|
|||||||
|
|
||||||
<audio id="audio" preload="metadata"></audio>
|
<audio id="audio" preload="metadata"></audio>
|
||||||
|
|
||||||
<script src="app.js"></script>
|
<script src="src/app.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const APP_VERSION = '0.1.0-beta';
|
const APP_VERSION = '0.1.2-beta';
|
||||||
const playlist = [
|
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/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' },
|
{ url: 'https://feed.falsefinish.club/Echo%20Reality/PINK%20FLIGHT/MP3%20BOUNCE/02.%20NOW.mp3', name: 'TRACK 2 - NOW' },
|
||||||
@@ -1146,6 +1146,13 @@ audio.addEventListener('timeupdate', () => {
|
|||||||
updateTapeSizes();
|
updateTapeSizes();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Update time display when metadata loads (fixes cold start 0:00 / 0:00 issue)
|
||||||
|
audio.addEventListener('loadedmetadata', () => {
|
||||||
|
const current = formatTime(audio.currentTime);
|
||||||
|
const duration = formatTime(audio.duration);
|
||||||
|
timeDisplay.textContent = `${current} / ${duration}`;
|
||||||
|
});
|
||||||
|
|
||||||
// Format time helper
|
// Format time helper
|
||||||
function formatTime(seconds) {
|
function formatTime(seconds) {
|
||||||
if (isNaN(seconds)) return '00:00';
|
if (isNaN(seconds)) return '00:00';
|
||||||