Summary
This is a major release focused on making Dune Weaver truly standalone — no SSH, no laptop, no technical knowledge required after initial setup. Everything is managed from the web UI or your phone.
To update SSH to your Pi and run:
cd dune-weaver
git pull
sudo bash setup-pi.sh
Zero-SSH Experience
After this update, you never need to SSH into your Pi again (hopefully):
- In-app software updates: Tap "Update" in Settings — Dune Weaver pulls the latest code, installs dependencies, and restarts itself. A waiting dialog with rotating messages keeps you company while it works (usually 1-2 minutes). The page reloads automatically when done.
- WiFi management from the UI: Change networks, set up hotspot passwords, forget saved networks — all from a dedicated WiFi page.
- FluidNC config editor: View and edit key motor settings (steps/mm, acceleration, homing) from the Setup page — no need to connect the DLC32 board to a computer for basic config changes.
Plug-and-Play WiFi
- Autohotspot: No router? No problem. On boot the Pi scans for known networks; if none are found it creates a "Dune Weaver" hotspot with captive portal. Connect from your phone and configure WiFi right in the browser.
- Hotspot only mode: Take your DW out in the wild, plug in a power bank, and a Wifi access point will be created. There's an option to set up a password for the hotspot.
- Auto-recovery: If WiFi drops, the Pi falls back to hotspot mode within 60 seconds. When a known network reappears, it reconnects automatically.
- CLI:
dw wifi {status, scan, connect, hotspot, setup}for advanced users who prefer the terminal.
Setup Page & Calibration Wizard
- Calibration wizard: A step-by-step wizard walks you through testing and fixing axis directions — home, test Y, test X, auto-fix inverted axes, and verify.
- FluidNC config: Edit axis settings (steps/mm, max rate, acceleration, homing parameters) directly from the web UI.
- Gear ratio override: Set a custom gear ratio without reflashing firmware.
- Firmware version detection: Warns you if your FluidNC/GRBL firmware is outdated.
- Home-on-connect toggle: Choose whether the table homes automatically on startup or waits for manual trigger.
Security Modes
Protect your table when others have network access:
- Full Lockdown: Password-protect the entire UI. Nobody touches anything without the code.
- Play Only: Leave playback open but lock Settings, uploads, playlist editing, and Table Control behind a password. Perfect for shared spaces.
Home Assistant Integration
- Screen power & brightness: Touch screen on/off switch and brightness slider auto-discovered in HA via MQTT. Control the LCD from automations (e.g., turn screen off at night, screen auto turns on when someone approaches).
- LED control mode: Manual/HA vs Automated toggle — lets HA drive LED effects without Dune Weaver overriding them.
- Skip button: Skip-to-next-pattern exposed as an HA button entity.
UI Improvements
- Browse page: Pattern cards show play count and estimated run time. Allows for sort by number of times played.
- Clear pattern options: Renamed from "Pre-Execution Action" with clear descriptions for each mode.
- LCD brightness slider: Auto-detects backlight on the Touch screen, persists across reboots.
Bug Fixes
- Still Sands LED: Fixed LEDs not turning back on when quiet period ends; fixed pause loops and flicker.
- Pattern theta normalization: Sisyphus patterns with large theta offsets no longer spin unnecessarily at start.
dw startURL: Now opens port 80 instead of 8080.
Technical / Infrastructure
- Native deployment: Migrated from Docker to systemd + nginx. Removed Dockerfile, docker-compose, and Docker CI. Added
dune-weaver.service,nginx/dune-weaver.conf. - Pre-built frontend:
static/dist/committed so Pi Zero 2W needs no Node.js. - Settings / state split:
state.jsonsplit intosettings.json(user config) +state.json(runtime). Auto-migration from old format. - Screen controller:
modules/screen/screen_controller.py— sysfs backlight +fb0/blankcontrol. No-ops gracefully on dev machines. - Self-hosted fonts: Bundled for full offline / hotspot rendering.
- UART setup: Interactive configuration step in
setup-pi.sh.