New app icon and login logo: the HamLab penguin
Every icon is rendered from web/scripts/logo-source.png by scripts/icons.mjs: trimmed to the artwork's own edge, transparent corners for the browser icons, a dark ground from the artwork's palette for iOS (which paints transparency black) and for Android's maskable icon, where the whole artwork sits inside the 80% safe circle. The login screen no longer crops the logo to a circle or repeats the wordmark. Service worker cache bumped so installed apps fetch the new files. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 219 KiB After Width: | Height: | Size: 196 KiB |
|
Before Width: | Height: | Size: 296 KiB After Width: | Height: | Size: 346 KiB |
|
Before Width: | Height: | Size: 264 KiB After Width: | Height: | Size: 310 KiB |
@@ -1,5 +1,5 @@
|
||||
// Ham Lab service worker: cache hashed assets, never the API, network-first for the shell.
|
||||
const CACHE = 'hamlab-v2';
|
||||
const CACHE = 'hamlab-v3'; // bumped when files under /icons/ change: they are served cache-first
|
||||
self.addEventListener('install', () => self.skipWaiting());
|
||||
self.addEventListener('activate', (e) => {
|
||||
e.waitUntil(caches.keys().then((ks) => Promise.all(ks.filter((k) => k !== CACHE).map((k) => caches.delete(k)))).then(() => self.clients.claim()));
|
||||
|
||||