brand: the asterisk — white, square terminals. favicon.svg, icons/, manifest, service worker (library plays offline), Media Session, g*ndora wordmark
shots / shots (push) Canceled after 42s
shots / shots (push) Canceled after 42s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K6897PWcUEwHiqZMcVnNF6
This commit is contained in:
1 parent
d3ff1799b3
commit
bd5eab0c7c
5 files changed
+50
-1
No files matched your search
+8
-1
@@ -1 +1,8 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><rect width="64" height="64" rx="14" fill="#0b0b0e"/><g fill="none" stroke="#e9d8a6" stroke-width="2"><circle cx="32" cy="32" r="24" opacity=".3"/><circle cx="32" cy="32" r="16" opacity=".6"/></g><circle cx="32" cy="32" r="6" fill="#e9d8a6"/></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
|
||||
<style>line{stroke:#ededf0}@media (prefers-color-scheme:light){line{stroke:#17171a}}</style>
|
||||
<g transform="translate(32 32)" stroke-width="9" stroke-linecap="butt">
|
||||
<line x1="0" y1="-27" x2="0" y2="27"/>
|
||||
<line x1="-23.4" y1="-13.5" x2="23.4" y2="13.5"/>
|
||||
<line x1="-23.4" y1="13.5" x2="23.4" y2="-13.5"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 309 B After Width: | Height: | Size: 395 B |
@@ -0,0 +1,5 @@
|
||||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>icon</title>
|
||||
<style>html,body{margin:0;height:100%;background:#0b0b0e;overflow:hidden}img{display:block;width:100vmin;height:100vmin}</style>
|
||||
<img src="icon.svg" alt="">
|
||||
@@ -0,0 +1,8 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<rect width="512" height="512" fill="#0b0b0e"/>
|
||||
<g transform="translate(256 256)" stroke="#ededf0" stroke-width="58" stroke-linecap="butt">
|
||||
<line x1="0" y1="-150" x2="0" y2="150"/>
|
||||
<line x1="-130" y1="-75" x2="130" y2="75"/>
|
||||
<line x1="-130" y1="75" x2="130" y2="-75"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 362 B |
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"name": "gandora",
|
||||
"short_name": "gandora",
|
||||
"description": "Type a seed. Get a station. Every song is made for you as it plays.",
|
||||
"start_url": "/",
|
||||
"scope": "/",
|
||||
"display": "standalone",
|
||||
"orientation": "portrait",
|
||||
"background_color": "#0b0b0e",
|
||||
"theme_color": "#0b0b0e",
|
||||
"icons": [
|
||||
{ "src": "icons/icon.svg", "sizes": "any", "type": "image/svg+xml", "purpose": "any maskable" },
|
||||
{ "src": "icons/icon-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any maskable" },
|
||||
{ "src": "icons/icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any maskable" }
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
// gandora's service worker: the shell is cached so the app opens and the library plays with no signal.
|
||||
// Tracks live in IndexedDB already; the DJ and new renders need the network and the page says so.
|
||||
const SHELL = "gandora-shell-v1";
|
||||
const FILES = ["/", "/index.html", "/brain.js", "/favicon.svg", "/manifest.json", "/icons/icon.svg"];
|
||||
self.addEventListener("install", (e) => { e.waitUntil(caches.open(SHELL).then((c) => c.addAll(FILES)).then(() => self.skipWaiting())); });
|
||||
self.addEventListener("activate", (e) => { e.waitUntil(caches.keys().then((ks) => Promise.all(ks.filter((k) => k !== SHELL).map((k) => caches.delete(k)))).then(() => self.clients.claim())); });
|
||||
// same-origin GETs: network first (so a deploy shows up on the next open), cache as the fallback; everything else untouched
|
||||
self.addEventListener("fetch", (e) => {
|
||||
const u = new URL(e.request.url);
|
||||
if (e.request.method !== "GET" || u.origin !== location.origin) return;
|
||||
e.respondWith(fetch(e.request).then((r) => { if (r.ok) caches.open(SHELL).then((c) => c.put(e.request, r.clone())); return r; })
|
||||
.catch(() => caches.match(e.request, { ignoreSearch: true }).then((r) => r || caches.match("/"))));
|
||||
});
|
||||
Reference in new issue
Block a user