SIGN IN SIGN UP

Sync 60 public-facing changes

- fix(export): fence the devcontainer's AI anecdote instead of shipping it
- fix(jobs): record the safety gates a history re-print bypasses
- fix(queue): validate queued AMS mappings the way dispatched ones are
- fix(jobs): re-print a history job with the options it was started with
- feat(library): import models from a URL, MakerWorld through the connected Bambu account
- feat(queue): have Check report a low slot instead of staying silent about it
- refactor(editor): make the preview's floating control insets testable
- fix(editor): keep the G-code layer column clear of the dialog close button
- fix(editor): fall back at once when a mesh worker dies before reporting ready
- fix(web): stop a failed WS attach freezing a tab's cache invalidation
- fix(printers): stop the API refusing prints the dialog approved
- fix(queue): stop the low-filament override being granted by omission
- fix(printers): stop an unreadable AMS bitmap emptying every loaded slot
- docs(printers): record what the AMS tray `state` field means, and why we ignore it
- test(printers): replay a real AMS spool swap, and correct what it disproves
- docs(web): correct claims the cache work stated without support
- fix(printers): read each AMS family's own exist-bit band, and guard on AMS data
- fix(printers): stop an empty external spool advertising the spool that left it
- fix(web): refresh the caches a long-lived surface leaves frozen
- fix(maintenance): refresh due dates as prints finish, not only on a write
- fix(filament): stop the spool sync losing or inventing slot associations
- fix(printers): clear an AMS slot the printer reports as empty
- fix(filament): keep loaded-spool data live outside the Filament page
- chore: ignore bridge runtime state written under apps/data
- fix(web): load small in-dialog thumbnails eagerly
- fix(model-studio): stop the preview sliders and zoom fighting the viewport
- fix(model-studio): make the mesh-parse pool prove it is running
- fix(api): send HSTS only in production
- fix(web): anchor toasts to the top of the screen on phones
- feat(printing): warn before a print runs its mapped slots dry
- chore(devcontainer): mount the shared Claude rules read-write
- docs(slicer): describe the public editor, and cover its untested seams
- fix(editor): send a null slicer target rather than an empty string
- fix(web): show toasts on the public tool shell
- fix(slicing): report which preset a settings baseline was measured against
- feat(editor): import STL, STEP, and 3MF in the public editor, off the main thread
- refactor(slicer): share the 3MF geometry extraction and the STEP mesh fold
- Fix zombie process issue
- fix(api): record which safety gates a print dispatch bypassed
- fix: correct stale contract docs and drop the unreachable calibration status
- feat(slicing): edit printer presets, on a settings dialog shell all three kinds share
- feat(printers): support the Bambu Filament Track Switch end to end
- fix(bambu-cloud-sync): log the presets a sync pass leaves on hold
- feat(slicing): sync slicing presets with a Bambu Lab account, both ways
- refactor(web): extract the flushing-volumes dialog's decisions so they are testable
- refactor(devcontainer): clean up commented extensions in vscode settings
- feat(web): combine like job toasts into one expandable grouped toast
- refactor(web): extract useDirectorySortState for persisted directory sorts
- fix(web): pin the app to dark so a stored light mode cannot leak in
- fix(web): make indeterminate progress bars actually animate
- feat(platform): sort the self-hosted licenses list
- chore(devcontainer): persist agent host state, and scrub it by token on export
- feat(editor): edit a project's flushing volumes
- feat(slicer): serve Studio's measured flush tables and its own computed matrix
- feat(slicing): port BambuStudio's flush-volume calculation and project reader
- feat(bridges): let operators clear a bridge's recorded crash history
- fix(web): stop the section count badge nesting a div inside a paragraph
- feat(plugins): track printer maintenance against Bambu's own schedules (#62)
- style(web): loosen table density and give row ends breathing room
- feat(cloud): track which plugins, features, and views workspaces use (#46)

Source-Revision: 10bf466028fe23dabc650c3afc904fa3c72916a7
R
Ryan Ewen committed
f59dc3cc45dc354dc0e04d24f458ceea23418325
Parent: 0b79e7f