p3x-redis-ui 2026.4.1005 → 2026.4.1007

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.
package/CLAUDE.md CHANGED
@@ -51,7 +51,7 @@ All my domains, including [patrikx3.com](https://patrikx3.com), [corifeus.eu](ht
51
51
  ---
52
52
 
53
53
 
54
- [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1005
54
+ [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1007
55
55
 
56
56
  [![NPM](https://img.shields.io/npm/v/p3x-redis-ui.svg)](https://www.npmjs.com/package/p3x-redis-ui) [![Donate for PatrikX3 / P3X](https://img.shields.io/badge/Donate-PatrikX3-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software)
57
57
 
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- # 📡 P3X Redis UI: A highly functional and convenient database GUI that fits in your pocket, accessible on both responsive web and desktop applications v2026.4.1005
9
+ # 📡 P3X Redis UI: A highly functional and convenient database GUI that fits in your pocket, accessible on both responsive web and desktop applications v2026.4.1007
10
10
 
11
11
 
12
12
 
@@ -71,18 +71,25 @@ Arabic (`ar`), Azerbaijani (`az`), Belarusian (`be`), Bengali (`bn`), Bosnian (`
71
71
 
72
72
  ![P3X Redis UI Demo](artifacts/demo.gif)
73
73
 
74
+ ## Live Demo
75
+
76
+ Try the latest version at [p3x.redis.patrikx3.com](https://p3x.redis.patrikx3.com).
77
+
78
+ - **Daily data reset:** the Redis database restores certain datasets every morning (CET)
79
+ - **Brief downtime:** occasional ~1 second interruptions may occur due to automatic updates from Git changes
80
+ - **Version differences:** the live instance may differ from the GitHub or NPM release; updates are typically published monthly
81
+
74
82
  ## Features
75
83
 
76
84
  ### Triple GUI: Angular + React + Vue
77
85
 
78
- P3X Redis UI was originally built with AngularJS and has been fully migrated to three modern frontends — **Angular**, **React/MUI**, and **Vue/Vuetify**. You can switch between them live in **Settings → GUI**.
86
+ P3X Redis UI was originally built with AngularJS and has been fully migrated to three modern frontends — **Angular**, **React/MUI**, and **Vue/Vuetify** — all at full feature parity. You can switch between them live in **Settings → GUI**.
79
87
 
80
- - **Angular** is served at `/ng/`
81
- - **React** is served at `/react/`
82
- - **Vue** is served at `/vue/`
88
+ - **Angular** (`/ng/`) Angular CLI with esbuild, CDK virtual scrolling, standalone components with signals
89
+ - **React** (`/react/`) Zustand state management, @tanstack/react-virtual, MUI (Material UI), Vite
90
+ - **Vue** (`/vue/`) Pinia state management, Vue 3 Composition API, Vuetify, Vite
83
91
  - `/` auto-redirects to your last used frontend
84
- - Switch anytime from the GUI toggle in Settings your preference is remembered
85
- - Both frontends share the same backend, Socket.IO protocol, translation system, themes, and all features
92
+ - **Shared across all three:** same Socket.IO protocol, same 54-language translation system, same 7 themes (4 dark + 3 light), Web Worker tree building, Playwright E2E tests
86
93
  - Works in the Electron desktop app, Docker, and standalone server
87
94
 
88
95
  ### AI-Powered Redis Query Translation
@@ -315,26 +322,6 @@ Three dedicated tabs accessible from the monitoring page:
315
322
  - **Sub-directory support:** use Nginx/Ingress path rewriting — see [Issue #43](https://github.com/patrikx3/redis-ui/issues/43)
316
323
  - **Cluster support:** continuously improving, with significant contributions by [@devthejo](https://github.com/devthejo)
317
324
 
318
- ### Modern Dual Frontend Architecture
319
- The UI has been fully migrated from AngularJS (1.x) to two modern frontends — **Angular** and **React/MUI** — both at full feature parity:
320
-
321
- **Angular frontend** (`/ng/`):
322
- - **Angular CLI with esbuild** — near-instant dev recompiles and optimized production builds
323
- - **CDK virtual scrolling** — tree view renders only visible rows for O(visible) DOM performance
324
- - **Standalone components** — Angular signals, Angular Material, and lazy-loaded routes
325
-
326
- **React frontend** (`/react/`):
327
- - **Zustand state management** — lightweight stores replacing Angular services
328
- - **@tanstack/react-virtual** — virtual scrolling for tree view and large lists
329
- - **MUI (Material UI)** — React component library matching Angular Material's look and feel
330
- - **Vite** — instant dev server startup and fast production builds
331
-
332
- **Shared across both:**
333
- - **Web Worker tree building** — key sorting and tree construction run off the main thread, keeping the UI responsive with large key sets
334
- - **Same Socket.IO protocol** — both frontends use the identical backend API
335
- - **Same translation system** — 54 languages shared from a single source
336
- - **Same 7 themes** — 4 dark + 3 light, with auto system preference detection
337
- - **E2E tested** — Playwright tests run against both frontends in parallel
338
325
 
339
326
  ### RediSearch Full-Text Search
340
327
  - **Search page:** full-text search UI with index selector, query input, and paginated results — only visible when RediSearch module is detected
@@ -405,6 +392,15 @@ The UI has been fully migrated from AngularJS (1.x) to two modern frontends —
405
392
  ### ES Modules Backend
406
393
  The server codebase has been fully migrated from CommonJS to **ES Modules** (`.mjs`), enabling native Node.js ESM support and better tree-shaking.
407
394
 
395
+ ### ACL Management (Redis 6.0+)
396
+ - **User list** — view all ACL users with status (enabled/disabled), current user indicator, and rules summary
397
+ - **Create / Edit / Delete** — full ACL user management via a dialog with chip-based rule editing
398
+ - **Chip inputs** — commands, key patterns, and pub/sub channels are entered as chips with placeholder hints
399
+ - **Deny highlighting** — commands starting with `-` (e.g. `-@dangerous`) are visually highlighted with the warning color
400
+ - **Default user warning** — editing the `default` user shows an inline warning alert explaining the risk of locking out connections
401
+ - **Save confirmation** — every ACL save shows a themed confirm dialog
402
+ - **Consistent across GUIs** — identical chip styling, layout, and behavior in Angular, React, and Vue
403
+
408
404
  ### Security
409
405
  - **Secure configuration:** passwords and sensitive data are protected with unique identifiers for both main and node configurations
410
406
 
@@ -538,14 +534,6 @@ Example:
538
534
  Restart the server after changing `p3xrs.json`.
539
535
  -->
540
536
 
541
- ## Live Demo
542
-
543
- Try the latest version at [p3x.redis.patrikx3.com](https://p3x.redis.patrikx3.com).
544
-
545
- - **Daily data reset:** the Redis database restores certain datasets every morning (CET)
546
- - **Brief downtime:** occasional ~1 second interruptions may occur due to automatic updates from Git changes
547
- - **Version differences:** the live instance may differ from the GitHub or NPM release; updates are typically published monthly
548
-
549
537
  ## Installation
550
538
 
551
539
  ### Releases / Downloads
@@ -725,8 +713,9 @@ This application uses Socket.IO instead of REST for client-server communication.
725
713
  Browser / Electron App / VS Code Extension
726
714
 
727
715
  redis-ui-material
728
- ├── Angular frontend (/ng/) — Angular + Angular Material + Webpack
729
- └── React frontend (/react/) — React + MUI + Vite + Zustand
716
+ ├── Angular frontend (/ng/) — Angular + Angular Material
717
+ ├── React frontend (/react/) — React + MUI + Vite + Zustand
718
+ └── Vue frontend (/vue/) — Vue 3 + Vuetify + Vite + Pinia
730
719
  ↓ Socket.IO + HTTP
731
720
  redis-ui-server (Express + ioredis)
732
721
 
@@ -812,7 +801,7 @@ All my domains, including [patrikx3.com](https://patrikx3.com), [corifeus.eu](ht
812
801
  ---
813
802
 
814
803
 
815
- [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1005
804
+ [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1007
816
805
 
817
806
  [![NPM](https://img.shields.io/npm/v/p3x-redis-ui.svg)](https://www.npmjs.com/package/p3x-redis-ui) [![Donate for PatrikX3 / P3X](https://img.shields.io/badge/Donate-PatrikX3-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software)
818
807
 
@@ -126,7 +126,7 @@ All my domains, including [patrikx3.com](https://patrikx3.com), [corifeus.eu](ht
126
126
  ---
127
127
 
128
128
 
129
- [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1005
129
+ [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1007
130
130
 
131
131
  [![NPM](https://img.shields.io/npm/v/p3x-redis-ui.svg)](https://www.npmjs.com/package/p3x-redis-ui) [![Donate for PatrikX3 / P3X](https://img.shields.io/badge/Donate-PatrikX3-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software)
132
132
 
@@ -295,7 +295,7 @@ All my domains, including [patrikx3.com](https://patrikx3.com), [corifeus.eu](ht
295
295
  ---
296
296
 
297
297
 
298
- [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1005
298
+ [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1007
299
299
 
300
300
  [![NPM](https://img.shields.io/npm/v/p3x-redis-ui.svg)](https://www.npmjs.com/package/p3x-redis-ui) [![Donate for PatrikX3 / P3X](https://img.shields.io/badge/Donate-PatrikX3-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software)
301
301
 
@@ -689,7 +689,7 @@ All my domains, including [patrikx3.com](https://patrikx3.com), [corifeus.eu](ht
689
689
  ---
690
690
 
691
691
 
692
- [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1005
692
+ [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1007
693
693
 
694
694
  [![NPM](https://img.shields.io/npm/v/p3x-redis-ui.svg)](https://www.npmjs.com/package/p3x-redis-ui) [![Donate for PatrikX3 / P3X](https://img.shields.io/badge/Donate-PatrikX3-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software)
695
695
 
@@ -338,7 +338,7 @@ All my domains, including [patrikx3.com](https://patrikx3.com), [corifeus.eu](ht
338
338
  ---
339
339
 
340
340
 
341
- [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1005
341
+ [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1007
342
342
 
343
343
  [![NPM](https://img.shields.io/npm/v/p3x-redis-ui.svg)](https://www.npmjs.com/package/p3x-redis-ui) [![Donate for PatrikX3 / P3X](https://img.shields.io/badge/Donate-PatrikX3-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software)
344
344
 
@@ -85,7 +85,7 @@ All my domains, including [patrikx3.com](https://patrikx3.com), [corifeus.eu](ht
85
85
  ---
86
86
 
87
87
 
88
- [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1005
88
+ [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1007
89
89
 
90
90
  [![NPM](https://img.shields.io/npm/v/p3x-redis-ui.svg)](https://www.npmjs.com/package/p3x-redis-ui) [![Donate for PatrikX3 / P3X](https://img.shields.io/badge/Donate-PatrikX3-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software)
91
91
 
@@ -122,7 +122,7 @@ All my domains, including [patrikx3.com](https://patrikx3.com), [corifeus.eu](ht
122
122
  ---
123
123
 
124
124
 
125
- [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1005
125
+ [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1007
126
126
 
127
127
  [![NPM](https://img.shields.io/npm/v/p3x-redis-ui.svg)](https://www.npmjs.com/package/p3x-redis-ui) [![Donate for PatrikX3 / P3X](https://img.shields.io/badge/Donate-PatrikX3-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software)
128
128
 
@@ -466,7 +466,7 @@ All my domains, including [patrikx3.com](https://patrikx3.com), [corifeus.eu](ht
466
466
  ---
467
467
 
468
468
 
469
- [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1005
469
+ [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1007
470
470
 
471
471
  [![NPM](https://img.shields.io/npm/v/p3x-redis-ui.svg)](https://www.npmjs.com/package/p3x-redis-ui) [![Donate for PatrikX3 / P3X](https://img.shields.io/badge/Donate-PatrikX3-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software)
472
472
 
@@ -94,7 +94,7 @@ All my domains, including [patrikx3.com](https://patrikx3.com), [corifeus.eu](ht
94
94
  ---
95
95
 
96
96
 
97
- [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1005
97
+ [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1007
98
98
 
99
99
  [![NPM](https://img.shields.io/npm/v/p3x-redis-ui.svg)](https://www.npmjs.com/package/p3x-redis-ui) [![Donate for PatrikX3 / P3X](https://img.shields.io/badge/Donate-PatrikX3-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software)
100
100
 
package/change-log.md CHANGED
@@ -5,6 +5,22 @@
5
5
 
6
6
  [//]: #@corifeus-header:end
7
7
 
8
+ ### v2026.4.1006
9
+ Released on 04/15/2026
10
+ * FEATURE: Added network.corifeus.com promo toast for demo site with dynamic hide delay and disclaimer.
11
+ * BUGFIX: Fixed connection readonly mode broken by stale isProOrEnterpriseTier() call.
12
+ * BUGFIX: Added googletagmanager.com to CSP connect-src for analytics across all frameworks.
13
+ * DOCS: Updated README with triple frontend architecture, Vue sections, and ACL management documentation.
14
+
15
+ ### v2026.4.1005
16
+ Released on 04/13/2026
17
+ * FEATURE: ACL UX improvements — auth hint, credential hiding in askAuth dialog, shared connect, and layout alignment.
18
+ * FEATURE: ACL chip autocomplete with grouped suggestions for commands, keys, and channels.
19
+ * FEATURE: ACL editor consistency — chip styling and confirm dialog for destructive operations.
20
+ * FEATURE: ACL chip theme-awareness across all UI frameworks.
21
+ * FEATURE: Removed all translation string fallbacks across all three GUI frameworks.
22
+ * BUGFIX: ACL warning icons now display correctly.
23
+
8
24
  ### v2026.4.1004
9
25
  Released on 04/13/2026
10
26
  * FEATURE: ACL default user warning when editing the default account, with translations across all supported languages.
@@ -742,7 +758,7 @@ All my domains, including [patrikx3.com](https://patrikx3.com), [corifeus.eu](ht
742
758
  ---
743
759
 
744
760
 
745
- [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1005
761
+ [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1007
746
762
 
747
763
  [![NPM](https://img.shields.io/npm/v/p3x-redis-ui.svg)](https://www.npmjs.com/package/p3x-redis-ui) [![Donate for PatrikX3 / P3X](https://img.shields.io/badge/Donate-PatrikX3-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software)
748
764
 
package/contributors.md CHANGED
@@ -56,7 +56,7 @@ All my domains, including [patrikx3.com](https://patrikx3.com), [corifeus.eu](ht
56
56
  ---
57
57
 
58
58
 
59
- [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1005
59
+ [**P3X-REDIS-UI**](https://corifeus.com/redis-ui) Build v2026.4.1007
60
60
 
61
61
  [![NPM](https://img.shields.io/npm/v/p3x-redis-ui.svg)](https://www.npmjs.com/package/p3x-redis-ui) [![Donate for PatrikX3 / P3X](https://img.shields.io/badge/Donate-PatrikX3-003087.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QZVM4V6HVZJW6) [![Contact Corifeus / P3X](https://img.shields.io/badge/Contact-P3X-ff9900.svg)](https://www.patrikx3.com/en/front/contact) [![Like Corifeus @ Facebook](https://img.shields.io/badge/LIKE-Corifeus-3b5998.svg)](https://www.facebook.com/corifeus.software)
62
62
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "p3x-redis-ui",
3
- "version": "2026.4.1005",
3
+ "version": "2026.4.1007",
4
4
  "description": "📡 P3X Redis UI: A highly functional and convenient database GUI that fits in your pocket, accessible on both responsive web and desktop applications",
5
5
  "corifeus": {
6
6
  "description-snap": "P3X Redis UI: A highly functional and convenient database GUI that fits in your pocket, accessible on both responsive web and desktop applications",
@@ -72,7 +72,7 @@
72
72
  "axios": "^1.15.0",
73
73
  "copyfiles": "^2.4.1",
74
74
  "corifeus-builder": "^2026.4.139",
75
- "electron": "^41.2.0",
75
+ "electron": "^41.2.1",
76
76
  "electron-builder": "^26.8.1",
77
77
  "node-fetch": "^3.3.2",
78
78
  "playwright": "^1.59.1",
@@ -87,8 +87,8 @@
87
87
  "corifeus-utils": "^2025.4.123",
88
88
  "electron-store": "^11.0.2",
89
89
  "electron-updater": "^6.8.3",
90
- "p3x-redis-ui-material": "^2026.4.439",
91
- "p3x-redis-ui-server": "^2026.4.361"
90
+ "p3x-redis-ui-material": "^2026.4.441",
91
+ "p3x-redis-ui-server": "^2026.4.363"
92
92
  },
93
93
  "build-save": {
94
94
  "mac": {
package/src/app.mjs CHANGED
@@ -114,7 +114,7 @@ const execAsync = async() => {
114
114
  })
115
115
 
116
116
  const { default: createWindow } = await import('./electron/module/create/window.mjs');
117
- const rendererCsp = "default-src 'self'; script-src 'self' https://www.googletagmanager.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https://www.googletagmanager.com https://www.google-analytics.com; font-src 'self' data:; connect-src 'self' http://localhost:* http://127.0.0.1:* ws://localhost:* ws://127.0.0.1:* https://www.google-analytics.com https://region1.google-analytics.com https://analytics.google.com; worker-src 'self' blob:; child-src 'self' http://localhost:* http://127.0.0.1:*; object-src 'none'; base-uri 'self'; form-action 'self'";
117
+ const rendererCsp = "default-src 'self'; script-src 'self' https://www.googletagmanager.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https://www.googletagmanager.com https://www.google-analytics.com; font-src 'self' data:; connect-src 'self' http://localhost:* http://127.0.0.1:* ws://localhost:* ws://127.0.0.1:* https://www.googletagmanager.com https://www.google-analytics.com https://region1.google-analytics.com https://analytics.google.com; worker-src 'self' blob:; child-src 'self' http://localhost:* http://127.0.0.1:*; object-src 'none'; base-uri 'self'; form-action 'self'";
118
118
 
119
119
  app.on('ready', () => {
120
120
  session.defaultSession.webRequest.onHeadersReceived((details, callback) => {
@@ -18,51 +18,17 @@ async function mainMenu() {
18
18
  label: global.p3xre.strings.title,
19
19
  submenu: [
20
20
  {
21
- label: global.p3xre.strings.menu.main.home,
22
- submenu: [
23
- {
24
- label: 'Angular',
25
- type: 'radio',
26
- checked: currentFrontend !== 'react',
27
- click: () => switchFrontend('ng'),
28
- },
29
- {
30
- label: 'React',
31
- type: 'radio',
32
- checked: currentFrontend === 'react',
33
- click: () => switchFrontend('react'),
34
- },
35
- ],
21
+ label: 'Angular',
22
+ click: () => switchFrontend('ng'),
36
23
  },
37
24
  {
38
- label: global.p3xre.strings.menu.main.settings,
39
- submenu: [
40
- {
41
- label: 'Angular',
42
- click: () => {
43
- global.p3xre.mainWindow.webContents.send('p3x-menu', {
44
- action: 'settings'
45
- })
46
- },
47
- },
48
- {
49
- label: 'React',
50
- click: () => {
51
- switchFrontend('react')
52
- },
53
- },
54
- ],
25
+ label: 'React',
26
+ click: () => switchFrontend('react'),
55
27
  },
56
- /*
57
28
  {
58
- label: global.p3xre.strings.menu.main.overview,
59
- click: () => {
60
- global.p3xre.mainWindow.webContents.send('p3x-menu', {
61
- action: 'overview'
62
- })
63
- }
29
+ label: 'Vue',
30
+ click: () => switchFrontend('vue'),
64
31
  },
65
- */
66
32
  {type: 'separator'},
67
33
  {
68
34
  label: global.p3xre.strings.menu.main.quit,
@@ -87,6 +87,7 @@ ipcRenderer.on('p3x-set-language', (event, data) => {
87
87
  return;
88
88
  }
89
89
  const translation = data.translation
90
+ if (translation === 'auto') return
90
91
  const stringsModule = await import(`../../../strings/${translation}/index.mjs`)
91
92
  global.p3xre.strings = stringsModule.default
92
93
  global.p3xre.iframe.contentWindow.postMessage({ type: 'p3x-set-language', translation: translation }, '*')
@@ -261,9 +262,9 @@ window.p3xreRun = async function () {
261
262
  serverUrl = await waitForServer(getCurrentLocalServerUrl())
262
263
  }
263
264
 
264
- // Append /react/ or /ng/ based on stored frontend preference
265
+ // Append /react/, /vue/, or /ng/ based on stored frontend preference
265
266
  const frontendPref = uiStateStore.get('p3xr-frontend', 'ng')
266
- const frontendPath = frontendPref === 'react' ? '/react/' : '/ng/'
267
+ const frontendPath = frontendPref === 'react' ? '/react/' : frontendPref === 'vue' ? '/vue/' : '/ng/'
267
268
  global.p3xre.iframe.src = getIframeUrlWithUiState(serverUrl + frontendPath)
268
269
 
269
270
  } catch (e) {