Dependabot #982 opened the door: an esbuild advisory that can only be closed by going forward, since the fix is upstream of us in vite-plugin-svelte and vitest. It could not merge on its own, though -- Vitest 4 no longer augments Vite's defineConfig, so the `test` block in vite.config.ts became a type error and the style job went red on a file Dependabot is not allowed to touch. The config now takes defineConfig from vitest/config, which is where that overload lives. With the chain forced open anyway, everything else that had drifted goes with it: SvelteKit, Svelte, paraglide, Playwright, prettier-plugin-svelte 4, globals 17 and ESLint 10. TypeScript stays on 5.9 -- 7.0.2 is out, but typescript-eslint pins <6.1.0 and svelte-check ^5 || ^6, so it is peer-blocked on both sides rather than merely untested. Vite 8 replaces Rollup and esbuild with Rolldown, so the toolchain is now one Rust binary plus lightningcss. Measured against a clean checkout of the old tree: the production build drops from 7.7s to 4.6s, shipped JavaScript from 383 KB gzipped across 42 chunks to 360 KB across 36. Dev cold start is unchanged at ~2s, as expected -- dev serves unbundled ESM either way. The armv7 image is not exposed to Rolldown's native binaries: build-client runs on amd64 and the arch jobs only download its artifact. ESLint 10 turns on no-useless-assignment, which caught three initialisers that every branch overwrites; they become bare declarations. The allowScripts block pinning esbuild@0.21.5 goes too, as esbuild is no longer in the tree at all and nothing in the repo reads that field. The lockfile is regenerated rather than patched: the old one pinned vite-plugin-svelte 4 firmly enough that npm could not resolve a path to 7 without it. Verified on Node 24: lefthook ci green, 50 unit tests, a11y audit, and the full tests_frontend_v2 Playwright suite (21/21) against a real backend serving the new build.
Keep track of your inventory of 3D-printer filament spools.
Spoolman is a self-hosted web service designed to help you efficiently manage your 3D printer filament spools and monitor their usage. It acts as a centralized database that seamlessly integrates with popular 3D printing software like OctoPrint and Klipper/Moonraker. When connected, it automatically updates spool weights as printing progresses, giving you real-time insights into filament usage.
Features
- Filament Management: Keep comprehensive records of filament types, manufacturers, and individual spools.
- API Integration: The REST API allows easy integration with other software, facilitating automated workflows and data exchange.
- Real-Time Updates: Stay informed with live spool updates through Websockets, providing immediate feedback during printing operations.
- Central Filament Database: A community-supported database of manufacturers and filaments simplify adding new spools to your inventory. Contribute by heading to SpoolmanDB.
- Web-Based Client: Spoolman includes a built-in web client that lets you manage data effortlessly:
- View, create, edit, and delete filament data.
- Search, group and filter your inventory by manufacturer, material, location and more.
- Add custom fields to tailor information to your specific needs.
- Design and print labels with QR codes for easy spool identification and tracking.
- Contribute to its translation into 18 languages via Weblate.
- Database Support: SQLite, PostgreSQL, MySQL, and CockroachDB.
- Multi-Printer Management: Handles spool updates from several printers simultaneously.
- Advanced Monitoring: Integrate with Prometheus for detailed historical analysis of filament usage, helping you track and optimize your printing processes. See the Wiki for instructions on how to set it up.
Spoolman integrates with:
- Moonraker and most front-ends (Fluidd, KlipperScreen, Mainsail, ...)
- OctoPrint
- OctoEverywhere
- Home Assistant
- MCP Server - Manage your filament inventory through AI assistants like Claude using the Model Context Protocol
![]() |
![]() |
| Dashboard — spools as cards, grouped by location or any other field. Drag one to move it. | Label designer — QR labels built from any spool, filament or vendor field. |
Installation
Please see the Installation page on the Wiki for details how to install Spoolman.
If the new client misbehaves on your setup, set SPOOLMAN_LEGACY_CLIENT=TRUE to go back to
the previous one. Both ship in every release and talk to the same API, so your data is
untouched either way — but please report the problem
so it can be fixed.


