github tuanchris/dune-weaver v4.0.0
v4.0.0 - Complete Frontend Rewrite

5 hours ago

Changelog

v4.0.0

The biggest Dune Weaver release yet — a ground-up UI rewrite, a full built-in LED engine, smart-home integration, and dozens of quality-of-life improvements across the board. 🚀 (Click the image for a walkthrough video)

image

1. 📱 Brand New Modern Interface — Installable as an App

The entire web interface has been rebuilt from scratch with React 19, replacing the legacy Jinja2 templates with a fast, responsive, app-like experience.

  • Install as a PWA — add Dune Weaver to your iOS or Android home screen for a native app feel, complete with your custom icon and app name
  • Works offline — pattern previews, static assets, and recent API responses are cached locally so the UI stays snappy even on spotty Wi-Fi
  • Dark and light mode — follows your system preference or set it manually; every page is designed for both themes
  • Responsive layout — works beautifully on phones, tablets, and desktops with touch-optimized controls throughout
  • Smooth animations — page transitions, expandable panels, and drag interactions are all fluid and polished

2. 🎛️ Multi-Table Control from One Interface

Manage multiple sand tables from a single Dune Weaver app.

  • Auto-discovery — tables on your local network are found automatically
  • Instant switching — tap the table selector in the header to jump between tables
  • Per-table state — each table remembers its own connection, playlists, and settings
  • Per-table branding — assign a custom name and logo to each table

3. 🔍 Smarter Pattern Browsing

Finding and running patterns is faster and more intuitive.

  • Fuzzy search — type "clear from out" and it finds clear_from_out
  • Instant previews — pattern thumbnails load from a local cache; no waiting for server renders
  • Upload patterns — add custom .thr files directly from the Browse page
  • Play time badges — see how long each pattern takes at a glance based on execution history

4. ▶️ Enhanced Now Playing Experience

The Now Playing bar is a full-featured control center for whatever's running.

  • Live canvas preview — the expanded view draws the pattern in real time as the ball moves, with smooth interpolation and a 16-coordinate offset to match physical latency
  • Playback controls — play, pause, stop, and skip with speed adjustment (100–6000 mm/s)
  • Progress tracking — elapsed time, remaining time, and percentage; ETA pulls from execution history when available for better accuracy
  • Queue management — drag-and-drop to reorder upcoming patterns; "Play Next" and "Add to Queue" from any pattern; move items to top or bottom
  • Waiting state — between patterns, see the countdown timer and a preview of what's coming next
  • Mobile-first — swipe up to expand, swipe down to collapse; safe area support for notched devices

5. 🖥️ Touch App Improvements

The QML-based DW Touch interface for dedicated touchscreens got significant upgrades.

  • Fixed 100% CPU usage — resolved a rendering loop that pegged the processor
  • Full playlist management — browse, select, and switch playlists directly from the touch screen
  • Restart and shutdown buttons — control the Raspberry Pi without SSH
  • Persistent settings — shuffle, repeat mode, and other playlist settings survive restarts
  • Better dark mode — improved contrast and visibility across all touch screens
  • Proper logging — replaced print statements with structured logging for easier debugging

6. 🛡️ Better Error Recovery

The table handles problems more gracefully.

  • GRBL auto-recovery — automatically retries on mid-pattern GRBL errors instead of freezing
  • Homing failure popup — a clear overlay explains what went wrong and offers recovery options
  • Homing overlay with live logs — a blocking overlay during homing streams real-time log output so you can see exactly what's happening; copy logs to clipboard for troubleshooting
  • Connection overlay — when the backend is unreachable, a full-screen overlay shows reconnection attempts with a counter and live status messages

7. 🔧 Serial Debug Terminal

A built-in terminal for sending raw commands to your motor controller, available on the Table Control page.

  • Independent connection — opens a separate serial connection so it doesn't interfere with normal operation
  • Port selector — lists available serial ports with connect/disconnect controls
  • Color-coded history — sent commands in cyan, responses in green, errors in red, all with timestamps
  • Soft reset — one-click button to send a Ctrl+X reset to the FluidNC controller
  • Safety warning — alerts you not to use the terminal while a pattern is running

8. ⚙️ Under the Hood

For contributors and developers — the project infrastructure has been modernized.

  • Test suite — backend unit tests, frontend component and integration tests (Vitest + Testing Library), and Playwright end-to-end tests covering pattern flow, playlist management, and table control
  • Docker two-container architecture — separate nginx (frontend) and FastAPI (backend) containers for cleaner deployment
  • Pre-commit hooks — Ruff linting and frontend test suite run automatically on every commit
  • CI/CD pipeline — GitHub Actions run tests, linting, E2E tests, and publish Docker images on push
  • Vite build system — fast development with hot module replacement, API proxying, and optimized production builds
  • Modern stack — React 19, TypeScript, Tailwind CSS v4, shadcn/ui, Zustand, TanStack Query, React Router v7, dnd-kit, and Motion

Don't miss a new dune-weaver release

NewReleases is sending notifications on new releases.