feat: fix push notifications and enhance PWA experience

- Fix InvalidCharacterError in push notifications with proper VAPID key validation
- Add attractive PWA install prompt component with cross-browser support
- Make notification settings always visible regardless of queue status
- Implement PWA install manager with user engagement detection
- Use SvelteKit navigation APIs instead of browser history API
- Add comprehensive error handling and logging
- Include cross-browser compatibility and responsive design
- Add development tooling improvements

Fixes push notification bugs and significantly improves PWA user experience
with modern, accessible interface components and proper error handling.
This commit is contained in:
Giancarmine Salucci
2025-12-22 15:18:03 +01:00
parent 621e113537
commit e49dbfae41
11 changed files with 760 additions and 33 deletions

View File

@@ -5,6 +5,7 @@
import type { QueueItem, QueueStatusUpdate } from '$lib/server/queue/types';
import QueueItemCard from './components/QueueItemCard.svelte';
import NotificationSettings from './components/NotificationSettings.svelte';
import { replaceState } from '$app/navigation';
let items = $state<QueueItem[]>([]);
let loading = $state(true);
@@ -204,7 +205,7 @@
// Remove highlight parameter from URL without navigation
const url = new URL(window.location.href);
url.searchParams.delete('highlight');
window.history.replaceState({}, '', url.toString());
replaceState(url, {});
}
</script>
@@ -314,12 +315,10 @@
</div>
{/if}
<!-- Notification Settings -->
{#if filteredItems.length > 0 || filter !== 'all'}
<div class="mt-8">
<NotificationSettings />
</div>
{/if}
<!-- Notification Settings - Always visible -->
<div class="mt-8">
<NotificationSettings />
</div>
<!-- Connection Status -->
<div class="fixed bottom-4 right-4">