feat: PWA-Unterstützung und Mobile-Responsiveness
Macht Calendarr installierbar (Manifest + Service Worker) und auf Smartphones bedienbar — additive Änderungen, kein Refactoring der bestehenden Logik, Theme/Variablen unverändert. PWA: - frontend/manifest.json (theme #4285f4, bg #0e0e14, name/icons/scope) - frontend/sw.js (cache-first für Statics, network-first für /api/*) - frontend/icons/icon-192.png + icon-512.png + icon.svg - backend/main.py: Routen für /manifest.json, /sw.js, /icons/* damit diese Pfade nicht vom SPA-Fallback abgefangen werden - index.html: manifest-Link, theme-color, apple-touch-icon, apple-* Meta - app.js: Service-Worker-Registrierung am Ende Mobile (≤ 768px, additiv am Ende von app.css): - Sidebar als Overlay mit body.sidebar-open + Backdrop-Element - View-Switcher horizontal scrollbar wenn er nicht passt - Monatsansicht zeigt nur farbige Punkte statt Titel - Wochenansicht reduziert auf Tagesspalte (heute) wenn heute in der Woche ist (via :has()), sonst Standard-7-Spalten - Modale auf voller Breite/Höhe - Tap-Targets ≥ 44px (icon-btn, btn) - Kein horizontaler Page-Overflow - iOS-Safe-Area für Notch/Home-Indicator Version v2 → v3.
This commit is contained in:
@@ -188,3 +188,12 @@ function loadAvatarImage(avatarEl, username) {
|
||||
|
||||
// ── Start ─────────────────────────────────────────────────
|
||||
boot();
|
||||
|
||||
// ── Service Worker registration (PWA) ─────────────────────
|
||||
if ('serviceWorker' in navigator) {
|
||||
window.addEventListener('load', () => {
|
||||
navigator.serviceWorker.register('/sw.js', { scope: '/' }).catch(err => {
|
||||
console.warn('SW registration failed:', err);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -820,7 +820,10 @@ function bindTopbar() {
|
||||
function bindSidebar() {
|
||||
document.getElementById('sidebar-toggle').onclick = () => {
|
||||
document.getElementById('sidebar').classList.toggle('collapsed');
|
||||
document.body.classList.toggle('sidebar-open'); // mobile slide-in
|
||||
};
|
||||
const backdrop = document.getElementById('sidebar-backdrop');
|
||||
if (backdrop) backdrop.onclick = () => document.body.classList.remove('sidebar-open');
|
||||
|
||||
// Add calendar dropdown
|
||||
const addBtn = document.getElementById('btn-add-cal');
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
// Increment APP_VERSION with every code change
|
||||
export const APP_VERSION = 'v2';
|
||||
export const APP_VERSION = 'v3';
|
||||
|
||||
Reference in New Issue
Block a user