diff --git a/app/routes/views.py b/app/routes/views.py index 41d3709..763ba56 100644 --- a/app/routes/views.py +++ b/app/routes/views.py @@ -1,7 +1,19 @@ -from flask import Blueprint, render_template, redirect, url_for, session, jsonify +from flask import Blueprint, render_template, redirect, url_for, session, jsonify, send_from_directory, current_app bp = Blueprint('views', __name__) + +@bp.route('/sw.js') +def service_worker(): + """Serve service worker from root scope.""" + response = send_from_directory( + current_app.static_folder, 'sw.js', + mimetype='application/javascript' + ) + response.headers['Service-Worker-Allowed'] = '/' + response.headers['Cache-Control'] = 'no-cache' + return response + @bp.route('/') def index(): """Root route - redirect to capture if logged in, otherwise show login.""" diff --git a/app/static/sw.js b/app/static/sw.js index ea22bdb..f475515 100644 --- a/app/static/sw.js +++ b/app/static/sw.js @@ -1,9 +1,9 @@ // NextSnap Service Worker // Provides offline-first caching for the app shell -const CACHE_VERSION = 'nextsnap-v21'; -const APP_SHELL_CACHE = 'nextsnap-shell-v17'; -const RUNTIME_CACHE = 'nextsnap-runtime-v17'; +const CACHE_VERSION = 'nextsnap-v22'; +const APP_SHELL_CACHE = 'nextsnap-shell-v18'; +const RUNTIME_CACHE = 'nextsnap-runtime-v18'; // Offline fallback page (served when network fails and no cached version exists) const OFFLINE_PAGE = ` @@ -26,10 +26,6 @@ button:active{opacity:0.8} // Assets to cache on install const APP_SHELL_ASSETS = [ - '/', - '/capture', - '/queue', - '/browser', '/static/css/style.css', '/static/js/app.js', '/static/js/auth.js', diff --git a/app/templates/base.html b/app/templates/base.html index 2b7f13d..1e3c911 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -65,7 +65,7 @@