feat: add push notification infrastructure with VAPID key generation and PWA manifest support
- Introduce push notification module with VAPID certificate generation, Web Push encryption, and subscription management - Add push registration table index and database schema for storing user subscriptions - Integrate push notification dispatch into existing notification creation flow via async background tasks - Include PWA manifest, service worker, and install prompt UI elements in base template - Register new push router and ensure certificate initialization on application startup - Add configuration variables for VAPID private/public key file paths and subscription contact email - Update JavaScript application entry point with PushManager and PwaInstaller modules - Extend top navigation bar with hidden install and push enable buttons for authenticated users
This commit is contained in:
@@ -531,7 +531,7 @@ img {
|
||||
.topnav-link:hover { color: var(--text-primary); background: var(--bg-card); }
|
||||
.topnav-link.active { color: var(--accent); background: var(--accent-light); }
|
||||
.topnav-right { margin-left: auto; display: flex; align-items: center; gap: 1rem; flex-shrink: 0; }
|
||||
.topnav-icon { position: relative; padding: 0.375rem; color: var(--text-secondary); font-size: 1.25rem; transition: color 0.2s; }
|
||||
.topnav-icon { position: relative; padding: 0.375rem; color: var(--text-secondary); font-size: 1.25rem; transition: color 0.2s; background: none; border: none; cursor: pointer; font-family: inherit; line-height: 1; }
|
||||
.topnav-icon:hover { color: var(--text-primary); }
|
||||
.nav-badge {
|
||||
position: absolute; top: 0; right: 0; min-width: 16px; height: 16px;
|
||||
|
||||
@@ -7,6 +7,8 @@ import { MobileNav } from "./MobileNav.js";
|
||||
import { CommentManager } from "./CommentManager.js";
|
||||
import { ContentEnhancer } from "./ContentEnhancer.js";
|
||||
import { DomUtils } from "./DomUtils.js";
|
||||
import { PushManager } from "./PushManager.js";
|
||||
import { PwaInstaller } from "./PwaInstaller.js";
|
||||
|
||||
class Application {
|
||||
constructor() {
|
||||
@@ -19,6 +21,8 @@ class Application {
|
||||
this.comments = new CommentManager();
|
||||
this.content = new ContentEnhancer();
|
||||
this.dom = new DomUtils();
|
||||
this.push = new PushManager();
|
||||
this.pwa = new PwaInstaller();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user