iobroker.eos-admin 7.9.93 → 7.9.96

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 (55) hide show
  1. package/INSTALL_TEST_V7.9.96.md +11 -0
  2. package/MERGE_UPDATE_README_V7.9.96.md +5 -0
  3. package/NEXOWATT_EOS_BUILD_INFO.json +19 -19
  4. package/NexoWatt_EOS_Admin_EMS_OVERVIEW_MERGE_VALIDATION.md +44 -0
  5. package/PUBLISH_STABLE_V7.9.96.md +10 -0
  6. package/RC73_EOS_ADMIN_MERGE_VALIDATION.md +78 -0
  7. package/README_EMS_OVERVIEW_MERGE.md +45 -0
  8. package/README_STABILITY_V7.9.96.md +11 -0
  9. package/RELEASE_ACCEPTANCE_V7.9.96.md +10 -0
  10. package/RELEASE_NOTES_V7.9.96.md +12 -0
  11. package/VALIDATION_EMS_OVERVIEW_MERGE.md +35 -0
  12. package/adminWww/assets/Adapters-B5_jQ7DE-v84.js +1 -1
  13. package/adminWww/assets/Intro-DkwRiz1n-v84.js +2 -2
  14. package/adminWww/assets/index-D2ymscJA-v84.js +1 -1
  15. package/adminWww/css/eos-ems-overview.css +62 -0
  16. package/adminWww/css/nexowatt-native-shell.css +104 -158
  17. package/adminWww/index.html +15 -11
  18. package/adminWww/js/eos-account-management.js +1 -1
  19. package/adminWww/js/eos-assistant.js +5 -556
  20. package/adminWww/js/eos-basic-settings.js +1 -1
  21. package/adminWww/js/eos-branding-sanitizer.js +1 -3
  22. package/adminWww/js/eos-ems-overview.js +140 -0
  23. package/adminWww/js/eos-native-security.js +1 -1
  24. package/adminWww/js/eos-policy-client.js +1 -1
  25. package/adminWww/js/eos-role-bootstrap.js +4 -4
  26. package/adminWww/js/eos-role-ui.js +34 -38
  27. package/adminWww/js/nexowatt-native-shell.js +11 -6
  28. package/adminWww/static/js/nexowatt-stable-login.js +79 -0
  29. package/adminWww/static/js/nexowatt-stable-v96.js +82 -0
  30. package/build/lib/chat/assistantKnowledge.js +6 -21
  31. package/build/lib/chat/chatOrchestrator.js +38 -33
  32. package/build/lib/chat/mcpClientManager.js +1 -1
  33. package/build/lib/nexowattStableAuth.js +74 -0
  34. package/build/lib/web.js +24 -7
  35. package/build/main.js +123 -308
  36. package/io-package.json +25 -16
  37. package/package.json +32 -15
  38. package/tools/nexowatt-account-management-selftest.cjs +2 -3
  39. package/tools/nexowatt-apply-ems-overview.cjs +115 -0
  40. package/tools/nexowatt-clean-legacy-runtime.cjs +4 -0
  41. package/tools/nexowatt-ems-overview-selftest.cjs +35 -0
  42. package/tools/nexowatt-internal-reserve-selftest.cjs +1 -3
  43. package/tools/nexowatt-login-layout-selftest.cjs +43 -22
  44. package/tools/nexowatt-merge-update-selftest.cjs +69 -0
  45. package/tools/nexowatt-modern-ui-selftest.cjs +4 -5
  46. package/tools/nexowatt-stable-v96-selftest.cjs +13 -0
  47. package/tools/nexowatt-sync-release-version.cjs +181 -0
  48. package/tools/nexowatt-ui-overview-runtime-selftest.cjs +16 -0
  49. package/tools/nexowatt-validate-package.cjs +41 -10
  50. package/tools/nexowatt-version-sync-selftest.cjs +86 -0
  51. package/INSTALL_TEST_V7.9.93.md +0 -12
  52. package/PUBLISH_STABLE_V7.9.93.md +0 -19
  53. package/README_STABILITY_V7.9.93.md +0 -15
  54. package/RELEASE_ACCEPTANCE_V7.9.93.md +0 -15
  55. package/RELEASE_NOTES_V7.9.93.md +0 -10
@@ -0,0 +1,62 @@
1
+ /* nexowatt-ems-overview-v1 – current runtime and future React build */
2
+ .eos-ems-overview-card {
3
+ --eos-ems-status-color: #48b9ff;
4
+ box-sizing: border-box;
5
+ flex: 1 1 720px;
6
+ min-width: min(100%, 420px);
7
+ max-width: 1180px;
8
+ min-height: 390px;
9
+ margin: 10px;
10
+ padding: 22px;
11
+ border: 1px solid color-mix(in srgb, var(--eos-ems-status-color) 38%, rgba(255,255,255,.08));
12
+ border-radius: 20px;
13
+ background: linear-gradient(145deg, rgba(4,24,35,.97), rgba(3,16,29,.98));
14
+ color: #ecf8ff;
15
+ box-shadow: 0 18px 55px rgba(0,0,0,.26), inset 0 0 0 1px rgba(255,255,255,.025);
16
+ overflow: hidden;
17
+ }
18
+ #eos-ems-overview-runtime { width: calc(100% - 32px); max-width: none; margin: 0 16px 20px; }
19
+ .eos-ems-overview-card * { box-sizing: border-box; }
20
+ .eos-ems-overview-header { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; }
21
+ .eos-ems-overview-header h2 { margin:5px 0 6px; font-size:clamp(1.2rem,2vw,1.65rem); color:#f5fbff; }
22
+ .eos-ems-overview-header p { margin:0; max-width:760px; color:#9eb2c2; line-height:1.45; }
23
+ .eos-ems-overview-eyebrow { color:#49e39e; font-size:.72rem; font-weight:900; letter-spacing:.13em; text-transform:uppercase; }
24
+ .eos-ems-overview-state { min-width:126px; display:grid; grid-template-columns:auto 1fr; align-items:center; gap:3px 8px; padding:9px 12px; border:1px solid rgba(255,255,255,.09); border-radius:999px; background:rgba(255,255,255,.035); }
25
+ .eos-ems-overview-state-dot { width:9px; height:9px; border-radius:50%; background:var(--eos-ems-status-color); box-shadow:0 0 15px var(--eos-ems-status-color); }
26
+ .eos-ems-overview-state strong { color:var(--eos-ems-status-color); }
27
+ .eos-ems-overview-state small { grid-column:2; color:#8095a6; }
28
+ .eos-ems-overview-metrics { display:grid; grid-template-columns:repeat(4,minmax(130px,1fr)); gap:10px; margin-top:19px; }
29
+ .eos-ems-overview-metric { min-width:0; padding:12px; border:1px solid rgba(255,255,255,.075); border-radius:14px; background:rgba(255,255,255,.025); }
30
+ .eos-ems-overview-metric span,.eos-ems-overview-metric small { display:block; color:#879cad; font-size:.72rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
31
+ .eos-ems-overview-metric strong { display:block; margin:4px 0 2px; color:#f4fbff; font-size:1rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
32
+ .eos-ems-overview-budget { height:7px; margin:12px 0 10px; border-radius:999px; background:rgba(255,255,255,.06); overflow:hidden; }
33
+ .eos-ems-overview-budget span { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,#01bc69,var(--eos-ems-status-color)); box-shadow:0 0 15px color-mix(in srgb,var(--eos-ems-status-color) 50%,transparent); transition:width .25s ease; }
34
+ .eos-ems-overview-tags { display:flex; flex-wrap:wrap; gap:7px; margin-bottom:14px; }
35
+ .eos-ems-overview-tags span { padding:5px 9px; border:1px solid rgba(72,185,255,.18); border-radius:999px; background:rgba(72,185,255,.07); color:#b9deef; font-size:.72rem; font-weight:750; }
36
+ .eos-ems-overview-tags span.is-warning { border-color:rgba(255,189,89,.3); background:rgba(255,189,89,.09); color:#ffd484; }
37
+ .eos-ems-overview-columns { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
38
+ .eos-ems-overview-panel { min-width:0; padding:14px; border:1px solid rgba(255,255,255,.065); border-radius:16px; background:rgba(0,0,0,.12); }
39
+ .eos-ems-overview-panel h3 { margin:0 0 10px; color:#dfeef6; font-size:.9rem; }
40
+ .eos-ems-overview-decision,.eos-ems-overview-event { position:relative; display:grid; gap:2px; margin-top:7px; padding:8px 9px 8px 12px; border-radius:10px; background:rgba(255,255,255,.025); overflow:hidden; }
41
+ .eos-ems-overview-decision::before,.eos-ems-overview-event::before { content:''; position:absolute; inset:0 auto 0 0; width:3px; background:#48b9ff; }
42
+ .eos-ems-overview-decision--warning::before,.eos-ems-overview-event--warning::before { background:#ffbd59; }
43
+ .eos-ems-overview-decision--error::before,.eos-ems-overview-event--error::before { background:#ff5f72; }
44
+ .eos-ems-overview-decision strong,.eos-ems-overview-event strong { color:#e7f4fa; font-size:.78rem; }
45
+ .eos-ems-overview-decision span,.eos-ems-overview-event span { color:#91a5b5; font-size:.72rem; line-height:1.35; }
46
+ .eos-ems-overview-decision small { color:#6fcba1; font-size:.68rem; }
47
+ .eos-ems-overview-event { grid-template-columns:64px 1fr; align-items:start; }
48
+ .eos-ems-overview-event time { color:#6f8799; font-size:.68rem; font-variant-numeric:tabular-nums; }
49
+ .eos-ems-overview-event div { display:grid; gap:2px; min-width:0; }
50
+ .eos-ems-overview-empty { color:#718797; font-size:.76rem; }
51
+ .eos-ems-overview-footer { display:flex; justify-content:space-between; gap:12px; margin-top:12px; color:#60798a; font-size:.67rem; }
52
+ .eos-ems-overview-footer a { color:#5ee0c2; font-weight:800; text-decoration:none; }
53
+ .eos-ems-overview-footer a:hover,.eos-ems-overview-footer a:focus-visible { color:#9af2dd; text-decoration:underline; }
54
+ @media (max-width: 1100px) { .eos-ems-overview-card { flex-basis:100%; max-width:none; } }
55
+ @media (max-width: 760px) {
56
+ #eos-ems-overview-runtime,.eos-ems-overview-card { min-width:0; width:calc(100% - 16px); margin:8px; padding:16px; }
57
+ .eos-ems-overview-header { display:grid; }
58
+ .eos-ems-overview-state { width:max-content; }
59
+ .eos-ems-overview-metrics { grid-template-columns:1fr 1fr; }
60
+ .eos-ems-overview-columns { grid-template-columns:1fr; }
61
+ .eos-ems-overview-footer { display:grid; }
62
+ }
@@ -75,8 +75,8 @@ html.eos-login main.MuiPaper-root::before {
75
75
  left: 50%;
76
76
  top: 50%;
77
77
  box-sizing: border-box;
78
- width: min(390px, calc(100vw - 24px));
79
- height: min(480px, calc(100vh - 24px));
78
+ width: min(520px, calc(100vw - 24px)) !important;
79
+ height: min(640px, calc(100dvh - 24px)) !important;
80
80
  transform: translate(-50%, -50%);
81
81
  border: 1px solid rgba(0, 229, 138, .34);
82
82
  border-radius: 26px;
@@ -90,28 +90,19 @@ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#password) {
90
90
  position: relative;
91
91
  z-index: 1;
92
92
  box-sizing: border-box !important;
93
- width: min(334px, calc(100vw - 56px)) !important;
94
- height: min(424px, calc(100vh - 56px)) !important;
95
- min-height: 0 !important;
96
- max-width: none !important;
93
+ width: min(460px, calc(100vw - 56px)) !important;
94
+ height: auto !important;
95
+ min-height: 540px !important;
96
+ max-width: 460px !important;
97
97
  max-height: none !important;
98
- padding: 28px !important;
99
- overflow: hidden !important;
100
- scrollbar-width: none !important;
98
+ padding: 34px 36px 32px !important;
99
+ overflow: visible !important;
101
100
  border-radius: 24px !important;
102
101
  color: var(--nx-text) !important;
103
102
  background: linear-gradient(180deg, rgba(14, 36, 56, .97), rgba(4, 15, 27, .96)) !important;
104
103
  border: 1px solid var(--nx-border-accent) !important;
105
104
  box-shadow: 0 18px 44px rgba(0, 0, 0, .34), inset 0 1px 0 rgba(255, 255, 255, .035) !important;
106
105
  }
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
- }
115
106
  html.eos-login img[src*="admin"],
116
107
  html.eos-login .MuiAvatar-img { object-fit: contain !important; filter: drop-shadow(0 0 18px rgba(0,255,136,.35)); }
117
108
 
@@ -865,7 +856,7 @@ html.eos-modern-login body::before {
865
856
 
866
857
 
867
858
  /* ==========================================================================
868
- NexoWatt EOS 7.9.92 – stable product layout
859
+ NexoWatt EOS 7.9.94 – stable product layout
869
860
  Integrated first login, header assistant, role-safe overview and account
870
861
  management exclusively below "Zugänge & Rechte".
871
862
  ========================================================================== */
@@ -895,13 +886,12 @@ html.eos-login .eos-login-card-modern {
895
886
  /* Compact product login: the form remains the proven inner card while the
896
887
  decorative rear frame keeps a fixed, restrained footprint. */
897
888
  box-sizing: border-box !important;
898
- width: min(334px, calc(100vw - 56px)) !important;
899
- height: min(424px, calc(100vh - 56px)) !important;
900
- min-height: 0 !important;
901
- max-width: none !important;
889
+ width: min(460px, calc(100vw - 56px)) !important;
890
+ height: auto !important;
891
+ min-height: 540px !important;
892
+ max-width: 460px !important;
902
893
  max-height: none !important;
903
- overflow: hidden !important;
904
- scrollbar-width: none !important;
894
+ overflow: visible !important;
905
895
  }
906
896
  .eos-login-role-selector {
907
897
  display: none !important;
@@ -1203,7 +1193,7 @@ html.eos-role-enduser [data-instance-id^="backitup."] { display: none !important
1203
1193
 
1204
1194
 
1205
1195
 
1206
- /* Final 7.9.92 interaction guards. */
1196
+ /* Final 7.9.94 interaction guards. */
1207
1197
  html.eos-safe-overview-active #app-paper { position: relative !important; }
1208
1198
  html.eos-safe-overview-active #app-paper > :not(#eos-role-safe-overview):not(.MuiSnackbar-root):not([role="presentation"]) {
1209
1199
  pointer-events: none !important;
@@ -1302,144 +1292,100 @@ html.eos-route-intro #app-paper [class*="card"] {
1302
1292
  .eos-assist-header-root .eos-assist-panel { right: 8px !important; width: calc(100vw - 16px); }
1303
1293
  }
1304
1294
 
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;
1295
+
1296
+ /* NexoWatt EOS 7.9.96 – spacious login card without inner scrollbars. */
1297
+ html.eos-login,
1298
+ html.eos-login body {
1299
+ min-height: 100%;
1300
+ margin: 0 !important;
1301
+ overflow-x: hidden !important;
1302
+ overflow-y: auto !important;
1318
1303
  }
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;
1304
+ html.eos-login #root {
1305
+ min-height: 100dvh;
1306
+ box-sizing: border-box;
1307
+ padding: 24px 12px;
1330
1308
  }
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);
1309
+ html.eos-login main.MuiPaper-root {
1310
+ box-sizing: border-box !important;
1311
+ min-height: calc(100dvh - 48px) !important;
1312
+ padding: 28px 0 !important;
1313
+ overflow: visible !important;
1352
1314
  }
1353
- .eos-assist-welcome {
1354
- padding: 17px 12px;
1355
- color: #99b9c7;
1356
- font-size: 12px;
1357
- line-height: 1.55;
1358
- text-align: center;
1315
+ html.eos-login main.MuiPaper-root::before {
1316
+ width: min(520px, calc(100vw - 24px)) !important;
1317
+ height: min(640px, calc(100dvh - 24px)) !important;
1318
+ min-height: 590px !important;
1359
1319
  }
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);
1320
+ html.eos-login main.MuiPaper-root > .eos-login-card-modern,
1321
+ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#username),
1322
+ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#password),
1323
+ html.eos-login [data-nw-login-card="true"] {
1324
+ box-sizing: border-box !important;
1325
+ width: min(460px, calc(100vw - 56px)) !important;
1326
+ min-width: 0 !important;
1327
+ min-height: 540px !important;
1328
+ height: auto !important;
1329
+ max-width: 460px !important;
1330
+ max-height: none !important;
1331
+ padding: 34px 36px 32px !important;
1332
+ overflow: visible !important;
1409
1333
  }
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;
1334
+ html.eos-login main.MuiPaper-root > .eos-login-card-modern *,
1335
+ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#username) *,
1336
+ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#password) * {
1417
1337
  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;
1338
+ max-width: 100%;
1339
+ }
1340
+ html.eos-login .MuiAlert-root,
1341
+ html.eos-login [role="alert"],
1342
+ html.eos-login .eos-login-first-status,
1343
+ html.eos-login .eos-login-first-hint {
1344
+ position: static !important;
1345
+ width: 100% !important;
1346
+ max-width: 100% !important;
1347
+ max-height: none !important;
1348
+ overflow: visible !important;
1349
+ white-space: normal !important;
1350
+ overflow-wrap: anywhere !important;
1351
+ word-break: normal !important;
1352
+ flex-shrink: 0 !important;
1353
+ }
1354
+ html.eos-login input,
1355
+ html.eos-login button,
1356
+ html.eos-login form {
1357
+ max-width: 100% !important;
1358
+ }
1359
+ @media (max-width: 560px) {
1360
+ html.eos-login #root { padding: 10px 8px; }
1361
+ html.eos-login main.MuiPaper-root { min-height: calc(100dvh - 20px) !important; padding: 14px 0 !important; }
1362
+ html.eos-login main.MuiPaper-root::before {
1363
+ width: calc(100vw - 16px) !important;
1364
+ min-height: 0 !important;
1365
+ height: calc(100% - 4px) !important;
1366
+ border-radius: 20px !important;
1367
+ }
1368
+ html.eos-login main.MuiPaper-root > .eos-login-card-modern,
1369
+ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#username),
1370
+ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#password),
1371
+ html.eos-login [data-nw-login-card="true"] {
1372
+ width: calc(100vw - 38px) !important;
1373
+ max-width: none !important;
1374
+ min-height: 0 !important;
1375
+ padding: 26px 22px !important;
1441
1376
  }
1442
- .eos-assist-transcript { max-height: 45vh; }
1443
- .eos-assist-input-row { flex-direction: column; }
1444
- .eos-assist-send { min-height: 40px; }
1445
1377
  }
1378
+ @media (max-height: 690px) {
1379
+ html.eos-login main.MuiPaper-root::before { min-height: 0 !important; height: calc(100% - 12px) !important; }
1380
+ html.eos-login main.MuiPaper-root > .eos-login-card-modern,
1381
+ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#username),
1382
+ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#password),
1383
+ html.eos-login [data-nw-login-card="true"] { min-height: 0 !important; }
1384
+ }
1385
+
1386
+
1387
+ /* 7.9.96: native Intro owns the overview for every EOS role. */
1388
+ #eos-role-safe-overview,
1389
+ .eos-role-safe-overview { display: none !important; }
1390
+ html.eos-safe-overview-active #app-paper > :not(.MuiSnackbar-root):not([role="presentation"]) { pointer-events: auto !important; }
1391
+ .eos-intro-admin-edit-hidden { display: none !important; }
@@ -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=93"></script>
11
+ <script src="./js/eos-manual-write-policy.js?v=96"></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,8 @@
36
36
  rel="stylesheet"
37
37
  href="css/leaflet.css"
38
38
  />
39
- <link rel="stylesheet" href="./css/nexowatt-native-shell.css?v=93" />
39
+ <link rel="stylesheet" href="./css/nexowatt-native-shell.css?v=96" />
40
+ <link rel="stylesheet" href="./css/eos-ems-overview.css?v=96" />
40
41
  <link
41
42
  rel="manifest"
42
43
  href="manifest.json"
@@ -158,18 +159,21 @@
158
159
  </script>
159
160
  <link rel="modulepreload" crossorigin href="./assets/preload-helper-BDBacUwf.js">
160
161
  <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=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>
162
+ <script defer src="./js/eos-role-bootstrap.js?v=96" data-eos-entry="./assets/index-CQZugZ1z-v84.js?v=84"></script>
163
+ <script defer src="./js/eos-policy-client.js?v=96"></script>
164
+ <script defer src="./js/eos-branding-sanitizer.js?v=96"></script>
165
+ <script defer src="./js/nexowatt-native-shell.js?v=96"></script>
166
+ <script defer src="./js/eos-native-security.js?v=96"></script>
167
+ <script defer src="./js/eos-basic-settings.js?v=96"></script>
168
+ <script defer src="./js/eos-role-ui.js?v=96"></script>
169
+ <script defer src="./js/eos-ems-overview.js?v=96"></script>
170
+ <script defer src="./js/eos-account-management.js?v=96"></script>
171
+ <script defer src="./js/eos-assistant.js?v=96"></script>
170
172
  </head>
171
173
  <body>
172
174
  <noscript>Für NexoWatt EOS muss JavaScript aktiviert sein.</noscript>
173
175
  <div id="root"></div>
176
+ <script defer src="static/js/nexowatt-stable-login.js?v=96"></script>
177
+ <script defer src="static/js/nexowatt-stable-v96.js?v=96"></script>
174
178
  </body>
175
179
  </html>
@@ -1,7 +1,7 @@
1
1
  (() => {
2
2
  'use strict';
3
3
 
4
- const VERSION = 'v93-account-management-under-access-rights';
4
+ const VERSION = 'v91-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();