From 6abcfa655b744c7e6e5e8ac372608b5fa2dbf397 Mon Sep 17 00:00:00 2001 From: Sandro Date: Sat, 31 Oct 2026 09:53:52 +0100 Subject: [PATCH] fix(push): monochrome brain badge for the Android status bar Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 8 +++++++- README.md | 2 +- frontend/package-lock.json | 4 ++-- frontend/package.json | 2 +- frontend/public/badge-96x96.png | Bin 0 -> 2753 bytes frontend/public/badge.svg | 14 ++++++++++++++ frontend/public/sw.js | 6 ++++-- 7 files changed, 29 insertions(+), 7 deletions(-) create mode 100644 frontend/public/badge-96x96.png create mode 100644 frontend/public/badge.svg diff --git a/CHANGELOG.md b/CHANGELOG.md index f468745..44f7c77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ Das Format folgt [Keep a Changelog](https://keepachangelog.com/de/1.1.0/), die V ## [Unreleased] +## [0.16.2] - 2026-10-31 + +### Fixed +- Push-Benachrichtigungen am Handy: In der Statusleiste erschien statt des Gehirn-Symbols nur ein einfarbiges Quadrat. Android nutzt dort nur die Transparenz des Bildes; MindSift liefert dafür jetzt ein eigenes Symbol (weißes Gehirn auf transparentem Grund). Die App-Caches werden einmal erneuert. + ## [0.16.1] - 2026-10-31 ### Changed @@ -382,7 +387,8 @@ Das Format folgt [Keep a Changelog](https://keepachangelog.com/de/1.1.0/), die V - Geteilte Listen (Einkaufs-, Pack- und Checklisten) mit `#Kategorie`-Gruppierung, Mengenangaben und Echtzeit-Abhaken. - Benutzer-, Gruppen- und Admin-Verwaltung (Ersteinrichtungs-Assistent, Einladungscodes, Profilbilder, persönliche API-Keys & Webhook-Ingest `/api/v1/webhooks/ingest`, JSON-Datenexport) sowie CSS-Theme-Engine mit 4 Themes (`Dark`, `Light`, `High Contrast`, `Soft`) und PWA-Unterstützung. -[Unreleased]: https://git.dsit.me/sandrodach/MindSift/compare/v0.16.1...dev +[Unreleased]: https://git.dsit.me/sandrodach/MindSift/compare/v0.16.2...dev +[0.16.2]: https://git.dsit.me/sandrodach/MindSift/compare/v0.16.1...v0.16.2 [0.16.1]: https://git.dsit.me/sandrodach/MindSift/compare/v0.16.0...v0.16.1 [0.16.0]: https://git.dsit.me/sandrodach/MindSift/compare/v0.15.1...v0.16.0 [0.15.1]: https://git.dsit.me/sandrodach/MindSift/compare/v0.15.0...v0.15.1 diff --git a/README.md b/README.md index feae067..7f89e5c 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![Self-Hosted](https://img.shields.io/badge/100%25-Self--Hosted-2563eb?style=flat-square)](#) [![Docker](https://img.shields.io/badge/Deployment-Single%20Container-2496ed?style=flat-square&logo=docker&logoColor=white)](#-schnellstart) [![SQLite](https://img.shields.io/badge/Daten-SQLite-003b57?style=flat-square&logo=sqlite&logoColor=white)](#-deine-daten-gehören-dir) -[![Version](https://img.shields.io/badge/Version-v0.16.1-16a34a?style=flat-square)](CHANGELOG.md) +[![Version](https://img.shields.io/badge/Version-v0.16.2-16a34a?style=flat-square)](CHANGELOG.md) **MindSift** ist eine selbst gehostete Schaltstelle für spontane Gedanken, Aufgaben mit Kanban-Board, hierarchische Outliner-Notizen, die mehrere Personen gleichzeitig bearbeiten können, und gemeinsame Listen. Alles läuft als ein einzelner Container mit eingebetteter SQLite-Datenbank, auf deinem eigenen Server. diff --git a/frontend/package-lock.json b/frontend/package-lock.json index f0e846a..02f2821 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "mindsift-frontend", - "version": "0.16.1", + "version": "0.16.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "mindsift-frontend", - "version": "0.16.1", + "version": "0.16.2", "license": "Unlicense", "dependencies": { "@fontsource-variable/inter": "5.3.0", diff --git a/frontend/package.json b/frontend/package.json index d1562a6..a42b264 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "mindsift-frontend", "private": true, - "version": "0.16.1", + "version": "0.16.2", "license": "Unlicense", "type": "module", "scripts": { diff --git a/frontend/public/badge-96x96.png b/frontend/public/badge-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..8a4b8cd1ba871b2559662363d303b8e4e0f5ae5f GIT binary patch literal 2753 zcmZ`*c{J1w7yglbU&}H`W0z(Oim@~%#=eeuG4^d3yD@~wAR*a}SBNG%X=Tcil(NSd z8YNNL$&w{S^!eUDzH`1m-anrEocrASoO{o?|J)2)YZG2B2`&Htc+E_W?2p;=zu;gw zj;47po*dI@A5(iP0Ekln0Ma!8*guv?O8^iB1%MS#0Du<*z^U-EHaorJ0<*V;i4g!a zWPxGF8E3eub0h#Tk^X_q+~ApGk)3E}Wz4?9CBvb029YAub1cadjh%?TUPM2*55e!4 z02mZ@UQHdUrlIZt)rMgu9$_ik)cD(o2gqZ2QkcxxOim?Og;rO3}<<^STw)NFNQ)#Ph{18h|X5r#4mMw&e$B7#u=R4=L z1vhmxQ@s_owGMec^vqghgOl!|cjI%6U6Jx=u{ja7_@Ulr{?ZZi;RWo;2+lEO-*jsi z!qlCi4SW6jCwcpGWThChZI*qI*!Rk*f^{V zT5QI=Ysgl1*0mO)ufL$g#F%WnE{wmVHH$!SSiNHuTg!J_l)!sL=${sc`_AP_UMKo* zg%$?<5bC-dQ=r3WJU6*qQAA}*k%n5#ulj)Gn!;qLhtg{V zMwz=b%ReuW-opx7b*@yrbj863(Njah?y7U92!M5}w*-+#kl5xaRhCfZk8i(zpw!oz zl}ZbYQsrqXQT!W6=G&j+YZy?zVADkT(cS`&S7N7fQ{j#VWXP3t6D&Vn{Vvx@jGmg3S57It$rj?6vas5ho_{&Y(A{l` z`MEA~C4HgMa1GUDRYKOTla zR5(d#8Jf_ zxRcj-&(U#P<8CjFXHf_bsZACsV_~uV<{GdwDzkj#ckgnQ66?K1x+&M;j*j`Dk{R?w zP4}-jFnN3Prh=;L18kTwM_B9?VcC-ktKwYN}48Nx;qAAcZ*rB+2&DQ6s%VbF|7^5aF04ksg#M=p-r}w(rYku*9myYa)_hd zSuW&~$v)jS3{z<@OD@8818r^V^!l@^@7+EVzS{S@c*4hq7s>rLK@p#Y;Xi>*P-Im)MH56)rfUB2<_tS%U&6UzFO>1aURqhEbmlX`_xF)LVfnZVf78~HJzVC(x0 z6HSwd_(sjyL+NEGTpirF`8n~%$Dh1bozk1-Pfer1th516k1s=?qYSChz1MIS58z$BlJu!n6aYWqW`oUlA zd=iCEJ|u<0wJ%+0e~*+@dZ543Y_U5v;5|^>W9jpC2l`s!ha61R!MkbD@|(k99VmP} z$lu6nBu=fo5LxYm-{`$miTq4S$5PYQmQ$skL_f}6L`{cNAHI(rkrg+00&PX7FFKj{ zKSTgY4%c6?@h!|T0;Fa@b5}v#k}_NQwZs4o86g_2rTZD)^&i%bJ6@V6awL9dZ;x;{h{Wqrw{Qk$wfj$cmZt&HX z$vQN}PRnT|w54hKe7yFV?ku2lFlgKva`ZN+W5g~l$$sHsA;wi2Kic%PD_^(A>RV(UoFe-hq72U4qiCtK;c?E2S!CqC3A4$+_|gqPcK28z$$sz|>%7(*_- z0v*LX#)vlbnQgp!^z0~sa$ZuA-AinItfahPdZBrGNwCjei4nr^T|~8q?!gU_&u!9n zQR2@2_ZgWhTv2x|Ab5%vMqyl1*f$5ASf?0edRWAL2(PLoCM<|) + + + + + + + + + + + + + diff --git a/frontend/public/sw.js b/frontend/public/sw.js index f05efa3..23ecc51 100644 --- a/frontend/public/sw.js +++ b/frontend/public/sw.js @@ -7,7 +7,7 @@ // would hand it the old values), the cache only offline. // - API requests are never touched; offline data comes from the app's own cache (lib/offline.ts). // Raise VERSION when this file changes in a way that needs fresh caches. -const VERSION = 'v4'; +const VERSION = 'v5'; const SHELL_CACHE = `mindsift-shell-${VERSION}`; const ASSET_CACHE = `mindsift-assets-${VERSION}`; const MAX_ASSETS = 80; @@ -22,6 +22,7 @@ const SHELL_URLS = [ '/icon-192x192.png', '/icon-512x512.png', '/apple-touch-icon.png', + '/badge-96x96.png', ]; self.addEventListener('install', (event) => { @@ -194,7 +195,8 @@ self.addEventListener('push', (event) => { self.registration.showNotification(msg.title || 'MindSift', { body: msg.body || '', icon: '/icon-192x192.png', - badge: '/icon-192x192.png', + // Status bar icon: Android only uses the alpha channel, the full app icon became a plain square + badge: '/badge-96x96.png', tag: msg.tag || undefined, data: { url: msg.url || '/' }, })