iobroker.eos-admin 7.9.89 → 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 (64) hide show
  1. package/INSTALL_TEST_V7.9.93.md +12 -0
  2. package/NEXOWATT_EOS_BUILD_INFO.json +19 -26
  3. package/PUBLISH_STABLE_V7.9.93.md +19 -0
  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/assets/Instances-YdaGnS5a-v84.js +1 -1
  9. package/adminWww/css/nexowatt-native-shell.css +304 -13
  10. package/adminWww/index.html +11 -11
  11. package/adminWww/js/eos-account-management.js +1 -1
  12. package/adminWww/js/eos-assistant.js +487 -55
  13. package/adminWww/js/eos-basic-settings.js +1 -1
  14. package/adminWww/js/eos-branding-sanitizer.js +3 -1
  15. package/adminWww/js/eos-native-security.js +1 -1
  16. package/adminWww/js/eos-policy-client.js +1 -1
  17. package/adminWww/js/eos-role-bootstrap.js +180 -46
  18. package/adminWww/js/eos-role-ui.js +156 -23
  19. package/adminWww/js/nexowatt-native-shell.js +1 -1
  20. package/build/lib/chat/assistantKnowledge.js +21 -6
  21. package/build/lib/chat/chatOrchestrator.js +33 -38
  22. package/build/lib/chat/mcpClientManager.js +1 -1
  23. package/build/lib/web.js +39 -0
  24. package/build/main.js +307 -1
  25. package/io-package.json +23 -8
  26. package/package.json +21 -13
  27. package/tools/nexowatt-account-management-selftest.cjs +1 -1
  28. package/tools/nexowatt-ensure-release-defaults.cjs +72 -0
  29. package/tools/nexowatt-internal-reserve-selftest.cjs +4 -1
  30. package/tools/nexowatt-login-layout-selftest.cjs +62 -0
  31. package/tools/nexowatt-modern-ui-selftest.cjs +7 -5
  32. package/tools/nexowatt-release-defaults-selftest.cjs +29 -0
  33. package/tools/nexowatt-validate-package.cjs +18 -8
  34. package/INSTALL_TEST_V7.9.89.md +0 -73
  35. package/PUBLISH_STABLE_V7.9.89.md +0 -33
  36. package/README_STABILITY_V7.9.89.md +0 -26
  37. package/RELEASE_ACCEPTANCE_V7.9.89.md +0 -40
  38. package/admin/img/eos/nexowatt-192-maskable.png +0 -0
  39. package/admin/img/eos/nexowatt-24.png +0 -0
  40. package/admin/img/eos/nexowatt-512-maskable.png +0 -0
  41. package/admin/img/eos/nexowatt-eos-logo.png +0 -0
  42. package/adminWww/admin.png +0 -0
  43. package/adminWww/img/eos/nexowatt-24.png +0 -0
  44. package/adminWww/img/eos/nexowatt-eos-logo.png +0 -0
  45. package/adminWww/img/eos/nexowatt-header-128.png +0 -0
  46. package/adminWww/img/eos/nexowatt-header-192.png +0 -0
  47. package/adminWww/img/eos/nexowatt-header-256.png +0 -0
  48. package/adminWww/img/eos/nexowatt-header-512.png +0 -0
  49. package/adminWww/img/eos/nexowatt-header-64.png +0 -0
  50. package/adminWww/img/logo192.png +0 -0
  51. package/adminWww/js/eos-adapter-surface-cleanup.js +0 -141
  52. package/adminWww/js/eos-toolbar-ghost-cleanup.js +0 -102
  53. package/docs/NEXOWATT_EOS_BRANDING_DE.md +0 -29
  54. package/docs/NEXOWATT_EOS_UI_LOGO_LOGIN_V6_DE.md +0 -9
  55. package/docs/NEXOWATT_EOS_UI_PERFORMANCE_V5_DE.md +0 -25
  56. package/docs/NEXOWATT_EOS_UI_V12_HEADER_LOGO_NAV_CLEANUP_DE.md +0 -16
  57. package/docs/NEXOWATT_EOS_UI_V12_HEADER_NAV_LOGO_FIX_DE.md +0 -16
  58. package/docs/NEXOWATT_EOS_UI_V15_DE.md +0 -8
  59. package/docs/NEXOWATT_EOS_UI_V16_DE.md +0 -9
  60. package/docs/NEXOWATT_EOS_UI_V17_DE.md +0 -24
  61. package/docs/NEXOWATT_EOS_UI_V6_FIXES_DE.md +0 -13
  62. package/docs/NEXOWATT_EOS_UI_V6_LOGIN_LOGO_404_FIX_DE.md +0 -9
  63. package/docs/NEXOWATT_EOS_UI_V6_LOGO_LOGIN_FIX_DE.md +0 -10
  64. package/docs/NEXOWATT_EOS_UI_V7_RESTORE_LOGO_SCOPE_FIX_DE.md +0 -18
@@ -1,4 +1,4 @@
1
- /* NexoWatt EOS native shell v89
1
+ /* NexoWatt EOS native shell v91
2
2
  Clean presentation layer for the NexoWatt fork of ioBroker Admin.
3
3
  This stylesheet deliberately avoids broad pointer-event, visibility and DOM-structure overrides. */
4
4
 
@@ -55,23 +55,62 @@ html.eos-login #root {
55
55
  place-items: center;
56
56
  }
57
57
  html.eos-login main.MuiPaper-root {
58
+ position: relative;
59
+ isolation: isolate;
58
60
  width: 100%;
59
61
  min-height: 100vh;
60
62
  display: grid;
61
63
  place-items: center;
64
+ padding: 0 !important;
62
65
  background: transparent !important;
63
66
  border: 0 !important;
64
67
  box-shadow: none !important;
65
68
  }
66
- html.eos-login .MuiPaper-root:has(#username),
67
- html.eos-login .MuiPaper-root:has(#password) {
68
- width: min(430px, calc(100vw - 36px)) !important;
69
- padding: 30px !important;
70
- border-radius: 26px !important;
69
+ /* The outer frame is decorative only. Keeping it as a pseudo element prevents
70
+ the viewport-sized main Paper from being mistaken for a second form card. */
71
+ html.eos-login main.MuiPaper-root::before {
72
+ content: '';
73
+ position: absolute;
74
+ z-index: 0;
75
+ left: 50%;
76
+ top: 50%;
77
+ box-sizing: border-box;
78
+ width: min(390px, calc(100vw - 24px));
79
+ height: min(480px, calc(100vh - 24px));
80
+ transform: translate(-50%, -50%);
81
+ border: 1px solid rgba(0, 229, 138, .34);
82
+ border-radius: 26px;
83
+ background: linear-gradient(180deg, rgba(10, 34, 52, .82), rgba(3, 15, 27, .88));
84
+ box-shadow: 0 26px 70px rgba(0, 0, 0, .52), 0 0 42px rgba(0, 255, 136, .08);
85
+ pointer-events: none;
86
+ }
87
+ html.eos-login main.MuiPaper-root > .eos-login-card-modern,
88
+ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#username),
89
+ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#password) {
90
+ position: relative;
91
+ z-index: 1;
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;
97
+ max-height: none !important;
98
+ padding: 28px !important;
99
+ overflow: hidden !important;
100
+ scrollbar-width: none !important;
101
+ border-radius: 24px !important;
71
102
  color: var(--nx-text) !important;
72
- background: linear-gradient(180deg, rgba(14,36,56,.97), rgba(4,15,27,.96)) !important;
103
+ background: linear-gradient(180deg, rgba(14, 36, 56, .97), rgba(4, 15, 27, .96)) !important;
73
104
  border: 1px solid var(--nx-border-accent) !important;
74
- box-shadow: 0 26px 70px rgba(0,0,0,.52), 0 0 42px rgba(0,255,136,.12) !important;
105
+ box-shadow: 0 18px 44px rgba(0, 0, 0, .34), inset 0 1px 0 rgba(255, 255, 255, .035) !important;
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;
75
114
  }
76
115
  html.eos-login img[src*="admin"],
77
116
  html.eos-login .MuiAvatar-img { object-fit: contain !important; filter: drop-shadow(0 0 18px rgba(0,255,136,.35)); }
@@ -511,7 +550,7 @@ html.eos-security-nonadmin [data-eos-admin-only-control="1"] { display: none !im
511
550
  .eos-basic-settings-actions button:disabled { opacity: .55; cursor: wait; }
512
551
  @media (max-width: 760px) { .eos-basic-settings-overlay { padding: 8px; } .eos-basic-settings-dialog { width: 100%; max-height: 96vh; } .eos-basic-settings-form { grid-template-columns: 1fr; } .eos-basic-settings-actions { flex-direction: column-reverse; } .eos-basic-settings-actions button { width: 100%; } }
513
552
 
514
- /* v89: blocking first-login password setup for installer/end-user accounts */
553
+ /* v91: server-checked first-login password setup for installer/end-user accounts */
515
554
  html.eos-first-login-active,html.eos-first-login-active body { min-height: 100%; overflow: hidden !important; background: #020914 !important; }
516
555
  .eos-first-login-overlay { position: fixed; inset: 0; z-index: 2147483647; display: grid; place-items: center; box-sizing: border-box; padding: 24px; color: #effbff; background: radial-gradient(circle at 20% 0%,rgba(0,229,138,.15),transparent 38%),linear-gradient(145deg,#020914,#061927); font-family: Inter,Roboto,Arial,sans-serif; }
517
556
  .eos-first-login-card { width: min(520px,100%); box-sizing: border-box; padding: 30px; border: 1px solid rgba(0,229,138,.34); border-radius: 22px; background: rgba(4,21,33,.96); box-shadow: 0 28px 90px rgba(0,0,0,.58),0 0 42px rgba(0,229,138,.08); }
@@ -826,7 +865,7 @@ html.eos-modern-login body::before {
826
865
 
827
866
 
828
867
  /* ==========================================================================
829
- NexoWatt EOS 7.9.89 – stable product layout
868
+ NexoWatt EOS 7.9.92 – stable product layout
830
869
  Integrated first login, header assistant, role-safe overview and account
831
870
  management exclusively below "Zugänge & Rechte".
832
871
  ========================================================================== */
@@ -853,10 +892,20 @@ html.eos-app .eos-top-toolbar {
853
892
  display: none !important;
854
893
  }
855
894
  html.eos-login .eos-login-card-modern {
856
- max-height: min(760px, calc(100vh - 30px)) !important;
857
- overflow: auto !important;
895
+ /* Compact product login: the form remains the proven inner card while the
896
+ decorative rear frame keeps a fixed, restrained footprint. */
897
+ 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;
902
+ max-height: none !important;
903
+ overflow: hidden !important;
904
+ scrollbar-width: none !important;
858
905
  }
859
906
  .eos-login-role-selector {
907
+ display: none !important;
908
+
860
909
  width: 100%;
861
910
  margin: 14px 0 5px;
862
911
  padding: 13px;
@@ -934,8 +983,57 @@ html.eos-login .eos-login-card-modern {
934
983
  }
935
984
  .eos-login-first-status[data-kind="error"] { color: #ff8d98; }
936
985
  .eos-login-first-status[data-kind="success"] { color: #54f1aa; }
986
+ .eos-login-first-status:empty { display: none; min-height: 0; margin: 0; }
987
+
988
+ .eos-first-login-native-submit-hidden {
989
+ display: none !important;
990
+ }
991
+ .eos-first-login-submit-proxy {
992
+ box-sizing: border-box;
993
+ width: 100%;
994
+ min-height: 36px;
995
+ margin-top: 8px;
996
+ padding: 8px 18px;
997
+ color: #03161d;
998
+ font: inherit;
999
+ font-weight: 900;
1000
+ letter-spacing: .035em;
1001
+ text-transform: uppercase;
1002
+ border: 1px solid rgba(82, 255, 190, .7);
1003
+ border-radius: 5px;
1004
+ background: linear-gradient(135deg, #00e58a, #45d5ff);
1005
+ box-shadow: 0 10px 24px rgba(0, 229, 138, .18), inset 0 1px 0 rgba(255,255,255,.35);
1006
+ cursor: pointer;
1007
+ transition: transform .16s ease, filter .16s ease, box-shadow .16s ease;
1008
+ }
1009
+ .eos-first-login-submit-proxy:hover,
1010
+ .eos-first-login-submit-proxy:focus-visible {
1011
+ filter: brightness(1.08);
1012
+ transform: translateY(-1px);
1013
+ box-shadow: 0 14px 28px rgba(0, 229, 138, .24), 0 0 0 3px rgba(69, 213, 255, .16);
1014
+ }
1015
+ .eos-first-login-submit-proxy:disabled {
1016
+ cursor: progress;
1017
+ opacity: .62;
1018
+ transform: none;
1019
+ }
937
1020
  .eos-login-first-ready button[type="submit"] {
1021
+ color: #03151c !important;
1022
+ opacity: 1 !important;
1023
+ pointer-events: auto !important;
1024
+ background: linear-gradient(135deg, #00e58a, #45d5ff) !important;
938
1025
  box-shadow: 0 0 0 1px rgba(0, 229, 138, .28), 0 12px 28px rgba(0, 229, 138, .14) !important;
1026
+ cursor: pointer !important;
1027
+ }
1028
+ .eos-login-first-ready button[type="submit"].Mui-disabled { pointer-events: auto !important; }
1029
+ .eos-first-login-password-optional .MuiInputLabel-asterisk { display: none !important; }
1030
+ .eos-login-first-checking button[type="submit"],
1031
+ .eos-login-first-blocked button[type="submit"] {
1032
+ color: rgba(218, 235, 242, .55) !important;
1033
+ opacity: .72 !important;
1034
+ background: #314050 !important;
1035
+ box-shadow: none !important;
1036
+ cursor: not-allowed !important;
939
1037
  }
940
1038
 
941
1039
  /* EOS Assist lives in the fixed header and opens below it. */
@@ -1029,7 +1127,9 @@ html.eos-login .eos-login-card-modern {
1029
1127
  .eos-role-safe-overview {
1030
1128
  position: absolute;
1031
1129
  inset: 0;
1032
- z-index: 25;
1130
+ z-index: 1000;
1131
+ isolation: isolate;
1132
+ pointer-events: auto !important;
1033
1133
  overflow: auto;
1034
1134
  padding: 0 0 24px;
1035
1135
  background:
@@ -1038,12 +1138,19 @@ html.eos-login .eos-login-card-modern {
1038
1138
  }
1039
1139
  .eos-overview-grid {
1040
1140
  display: grid;
1141
+ position: relative;
1142
+ z-index: 2;
1143
+ pointer-events: auto !important;
1041
1144
  grid-template-columns: repeat(auto-fit, minmax(245px, 1fr));
1042
1145
  gap: 13px;
1043
1146
  padding: 0 16px 20px;
1044
1147
  }
1045
1148
  .eos-overview-action {
1046
1149
  min-height: 105px;
1150
+ position: relative;
1151
+ z-index: 3;
1152
+ pointer-events: auto !important;
1153
+ touch-action: manipulation;
1047
1154
  display: grid;
1048
1155
  grid-template-columns: 52px minmax(0, 1fr) 22px;
1049
1156
  align-items: center;
@@ -1051,6 +1158,7 @@ html.eos-login .eos-login-card-modern {
1051
1158
  padding: 17px;
1052
1159
  color: #eafaff;
1053
1160
  text-align: left;
1161
+ text-decoration: none;
1054
1162
  border: 1px solid rgba(133, 193, 218, .14);
1055
1163
  border-radius: 18px;
1056
1164
  background: linear-gradient(145deg, rgba(10, 35, 50, .84), rgba(3, 16, 28, .92));
@@ -1058,6 +1166,7 @@ html.eos-login .eos-login-card-modern {
1058
1166
  cursor: pointer;
1059
1167
  transition: transform .16s ease, border-color .16s ease, background .16s ease, box-shadow .16s ease;
1060
1168
  }
1169
+ .eos-overview-action > * { pointer-events: none !important; }
1061
1170
  .eos-overview-action:hover {
1062
1171
  transform: translateY(-2px);
1063
1172
  border-color: rgba(0, 229, 138, .35);
@@ -1082,6 +1191,33 @@ html.eos-login .eos-login-card-modern {
1082
1191
  .eos-overview-action i { color: #59e5bd; font-size: 29px; font-style: normal; }
1083
1192
  .eos-official-reserve-hidden { display: none !important; }
1084
1193
 
1194
+ /* Internal fallback services are never exposed outside Admin / Service. */
1195
+ html.eos-role-installer [data-instance^="admin."],
1196
+ html.eos-role-installer [data-instance^="backitup."],
1197
+ html.eos-role-enduser [data-instance^="admin."],
1198
+ html.eos-role-enduser [data-instance^="backitup."],
1199
+ html.eos-role-installer [data-instance-id^="admin."],
1200
+ html.eos-role-installer [data-instance-id^="backitup."],
1201
+ html.eos-role-enduser [data-instance-id^="admin."],
1202
+ html.eos-role-enduser [data-instance-id^="backitup."] { display: none !important; }
1203
+
1204
+
1205
+
1206
+ /* Final 7.9.92 interaction guards. */
1207
+ html.eos-safe-overview-active #app-paper { position: relative !important; }
1208
+ html.eos-safe-overview-active #app-paper > :not(#eos-role-safe-overview):not(.MuiSnackbar-root):not([role="presentation"]) {
1209
+ pointer-events: none !important;
1210
+ }
1211
+ .eos-role-safe-overview .eos-overview-action {
1212
+ appearance: none;
1213
+ -webkit-appearance: none;
1214
+ opacity: 1 !important;
1215
+ }
1216
+ .eos-role-safe-overview .eos-overview-action:focus-visible {
1217
+ outline: 3px solid rgba(69, 213, 255, .85);
1218
+ outline-offset: 3px;
1219
+ }
1220
+
1085
1221
  /* Account management is available only inside Zugänge & Rechte. */
1086
1222
  .eos-account-management-entry {
1087
1223
  position: relative;
@@ -1144,6 +1280,19 @@ html.eos-route-intro #app-paper [class*="card"] {
1144
1280
  .eos-account-management-entry-button { width: 100%; min-width: 0; }
1145
1281
  }
1146
1282
  @media (max-width: 720px) {
1283
+ html.eos-login main.MuiPaper-root::before {
1284
+ width: calc(100vw - 16px);
1285
+ height: min(480px, calc(100vh - 16px));
1286
+ border-radius: 20px;
1287
+ }
1288
+ html.eos-login main.MuiPaper-root > .eos-login-card-modern,
1289
+ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#username),
1290
+ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#password) {
1291
+ width: calc(100vw - 44px) !important;
1292
+ height: min(424px, calc(100vh - 44px)) !important;
1293
+ padding: 22px !important;
1294
+ border-radius: 18px !important;
1295
+ }
1147
1296
  .eos-login-role-buttons { grid-template-columns: 1fr; }
1148
1297
  .eos-login-role-buttons button { min-height: 46px; }
1149
1298
  .eos-overview-hero { align-items: flex-start; flex-direction: column; margin: 9px; border-radius: 18px; }
@@ -1152,3 +1301,145 @@ html.eos-route-intro #app-paper [class*="card"] {
1152
1301
  .eos-account-management-entry { margin: 9px; padding: 19px; border-radius: 18px; }
1153
1302
  .eos-assist-header-root .eos-assist-panel { right: 8px !important; width: calc(100vw - 16px); }
1154
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=89"></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=89" />
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=89" data-eos-entry="./assets/index-CQZugZ1z-v84.js?v=84"></script>
162
- <script defer src="./js/eos-policy-client.js?v=89"></script>
163
- <script defer src="./js/eos-branding-sanitizer.js?v=89"></script>
164
- <script defer src="./js/nexowatt-native-shell.js?v=89"></script>
165
- <script defer src="./js/eos-native-security.js?v=89"></script>
166
- <script defer src="./js/eos-basic-settings.js?v=89"></script>
167
- <script defer src="./js/eos-role-ui.js?v=89"></script>
168
- <script defer src="./js/eos-account-management.js?v=89"></script>
169
- <script defer src="./js/eos-assistant.js?v=89"></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 = 'v89-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();