iobroker.eos-admin 7.9.92 → 7.9.93

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 (33) hide show
  1. package/INSTALL_TEST_V7.9.93.md +12 -0
  2. package/NEXOWATT_EOS_BUILD_INFO.json +18 -19
  3. package/{PUBLISH_STABLE_V7.9.92.md → PUBLISH_STABLE_V7.9.93.md} +4 -4
  4. package/README_STABILITY_V7.9.93.md +15 -0
  5. package/RELEASE_ACCEPTANCE_V7.9.93.md +15 -0
  6. package/RELEASE_NOTES_V7.9.93.md +10 -0
  7. package/adminWww/assets/Adapters-B5_jQ7DE-v84.js +1 -1
  8. package/adminWww/css/nexowatt-native-shell.css +154 -2
  9. package/adminWww/index.html +11 -11
  10. package/adminWww/js/eos-account-management.js +1 -1
  11. package/adminWww/js/eos-assistant.js +487 -55
  12. package/adminWww/js/eos-basic-settings.js +1 -1
  13. package/adminWww/js/eos-branding-sanitizer.js +3 -1
  14. package/adminWww/js/eos-native-security.js +1 -1
  15. package/adminWww/js/eos-policy-client.js +1 -1
  16. package/adminWww/js/eos-role-bootstrap.js +2 -2
  17. package/adminWww/js/eos-role-ui.js +1 -1
  18. package/adminWww/js/nexowatt-native-shell.js +1 -1
  19. package/build/lib/chat/assistantKnowledge.js +21 -6
  20. package/build/lib/chat/chatOrchestrator.js +33 -38
  21. package/build/lib/chat/mcpClientManager.js +1 -1
  22. package/build/main.js +307 -1
  23. package/io-package.json +13 -8
  24. package/package.json +9 -9
  25. package/tools/nexowatt-account-management-selftest.cjs +1 -1
  26. package/tools/nexowatt-internal-reserve-selftest.cjs +3 -1
  27. package/tools/nexowatt-login-layout-selftest.cjs +19 -38
  28. package/tools/nexowatt-modern-ui-selftest.cjs +1 -1
  29. package/tools/nexowatt-validate-package.cjs +5 -5
  30. package/INSTALL_TEST_V7.9.92.md +0 -18
  31. package/README_STABILITY_V7.9.92.md +0 -14
  32. package/RELEASE_ACCEPTANCE_V7.9.92.md +0 -12
  33. package/RELEASE_NOTES_V7.9.92.md +0 -17
@@ -96,13 +96,22 @@ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#password) {
96
96
  max-width: none !important;
97
97
  max-height: none !important;
98
98
  padding: 28px !important;
99
- overflow: auto !important;
99
+ overflow: hidden !important;
100
+ scrollbar-width: none !important;
100
101
  border-radius: 24px !important;
101
102
  color: var(--nx-text) !important;
102
103
  background: linear-gradient(180deg, rgba(14, 36, 56, .97), rgba(4, 15, 27, .96)) !important;
103
104
  border: 1px solid var(--nx-border-accent) !important;
104
105
  box-shadow: 0 18px 44px rgba(0, 0, 0, .34), inset 0 1px 0 rgba(255, 255, 255, .035) !important;
105
106
  }
107
+
108
+ html.eos-login .eos-login-card-modern::-webkit-scrollbar,
109
+ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#username)::-webkit-scrollbar,
110
+ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#password)::-webkit-scrollbar {
111
+ display: none !important;
112
+ width: 0 !important;
113
+ height: 0 !important;
114
+ }
106
115
  html.eos-login img[src*="admin"],
107
116
  html.eos-login .MuiAvatar-img { object-fit: contain !important; filter: drop-shadow(0 0 18px rgba(0,255,136,.35)); }
108
117
 
@@ -891,7 +900,8 @@ html.eos-login .eos-login-card-modern {
891
900
  min-height: 0 !important;
892
901
  max-width: none !important;
893
902
  max-height: none !important;
894
- overflow: auto !important;
903
+ overflow: hidden !important;
904
+ scrollbar-width: none !important;
895
905
  }
896
906
  .eos-login-role-selector {
897
907
  display: none !important;
@@ -1291,3 +1301,145 @@ html.eos-route-intro #app-paper [class*="card"] {
1291
1301
  .eos-account-management-entry { margin: 9px; padding: 19px; border-radius: 18px; }
1292
1302
  .eos-assist-header-root .eos-assist-panel { right: 8px !important; width: calc(100vw - 16px); }
1293
1303
  }
1304
+
1305
+ /* v93 EOS Assist – live, role-aware system assistant in the fixed header. */
1306
+ .eos-assist-header-root .eos-assist-panel {
1307
+ display: flex;
1308
+ flex-direction: column;
1309
+ width: min(520px, calc(100vw - 32px));
1310
+ max-height: min(720px, calc(100vh - var(--nx-content-top) - 12px));
1311
+ overflow: hidden !important;
1312
+ }
1313
+ .eos-assist-toolbar {
1314
+ display: flex;
1315
+ justify-content: space-between;
1316
+ gap: 8px;
1317
+ margin-top: 12px;
1318
+ }
1319
+ .eos-assist-toolbar button,
1320
+ .eos-assist-settings-actions button {
1321
+ min-height: 34px;
1322
+ padding: 7px 11px;
1323
+ color: #dcf8ff;
1324
+ font-size: 11px;
1325
+ font-weight: 800;
1326
+ border: 1px solid rgba(69, 213, 255, .2);
1327
+ border-radius: 10px;
1328
+ background: rgba(7, 27, 41, .78);
1329
+ cursor: pointer;
1330
+ }
1331
+ .eos-assist-toolbar button:hover,
1332
+ .eos-assist-settings-actions button:hover { border-color: rgba(0, 229, 138, .48); }
1333
+ .eos-assist-conversation {
1334
+ display: flex;
1335
+ flex: 1 1 auto;
1336
+ min-height: 0;
1337
+ flex-direction: column;
1338
+ }
1339
+ .eos-assist-transcript {
1340
+ flex: 1 1 auto;
1341
+ min-height: 150px;
1342
+ max-height: 390px;
1343
+ margin-top: 12px;
1344
+ padding: 10px;
1345
+ overflow-y: auto;
1346
+ overscroll-behavior: contain;
1347
+ border: 1px solid rgba(0, 212, 255, .16);
1348
+ border-radius: 15px;
1349
+ background: rgba(0, 6, 12, .32);
1350
+ scrollbar-width: thin;
1351
+ scrollbar-color: rgba(0, 229, 138, .5) rgba(3, 16, 27, .7);
1352
+ }
1353
+ .eos-assist-welcome {
1354
+ padding: 17px 12px;
1355
+ color: #99b9c7;
1356
+ font-size: 12px;
1357
+ line-height: 1.55;
1358
+ text-align: center;
1359
+ }
1360
+ .eos-assist-message {
1361
+ max-width: 92%;
1362
+ margin: 0 0 9px;
1363
+ padding: 10px 12px;
1364
+ color: #edfaff;
1365
+ font-size: 12px;
1366
+ line-height: 1.52;
1367
+ white-space: pre-wrap;
1368
+ overflow-wrap: anywhere;
1369
+ border: 1px solid rgba(69, 213, 255, .14);
1370
+ border-radius: 14px;
1371
+ background: rgba(9, 31, 45, .72);
1372
+ }
1373
+ .eos-assist-message strong { display: block; margin-bottom: 4px; color: #00e58a; font-size: 10px; text-transform: uppercase; letter-spacing: .08em; }
1374
+ .eos-assist-message-user { margin-left: auto; border-color: rgba(0, 229, 138, .2); background: rgba(0, 98, 78, .24); }
1375
+ .eos-assist-message-error { border-color: rgba(255, 174, 66, .34); background: rgba(102, 58, 5, .25); }
1376
+ .eos-assist-message-error strong { color: #ffc56b; }
1377
+ .eos-assist-message a { color: #51dcff; font-weight: 800; text-decoration: underline; }
1378
+ .eos-assist-input-row { align-items: stretch; }
1379
+ .eos-assist-input {
1380
+ min-height: 48px;
1381
+ max-height: 110px;
1382
+ resize: vertical;
1383
+ font: inherit;
1384
+ line-height: 1.4;
1385
+ }
1386
+ .eos-assist-send { min-width: 82px; }
1387
+ .eos-assist-send:disabled { cursor: progress; opacity: .62; }
1388
+ .eos-assist-status {
1389
+ margin-top: 10px;
1390
+ padding-top: 9px;
1391
+ color: #8eaeba;
1392
+ font-size: 10px;
1393
+ line-height: 1.35;
1394
+ border-top: 1px solid rgba(69, 213, 255, .1);
1395
+ }
1396
+ .eos-assist-status[data-kind="ready"] { color: #71eeb9; }
1397
+ .eos-assist-status[data-kind="warning"] { color: #ffc56b; }
1398
+ .eos-assist-status[data-kind="error"] { color: #ff8b8b; }
1399
+ .eos-assist-settings {
1400
+ display: none;
1401
+ flex: 1 1 auto;
1402
+ min-height: 0;
1403
+ margin-top: 12px;
1404
+ padding: 12px;
1405
+ overflow-y: auto;
1406
+ border: 1px solid rgba(0, 229, 138, .18);
1407
+ border-radius: 15px;
1408
+ background: rgba(0, 8, 15, .36);
1409
+ }
1410
+ .eos-assist-settings-open .eos-assist-conversation { display: none; }
1411
+ .eos-assist-settings-open .eos-assist-settings { display: grid; gap: 10px; }
1412
+ .eos-assist-settings label { display: grid; gap: 5px; color: #9fc0cc; font-size: 11px; font-weight: 750; }
1413
+ .eos-assist-settings input,
1414
+ .eos-assist-settings select {
1415
+ width: 100%;
1416
+ min-height: 37px;
1417
+ box-sizing: border-box;
1418
+ padding: 7px 9px;
1419
+ color: #eafaff;
1420
+ border: 1px solid rgba(69, 213, 255, .2);
1421
+ border-radius: 9px;
1422
+ background: #061724;
1423
+ outline: none;
1424
+ }
1425
+ .eos-assist-settings input:focus,
1426
+ .eos-assist-settings select:focus { border-color: rgba(0, 229, 138, .58); box-shadow: 0 0 0 2px rgba(0, 229, 138, .08); }
1427
+ .eos-assist-settings .eos-assist-check { display: flex; align-items: center; gap: 8px; }
1428
+ .eos-assist-settings .eos-assist-check input { width: 18px; min-height: 18px; }
1429
+ .eos-assist-base-url-label { display: none !important; }
1430
+ .eos-assist-custom-provider .eos-assist-base-url-label { display: grid !important; }
1431
+ .eos-assist-settings-actions { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 8px; }
1432
+ .eos-assist-settings-actions .eos-assist-save { color: #00151c; border: 0; background: linear-gradient(135deg, #00e58a, #45d5ff); }
1433
+ .eos-assist-not-configured .eos-assist-dot { background: #ffc34d; box-shadow: 0 0 12px rgba(255, 195, 77, .9); }
1434
+ @media (max-width: 620px) {
1435
+ .eos-assist-header-root .eos-assist-panel {
1436
+ top: calc(var(--nx-shell-top) + var(--nx-header-h) + 5px) !important;
1437
+ right: 7px !important;
1438
+ width: calc(100vw - 14px);
1439
+ max-height: calc(100vh - var(--nx-header-h) - 20px);
1440
+ padding: 13px;
1441
+ }
1442
+ .eos-assist-transcript { max-height: 45vh; }
1443
+ .eos-assist-input-row { flex-direction: column; }
1444
+ .eos-assist-send { min-height: 40px; }
1445
+ }
@@ -8,7 +8,7 @@
8
8
  <meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate" />
9
9
  <meta http-equiv="Pragma" content="no-cache" />
10
10
  <meta http-equiv="Expires" content="0" />
11
- <script src="./js/eos-manual-write-policy.js?v=91"></script>
11
+ <script src="./js/eos-manual-write-policy.js?v=93"></script>
12
12
  <script type="module" src="./assets/hostInit-v84.js?v=84"></script>
13
13
 
14
14
  <meta charset="utf-8" />
@@ -36,7 +36,7 @@
36
36
  rel="stylesheet"
37
37
  href="css/leaflet.css"
38
38
  />
39
- <link rel="stylesheet" href="./css/nexowatt-native-shell.css?v=91" />
39
+ <link rel="stylesheet" href="./css/nexowatt-native-shell.css?v=93" />
40
40
  <link
41
41
  rel="manifest"
42
42
  href="manifest.json"
@@ -158,15 +158,15 @@
158
158
  </script>
159
159
  <link rel="modulepreload" crossorigin href="./assets/preload-helper-BDBacUwf.js">
160
160
  <link rel="modulepreload" crossorigin href="./assets/iobroker_admin__mf_v__runtimeInit__mf_v__-g2X2zhAf.js">
161
- <script defer src="./js/eos-role-bootstrap.js?v=91" data-eos-entry="./assets/index-CQZugZ1z-v84.js?v=84"></script>
162
- <script defer src="./js/eos-policy-client.js?v=91"></script>
163
- <script defer src="./js/eos-branding-sanitizer.js?v=91"></script>
164
- <script defer src="./js/nexowatt-native-shell.js?v=91"></script>
165
- <script defer src="./js/eos-native-security.js?v=91"></script>
166
- <script defer src="./js/eos-basic-settings.js?v=91"></script>
167
- <script defer src="./js/eos-role-ui.js?v=91"></script>
168
- <script defer src="./js/eos-account-management.js?v=91"></script>
169
- <script defer src="./js/eos-assistant.js?v=91"></script>
161
+ <script defer src="./js/eos-role-bootstrap.js?v=93" data-eos-entry="./assets/index-CQZugZ1z-v84.js?v=84"></script>
162
+ <script defer src="./js/eos-policy-client.js?v=93"></script>
163
+ <script defer src="./js/eos-branding-sanitizer.js?v=93"></script>
164
+ <script defer src="./js/nexowatt-native-shell.js?v=93"></script>
165
+ <script defer src="./js/eos-native-security.js?v=93"></script>
166
+ <script defer src="./js/eos-basic-settings.js?v=93"></script>
167
+ <script defer src="./js/eos-role-ui.js?v=93"></script>
168
+ <script defer src="./js/eos-account-management.js?v=93"></script>
169
+ <script defer src="./js/eos-assistant.js?v=93"></script>
170
170
  </head>
171
171
  <body>
172
172
  <noscript>Für NexoWatt EOS muss JavaScript aktiviert sein.</noscript>
@@ -1,7 +1,7 @@
1
1
  (() => {
2
2
  'use strict';
3
3
 
4
- const VERSION = 'v91-account-management-under-access-rights';
4
+ const VERSION = 'v93-account-management-under-access-rights';
5
5
  const script = document.currentScript || document.querySelector('script[src*="eos-account-management.js"]');
6
6
  const base = new URL('../', script?.src || window.location.href);
7
7
  const abort = new AbortController();