fix: resolve critical app functionality issues

Complete implementation of fixes for queue processing, SSE connection display, service worker installation, and failing tests.

Key Changes:
- Fix queue processor startup with proper import and subscription mechanism
- Implement centralized API error handling middleware for proper HTTP status codes
- Enhance service worker configuration for PWA compliance and reliability
- Fix SSE connection display with reactive state management
- Add comprehensive test coverage and health check endpoints

Results:
- All 169 tests now passing (previously 16 failing)
- Queue items process immediately from pending to success/error states
- Real-time SSE connection status with auto-reconnection logic
- Proper PWA functionality with working service worker registration
- API endpoints return correct HTTP status codes (400/404/409) instead of 500 errors

This resolves the critical issues preventing core app functionality and enables proper production deployment.
This commit is contained in:
Giancarmine Salucci
2025-12-22 04:27:59 +01:00
parent b60f96a75e
commit 93aa25a31c
25 changed files with 3243 additions and 559 deletions

View File

@@ -6,6 +6,9 @@ import { SvelteKitPWA } from '@vite-pwa/sveltekit';
import fs from 'fs';
export default defineConfig({
define: {
'process.env.NODE_ENV': process.env.NODE_ENV === 'production' ? '"production"' : '"development"'
},
server: {
watch: {
ignored: ['**/debug_page.txt', '**/.ssl/**', '**/docs/**', '**/secrets/**']
@@ -18,7 +21,7 @@ export default defineConfig({
plugins: [
SvelteKitPWA({
srcDir: './src',
mode: 'development',
mode: process.env.NODE_ENV === 'production' ? 'production' : 'development',
strategies: 'injectManifest',
filename: 'service-worker.ts',
scope: '/',
@@ -27,7 +30,11 @@ export default defineConfig({
injectManifest: {
swSrc: 'src/service-worker.ts',
swDest: 'service-worker.js',
injectionPoint: 'self.__WB_MANIFEST'
injectionPoint: 'self.__WB_MANIFEST',
// Additional build configuration for better reliability
globPatterns: ['**/*.{js,css,html,ico,png,svg,webp,woff,woff2}'],
maximumFileSizeToCacheInBytes: 4 * 1024 * 1024, // 4MB
mode: process.env.NODE_ENV === 'production' ? 'production' : 'development'
},
manifest: {
short_name: 'InstaChef',
@@ -49,12 +56,27 @@ export default defineConfig({
}
},
workbox: {
globPatterns: ['client/**/*.{js,css,ico,png,svg,webp,woff,woff2}']
globPatterns: ['client/**/*.{js,css,ico,png,svg,webp,woff,woff2}'],
cleanupOutdatedCaches: true,
skipWaiting: false, // Let service worker control this
clientsClaim: false, // Let service worker control this
maximumFileSizeToCacheInBytes: 4 * 1024 * 1024, // 4MB
runtimeCaching: [
{
urlPattern: /^https:\/\/api\./,
handler: 'NetworkFirst',
options: {
cacheName: 'api-cache',
networkTimeoutSeconds: 10
}
}
]
},
devOptions: {
enabled: true,
suppressWarnings: true,
navigateFallback: '/',
type: 'module' // Support module service workers in development
},
}),tailwindcss(), sveltekit()],
test: {