micrOSDevToolKit 3.2.4__tar.gz → 3.2.5__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 (446) hide show
  1. {microsdevtoolkit-3.2.4/micrOSDevToolKit.egg-info → microsdevtoolkit-3.2.5}/PKG-INFO +1 -1
  2. microsdevtoolkit-3.2.5/micrOS/micropython/micrOS-esp32-1.28.0-3.2.5-0.bin +0 -0
  3. microsdevtoolkit-3.2.5/micrOS/micropython/micrOS-esp32c3-1.28.0-3.2.5-0.bin +0 -0
  4. microsdevtoolkit-3.2.5/micrOS/micropython/micrOS-esp32c6-1.28.0-3.2.5-0.bin +0 -0
  5. microsdevtoolkit-3.2.5/micrOS/micropython/micrOS-esp32s3-1.28.0-3.2.5-0.bin +0 -0
  6. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +3 -3
  7. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Shell.py +1 -1
  8. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Web.py +1 -1
  9. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Scheduler.cpython-312.pyc +0 -0
  10. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Web.cpython-312.pyc +0 -0
  11. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_web.py +3 -1
  12. microsdevtoolkit-3.2.5/micrOS/source/modules/__pycache__/LM_pacman.cpython-312.pyc +0 -0
  13. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/__pycache__/LM_web.cpython-312.pyc +0 -0
  14. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/config.css +40 -3
  15. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/config.js +246 -38
  16. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5/micrOSDevToolKit.egg-info}/PKG-INFO +1 -1
  17. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOSDevToolKit.egg-info/SOURCES.txt +5 -0
  18. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/setup.py +1 -1
  19. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/DevEnvUSB.py +2 -2
  20. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/socketClient.py +105 -27
  21. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Shell.mpy +0 -0
  22. microsdevtoolkit-3.2.5/toolkit/workspace/precompiled/Web.mpy +0 -0
  23. microsdevtoolkit-3.2.5/toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
  24. microsdevtoolkit-3.2.5/toolkit/workspace/precompiled/web/config.css +1 -0
  25. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/config.js +25 -11
  26. microsdevtoolkit-3.2.4/toolkit/workspace/precompiled/Web.mpy +0 -0
  27. microsdevtoolkit-3.2.4/toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
  28. microsdevtoolkit-3.2.4/toolkit/workspace/precompiled/web/config.css +0 -1
  29. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/LICENSE +0 -0
  30. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/MANIFEST.in +0 -0
  31. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/README.md +0 -0
  32. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/devToolKit.py +0 -0
  33. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/__init__.py +0 -0
  34. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/.DS_Store +0 -0
  35. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x64.exe +0 -0
  36. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x86.exe +0 -0
  37. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210x_Universal_Windows_Driver_ReleaseNotes.txt +0 -0
  38. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/SLAB_License_Agreement_VCP_Windows.txt +0 -0
  39. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm/silabser.sys +0 -0
  40. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm64/silabser.sys +0 -0
  41. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/dpinst.xml +0 -0
  42. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.cat +0 -0
  43. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.inf +0 -0
  44. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x64/silabser.sys +0 -0
  45. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x86/silabser.sys +0 -0
  46. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
  47. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +0 -0
  48. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/media/__init__.py +0 -0
  49. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/media/dnd.png +0 -0
  50. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/media/logo.png +0 -0
  51. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/media/logo_mini.png +0 -0
  52. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/media/usb_port_icon.png +0 -0
  53. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/media/wifi_icon.png +0 -0
  54. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/__init__.py +0 -0
  55. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/board_commands.json +0 -0
  56. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32-20251209-v1.27.0.bin +0 -0
  57. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32c3-20251209-v1.27.0.bin +0 -0
  58. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32c5-20251209-v1.27.0.bin +0 -0
  59. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32c6-20251209-v1.27.0.bin +0 -0
  60. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32cam-v1.21.0_camera.bin +0 -0
  61. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32s2-20251209-v1.27.0.bin +0 -0
  62. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin +0 -0
  63. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32s3-4MBflash-20241129-v1.24.1.bin +0 -0
  64. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin +0 -0
  65. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin +0 -0
  66. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/micrOS-esp32-1.28.0-3.1.1-0.bin +0 -0
  67. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/micrOS-esp32c3-1.28.0-3.1.1-0.bin +0 -0
  68. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/micrOS-esp32c6-1.28.0-3.1.1-0.bin +0 -0
  69. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/micrOS-esp32s3-1.28.0-3.1.1-0.bin +0 -0
  70. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2 +0 -0
  71. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/tinypico-20251209-v1.27.0.bin +0 -0
  72. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/.DS_Store +0 -0
  73. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Auth.py +0 -0
  74. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Buffer.py +0 -0
  75. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Common.py +0 -0
  76. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Config.py +0 -0
  77. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Debug.py +0 -0
  78. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Files.py +0 -0
  79. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Hooks.py +0 -0
  80. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/InterConnect.py +0 -0
  81. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Interrupts.py +0 -0
  82. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Logger.py +0 -0
  83. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Network.py +0 -0
  84. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Notify.py +0 -0
  85. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Pacman.py +0 -0
  86. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Scheduler.py +0 -0
  87. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Server.py +0 -0
  88. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Tasks.py +0 -0
  89. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Time.py +0 -0
  90. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Types.py +0 -0
  91. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Buffer.cpython-312.pyc +0 -0
  92. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
  93. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Config.cpython-312.pyc +0 -0
  94. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
  95. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Files.cpython-312.pyc +0 -0
  96. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Hooks.cpython-312.pyc +0 -0
  97. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/InterConnect.cpython-312.pyc +0 -0
  98. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Interrupts.cpython-312.pyc +0 -0
  99. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
  100. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Pacman.cpython-312.pyc +0 -0
  101. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Power.cpython-312.pyc +0 -0
  102. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
  103. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
  104. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Tasks.cpython-312.pyc +0 -0
  105. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Time.cpython-312.pyc +0 -0
  106. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Types.cpython-312.pyc +0 -0
  107. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/micrOS.cpython-312.pyc +0 -0
  108. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/microIO.cpython-312.pyc +0 -0
  109. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/replhelper.cpython-312.pyc +0 -0
  110. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/urequests.cpython-312.pyc +0 -0
  111. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/config/_git.keep +0 -0
  112. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/helpers.py +0 -0
  113. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/main.py +0 -0
  114. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/mespnow.py +0 -0
  115. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/micrOS.py +0 -0
  116. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/micrOSloader.py +0 -0
  117. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/microIO.py +0 -0
  118. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_esp32.py +0 -0
  119. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_esp32c3.py +0 -0
  120. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_esp32c5.py +0 -0
  121. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_esp32c6.py +0 -0
  122. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_esp32s2.py +0 -0
  123. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_esp32s3.py +0 -0
  124. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_m5stamp.py +0 -0
  125. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_qtpy.py +0 -0
  126. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_rp2.py +0 -0
  127. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_tinypico.py +0 -0
  128. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_L298N.py +0 -0
  129. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_L9110_DCmotor.py +0 -0
  130. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_OV2640.py +0 -0
  131. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_aht10.py +0 -0
  132. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_bme280.py +0 -0
  133. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_buzzer.py +0 -0
  134. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_cct.py +0 -0
  135. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_cluster.py +0 -0
  136. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_dht11.py +0 -0
  137. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_dht22.py +0 -0
  138. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_dimmer.py +0 -0
  139. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_distance.py +0 -0
  140. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_ds18.py +0 -0
  141. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_esp32.py +0 -0
  142. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_espnow.py +0 -0
  143. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_fileserver.py +0 -0
  144. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_gameOfLife.py +0 -0
  145. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_genIO.py +0 -0
  146. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_haptic.py +0 -0
  147. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_i2c.py +0 -0
  148. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_i2s_mic.py +0 -0
  149. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_ld2410.py +0 -0
  150. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_light_sensor.py +0 -0
  151. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_neoeffects.py +0 -0
  152. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_neopixel.py +0 -0
  153. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_oled.py +0 -0
  154. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_oled_sh1106.py +0 -0
  155. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_oled_ui.py +0 -0
  156. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_pacman.py +0 -0
  157. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_presence.py +0 -0
  158. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_qmi8658.py +0 -0
  159. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_rencoder.py +0 -0
  160. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_rest.py +0 -0
  161. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_rgb.py +0 -0
  162. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_rgbcct.py +0 -0
  163. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_roboarm.py +0 -0
  164. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_robustness.py +0 -0
  165. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_rp2w.py +0 -0
  166. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_sdcard.py +0 -0
  167. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_servo.py +0 -0
  168. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_stepper.py +0 -0
  169. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_switch.py +0 -0
  170. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_system.py +0 -0
  171. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_telegram.py +0 -0
  172. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_tinyrgb.py +0 -0
  173. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_trackball.py +0 -0
  174. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_veml7700.py +0 -0
  175. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/urequests.py +0 -0
  176. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/config.html +0 -0
  177. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/dashboard.html +0 -0
  178. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/editor.js +0 -0
  179. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/editor_plugins.js +0 -0
  180. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/filesui.html +0 -0
  181. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/filesui.js +0 -0
  182. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/index.html +0 -0
  183. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/uapi.js +0 -0
  184. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/uapi_widgets.js +0 -0
  185. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/udashboard.js +0 -0
  186. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/ustyle.css +0 -0
  187. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/uwidgets.js +0 -0
  188. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/uwidgets_pro.js +0 -0
  189. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/utests/__init__.py +0 -0
  190. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/utests/test_buffer.py +0 -0
  191. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/utests/test_config.py +0 -0
  192. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/utests/test_pacman.py +0 -0
  193. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/utests/test_scheduler.py +0 -0
  194. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/utests/test_time.py +0 -0
  195. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/utests/test_urequests.py +0 -0
  196. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/utests/test_urequests_real_api.py +0 -0
  197. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/utests/test_web_engine.py +0 -0
  198. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOSDevToolKit.egg-info/dependency_links.txt +0 -0
  199. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOSDevToolKit.egg-info/requires.txt +0 -0
  200. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOSDevToolKit.egg-info/top_level.txt +0 -0
  201. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/setup.cfg +0 -0
  202. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/DevEnvCompile.py +0 -0
  203. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/DevEnvOTA.py +0 -0
  204. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/Gateway.py +0 -0
  205. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/LM_to_compile.dat +0 -0
  206. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/MicrOSDevEnv.py +0 -0
  207. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/WebRepl.py +0 -0
  208. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/__init__.py +0 -0
  209. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/BackupRestore.py +0 -0
  210. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/CCTDemo.py +0 -0
  211. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/CCTTest.py +0 -0
  212. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/CamStream.py +0 -0
  213. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/CatGame.py +0 -0
  214. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/Dimmer.py +0 -0
  215. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/GetVersion.py +0 -0
  216. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/MicrophoneTest.py +0 -0
  217. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/NeoEffectsDemo.py +0 -0
  218. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/NeopixelTest.py +0 -0
  219. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/PresenceTest.py +0 -0
  220. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/QMI8685_GYRO.py +0 -0
  221. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/RGBTest.py +0 -0
  222. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/RoboArm.py +0 -0
  223. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/SED_test.py +0 -0
  224. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/SensorsTest.py +0 -0
  225. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/SystemTest.py +0 -0
  226. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/Template_app.py +0 -0
  227. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/__init__.py +0 -0
  228. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/_app_base.py +0 -0
  229. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/_capture.py +0 -0
  230. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/_gyro_visualizer.py +0 -0
  231. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/_micPlotting.py +0 -0
  232. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/_presencePlotting.py +0 -0
  233. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/uLightDemo.py +0 -0
  234. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/gateway/gateway.css +0 -0
  235. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/gateway/img_stream.html +0 -0
  236. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/gateway/index.html +0 -0
  237. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/LocalMachine.py +0 -0
  238. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/MicrosFiles.py +0 -0
  239. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/Repository.py +0 -0
  240. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/SafeInput.py +0 -0
  241. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/SearchDevices.py +0 -0
  242. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/SerialDriverHandler.py +0 -0
  243. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/TerminalColors.py +0 -0
  244. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/__init__.py +0 -0
  245. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/macroScript.py +0 -0
  246. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/micrOSClient.py +0 -0
  247. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/micrOSClientHistory.py +0 -0
  248. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/pip_package_installer.py +0 -0
  249. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/micrOSImageBuilder.py +0 -0
  250. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/micrOSImageConfig.json +0 -0
  251. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/micrOSdashboard.py +0 -0
  252. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/micrOSlint.py +0 -0
  253. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/.DS_Store +0 -0
  254. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/IO_darwin.py +0 -0
  255. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/IO_darwin.cpython-312.pyc +0 -0
  256. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/Metrics.cpython-312.pyc +0 -0
  257. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
  258. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/camera.cpython-312.pyc +0 -0
  259. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/dht.cpython-312.pyc +0 -0
  260. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/dht.cpython-39.pyc +0 -0
  261. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/dotstar.cpython-312.pyc +0 -0
  262. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/dotstar.cpython-38.pyc +0 -0
  263. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/dotstar.cpython-39.pyc +0 -0
  264. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-312.pyc +0 -0
  265. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-38.pyc +0 -0
  266. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-39.pyc +0 -0
  267. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/esp32.cpython-312.pyc +0 -0
  268. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/esp32.cpython-38.pyc +0 -0
  269. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/esp32.cpython-39.pyc +0 -0
  270. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
  271. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/framebuf.cpython-38.pyc +0 -0
  272. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/framebuf.cpython-39.pyc +0 -0
  273. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
  274. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/machine.cpython-38.pyc +0 -0
  275. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/machine.cpython-39.pyc +0 -0
  276. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
  277. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/micropython.cpython-38.pyc +0 -0
  278. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/micropython.cpython-39.pyc +0 -0
  279. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/mip.cpython-312.pyc +0 -0
  280. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
  281. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/neopixel.cpython-38.pyc +0 -0
  282. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/neopixel.cpython-39.pyc +0 -0
  283. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
  284. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/network.cpython-38.pyc +0 -0
  285. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/network.cpython-39.pyc +0 -0
  286. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/ntptime.cpython-312.pyc +0 -0
  287. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/onewire.cpython-312.pyc +0 -0
  288. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/onewire.cpython-38.pyc +0 -0
  289. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/onewire.cpython-39.pyc +0 -0
  290. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/sim_common.cpython-312.pyc +0 -0
  291. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
  292. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/simgc.cpython-38.pyc +0 -0
  293. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/simgc.cpython-39.pyc +0 -0
  294. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
  295. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/simulator.cpython-38.pyc +0 -0
  296. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/simulator.cpython-39.pyc +0 -0
  297. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/tinypico.cpython-312.pyc +0 -0
  298. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/tinypico.cpython-38.pyc +0 -0
  299. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/tinypico.cpython-39.pyc +0 -0
  300. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
  301. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-38.pyc +0 -0
  302. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-39.pyc +0 -0
  303. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
  304. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/urandom.cpython-312.pyc +0 -0
  305. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
  306. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
  307. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/ustruct.cpython-312.pyc +0 -0
  308. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/ustruct.cpython-39.pyc +0 -0
  309. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/utime.cpython-312.pyc +0 -0
  310. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/utime.cpython-38.pyc +0 -0
  311. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/utime.cpython-39.pyc +0 -0
  312. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/webrepl.cpython-312.pyc +0 -0
  313. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/webrepl.cpython-38.pyc +0 -0
  314. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/webrepl.cpython-39.pyc +0 -0
  315. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/aioespnow.py +0 -0
  316. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/camera.py +0 -0
  317. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/dht.py +0 -0
  318. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/dotstar.py +0 -0
  319. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/ds18x20.py +0 -0
  320. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/esp32.py +0 -0
  321. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/framebuf.py +0 -0
  322. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/machine.py +0 -0
  323. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/micropython.py +0 -0
  324. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/mip.py +0 -0
  325. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/neopixel.py +0 -0
  326. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/network.py +0 -0
  327. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/node_config.json +0 -0
  328. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/ntptime.py +0 -0
  329. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/onewire.py +0 -0
  330. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/sim_common.py +0 -0
  331. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/simgc.py +0 -0
  332. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/simulator.py +0 -0
  333. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/tinypico.py +0 -0
  334. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/uasyncio.py +0 -0
  335. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/uos.py +0 -0
  336. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/urandom.py +0 -0
  337. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/usocket.py +0 -0
  338. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/ussl.py +0 -0
  339. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/ustruct.py +0 -0
  340. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/utime.py +0 -0
  341. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/view01.jpg +0 -0
  342. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/view02.jpg +0 -0
  343. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/webrepl.py +0 -0
  344. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/user_data/.include +0 -0
  345. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/user_data/webhooks/generic.py +0 -0
  346. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/user_data/webhooks/macro.py +0 -0
  347. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/user_data/webhooks/template.macro +0 -0
  348. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/user_data/webhooks/template.py +0 -0
  349. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/__init__.py +0 -0
  350. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Auth.mpy +0 -0
  351. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Buffer.mpy +0 -0
  352. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Common.mpy +0 -0
  353. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Config.mpy +0 -0
  354. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Debug.mpy +0 -0
  355. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Files.mpy +0 -0
  356. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Hooks.mpy +0 -0
  357. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/InterConnect.mpy +0 -0
  358. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Interrupts.mpy +0 -0
  359. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Logger.mpy +0 -0
  360. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Network.mpy +0 -0
  361. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Notify.mpy +0 -0
  362. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Pacman.mpy +0 -0
  363. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Scheduler.mpy +0 -0
  364. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Server.mpy +0 -0
  365. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Tasks.mpy +0 -0
  366. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Time.mpy +0 -0
  367. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Types.mpy +0 -0
  368. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/_mpy.version +0 -0
  369. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/config/_git.keep +0 -0
  370. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/helpers.mpy +0 -0
  371. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/main.py +0 -0
  372. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/mespnow.mpy +0 -0
  373. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/micrOS.mpy +0 -0
  374. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
  375. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/microIO.mpy +0 -0
  376. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_esp32.mpy +0 -0
  377. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_esp32c3.mpy +0 -0
  378. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_esp32c5.mpy +0 -0
  379. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_esp32c6.mpy +0 -0
  380. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_esp32s2.mpy +0 -0
  381. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_esp32s3.mpy +0 -0
  382. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_m5stamp.mpy +0 -0
  383. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_qtpy.mpy +0 -0
  384. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_rp2.mpy +0 -0
  385. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_tinypico.mpy +0 -0
  386. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_L298N.mpy +0 -0
  387. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_L9110_DCmotor.py +0 -0
  388. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_OV2640.mpy +0 -0
  389. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_aht10.mpy +0 -0
  390. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_bme280.mpy +0 -0
  391. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_buzzer.mpy +0 -0
  392. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_cct.mpy +0 -0
  393. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_cluster.mpy +0 -0
  394. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_dht11.mpy +0 -0
  395. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_dht22.mpy +0 -0
  396. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_dimmer.mpy +0 -0
  397. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_distance.mpy +0 -0
  398. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_ds18.mpy +0 -0
  399. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_esp32.py +0 -0
  400. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_espnow.py +0 -0
  401. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_fileserver.mpy +0 -0
  402. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_gameOfLife.mpy +0 -0
  403. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_genIO.mpy +0 -0
  404. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_haptic.mpy +0 -0
  405. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_i2c.py +0 -0
  406. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_i2s_mic.mpy +0 -0
  407. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_ld2410.mpy +0 -0
  408. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_light_sensor.mpy +0 -0
  409. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_neoeffects.mpy +0 -0
  410. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_neopixel.mpy +0 -0
  411. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_oled.mpy +0 -0
  412. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_oled_sh1106.mpy +0 -0
  413. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_oled_ui.mpy +0 -0
  414. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
  415. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_presence.mpy +0 -0
  416. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_qmi8658.py +0 -0
  417. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_rencoder.py +0 -0
  418. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_rest.mpy +0 -0
  419. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_rgb.mpy +0 -0
  420. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_rgbcct.mpy +0 -0
  421. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_roboarm.mpy +0 -0
  422. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_robustness.py +0 -0
  423. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_rp2w.py +0 -0
  424. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_sdcard.py +0 -0
  425. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_servo.mpy +0 -0
  426. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_stepper.mpy +0 -0
  427. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_switch.mpy +0 -0
  428. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_system.mpy +0 -0
  429. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_telegram.mpy +0 -0
  430. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_tinyrgb.mpy +0 -0
  431. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_trackball.mpy +0 -0
  432. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_veml7700.mpy +0 -0
  433. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/urequests.mpy +0 -0
  434. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/config.html +0 -0
  435. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/dashboard.html +0 -0
  436. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/editor.js +0 -0
  437. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/editor_plugins.js +0 -0
  438. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/filesui.html +0 -0
  439. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/filesui.js +0 -0
  440. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/index.html +0 -0
  441. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/uapi.js +0 -0
  442. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/uapi_widgets.js +0 -0
  443. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/udashboard.js +0 -0
  444. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/ustyle.css +0 -0
  445. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/uwidgets.js +0 -0
  446. {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/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.2.4
3
+ Version: 3.2.5
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
@@ -125,7 +125,7 @@
125
125
  0
126
126
  ],
127
127
  "modules/LM_web.py": [
128
- 9.13,
128
+ 9.17,
129
129
  0
130
130
  ],
131
131
  "modules/LM_genIO.py": [
@@ -307,7 +307,7 @@
307
307
  27
308
308
  ],
309
309
  "load": [
310
- 7569,
310
+ 7571,
311
311
  48
312
312
  ],
313
313
  "core_dep": [
@@ -320,6 +320,6 @@
320
320
  ],
321
321
  "core_score": 9.28,
322
322
  "load_score": 8.43,
323
- "version": "3.2.4-0"
323
+ "version": "3.2.5-0"
324
324
  }
325
325
  }
@@ -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.2.4-0'
31
+ MICROS_VERSION = '3.2.5-0'
32
32
 
33
33
  def __init__(self):
34
34
  """
@@ -89,7 +89,7 @@ def _parse_rest_cmd(cmd:str) -> list[str]:
89
89
  index += 1
90
90
  segment = decoded[start:index]
91
91
  if segment:
92
- segment = segment.replace('/', ' ').strip()
92
+ segment = segment.replace('/', ' ').replace('-', ' ').strip()
93
93
  if segment:
94
94
  tokens.extend(token for token in segment.split() if token)
95
95
  return tokens
@@ -41,7 +41,7 @@ def enable_config():
41
41
  web_endpoint("config", _cfg_get_clb)
42
42
  web_endpoint("config", _cfg_set_clb, "POST")
43
43
  web_endpoint("config/ui", 'config.html')
44
- return "Endpoints: /config and /config/ui"
44
+ return "[No AUTH Yet!!!] Endpoints: /config and /config/ui"
45
45
 
46
46
 
47
47
  def _cfg_json(data):
@@ -67,6 +67,8 @@ def _cfg_set_clb(_, body):
67
67
  try:
68
68
  if k == 'devfid' and not str(v).strip():
69
69
  raise Exception("Device name cannot be empty")
70
+ if k == 'crontasks' and isinstance(v, str) and not v.strip():
71
+ v = 'n/a'
70
72
  state = cfgput(k, v)
71
73
  except Exception as e:
72
74
  state = False
@@ -58,7 +58,9 @@
58
58
 
59
59
  .config-input-row,
60
60
  .param-row,
61
- .function-row {
61
+ .function-row,
62
+ .pinmap-map-row,
63
+ .pinmap-pair-row {
62
64
  display: flex;
63
65
  align-items: center;
64
66
  gap: 8px;
@@ -73,7 +75,9 @@
73
75
 
74
76
  .config-input-row input,
75
77
  .param-row input,
76
- .function-row input {
78
+ .function-row input,
79
+ .pinmap-map-row input,
80
+ .pinmap-pair-row input {
77
81
  flex: 1 1 auto;
78
82
  width: auto;
79
83
  min-width: 0;
@@ -167,6 +171,25 @@
167
171
  width: 100%;
168
172
  }
169
173
 
174
+ .pinmap-map-row select { flex: 0 1 180px; width: auto; }
175
+ .pinmap-pair-row input[data-pinmap-value] { flex: 0 1 120px; }
176
+ .schedule-time-config { display: grid; width: min(var(--config-input-width), 660px); max-width: 100%; }
177
+ .schedule-time-section,
178
+ .schedule-time-ui { display: grid; gap: 6px; width: 100%; }
179
+ #configFields .schedule-time-section > input { width: 100%; box-sizing: border-box; }
180
+ .schedule-time-alt { margin-top: 8px; padding-top: 8px; border-top: 1px solid rgba(255,255,255,0.16); }
181
+ .schedule-time-row { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; width: 100%; }
182
+ .schedule-clock-row, .schedule-sun-row { flex-wrap: nowrap; }
183
+ .schedule-day-button { flex: 1 1 0; min-width: 34px; height: 30px; padding: 0 6px; }
184
+ .schedule-sun-button { flex: 1 1 0; height: 30px; padding: 0 8px; }
185
+ #configFields .schedule-time-row input { flex: 1 1 0; width: 64px; height: 30px; }
186
+ #configFields .schedule-time-row input[data-sun-offset] { flex: 1 1 auto; width: 104px; }
187
+ .schedule-day-button.selected,
188
+ .schedule-sun-button.selected {
189
+ color: white;
190
+ background: #20843a;
191
+ }
192
+
170
193
  #configMenu .selected {
171
194
  background: color-mix(in srgb, white 15%, transparent);
172
195
  }
@@ -271,7 +294,9 @@ button.config-toggle-option.selected:hover {
271
294
 
272
295
  .config-input-row,
273
296
  .param-row,
274
- .function-row {
297
+ .function-row,
298
+ .pinmap-map-row,
299
+ .pinmap-pair-row {
275
300
  gap: 6px;
276
301
  }
277
302
 
@@ -279,4 +304,16 @@ button.config-toggle-option.selected:hover {
279
304
  flex-basis: 100%;
280
305
  min-width: 0;
281
306
  }
307
+
308
+ .pinmap-map-row {
309
+ flex-wrap: wrap;
310
+ }
311
+
312
+ .pinmap-map-row select {
313
+ flex-basis: 100%;
314
+ }
315
+
316
+ .pinmap-pair-row input[data-pinmap-value] {
317
+ flex-basis: 88px;
318
+ }
282
319
  }
@@ -87,6 +87,13 @@ function makeButton(label, onClick = null, className = '') {
87
87
  return button;
88
88
  }
89
89
 
90
+ function makeInput(type, value = '', placeholder = '', dataset = {}, onInput = null) {
91
+ const input = Object.assign(document.createElement('input'), {type, value, placeholder});
92
+ Object.assign(input.dataset, dataset);
93
+ if (onInput) input.oninput = onInput;
94
+ return input;
95
+ }
96
+
90
97
  function categoryTitle(category) {
91
98
  return (categoryIconMap[category] ? categoryIconMap[category] + ' ' : '') + category;
92
99
  }
@@ -565,7 +572,7 @@ function renderPackagesSection() {
565
572
  }
566
573
  setButtonBusy(installBtn, 'Installing...');
567
574
  setInlineDetails(installResult, `Install Package (URL or Package ref): ${url}\n\nInstalling...`);
568
- restAPI('pacman/install/' + restQuote(url), false)
575
+ restAPI('pacman/install/' + restQuote(url), false, 10000)
569
576
  .then(resp => {
570
577
  setInlineDetails(installResult, formatInstallResponse(url, resp));
571
578
  refreshPackagesList();
@@ -771,14 +778,12 @@ function formatPackageDetails(result) {
771
778
  }
772
779
 
773
780
  function renderPinMappingSection(data, container) {
774
- renderDefaultFields(data, container);
775
- const input = container.querySelector('input[type="text"]');
781
+ const pinmapUi = renderCustomPinMapField(container, data.cstmpmap || '');
782
+
776
783
  const select = document.createElement('select');
777
784
  select.disabled = true;
778
785
  select.appendChild(new Option('Loading known maps...', ''));
779
- if (input) {
780
- input.parentNode.appendChild(select);
781
- }
786
+ pinmapUi.mapRow.appendChild(select);
782
787
 
783
788
  const infoSection = document.createElement('section');
784
789
  infoSection.className = 'config-pin-info';
@@ -797,7 +802,7 @@ function renderPinMappingSection(data, container) {
797
802
  infoSection.appendChild(makeError('Unable to load pin map.'));
798
803
  return;
799
804
  }
800
- populatePinMapSelector(select, input, response.result.known_maps || []);
805
+ populatePinMapSelector(select, pinmapUi.mapInput, response.result.known_maps || []);
801
806
  renderPinMapInfo(infoSection, response.result);
802
807
  })
803
808
  .catch(error => {
@@ -806,32 +811,110 @@ function renderPinMappingSection(data, container) {
806
811
  });
807
812
  }
808
813
 
809
- function populatePinMapSelector(select, input, knownMaps) {
810
- if (!select || !input) return;
814
+ function parsePinMapConfig(value) {
815
+ const parts = parseSemicolonValues(value);
816
+ const mapName = parts[0] && !parts[0].includes(':') ? parts.shift() : '';
817
+ const pairs = parts.map(part => {
818
+ const splitAt = part.indexOf(':');
819
+ if (splitAt < 0) return null;
820
+ return [part.slice(0, splitAt).trim(), part.slice(splitAt + 1).trim()];
821
+ }).filter(pair => pair && pair[0] && pair[1]);
822
+ return {mapName: mapName === 'n/a' ? '' : mapName, pairs};
823
+ }
824
+
825
+ function serializePinMapConfig(mapName, pairs) {
826
+ const clean = (value, pattern = /[;:]/g) => (value || '').replace(pattern, '').trim();
827
+ const cleanMap = clean(mapName);
828
+ const serialized = (cleanMap && cleanMap !== 'n/a' ? [cleanMap] : []).concat(
829
+ pairs.map(pair => [clean(pair[0]), clean(pair[1], /;/g)])
830
+ .filter(([key, value]) => key && value)
831
+ .map(([key, value]) => `${key}:${value}`)
832
+ );
833
+ return serialized.length ? serialized.join('; ') : 'n/a';
834
+ }
835
+
836
+ function renderCustomPinMapField(container, value) {
837
+ const parsed = parsePinMapConfig(value);
838
+ const wrapper = document.createElement('div');
839
+ wrapper.className = 'config-field-group';
840
+
841
+ const label = textElement('label', 'Pin Map: ', 'config-label-block');
842
+ wrapper.appendChild(label);
843
+
844
+ const editor = document.createElement('div');
845
+ editor.className = 'config-stack';
846
+ editor.dataset.type = 'pinmap-editor';
847
+
848
+ const mapRow = document.createElement('div');
849
+ mapRow.className = 'pinmap-map-row';
850
+
851
+ const mapInput = makeInput('text', parsed.mapName, 'Automatic pin map', {pinmapName: 'true'}, () => updatePinMapTrack(editor));
852
+ mapRow.appendChild(mapInput);
853
+ editor.appendChild(mapRow);
854
+
855
+ const pairsLabel = textElement('label', 'Pin Overrides:', 'config-label-tight');
856
+ editor.appendChild(pairsLabel);
857
+
858
+ const pairContainer = document.createElement('div');
859
+ pairContainer.className = 'config-stack';
860
+ pairContainer.dataset.pinmapPairs = 'true';
861
+ editor.appendChild(pairContainer);
862
+
863
+ const addButton = makeButton('+', () => {
864
+ createPinMapPairRow(pairContainer);
865
+ updatePinMapTrack(editor);
866
+ }, 'pinmap-add config-icon-button config-add-button');
867
+
868
+ const pairs = parsed.pairs.length ? parsed.pairs : [['', '']];
869
+ pairs.forEach(pair => createPinMapPairRow(pairContainer, pair[0], pair[1]));
870
+
871
+ editor.appendChild(addButton);
872
+ wrapper.appendChild(editor);
873
+ container.appendChild(wrapper);
874
+ return {mapInput, mapRow};
875
+ }
876
+
877
+ function populatePinMapSelector(select, mapInput, knownMaps) {
878
+ if (!select || !mapInput) return;
811
879
  select.innerHTML = '';
812
- select.appendChild(new Option('Select known map...', ''));
880
+ select.appendChild(new Option('Known maps...', ''));
813
881
  knownMaps.forEach(mapName => {
814
882
  select.appendChild(new Option(mapName, mapName));
815
883
  });
816
884
  select.disabled = knownMaps.length === 0;
817
- const selectedMap = getPinMapName(input.value);
818
- select.value = knownMaps.includes(selectedMap) ? selectedMap : '';
885
+ select.value = knownMaps.includes(mapInput.value.trim()) ? mapInput.value.trim() : '';
819
886
  select.onchange = () => {
820
887
  if (!select.value) return;
821
- input.value = mergePinMapName(input.value, select.value);
822
- trackChange('cstmpmap', input.value);
888
+ mapInput.value = select.value;
889
+ updatePinMapTrack(mapInput.closest('[data-type="pinmap-editor"]'));
823
890
  };
824
891
  }
825
892
 
826
- function getPinMapName(value) {
827
- const firstPart = (value || '').split(';')[0].trim();
828
- return firstPart && !firstPart.includes(':') ? firstPart : '';
893
+ function createPinMapPairRow(container, key = '', value = '') {
894
+ const row = document.createElement('div');
895
+ row.className = 'pinmap-pair-row';
896
+ const editor = container.closest('[data-type="pinmap-editor"]');
897
+
898
+ row.appendChild(makeInput('text', key, 'key', {pinmapKey: 'true'}, () => updatePinMapTrack(editor)));
899
+ row.appendChild(makeInput('number', value, 'pin', {pinmapValue: 'true'}, () => updatePinMapTrack(editor)));
900
+
901
+ row.appendChild(makeButton('−', () => {
902
+ row.remove();
903
+ if (!container.querySelector('.pinmap-pair-row')) createPinMapPairRow(container);
904
+ updatePinMapTrack(editor);
905
+ }, 'config-icon-button config-remove-button'));
906
+
907
+ container.appendChild(row);
829
908
  }
830
909
 
831
- function mergePinMapName(value, mapName) {
832
- const parts = (value || '').split(';').map(part => part.trim()).filter(part => part);
833
- const customPins = parts[0] && !parts[0].includes(':') ? parts.slice(1) : parts;
834
- return [mapName].concat(customPins).join('; ');
910
+ function updatePinMapTrack(editor) {
911
+ if (!editor) return;
912
+ const mapInput = editor.querySelector('input[data-pinmap-name]');
913
+ const pairs = Array.from(editor.querySelectorAll('.pinmap-pair-row')).map(row => [
914
+ row.querySelector('input[data-pinmap-key]').value,
915
+ row.querySelector('input[data-pinmap-value]').value
916
+ ]);
917
+ trackChange('cstmpmap', serializePinMapConfig(mapInput ? mapInput.value : '', pairs));
835
918
  }
836
919
 
837
920
  function renderPinMapInfo(container, pinmap) {
@@ -1147,6 +1230,10 @@ function renderCrontaskField(container, key, value) {
1147
1230
  container.appendChild(wrapper);
1148
1231
  }
1149
1232
 
1233
+ function crontaskRoot(element) {
1234
+ return element.closest('[data-type="crontask"]') || element;
1235
+ }
1236
+
1150
1237
  function createCrontaskBlock(container, key, block, blockIdx, totalBlocks) {
1151
1238
  const blockWrapper = document.createElement('fieldset');
1152
1239
  styleGroupBox(blockWrapper, '20px');
@@ -1161,7 +1248,7 @@ function createCrontaskBlock(container, key, block, blockIdx, totalBlocks) {
1161
1248
  if (totalBlocks > 1 || totalBlocks === -1) {
1162
1249
  const delBlockButton = makeButton('Remove', () => {
1163
1250
  blockWrapper.remove();
1164
- updateCrontaskTrack(container.closest('[data-type="crontask"]') || container, key);
1251
+ updateCrontaskTrack(crontaskRoot(container), key);
1165
1252
  }, 'config-remove-button');
1166
1253
  blockHeader.appendChild(delBlockButton);
1167
1254
  }
@@ -1170,20 +1257,17 @@ function createCrontaskBlock(container, key, block, blockIdx, totalBlocks) {
1170
1257
  // Timestamp field
1171
1258
  const tsWrapper = document.createElement('div');
1172
1259
  tsWrapper.className = 'config-field-group';
1173
- const tsLabel = textElement('label', 'Time (WD:H:M:S or sunset/sunrise +/- offset): ', 'config-label-tight');
1174
- const tsInput = document.createElement('input');
1175
- tsInput.type = 'text';
1176
- tsInput.dataset.field = 'timestamp';
1260
+ const tsLabel = textElement('label', ' Timestamp (WD:H:M:S or Tag +/-Offset): ', 'config-label-tight');
1261
+ const tsGroup = textElement('div', '', 'schedule-time-config');
1177
1262
 
1178
1263
  const blockParts = block.split('!');
1179
- const timestamp = blockParts[0] || '';
1264
+ const timestamp = defaultScheduleTimestamp(blockParts[0]);
1180
1265
  const functionsStr = blockParts.slice(1).join('!');
1266
+ const tsInput = makeInput('text', timestamp, '', {field: 'timestamp'});
1181
1267
 
1182
- tsInput.value = timestamp;
1183
- tsInput.onchange = () => updateCrontaskTrack(container.closest('[data-type="crontask"]') || container, key);
1184
- tsInput.oninput = () => updateCrontaskTrack(container.closest('[data-type="crontask"]') || container, key);
1185
1268
  tsWrapper.appendChild(tsLabel);
1186
- tsWrapper.appendChild(tsInput);
1269
+ renderScheduleTimeControls(tsGroup, tsInput, blockWrapper, key);
1270
+ tsWrapper.appendChild(tsGroup);
1187
1271
  blockWrapper.appendChild(tsWrapper);
1188
1272
 
1189
1273
  // Functions field
@@ -1200,7 +1284,7 @@ function createCrontaskBlock(container, key, block, blockIdx, totalBlocks) {
1200
1284
  addFnButton.onclick = () => {
1201
1285
  if (addFnButton.disabled) return;
1202
1286
  createFunctionRow(fnContainer, key, blockWrapper, '', fnContainer.querySelectorAll('input[data-function-input]').length, -1, addFnButton);
1203
- updateCrontaskTrack(container.closest('[data-type="crontask"]') || container, key);
1287
+ updateCrontaskTrack(crontaskRoot(container), key);
1204
1288
  };
1205
1289
 
1206
1290
  const functionValues = parseCrontaskFunctions(functionsStr, container.dataset.blockSeparator === ';;');
@@ -1234,11 +1318,11 @@ function createFunctionRow(container, key, blockWrapper, value, idx, totalCount,
1234
1318
  input.placeholder = `Function ${idx + 1}`;
1235
1319
  input.dataset.functionInput = 'true';
1236
1320
  input.onchange = () => {
1237
- updateCrontaskTrack(blockWrapper.closest('[data-type="crontask"]') || blockWrapper, key);
1321
+ updateCrontaskTrack(crontaskRoot(blockWrapper), key);
1238
1322
  updateRowAddButtonState(container, addButton, 'input[data-function-input]');
1239
1323
  };
1240
1324
  input.oninput = () => {
1241
- updateCrontaskTrack(blockWrapper.closest('[data-type="crontask"]') || blockWrapper, key);
1325
+ updateCrontaskTrack(crontaskRoot(blockWrapper), key);
1242
1326
  updateRowAddButtonState(container, addButton, 'input[data-function-input]');
1243
1327
  };
1244
1328
  row.appendChild(input);
@@ -1249,7 +1333,7 @@ function createFunctionRow(container, key, blockWrapper, value, idx, totalCount,
1249
1333
  row.remove();
1250
1334
  moveFunctionAddButtonToLastRow(container, addButton);
1251
1335
  updateRowAddButtonState(container, addButton, 'input[data-function-input]');
1252
- updateCrontaskTrack(blockWrapper.closest('[data-type="crontask"]') || blockWrapper, key);
1336
+ updateCrontaskTrack(crontaskRoot(blockWrapper), key);
1253
1337
  }, 'config-icon-button config-remove-button');
1254
1338
  row.appendChild(delButton);
1255
1339
  }
@@ -1272,17 +1356,141 @@ function moveFunctionAddButtonToLastRow(container, addButton) {
1272
1356
  rows[rows.length - 1].appendChild(addButton);
1273
1357
  }
1274
1358
 
1359
+ function defaultScheduleTimestamp(value) {
1360
+ return value && value !== 'n/a' && value !== '*:*:*:0' ? value : '*:9:10:0';
1361
+ }
1362
+
1363
+ function renderScheduleTimeControls(wrapper, tsInput, blockWrapper, key) {
1364
+ const editor = document.createElement('div');
1365
+ editor.className = 'schedule-time-ui';
1366
+ const fixedGroup = textElement('div', '', 'schedule-time-section');
1367
+ editor.appendChild(fixedGroup);
1368
+ fixedGroup.appendChild(tsInput);
1369
+
1370
+ const dayRow = textElement('div', '', 'schedule-time-row');
1371
+ ['M', 'Tu', 'W', 'Th', 'F', 'Sa', 'Su'].forEach((label, idx) => {
1372
+ const button = makeButton(label, () => {
1373
+ button.classList.toggle('selected');
1374
+ writeScheduleTime(editor, tsInput, blockWrapper, key, false);
1375
+ }, 'schedule-day-button');
1376
+ button.dataset.day = idx;
1377
+ dayRow.appendChild(button);
1378
+ });
1379
+ fixedGroup.appendChild(dayRow);
1380
+
1381
+ const clockRow = textElement('div', '', 'schedule-time-row schedule-clock-row');
1382
+ ['h', 'm', 's'].forEach((part, idx) => {
1383
+ const input = makeInput('number', '', part.toUpperCase(), {timePart: part}, () => writeScheduleTime(editor, tsInput, blockWrapper, key, false));
1384
+ input.min = 0;
1385
+ input.max = idx === 0 ? 23 : 59;
1386
+ clockRow.appendChild(input);
1387
+ });
1388
+ fixedGroup.appendChild(clockRow);
1389
+
1390
+ const sunRow = textElement('div', '', 'schedule-time-row schedule-sun-row');
1391
+ const sunSection = textElement('div', '', 'schedule-time-section schedule-time-alt');
1392
+ ['sunset', 'sunrise'].forEach(tag => {
1393
+ const button = makeButton(tag, () => {
1394
+ editor.dataset.sun = editor.dataset.sun === tag ? '' : tag;
1395
+ writeScheduleTime(editor, tsInput, blockWrapper, key, true);
1396
+ }, 'schedule-sun-button');
1397
+ button.dataset.sunButton = tag;
1398
+ sunRow.appendChild(button);
1399
+ });
1400
+ const offset = makeInput('text', '', '+/- min', {sunOffset: 'true'}, () => writeScheduleTime(editor, tsInput, blockWrapper, key, true));
1401
+ offset.inputMode = 'numeric';
1402
+ sunRow.appendChild(offset);
1403
+ sunSection.appendChild(sunRow);
1404
+ editor.appendChild(sunSection);
1405
+
1406
+ tsInput.oninput = () => {
1407
+ syncScheduleTimeControls(editor, tsInput.value);
1408
+ updateCrontaskTrack(crontaskRoot(blockWrapper), key);
1409
+ };
1410
+ tsInput.onchange = tsInput.oninput;
1411
+ wrapper.appendChild(editor);
1412
+ syncScheduleTimeControls(editor, tsInput.value);
1413
+ }
1414
+
1415
+ function syncScheduleTimeControls(editor, value) {
1416
+ const sunMatch = String(value || '').trim().match(/^(sunrise|sunset)([+-]\d+)?$/);
1417
+ editor.dataset.sun = sunMatch ? sunMatch[1] : '';
1418
+ editor.querySelectorAll('[data-sun-button]').forEach(button => {
1419
+ button.classList.toggle('selected', button.dataset.sunButton === editor.dataset.sun);
1420
+ });
1421
+ const offset = editor.querySelector('[data-sun-offset]');
1422
+ if (offset) offset.value = sunMatch && sunMatch[2] ? sunMatch[2].replace(/^\+/, '') : '';
1423
+
1424
+ const parts = sunMatch ? [] : String(value || '').split(':');
1425
+ const selected = expandScheduleDays(parts.length === 4 ? parts[0].trim() : '*');
1426
+ editor.querySelectorAll('[data-day]').forEach(button => {
1427
+ button.classList.toggle('selected', selected.includes(Number(button.dataset.day)));
1428
+ });
1429
+ ['h', 'm', 's'].forEach((part, idx) => {
1430
+ const input = editor.querySelector(`[data-time-part="${part}"]`);
1431
+ if (input) input.value = parts.length === 4 ? parts[idx + 1].trim() : '';
1432
+ });
1433
+ }
1434
+
1435
+ function expandScheduleDays(wd) {
1436
+ if (wd === '*') return [0, 1, 2, 3, 4, 5, 6];
1437
+ const range = String(wd).match(/^(\d)-(\d)$/);
1438
+ if (range) {
1439
+ const days = [];
1440
+ for (let day = Number(range[1]); ; day = (day + 1) % 7) {
1441
+ days.push(day);
1442
+ if (day === Number(range[2])) break;
1443
+ }
1444
+ return days;
1445
+ }
1446
+ return /^\d$/.test(wd) ? [Number(wd)] : [];
1447
+ }
1448
+
1449
+ function compactScheduleDays(days) {
1450
+ days = days.sort((a, b) => a - b);
1451
+ if (days.length === 0 || days.length === 7) return '*';
1452
+ if (days.length === 1) return String(days[0]);
1453
+ const starts = days.filter(day => !days.includes((day + 6) % 7));
1454
+ const start = starts.length === 1 ? starts[0] : days[0];
1455
+ const ordered = [start];
1456
+ while (days.includes((ordered[ordered.length - 1] + 1) % 7)) {
1457
+ ordered.push((ordered[ordered.length - 1] + 1) % 7);
1458
+ if (ordered.length > 7) break;
1459
+ }
1460
+ return ordered.length === days.length ? `${ordered[0]}-${ordered[ordered.length - 1]}` : `${days[0]}-${days[days.length - 1]}`;
1461
+ }
1462
+
1463
+ function writeScheduleTime(editor, tsInput, blockWrapper, key, preferSun) {
1464
+ const sun = editor.dataset.sun;
1465
+ const offset = (editor.querySelector('[data-sun-offset]').value || '').trim();
1466
+ if (preferSun && sun) {
1467
+ tsInput.value = sun + (/^[+-]?\d+$/.test(offset) && Number(offset) !== 0 ? (/^[+-]/.test(offset) ? offset : '+' + offset) : '');
1468
+ if (!['-', '+'].includes(offset)) syncScheduleTimeControls(editor, tsInput.value);
1469
+ } else {
1470
+ const days = Array.from(editor.querySelectorAll('[data-day].selected')).map(button => Number(button.dataset.day));
1471
+ const defaults = ['9', '10', '0'];
1472
+ const parts = ['h', 'm', 's'].map((part, idx) => {
1473
+ const input = editor.querySelector(`[data-time-part="${part}"]`);
1474
+ const max = idx === 0 ? 23 : 59;
1475
+ return input.value === '' ? defaults[idx] : String(Math.min(max, Math.max(0, Number(input.value))));
1476
+ });
1477
+ editor.dataset.sun = '';
1478
+ tsInput.value = compactScheduleDays(days) + ':' + parts.join(':');
1479
+ syncScheduleTimeControls(editor, tsInput.value);
1480
+ }
1481
+ updateCrontaskTrack(crontaskRoot(blockWrapper), key);
1482
+ }
1483
+
1275
1484
  function updateCrontaskTrack(container, key) {
1276
1485
  const blocks = container.querySelectorAll('[data-block-index]');
1277
1486
  const blockStrings = Array.from(blocks).map(block => {
1278
1487
  const tsInput = block.querySelector('input[data-field="timestamp"]');
1279
1488
  const fnInputs = block.querySelectorAll('input[data-function-input]');
1280
- const timestamp = tsInput ? tsInput.value.trim() : '';
1489
+ const timestamp = tsInput ? defaultScheduleTimestamp(tsInput.value.trim()) : '';
1281
1490
  const functionValues = Array.from(fnInputs).map(input => input.value.trim()).filter(v => v.length > 0);
1282
1491
  const functions = functionValues.join(';');
1283
1492
 
1284
- if (!timestamp) return '';
1285
- if (!functions) return timestamp;
1493
+ if (!timestamp || !functions) return '';
1286
1494
  return `${timestamp}!${functions}`;
1287
1495
  }).filter(b => b.length > 0);
1288
1496
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: micrOSDevToolKit
3
- Version: 3.2.4
3
+ Version: 3.2.5
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
@@ -37,9 +37,13 @@ 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
39
  micrOS/micropython/micrOS-esp32-1.28.0-3.1.1-0.bin
40
+ micrOS/micropython/micrOS-esp32-1.28.0-3.2.5-0.bin
40
41
  micrOS/micropython/micrOS-esp32c3-1.28.0-3.1.1-0.bin
42
+ micrOS/micropython/micrOS-esp32c3-1.28.0-3.2.5-0.bin
41
43
  micrOS/micropython/micrOS-esp32c6-1.28.0-3.1.1-0.bin
44
+ micrOS/micropython/micrOS-esp32c6-1.28.0-3.2.5-0.bin
42
45
  micrOS/micropython/micrOS-esp32s3-1.28.0-3.1.1-0.bin
46
+ micrOS/micropython/micrOS-esp32s3-1.28.0-3.2.5-0.bin
43
47
  micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2
44
48
  micrOS/micropython/tinypico-20251209-v1.27.0.bin
45
49
  micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json
@@ -152,6 +156,7 @@ micrOS/source/modules/LM_tinyrgb.py
152
156
  micrOS/source/modules/LM_trackball.py
153
157
  micrOS/source/modules/LM_veml7700.py
154
158
  micrOS/source/modules/LM_web.py
159
+ micrOS/source/modules/__pycache__/LM_pacman.cpython-312.pyc
155
160
  micrOS/source/modules/__pycache__/LM_web.cpython-312.pyc
156
161
  micrOS/source/web/config.css
157
162
  micrOS/source/web/config.html
@@ -17,7 +17,7 @@ dependencies = ['adafruit-ampy', 'mpremote', 'esptool', 'ipaddress', 'netaddr',
17
17
 
18
18
  setuptools.setup(
19
19
  name='micrOSDevToolKit',
20
- version='3.2.4',
20
+ version='3.2.5',
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)',
@@ -143,7 +143,7 @@ class USB(Compile):
143
143
  "",
144
144
  "[IMAGE] {}".format(image_name),
145
145
  " MODE: RELEASE",
146
- " CORE: frozen micrOS",
146
+ " CORE: frozen micrOS (Core OTA update disabled)",
147
147
  " FEATURES: minimum release set",
148
148
  " BUILT-INS: {}".format(builtin_summary),
149
149
  "",
@@ -153,7 +153,7 @@ class USB(Compile):
153
153
  "",
154
154
  "[IMAGE] {}".format(image_name),
155
155
  " MODE: RELEASE",
156
- " CORE: frozen micrOS",
156
+ " CORE: frozen micrOS (Core OTA update disabled)",
157
157
  " FEATURES: minimum release set",
158
158
  "",
159
159
  )