Skip to content

Releases: bbolinger/snapmaker-u1-toolkit

v3.0.1

Choose a tag to compare

@bbolinger bbolinger released this 22 Jul 13:38

Large-plate previews show up on the first look

On big files, the printer's touchscreen and the mobile app could ask for the file's preview while the printer was still scanning the upload, get nothing, and keep showing a generic icon for that file. Two changes close that window:

  • Smaller embedded previews. The thumbnails baked into each plate's G-code are now palette-compressed to about a quarter of their previous size, with no visible difference, so they parse quickly everywhere.
  • Upload waits for the scan. The workflow now asks the printer to finish scanning the file's metadata before reporting the upload done, so the preview is ready the moment anything asks for it. Older printer software without that endpoint behaves exactly as before.

No other changes. The print-start safety flow is untouched.

v3.0.0

Choose a tag to compare

@bbolinger bbolinger released this 22 Jul 12:24
1500002

Reviews that show the truth, and a toolkit that survives updates

Every review image is now drawn from the actual toolpaths the printer will run, and updating Hermes no longer breaks the kit flow. No breaking changes, nothing to migrate; existing installs just get better.

Highlights

  • See the real print, not a sketch. The 3D review image renders the sliced G-code itself: the true print pose, real per-layer geometry, and supports in their own color, so "where are the supports and how did it orient?" is answered by the picture you already get. The top-down keeps its bed grid and millimeter labels for placement, but now draws the same real geometry, so each part actually looks like itself from above. Both images use the same color per part.
  • Your printer's screen shows the 3D view. The thumbnail embedded in each plate's G-code (what the U1 touchscreen and app display for the file) is a clean render of the print pose instead of a flat footprint.
  • Filament and time up front. The confirm card leads with the estimate, like "Estimated: 5h 48m, 66g filament", read from the sliced G-code's own numbers. The 3D image's footer carries the same figures.
  • Send a kit any time in a conversation. Kit detection no longer depends on the message being the first of a session, and it overrides a newer Hermes attachment note that told the assistant to unpack files by hand.
  • Hermes updates can't take down the form. The kit form re-wires itself on every message instead of relying on a patched Hermes file that package upgrades silently replace.

Also

  • Because the images come straight from the G-code, they cannot disagree with what will print; nothing is re-sliced or re-arranged to make a picture.
  • The previous renderers remain as automatic fallbacks at every step, so a preview is never lost.
  • Fixed a renderer crash that could stop a kit after slicing, and added tests that exercise the renderers and a full end-to-end slice wherever the runtime OrcaSlicer exists.

The print-start safety flow is unchanged: fresh bed photo, yes/no bed-clear prompt, and a cancel window before anything prints.

v2.8.0

Choose a tag to compare

@bbolinger bbolinger released this 21 Jul 00:13
c34f0aa

Copies, first-layer temp, brim types, and forms that survive updates

New dial-in controls on the kit form, plus reliability fixes so a print never stalls on a flaky bed photo and the form keeps working across Hermes updates.

Highlights

  • Print multiple copies, dialed exactly. The copies question is now a +/- stepper you dial from 1 to 50, instead of a list that stopped at 9. The +5 and -5 buttons jump in fives.
  • First-layer nozzle temperature. Set a hotter or cooler first layer for bed adhesion without changing the rest of the print. Same per-material safe range as the main nozzle.
  • Full brim options. Pick off, outer, auto, or mouse ears, matching exactly what the U1's slicer supports.
  • The form keeps working after a Hermes update. Updating Hermes used to be able to silently break the kit form with a confusing "callback not registered" error. The form now re-wires itself on every message, so an update no longer takes it down.

Also

  • A truncated or dropped bed photo no longer aborts a print start. The camera retries a bad frame and only accepts a complete image; if it truly cannot get one, it still refuses to start rather than proceed blind.
  • Re-slicing a kit can no longer leave an old confirm prompt hanging that would reject your next "yes".
  • Internal cleanup: removed unused code.

The print-start safety flow is unchanged: you still get a fresh bed photo, a yes/no bed-clear prompt, and a cancel window before anything prints.

v2.7.0

Choose a tag to compare

@bbolinger bbolinger released this 16 Jul 12:14
68253cc

Dial-in controls: temperature and steppers

You can now set nozzle and bed temperature per print, and every numeric slicing control is a +/- stepper you dial to an exact value.

Highlights

  • Bed and nozzle temperature. Running custom filament on a stock profile? Dial the nozzle and bed temp in the form. Each value is gated to a per-material safe range sourced from Snapmaker's own U1 presets and the U1's hardware limits.
  • A +/- stepper for every number. Temperature, infill, walls, and top/bottom shells are one-row steppers, so you dial any exact value instead of picking from a fixed list. The header shows the profile's current value; tap it to keep it.
  • Cold plate friendly. A low or off bed is always allowed, since a cool or cold plate is a real setup. Only the maximum is gated.

Also

  • Pattern and the on/off controls stay as buttons (they aren't numbers).
  • Cleaned up the print-head label.

Form and UI, plus the filament override applied at slice time. The print-start safety flow is unchanged.

v2.6.0

Choose a tag to compare

@bbolinger bbolinger released this 16 Jul 01:11
454ad63

Advanced options, redesigned

Slicing tweaks are now organized by category and show you what you're changing before you change it.

Highlights

  • Category menu. From Review, "Advanced options" opens a short menu (Strength & shells, First layer & adhesion, Surface finish, Supports), and each category opens a page with just its controls, instead of one long screen of everything at once.
  • See the current value. Each setting shows the profile's current value in a header ("Infill: keep profile (25%)"), so you know what you'd be changing. The value follows whichever profile you pick.
  • Compact layout. Each setting is a titled header with its options laid out three across ("30%", "gyroid", "2"), with no repeated labels and no truncation.

Also new

  • New controls: separate top and bottom shell layers, one-wall-on-top, and raft, alongside the existing infill, pattern, walls, brim, and fuzzy skin.
  • The Supports category appears only when supports are on.
  • "Reset all to profile" clears every tweak at once, and Review shows a one-line summary of what changed.
  • The profile step gained a Continue button, so a pre-selected profile confirms with a tap instead of paging to the next set.

Form and UI only. The print-start safety flow is unchanged.

v2.5.2: both plate images render for from-printer profiles

Choose a tag to compare

@bbolinger bbolinger released this 15 Jul 12:13
6ce80a9

Both plate images render for profiles from your recent prints

The 2.5.0 "profiles from your recent prints" feature had a rough edge: slicing with one of those learned profiles showed only one plate image on the confirm-to-print card, and it looked different from usual. Those profiles were missing OrcaSlicer's object-labeling setting, which the toolkit's plate previews (the top-down footprint and the 3D view) are both built from. The toolkit now turns object labeling on for every slice, so both plate images render no matter which profile you pick.

v2.5.0: profiles from your recent prints

Choose a tag to compare

@bbolinger bbolinger released this 15 Jul 02:38
4f8b46a

Profiles from your recent prints, and it defaults to your last one

Two profile improvements that make a normal print quicker to start.

Profiles from your recent prints. The picker now offers profiles pulled from what you have actually printed, not just the bundled Snapmaker presets. Send a kit and the toolkit reads the settings from your recent prints on the printer and offers them, named the way your slicer named them. It fetches only the small settings block from each print, never the whole G-code, so a large print is about a 1 MB transfer instead of the full file. Reprints collapse to one entry, and a captured print that matches a profile you already have shows once.

Defaults to your last-used. The kit options form opens pre-selected on the profile you last printed with, so a normal print is one tap shorter. You can still change it.

v2.4.4: kit form shows the loaded filament

Choose a tag to compare

@bbolinger bbolinger released this 14 Jul 21:18
50e24a9

Highlights

The kit options form now shows the filament and colour that are loaded on the printer right now.

Previously the tool and filament picker read a snapshot that was only refreshed when a print started or a file was uploaded. If you swapped a spool between jobs, the next kit's picker could still show the previous spool, such as an old colour, even though the printer already knew about the change. The picker now reads the printer's current filament at the moment it builds the screen, so what you see matches what is loaded.

If the printer cannot be reached for a moment, the form falls back to the last known snapshot rather than showing nothing. The start-time safety check already read the live state and is unchanged.

See the CHANGELOG for full details.

v2.4.3: toolkit-driven kit options form

Choose a tag to compare

@bbolinger bbolinger released this 14 Jul 10:37
ff58325

The kit options form is now driven by the toolkit itself

Send a kit and the toolkit shows the options form, collects your answers,
slices, and brings back the readiness card as one smooth step. The model no
longer has to ask for the form itself, so the small local models this runs on
can no longer stall a job by garbling that request. Your plate previews, a
fresh bed photo, the review document, and the final bed-clear approval all
arrive the same as before, and the safety gate is untouched.

Also in this release

  • A mistyped kit filename recovers itself. If the model retypes an uploaded
    file's name and mangles it, the toolkit finds the real file by its stable id
    instead of giving up.
  • The first taps on a fresh form register. A very fast first tap used to
    flash without checking the box; those early taps now land.

Validated end to end on real hardware (Snapmaker U1, gemma4 over Ollama) with
the full test suite passing (1002 tests).

v2.4.2: cleaner messages + mistyped-upload recovery

Choose a tag to compare

@bbolinger bbolinger released this 13 Jul 22:12
f14e29c

Two reliability fixes for driving the printer with a small local model.

Highlights

  • Clean operator messages. The local gemma4-over-Ollama models sometimes leak reasoning-channel tokens into the reply text. A new sanitizer strips them on every turn, so the operator sees clean messages on any model or Ollama endpoint.
  • Mistyped upload names recover automatically. When the model garbles an uploaded file's name, the toolkit recovers the real file by its stable id instead of dead-stalling, so a multi-part kit ingests as normal.

Chat-template sanitizer

The models this toolkit runs are imported with a passthrough template and intermittently leak their reasoning-channel delimiters (<channel|>, <|tool_call|> ...) into the visible message, most often as a thought <channel|> prefix. The sanitizer removes the known control tokens from the outbound reply on every turn. It is model- and endpoint-agnostic, never touches the safety gate, a structured tool call, or a file path, and a clean reply passes through unchanged.

Mistyped-upload-path recovery

The model occasionally retypes an uploaded file's name and mangles the human-readable suffix (a + becomes _), so the path points at nothing. The workflow then mis-read the missing archive as a single model and failed with a confusing "unsupported model file". The upload's stable doc_<hash> prefix now recovers the real file, so the kit ingests as normal. A zip that is genuinely missing or unreadable surfaces a clear message instead of falling into the single-model path, and a zip holding a single object is still handled as a kit-of-one.

Both validated on real hardware: the channel leak stripped in a live drill, and a 2-part kit that previously dead-stalled now ingests, slices, and posts its readiness card. The model-free print-start safety boundary is unchanged.