iobroker.eos-admin 7.10.0 → 7.10.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 (65) hide show
  1. package/INSTALL_TEST_V7.10.2.md +22 -0
  2. package/MERGE_UPDATE_README_V7.10.2.md +11 -0
  3. package/NEXOWATT_EOS_BUILD_INFO.json +19 -21
  4. package/NEXOWATT_EOS_PREBUILT_MANIFEST.json +1410 -0
  5. package/PUBLISH_STABLE_V7.10.2.md +21 -0
  6. package/README.md +16 -6
  7. package/README_STABILITY_V7.10.2.md +20 -0
  8. package/RELEASE_ACCEPTANCE_V7.10.2.md +13 -0
  9. package/RELEASE_NOTES_V7.10.2.md +11 -0
  10. package/adminWww/assets/Intro-DkwRiz1n-v84.js +1 -1
  11. package/adminWww/assets/bootstrap-COulQZax-v84.js +2 -2
  12. package/adminWww/css/eos-ems-overview.css +5 -3
  13. package/adminWww/css/nexowatt-native-shell.css +85 -413
  14. package/adminWww/index.html +20 -21
  15. package/adminWww/js/eos-account-management.js +28 -19
  16. package/adminWww/js/eos-assistant.js +1 -1
  17. package/adminWww/js/eos-ems-overview.js +1 -1
  18. package/adminWww/js/eos-role-bootstrap.js +17 -80
  19. package/adminWww/js/eos-role-ui.js +28 -4
  20. package/adminWww/js/nexowatt-native-shell.js +1 -1
  21. package/adminWww/static/js/nexowatt-stable-login.js +43 -70
  22. package/adminWww/static/js/nexowatt-stable-v7101.js +27 -0
  23. package/build/lib/eosAutoUpdate.js +418 -20
  24. package/build/lib/eosAutoUpdate.js.map +1 -0
  25. package/build/lib/eosRequestSecurity.js +4 -1
  26. package/build/lib/eosRequestSecurity.js.map +1 -0
  27. package/build/lib/web.js +161 -254
  28. package/build/lib/web.js.map +1 -1
  29. package/build/main.js +39 -67
  30. package/io-package.json +72 -7
  31. package/package.json +24 -25
  32. package/tools/nexowatt-account-management-selftest.cjs +15 -19
  33. package/tools/nexowatt-account-password-flow-selftest.cjs +15 -0
  34. package/tools/nexowatt-apply-ems-overview.cjs +4 -2
  35. package/tools/nexowatt-auto-update-selftest.cjs +144 -32
  36. package/tools/nexowatt-backend-runtime-selftest.cjs +147 -0
  37. package/tools/nexowatt-clean-legacy-runtime.cjs +1 -1
  38. package/tools/nexowatt-ems-overview-selftest.cjs +1 -1
  39. package/tools/nexowatt-ensure-release-defaults.cjs +1 -1
  40. package/tools/nexowatt-login-layout-selftest.cjs +9 -13
  41. package/tools/nexowatt-merge-update-selftest.cjs +7 -1
  42. package/tools/nexowatt-modern-ui-selftest.cjs +10 -46
  43. package/tools/nexowatt-password-write-selftest.cjs +46 -16
  44. package/tools/nexowatt-prebuilt-release-selftest.cjs +292 -0
  45. package/tools/nexowatt-release-defaults-selftest.cjs +1 -1
  46. package/tools/nexowatt-runtime-cleanup-selftest.cjs +6 -8
  47. package/tools/nexowatt-stable-v7102-selftest.cjs +51 -0
  48. package/tools/nexowatt-sync-release-version.cjs +43 -5
  49. package/tools/nexowatt-ui-overview-runtime-selftest.cjs +2 -3
  50. package/tools/nexowatt-validate-package.cjs +54 -29
  51. package/tools/nexowatt-version-sync-selftest.cjs +18 -1
  52. package/INSTALL_TEST_V7.10.0.md +0 -11
  53. package/MERGE_UPDATE_README_V7.10.0.md +0 -5
  54. package/PUBLISH_STABLE_V7.10.0.md +0 -15
  55. package/README_STABILITY_V7.10.0.md +0 -3
  56. package/RELEASE_ACCEPTANCE_V7.10.0.md +0 -11
  57. package/RELEASE_NOTES_V7.10.0.md +0 -17
  58. package/adminWww/js/eos-release-watch.js +0 -77
  59. package/adminWww/static/js/nexowatt-stable-v7100.js +0 -111
  60. package/build/lib/eosPassword.js +0 -72
  61. package/build/lib/nexowattStableAuth.js +0 -74
  62. package/src/lib/eosAutoUpdate.ts +0 -320
  63. package/tools/nexowatt-cache-update-selftest.cjs +0 -12
  64. package/tools/nexowatt-request-security-selftest.cjs +0 -11
  65. package/tools/nexowatt-stable-v7100-selftest.cjs +0 -17
@@ -17,7 +17,7 @@
17
17
  }
18
18
  #eos-ems-overview-runtime { width: calc(100% - 32px); max-width: none; margin: 0 16px 20px; }
19
19
  .eos-ems-overview-card * { box-sizing: border-box; }
20
- .eos-ems-overview-header { display:flex; align-items:flex-start; justify-content:flex-start; gap:20px; }
20
+ .eos-ems-overview-header { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; }
21
21
  .eos-ems-overview-header h2 { margin:5px 0 6px; font-size:clamp(1.2rem,2vw,1.65rem); color:#f5fbff; }
22
22
  .eos-ems-overview-header p { margin:0; max-width:760px; color:#9eb2c2; line-height:1.45; }
23
23
  .eos-ems-overview-eyebrow { color:#49e39e; font-size:.72rem; font-weight:900; letter-spacing:.13em; text-transform:uppercase; }
@@ -48,7 +48,9 @@
48
48
  .eos-ems-overview-event time { color:#6f8799; font-size:.68rem; font-variant-numeric:tabular-nums; }
49
49
  .eos-ems-overview-event div { display:grid; gap:2px; min-width:0; }
50
50
  .eos-ems-overview-empty { color:#718797; font-size:.76rem; }
51
- .eos-ems-overview-footer { display:flex; justify-content:flex-start; gap:12px; margin-top:12px; color:#60798a; font-size:.67rem; }
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; }
52
54
  @media (max-width: 1100px) { .eos-ems-overview-card { flex-basis:100%; max-width:none; } }
53
55
  @media (max-width: 760px) {
54
56
  #eos-ems-overview-runtime,.eos-ems-overview-card { min-width:0; width:calc(100% - 16px); margin:8px; padding:16px; }
@@ -59,7 +61,7 @@
59
61
  .eos-ems-overview-footer { display:grid; }
60
62
  }
61
63
 
62
- /* v100: startup and compatibility messages stay compact. */
64
+ /* v98: startup and compatibility messages stay compact. */
63
65
  .eos-ems-overview-card.is-loading,
64
66
  .eos-ems-overview-card.is-unavailable {
65
67
  min-height: 0;
@@ -1292,7 +1292,7 @@ html.eos-route-intro #app-paper [class*="card"] {
1292
1292
  .eos-assist-header-root .eos-assist-panel { right: 8px !important; width: calc(100vw - 16px); }
1293
1293
  }
1294
1294
 
1295
- /* NexoWatt EOS 7.10.0 – orderly login, moderately enlarged. */
1295
+ /* NexoWatt EOS 7.9.97 – orderly login, moderately enlarged. */
1296
1296
  html.eos-login,
1297
1297
  html.eos-login body {
1298
1298
  min-height: 100%;
@@ -1407,463 +1407,135 @@ html.eos-login form { max-width: 100% !important; }
1407
1407
  html.eos-safe-overview-active #app-paper > :not(.MuiSnackbar-root):not([role="presentation"]) { pointer-events: auto !important; }
1408
1408
  .eos-intro-admin-edit-hidden { display: none !important; }
1409
1409
 
1410
-
1411
- /* NexoWatt EOS 7.10.0 – edit controls belong to the lowest Intro card grid. */
1412
- html.eos-route-intro .eos-native-intro-grid {
1413
- position: relative !important;
1414
- width: 100% !important;
1415
- min-height: 80px !important;
1416
- padding-bottom: 80px !important;
1417
- overflow: visible !important;
1418
- }
1419
- html.eos-route-intro .eos-overview-edit-controls {
1420
- position: absolute !important;
1421
- right: 16px !important;
1422
- bottom: 16px !important;
1423
- z-index: 3 !important;
1424
- display: flex !important;
1425
- align-items: center !important;
1426
- gap: 8px !important;
1427
- min-width: 52px !important;
1428
- min-height: 52px !important;
1429
- padding: 6px !important;
1430
- border: 1px solid rgba(0, 229, 138, .24) !important;
1431
- border-radius: 16px !important;
1432
- background: rgba(3, 23, 34, .94) !important;
1433
- box-shadow: 0 12px 30px rgba(0, 0, 0, .26) !important;
1434
- }
1435
- html.eos-route-intro .eos-overview-edit-controls .MuiFab-root {
1436
- position: static !important;
1437
- inset: auto !important;
1438
- margin: 0 !important;
1410
+ /* NexoWatt EOS 7.9.98 – stable scrolling, clean login fields and expandable errors. */
1411
+ html.eos-app,
1412
+ html.eos-app body,
1413
+ html.eos-app #root {
1414
+ height: 100% !important;
1415
+ max-height: 100% !important;
1416
+ overflow: hidden !important;
1439
1417
  }
1440
-
1441
-
1442
- /* ==========================================================================
1443
- NexoWatt EOS 7.10.0 – stable login geometry and guaranteed cockpit scroll.
1444
- ========================================================================== */
1445
- html.eos-login,
1446
- html.eos-login body {
1447
- min-height: 100%;
1448
- margin: 0 !important;
1418
+ html.eos-app #app-paper {
1419
+ height: calc(100vh - var(--nx-content-top) - 12px) !important;
1420
+ height: calc(100dvh - var(--nx-content-top) - 12px) !important;
1421
+ min-height: 0 !important;
1422
+ max-height: calc(100vh - var(--nx-content-top) - 12px) !important;
1423
+ max-height: calc(100dvh - var(--nx-content-top) - 12px) !important;
1449
1424
  overflow-x: hidden !important;
1450
1425
  overflow-y: auto !important;
1426
+ overscroll-behavior: contain;
1427
+ scrollbar-gutter: stable;
1428
+ scrollbar-width: thin;
1429
+ scrollbar-color: rgba(0, 229, 138, .88) rgba(3, 18, 29, .72);
1451
1430
  }
1452
- html.eos-login #root {
1453
- min-height: 100dvh !important;
1454
- display: grid !important;
1455
- place-items: center !important;
1456
- box-sizing: border-box !important;
1457
- padding: 12px 8px !important;
1431
+ html.eos-app #app-paper::-webkit-scrollbar { width: 11px; }
1432
+ html.eos-app #app-paper::-webkit-scrollbar-track {
1433
+ border-radius: 12px;
1434
+ background: rgba(3, 18, 29, .72);
1458
1435
  }
1459
- html.eos-login main.MuiPaper-root {
1460
- position: relative !important;
1461
- box-sizing: border-box !important;
1462
- width: 100% !important;
1463
- min-height: calc(100dvh - 24px) !important;
1464
- display: grid !important;
1465
- place-items: center !important;
1466
- padding: 0 !important;
1467
- overflow: visible !important;
1468
- background: transparent !important;
1469
- border: 0 !important;
1470
- box-shadow: none !important;
1436
+ html.eos-app #app-paper::-webkit-scrollbar-thumb {
1437
+ min-height: 46px;
1438
+ border: 2px solid rgba(3, 18, 29, .72);
1439
+ border-radius: 12px;
1440
+ background: linear-gradient(180deg, #00e58a, #39c9ef);
1441
+ }
1442
+ html.eos-app #app-paper::-webkit-scrollbar-thumb:hover {
1443
+ background: linear-gradient(180deg, #21f2a1, #60dcff);
1471
1444
  }
1445
+
1472
1446
  html.eos-login main.MuiPaper-root::before {
1473
- width: min(414px, calc(100vw - 20px)) !important;
1474
- height: min(530px, calc(100dvh - 20px)) !important;
1475
- min-height: 0 !important;
1447
+ width: min(456px, calc(100vw - 20px)) !important;
1448
+ height: min(536px, calc(100dvh - 20px)) !important;
1476
1449
  border-radius: 24px !important;
1477
1450
  }
1478
1451
  html.eos-login main.MuiPaper-root > .eos-login-card-modern,
1479
1452
  html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#username),
1480
1453
  html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#password) {
1481
- --nx-login-card-bg: #0b2235;
1482
- box-sizing: border-box !important;
1483
- width: min(364px, calc(100vw - 50px)) !important;
1484
- min-width: 0 !important;
1454
+ width: min(400px, calc(100vw - 48px)) !important;
1455
+ max-width: 400px !important;
1485
1456
  min-height: 0 !important;
1486
1457
  height: auto !important;
1487
- max-width: 364px !important;
1488
- max-height: none !important;
1489
- padding: 25px 27px 22px !important;
1458
+ padding: 30px 32px 28px !important;
1459
+ gap: 0 !important;
1490
1460
  overflow: visible !important;
1491
- border-radius: 20px !important;
1492
- background: linear-gradient(180deg, #102b42 0%, var(--nx-login-card-bg) 42%, #061725 100%) !important;
1461
+ border-radius: 22px !important;
1493
1462
  }
1494
- html.eos-login .eos-login-card-modern > .MuiGrid2-root {
1463
+ html.eos-login .eos-login-card-modern > .MuiGrid2-root,
1464
+ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#username) > .MuiGrid2-root,
1465
+ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#password) > .MuiGrid2-root {
1495
1466
  width: 100% !important;
1496
1467
  min-width: 0 !important;
1497
- align-items: stretch !important;
1498
- }
1499
- html.eos-login .eos-login-card-modern .MuiBox-root:has(> img),
1500
- html.eos-login .eos-login-card-modern .MuiAvatar-root {
1501
- width: 82px !important;
1502
- height: 82px !important;
1503
- align-self: center !important;
1504
- }
1505
- html.eos-login .eos-login-card-modern h1.MuiTypography-root {
1506
- margin: 4px 0 2px !important;
1507
- line-height: 1.2 !important;
1508
- text-align: center !important;
1509
- }
1510
- html.eos-login .eos-login-card-modern .MuiTextField-root {
1511
- width: 100% !important;
1512
- margin-top: 17px !important;
1513
- margin-bottom: 1px !important;
1514
- overflow: visible !important;
1515
1468
  }
1516
- html.eos-login .eos-login-card-modern .MuiFormControl-root,
1517
- html.eos-login .eos-login-card-modern .MuiInputBase-root {
1469
+ html.eos-login .MuiFormControl-root {
1518
1470
  width: 100% !important;
1519
- min-width: 0 !important;
1520
- overflow: visible !important;
1521
- }
1522
- html.eos-login .eos-login-card-modern .MuiInputLabel-root,
1523
- html.eos-login .eos-login-card-modern .MuiInputLabel-root.MuiInputLabel-shrink,
1524
- html.eos-login .eos-login-card-modern .MuiInputLabel-root[data-shrink="true"] {
1525
- z-index: 2 !important;
1526
- transform: translate(14px, -9px) scale(.75) !important;
1527
- transform-origin: left top !important;
1528
- padding: 0 5px !important;
1529
- line-height: 1 !important;
1530
- color: rgba(226, 243, 251, .82) !important;
1531
- background: var(--nx-login-card-bg) !important;
1532
- pointer-events: none !important;
1471
+ margin: 13px 0 3px !important;
1533
1472
  }
1534
- html.eos-login .eos-login-card-modern .MuiInputLabel-root.Mui-focused { color: #00e58a !important; }
1535
- html.eos-login .eos-login-card-modern .MuiOutlinedInput-root {
1473
+ html.eos-login .MuiInputLabel-root { display: none !important; }
1474
+ html.eos-login .MuiOutlinedInput-root {
1536
1475
  min-height: 46px !important;
1537
- border-radius: 8px !important;
1538
- background: rgba(3, 15, 26, .58) !important;
1476
+ border-radius: 6px !important;
1477
+ background: rgba(4, 19, 31, .76) !important;
1539
1478
  }
1540
- html.eos-login .eos-login-card-modern .MuiOutlinedInput-input {
1479
+ html.eos-login .MuiOutlinedInput-input {
1541
1480
  min-height: 0 !important;
1542
- padding: 11px 13px !important;
1543
- line-height: 24px !important;
1481
+ padding: 11px 14px !important;
1482
+ line-height: 22px !important;
1544
1483
  }
1545
- html.eos-login .eos-login-card-modern .MuiOutlinedInput-notchedOutline { top: -5px !important; }
1546
- html.eos-login .eos-login-card-modern .MuiOutlinedInput-notchedOutline legend {
1547
- width: auto !important;
1548
- max-width: calc(100% - 24px) !important;
1549
- height: 11px !important;
1550
- padding: 0 !important;
1551
- overflow: hidden !important;
1484
+ html.eos-login .MuiOutlinedInput-input::placeholder {
1485
+ color: rgba(245, 251, 255, .92) !important;
1486
+ opacity: 1 !important;
1552
1487
  }
1553
- html.eos-login .eos-login-card-modern .MuiOutlinedInput-notchedOutline legend > span {
1554
- display: inline-block !important;
1555
- padding: 0 5px !important;
1556
- font-size: .75em !important;
1488
+ html.eos-login .MuiOutlinedInput-notchedOutline legend {
1489
+ width: 0 !important;
1490
+ max-width: 0 !important;
1491
+ padding: 0 !important;
1557
1492
  }
1558
- html.eos-login .eos-login-card-modern .MuiFormControlLabel-root {
1559
- align-self: center !important;
1560
- margin: 5px 0 3px !important;
1493
+ html.eos-login .MuiFormControlLabel-root {
1494
+ margin: 7px 0 5px !important;
1561
1495
  }
1562
- html.eos-login .eos-login-card-modern button[type="submit"] {
1563
- width: 100% !important;
1564
- min-height: 42px !important;
1565
- margin: 5px 0 0 !important;
1496
+ html.eos-login .MuiButton-root[type="submit"] {
1497
+ min-height: 44px !important;
1498
+ margin: 8px 0 0 !important;
1566
1499
  }
1567
- html.eos-login .eos-login-card-modern > .MuiBox-root:last-child {
1568
- width: 100% !important;
1569
- margin-top: 20px !important;
1570
- padding-top: 0 !important;
1500
+ html.eos-login .eos-login-card-modern > .MuiBox-root:last-child,
1501
+ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#username) > .MuiBox-root:last-child,
1502
+ html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#password) > .MuiBox-root:last-child {
1503
+ margin-top: 28px !important;
1571
1504
  }
1572
1505
  html.eos-login .MuiAlert-root,
1573
- html.eos-login [role="alert"],
1574
- html.eos-login .eos-login-first-status,
1575
- html.eos-login .eos-login-first-hint {
1576
- position: static !important;
1577
- box-sizing: border-box !important;
1578
- width: 100% !important;
1579
- max-width: 100% !important;
1580
- max-height: none !important;
1581
- margin-top: 9px !important;
1582
- overflow: visible !important;
1583
- white-space: normal !important;
1584
- overflow-wrap: anywhere !important;
1585
- flex-shrink: 0 !important;
1586
- }
1587
- html.eos-login .eos-login-first-status:empty,
1588
- html.eos-login .eos-login-first-hint:empty { display: none !important; }
1589
- html.eos-login [data-nw-login-card="true"]:not(.MuiPaper-root):not(.eos-login-card-modern),
1590
- html.eos-login [data-nw-login-shell="true"]:not(main):not(.MuiPaper-root) {
1591
- width: 100% !important;
1592
- min-width: 0 !important;
1593
- max-width: 100% !important;
1594
- min-height: 0 !important;
1595
- height: auto !important;
1596
- max-height: none !important;
1597
- margin: 0 !important;
1598
- padding: 0 !important;
1599
- overflow: visible !important;
1600
- border: 0 !important;
1601
- background: transparent !important;
1602
- box-shadow: none !important;
1603
- }
1604
-
1605
- /* Header and navigation stay fixed. The complete Intro surface below them has
1606
- one visible, draggable vertical scrollbar. */
1607
- html.eos-app.eos-route-intro,
1608
- html.eos-app.eos-route-intro body,
1609
- html.eos-app.eos-route-intro #root {
1610
- height: 100dvh !important;
1611
- max-height: 100dvh !important;
1612
- overflow: hidden !important;
1613
- }
1614
- html.eos-app.eos-route-intro #app-paper {
1615
- position: fixed !important;
1616
- top: var(--nx-content-top, 154px) !important;
1617
- right: var(--nx-page-x, 12px) !important;
1618
- bottom: 8px !important;
1619
- left: var(--nx-page-x, 12px) !important;
1620
- box-sizing: border-box !important;
1621
- width: auto !important;
1622
- height: auto !important;
1623
- min-height: 0 !important;
1624
- max-height: none !important;
1625
- margin: 0 !important;
1626
- padding-bottom: 0 !important;
1627
- overflow-x: hidden !important;
1628
- overflow-y: scroll !important;
1629
- overscroll-behavior: contain !important;
1630
- -webkit-overflow-scrolling: touch;
1631
- scrollbar-gutter: stable both-edges;
1632
- scrollbar-width: thin;
1633
- scrollbar-color: #00dc84 rgba(3, 15, 26, .78);
1634
- }
1635
- html.eos-app.eos-route-intro #app-paper::-webkit-scrollbar { width: 12px !important; }
1636
- html.eos-app.eos-route-intro #app-paper::-webkit-scrollbar-track {
1637
- background: rgba(3, 15, 26, .78) !important;
1638
- border-radius: 999px !important;
1639
- }
1640
- html.eos-app.eos-route-intro #app-paper::-webkit-scrollbar-thumb {
1641
- border: 2px solid rgba(3, 15, 26, .78) !important;
1642
- border-radius: 999px !important;
1643
- background: linear-gradient(180deg, #00dc84, #45d5ff) !important;
1644
- }
1645
- html.eos-app.eos-route-intro #app-paper > *,
1646
- html.eos-app.eos-route-intro #app-paper > .eos-intro-scroll-content,
1647
- html.eos-app.eos-route-intro #app-paper > [class*="TabContainer"],
1648
- html.eos-app.eos-route-intro #app-paper > .MuiPaper-root {
1649
- min-height: max-content !important;
1650
- height: auto !important;
1651
- max-height: none !important;
1652
- overflow: visible !important;
1653
- flex-shrink: 0 !important;
1506
+ html.eos-login [role="alert"] {
1507
+ margin: 14px 0 1px !important;
1508
+ padding: 9px 11px !important;
1509
+ line-height: 1.35 !important;
1654
1510
  }
1655
1511
  @media (max-width: 500px) {
1656
- html.eos-login #root { padding: 8px !important; }
1657
- html.eos-login main.MuiPaper-root::before { width: calc(100vw - 12px) !important; height: calc(100% - 4px) !important; }
1512
+ html.eos-login main.MuiPaper-root::before {
1513
+ width: calc(100vw - 12px) !important;
1514
+ height: auto !important;
1515
+ min-height: min(520px, calc(100dvh - 12px)) !important;
1516
+ }
1658
1517
  html.eos-login main.MuiPaper-root > .eos-login-card-modern,
1659
1518
  html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#username),
1660
1519
  html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#password) {
1661
1520
  width: calc(100vw - 38px) !important;
1662
1521
  max-width: none !important;
1663
- padding: 22px 20px !important;
1522
+ padding: 25px 22px 23px !important;
1664
1523
  }
1665
1524
  }
1666
1525
 
1667
1526
 
1668
- /* NexoWatt EOS 7.10.0 – restored clean login geometry. */
1669
- html.eos-login main.MuiPaper-root::before {
1670
- width: min(424px, calc(100vw - 20px)) !important;
1671
- height: min(548px, calc(100dvh - 20px)) !important;
1672
- border-radius: 24px !important;
1673
- }
1674
- html.eos-login main.MuiPaper-root > .eos-login-card-modern,
1675
- html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#username),
1676
- html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#password) {
1677
- --nx-login-card-bg: #0a1f31;
1678
- width: min(372px, calc(100vw - 48px)) !important;
1679
- min-height: 0 !important;
1680
- height: auto !important;
1681
- max-height: none !important;
1682
- padding: 26px 28px 24px !important;
1683
- overflow: visible !important;
1684
- border-radius: 21px !important;
1685
- background: linear-gradient(180deg, #102b42 0%, var(--nx-login-card-bg) 42%, #061725 100%) !important;
1686
- }
1687
- html.eos-login .eos-login-card-modern .MuiTextField-root {
1688
- width: 100% !important;
1689
- margin-top: 16px !important;
1690
- margin-bottom: 2px !important;
1691
- }
1692
- html.eos-login .eos-login-card-modern .MuiInputLabel-root,
1693
- html.eos-login .eos-login-card-modern .MuiInputLabel-root.MuiInputLabel-shrink,
1694
- html.eos-login .eos-login-card-modern .MuiInputLabel-root[data-shrink="true"] {
1695
- z-index: 2 !important;
1696
- transform: translate(14px, -8px) scale(.75) !important;
1697
- transform-origin: left top !important;
1698
- padding: 0 6px !important;
1699
- line-height: 1.05 !important;
1700
- color: rgba(226,243,251,.82) !important;
1701
- background: var(--nx-login-card-bg) !important;
1702
- pointer-events: none !important;
1703
- }
1704
- html.eos-login .eos-login-card-modern .MuiInputLabel-root.Mui-focused { color: #00e58a !important; }
1705
- html.eos-login .eos-login-card-modern .MuiOutlinedInput-root {
1706
- min-height: 46px !important;
1707
- border-radius: 8px !important;
1708
- background: rgba(3,15,26,.58) !important;
1709
- }
1710
- html.eos-login .eos-login-card-modern .MuiOutlinedInput-input {
1711
- min-height: 0 !important;
1712
- padding: 12px 13px !important;
1713
- line-height: 1.25 !important;
1714
- }
1715
- html.eos-login .eos-login-card-modern .MuiOutlinedInput-notchedOutline { top: -5px !important; }
1716
- html.eos-login .eos-login-card-modern .MuiOutlinedInput-notchedOutline legend {
1717
- display: block !important;
1718
- width: auto !important;
1719
- max-width: 100% !important;
1720
- height: 11px !important;
1721
- overflow: hidden !important;
1722
- }
1723
- html.eos-login .eos-login-card-modern .MuiFormControlLabel-root {
1724
- align-self: center !important;
1725
- margin: 6px 0 4px !important;
1726
- }
1727
- html.eos-login .eos-login-card-modern button[type="submit"] { min-height: 42px !important; margin: 5px 0 0 !important; }
1728
- html.eos-login .eos-login-card-modern > .MuiBox-root:last-child { margin-top: 18px !important; padding-top: 0 !important; }
1729
- html.eos-login .eos-login-card-modern .MuiBox-root:has(> img),
1730
- html.eos-login .eos-login-card-modern .MuiAvatar-root { width: 90px !important; height: 90px !important; }
1731
- @media (max-height: 620px) {
1732
- html.eos-login main.MuiPaper-root::before { height: calc(100% - 8px) !important; }
1733
- html.eos-login main.MuiPaper-root > .eos-login-card-modern,
1734
- html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#username),
1735
- html.eos-login main.MuiPaper-root > .MuiPaper-root:has(#password) { padding-top: 20px !important; padding-bottom: 18px !important; }
1736
- }
1737
-
1738
-
1739
- /* NexoWatt EOS 7.10.0 – guaranteed scroll surface for the native overview. */
1740
- html.eos-app.eos-route-intro,
1741
- html.eos-app.eos-route-intro body,
1742
- html.eos-app.eos-route-intro #root {
1743
- height: 100dvh !important;
1744
- max-height: 100dvh !important;
1745
- overflow: hidden !important;
1746
- }
1747
- html.eos-app.eos-route-intro #app-paper,
1748
- html.eos-app.eos-intro-scroll-enabled #app-paper {
1749
- position: fixed !important;
1750
- top: var(--nx-content-top) !important;
1751
- right: var(--nx-page-x) !important;
1752
- bottom: 8px !important;
1753
- left: var(--nx-page-x) !important;
1754
- width: auto !important;
1755
- height: auto !important;
1527
+ /* NexoWatt EOS 7.10.1 – persistent native overview scrolling. */
1528
+ html.eos-app.eos-route-intro #app-paper {
1529
+ height: calc(100dvh - var(--nx-content-top) - 12px) !important;
1756
1530
  min-height: 0 !important;
1757
- max-height: none !important;
1758
- margin: 0 !important;
1759
- padding-bottom: 0 !important;
1531
+ max-height: calc(100dvh - var(--nx-content-top) - 12px) !important;
1760
1532
  overflow-x: hidden !important;
1761
1533
  overflow-y: scroll !important;
1762
- overscroll-behavior: contain !important;
1763
1534
  scrollbar-gutter: stable !important;
1764
- scrollbar-width: thin !important;
1765
- scrollbar-color: rgba(0,229,138,.92) rgba(3,15,26,.78) !important;
1766
- -webkit-overflow-scrolling: touch;
1767
- }
1768
- html.eos-app.eos-route-intro #app-paper::-webkit-scrollbar,
1769
- html.eos-app.eos-intro-scroll-enabled #app-paper::-webkit-scrollbar { width: 12px !important; }
1770
- html.eos-app.eos-route-intro #app-paper::-webkit-scrollbar-track,
1771
- html.eos-app.eos-intro-scroll-enabled #app-paper::-webkit-scrollbar-track {
1772
- background: rgba(3,15,26,.78) !important;
1773
- border-radius: 999px !important;
1774
- }
1775
- html.eos-app.eos-route-intro #app-paper::-webkit-scrollbar-thumb,
1776
- html.eos-app.eos-intro-scroll-enabled #app-paper::-webkit-scrollbar-thumb {
1777
- min-height: 54px !important;
1778
- border: 2px solid rgba(3,15,26,.78) !important;
1779
- border-radius: 999px !important;
1780
- background: linear-gradient(180deg, #00e58a, #45d5ff) !important;
1781
- }
1782
- html.eos-app.eos-route-intro #app-paper > *,
1783
- html.eos-app.eos-intro-scroll-enabled #app-paper > * {
1784
- flex-shrink: 0 !important;
1785
- overflow: visible !important;
1535
+ overscroll-behavior: contain;
1786
1536
  }
1787
- html.eos-app.eos-route-intro #app-paper > :last-child,
1788
- html.eos-app.eos-intro-scroll-enabled #app-paper > :last-child { margin-bottom: 28px !important; }
1789
-
1790
1537
 
1791
- /* 7.10.0 final login fields: localized labels sit above the inputs. This is
1792
- deliberately not a floating MUI label, so no browser/font combination can
1793
- draw the field border through the text. */
1794
- html.eos-login .eos-login-card-modern .MuiTextField-root {
1795
- display: flex !important;
1796
- flex-direction: column !important;
1797
- gap: 6px !important;
1798
- margin-top: 13px !important;
1799
- overflow: visible !important;
1800
- }
1801
- html.eos-login .eos-login-card-modern .MuiTextField-root[data-eos-login-label]::before,
1802
- html.eos-login .eos-login-card-modern .MuiFormControl-root[data-eos-login-label]::before {
1803
- content: attr(data-eos-login-label);
1804
- display: block !important;
1805
- min-height: 14px !important;
1806
- padding-left: 2px !important;
1807
- color: rgba(230, 245, 252, .88) !important;
1808
- font-size: 12px !important;
1809
- font-weight: 700 !important;
1810
- line-height: 14px !important;
1811
- letter-spacing: .01em !important;
1812
- }
1813
- html.eos-login .eos-login-card-modern .MuiInputLabel-root {
1814
- display: none !important;
1815
- }
1816
- html.eos-login .eos-login-card-modern .MuiOutlinedInput-notchedOutline {
1817
- top: 0 !important;
1818
- }
1819
- html.eos-login .eos-login-card-modern .MuiOutlinedInput-notchedOutline legend {
1820
- display: none !important;
1821
- width: 0 !important;
1822
- max-width: 0 !important;
1823
- height: 0 !important;
1824
- }
1825
-
1826
-
1827
- /* NexoWatt EOS 7.10.0 final – static labels above login fields. */
1828
- html.eos-login .eos-login-card-modern .MuiTextField-root {
1829
- display: flex !important;
1830
- flex-direction: column !important;
1831
- align-items: stretch !important;
1832
- gap: 6px !important;
1833
- margin-top: 14px !important;
1834
- overflow: visible !important;
1835
- }
1836
- html.eos-login .eos-login-card-modern .MuiInputLabel-root,
1837
- html.eos-login .eos-login-card-modern .MuiInputLabel-root.MuiInputLabel-shrink,
1838
- html.eos-login .eos-login-card-modern .MuiInputLabel-root[data-shrink="true"] {
1839
- display: block !important;
1840
- position: static !important;
1841
- order: 0 !important;
1842
- align-self: flex-start !important;
1843
- transform: none !important;
1844
- transform-origin: initial !important;
1845
- max-width: 100% !important;
1846
- margin: 0 0 1px 2px !important;
1847
- padding: 0 !important;
1848
- line-height: 1.25 !important;
1849
- font-size: 13px !important;
1850
- color: rgba(226, 243, 251, .86) !important;
1851
- background: transparent !important;
1852
- }
1853
- html.eos-login .eos-login-card-modern .MuiInputLabel-root.Mui-focused {
1854
- color: #00e58a !important;
1855
- }
1856
- html.eos-login .eos-login-card-modern .MuiInputBase-root {
1857
- order: 1 !important;
1858
- width: 100% !important;
1859
- }
1860
- html.eos-login .eos-login-card-modern .MuiOutlinedInput-notchedOutline {
1861
- top: 0 !important;
1862
- }
1863
- html.eos-login .eos-login-card-modern .MuiOutlinedInput-notchedOutline legend {
1864
- display: none !important;
1865
- width: 0 !important;
1866
- max-width: 0 !important;
1867
- height: 0 !important;
1868
- padding: 0 !important;
1869
- }
1538
+ /* NexoWatt EOS 7.10.1 – edit control inside the lowest card grid. */
1539
+ html.eos-route-intro .eos-native-intro-grid { position: relative !important; width:100% !important; padding-bottom:72px !important; overflow:visible !important; }
1540
+ html.eos-route-intro .eos-overview-edit-controls { position:absolute !important; right:16px !important; bottom:16px !important; z-index:3 !important; padding:6px !important; border:1px solid rgba(0,229,138,.24) !important; border-radius:16px !important; background:rgba(3,23,34,.94) !important; }
1541
+ html.eos-route-intro .eos-overview-edit-controls .MuiFab-root { position:static !important; inset:auto !important; margin:0 !important; }
@@ -8,9 +8,8 @@
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-release-watch.js?v=7100"></script>
12
- <script src="./js/eos-manual-write-policy.js?v=7100"></script>
13
- <script type="module" src="./assets/hostInit-v84.js?v=7100"></script>
11
+ <script src="./js/eos-manual-write-policy.js?v=7101"></script>
12
+ <script type="module" src="./assets/hostInit-v84.js?v=84"></script>
14
13
 
15
14
  <meta charset="utf-8" />
16
15
  <link
@@ -37,9 +36,9 @@
37
36
  rel="stylesheet"
38
37
  href="css/leaflet.css"
39
38
  />
40
- <link rel="stylesheet" href="./css/nexowatt-native-shell.css?v=7100" />
41
- <link rel="stylesheet" href="./css/eos-ems-overview.css?v=7100" />
42
- <link rel="stylesheet" href="./css/eos-auto-update.css?v=7100" />
39
+ <link rel="stylesheet" href="./css/nexowatt-native-shell.css?v=7101" />
40
+ <link rel="stylesheet" href="./css/eos-ems-overview.css?v=7101" />
41
+ <link rel="stylesheet" href="./css/eos-auto-update.css?v=7101" />
43
42
  <link
44
43
  rel="manifest"
45
44
  href="manifest.json"
@@ -159,24 +158,24 @@
159
158
  false,
160
159
  );
161
160
  </script>
162
- <link rel="modulepreload" crossorigin href="./assets/preload-helper-BDBacUwf.js?v=7100">
163
- <link rel="modulepreload" crossorigin href="./assets/iobroker_admin__mf_v__runtimeInit__mf_v__-g2X2zhAf.js?v=7100">
164
- <script defer src="./js/eos-role-bootstrap.js?v=7100" data-eos-entry="./assets/index-CQZugZ1z-v84.js?v=7100"></script>
165
- <script defer src="./js/eos-policy-client.js?v=7100"></script>
166
- <script defer src="./js/eos-branding-sanitizer.js?v=7100"></script>
167
- <script defer src="./js/nexowatt-native-shell.js?v=7100"></script>
168
- <script defer src="./js/eos-native-security.js?v=7100"></script>
169
- <script defer src="./js/eos-basic-settings.js?v=7100"></script>
170
- <script defer src="./js/eos-role-ui.js?v=7100"></script>
171
- <script defer src="./js/eos-ems-overview.js?v=7100"></script>
172
- <script defer src="./js/eos-account-management.js?v=7100"></script>
173
- <script defer src="./js/eos-auto-update.js?v=7100"></script>
174
- <script defer src="./js/eos-assistant.js?v=7100"></script>
161
+ <link rel="modulepreload" crossorigin href="./assets/preload-helper-BDBacUwf.js">
162
+ <link rel="modulepreload" crossorigin href="./assets/iobroker_admin__mf_v__runtimeInit__mf_v__-g2X2zhAf.js">
163
+ <script defer src="./js/eos-role-bootstrap.js?v=7101" data-eos-entry="./assets/index-CQZugZ1z-v84.js?v=84"></script>
164
+ <script defer src="./js/eos-policy-client.js?v=7101"></script>
165
+ <script defer src="./js/eos-branding-sanitizer.js?v=7101"></script>
166
+ <script defer src="./js/nexowatt-native-shell.js?v=7101"></script>
167
+ <script defer src="./js/eos-native-security.js?v=7101"></script>
168
+ <script defer src="./js/eos-basic-settings.js?v=7101"></script>
169
+ <script defer src="./js/eos-role-ui.js?v=7101"></script>
170
+ <script defer src="./js/eos-ems-overview.js?v=7101"></script>
171
+
172
+ <script defer src="./js/eos-auto-update.js?v=7101"></script>
173
+ <script defer src="./js/eos-assistant.js?v=7101"></script>
175
174
  </head>
176
175
  <body>
177
176
  <noscript>Für NexoWatt EOS muss JavaScript aktiviert sein.</noscript>
178
177
  <div id="root"></div>
179
- <script defer src="static/js/nexowatt-stable-login.js?v=7100"></script>
180
- <script defer src="static/js/nexowatt-stable-v7100.js?v=7100"></script>
178
+ <script defer src="static/js/nexowatt-stable-login.js?v=7101"></script>
179
+ <script defer src="static/js/nexowatt-stable-v7101.js?v=7101"></script>
181
180
  </body>
182
181
  </html>