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.
- {microsdevtoolkit-3.2.4/micrOSDevToolKit.egg-info → microsdevtoolkit-3.2.5}/PKG-INFO +1 -1
- microsdevtoolkit-3.2.5/micrOS/micropython/micrOS-esp32-1.28.0-3.2.5-0.bin +0 -0
- microsdevtoolkit-3.2.5/micrOS/micropython/micrOS-esp32c3-1.28.0-3.2.5-0.bin +0 -0
- microsdevtoolkit-3.2.5/micrOS/micropython/micrOS-esp32c6-1.28.0-3.2.5-0.bin +0 -0
- microsdevtoolkit-3.2.5/micrOS/micropython/micrOS-esp32s3-1.28.0-3.2.5-0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +3 -3
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Shell.py +1 -1
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Web.py +1 -1
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Scheduler.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Web.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_web.py +3 -1
- microsdevtoolkit-3.2.5/micrOS/source/modules/__pycache__/LM_pacman.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/__pycache__/LM_web.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/config.css +40 -3
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/config.js +246 -38
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5/micrOSDevToolKit.egg-info}/PKG-INFO +1 -1
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOSDevToolKit.egg-info/SOURCES.txt +5 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/setup.py +1 -1
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/DevEnvUSB.py +2 -2
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/socketClient.py +105 -27
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Shell.mpy +0 -0
- microsdevtoolkit-3.2.5/toolkit/workspace/precompiled/Web.mpy +0 -0
- microsdevtoolkit-3.2.5/toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
- microsdevtoolkit-3.2.5/toolkit/workspace/precompiled/web/config.css +1 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/config.js +25 -11
- microsdevtoolkit-3.2.4/toolkit/workspace/precompiled/Web.mpy +0 -0
- microsdevtoolkit-3.2.4/toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
- microsdevtoolkit-3.2.4/toolkit/workspace/precompiled/web/config.css +0 -1
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/LICENSE +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/MANIFEST.in +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/README.md +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/devToolKit.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/__init__.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/.DS_Store +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x64.exe +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x86.exe +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210x_Universal_Windows_Driver_ReleaseNotes.txt +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/SLAB_License_Agreement_VCP_Windows.txt +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm/silabser.sys +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm64/silabser.sys +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/dpinst.xml +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.cat +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.inf +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x64/silabser.sys +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x86/silabser.sys +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/media/__init__.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/media/dnd.png +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/media/logo.png +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/media/logo_mini.png +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/media/usb_port_icon.png +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/media/wifi_icon.png +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/__init__.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/board_commands.json +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32c3-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32c5-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32c6-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32cam-v1.21.0_camera.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32s2-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32s3-4MBflash-20241129-v1.24.1.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/micrOS-esp32-1.28.0-3.1.1-0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/micrOS-esp32c3-1.28.0-3.1.1-0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/micrOS-esp32c6-1.28.0-3.1.1-0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/micrOS-esp32s3-1.28.0-3.1.1-0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2 +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/micropython/tinypico-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/.DS_Store +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Auth.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Buffer.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Common.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Config.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Debug.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Files.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Hooks.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/InterConnect.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Interrupts.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Logger.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Network.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Notify.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Pacman.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Scheduler.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Server.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Tasks.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Time.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/Types.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Buffer.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Config.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Files.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Hooks.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/InterConnect.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Interrupts.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Pacman.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Power.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Tasks.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Time.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Types.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/micrOS.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/microIO.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/replhelper.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/urequests.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/config/_git.keep +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/helpers.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/main.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/mespnow.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/micrOS.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/micrOSloader.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/microIO.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_esp32.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_esp32c3.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_esp32c5.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_esp32c6.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_esp32s2.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_esp32s3.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_m5stamp.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_qtpy.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_rp2.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/IO_tinypico.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_L298N.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_L9110_DCmotor.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_OV2640.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_aht10.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_bme280.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_buzzer.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_cct.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_cluster.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_dht11.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_dht22.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_dimmer.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_distance.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_ds18.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_esp32.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_espnow.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_fileserver.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_gameOfLife.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_genIO.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_haptic.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_i2c.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_i2s_mic.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_ld2410.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_light_sensor.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_neoeffects.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_neopixel.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_oled.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_oled_sh1106.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_oled_ui.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_pacman.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_presence.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_qmi8658.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_rencoder.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_rest.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_rgb.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_rgbcct.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_roboarm.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_robustness.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_rp2w.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_sdcard.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_servo.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_stepper.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_switch.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_system.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_telegram.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_tinyrgb.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_trackball.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/modules/LM_veml7700.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/urequests.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/config.html +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/dashboard.html +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/editor.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/editor_plugins.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/filesui.html +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/filesui.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/index.html +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/uapi.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/uapi_widgets.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/udashboard.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/ustyle.css +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/uwidgets.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/web/uwidgets_pro.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/utests/__init__.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/utests/test_buffer.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/utests/test_config.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/utests/test_pacman.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/utests/test_scheduler.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/utests/test_time.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/utests/test_urequests.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/utests/test_urequests_real_api.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/utests/test_web_engine.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOSDevToolKit.egg-info/dependency_links.txt +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOSDevToolKit.egg-info/requires.txt +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOSDevToolKit.egg-info/top_level.txt +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/setup.cfg +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/DevEnvCompile.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/DevEnvOTA.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/Gateway.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/LM_to_compile.dat +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/MicrOSDevEnv.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/WebRepl.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/__init__.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/BackupRestore.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/CCTDemo.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/CCTTest.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/CamStream.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/CatGame.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/Dimmer.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/GetVersion.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/MicrophoneTest.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/NeoEffectsDemo.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/NeopixelTest.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/PresenceTest.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/QMI8685_GYRO.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/RGBTest.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/RoboArm.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/SED_test.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/SensorsTest.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/SystemTest.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/Template_app.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/__init__.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/_app_base.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/_capture.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/_gyro_visualizer.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/_micPlotting.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/_presencePlotting.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/dashboard_apps/uLightDemo.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/gateway/gateway.css +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/gateway/img_stream.html +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/gateway/index.html +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/LocalMachine.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/MicrosFiles.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/Repository.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/SafeInput.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/SearchDevices.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/SerialDriverHandler.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/TerminalColors.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/__init__.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/macroScript.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/micrOSClient.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/micrOSClientHistory.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/lib/pip_package_installer.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/micrOSImageBuilder.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/micrOSImageConfig.json +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/micrOSdashboard.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/micrOSlint.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/.DS_Store +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/IO_darwin.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/IO_darwin.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/Metrics.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/camera.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/dht.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/dht.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/dotstar.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/dotstar.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/dotstar.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/esp32.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/esp32.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/esp32.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/framebuf.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/framebuf.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/machine.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/machine.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/micropython.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/micropython.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/mip.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/neopixel.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/neopixel.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/network.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/network.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/ntptime.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/onewire.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/onewire.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/onewire.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/sim_common.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/simgc.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/simgc.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/simulator.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/simulator.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/tinypico.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/tinypico.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/tinypico.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/urandom.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/ustruct.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/ustruct.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/utime.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/utime.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/utime.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/webrepl.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/webrepl.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/__pycache__/webrepl.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/aioespnow.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/camera.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/dht.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/dotstar.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/ds18x20.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/esp32.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/framebuf.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/machine.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/micropython.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/mip.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/neopixel.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/network.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/node_config.json +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/ntptime.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/onewire.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/sim_common.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/simgc.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/simulator.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/tinypico.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/uasyncio.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/uos.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/urandom.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/usocket.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/ussl.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/ustruct.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/utime.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/view01.jpg +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/view02.jpg +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/simulator_lib/webrepl.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/user_data/.include +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/user_data/webhooks/generic.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/user_data/webhooks/macro.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/user_data/webhooks/template.macro +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/user_data/webhooks/template.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/__init__.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Auth.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Buffer.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Common.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Config.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Debug.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Files.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Hooks.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/InterConnect.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Interrupts.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Logger.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Network.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Notify.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Pacman.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Scheduler.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Server.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Tasks.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Time.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/Types.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/_mpy.version +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/config/_git.keep +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/helpers.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/main.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/mespnow.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/micrOS.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/microIO.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_esp32.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_esp32c3.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_esp32c5.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_esp32c6.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_esp32s2.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_esp32s3.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_m5stamp.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_qtpy.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_rp2.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/IO_tinypico.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_L298N.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_L9110_DCmotor.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_OV2640.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_aht10.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_bme280.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_buzzer.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_cct.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_cluster.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_dht11.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_dht22.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_dimmer.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_distance.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_ds18.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_esp32.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_espnow.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_fileserver.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_gameOfLife.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_genIO.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_haptic.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_i2c.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_i2s_mic.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_ld2410.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_light_sensor.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_neoeffects.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_neopixel.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_oled.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_oled_sh1106.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_oled_ui.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_presence.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_qmi8658.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_rencoder.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_rest.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_rgb.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_rgbcct.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_roboarm.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_robustness.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_rp2w.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_sdcard.py +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_servo.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_stepper.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_switch.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_system.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_telegram.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_tinyrgb.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_trackball.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/modules/LM_veml7700.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/urequests.mpy +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/config.html +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/dashboard.html +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/editor.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/editor_plugins.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/filesui.html +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/filesui.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/index.html +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/uapi.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/uapi_widgets.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/udashboard.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/ustyle.css +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/uwidgets.js +0 -0
- {microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/toolkit/workspace/precompiled/web/uwidgets_pro.js +0 -0
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
0
|
|
126
126
|
],
|
|
127
127
|
"modules/LM_web.py": [
|
|
128
|
-
9.
|
|
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
|
-
|
|
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.
|
|
323
|
+
"version": "3.2.5-0"
|
|
324
324
|
}
|
|
325
325
|
}
|
|
@@ -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
|
|
Binary file
|
{microsdevtoolkit-3.2.4 → microsdevtoolkit-3.2.5}/micrOS/source/__pycache__/Web.cpython-312.pyc
RENAMED
|
Binary file
|
|
@@ -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
|
|
Binary file
|
|
Binary file
|
|
@@ -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
|
-
|
|
775
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
|
810
|
-
|
|
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('
|
|
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
|
-
|
|
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
|
-
|
|
822
|
-
|
|
888
|
+
mapInput.value = select.value;
|
|
889
|
+
updatePinMapTrack(mapInput.closest('[data-type="pinmap-editor"]'));
|
|
823
890
|
};
|
|
824
891
|
}
|
|
825
892
|
|
|
826
|
-
function
|
|
827
|
-
const
|
|
828
|
-
|
|
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
|
|
832
|
-
|
|
833
|
-
const
|
|
834
|
-
|
|
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
|
|
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', '
|
|
1174
|
-
const
|
|
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
|
-
|
|
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
|
|
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
|
|
1321
|
+
updateCrontaskTrack(crontaskRoot(blockWrapper), key);
|
|
1238
1322
|
updateRowAddButtonState(container, addButton, 'input[data-function-input]');
|
|
1239
1323
|
};
|
|
1240
1324
|
input.oninput = () => {
|
|
1241
|
-
updateCrontaskTrack(blockWrapper
|
|
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
|
|
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
|
|
|
@@ -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.
|
|
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
|
)
|