reachy-mini 1.2.5rc1__py3-none-any.whl
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.
- reachy_mini/__init__.py +4 -0
- reachy_mini/apps/__init__.py +25 -0
- reachy_mini/apps/app.py +258 -0
- reachy_mini/apps/assistant.py +787 -0
- reachy_mini/apps/manager.py +312 -0
- reachy_mini/apps/sources/__init__.py +4 -0
- reachy_mini/apps/sources/hf_space.py +106 -0
- reachy_mini/apps/sources/local_common_venv.py +567 -0
- reachy_mini/apps/templates/README.md.j2 +12 -0
- reachy_mini/apps/templates/gitignore.j2 +3 -0
- reachy_mini/apps/templates/index.html.j2 +40 -0
- reachy_mini/apps/templates/main.py.j2 +74 -0
- reachy_mini/apps/templates/pyproject.toml.j2 +28 -0
- reachy_mini/apps/templates/static/index.html.j2 +27 -0
- reachy_mini/apps/templates/static/main.js.j2 +47 -0
- reachy_mini/apps/templates/static/style.css.j2 +25 -0
- reachy_mini/apps/templates/style.css.j2 +411 -0
- reachy_mini/apps/utils.py +30 -0
- reachy_mini/assets/config/hardware_config.yaml +164 -0
- reachy_mini/assets/confused1.wav +0 -0
- reachy_mini/assets/count.wav +0 -0
- reachy_mini/assets/dance1.wav +0 -0
- reachy_mini/assets/firmware/CHANGELOG.md +15 -0
- reachy_mini/assets/firmware/reachymini_ua_io16_lin_v2.1.2.bin +0 -0
- reachy_mini/assets/firmware/reachymini_ua_io16_lin_v2.1.3.bin +0 -0
- reachy_mini/assets/firmware/update.sh +9 -0
- reachy_mini/assets/go_sleep.wav +0 -0
- reachy_mini/assets/impatient1.wav +0 -0
- reachy_mini/assets/kinematics_data.json +253 -0
- reachy_mini/assets/models/fknetwork.dynamic.onnx +0 -0
- reachy_mini/assets/models/fknetwork.onnx +0 -0
- reachy_mini/assets/models/fknetwork_int8.onnx +0 -0
- reachy_mini/assets/models/iknetwork.onnx +0 -0
- reachy_mini/assets/wake_up.wav +0 -0
- reachy_mini/daemon/__init__.py +1 -0
- reachy_mini/daemon/app/__init__.py +1 -0
- reachy_mini/daemon/app/bg_job_register.py +142 -0
- reachy_mini/daemon/app/dashboard/static/assets/KO-cartoon-static.svg +40 -0
- reachy_mini/daemon/app/dashboard/static/assets/awake-cartoon-static.svg +42 -0
- reachy_mini/daemon/app/dashboard/static/assets/awake-cartoon.svg +6 -0
- reachy_mini/daemon/app/dashboard/static/assets/go-to-sleep-cartoon.svg +6 -0
- reachy_mini/daemon/app/dashboard/static/assets/no-wifi-cartoon-static.svg +50 -0
- reachy_mini/daemon/app/dashboard/static/assets/no-wifi-cartoon.svg +6 -0
- reachy_mini/daemon/app/dashboard/static/assets/reachy-mini-awake.svg +18 -0
- reachy_mini/daemon/app/dashboard/static/assets/reachy-mini-connection-lost-animation.svg +6 -0
- reachy_mini/daemon/app/dashboard/static/assets/reachy-mini-go-to-sleep-animation.svg +6 -0
- reachy_mini/daemon/app/dashboard/static/assets/reachy-mini-ko-animation.svg +6 -0
- reachy_mini/daemon/app/dashboard/static/assets/reachy-mini-ko.svg +22 -0
- reachy_mini/daemon/app/dashboard/static/assets/reachy-mini-sleeping-static.svg +41 -0
- reachy_mini/daemon/app/dashboard/static/assets/reachy-mini-sleeping.svg +18 -0
- reachy_mini/daemon/app/dashboard/static/assets/reachy-mini-wake-up-animation.svg +6 -0
- reachy_mini/daemon/app/dashboard/static/css/app.css +1433 -0
- reachy_mini/daemon/app/dashboard/static/fonts/Archivo-Italic-VariableFont_wdth,wght.ttf +0 -0
- reachy_mini/daemon/app/dashboard/static/fonts/Archivo-VariableFont_wdth,wght.ttf +0 -0
- reachy_mini/daemon/app/dashboard/static/fonts/Asap-Italic-VariableFont_wdth,wght.ttf +0 -0
- reachy_mini/daemon/app/dashboard/static/fonts/Asap-VariableFont_wdth,wght.ttf +0 -0
- reachy_mini/daemon/app/dashboard/static/js/3rdparty/gstwebrtc-api-2.0.0.min.js +5 -0
- reachy_mini/daemon/app/dashboard/static/js/apps.js +323 -0
- reachy_mini/daemon/app/dashboard/static/js/appstore.js +167 -0
- reachy_mini/daemon/app/dashboard/static/js/daemon.js +169 -0
- reachy_mini/daemon/app/dashboard/static/js/health_check.js +9 -0
- reachy_mini/daemon/app/dashboard/static/js/move_player.js +132 -0
- reachy_mini/daemon/app/dashboard/static/js/notification.js +41 -0
- reachy_mini/daemon/app/dashboard/static/js/update.js +132 -0
- reachy_mini/daemon/app/dashboard/static/js/volume_control.js +252 -0
- reachy_mini/daemon/app/dashboard/static/js/wifi.js +176 -0
- reachy_mini/daemon/app/dashboard/tailwindcss/README.md +15 -0
- reachy_mini/daemon/app/dashboard/tailwindcss/package-lock.json +1127 -0
- reachy_mini/daemon/app/dashboard/tailwindcss/package.json +6 -0
- reachy_mini/daemon/app/dashboard/tailwindcss/pnpm-lock.yaml +608 -0
- reachy_mini/daemon/app/dashboard/tailwindcss/postcss.config.js +6 -0
- reachy_mini/daemon/app/dashboard/tailwindcss/styles/app.css +185 -0
- reachy_mini/daemon/app/dashboard/tailwindcss/tailwind.config.js +11 -0
- reachy_mini/daemon/app/dashboard/templates/base.html +21 -0
- reachy_mini/daemon/app/dashboard/templates/index.html +20 -0
- reachy_mini/daemon/app/dashboard/templates/sections/apps.html +8 -0
- reachy_mini/daemon/app/dashboard/templates/sections/appstore.html +35 -0
- reachy_mini/daemon/app/dashboard/templates/sections/daemon.html +45 -0
- reachy_mini/daemon/app/dashboard/templates/sections/move_player.html +121 -0
- reachy_mini/daemon/app/dashboard/templates/sections/notification.html +19 -0
- reachy_mini/daemon/app/dashboard/templates/sections/update.html +54 -0
- reachy_mini/daemon/app/dashboard/templates/sections/wifi.html +46 -0
- reachy_mini/daemon/app/dashboard/templates/settings.html +14 -0
- reachy_mini/daemon/app/dependencies.py +41 -0
- reachy_mini/daemon/app/main.py +469 -0
- reachy_mini/daemon/app/models.py +149 -0
- reachy_mini/daemon/app/routers/apps.py +114 -0
- reachy_mini/daemon/app/routers/daemon.py +85 -0
- reachy_mini/daemon/app/routers/kinematics.py +57 -0
- reachy_mini/daemon/app/routers/motors.py +41 -0
- reachy_mini/daemon/app/routers/move.py +265 -0
- reachy_mini/daemon/app/routers/state.py +146 -0
- reachy_mini/daemon/app/routers/update.py +86 -0
- reachy_mini/daemon/app/routers/volume.py +423 -0
- reachy_mini/daemon/app/routers/wifi_config.py +219 -0
- reachy_mini/daemon/app/services/__init__.py +1 -0
- reachy_mini/daemon/app/services/bluetooth/bluetooth_service.py +796 -0
- reachy_mini/daemon/app/services/bluetooth/commands/HOTSPOT.sh +7 -0
- reachy_mini/daemon/app/services/bluetooth/commands/RESTART_DAEMON.sh +4 -0
- reachy_mini/daemon/app/services/bluetooth/commands/SOFTWARE_RESET.sh +7 -0
- reachy_mini/daemon/app/services/bluetooth/install_service_bluetooth.sh +39 -0
- reachy_mini/daemon/app/services/gpio_shutdown/__init__.py +1 -0
- reachy_mini/daemon/app/services/gpio_shutdown/install_service.sh +33 -0
- reachy_mini/daemon/app/services/gpio_shutdown/launcher.sh +3 -0
- reachy_mini/daemon/app/services/gpio_shutdown/shutdown_monitor.py +28 -0
- reachy_mini/daemon/app/services/wireless/generate_asoundrc.sh +70 -0
- reachy_mini/daemon/app/services/wireless/install_service.sh +33 -0
- reachy_mini/daemon/app/services/wireless/launcher.sh +5 -0
- reachy_mini/daemon/backend/__init__.py +1 -0
- reachy_mini/daemon/backend/abstract.py +815 -0
- reachy_mini/daemon/backend/mujoco/__init__.py +36 -0
- reachy_mini/daemon/backend/mujoco/backend.py +395 -0
- reachy_mini/daemon/backend/mujoco/utils.py +59 -0
- reachy_mini/daemon/backend/mujoco/video_udp.py +57 -0
- reachy_mini/daemon/backend/robot/__init__.py +8 -0
- reachy_mini/daemon/backend/robot/backend.py +597 -0
- reachy_mini/daemon/daemon.py +651 -0
- reachy_mini/daemon/utils.py +116 -0
- reachy_mini/descriptions/reachy_mini/mjcf/additional.xml +6 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/5w_speaker.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/5w_speaker.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna_body_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna_body_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna_holder_l_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna_holder_l_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna_holder_r_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna_holder_r_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna_interface_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/antenna_interface_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/arducam.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/arducam.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/b3b_eh.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/b3b_eh.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/b3b_eh_1.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/b3b_eh_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/bearing_85x110x13.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/bearing_85x110x13.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/big_lens_d40.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/big_lens_d40.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/body_down_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/body_down_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/body_foot_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/body_foot_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/body_top_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/body_top_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/body_turning_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/body_turning_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/bts2_m2_6x8.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/bts2_m2_6x8.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/README.m +1 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/coarse/body_top_3dprint_collider_back_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/coarse/body_top_3dprint_collider_back_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/coarse/body_top_3dprint_collider_back_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/coarse/body_top_3dprint_collider_back_3.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/coarse/body_top_3dprint_collider_front_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/coarse/body_top_3dprint_collider_front_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/coarse/body_top_3dprint_collider_front_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/coarse/head_one_3dprint_collider_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/fine/body_top_3dprint_collider_back_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/fine/body_top_3dprint_collider_back_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/fine/body_top_3dprint_collider_back_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/fine/body_top_3dprint_collider_back_3.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/fine/body_top_3dprint_collider_front_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/fine/body_top_3dprint_collider_front_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/fine/body_top_3dprint_collider_front_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/collision/fine/head_one_3dprint_collider_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/croissant_1k.blend/croissant_1k.obj +5021 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/croissant_1k.blend/textures/croissant_diff_1k.png +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_case_b_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_case_b_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_case_f_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_case_f_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_case_m_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_case_m_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_horn_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_horn_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_led_cap2_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/dc15_a01_led_cap2_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/food_apple_01_1k.blend/food_apple_01_1k.obj +18045 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/food_apple_01_1k.blend/textures/food_apple_01_diff_1k.png +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/glasses_dolder_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/glasses_dolder_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/head_back_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/head_back_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/head_front_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/head_front_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/head_mic_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/head_mic_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/lens_cap_d30_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/lens_cap_d30_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/lens_cap_d40_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/lens_cap_d40_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/m12_fisheye_lens_1_8mm.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/m12_fisheye_lens_1_8mm.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/mp01062_stewart_arm_3.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/mp01062_stewart_arm_3.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/neck_reference_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/neck_reference_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/phs_1_7x20_5_dc10.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/phs_1_7x20_5_dc10.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/phs_1_7x20_5_dc10_1.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/phs_1_7x20_5_dc10_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/phs_1_7x20_5_dc10_2.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/phs_1_7x20_5_dc10_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/phs_1_7x20_5_dc10_3.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/phs_1_7x20_5_dc10_3.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/pp01102_arducam_carter.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/pp01102_arducam_carter.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/rubber_duck_toy_1k.blend/rubber_duck_toy_1k.obj +8940 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/rubber_duck_toy_1k.blend/textures/rubber_duck_toy_diff_1k.png +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/small_lens_d30.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/small_lens_d30.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_link_ball.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_link_ball.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_link_ball__2.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_link_ball__2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_link_rod.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_link_rod.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_main_plate_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_main_plate_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_tricap_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/stewart_tricap_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/wooden_table_02_1k.blend/textures/wooden_table_02_diff_1k.png +0 -0
- reachy_mini/descriptions/reachy_mini/mjcf/assets/wooden_table_02_1k.blend/wooden_table_02_1k.obj +485 -0
- reachy_mini/descriptions/reachy_mini/mjcf/config.json +21 -0
- reachy_mini/descriptions/reachy_mini/mjcf/joints_properties.xml +29 -0
- reachy_mini/descriptions/reachy_mini/mjcf/reachy_mini.xml +642 -0
- reachy_mini/descriptions/reachy_mini/mjcf/reachy_mini.xml.bak +442 -0
- reachy_mini/descriptions/reachy_mini/mjcf/scene.xml +24 -0
- reachy_mini/descriptions/reachy_mini/mjcf/scenes/empty.xml +27 -0
- reachy_mini/descriptions/reachy_mini/mjcf/scenes/minimal.xml +132 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/5w_speaker.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/5w_speaker.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna_body_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna_body_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna_holder_l_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna_holder_l_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna_holder_r_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna_holder_r_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna_interface_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/antenna_interface_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/arducam.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/arducam.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/arm.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/arm.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/b3b_eh.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/b3b_eh.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/b3b_eh_1.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/b3b_eh_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/ball.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/ball.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/bearing_85x110x13.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/bearing_85x110x13.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/big_lens.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/big_lens.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/big_lens_d40.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/big_lens_d40.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/body_down_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/body_down_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/body_foot_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/body_foot_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/body_top_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/body_top_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/body_turning_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/body_turning_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/bottom_body.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/bottom_body.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/bts2_m2_6x8.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/bts2_m2_6x8.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/README.m +1 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/coarse/body_top_3dprint_collider_back_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/coarse/body_top_3dprint_collider_back_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/coarse/body_top_3dprint_collider_back_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/coarse/body_top_3dprint_collider_back_3.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/coarse/body_top_3dprint_collider_front_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/coarse/body_top_3dprint_collider_front_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/coarse/body_top_3dprint_collider_front_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/coarse/head_one_3dprint_collider_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/fine/body_top_3dprint_collider_back_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/fine/body_top_3dprint_collider_back_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/fine/body_top_3dprint_collider_back_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/fine/body_top_3dprint_collider_back_3.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/fine/body_top_3dprint_collider_front_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/fine/body_top_3dprint_collider_front_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/fine/body_top_3dprint_collider_front_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/collision/fine/head_one_3dprint_collider_0.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_case_b_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_case_b_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_case_f_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_case_f_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_case_m_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_case_m_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_horn_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_horn_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_led_cap2_dummy.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/dc15_a01_led_cap2_dummy.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/drive_palonier__configuration_default.part +14 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/drive_palonier__configuration_default.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/drive_palonier__configuration_simple_axe.part +14 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/drive_palonier__configuration_simple_axe.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/eye_support.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/eye_support.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/foot.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/foot.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/glasses_dolder_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/glasses_dolder_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_back_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_back_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_front_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_front_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_head_back.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_head_back.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_interface.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_interface.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_mic_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_mic_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_shell_front.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/head_shell_front.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/lens_cap_d30_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/lens_cap_d30_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/lens_cap_d40_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/lens_cap_d40_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/m12_fisheye_lens_1_8mm.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/m12_fisheye_lens_1_8mm.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/m12_lens.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/m12_lens.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/main_plate.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/main_plate.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/mid_plate.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/mid_plate.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/mp01062_stewart_arm_3.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/mp01062_stewart_arm_3.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/neck_reference_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/neck_reference_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/phs_1_7x20_5_dc10.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/phs_1_7x20_5_dc10.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/phs_1_7x20_5_dc10_1.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/phs_1_7x20_5_dc10_1.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/phs_1_7x20_5_dc10_2.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/phs_1_7x20_5_dc10_2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/phs_1_7x20_5_dc10_3.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/phs_1_7x20_5_dc10_3.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/plateform.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/plateform.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp00xxx_stewart_rod.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp00xxx_stewart_rod.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01062_stewart_arm.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01062_stewart_arm.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01063_stewart_plateform.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01063_stewart_plateform.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01064_stewart_main_plate.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01064_stewart_main_plate.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01065_stewart_side_plate.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01065_stewart_side_plate.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01066_stewart_mid_plate.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01066_stewart_mid_plate.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01067_bottom_body.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01067_bottom_body.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01068_top_body.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01068_top_body.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01069_head_shell_front.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01069_head_shell_front.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01070_head_head_back.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01070_head_head_back.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01071_turning_bowl.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01071_turning_bowl.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01072_turning_end.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01072_turning_end.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01078_glasses.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01078_glasses.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01079_back_big_eye.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01079_back_big_eye.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01080_back_small_eye.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01080_back_small_eye.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01102_arducam_carter.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/pp01102_arducam_carter.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/rod.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/rod.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/shape.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/shape.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/side_plate.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/side_plate.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/small_lens.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/small_lens.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/small_lens_d30.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/small_lens_d30.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_link_ball.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_link_ball.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_link_ball__2.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_link_ball__2.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_link_rod.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_link_rod.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_main_plate_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_main_plate_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_tricap_3dprint.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/stewart_tricap_3dprint.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/test_antenna.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/test_antenna.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/test_antenna_body.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/test_antenna_body.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/top_body.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/top_body.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/turning_bowl.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/turning_bowl.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/uc_a37_rev_a_step.part +13 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/uc_a37_rev_a_step.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0122topcabinetcase_95__configuration_default.part +14 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0122topcabinetcase_95__configuration_default.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0122topcabinetcase_95__configuration_simple_axe.part +14 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0122topcabinetcase_95__configuration_simple_axe.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0123middlecase_56__configuration_default.part +14 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0123middlecase_56__configuration_default.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0123middlecase_56__configuration_simple_axe.part +14 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0123middlecase_56__configuration_simple_axe.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0124bottomcase_45__configuration_default.part +14 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0124bottomcase_45__configuration_default.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0124bottomcase_45__configuration_simple_axe.part +14 -0
- reachy_mini/descriptions/reachy_mini/urdf/assets/wj_wk00_0124bottomcase_45__configuration_simple_axe.stl +0 -0
- reachy_mini/descriptions/reachy_mini/urdf/config.json +18 -0
- reachy_mini/descriptions/reachy_mini/urdf/robot.urdf +3281 -0
- reachy_mini/descriptions/reachy_mini/urdf/robot.urdf.bak +3282 -0
- reachy_mini/descriptions/reachy_mini/urdf/robot_no_collision.urdf +2316 -0
- reachy_mini/descriptions/reachy_mini/urdf/robot_simple_collision.urdf +2399 -0
- reachy_mini/io/__init__.py +15 -0
- reachy_mini/io/abstract.py +70 -0
- reachy_mini/io/audio_ws.py +242 -0
- reachy_mini/io/protocol.py +44 -0
- reachy_mini/io/video_ws.py +135 -0
- reachy_mini/io/ws_controller.py +120 -0
- reachy_mini/io/zenoh_client.py +273 -0
- reachy_mini/io/zenoh_server.py +230 -0
- reachy_mini/kinematics/__init__.py +68 -0
- reachy_mini/kinematics/analytical_kinematics.py +151 -0
- reachy_mini/kinematics/nn_kinematics.py +109 -0
- reachy_mini/kinematics/placo_kinematics.py +656 -0
- reachy_mini/media/__init__.py +1 -0
- reachy_mini/media/audio_base.py +111 -0
- reachy_mini/media/audio_control_utils.py +455 -0
- reachy_mini/media/audio_gstreamer.py +272 -0
- reachy_mini/media/audio_sounddevice.py +321 -0
- reachy_mini/media/audio_utils.py +114 -0
- reachy_mini/media/camera_base.py +100 -0
- reachy_mini/media/camera_constants.py +152 -0
- reachy_mini/media/camera_gstreamer.py +231 -0
- reachy_mini/media/camera_opencv.py +89 -0
- reachy_mini/media/camera_utils.py +111 -0
- reachy_mini/media/media_manager.py +281 -0
- reachy_mini/media/webrtc_client_gstreamer.py +288 -0
- reachy_mini/media/webrtc_daemon.py +334 -0
- reachy_mini/motion/__init__.py +4 -0
- reachy_mini/motion/goto.py +71 -0
- reachy_mini/motion/move.py +43 -0
- reachy_mini/motion/recorded_move.py +146 -0
- reachy_mini/reachy_mini.py +753 -0
- reachy_mini/tools/reflash_motors.py +116 -0
- reachy_mini/tools/setup_motor.py +422 -0
- reachy_mini/tools/setup_motor_rpi.py +108 -0
- reachy_mini/utils/__init__.py +46 -0
- reachy_mini/utils/constants.py +9 -0
- reachy_mini/utils/hardware_config/__init__.py +1 -0
- reachy_mini/utils/hardware_config/parser.py +65 -0
- reachy_mini/utils/interpolation.py +227 -0
- reachy_mini/utils/parse_urdf_for_kinematics.py +110 -0
- reachy_mini/utils/rerun.py +320 -0
- reachy_mini/utils/wireless_version/__init__.py +1 -0
- reachy_mini/utils/wireless_version/startup_check.py +144 -0
- reachy_mini/utils/wireless_version/update.py +20 -0
- reachy_mini/utils/wireless_version/update_available.py +61 -0
- reachy_mini/utils/wireless_version/utils.py +39 -0
- reachy_mini-1.2.5rc1.dist-info/METADATA +161 -0
- reachy_mini-1.2.5rc1.dist-info/RECORD +479 -0
- reachy_mini-1.2.5rc1.dist-info/WHEEL +5 -0
- reachy_mini-1.2.5rc1.dist-info/entry_points.txt +4 -0
- reachy_mini-1.2.5rc1.dist-info/licenses/LICENSE +201 -0
- reachy_mini-1.2.5rc1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
@import "tailwindcss";
|
|
2
|
+
|
|
3
|
+
@source "../../templates/**/*.html";
|
|
4
|
+
@source "../../static/js/**/*.js";
|
|
5
|
+
|
|
6
|
+
@font-face {
|
|
7
|
+
font-family: 'Asap';
|
|
8
|
+
src: url('/static/fonts/Asap-VariableFont_wdth,wght.ttf') format('truetype');
|
|
9
|
+
font-weight: 100 900;
|
|
10
|
+
font-style: normal;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@font-face {
|
|
14
|
+
font-family: 'Asap';
|
|
15
|
+
src: url('/static/fonts/Asap-Italic-VariableFont_wdth,wght.ttf') format('truetype');
|
|
16
|
+
font-weight: 100 900;
|
|
17
|
+
font-style: italic;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@font-face {
|
|
21
|
+
font-family: 'Archivo';
|
|
22
|
+
src: url('/static/fonts/Archivo-VariableFont_wdth,wght.ttf') format('truetype');
|
|
23
|
+
font-weight: 100 900;
|
|
24
|
+
font-style: normal;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@font-face {
|
|
28
|
+
font-family: 'Archivo';
|
|
29
|
+
src: url('/static/fonts/Archivo-Italic-VariableFont_wdth,wght.ttf') format('truetype');
|
|
30
|
+
font-weight: 100 900;
|
|
31
|
+
font-style: italic;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
html {
|
|
37
|
+
-webkit-font-smoothing: antialiased;
|
|
38
|
+
-moz-osx-font-smoothing: grayscale;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
body {
|
|
42
|
+
font-family: 'Archivo', 'Asap', sans-serif;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.daemon-status-title {
|
|
46
|
+
font-size: 36px;
|
|
47
|
+
font-weight: 500;
|
|
48
|
+
letter-spacing: 0.3px;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.daemon-status-collapse {
|
|
52
|
+
font-family: 'Asap', sans-serif;
|
|
53
|
+
font-weight: 400;
|
|
54
|
+
color: rgba(0, 0, 0, 0.7);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* APPs styles */
|
|
58
|
+
|
|
59
|
+
.app-section {
|
|
60
|
+
border-radius: 8px;
|
|
61
|
+
border-width: 1px;
|
|
62
|
+
padding: 16px;
|
|
63
|
+
gap: 16px;
|
|
64
|
+
background: #FFFFFF;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.installed-app-title {
|
|
68
|
+
font-weight: 600;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* Hugging Face App Store Styles */
|
|
72
|
+
|
|
73
|
+
.app-section-title {
|
|
74
|
+
font-weight: 500;
|
|
75
|
+
font-size: 24px;
|
|
76
|
+
letter-spacing: 0px;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.app-list-item {
|
|
80
|
+
padding: 4px;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.hf-app-icon {
|
|
84
|
+
width: 42px;
|
|
85
|
+
height: 42px;
|
|
86
|
+
border-radius: 10px;
|
|
87
|
+
text-align: center;
|
|
88
|
+
font-size: 31px;
|
|
89
|
+
background-color: rgba(0, 0, 0, 0.1);
|
|
90
|
+
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.hf-app-title {
|
|
94
|
+
font-weight: 500;
|
|
95
|
+
font-size: 18px;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.hf-app-description {
|
|
99
|
+
font-family: 'Asap', sans-serif;
|
|
100
|
+
font-weight: 400;
|
|
101
|
+
font-size: 16px;
|
|
102
|
+
line-height: 75%;
|
|
103
|
+
color: rgba(0, 0, 0, 0.4);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.hf-app-install-button {
|
|
107
|
+
font-weight: 500;
|
|
108
|
+
font-size: 20px;
|
|
109
|
+
font-style: Bold;
|
|
110
|
+
text-align: center;
|
|
111
|
+
border-radius: 8px;
|
|
112
|
+
display: flex;
|
|
113
|
+
align-items: center;
|
|
114
|
+
justify-content: center;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.wifi-status {
|
|
118
|
+
font-family: 'Asap', sans-serif;
|
|
119
|
+
font-weight: 500;
|
|
120
|
+
color: rgba(0, 0, 0, 0.9);
|
|
121
|
+
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.wifi-status-info {
|
|
125
|
+
font-family: 'Asap', sans-serif;
|
|
126
|
+
font-weight: 400;
|
|
127
|
+
color: rgba(0, 0, 0, 0.7);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
.notification-modal {
|
|
132
|
+
position: fixed;
|
|
133
|
+
bottom: 24px;
|
|
134
|
+
right: 24px;
|
|
135
|
+
z-index: 9999;
|
|
136
|
+
min-width: 300px;
|
|
137
|
+
max-width: 400px;
|
|
138
|
+
background: #fff;
|
|
139
|
+
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
|
|
140
|
+
border-radius: 8px;
|
|
141
|
+
display: none;
|
|
142
|
+
animation: fadeInUp 0.3s;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
@keyframes fadeInUp {
|
|
146
|
+
from {
|
|
147
|
+
opacity: 0;
|
|
148
|
+
transform: translateY(40px);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
to {
|
|
152
|
+
opacity: 1;
|
|
153
|
+
transform: translateY(0);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.notification-content {
|
|
158
|
+
padding: 20px 28px;
|
|
159
|
+
border-radius: 8px;
|
|
160
|
+
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);
|
|
161
|
+
display: flex;
|
|
162
|
+
align-items: center;
|
|
163
|
+
justify-content: space-between;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/* Notification variants */
|
|
167
|
+
.notification-content.info {
|
|
168
|
+
background: #fff;
|
|
169
|
+
border: 1px solid #e0e0e0;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.notification-content.error {
|
|
173
|
+
background: #ffeaea;
|
|
174
|
+
border: 1px solid #ff4d4f;
|
|
175
|
+
color: #b71c1c;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
.close-btn {
|
|
180
|
+
background: none;
|
|
181
|
+
border: none;
|
|
182
|
+
font-size: 1.5em;
|
|
183
|
+
cursor: pointer;
|
|
184
|
+
color: #888;
|
|
185
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
+
<title>{% block title %}Reachy Mini dashboard{% endblock %}</title>
|
|
8
|
+
<link rel="stylesheet" href="/static/css/app.css">
|
|
9
|
+
|
|
10
|
+
{% block extra_js %}{% endblock %}
|
|
11
|
+
<script src="/static/js/health_check.js"></script>
|
|
12
|
+
</head>
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
<body class="bg-gray-50 min-h-screen flex items-center justify-center">
|
|
16
|
+
<div class="container px-4 sm:px-8 md:px-8 lg:px-8 xl:px-8 mx-auto w-full md:w-2/3">
|
|
17
|
+
{% block content %}{% endblock %}
|
|
18
|
+
</div>
|
|
19
|
+
</body>
|
|
20
|
+
|
|
21
|
+
</html>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{% extends "base.html" %}
|
|
2
|
+
|
|
3
|
+
{% block content %}
|
|
4
|
+
|
|
5
|
+
<div class="grid gap-4">
|
|
6
|
+
{% include "sections/daemon.html" %}
|
|
7
|
+
{% include "sections/apps.html" %}
|
|
8
|
+
{% include "sections/appstore.html" %}
|
|
9
|
+
{% include "sections/notification.html" %}
|
|
10
|
+
</div>
|
|
11
|
+
{% endblock %}
|
|
12
|
+
|
|
13
|
+
{% block extra_js %}
|
|
14
|
+
<script src="/static/js/daemon.js"></script>
|
|
15
|
+
<script src="/static/js/apps.js"></script>
|
|
16
|
+
<script src="/static/js/appstore.js"></script>
|
|
17
|
+
<script src="/static/js/move_player.js"></script>
|
|
18
|
+
<script src="/static/js/notification.js"></script>
|
|
19
|
+
<script src="/static/js/volume_control.js"></script>
|
|
20
|
+
{% endblock %}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<section class="grid app-section">
|
|
2
|
+
|
|
3
|
+
<div id="install-modal" tabindex="-1" aria-hidden="true"
|
|
4
|
+
class="hidden fixed inset-0 z-50 flex items-center justify-center w-full h-full">
|
|
5
|
+
<div class="relative p-4 w-full max-w-2xl max-h-full">
|
|
6
|
+
<div class="relative bg-white rounded-lg shadow-sm dark:bg-gray-700">
|
|
7
|
+
<div
|
|
8
|
+
class="flex items-center justify-between p-4 md:p-5 border-b rounded-t dark:border-gray-600 border-gray-200">
|
|
9
|
+
<h3 id="modal-title" class="text-xl font-semibold text-gray-900 dark:text-white"></h3>
|
|
10
|
+
</div>
|
|
11
|
+
<div class="p-4 md:p-5 space-y-4">
|
|
12
|
+
<div id="install-logs" class="overflow-y-auto max-h-48 text-gray-500 dark:text-gray-400">
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
<div
|
|
16
|
+
class="flex items-center justify-center p-4 md:p-5 border-t border-gray-200 rounded-b dark:border-gray-600">
|
|
17
|
+
<button id="modal-close-button" data-modal-hide="default-modal" type="button"
|
|
18
|
+
class="hidden"></button>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
<div class="flex items-center justify-between">
|
|
26
|
+
<div class="app-section-title">Install from 🤗 Hugging Face</div>
|
|
27
|
+
<label class="flex items-center gap-2 text-sm text-gray-700 dark:text-gray-200">
|
|
28
|
+
<input id="hf-show-community" type="checkbox" class="w-4 h-4">
|
|
29
|
+
<span>Show community apps</span>
|
|
30
|
+
</label>
|
|
31
|
+
</div>
|
|
32
|
+
<div class="">
|
|
33
|
+
<ul id="hf-available-apps" class="overflow-y-auto max-h-96">Loading apps from 🤗...</ul>
|
|
34
|
+
</div>
|
|
35
|
+
</section>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<section class="flex flex-col md:flex-row gap-4">
|
|
2
|
+
<!-- Daemon Status Animation -->
|
|
3
|
+
<div class="flex-1 min-w-[50%] justify-center items-center flex">
|
|
4
|
+
<object id="daemon-status-anim" data="" type="image/svg+xml" class="w-full h-auto"></object>
|
|
5
|
+
</div>
|
|
6
|
+
<div class="flex-1 py-2">
|
|
7
|
+
<div class="flex justify-between items-center">
|
|
8
|
+
<div class="daemon-status-title">Reachy Mini</div>
|
|
9
|
+
<!-- Toggle Daemon slider -->
|
|
10
|
+
<span>
|
|
11
|
+
<label>
|
|
12
|
+
<input id="daemon-toggle" type="checkbox" value="" class="sr-only peer">
|
|
13
|
+
<div id="daemon-toggle-slider"
|
|
14
|
+
class="relative w-20 h-8 bg-gray-200 peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-gray-100 dark:peer-focus:ring-gray-100 rounded-full peer dark:bg-red-400 peer-checked:after:translate-x-[46px] rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-0.5 after:start-0.5 after:bg-white after:border-gray-300 after:border after:rounded-full after:h-7 after:w-7 after:transition-all dark:border-gray-600 peer-checked:bg-green-400 dark:peer-checked:bg-green-400 hidden">
|
|
15
|
+
<span id="daemon-toggle-on"
|
|
16
|
+
class="absolute top-1/2 start-1.5 -translate-y-1/2 justify-center items-center size-7 text-white peer-checked:text-white transition-colors duration-200 hidden">ON</span>
|
|
17
|
+
<span id="daemon-toggle-off"
|
|
18
|
+
class="absolute top-1/2 end-2.5 -translate-y-1/2 flex justify-center items-center size-7 text-white">
|
|
19
|
+
OFF
|
|
20
|
+
</span>
|
|
21
|
+
</div>
|
|
22
|
+
</label>
|
|
23
|
+
</span>
|
|
24
|
+
</div>
|
|
25
|
+
<!-- Daemon status: -->
|
|
26
|
+
<div id="backend-status" class="">
|
|
27
|
+
<div class="flex items-center pt-1 w-full">
|
|
28
|
+
<span id="backend-status-icon" class="inline-block w-4 h-4 rounded-full align-middle mr-2"></span>
|
|
29
|
+
<span id="backend-status-text" class="daemon-status-collapse"></span>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
|
|
33
|
+
<div class="mt-4">
|
|
34
|
+
{% include 'sections/move_player.html' %}
|
|
35
|
+
</div>
|
|
36
|
+
{% if args.wireless_version %}
|
|
37
|
+
<div class="w-full flex pt-4 gap-4 justify-center">
|
|
38
|
+
<a id="daemon-settings-btn"
|
|
39
|
+
class="flex items-center gap-2 px-4 py-2 bg-gray-100 hover:bg-gray-300 rounded-lg shadow border border-gray-300"
|
|
40
|
+
href="/settings">
|
|
41
|
+
Settings
|
|
42
|
+
</a>
|
|
43
|
+
</div>
|
|
44
|
+
{% endif %}
|
|
45
|
+
</section>
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
<div class="grid app-section py-2">
|
|
2
|
+
<div class="flex flex-row gap-4">
|
|
3
|
+
<div class="text-xl">Move player</div>
|
|
4
|
+
<div class="flex flex-row gap-2 py-1">
|
|
5
|
+
<button id="move-play-btn"
|
|
6
|
+
class="px-2 py-1 rounded bg-blue-500 text-white font-semibold shadow hover:bg-blue-600 transition-colors duration-150 flex items-center justify-center disabled:bg-gray-300 disabled:text-gray-500">
|
|
7
|
+
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
|
|
8
|
+
<path d="M6.5 5.5v9l7-4.5-7-4.5z" />
|
|
9
|
+
</svg>
|
|
10
|
+
</button>
|
|
11
|
+
<button id="move-stop-btn" class="px-2 py-1 rounded bg-red-500 text-white font-semibold shadow hover:bg-red-600 transition-colors duration-150 flex items-center justify-center
|
|
12
|
+
disabled:bg-gray-300 disabled:text-gray-500">
|
|
13
|
+
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
|
|
14
|
+
<rect x="5" y="5" width="10" height="10" rx="2" />
|
|
15
|
+
</svg>
|
|
16
|
+
</button>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
<div class="flex flex-row gap-4 justify-center">
|
|
20
|
+
<select id="move-dataset-toggle" class="px-2 py-1 rounded border border-gray-300 bg-white">
|
|
21
|
+
<option value="pollen-robotics/reachy-mini-dances-library">Dances</option>
|
|
22
|
+
<option value="pollen-robotics/reachy-mini-emotions-library">Emotions</option>
|
|
23
|
+
</select>
|
|
24
|
+
<select id="move-select-toggle" class="px-2 py-1 rounded border border-gray-300 bg-white">
|
|
25
|
+
</select>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
|
|
29
|
+
<div class="grid app-section py-2">
|
|
30
|
+
<div class="flex flex-row gap-4 items-center">
|
|
31
|
+
<div class="text-xl">Volume control</div>
|
|
32
|
+
<div class="text-sm text-gray-600" id="volume-device-info">Loading...</div>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<div class="flex flex-col gap-2 px-4">
|
|
36
|
+
<div class="flex flex-row gap-4 items-center">
|
|
37
|
+
|
|
38
|
+
<!-- volume down icon -->
|
|
39
|
+
<svg xmlns="http://www.w3.org/2000/svg"
|
|
40
|
+
class="h-5 w-5 text-gray-600"
|
|
41
|
+
viewBox="0 0 20 20"
|
|
42
|
+
fill="currentColor">
|
|
43
|
+
<path d="M9.383 3.076A1 1 0 0110 4v12a1 1 0 01-1.707.707L4.586 13H2a1 1 0 01-1-1V8a1 1 0 011-1h2.586l3.707-3.707a1 1 0 011.09-.217z"/>
|
|
44
|
+
</svg>
|
|
45
|
+
|
|
46
|
+
<!-- slider -->
|
|
47
|
+
<input
|
|
48
|
+
type="range"
|
|
49
|
+
id="volume-slider"
|
|
50
|
+
min="0"
|
|
51
|
+
max="100"
|
|
52
|
+
step="1"
|
|
53
|
+
value="50"
|
|
54
|
+
aria-label="System volume"
|
|
55
|
+
class="flex-grow h-2 bg-gray-300 rounded-lg appearance-none cursor-pointer"
|
|
56
|
+
/>
|
|
57
|
+
|
|
58
|
+
<!-- volume up icon -->
|
|
59
|
+
<svg xmlns="http://www.w3.org/2000/svg"
|
|
60
|
+
class="h-5 w-5 text-gray-600"
|
|
61
|
+
viewBox="0 0 20 20"
|
|
62
|
+
fill="currentColor">
|
|
63
|
+
<path d="M10 3.5a1 1 0 00-1.707-.707L4.586 6.5H2a1 1 0 00-1 1v5a1 1 0 001 1h2.586l3.707 3.707A1 1 0 0010 16.5v-13zM15.536 5.464a1 1 0 010 1.415 5 5 0 010 7.071 1 1 0 11-1.415-1.414 3 3 0 000-4.243 1 1 0 011.415-1.415z"/>
|
|
64
|
+
</svg>
|
|
65
|
+
|
|
66
|
+
<!-- numeric label -->
|
|
67
|
+
<span id="volume-value" class="text-lg font-semibold w-12 text-center">50</span>
|
|
68
|
+
</div>
|
|
69
|
+
|
|
70
|
+
<!-- Advanced settings dropdown -->
|
|
71
|
+
<details class="mt-2">
|
|
72
|
+
<summary class="cursor-pointer text-base font-medium text-gray-700 hover:text-gray-900 select-none">
|
|
73
|
+
Advanced settings
|
|
74
|
+
</summary>
|
|
75
|
+
<div class="mt-3 pl-4 pr-4 pb-2 border-l-2 border-gray-200">
|
|
76
|
+
<!-- Microphone control -->
|
|
77
|
+
<div class="flex flex-col gap-2">
|
|
78
|
+
<div class="flex flex-row gap-2 items-center">
|
|
79
|
+
<div class="text-base font-medium">Microphone</div>
|
|
80
|
+
<div class="text-sm text-gray-600" id="microphone-device-info">Loading...</div>
|
|
81
|
+
</div>
|
|
82
|
+
<div class="flex flex-row gap-4 items-center">
|
|
83
|
+
<!-- microphone icon (muted/off) -->
|
|
84
|
+
<svg xmlns="http://www.w3.org/2000/svg"
|
|
85
|
+
class="h-5 w-5 text-gray-600"
|
|
86
|
+
viewBox="0 0 20 20"
|
|
87
|
+
fill="currentColor">
|
|
88
|
+
<path d="M2.293 2.293a1 1 0 011.414 0l14 14a1 1 0 01-1.414 1.414l-14-14a1 1 0 010-1.414z"/>
|
|
89
|
+
<path d="M13 8V4a3 3 0 10-6 0v1.293l6 6V8z"/>
|
|
90
|
+
<path d="M8.707 13.707L7 12V8a3 3 0 013-3h.293l1.414 1.414A3 3 0 0113 8v4l-4.293-4.293z"/>
|
|
91
|
+
<path d="M11 14.93V17h-2v-2.07A7.001 7.001 0 013 8a1 1 0 112 0 5 5 0 005 5 5.027 5.027 0 001-.101l1.414 1.414A6.956 6.956 0 0111 14.93zM15 8a1 1 0 10-2 0 3.001 3.001 0 01-.293 1.293l1.414 1.414A4.978 4.978 0 0015 8z"/>
|
|
92
|
+
</svg>
|
|
93
|
+
|
|
94
|
+
<!-- slider -->
|
|
95
|
+
<input
|
|
96
|
+
type="range"
|
|
97
|
+
id="microphone-slider"
|
|
98
|
+
min="0"
|
|
99
|
+
max="100"
|
|
100
|
+
step="1"
|
|
101
|
+
value="50"
|
|
102
|
+
aria-label="Microphone input volume"
|
|
103
|
+
class="flex-grow h-2 bg-gray-300 rounded-lg appearance-none cursor-pointer"
|
|
104
|
+
/>
|
|
105
|
+
|
|
106
|
+
<!-- microphone icon (active/high) -->
|
|
107
|
+
<svg xmlns="http://www.w3.org/2000/svg"
|
|
108
|
+
class="h-5 w-5 text-gray-600"
|
|
109
|
+
viewBox="0 0 20 20"
|
|
110
|
+
fill="currentColor">
|
|
111
|
+
<path fill-rule="evenodd" d="M7 4a3 3 0 016 0v4a3 3 0 11-6 0V4zm4 10.93A7.001 7.001 0 0017 8a1 1 0 10-2 0A5 5 0 015 8a1 1 0 00-2 0 7.001 7.001 0 006 6.93V17H6a1 1 0 100 2h8a1 1 0 100-2h-3v-2.07z" clip-rule="evenodd"/>
|
|
112
|
+
</svg>
|
|
113
|
+
|
|
114
|
+
<!-- numeric label -->
|
|
115
|
+
<span id="microphone-value" class="text-lg font-semibold w-12 text-center">50</span>
|
|
116
|
+
</div>
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
119
|
+
</details>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<!-- Notification Modal (Bottom Right) -->
|
|
2
|
+
<div id="notification-modal" class="notification-modal">
|
|
3
|
+
<div class="notification-content" id="notification-content">
|
|
4
|
+
<!-- Notification message will appear here -->
|
|
5
|
+
<span id="notification-message"></span>
|
|
6
|
+
<button class="close-btn" onclick="closeNotification()">×</button>
|
|
7
|
+
</div>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<script>
|
|
11
|
+
function showNotification(message) {
|
|
12
|
+
document.getElementById('notification-message').textContent = message;
|
|
13
|
+
document.getElementById('notification-modal').style.display = 'block';
|
|
14
|
+
setTimeout(closeNotification, 5000); // Auto-close after 5s
|
|
15
|
+
}
|
|
16
|
+
function closeNotification() {
|
|
17
|
+
document.getElementById('notification-modal').style.display = 'none';
|
|
18
|
+
}
|
|
19
|
+
</script>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<div class="app-section">
|
|
2
|
+
<div class="app-section-title">Reachy Mini Update</div>
|
|
3
|
+
|
|
4
|
+
<div class="mt-2">
|
|
5
|
+
<button id="check-again-btn" class="px-4 py-2 bg-gray-200 hover:bg-gray-300 rounded-lg shadow"
|
|
6
|
+
onclick="updateManager.checkForUpdate()">Check for Updates</button>
|
|
7
|
+
<label style="margin-left:1em;">
|
|
8
|
+
<input type="checkbox" id="pre-release-checkbox"
|
|
9
|
+
onchange="updateManager.preRelease = this.checked; updateManager.checkForUpdate();">
|
|
10
|
+
pre-release
|
|
11
|
+
</label>
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
<div class="flex flex-col gap-2 pt-4">
|
|
15
|
+
<div id="update-status"></div>
|
|
16
|
+
<div class="flex flex-row gap-4">
|
|
17
|
+
<div class="flex flex-col gap-2 w-full px-4">
|
|
18
|
+
<div><span id="current-version" class="font-mono text-blue-700"></span></div>
|
|
19
|
+
<div><span id="available-version" class="font-mono text-green-700"></span></div>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<div class="mt-4">
|
|
24
|
+
<button id="start-update-btn"
|
|
25
|
+
class="px-4 py-2 bg-gray-200 hover:bg-gray-300 rounded-lg shadow hidden bg-green-400 hover:bg-green-500 text-white"
|
|
26
|
+
onclick="updateManager.startUpdate()">Start Update</button>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div id="update-modal" tabindex="-1" aria-hidden="true"
|
|
33
|
+
class="hidden fixed inset-0 z-50 flex items-center justify-center w-full h-full">
|
|
34
|
+
<div class="relative p-4 w-full max-w-2xl max-h-full">
|
|
35
|
+
<div class="relative bg-white rounded-lg shadow-sm dark:bg-gray-700">
|
|
36
|
+
<div
|
|
37
|
+
class="flex items-center justify-between p-4 md:p-5 border-b rounded-t dark:border-gray-600 border-gray-200">
|
|
38
|
+
<h3 id="update-modal-title" class="text-xl font-semibold text-gray-900 dark:text-white"></h3>
|
|
39
|
+
</div>
|
|
40
|
+
<div class="p-4 md:p-5 space-y-4">
|
|
41
|
+
<div id="update-logs" class="overflow-y-auto max-h-48 text-gray-500 dark:text-gray-400">
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
<div
|
|
45
|
+
class="flex items-center justify-center p-4 md:p-5 border-t border-gray-200 rounded-b dark:border-gray-600">
|
|
46
|
+
<button id="update-modal-close-button" data-modal-hide="default-modal" type="button"
|
|
47
|
+
class="px-4 py-2 bg-blue-600 dark:bg-blue-600 hover:bg-blue-700 text-white rounded-lg shadow hidden">
|
|
48
|
+
Close
|
|
49
|
+
</button>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<div class="app-section">
|
|
2
|
+
<div class="flex flex-row items-center gap-2">
|
|
3
|
+
<div class="app-section-title">Setup your WiFi</div>
|
|
4
|
+
<button id="refresh-wifi" title="Refresh" class="p-1 rounded hover:bg-gray-200 focus:outline-none"
|
|
5
|
+
onclick="cleanAndRefresh()">
|
|
6
|
+
🔄
|
|
7
|
+
</button>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<div class="flex flex-col p-4 gap-4">
|
|
11
|
+
<div id="wifi-status" class="wifi-status-info w-full">Checking WiFi configuration...</div>
|
|
12
|
+
<div id="known-networks" class="wifi-status-info hidden w-full">
|
|
13
|
+
Known Networks:
|
|
14
|
+
<ul id="known-networks-list" class="list-disc list-inside px-4"></ul>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
<div id="add-wifi" class="hidden">
|
|
18
|
+
<div class="py-4 flex flex-col max-w-md">
|
|
19
|
+
<div class="app-section-title mb-2">Add new WiFi</div>
|
|
20
|
+
|
|
21
|
+
<div class="flex flex-row p-4">
|
|
22
|
+
<form id="wifi-form" class="max-w-md" onsubmit="return false;">
|
|
23
|
+
<div class="mb-4">
|
|
24
|
+
<label for="ssid" class="block mb-2 text-sm">SSID</label>
|
|
25
|
+
<select id="ssid" name="ssid"
|
|
26
|
+
class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5"
|
|
27
|
+
required>
|
|
28
|
+
<option value="" disabled selected>Select your WiFi network</option>
|
|
29
|
+
</select>
|
|
30
|
+
</div>
|
|
31
|
+
<div class="mb-4">
|
|
32
|
+
<label for="password" class="block mb-2 text-sm">Password</label>
|
|
33
|
+
<input type="password" id="password" name="password"
|
|
34
|
+
class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5"
|
|
35
|
+
required>
|
|
36
|
+
</div>
|
|
37
|
+
<div class="">
|
|
38
|
+
<input type="button" onclick="connectToWifi(event)" target="_blank" formtarget="_blank"
|
|
39
|
+
value="Connect"
|
|
40
|
+
class="text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm w-full sm:w-auto px-5 py-2.5 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800">
|
|
41
|
+
</div>
|
|
42
|
+
</form>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{% extends "base.html" %}
|
|
2
|
+
|
|
3
|
+
{% block content %}
|
|
4
|
+
|
|
5
|
+
<div class="grid gap-4">
|
|
6
|
+
{% include "sections/update.html" %}
|
|
7
|
+
{% include "sections/wifi.html" %}
|
|
8
|
+
</div>
|
|
9
|
+
{% endblock %}
|
|
10
|
+
|
|
11
|
+
{% block extra_js %}
|
|
12
|
+
<script src="/static/js/update.js"></script>
|
|
13
|
+
<script src="/static/js/wifi.js"></script>
|
|
14
|
+
{% endblock %}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"""FastAPI common request dependencies."""
|
|
2
|
+
|
|
3
|
+
from fastapi import HTTPException, Request, WebSocket
|
|
4
|
+
|
|
5
|
+
from ...apps.manager import AppManager
|
|
6
|
+
from ..backend.abstract import Backend
|
|
7
|
+
from ..daemon import Daemon
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def get_daemon(request: Request) -> Daemon:
|
|
11
|
+
"""Get the daemon as request dependency."""
|
|
12
|
+
assert isinstance(request.app.state.daemon, Daemon)
|
|
13
|
+
return request.app.state.daemon
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def get_backend(request: Request) -> Backend:
|
|
17
|
+
"""Get the backend as request dependency."""
|
|
18
|
+
backend = request.app.state.daemon.backend
|
|
19
|
+
|
|
20
|
+
if backend is None or not backend.ready.is_set():
|
|
21
|
+
raise HTTPException(status_code=503, detail="Backend not running")
|
|
22
|
+
|
|
23
|
+
assert isinstance(backend, Backend)
|
|
24
|
+
return backend
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def get_app_manager(request: Request) -> "AppManager":
|
|
28
|
+
"""Get the app manager as request dependency."""
|
|
29
|
+
assert isinstance(request.app.state.app_manager, AppManager)
|
|
30
|
+
return request.app.state.app_manager
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def ws_get_backend(websocket: WebSocket) -> Backend:
|
|
34
|
+
"""Get the backend as websocket dependency."""
|
|
35
|
+
backend = websocket.app.state.daemon.backend
|
|
36
|
+
|
|
37
|
+
if backend is None or not backend.ready.is_set():
|
|
38
|
+
raise HTTPException(status_code=503, detail="Backend not running")
|
|
39
|
+
|
|
40
|
+
assert isinstance(backend, Backend)
|
|
41
|
+
return backend
|