@qwickapps/server 1.5.0 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/CHANGELOG.md +528 -0
  2. package/README.md +9 -0
  3. package/dist/core/control-panel.d.ts.map +1 -1
  4. package/dist/core/control-panel.js +41 -0
  5. package/dist/core/control-panel.js.map +1 -1
  6. package/dist/core/guards.d.ts.map +1 -1
  7. package/dist/core/guards.js +77 -0
  8. package/dist/core/guards.js.map +1 -1
  9. package/dist/core/health-manager.d.ts +4 -0
  10. package/dist/core/health-manager.d.ts.map +1 -1
  11. package/dist/core/health-manager.js +6 -1
  12. package/dist/core/health-manager.js.map +1 -1
  13. package/dist/core/plugin-registry.d.ts +55 -5
  14. package/dist/core/plugin-registry.d.ts.map +1 -1
  15. package/dist/core/plugin-registry.js +57 -19
  16. package/dist/core/plugin-registry.js.map +1 -1
  17. package/dist/core/types.d.ts +2 -0
  18. package/dist/core/types.d.ts.map +1 -1
  19. package/dist/index.d.ts +2 -2
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +3 -1
  22. package/dist/index.js.map +1 -1
  23. package/dist/plugins/auth/auth-plugin.d.ts.map +1 -1
  24. package/dist/plugins/auth/auth-plugin.js +16 -0
  25. package/dist/plugins/auth/auth-plugin.js.map +1 -1
  26. package/dist/plugins/auth/auth-plugin.test.js +133 -0
  27. package/dist/plugins/auth/auth-plugin.test.js.map +1 -1
  28. package/dist/plugins/auth/env-config.d.ts.map +1 -1
  29. package/dist/plugins/auth/env-config.js +4 -0
  30. package/dist/plugins/auth/env-config.js.map +1 -1
  31. package/dist/plugins/auth/types.d.ts +10 -0
  32. package/dist/plugins/auth/types.d.ts.map +1 -1
  33. package/dist/plugins/auth/types.js.map +1 -1
  34. package/dist/plugins/devices/__tests__/token-utils.test.js +4 -2
  35. package/dist/plugins/devices/__tests__/token-utils.test.js.map +1 -1
  36. package/dist/plugins/frontend-app-plugin.d.ts.map +1 -1
  37. package/dist/plugins/frontend-app-plugin.js +18 -4
  38. package/dist/plugins/frontend-app-plugin.js.map +1 -1
  39. package/dist/plugins/index.d.ts +2 -0
  40. package/dist/plugins/index.d.ts.map +1 -1
  41. package/dist/plugins/index.js +2 -0
  42. package/dist/plugins/index.js.map +1 -1
  43. package/dist/plugins/qwickbrain/index.d.ts +25 -0
  44. package/dist/plugins/qwickbrain/index.d.ts.map +1 -0
  45. package/dist/plugins/qwickbrain/index.js +24 -0
  46. package/dist/plugins/qwickbrain/index.js.map +1 -0
  47. package/dist/plugins/qwickbrain/qwickbrain-plugin.d.ts +23 -0
  48. package/dist/plugins/qwickbrain/qwickbrain-plugin.d.ts.map +1 -0
  49. package/dist/plugins/qwickbrain/qwickbrain-plugin.js +528 -0
  50. package/dist/plugins/qwickbrain/qwickbrain-plugin.js.map +1 -0
  51. package/dist/plugins/qwickbrain/types.d.ts +131 -0
  52. package/dist/plugins/qwickbrain/types.d.ts.map +1 -0
  53. package/dist/plugins/qwickbrain/types.js +9 -0
  54. package/dist/plugins/qwickbrain/types.js.map +1 -0
  55. package/dist-ui/assets/{index-CynOqPkb.js → index-BfC7mG5L.js} +2 -2
  56. package/dist-ui/assets/{index-CynOqPkb.js.map → index-BfC7mG5L.js.map} +1 -1
  57. package/dist-ui/index.html +1 -1
  58. package/dist-ui-lib/api/controlPanelApi.d.ts +6 -0
  59. package/dist-ui-lib/index.js +277 -266
  60. package/dist-ui-lib/index.js.map +1 -1
  61. package/package.json +3 -2
  62. package/src/core/control-panel.ts +47 -0
  63. package/src/core/guards.ts +89 -0
  64. package/src/core/health-manager.ts +6 -1
  65. package/src/core/plugin-registry.ts +123 -25
  66. package/src/core/types.ts +2 -0
  67. package/src/index.ts +11 -0
  68. package/src/plugins/auth/auth-plugin.test.ts +167 -0
  69. package/src/plugins/auth/auth-plugin.ts +16 -0
  70. package/src/plugins/auth/env-config.ts +4 -0
  71. package/src/plugins/auth/types.ts +10 -0
  72. package/src/plugins/devices/__tests__/token-utils.test.ts +4 -2
  73. package/src/plugins/frontend-app-plugin.ts +19 -4
  74. package/src/plugins/index.ts +15 -0
  75. package/src/plugins/qwickbrain/index.ts +33 -0
  76. package/src/plugins/qwickbrain/qwickbrain-plugin.ts +642 -0
  77. package/src/plugins/qwickbrain/types.ts +146 -0
  78. package/ui/src/api/controlPanelApi.ts +49 -37
package/CHANGELOG.md ADDED
@@ -0,0 +1,528 @@
1
+ # Changelog
2
+
3
+ All notable changes to @qwickapps/server will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.5.2] - 2025-12-21
9
+
10
+ ### Fixed
11
+
12
+ - **Basic Auth Guard** - Fixed repeated login prompts in Control Panel (#523)
13
+ - Added session cookie support to basic auth guard
14
+ - After successful authentication, a signed session cookie is set
15
+ - Subsequent requests use the session cookie instead of re-prompting for credentials
16
+ - Configurable session duration via `sessionDurationHours` (default: 8 hours)
17
+ - Adds `Secure` flag automatically when running over HTTPS
18
+ - Fixes issue where users had to login 4-5 times to access `/cpanel/users`
19
+
20
+ ### Added
21
+
22
+ - **Auth Plugin onAuthenticated Callback** - New callback for syncing users on authentication
23
+ - Added `onAuthenticated` callback to `AuthPluginConfig` and `AuthEnvPluginOptions`
24
+ - Called after successful authentication with the authenticated user's info
25
+ - Use this to sync users to a local database on first login
26
+ - Errors in callback are logged but don't fail the authentication
27
+ - **Guards Unit Tests** - Comprehensive test suite for route guards (14 tests)
28
+
29
+ ## [1.5.1] - 2025-12-18
30
+
31
+ ### Fixed
32
+
33
+ - **npm Package** - Include CHANGELOG.md in published package
34
+ - **README** - Add "What's New" section highlighting v1.5.0 features
35
+ - **Input Validation** - `getByIdentifier()` now throws if no identifiers provided
36
+ - **Zero-value IDs** - Fixed `wp_user_id` and `keap_contact_id` to allow 0 as valid identifier
37
+ - **Memory Leak** - Fixed potential memory leak in NotificationsPage component
38
+ - **Audit Logging** - Disconnect actions now log admin user info (userId, email, IP)
39
+
40
+ ### Added
41
+
42
+ - **Unit Tests** - Comprehensive tests for postgres store methods (`getByIdentifier`, `linkIdentifiers`, `getByIds`)
43
+
44
+ ## [1.5.0] - 2025-12-18
45
+
46
+ ### Added
47
+
48
+ - **Notifications Plugin UI** - Stats widget and management UI for notifications (#484)
49
+ - `NotificationsStatsWidget` - Dashboard widget showing notification statistics
50
+ - `NotificationsPage` - Full management UI for viewing and managing notifications
51
+ - `StatCard` component - Reusable statistics display component
52
+ - `formatters` utility - Number and date formatting helpers
53
+
54
+ - **Users Plugin Enhancements** - Improved user search and ban management (#491)
55
+ - Enhanced search functionality in Control Panel users page
56
+ - Search users by email, name, or external ID
57
+ - Ban management directly from user list with ban/unban actions
58
+ - Updated `controlPanelApi` with expanded user management endpoints
59
+
60
+ ### Fixed
61
+
62
+ - **Profile Sync** - Multi-identifier lookup for Auth0 profile sync (#492)
63
+ - Improved user matching with multiple identifier support
64
+
65
+ ## [1.4.0] - 2025-12-16
66
+
67
+ ### Added
68
+
69
+ - **Rate Limit Plugin** (`createRateLimitPlugin`) - API rate limiting with multiple strategies (#401)
70
+ - Three rate limiting strategies: sliding window (default), fixed window, token bucket
71
+ - PostgreSQL persistence with Row-Level Security (RLS) for multi-tenant isolation
72
+ - Redis caching with in-memory fallback (via cache plugin)
73
+ - Express middleware (`rateLimitMiddleware`) for automatic enforcement
74
+ - Programmatic API: `isLimited`, `checkLimit`, `incrementLimit`, `getRemainingRequests`, `clearLimit`
75
+ - Standard rate limit headers: `RateLimit-Limit`, `RateLimit-Remaining`, `RateLimit-Reset`, `Retry-After`
76
+ - Auto-cleanup of expired limits
77
+ - Configurable scopes: user, tenant, IP
78
+ - **Environment Config** (`createRateLimitPluginFromEnv`) for zero-config setup via env vars
79
+ - **Runtime Config UI** - Control Panel page for live configuration changes
80
+ - Edit window size, max requests, strategy at runtime
81
+ - Toggle cleanup job on/off
82
+ - View store and cache status
83
+ - **Config API** (`GET/PUT /api/rate-limit/config`) for programmatic runtime updates
84
+ - **PostgreSQL Store** (`postgresRateLimitStore`) with RLS policies
85
+ - **Cache Store** (`createRateLimitCache`) with Redis/memory support
86
+ - Status API endpoints: `GET /rate-limit/status`, `DELETE /rate-limit/clear/:key`
87
+ - New types: `RateLimitPluginConfig`, `LimitStatus`, `RateLimitMiddlewareOptions`, `RateLimitEnvPluginOptions`
88
+
89
+ ### Fixed
90
+
91
+ - **Supabase Adapter TypeScript Error** - Fix build failure with `response.json()` returning `unknown`
92
+ - Added `SupabaseUserResponse` interface for type-safe Supabase API responses
93
+ - Node.js fetch types (`undici-types`) correctly return `Promise<unknown>` from `json()`
94
+ - This caused TS18046 errors when accessing properties on the response
95
+ - Fixes GitHub Actions publish workflow failure
96
+
97
+ ### Added
98
+
99
+ - **Auth Plugin Runtime Configuration** - Control Panel UI for auth config with hot-reload (#394)
100
+ - Editable configuration forms for all auth providers (Auth0, Supabase, SuperTokens, Basic)
101
+ - PostgreSQL-backed config store with `pg_notify` for cross-instance sync
102
+ - Adapter wrapper pattern enables hot-reload without server restart
103
+ - Test connection feature validates provider before saving
104
+ - API endpoints: `PUT /api/auth/config`, `DELETE /api/auth/config`, `POST /api/auth/test-provider`
105
+ - New exports: `postgresAuthConfigStore()`, `setAuthConfigStore()`, `createAdapterWrapper()`, `getAdapterWrapper()`
106
+ - New types: `RuntimeAuthConfig`, `UpdateAuthConfigRequest`, `TestProviderRequest`, `TestProviderResponse`, `AuthConfigStore`, `PostgresAuthConfigStoreConfig`
107
+ - Social providers panel for SuperTokens (Google, GitHub, Apple)
108
+ - Reset to environment variables functionality
109
+ - SQL injection protection with identifier validation
110
+ - URL validation for SSRF protection in test connections
111
+ - Exponential backoff for pg_notify reconnection (1s → 60s max)
112
+ - **Note**: Hot-reload swaps `isAuthenticated/getUser` methods immediately; Express middleware routes (e.g., OAuth callbacks) require server restart to fully apply
113
+
114
+ - **Auth Plugin Environment Configuration** - Zero-code auth setup via environment variables (#393)
115
+ - New `createAuthPluginFromEnv()` factory function
116
+ - Supports ALL 4 adapters: Auth0, Supabase, Supertokens, Basic
117
+ - Plugin states: disabled (no config), enabled (valid config), error (invalid config)
118
+ - Clear error messages listing missing environment variables
119
+ - Control Panel Auth page showing configuration status
120
+ - `getAuthStatus()` function to check current auth state
121
+ - API endpoints: `GET /api/auth/config/status`, `GET /api/auth/config`
122
+ - New types: `AuthPluginState`, `AuthEnvPluginOptions`, `AuthConfigStatus`
123
+ - Comprehensive env var support (30+ variables across all adapters)
124
+ - Secrets automatically masked in status responses
125
+
126
+ - **Supertokens Auth Adapter** - Self-hosted authentication with Supertokens (#392)
127
+ - Supports email/password authentication via EmailPassword recipe
128
+ - Supports social logins (Google, Apple, GitHub) via ThirdParty recipe
129
+ - Uses Supertokens' native session management (HTTP-only cookies)
130
+ - Lazy initialization - doesn't require supertokens-node unless used
131
+ - Configurable options: enable/disable email/password, custom API paths
132
+ - Integrates with existing `requireAuth()` middleware
133
+ - New types: `SupertokensAdapterConfig`
134
+ - Requires `supertokens-node` v20+ as optional peer dependency
135
+
136
+ - **Users Plugin: User Info API** - Comprehensive user information aggregation (#352)
137
+ - `GET /api/users/:id/info` - Get comprehensive user info from all loaded plugins
138
+ - `POST /api/users/sync` - Find or create user and return full info (for Auth0/OAuth triggers)
139
+ - `buildUserInfo()` helper aggregates data in parallel from:
140
+ - Entitlements plugin (user's entitlements)
141
+ - Preferences plugin (user's preferences)
142
+ - Bans plugin (active ban status)
143
+ - Graceful degradation when plugins are not loaded
144
+ - Error resilience - partial failures don't break the entire request
145
+ - New types: `UserInfo`, `UserSyncInput`
146
+
147
+ - **Preferences Plugin** (`createPreferencesPlugin`) - User preferences management with PostgreSQL RLS (#349)
148
+ - Row-Level Security (RLS) for database-level data isolation
149
+ - Foreign key to users table with `ON DELETE CASCADE`
150
+ - Transaction-safe RLS context setting for connection pooling
151
+ - Deep merge updates (preserve nested objects on partial updates)
152
+ - Configurable default preferences
153
+ - Input validation (100KB size limit, 10-level nesting depth)
154
+ - **PostgreSQL Store** (`postgresPreferencesStore`)
155
+ - Creates `user_preferences` table with RLS policies
156
+ - `WITH CHECK` clause for complete RLS protection on writes
157
+ - **REST API endpoints**:
158
+ - `GET /api/preferences` - Get current user's preferences (merged with defaults)
159
+ - `PUT /api/preferences` - Update preferences (deep merge)
160
+ - `DELETE /api/preferences` - Reset to defaults
161
+ - **Helper functions**: `getPreferences()`, `updatePreferences()`, `deletePreferences()`, `getDefaultPreferences()`
162
+ - **Utility**: `deepMerge()` function exported for custom merge operations
163
+
164
+ ### Changed
165
+
166
+ - **Logo Configuration**: Consolidated redundant logo properties into single `logoIconUrl` (fixes #336)
167
+ - Replaced `GatewayConfig.logoUrl` with `logoIconUrl`
168
+ - Removed `ControlPanelConfig.branding.logo` (was unused by React UI)
169
+ - Added `ControlPanelConfig.logoIconUrl` for custom logo icons
170
+ - React UI now renders custom logo when `logoIconUrl` is provided in `/api/info`
171
+ - **BREAKING**: Migrate from `logoUrl` to `logoIconUrl` in gateway configs
172
+
173
+ ### Added
174
+
175
+ - **Plugins Overview Page** in Control Panel UI (closes #346)
176
+ - New core built-in page at `/plugins` showing all registered plugins
177
+ - Plugin list with status badges (active/stopped/error/starting)
178
+ - Expandable details showing plugin contributions (routes, menu items, pages, widgets)
179
+ - Error display for plugins in error state
180
+ - New `ConfigContribution` type for plugins to provide custom settings UI
181
+ - `GET /api/plugins/:id` endpoint for detailed plugin info
182
+ - Enhanced `GET /api/plugins` with contribution counts
183
+ - `addConfigComponent()` and `getPluginContributions()` methods on PluginRegistry
184
+
185
+ - **Cache Plugin**: `scanKeys()` method using Redis SCAN for non-blocking key iteration (closes #258)
186
+ - Cursor-based iteration prevents blocking Redis on large datasets
187
+ - Accepts optional `count` parameter for batch size hints
188
+ - Deprecated `keys()` method in favor of `scanKeys()` for production use
189
+
190
+ ## [1.3.0] - 2025-12-10
191
+
192
+ ### Added
193
+
194
+ - **Entitlements Plugin** (`createEntitlementsPlugin`)
195
+ - Pluggable entitlement source with adapter pattern
196
+ - **In-Memory Source** for demo/testing
197
+ - **PostgreSQL Source** (`postgresEntitlementSource`) for production
198
+ - REST API endpoints:
199
+ - `GET /api/entitlements/:email` - Get user entitlements
200
+ - `GET /api/entitlements/:email/check/:entitlement` - Check specific entitlement
201
+ - `POST /api/entitlements/:email/refresh` - Force cache refresh
202
+ - `GET /api/entitlements/available` - List all available entitlements
203
+ - `POST /api/entitlements/:email` - Grant entitlement (writable sources)
204
+ - `DELETE /api/entitlements/:email/:entitlement` - Revoke entitlement
205
+ - Helper functions: `getEntitlements()`, `hasEntitlement()`, `hasAnyEntitlement()`, `hasAllEntitlements()`
206
+ - Dashboard widget showing entitlement statistics
207
+
208
+ - **Entitlements Page** in Control Panel UI
209
+ - View all available entitlements with categories
210
+ - Search and filter entitlements
211
+ - Add/edit/delete entitlements (writable sources)
212
+ - View users with specific entitlements
213
+
214
+ - **Users Page** in Control Panel UI
215
+ - View all users with entitlement counts
216
+ - Lookup user entitlements dialog
217
+ - Grant/revoke entitlements from user view
218
+ - Ban/unban users integration
219
+
220
+ - **Bans Plugin** (`createBansPlugin`)
221
+ - Separated ban management from Users plugin
222
+ - Standalone ban store interface
223
+ - REST API endpoints for ban management
224
+
225
+ - **Gateway Maintenance Mode**
226
+ - Configurable maintenance pages for mounted apps
227
+ - `MaintenanceConfig`: enabled, title, message, expectedBackAt, contactUrl, bypassPaths
228
+ - Modern responsive design with dark mode support
229
+ - ETA countdown (ISO date, relative time like "2 hours", or "soon")
230
+ - Bypass paths for health checks during maintenance
231
+
232
+ - **Gateway Service Unavailable Pages**
233
+ - Automatic fallback page when proxied services are unreachable
234
+ - `FallbackConfig`: title, message, showRetry, autoRefresh
235
+ - Auto-refresh countdown (default 30 seconds)
236
+ - Smart content negotiation (JSON for API requests, HTML for browsers)
237
+
238
+ - **Auth Plugin** (`createAuthPlugin`)
239
+ - Pluggable authentication with adapter pattern
240
+ - **Auth0 Adapter** (`auth0Adapter`)
241
+ - OIDC authentication via express-openid-connect
242
+ - Role-based access control (RBAC) support
243
+ - Domain whitelist filtering
244
+ - Access token exposure for downstream API calls
245
+ - **Basic Adapter** (`basicAdapter`)
246
+ - HTTP Basic authentication
247
+ - Configurable realm
248
+ - **Supabase Adapter** (`supabaseAdapter`)
249
+ - JWT token validation
250
+ - User caching for performance
251
+ - Fallback adapter chain support
252
+ - Helper functions: `isAuthenticated()`, `getAuthenticatedUser()`, `getAccessToken()`
253
+ - Middleware helpers: `requireAuth()`, `requireRoles()`, `requireAnyRole()`
254
+
255
+ - **Users Plugin** (`createUsersPlugin`)
256
+ - Storage-agnostic user management with UserStore interface
257
+ - **PostgreSQL User Store** (`postgresUserStore`)
258
+ - User CRUD operations
259
+ - Search with pagination and filtering
260
+ - External ID mapping for provider sync
261
+ - **Ban Management** (user-id keyed)
262
+ - Permanent and temporary bans
263
+ - Ban history tracking
264
+ - Automatic cleanup of expired bans
265
+ - Callbacks: `onBan`, `onUnban`
266
+ - **Email Ban Management** (email-keyed, for auth-only scenarios)
267
+ - Ban users by email without storing users locally
268
+ - Helper functions: `isEmailBanned()`, `getEmailBan()`, `banEmail()`, `unbanEmail()`
269
+ - REST API endpoints for email bans
270
+ - REST API endpoints:
271
+ - `GET/POST /api/users` - List/create users
272
+ - `GET/PUT/DELETE /api/users/:id` - Get/update/delete user
273
+ - `GET /api/users/bans` - List active bans
274
+ - `GET/POST/DELETE /api/users/:id/ban` - Manage user bans
275
+ - `GET /api/users/email-bans` - List active email bans
276
+ - `GET/POST /api/users/email-bans/:email` - Get/create email ban
277
+ - `DELETE /api/users/email-bans/:email` - Remove email ban
278
+
279
+ - **Plugin Registry** (`PluginRegistry`)
280
+ - New centralized plugin registration system replacing PluginManager
281
+ - Cleaner API for plugin lifecycle management
282
+ - Better type safety for plugin metadata and dependencies
283
+
284
+ - **Dashboard Widget System** for Control Panel UI
285
+ - `DashboardWidgetProvider` context for managing widgets
286
+ - `DashboardWidget` interface for creating custom widgets
287
+ - Built-in widgets: Service Status, Quick Actions
288
+ - Consumer apps can register custom dashboard widgets
289
+
290
+ - **System Page** in Control Panel UI
291
+ - Displays server version and system information
292
+ - Shows plugin status and configuration
293
+
294
+ - **UI Library Export** (`@qwickapps/server/ui`)
295
+ - `ControlPanelApp` component for building admin UIs
296
+ - Shared dashboard components
297
+ - Vite library build configuration
298
+
299
+ ### Changed
300
+
301
+ - **ControlPanelApp Navigation**: Routes now use relative paths (e.g., `/health` instead of `${basePath}/health`)
302
+ - Works correctly with React Router's `basename` prop
303
+ - Integrates with `@qwickapps/react-framework` NavigationContext
304
+
305
+ - **Control Panel Base Path Injection**
306
+ - Server now injects `window.__APP_BASE_PATH__` into HTML for reliable base path detection
307
+ - Simplified client-side detection from ~50 lines to single global read
308
+ - Works seamlessly behind proxies with X-Forwarded-Prefix support
309
+
310
+ - **Control Panel Asset Serving**
311
+ - Dynamic asset path rewriting for non-root mount paths
312
+ - Apps mounted at subpaths (e.g., `/cpanel`) now work without rebuilding UI
313
+
314
+ - **Demo Server**
315
+ - Added `demo-gateway.ts` example with frontend app at `/` and cpanel at `/cpanel`
316
+ - Uses in-memory stores for Users, Bans, and Entitlements
317
+
318
+ ### Fixed
319
+
320
+ - Fixed `DashboardWidgetProvider` not wrapping app in built-in UI
321
+
322
+ ### Removed
323
+
324
+ - **PluginManager** - Replaced by simpler PluginRegistry
325
+
326
+ ## [1.2.0] - 2025-12-08
327
+
328
+ ### Changed
329
+
330
+ - **Reduced Log Verbosity**
331
+ - Moved verbose startup messages to debug level
332
+ - Gateway now logs single concise INFO line: `{productName} started on port {port} (auth: {type})`
333
+ - Detailed route, port, and configuration info logged at debug level
334
+ - Control panel start/stop messages moved to debug level
335
+
336
+ ### Notes
337
+
338
+ This release includes all features from 1.1.7-1.1.9 (PostgreSQL plugin, Cache plugin, Route Guards, Gateway enhancements) which were not published to npm. If upgrading from 1.1.6, see those version entries for full feature list.
339
+
340
+ ## [1.1.9] - 2025-12-07
341
+
342
+ ### Added
343
+
344
+ - **Configurable Logo for Landing Page**
345
+ - New `logoUrl` option in `GatewayConfig` to specify a custom product logo
346
+ - When set, the landing page displays the custom logo instead of the default icon
347
+ - Supports SVG, PNG, and other image formats
348
+
349
+ ### Changed
350
+
351
+ - **Default Landing Page**
352
+ - Logo container now supports both custom images and the default SVG icon
353
+ - Added CSS classes `.logo.custom` and `.logo.default` for differentiated styling
354
+
355
+ ## [1.1.8] - 2025-12-07
356
+
357
+ ### Changed
358
+
359
+ - **Default Landing Page**
360
+ - Removed "Health Check" button (health can be checked via control panel)
361
+ - Updated footer to "Powered by QwickApps Server - Version x.y.z"
362
+ - "QwickApps Server" links to https://qwickapps.com
363
+ - Version links to https://github.com/qwickapps/server
364
+
365
+ ## [1.1.7] - 2025-12-07
366
+
367
+ ### Added
368
+
369
+ - **PostgreSQL Plugin** (`createPostgresPlugin`)
370
+ - Connection pooling with configurable max connections
371
+ - Transaction support with `withTransaction()` callback
372
+ - Built-in health checks with configurable intervals
373
+ - Named instances for multi-database support
374
+ - Exports: `getPostgres()`, `hasPostgres()`
375
+
376
+ - **Cache Plugin** (`createCachePlugin`)
377
+ - Redis-based caching using ioredis
378
+ - Key prefixing and configurable default TTL
379
+ - Full cache API: `get`, `set`, `delete`, `deletePattern`, `keys`, `flush`, `getStats`
380
+ - Built-in health checks
381
+ - Exports: `getCache()`, `hasCache()`
382
+
383
+ ### Changed
384
+
385
+ - Renamed internal database plugin to postgres-plugin for clarity
386
+ - Added backward compatibility aliases (`createDatabasePlugin`, `getDatabase`)
387
+
388
+ ## [1.1.6] - 2025-12-07
389
+
390
+ ### Added
391
+
392
+ - **Configurable Mount Paths**
393
+ - Control panel now mounts at `/cpanel` by default (configurable via `mountPath`)
394
+ - Root path (`/`) reserved for frontend applications
395
+ - API routes available at `{mountPath}/api/` (e.g., `/cpanel/api/health`)
396
+
397
+ - **Route Guards System**
398
+ - New unified guard system replaces old auth configuration
399
+ - `BasicAuthGuardConfig` - HTTP Basic authentication
400
+ - `SupabaseAuthGuardConfig` - Supabase JWT token validation
401
+ - `Auth0GuardConfig` - Auth0 OpenID Connect integration
402
+ - `createRouteGuard()` factory function
403
+ - `isAuthenticated()` and `getAuthenticatedUser()` helper functions
404
+
405
+ - **Frontend App Plugin**
406
+ - New `createFrontendAppPlugin()` for handling root path
407
+ - Support for redirect to another URL
408
+ - Support for serving static files
409
+ - Support for custom landing page with links
410
+
411
+ - **Gateway Enhancements**
412
+ - `controlPanelPath` - Configurable mount path for control panel
413
+ - `controlPanelGuard` - Guard configuration for control panel
414
+ - `frontendApp` - Configuration for root path handling
415
+
416
+ ### Changed
417
+
418
+ - Default control panel mount path changed from `/` to `/cpanel`
419
+ - Auth configuration replaced with guard-based system
420
+
421
+ ### Removed
422
+
423
+ - Legacy `auth` configuration in `ControlPanelConfig` (use `guard` instead)
424
+ - Legacy `authMode`, `basicAuthUser`, `basicAuthPassword` in `GatewayConfig` (use `controlPanelGuard` instead)
425
+
426
+ ### Breaking Changes
427
+
428
+ - Applications using the old `auth` configuration must migrate to `guard`
429
+ - Applications using gateway `authMode` must migrate to `controlPanelGuard`
430
+
431
+ ## [1.1.5] - 2025-12-06
432
+
433
+ ### Fixed
434
+
435
+ - Fixed `file:` reference for `@qwickapps/react-framework` devDependency that prevented builds in public repo
436
+
437
+ ## [1.1.4] - 2025-12-06
438
+
439
+ ### Changed
440
+
441
+ - Updated repository and homepage URLs to point to public GitHub org (https://github.com/qwickapps/control-panel)
442
+
443
+ ## [1.1.3] - 2025-12-06
444
+
445
+ ### Fixed
446
+
447
+ - Fixed `workspace:*` reference in devDependencies that prevented npm publish
448
+
449
+ ## [1.1.2] - 2025-12-06
450
+
451
+ ### Added
452
+
453
+ - **Gateway Pattern**
454
+ - New `createGateway()` function for production deployments
455
+ - Gateway runs control panel on public port (3101) and proxies to internal API (3100)
456
+ - Control panel remains responsive even when internal service crashes
457
+ - Built-in HTTP proxy middleware using `http-proxy-middleware`
458
+ - Auto-generated or configurable basic auth for control panel access
459
+ - Graceful error responses when internal service is unavailable
460
+
461
+ ### Dependencies
462
+
463
+ - Added `http-proxy-middleware` ^3.0.3
464
+
465
+ ## [1.1.1] - 2025-11-29
466
+
467
+ ### Changed
468
+
469
+ - **Removed Supabase OAuth from core package**
470
+ - Server-side Supabase auth has been removed from @qwickapps/server
471
+ - Authentication should now be handled client-side using `@qwickapps/auth-client`
472
+ - This allows for better separation of concerns and reuse of existing auth infrastructure
473
+
474
+ ### Removed
475
+
476
+ - `SupabaseAuthConfig` type export
477
+ - `supabase-auth.ts` module
478
+ - `@supabase/supabase-js` dependency
479
+ - `cookie-parser` dependency
480
+ - Supabase auth provider option
481
+
482
+ ### Notes
483
+
484
+ - The `skipBodyParserPaths` feature is retained for proxy middleware support
485
+ - For authentication, use `@qwickapps/auth-client` with `SupabaseAuthProvider` in your React app
486
+
487
+ ## [1.1.0] - 2025-11-29
488
+
489
+ ### Added
490
+
491
+ - **Proxy Middleware Support**
492
+ - Added `skipBodyParserPaths` configuration option
493
+ - Allows control panel to act as a gateway with proxy middleware
494
+ - Prevents body parsing from consuming request body for proxied routes
495
+
496
+ ### Changed
497
+
498
+ - Body parsing now conditionally skips configured paths
499
+
500
+ ## [1.0.0] - 2025-11-28
501
+
502
+ ### Added
503
+
504
+ - **Core Framework**
505
+ - Express-based control panel with security middleware (Helmet, CORS, compression)
506
+ - Plugin architecture for extensible functionality
507
+ - Health check management system
508
+ - Basic dashboard UI with product branding
509
+
510
+ - **Authentication**
511
+ - Basic auth provider with username/password
512
+ - JWT auth provider
513
+ - Custom middleware auth provider
514
+
515
+ - **Plugins**
516
+ - Health plugin for service monitoring
517
+ - Diagnostics endpoint for system information
518
+
519
+ - **Built-in Routes**
520
+ - `GET /` - Dashboard UI
521
+ - `GET /api/health` - Aggregated health status
522
+ - `GET /api/diagnostics` - System diagnostics
523
+
524
+ ### Technical Details
525
+
526
+ - Written in TypeScript with full type exports
527
+ - ESM module format
528
+ - Express 4.x compatibility
package/README.md CHANGED
@@ -12,6 +12,15 @@ A flexible, pluggable control panel framework for QwickApps services. Provides a
12
12
  - **Frontend App Support**: Handle root path with redirect, static files, or landing page
13
13
  - **Theming**: Customizable branding and styling
14
14
 
15
+ ## What's New in v1.5.0
16
+
17
+ - **Notifications Plugin UI** - Full management page for SSE notifications with stats widget, connected clients table, and disconnect controls
18
+ - **Users Plugin Enhancements** - Multi-identifier user lookup (`getUserByIdentifier`), batch queries (`getUsersByIds`), and identifier linking
19
+ - **User Search & Ban Management** - Enhanced Control Panel with user search by email/name/ID and ban/unban actions
20
+ - **Audit Logging** - Admin actions now include user context (email, IP) for better traceability
21
+
22
+ See [CHANGELOG.md](./CHANGELOG.md) for full release history.
23
+
15
24
  ## Installation
16
25
 
17
26
  ```bash
@@ -1 +1 @@
1
- {"version":3,"file":"control-panel.d.ts","sourceRoot":"","sources":["../../src/core/control-panel.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,EAA4C,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAE5F,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EAGpB,MAAM,EACP,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,YAAY,EAElB,MAAM,sBAAsB,CAAC;AAuB9B,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,oBAAoB,CA+V3F"}
1
+ {"version":3,"file":"control-panel.d.ts","sourceRoot":"","sources":["../../src/core/control-panel.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,EAA4C,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAE5F,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EAGpB,MAAM,EACP,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,YAAY,EAElB,MAAM,sBAAsB,CAAC;AAuB9B,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,oBAAoB,CA8Y3F"}
@@ -308,6 +308,47 @@ export function createControlPanel(options) {
308
308
  logger.error(`Failed to start plugin: ${plugin.id}`);
309
309
  }
310
310
  }
311
+ // Register all routes with automatic ordering by path specificity
312
+ const routes = pluginRegistry.getRoutes();
313
+ // Sort routes by path specificity (longest first, wildcards last)
314
+ routes.sort((a, b) => {
315
+ // Wildcards last
316
+ const aWild = a.path.includes('*') ? 1 : 0;
317
+ const bWild = b.path.includes('*') ? 1 : 0;
318
+ if (aWild !== bWild)
319
+ return aWild - bWild;
320
+ // Longer paths first (more specific)
321
+ return b.path.length - a.path.length;
322
+ });
323
+ // Register routes with Express
324
+ logger.debug(`Registering ${routes.length} routes in priority order:`);
325
+ for (const route of routes) {
326
+ // TODO: Add auth middleware if route.auth?.required
327
+ // For now, just register the handler
328
+ // Auth will be handled by auth plugin middleware globally
329
+ const handlers = [route.handler];
330
+ switch (route.method) {
331
+ case 'get':
332
+ app.get(route.path, ...handlers);
333
+ break;
334
+ case 'post':
335
+ app.post(route.path, ...handlers);
336
+ break;
337
+ case 'put':
338
+ app.put(route.path, ...handlers);
339
+ break;
340
+ case 'delete':
341
+ app.delete(route.path, ...handlers);
342
+ break;
343
+ case 'patch':
344
+ app.patch(route.path, ...handlers);
345
+ break;
346
+ case 'use':
347
+ app.use(route.path, ...handlers);
348
+ break;
349
+ }
350
+ logger.debug(` ${route.method.toUpperCase()} ${route.path}`);
351
+ }
311
352
  return new Promise((resolve) => {
312
353
  server = app.listen(config.port, () => {
313
354
  logger.debug(`Control panel listening on port ${config.port}`);
@@ -1 +1 @@
1
- {"version":3,"file":"control-panel.js","sourceRoot":"","sources":["../../src/core/control-panel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"control-panel.js","sourceRoot":"","sources":["../../src/core/control-panel.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../src/core/guards.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAA0B,cAAc,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,KAAK,EACV,gBAAgB,EAIjB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,cAAc,CAazE;AAiID;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAUrD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,GAAG,IAAI,CAU7D"}
1
+ {"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../src/core/guards.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,OAAO,EAA0B,cAAc,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,KAAK,EACV,gBAAgB,EAIjB,MAAM,YAAY,CAAC;AAgEpB;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,cAAc,CAazE;AA2JD;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAUrD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,GAAG,IAAI,CAU7D"}