micrOSDevToolKit 3.6.2__tar.gz → 3.6.3__tar.gz

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 (450) hide show
  1. {microsdevtoolkit-3.6.2/micrOSDevToolKit.egg-info → microsdevtoolkit-3.6.3}/PKG-INFO +1 -1
  2. microsdevtoolkit-3.6.2/micrOS/micropython/micrOS-esp32-1.28.0-3.6.0-0.bin → microsdevtoolkit-3.6.3/micrOS/micropython/micrOS-esp32-1.28.0-3.6.3-0.bin +0 -0
  3. microsdevtoolkit-3.6.2/micrOS/micropython/micrOS-esp32c3-1.28.0-3.6.0-0.bin → microsdevtoolkit-3.6.3/micrOS/micropython/micrOS-esp32c3-1.28.0-3.6.3-0.bin +0 -0
  4. microsdevtoolkit-3.6.2/micrOS/micropython/micrOS-esp32c6-1.28.0-3.6.0-0.bin → microsdevtoolkit-3.6.3/micrOS/micropython/micrOS-esp32c6-1.28.0-3.6.3-0.bin +0 -0
  5. microsdevtoolkit-3.6.2/micrOS/micropython/micrOS-esp32s3-1.28.0-3.6.0-0.bin → microsdevtoolkit-3.6.3/micrOS/micropython/micrOS-esp32s3-1.28.0-3.6.3-0.bin +0 -0
  6. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +12 -12
  7. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/Shell.py +1 -1
  8. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_web.py +7 -1
  9. microsdevtoolkit-3.6.3/micrOS/source/modules/__pycache__/LM_web.cpython-312.pyc +0 -0
  10. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/web/config.css +8 -0
  11. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/web/config.js +95 -6
  12. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3/micrOSDevToolKit.egg-info}/PKG-INFO +1 -1
  13. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOSDevToolKit.egg-info/SOURCES.txt +4 -4
  14. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/setup.py +1 -1
  15. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/Shell.mpy +0 -0
  16. microsdevtoolkit-3.6.3/toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
  17. microsdevtoolkit-3.6.3/toolkit/workspace/precompiled/web/config.css +1 -0
  18. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/web/config.js +6 -2
  19. microsdevtoolkit-3.6.2/micrOS/source/modules/__pycache__/LM_web.cpython-312.pyc +0 -0
  20. microsdevtoolkit-3.6.2/toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
  21. microsdevtoolkit-3.6.2/toolkit/workspace/precompiled/web/config.css +0 -1
  22. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/LICENSE +0 -0
  23. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/MANIFEST.in +0 -0
  24. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/README.md +0 -0
  25. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/devToolKit.py +0 -0
  26. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/env/__init__.py +0 -0
  27. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/env/driver_cp210x/.DS_Store +0 -0
  28. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x64.exe +0 -0
  29. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x86.exe +0 -0
  30. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210x_Universal_Windows_Driver_ReleaseNotes.txt +0 -0
  31. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/env/driver_cp210x/CP210x_Universal_Windows_Driver/SLAB_License_Agreement_VCP_Windows.txt +0 -0
  32. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm/silabser.sys +0 -0
  33. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm64/silabser.sys +0 -0
  34. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/env/driver_cp210x/CP210x_Universal_Windows_Driver/dpinst.xml +0 -0
  35. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.cat +0 -0
  36. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.inf +0 -0
  37. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x64/silabser.sys +0 -0
  38. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x86/silabser.sys +0 -0
  39. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
  40. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +0 -0
  41. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/media/__init__.py +0 -0
  42. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/media/dnd.png +0 -0
  43. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/media/logo.png +0 -0
  44. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/media/logo_mini.png +0 -0
  45. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/media/usb_port_icon.png +0 -0
  46. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/media/wifi_icon.png +0 -0
  47. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/__init__.py +0 -0
  48. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/micropython/board_commands.json +0 -0
  49. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/micropython/esp32-20251209-v1.27.0.bin +0 -0
  50. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/micropython/esp32c3-20251209-v1.27.0.bin +0 -0
  51. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/micropython/esp32c5-20251209-v1.27.0.bin +0 -0
  52. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/micropython/esp32c6-20251209-v1.27.0.bin +0 -0
  53. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/micropython/esp32cam-v1.21.0_camera.bin +0 -0
  54. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/micropython/esp32s2-20251209-v1.27.0.bin +0 -0
  55. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin +0 -0
  56. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/micropython/esp32s3-4MBflash-20241129-v1.24.1.bin +0 -0
  57. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin +0 -0
  58. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin +0 -0
  59. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2 +0 -0
  60. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/micropython/tinypico-20251209-v1.27.0.bin +0 -0
  61. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/.DS_Store +0 -0
  62. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/Auth.py +0 -0
  63. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/Buffer.py +0 -0
  64. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/Common.py +0 -0
  65. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/Config.py +0 -0
  66. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/Debug.py +0 -0
  67. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/Files.py +0 -0
  68. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/Hooks.py +0 -0
  69. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/InterConnect.py +0 -0
  70. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/Interrupts.py +0 -0
  71. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/Logger.py +0 -0
  72. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/Network.py +0 -0
  73. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/Notify.py +0 -0
  74. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/Pacman.py +0 -0
  75. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/Scheduler.py +0 -0
  76. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/Server.py +0 -0
  77. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/Tasks.py +0 -0
  78. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/Time.py +0 -0
  79. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/Types.py +0 -0
  80. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/Web.py +0 -0
  81. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Auth.cpython-312.pyc +0 -0
  82. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Buffer.cpython-312.pyc +0 -0
  83. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
  84. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Config.cpython-312.pyc +0 -0
  85. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
  86. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Files.cpython-312.pyc +0 -0
  87. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Hooks.cpython-312.pyc +0 -0
  88. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/InterConnect.cpython-312.pyc +0 -0
  89. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Interrupts.cpython-312.pyc +0 -0
  90. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
  91. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Network.cpython-312.pyc +0 -0
  92. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Notify.cpython-312.pyc +0 -0
  93. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Pacman.cpython-312.pyc +0 -0
  94. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Power.cpython-312.pyc +0 -0
  95. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Scheduler.cpython-312.pyc +0 -0
  96. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
  97. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
  98. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Tasks.cpython-312.pyc +0 -0
  99. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Time.cpython-312.pyc +0 -0
  100. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Types.cpython-312.pyc +0 -0
  101. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/Web.cpython-312.pyc +0 -0
  102. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/micrOS.cpython-312.pyc +0 -0
  103. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/microIO.cpython-312.pyc +0 -0
  104. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/replhelper.cpython-312.pyc +0 -0
  105. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/__pycache__/urequests.cpython-312.pyc +0 -0
  106. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/config/_git.keep +0 -0
  107. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/helpers.py +0 -0
  108. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/main.py +0 -0
  109. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/mespnow.py +0 -0
  110. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/micrOS.py +0 -0
  111. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/micrOSloader.py +0 -0
  112. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/microIO.py +0 -0
  113. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/IO_esp32.py +0 -0
  114. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/IO_esp32c3.py +0 -0
  115. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/IO_esp32c5.py +0 -0
  116. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/IO_esp32c6.py +0 -0
  117. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/IO_esp32s2.py +0 -0
  118. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/IO_esp32s3.py +0 -0
  119. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/IO_m5stamp.py +0 -0
  120. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/IO_qtpy.py +0 -0
  121. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/IO_rp2.py +0 -0
  122. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/IO_tinypico.py +0 -0
  123. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_aht10.py +0 -0
  124. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_bme280.py +0 -0
  125. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_buzzer.py +0 -0
  126. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_cct.py +0 -0
  127. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_cluster.py +0 -0
  128. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_dht11.py +0 -0
  129. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_dht22.py +0 -0
  130. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_dimmer.py +0 -0
  131. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_ds18.py +0 -0
  132. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_esp32.py +0 -0
  133. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_espnow.py +0 -0
  134. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_fileserver.py +0 -0
  135. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_gameOfLife.py +0 -0
  136. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_genIO.py +0 -0
  137. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_i2c.py +0 -0
  138. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_i2s_mic.py +0 -0
  139. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_light_sensor.py +0 -0
  140. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_neoeffects.py +0 -0
  141. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_neopixel.py +0 -0
  142. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_oled.py +0 -0
  143. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_oled_sh1106.py +0 -0
  144. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_oled_ui.py +0 -0
  145. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_pacman.py +0 -0
  146. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_presence.py +0 -0
  147. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_rencoder.py +0 -0
  148. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_rest.py +0 -0
  149. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_rgb.py +0 -0
  150. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_rgbcct.py +0 -0
  151. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_robustness.py +0 -0
  152. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_rp2w.py +0 -0
  153. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_sdcard.py +0 -0
  154. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_servo.py +0 -0
  155. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_stepper.py +0 -0
  156. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_switch.py +0 -0
  157. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_system.py +0 -0
  158. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_telegram.py +0 -0
  159. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_tinyrgb.py +0 -0
  160. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/LM_veml7700.py +0 -0
  161. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/__pycache__/LM_cct.cpython-312.pyc +0 -0
  162. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/__pycache__/LM_dht11.cpython-312.pyc +0 -0
  163. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/__pycache__/LM_dht22.cpython-312.pyc +0 -0
  164. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/__pycache__/LM_dimmer.cpython-312.pyc +0 -0
  165. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/__pycache__/LM_fileserver.cpython-312.pyc +0 -0
  166. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/__pycache__/LM_neopixel.cpython-312.pyc +0 -0
  167. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/__pycache__/LM_pacman.cpython-312.pyc +0 -0
  168. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/__pycache__/LM_rencoder.cpython-312.pyc +0 -0
  169. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/__pycache__/LM_rgb.cpython-312.pyc +0 -0
  170. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/__pycache__/LM_rgbcct.cpython-312.pyc +0 -0
  171. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/__pycache__/LM_roboarm.cpython-312.pyc +0 -0
  172. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/__pycache__/LM_robustness.cpython-312.pyc +0 -0
  173. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/modules/__pycache__/LM_system.cpython-312.pyc +0 -0
  174. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/urequests.py +0 -0
  175. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/web/auth.js +0 -0
  176. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/web/config.html +0 -0
  177. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/web/dashboard.html +0 -0
  178. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/web/editor.js +0 -0
  179. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/web/editor_plugins.js +0 -0
  180. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/web/favicon.ico +0 -0
  181. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/web/filesui.html +0 -0
  182. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/web/filesui.js +0 -0
  183. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/web/index.html +0 -0
  184. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/web/uapi.js +0 -0
  185. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/web/uapi_widgets.js +0 -0
  186. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/web/ubashboard.css +0 -0
  187. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/web/udashboard.js +0 -0
  188. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/web/ustyle.css +0 -0
  189. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/web/uwidgets.js +0 -0
  190. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/source/web/uwidgets_pro.js +0 -0
  191. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/utests/__init__.py +0 -0
  192. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/utests/test_buffer.py +0 -0
  193. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/utests/test_config.py +0 -0
  194. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/utests/test_memory_policy.py +0 -0
  195. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/utests/test_pacman.py +0 -0
  196. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/utests/test_scheduler.py +0 -0
  197. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/utests/test_time.py +0 -0
  198. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/utests/test_urequests.py +0 -0
  199. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/utests/test_urequests_real_api.py +0 -0
  200. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOS/utests/test_web_engine.py +0 -0
  201. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOSDevToolKit.egg-info/dependency_links.txt +0 -0
  202. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOSDevToolKit.egg-info/requires.txt +0 -0
  203. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/micrOSDevToolKit.egg-info/top_level.txt +0 -0
  204. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/setup.cfg +0 -0
  205. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/DevEnvCompile.py +0 -0
  206. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/DevEnvOTA.py +0 -0
  207. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/DevEnvUSB.py +0 -0
  208. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/Gateway.py +0 -0
  209. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/LM_to_compile.dat +0 -0
  210. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/MicrOSDevEnv.py +0 -0
  211. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/WebRepl.py +0 -0
  212. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/__init__.py +0 -0
  213. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/BackupRestore.py +0 -0
  214. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/CCTDemo.py +0 -0
  215. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/CCTTest.py +0 -0
  216. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/CamStream.py +0 -0
  217. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/CatGame.py +0 -0
  218. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/Dimmer.py +0 -0
  219. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/GetVersion.py +0 -0
  220. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/MicrophoneTest.py +0 -0
  221. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/NeoEffectsDemo.py +0 -0
  222. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/NeopixelTest.py +0 -0
  223. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/PresenceTest.py +0 -0
  224. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/QMI8685_GYRO.py +0 -0
  225. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/RGBTest.py +0 -0
  226. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/RoboArm.py +0 -0
  227. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/SED_test.py +0 -0
  228. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/SensorsTest.py +0 -0
  229. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/SystemTest.py +0 -0
  230. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/Template_app.py +0 -0
  231. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/__init__.py +0 -0
  232. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/_app_base.py +0 -0
  233. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/_capture.py +0 -0
  234. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/_gyro_visualizer.py +0 -0
  235. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/_micPlotting.py +0 -0
  236. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/_presencePlotting.py +0 -0
  237. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/dashboard_apps/uLightDemo.py +0 -0
  238. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/gateway/gateway.css +0 -0
  239. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/gateway/img_stream.html +0 -0
  240. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/gateway/index.html +0 -0
  241. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/lib/LocalMachine.py +0 -0
  242. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/lib/MicrosFiles.py +0 -0
  243. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/lib/Repository.py +0 -0
  244. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/lib/SafeInput.py +0 -0
  245. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/lib/SearchDevices.py +0 -0
  246. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/lib/SerialDriverHandler.py +0 -0
  247. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/lib/TerminalColors.py +0 -0
  248. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/lib/__init__.py +0 -0
  249. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/lib/macroScript.py +0 -0
  250. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/lib/micrOSClient.py +0 -0
  251. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/lib/micrOSClientHistory.py +0 -0
  252. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/lib/pip_package_installer.py +0 -0
  253. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/micrOSDocGen.py +0 -0
  254. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/micrOSImageBuilder.py +0 -0
  255. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/micrOSImageConfig.json +0 -0
  256. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/micrOSdashboard.py +0 -0
  257. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/micrOSlint.py +0 -0
  258. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/.DS_Store +0 -0
  259. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/IO_darwin.py +0 -0
  260. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/IO_darwin.cpython-312.pyc +0 -0
  261. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/Metrics.cpython-312.pyc +0 -0
  262. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
  263. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/camera.cpython-312.pyc +0 -0
  264. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/dht.cpython-312.pyc +0 -0
  265. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/dht.cpython-39.pyc +0 -0
  266. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/dotstar.cpython-312.pyc +0 -0
  267. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/dotstar.cpython-38.pyc +0 -0
  268. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/dotstar.cpython-39.pyc +0 -0
  269. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-312.pyc +0 -0
  270. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-38.pyc +0 -0
  271. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-39.pyc +0 -0
  272. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/esp32.cpython-312.pyc +0 -0
  273. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/esp32.cpython-38.pyc +0 -0
  274. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/esp32.cpython-39.pyc +0 -0
  275. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
  276. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/framebuf.cpython-38.pyc +0 -0
  277. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/framebuf.cpython-39.pyc +0 -0
  278. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
  279. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/machine.cpython-38.pyc +0 -0
  280. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/machine.cpython-39.pyc +0 -0
  281. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
  282. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/micropython.cpython-38.pyc +0 -0
  283. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/micropython.cpython-39.pyc +0 -0
  284. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/mip.cpython-312.pyc +0 -0
  285. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
  286. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/neopixel.cpython-38.pyc +0 -0
  287. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/neopixel.cpython-39.pyc +0 -0
  288. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
  289. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/network.cpython-38.pyc +0 -0
  290. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/network.cpython-39.pyc +0 -0
  291. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/ntptime.cpython-312.pyc +0 -0
  292. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/onewire.cpython-312.pyc +0 -0
  293. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/onewire.cpython-38.pyc +0 -0
  294. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/onewire.cpython-39.pyc +0 -0
  295. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/sim_common.cpython-312.pyc +0 -0
  296. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
  297. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/simgc.cpython-38.pyc +0 -0
  298. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/simgc.cpython-39.pyc +0 -0
  299. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
  300. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/simulator.cpython-38.pyc +0 -0
  301. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/simulator.cpython-39.pyc +0 -0
  302. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/tinypico.cpython-312.pyc +0 -0
  303. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/tinypico.cpython-38.pyc +0 -0
  304. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/tinypico.cpython-39.pyc +0 -0
  305. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
  306. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-38.pyc +0 -0
  307. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-39.pyc +0 -0
  308. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
  309. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/urandom.cpython-312.pyc +0 -0
  310. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
  311. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
  312. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/ustruct.cpython-312.pyc +0 -0
  313. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/ustruct.cpython-39.pyc +0 -0
  314. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/utime.cpython-312.pyc +0 -0
  315. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/utime.cpython-38.pyc +0 -0
  316. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/utime.cpython-39.pyc +0 -0
  317. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/webrepl.cpython-312.pyc +0 -0
  318. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/webrepl.cpython-38.pyc +0 -0
  319. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/__pycache__/webrepl.cpython-39.pyc +0 -0
  320. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/aioespnow.py +0 -0
  321. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/camera.py +0 -0
  322. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/dht.py +0 -0
  323. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/dotstar.py +0 -0
  324. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/ds18x20.py +0 -0
  325. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/esp32.py +0 -0
  326. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/framebuf.py +0 -0
  327. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/machine.py +0 -0
  328. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/micropython.py +0 -0
  329. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/mip.py +0 -0
  330. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/neopixel.py +0 -0
  331. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/network.py +0 -0
  332. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/node_config.json +0 -0
  333. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/ntptime.py +0 -0
  334. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/onewire.py +0 -0
  335. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/sim_common.py +0 -0
  336. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/simgc.py +0 -0
  337. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/simulator.py +0 -0
  338. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/tinypico.py +0 -0
  339. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/uasyncio.py +0 -0
  340. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/uos.py +0 -0
  341. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/urandom.py +0 -0
  342. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/usocket.py +0 -0
  343. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/ussl.py +0 -0
  344. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/ustruct.py +0 -0
  345. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/utime.py +0 -0
  346. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/view01.jpg +0 -0
  347. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/view02.jpg +0 -0
  348. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/simulator_lib/webrepl.py +0 -0
  349. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/socketClient.py +0 -0
  350. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/user_data/.include +0 -0
  351. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/user_data/webhooks/__pycache__/generic.cpython-312.pyc +0 -0
  352. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/user_data/webhooks/__pycache__/macro.cpython-312.pyc +0 -0
  353. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/user_data/webhooks/__pycache__/template.cpython-312.pyc +0 -0
  354. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/user_data/webhooks/generic.py +0 -0
  355. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/user_data/webhooks/macro.py +0 -0
  356. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/user_data/webhooks/template.macro +0 -0
  357. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/user_data/webhooks/template.py +0 -0
  358. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/__init__.py +0 -0
  359. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/Auth.mpy +0 -0
  360. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/Buffer.mpy +0 -0
  361. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/Common.mpy +0 -0
  362. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/Config.mpy +0 -0
  363. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/Debug.mpy +0 -0
  364. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/Files.mpy +0 -0
  365. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/Hooks.mpy +0 -0
  366. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/InterConnect.mpy +0 -0
  367. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/Interrupts.mpy +0 -0
  368. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/Logger.mpy +0 -0
  369. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/Network.mpy +0 -0
  370. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/Notify.mpy +0 -0
  371. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/Pacman.mpy +0 -0
  372. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/Scheduler.mpy +0 -0
  373. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/Server.mpy +0 -0
  374. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/Tasks.mpy +0 -0
  375. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/Time.mpy +0 -0
  376. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/Types.mpy +0 -0
  377. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/Web.mpy +0 -0
  378. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/_mpy.version +0 -0
  379. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/config/_git.keep +0 -0
  380. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/helpers.mpy +0 -0
  381. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/main.py +0 -0
  382. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/mespnow.mpy +0 -0
  383. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/micrOS.mpy +0 -0
  384. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
  385. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/microIO.mpy +0 -0
  386. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/IO_esp32.mpy +0 -0
  387. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/IO_esp32c3.mpy +0 -0
  388. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/IO_esp32c5.mpy +0 -0
  389. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/IO_esp32c6.mpy +0 -0
  390. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/IO_esp32s2.mpy +0 -0
  391. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/IO_esp32s3.mpy +0 -0
  392. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/IO_m5stamp.mpy +0 -0
  393. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/IO_qtpy.mpy +0 -0
  394. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/IO_rp2.mpy +0 -0
  395. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/IO_tinypico.mpy +0 -0
  396. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_aht10.mpy +0 -0
  397. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_bme280.mpy +0 -0
  398. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_buzzer.mpy +0 -0
  399. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_cct.mpy +0 -0
  400. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_cluster.mpy +0 -0
  401. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_dht11.mpy +0 -0
  402. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_dht22.mpy +0 -0
  403. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_dimmer.mpy +0 -0
  404. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_ds18.mpy +0 -0
  405. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_esp32.py +0 -0
  406. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_espnow.py +0 -0
  407. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_fileserver.mpy +0 -0
  408. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_gameOfLife.mpy +0 -0
  409. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_genIO.mpy +0 -0
  410. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_i2c.py +0 -0
  411. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_i2s_mic.mpy +0 -0
  412. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_light_sensor.mpy +0 -0
  413. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_neoeffects.mpy +0 -0
  414. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_neopixel.mpy +0 -0
  415. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_oled.mpy +0 -0
  416. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_oled_sh1106.mpy +0 -0
  417. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_oled_ui.mpy +0 -0
  418. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
  419. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_presence.mpy +0 -0
  420. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_rencoder.py +0 -0
  421. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_rest.mpy +0 -0
  422. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_rgb.mpy +0 -0
  423. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_rgbcct.mpy +0 -0
  424. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_robustness.py +0 -0
  425. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_rp2w.py +0 -0
  426. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_sdcard.py +0 -0
  427. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_servo.mpy +0 -0
  428. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_stepper.mpy +0 -0
  429. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_switch.mpy +0 -0
  430. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_system.mpy +0 -0
  431. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_telegram.mpy +0 -0
  432. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_tinyrgb.mpy +0 -0
  433. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/modules/LM_veml7700.mpy +0 -0
  434. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/urequests.mpy +0 -0
  435. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/web/auth.js +0 -0
  436. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/web/config.html +0 -0
  437. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/web/dashboard.html +0 -0
  438. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/web/editor.js +0 -0
  439. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/web/editor_plugins.js +0 -0
  440. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/web/favicon.ico +0 -0
  441. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/web/filesui.html +0 -0
  442. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/web/filesui.js +0 -0
  443. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/web/index.html +0 -0
  444. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/web/uapi.js +0 -0
  445. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/web/uapi_widgets.js +0 -0
  446. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/web/ubashboard.css +0 -0
  447. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/web/udashboard.js +0 -0
  448. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/web/ustyle.css +0 -0
  449. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/web/uwidgets.js +0 -0
  450. {microsdevtoolkit-3.6.2 → microsdevtoolkit-3.6.3}/toolkit/workspace/precompiled/web/uwidgets_pro.js +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: micrOSDevToolKit
3
- Version: 3.6.2
3
+ Version: 3.6.3
4
4
  Summary: Development and deployment environment for micrOS, the diy micropython automation OS (IoT)
5
5
  Home-page: https://github.com/BxNxM/micrOS
6
6
  Author: Marcell Ban
@@ -2,7 +2,7 @@
2
2
  "files": {
3
3
  "Auth.py": [
4
4
  9.68,
5
- 6
5
+ 7
6
6
  ],
7
7
  "Time.py": [
8
8
  9.38,
@@ -38,7 +38,7 @@
38
38
  ],
39
39
  "Config.py": [
40
40
  9.62,
41
- 22
41
+ 23
42
42
  ],
43
43
  "mespnow.py": [
44
44
  9.92,
@@ -54,7 +54,7 @@
54
54
  ],
55
55
  "Types.py": [
56
56
  9.0,
57
- 40
57
+ 41
58
58
  ],
59
59
  "Logger.py": [
60
60
  8.89,
@@ -62,7 +62,7 @@
62
62
  ],
63
63
  "Common.py": [
64
64
  9.85,
65
- 51
65
+ 52
66
66
  ],
67
67
  "InterConnect.py": [
68
68
  9.7,
@@ -117,7 +117,7 @@
117
117
  0
118
118
  ],
119
119
  "modules/LM_web.py": [
120
- 8.14,
120
+ 8.23,
121
121
  0
122
122
  ],
123
123
  "modules/LM_genIO.py": [
@@ -271,16 +271,16 @@
271
271
  27
272
272
  ],
273
273
  "load": [
274
- 6290,
274
+ 6294,
275
275
  39
276
276
  ],
277
277
  "packages": [
278
- 14296,
279
- 97,
280
- 23
278
+ 15029,
279
+ 103,
280
+ 24
281
281
  ],
282
282
  "web": [
283
- 202478,
283
+ 206654,
284
284
  18
285
285
  ],
286
286
  "core_dep": [
@@ -292,7 +292,7 @@
292
292
  5
293
293
  ],
294
294
  "core_score": 9.26,
295
- "load_score": 8.35,
296
- "version": "3.6.2-0"
295
+ "load_score": 8.36,
296
+ "version": "3.6.3-0"
297
297
  }
298
298
  }
@@ -28,7 +28,7 @@ IMAGE_MODE = 'rel' if 'micrOS' in uname()[-1] else 'dev'
28
28
 
29
29
  class Shell:
30
30
  __slots__ = ['__devfid', '__auth_mode', '__hwuid', '__auth_ok', '__conf_mode']
31
- MICROS_VERSION = '3.6.2-0'
31
+ MICROS_VERSION = '3.6.3-0'
32
32
 
33
33
  def __init__(self):
34
34
  """
@@ -42,14 +42,20 @@ def enable_config():
42
42
  web_endpoint("config", 'config.html')
43
43
  web_endpoint("config/api", _cfg_get_clb)
44
44
  web_endpoint("config/api", _cfg_set_clb, "POST")
45
+ web_endpoint("config/packregs", _cfg_packregs_clb)
45
46
  web_endpoint("config/reboot", _reboot_clb, "POST")
46
- return "Config endpoints: /config GET, /config/api GET|POST (protected), /config/reboot POST (protected)"
47
+ return "Config endpoints: /config GET, /config/api GET|POST (protected), /config/packregs GET, /config/reboot POST (protected)"
47
48
 
48
49
 
49
50
  def _cfg_json(data):
50
51
  return "application/json", dumps(data)
51
52
 
52
53
 
54
+ def _cfg_packregs_clb(*_):
55
+ """Get package registry JSON links for the config frontend."""
56
+ return _cfg_json(["https://raw.githubusercontent.com/BxNxM/micrOSPackages/main/registry.json"])
57
+
58
+
53
59
  @sudo
54
60
  def _cfg_get_clb(*_):
55
61
  """
@@ -160,6 +160,12 @@
160
160
  .config-package-tools { flex-direction: row; gap: 6px; margin-top: 8px; }
161
161
  .config-package-header { padding: 0 10px; box-sizing: border-box; }
162
162
  .config-package-title { flex: 1; margin: 0; }
163
+ .config-package-install { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; width: var(--config-input-width); max-width: 100%; margin: 8px 0; }
164
+ #configFields .config-package-install input { flex: 1 1 240px; width: auto; }
165
+ #configFields #packageCatalog { width: 180px; }
166
+ .config-package-info { width: var(--config-input-width); max-width: 100%; box-sizing: border-box; padding: 10px; margin-bottom: 12px; overflow-wrap: anywhere; }
167
+ .config-package-info p { margin: 0 0 8px; }
168
+ .config-package-info a { color: var(--config-label); }
163
169
  .config-pin-info { margin-top: 20px; }
164
170
  .config-pin-title { margin-bottom: 8px; }
165
171
  .config-table-title { margin-bottom: 6px; }
@@ -377,6 +383,8 @@ button.config-toggle-option.selected:hover {
377
383
  --config-input-width: 100%;
378
384
  }
379
385
 
386
+ #configFields .config-package-install input { flex-basis: 100%; }
387
+
380
388
  .config-input-row,
381
389
  .param-row,
382
390
  .function-row,
@@ -924,6 +924,90 @@ function fetchDeviceHealth(settings) {
924
924
  }
925
925
 
926
926
  // Packages UI: install and inspect
927
+ async function loadPackageCatalog() {
928
+ const response = await fetch('/config/packregs', {headers: {Accept: 'application/json'}});
929
+ if (!response.ok) throw new Error('Registry list unavailable');
930
+ const urls = await response.json();
931
+ if (!Array.isArray(urls)) throw new Error('Invalid registry list');
932
+ const catalogs = await Promise.all(urls.map(async url => {
933
+ const controller = new AbortController();
934
+ const timeout = setTimeout(() => controller.abort(), 10000);
935
+ try {
936
+ if (typeof url !== 'string' || !/^https?:$/.test(new URL(url, location.href).protocol)) {
937
+ throw new Error('Invalid registry URL');
938
+ }
939
+ const result = await fetch(url, {credentials: 'omit', signal: controller.signal});
940
+ if (!result.ok) throw new Error('Catalog unavailable');
941
+ const entries = await result.json();
942
+ if (!Array.isArray(entries)) throw new Error('Invalid catalog');
943
+ return entries;
944
+ } catch (_) {
945
+ return null;
946
+ } finally {
947
+ clearTimeout(timeout);
948
+ }
949
+ }));
950
+ if (urls.length && catalogs.every(entries => entries === null)) throw new Error('Catalog unavailable');
951
+ return catalogs.flatMap(catalog => catalog || []);
952
+ }
953
+
954
+ function createPackageCatalog(input) {
955
+ const select = document.createElement('select');
956
+ select.id = 'packageCatalog';
957
+ select.setAttribute('aria-label', 'Browse packages');
958
+ select.disabled = true;
959
+ const placeholder = textElement('option', 'Loading catalog...');
960
+ placeholder.value = '';
961
+ select.appendChild(placeholder);
962
+ const info = document.createElement('div');
963
+ info.className = 'config-box config-package-info';
964
+ info.hidden = true;
965
+ const description = textElement('p', '');
966
+ const readme = textElement('a', 'README ↗');
967
+ readme.target = '_blank';
968
+ readme.rel = 'noopener noreferrer';
969
+ info.append(description, readme);
970
+
971
+ const packages = new Map();
972
+ function showSelection() {
973
+ const pkg = packages.get(input.value.trim());
974
+ select.value = pkg ? pkg.ref : '';
975
+ info.hidden = !pkg;
976
+ if (pkg) {
977
+ description.textContent = pkg.description || 'No description available.';
978
+ readme.href = pkg.readme;
979
+ }
980
+ }
981
+ select.onchange = () => {
982
+ input.value = select.value;
983
+ showSelection();
984
+ };
985
+ input.addEventListener('input', showSelection);
986
+
987
+ loadPackageCatalog()
988
+ .then(entries => {
989
+ entries.forEach(entry => {
990
+ const ref = entry && typeof entry.ref === 'string' ? entry.ref : '';
991
+ const match = /^github:([A-Za-z0-9_-]+)\/([A-Za-z0-9_.-]+)\/([A-Za-z0-9_-]+)$/.exec(ref);
992
+ if (!match || packages.has(ref)) return;
993
+ packages.set(ref, {ref, name: match[3], description: typeof entry.description === 'string' ? entry.description : '',
994
+ readme: `https://github.com/${match[1]}/${match[2]}/tree/main/${match[3]}#readme`});
995
+ });
996
+ Array.from(packages.values()).sort((a, b) => a.name.localeCompare(b.name)).forEach(pkg => {
997
+ const option = textElement('option', pkg.name);
998
+ option.value = pkg.ref;
999
+ select.appendChild(option);
1000
+ });
1001
+ placeholder.textContent = packages.size ? 'Choose package...' : 'Catalog empty';
1002
+ select.disabled = !packages.size;
1003
+ showSelection();
1004
+ })
1005
+ .catch(() => {
1006
+ placeholder.textContent = 'Catalog unavailable';
1007
+ });
1008
+ return {select, info};
1009
+ }
1010
+
927
1011
  function renderPackagesSection() {
928
1012
  const container = document.getElementById('configFields');
929
1013
  container.innerHTML = '';
@@ -934,14 +1018,17 @@ function renderPackagesSection() {
934
1018
  const installSection = document.createElement('section');
935
1019
  installSection.className = 'config-section-gap';
936
1020
  const installLabel = textElement('label', 'Install Package (URL or Package ref):', 'config-label-block');
937
- installSection.appendChild(installLabel);
938
1021
 
939
1022
  const input = document.createElement('input');
940
1023
  input.type = 'text';
941
1024
  input.placeholder = 'e.g. github:BxNxM/micrOSPackages/async_oledui';
942
1025
  input.id = 'packageUrlInput';
943
- input.style.margin = '8px 0';
944
- installSection.appendChild(input);
1026
+ installLabel.htmlFor = input.id;
1027
+ const catalog = createPackageCatalog(input);
1028
+ installSection.appendChild(installLabel);
1029
+ const installRow = document.createElement('div');
1030
+ installRow.className = 'config-package-install';
1031
+ installRow.appendChild(input);
945
1032
 
946
1033
  const installResult = createInlineOutput();
947
1034
 
@@ -965,10 +1052,11 @@ function renderPackagesSection() {
965
1052
  resetButton(installBtn, 'Install');
966
1053
  });
967
1054
  });
968
- installSection.appendChild(installBtn);
1055
+ installRow.append(installBtn, catalog.select);
1056
+ installSection.appendChild(installRow);
969
1057
 
970
1058
  const packageTools = document.createElement('div');
971
- packageTools.className = 'config-package-tools';
1059
+ packageTools.className = 'config-package-tools config-section-gap';
972
1060
 
973
1061
  const catalogBtn = makeButton('Catalog', () => {
974
1062
  window.open('https://github.com/BxNxM/micrOSPackages/tree/main', '_blank', 'noopener,noreferrer');
@@ -980,12 +1068,13 @@ function renderPackagesSection() {
980
1068
  });
981
1069
  packageTools.appendChild(refreshBtn);
982
1070
 
983
- installSection.appendChild(packageTools);
984
1071
  installSection.appendChild(installResult);
985
1072
  container.appendChild(installSection);
986
1073
 
987
1074
  // Packages list block
988
1075
  const pkgSection = document.createElement('section');
1076
+ pkgSection.appendChild(catalog.info);
1077
+ pkgSection.appendChild(packageTools);
989
1078
  const pkgHeader = document.createElement('div');
990
1079
  pkgHeader.className = 'config-package-header';
991
1080
  const title = textElement('h3', 'Packages', 'config-package-title');
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: micrOSDevToolKit
3
- Version: 3.6.2
3
+ Version: 3.6.3
4
4
  Summary: Development and deployment environment for micrOS, the diy micropython automation OS (IoT)
5
5
  Home-page: https://github.com/BxNxM/micrOS
6
6
  Author: Marcell Ban
@@ -36,10 +36,10 @@ micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin
36
36
  micrOS/micropython/esp32s3-4MBflash-20241129-v1.24.1.bin
37
37
  micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin
38
38
  micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin
39
- micrOS/micropython/micrOS-esp32-1.28.0-3.6.0-0.bin
40
- micrOS/micropython/micrOS-esp32c3-1.28.0-3.6.0-0.bin
41
- micrOS/micropython/micrOS-esp32c6-1.28.0-3.6.0-0.bin
42
- micrOS/micropython/micrOS-esp32s3-1.28.0-3.6.0-0.bin
39
+ micrOS/micropython/micrOS-esp32-1.28.0-3.6.3-0.bin
40
+ micrOS/micropython/micrOS-esp32c3-1.28.0-3.6.3-0.bin
41
+ micrOS/micropython/micrOS-esp32c6-1.28.0-3.6.3-0.bin
42
+ micrOS/micropython/micrOS-esp32s3-1.28.0-3.6.3-0.bin
43
43
  micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2
44
44
  micrOS/micropython/tinypico-20251209-v1.27.0.bin
45
45
  micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json
@@ -17,7 +17,7 @@ dependencies = ['adafruit-ampy', 'mpremote', 'esptool', 'ipaddress', 'netaddr',
17
17
 
18
18
  setuptools.setup(
19
19
  name='micrOSDevToolKit',
20
- version='3.6.2',
20
+ version='3.6.3',
21
21
  author='Marcell Ban',
22
22
  author_email='miros.framework@gmail.com',
23
23
  description='Development and deployment environment for micrOS, the diy micropython automation OS (IoT)',
@@ -0,0 +1 @@
1
+ :root{--config-border:#4B376C;--config-surface:#1F1433;--config-label:#d9d2ff;--config-success:#8ee88e;--config-danger:#ff9fa6}#configContainer{display:flex;flex-direction:row;overflow:hidden;margin:0rem;gap:12px}#configMenu{max-width:30vw;min-width:12vw;border-radius:8px;box-sizing:border-box;padding:8px 0;background:transparent}#configMenu p{cursor:pointer;padding:0.2rem 0rem 0.2rem 1rem;border-radius:3px}#configMenu p:hover{background:rgba(255,255,255,.08)}#configFields{flex-grow:1;padding:16px;box-sizing:border-box;overflow-y:auto;min-width:0;--config-input-width:80%}#configFields input[type="text"],#configFields input[type="password"],#configFields input[type="number"],#configFields select{width:var(--config-input-width);max-width:100%;min-width:0}.config-field,.config-field-group{width:100%;min-width:0;margin-bottom:12px;box-sizing:border-box}.config-field{display:flex;flex-direction:column}.config-input-row,.param-row,.function-row,.pinmap-map-row,.pinmap-pair-row{display:flex;align-items:center;gap:8px;width:var(--config-input-width);max-width:100%;min-width:0}.config-input-row{flex:1 1 auto}.config-input-row input,.param-row input,.function-row input,.pinmap-map-row input,.pinmap-pair-row input{flex:1 1 auto;width:auto;min-width:0}.config-icon-button{flex:0 0 40px;width:40px;height:32px;padding:0;cursor:pointer}.config-password-toggle{flex:0 0 56px;width:56px;height:32px;padding:0;cursor:pointer}.schedule-add{width:var(--config-input-width);max-width:100%;padding:8px;cursor:pointer}.config-action-section{width:var(--config-input-width);max-width:100%}.config-wide-action-section{width:var(--config-input-width);max-width:100%}#configFields .config-wide-action-button,.config-dialog .config-wide-action-button{width:100%;display:block;font-weight:bold}.config-wide-action-output{width:100%;box-sizing:border-box}.config-dialog-backdrop{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(0,0,0,0.62)}.config-dialog{width:min(420px,100%);max-height:calc(100vh - 32px);overflow:auto;padding:16px;border:1px solid var(--config-border);border-radius:8px;box-sizing:border-box;background:var(--config-surface);box-shadow:0 16px 36px rgba(0,0,0,0.42)}.config-dialog-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.config-dialog-title{margin:0}.config-dialog-message{margin:12px 0 8px 0}.config-dialog .config-wide-action-section{width:100%;margin-bottom:0}.config-header-row,.config-action-header,.config-button-group,.config-package-tools,.config-package-header{display:flex;align-items:center;gap:8px}.config-header-row{flex-direction:row;justify-content:flex-start;margin-bottom:8px}.config-heading{margin:0}.config-heading-top{margin-top:0}.config-action-list{display:grid;gap:8px}.config-action-row,.config-box{border:1px solid var(--config-border);border-radius:6px;background-color:var(--config-surface)}.config-action-row{padding:10px}.config-action-header{justify-content:space-between;flex-wrap:wrap}.config-action-label{flex:1;min-width:160px}.config-button-group{flex-wrap:wrap;justify-content:flex-end}.config-inline-output{display:none;margin-top:8px}.config-alarm-ok{color:var(--config-success)}.config-alarm-nok{color:#ffd166}.config-error,#configFields button.config-remove-button:not(.danger-button){color:#ff8b8b}#configFields button.config-add-button:not(.danger-button){color:var(--config-success)}#configFields button.config-add-button,#configFields button.config-remove-button{font-weight:bold}.config-error,.config-label,.config-label-block,.config-label-tight,.config-legend,.config-unit{font-weight:bold}.config-label-block,.config-label-tight{display:block}.config-label-block{margin-bottom:8px}.config-label-tight{margin-bottom:4px}.config-stack{display:flex;flex-direction:column;gap:8px}.config-stack-large{gap:16px}.config-remove-button{cursor:pointer}.config-legend{font-size:1.1rem}.config-package-tools{flex-direction:row;gap:6px;margin-top:8px}.config-package-header{padding:0 10px;box-sizing:border-box}.config-package-title{flex:1;margin:0}.config-package-install{display:flex;flex-wrap:wrap;align-items:center;gap:6px;width:var(--config-input-width);max-width:100%;margin:8px 0}#configFields .config-package-install input{flex:1 1 240px;width:auto}#configFields #packageCatalog{width:180px}.config-package-info{width:var(--config-input-width);max-width:100%;box-sizing:border-box;padding:10px;margin-bottom:12px;overflow-wrap:anywhere}.config-package-info p{margin:0 0 8px}.config-package-info a{color:var(--config-label)}.config-pin-info{margin-top:20px}.config-pin-title{margin-bottom:8px}.config-table-title{margin-bottom:6px}.config-section-gap{margin-bottom:16px}.config-section-gap-large{margin-bottom:24px}.config-fieldset{width:var(--config-input-width);max-width:100%;min-width:0;box-sizing:border-box;margin-bottom:20px}.config-field-group>.config-fieldset{margin-bottom:0}.config-fieldset .config-fieldset,.config-fieldset .config-input-row,.config-fieldset .param-row,.config-fieldset .function-row,.config-fieldset .wifi-pair-row,.config-fieldset .pinmap-pair-row,.config-fieldset .schedule-time-config{width:100%}#configFields .config-fieldset input[type="text"],#configFields .config-fieldset input[type="password"],#configFields .config-fieldset input[type="number"],#configFields .config-fieldset select{width:100%}.config-table{width:100%;border-collapse:collapse}.config-table td{border:1px solid var(--config-border);padding:6px 8px}.config-accent-group{border-color:#827B8C;background:#383044}.config-accent-group>.config-legend{color:#D6D2DE}.wifi-pair-row{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;width:var(--config-input-width);max-width:100%}.wifi-field{display:flex;flex:1 1 260px;flex-direction:column;min-width:min(100%,220px)}.wifi-field>input,.wifi-field .config-input-row{width:100%}.pinmap-map-row select{flex:0 1 180px;width:auto}.pinmap-pair-row input[data-pinmap-value]{flex:0 1 120px}.schedule-time-config{display:grid;gap:12px;width:min(var(--config-input-width),660px);max-width:100%}.schedule-time-config summary{cursor:pointer}.schedule-time-config small{display:block;margin-top:6px}.schedule-time-ui{display:grid;gap:6px;width:100%}.schedule-time-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px;width:100%}.schedule-day-button{flex:1 1 0;min-width:31px;height:30px;padding:0 6px;border-radius:7px}.schedule-day-button.selected{color:white;background:#20843a}.schedule-card{--schedule-control-gap:12px;--schedule-muted:rgba(255,255,255,.7);padding:12px 20px 20px}.schedule-card>.config-legend{display:block;padding:0 6px;color:var(--config-label)}.schedule-card-header{display:flex;justify-content:flex-end;margin-bottom:8px}.schedule-remove-button{color:var(--config-danger)!important}.schedule-editor{grid-template-columns:minmax(0,.8fr) minmax(0,1fr);gap:var(--schedule-control-gap) 18px}.config-toggle.schedule-mode-buttons{width:100%;box-sizing:border-box}.schedule-overview{display:flex;grid-row:span 2;align-items:center;gap:12px;padding:12px;border-radius:12px;background:rgba(255,255,255,.055)}.schedule-icon{flex:0 0 48px;color:#ffbd32}.schedule-icon svg{display:block;width:48px;height:48px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.schedule-icon .schedule-clock-icon{color:#8fd3ff}.schedule-icon .schedule-sun-disc{fill:currentColor;stroke:none}.schedule-icon .schedule-sunset-icon .schedule-sun-disc{fill:none;stroke:currentColor}.schedule-summary{color:#eeeaff;font-size:1.125rem;white-space:pre-line;overflow-wrap:anywhere}.schedule-panel{display:flex;align-items:center;gap:var(--schedule-control-gap);min-width:0}.schedule-editor[data-mode="tag"] .schedule-clock-panel,.schedule-editor[data-mode="time"] .schedule-tag-panel{display:none}.schedule-tag-panel{flex-wrap:wrap}.schedule-tag-panel select{flex:0 0 100%;width:100%!important}.schedule-step-button,.schedule-function-add,.schedule-function-remove{flex:0 0 36px;width:36px;min-width:36px;height:36px;padding:0;font-size:1.25rem}#configFields .schedule-offset-input{flex:0 1 82px;width:82px;text-align:center}.schedule-unit{color:var(--schedule-muted);white-space:nowrap}.schedule-clock-panel{flex-direction:column;align-items:stretch}.schedule-clock-inputs{display:flex;align-items:center;gap:7px}#configFields .schedule-clock-inputs input{flex:0 0 84px;width:84px}.schedule-clock-separator{color:var(--schedule-muted);font-size:1.2rem;font-weight:bold}.schedule-functions{margin-top:12px;padding-top:12px;border-top:1px solid rgba(167,139,250,.22)}.schedule-functions-title{display:block;margin-bottom:8px;color:var(--config-label);font-weight:bold}.schedule-function-row input{height:38px}.schedule-function-add{color:var(--config-success)!important}.schedule-function-remove{color:var(--config-danger)!important}#configMenu .selected{background:color-mix(in srgb,white 15%,transparent)}.config-toggle{display:inline-flex;width:160px;max-width:100%;border:1px solid rgba(255,255,255,0.24);border-radius:6px;overflow:hidden;background:rgba(255,255,255,0.08)}.config-toggle-option{flex:1 1 0;min-width:0;height:34px;padding:0 10px;border:0;border-radius:0;color:rgba(255,255,255,0.78);background:transparent;font-weight:bold}button.config-toggle-option:hover{color:white;background:rgba(255,255,255,0.12)}button.config-toggle-option.selected{color:white;background:var(--toggle-color)}button.config-toggle-option.selected:hover{background:var(--toggle-color)}.config-toggle-off{--toggle-color:#b02a37}.config-toggle-on{--toggle-color:#20843a}.config-save-button{align-self:center;margin:0;padding:8px 16px}#menuToggle{display:none;align-items:center;justify-content:center;width:40px;height:40px;margin-bottom:8px;font-size:1.2rem;border-radius:6px;cursor:pointer}@media (max-width:768px){body{padding:8px}#configContainer{flex-direction:column;position:relative;width:100%}#menuToggle{display:inline-flex}#configMenu{position:fixed;top:0;left:0;bottom:0;width:min(80vw,280px);max-width:none;min-width:0;margin:0;padding:56px 8px 16px 8px;border-radius:0 8px 8px 0;transform:translateX(-110%);transition:transform 0.2s ease;z-index:1000;background:rgba(33,24,79,0.96)}#configMenu.open{transform:translateX(0)}#configFields{padding:0 4px 16px 4px;--config-input-width:100%}#configFields .config-package-install input{flex-basis:100%}.config-input-row,.param-row,.function-row,.pinmap-map-row,.pinmap-pair-row{gap:6px}.wifi-field{flex-basis:100%;min-width:0}.pinmap-map-row{flex-wrap:wrap}.pinmap-map-row select{flex-basis:100%}.pinmap-pair-row input[data-pinmap-value]{flex-basis:88px}.schedule-card{padding:12px 14px 14px}.schedule-editor{grid-template-columns:1fr}.schedule-overview{grid-row:auto}.schedule-tag-panel select{min-width:150px}}
@@ -90,8 +90,12 @@ if(Date.now()-startedAt>=settings.maxMs){clearInterval(pollTimer);setInlineDetai
90
90
  if(checking)return;checking=true;fetchDeviceHealth(settings).then(data=>{clearInterval(pollTimer);const result=data&&data.result?data.result:{};const node=result.node?' ('+result.node+')':'';setInlineDetails(details,settings.back+node);resetButton(button,settings.label);}).catch(()=>{checking=false;if(details.isConnected){setInlineDetails(details,settings.wait);}});},settings.pollMs);}
91
91
  function fetchDeviceHealth(settings){const request={headers:{Accept:'application/json'},cache:'no-store'};let timeoutId=null;if(typeof AbortController==='function'){const controller=new AbortController();timeoutId=setTimeout(()=>controller.abort(),settings.requestMs);request.signal=controller.signal;}
92
92
  return fetch(settings.health,request).then(r=>{if(!r.ok)throw new Error('HTTP '+r.status);return r.json();}).finally(()=>{if(timeoutId)clearTimeout(timeoutId);});}
93
- function renderPackagesSection(){const container=document.getElementById('configFields');container.innerHTML='';const heading=textElement('h2',categoryTitle('Packages'),'config-heading-top');container.appendChild(heading);const installSection=document.createElement('section');installSection.className='config-section-gap';const installLabel=textElement('label','Install Package (URL or Package ref):','config-label-block');installSection.appendChild(installLabel);const input=document.createElement('input');input.type='text';input.placeholder='e.g. github:BxNxM/micrOSPackages/async_oledui';input.id='packageUrlInput';input.style.margin='8px 0';installSection.appendChild(input);const installResult=createInlineOutput();const installBtn=makeButton('Install',()=>{const url=input.value.trim();if(!url){alert('Enter package URL or Package ref');return;}
94
- setButtonBusy(installBtn,'Installing...');setInlineDetails(installResult,`Install Package (URL or Package ref): ${url}\n\nInstalling...`);restAPI('pacman/install/'+restQuote(url),false,PACMAN_TIMEOUT_MS).then(resp=>{setInlineDetails(installResult,formatInstallResponse(url,resp));refreshPackagesList();}).catch(err=>{setInlineDetails(installResult,`Install Package (URL or Package ref): ${url}\n\nInstall failed:\n${err.message}`);}).finally(()=>{resetButton(installBtn,'Install');});});installSection.appendChild(installBtn);const packageTools=document.createElement('div');packageTools.className='config-package-tools';const catalogBtn=makeButton('Catalog',()=>{window.open('https://github.com/BxNxM/micrOSPackages/tree/main','_blank','noopener,noreferrer');});packageTools.appendChild(catalogBtn);const refreshBtn=makeButton('Refresh',()=>{refreshPackagesList();});packageTools.appendChild(refreshBtn);installSection.appendChild(packageTools);installSection.appendChild(installResult);container.appendChild(installSection);const pkgSection=document.createElement('section');const pkgHeader=document.createElement('div');pkgHeader.className='config-package-header';const title=textElement('h3','Packages','config-package-title');pkgHeader.appendChild(title);pkgSection.appendChild(pkgHeader);const list=document.createElement('div');list.id='packagesList';list.style.marginTop='8px';pkgSection.appendChild(list);container.appendChild(pkgSection);refreshPackagesList();}
93
+ async function loadPackageCatalog(){const response=await fetch('/config/packregs',{headers:{Accept:'application/json'}});if(!response.ok)throw new Error('Registry list unavailable');const urls=await response.json();if(!Array.isArray(urls))throw new Error('Invalid registry list');const catalogs=await Promise.all(urls.map(async url=>{const controller=new AbortController();const timeout=setTimeout(()=>controller.abort(),10000);try{if(typeof url!=='string'||!/^https?:$/.test(new URL(url,location.href).protocol)){throw new Error('Invalid registry URL');}
94
+ const result=await fetch(url,{credentials:'omit',signal:controller.signal});if(!result.ok)throw new Error('Catalog unavailable');const entries=await result.json();if(!Array.isArray(entries))throw new Error('Invalid catalog');return entries;}catch(_){return null;}finally{clearTimeout(timeout);}}));if(urls.length&&catalogs.every(entries=>entries===null))throw new Error('Catalog unavailable');return catalogs.flatMap(catalog=>catalog||[]);}
95
+ function createPackageCatalog(input){const select=document.createElement('select');select.id='packageCatalog';select.setAttribute('aria-label','Browse packages');select.disabled=true;const placeholder=textElement('option','Loading catalog...');placeholder.value='';select.appendChild(placeholder);const info=document.createElement('div');info.className='config-box config-package-info';info.hidden=true;const description=textElement('p','');const readme=textElement('a','README ↗');readme.target='_blank';readme.rel='noopener noreferrer';info.append(description,readme);const packages=new Map();function showSelection(){const pkg=packages.get(input.value.trim());select.value=pkg?pkg.ref:'';info.hidden=!pkg;if(pkg){description.textContent=pkg.description||'No description available.';readme.href=pkg.readme;}}
96
+ select.onchange=()=>{input.value=select.value;showSelection();};input.addEventListener('input',showSelection);loadPackageCatalog().then(entries=>{entries.forEach(entry=>{const ref=entry&&typeof entry.ref==='string'?entry.ref:'';const match=/^github:([A-Za-z0-9_-]+)\/([A-Za-z0-9_.-]+)\/([A-Za-z0-9_-]+)$/.exec(ref);if(!match||packages.has(ref))return;packages.set(ref,{ref,name:match[3],description:typeof entry.description==='string'?entry.description:'',readme:`https://github.com/${match[1]}/${match[2]}/tree/main/${match[3]}#readme`});});Array.from(packages.values()).sort((a,b)=>a.name.localeCompare(b.name)).forEach(pkg=>{const option=textElement('option',pkg.name);option.value=pkg.ref;select.appendChild(option);});placeholder.textContent=packages.size?'Choose package...':'Catalog empty';select.disabled=!packages.size;showSelection();}).catch(()=>{placeholder.textContent='Catalog unavailable';});return{select,info};}
97
+ function renderPackagesSection(){const container=document.getElementById('configFields');container.innerHTML='';const heading=textElement('h2',categoryTitle('Packages'),'config-heading-top');container.appendChild(heading);const installSection=document.createElement('section');installSection.className='config-section-gap';const installLabel=textElement('label','Install Package (URL or Package ref):','config-label-block');const input=document.createElement('input');input.type='text';input.placeholder='e.g. github:BxNxM/micrOSPackages/async_oledui';input.id='packageUrlInput';installLabel.htmlFor=input.id;const catalog=createPackageCatalog(input);installSection.appendChild(installLabel);const installRow=document.createElement('div');installRow.className='config-package-install';installRow.appendChild(input);const installResult=createInlineOutput();const installBtn=makeButton('Install',()=>{const url=input.value.trim();if(!url){alert('Enter package URL or Package ref');return;}
98
+ setButtonBusy(installBtn,'Installing...');setInlineDetails(installResult,`Install Package (URL or Package ref): ${url}\n\nInstalling...`);restAPI('pacman/install/'+restQuote(url),false,PACMAN_TIMEOUT_MS).then(resp=>{setInlineDetails(installResult,formatInstallResponse(url,resp));refreshPackagesList();}).catch(err=>{setInlineDetails(installResult,`Install Package (URL or Package ref): ${url}\n\nInstall failed:\n${err.message}`);}).finally(()=>{resetButton(installBtn,'Install');});});installRow.append(installBtn,catalog.select);installSection.appendChild(installRow);const packageTools=document.createElement('div');packageTools.className='config-package-tools config-section-gap';const catalogBtn=makeButton('Catalog',()=>{window.open('https://github.com/BxNxM/micrOSPackages/tree/main','_blank','noopener,noreferrer');});packageTools.appendChild(catalogBtn);const refreshBtn=makeButton('Refresh',()=>{refreshPackagesList();});packageTools.appendChild(refreshBtn);installSection.appendChild(installResult);container.appendChild(installSection);const pkgSection=document.createElement('section');pkgSection.appendChild(catalog.info);pkgSection.appendChild(packageTools);const pkgHeader=document.createElement('div');pkgHeader.className='config-package-header';const title=textElement('h3','Packages','config-package-title');pkgHeader.appendChild(title);pkgSection.appendChild(pkgHeader);const list=document.createElement('div');list.id='packagesList';list.style.marginTop='8px';pkgSection.appendChild(list);container.appendChild(pkgSection);refreshPackagesList();}
95
99
  function refreshPackagesList(){const list=document.getElementById('packagesList');if(!list)return;list.textContent='Loading...';restAPI('pacman/inspect',false).then(resp=>{list.textContent='';if(!resp||!resp.hasOwnProperty('result')){list.textContent='No packages';return;}
96
100
  const items=normalizePackageList(resp.result);if(Array.isArray(items)&&items.length===0){list.textContent='No packages installed.';return;}
97
101
  if(Array.isArray(items)){renderActionList(list,'',items.map(pkg=>typeof pkg==='string'?pkg:JSON.stringify(pkg)),getPackageActions());return;}
@@ -1 +0,0 @@
1
- :root{--config-border:#4B376C;--config-surface:#1F1433;--config-label:#d9d2ff;--config-success:#8ee88e;--config-danger:#ff9fa6}#configContainer{display:flex;flex-direction:row;overflow:hidden;margin:0rem;gap:12px}#configMenu{max-width:30vw;min-width:12vw;border-radius:8px;box-sizing:border-box;padding:8px 0;background:transparent}#configMenu p{cursor:pointer;padding:0.2rem 0rem 0.2rem 1rem;border-radius:3px}#configMenu p:hover{background:rgba(255,255,255,.08)}#configFields{flex-grow:1;padding:16px;box-sizing:border-box;overflow-y:auto;min-width:0;--config-input-width:80%}#configFields input[type="text"],#configFields input[type="password"],#configFields input[type="number"],#configFields select{width:var(--config-input-width);max-width:100%;min-width:0}.config-field,.config-field-group{width:100%;min-width:0;margin-bottom:12px;box-sizing:border-box}.config-field{display:flex;flex-direction:column}.config-input-row,.param-row,.function-row,.pinmap-map-row,.pinmap-pair-row{display:flex;align-items:center;gap:8px;width:var(--config-input-width);max-width:100%;min-width:0}.config-input-row{flex:1 1 auto}.config-input-row input,.param-row input,.function-row input,.pinmap-map-row input,.pinmap-pair-row input{flex:1 1 auto;width:auto;min-width:0}.config-icon-button{flex:0 0 40px;width:40px;height:32px;padding:0;cursor:pointer}.config-password-toggle{flex:0 0 56px;width:56px;height:32px;padding:0;cursor:pointer}.schedule-add{width:var(--config-input-width);max-width:100%;padding:8px;cursor:pointer}.config-action-section{width:var(--config-input-width);max-width:100%}.config-wide-action-section{width:var(--config-input-width);max-width:100%}#configFields .config-wide-action-button,.config-dialog .config-wide-action-button{width:100%;display:block;font-weight:bold}.config-wide-action-output{width:100%;box-sizing:border-box}.config-dialog-backdrop{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(0,0,0,0.62)}.config-dialog{width:min(420px,100%);max-height:calc(100vh - 32px);overflow:auto;padding:16px;border:1px solid var(--config-border);border-radius:8px;box-sizing:border-box;background:var(--config-surface);box-shadow:0 16px 36px rgba(0,0,0,0.42)}.config-dialog-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.config-dialog-title{margin:0}.config-dialog-message{margin:12px 0 8px 0}.config-dialog .config-wide-action-section{width:100%;margin-bottom:0}.config-header-row,.config-action-header,.config-button-group,.config-package-tools,.config-package-header{display:flex;align-items:center;gap:8px}.config-header-row{flex-direction:row;justify-content:flex-start;margin-bottom:8px}.config-heading{margin:0}.config-heading-top{margin-top:0}.config-action-list{display:grid;gap:8px}.config-action-row,.config-box{border:1px solid var(--config-border);border-radius:6px;background-color:var(--config-surface)}.config-action-row{padding:10px}.config-action-header{justify-content:space-between;flex-wrap:wrap}.config-action-label{flex:1;min-width:160px}.config-button-group{flex-wrap:wrap;justify-content:flex-end}.config-inline-output{display:none;margin-top:8px}.config-alarm-ok{color:var(--config-success)}.config-alarm-nok{color:#ffd166}.config-error,#configFields button.config-remove-button:not(.danger-button){color:#ff8b8b}#configFields button.config-add-button:not(.danger-button){color:var(--config-success)}#configFields button.config-add-button,#configFields button.config-remove-button{font-weight:bold}.config-error,.config-label,.config-label-block,.config-label-tight,.config-legend,.config-unit{font-weight:bold}.config-label-block,.config-label-tight{display:block}.config-label-block{margin-bottom:8px}.config-label-tight{margin-bottom:4px}.config-stack{display:flex;flex-direction:column;gap:8px}.config-stack-large{gap:16px}.config-remove-button{cursor:pointer}.config-legend{font-size:1.1rem}.config-package-tools{flex-direction:row;gap:6px;margin-top:8px}.config-package-header{padding:0 10px;box-sizing:border-box}.config-package-title{flex:1;margin:0}.config-pin-info{margin-top:20px}.config-pin-title{margin-bottom:8px}.config-table-title{margin-bottom:6px}.config-section-gap{margin-bottom:16px}.config-section-gap-large{margin-bottom:24px}.config-fieldset{width:var(--config-input-width);max-width:100%;min-width:0;box-sizing:border-box;margin-bottom:20px}.config-field-group>.config-fieldset{margin-bottom:0}.config-fieldset .config-fieldset,.config-fieldset .config-input-row,.config-fieldset .param-row,.config-fieldset .function-row,.config-fieldset .wifi-pair-row,.config-fieldset .pinmap-pair-row,.config-fieldset .schedule-time-config{width:100%}#configFields .config-fieldset input[type="text"],#configFields .config-fieldset input[type="password"],#configFields .config-fieldset input[type="number"],#configFields .config-fieldset select{width:100%}.config-table{width:100%;border-collapse:collapse}.config-table td{border:1px solid var(--config-border);padding:6px 8px}.config-accent-group{border-color:#827B8C;background:#383044}.config-accent-group>.config-legend{color:#D6D2DE}.wifi-pair-row{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;width:var(--config-input-width);max-width:100%}.wifi-field{display:flex;flex:1 1 260px;flex-direction:column;min-width:min(100%,220px)}.wifi-field>input,.wifi-field .config-input-row{width:100%}.pinmap-map-row select{flex:0 1 180px;width:auto}.pinmap-pair-row input[data-pinmap-value]{flex:0 1 120px}.schedule-time-config{display:grid;gap:12px;width:min(var(--config-input-width),660px);max-width:100%}.schedule-time-config summary{cursor:pointer}.schedule-time-config small{display:block;margin-top:6px}.schedule-time-ui{display:grid;gap:6px;width:100%}.schedule-time-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px;width:100%}.schedule-day-button{flex:1 1 0;min-width:31px;height:30px;padding:0 6px;border-radius:7px}.schedule-day-button.selected{color:white;background:#20843a}.schedule-card{--schedule-control-gap:12px;--schedule-muted:rgba(255,255,255,.7);padding:12px 20px 20px}.schedule-card>.config-legend{display:block;padding:0 6px;color:var(--config-label)}.schedule-card-header{display:flex;justify-content:flex-end;margin-bottom:8px}.schedule-remove-button{color:var(--config-danger)!important}.schedule-editor{grid-template-columns:minmax(0,.8fr) minmax(0,1fr);gap:var(--schedule-control-gap) 18px}.config-toggle.schedule-mode-buttons{width:100%;box-sizing:border-box}.schedule-overview{display:flex;grid-row:span 2;align-items:center;gap:12px;padding:12px;border-radius:12px;background:rgba(255,255,255,.055)}.schedule-icon{flex:0 0 48px;color:#ffbd32}.schedule-icon svg{display:block;width:48px;height:48px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.schedule-icon .schedule-clock-icon{color:#8fd3ff}.schedule-icon .schedule-sun-disc{fill:currentColor;stroke:none}.schedule-icon .schedule-sunset-icon .schedule-sun-disc{fill:none;stroke:currentColor}.schedule-summary{color:#eeeaff;font-size:1.125rem;white-space:pre-line;overflow-wrap:anywhere}.schedule-panel{display:flex;align-items:center;gap:var(--schedule-control-gap);min-width:0}.schedule-editor[data-mode="tag"] .schedule-clock-panel,.schedule-editor[data-mode="time"] .schedule-tag-panel{display:none}.schedule-tag-panel{flex-wrap:wrap}.schedule-tag-panel select{flex:0 0 100%;width:100%!important}.schedule-step-button,.schedule-function-add,.schedule-function-remove{flex:0 0 36px;width:36px;min-width:36px;height:36px;padding:0;font-size:1.25rem}#configFields .schedule-offset-input{flex:0 1 82px;width:82px;text-align:center}.schedule-unit{color:var(--schedule-muted);white-space:nowrap}.schedule-clock-panel{flex-direction:column;align-items:stretch}.schedule-clock-inputs{display:flex;align-items:center;gap:7px}#configFields .schedule-clock-inputs input{flex:0 0 84px;width:84px}.schedule-clock-separator{color:var(--schedule-muted);font-size:1.2rem;font-weight:bold}.schedule-functions{margin-top:12px;padding-top:12px;border-top:1px solid rgba(167,139,250,.22)}.schedule-functions-title{display:block;margin-bottom:8px;color:var(--config-label);font-weight:bold}.schedule-function-row input{height:38px}.schedule-function-add{color:var(--config-success)!important}.schedule-function-remove{color:var(--config-danger)!important}#configMenu .selected{background:color-mix(in srgb,white 15%,transparent)}.config-toggle{display:inline-flex;width:160px;max-width:100%;border:1px solid rgba(255,255,255,0.24);border-radius:6px;overflow:hidden;background:rgba(255,255,255,0.08)}.config-toggle-option{flex:1 1 0;min-width:0;height:34px;padding:0 10px;border:0;border-radius:0;color:rgba(255,255,255,0.78);background:transparent;font-weight:bold}button.config-toggle-option:hover{color:white;background:rgba(255,255,255,0.12)}button.config-toggle-option.selected{color:white;background:var(--toggle-color)}button.config-toggle-option.selected:hover{background:var(--toggle-color)}.config-toggle-off{--toggle-color:#b02a37}.config-toggle-on{--toggle-color:#20843a}.config-save-button{align-self:center;margin:0;padding:8px 16px}#menuToggle{display:none;align-items:center;justify-content:center;width:40px;height:40px;margin-bottom:8px;font-size:1.2rem;border-radius:6px;cursor:pointer}@media (max-width:768px){body{padding:8px}#configContainer{flex-direction:column;position:relative;width:100%}#menuToggle{display:inline-flex}#configMenu{position:fixed;top:0;left:0;bottom:0;width:min(80vw,280px);max-width:none;min-width:0;margin:0;padding:56px 8px 16px 8px;border-radius:0 8px 8px 0;transform:translateX(-110%);transition:transform 0.2s ease;z-index:1000;background:rgba(33,24,79,0.96)}#configMenu.open{transform:translateX(0)}#configFields{padding:0 4px 16px 4px;--config-input-width:100%}.config-input-row,.param-row,.function-row,.pinmap-map-row,.pinmap-pair-row{gap:6px}.wifi-field{flex-basis:100%;min-width:0}.pinmap-map-row{flex-wrap:wrap}.pinmap-map-row select{flex-basis:100%}.pinmap-pair-row input[data-pinmap-value]{flex-basis:88px}.schedule-card{padding:12px 14px 14px}.schedule-editor{grid-template-columns:1fr}.schedule-overview{grid-row:auto}.schedule-tag-panel select{min-width:150px}}