fix(profiles): correct a filename case that breaks every Snapmaker preset on Linux - #771
Open
physicsG wants to merge 1 commit into
Open
fix(profiles): correct a filename case that breaks every Snapmaker preset on Linux#771physicsG wants to merge 1 commit into
physicsG wants to merge 1 commit into
Conversation
…eset on Linux
One process profile is on disk as
0.10mm Color Mixing @Snapmaker U1 (0.4 Nozzle).json
while Snapmaker.json lists it, and the preset inside it names itself, with a lowercase "nozzle".
It is the only one of 198 profile filenames spelled that way; every other file, every manifest
entry and every compatible_printers string uses "nozzle".
Windows and macOS have case-insensitive filesystems and never notice. On Linux the file is not
found, load_vendor_configs_from_json fails on it, and one missing file of 570 takes the whole
vendor bundle down with it. No Snapmaker machine preset loads at all:
load_from_json: parse .../0.10mm Color Mixing @Snapmaker U1 (0.4 nozzle).json got a parse_error
load_vendor_configs_from_json, got error when parse process setting from ...
can not find parent for config .../user/default/machine/<any user preset>.json!
The printer combo comes up empty, the sidebar draws NO IMAGE with a blank nozzle diameter, and
any user preset inheriting a Snapmaker machine is orphaned. A clean install on Linux cannot
select a printer.
The fix is the filename rather than the manifest: the manifest entry, the preset's own "name"
field and its compatible_printers all already agree on lowercase, so the file is the outlier.
The vendor version goes to 02.02.55.03 as well. Without it the corrected file only reaches new
installs - check_installed_vendor_profiles() reinstalls from resources only when the resource
bundle is newer than the one in the datadir, so anyone already carrying 02.02.55.02 would keep
the broken set.
Verified on Linux against a datadir in the failing state: zero parse errors, zero orphaned
parents, all 570 manifest entries resolving, and the printer selectable again.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
One process profile is on disk as
while
Snapmaker.jsonlists it — and the preset inside it names itself — with a lowercasenozzle. It is the only one of 198 profile filenames spelled that way.Why it matters
Windows and macOS have case-insensitive filesystems and never notice. On Linux the file is not
found, and because
load_vendor_configs_from_jsonaborts on a failed entry, one missing fileof 570 takes the entire vendor bundle down with it — no Snapmaker machine preset loads at all:
The printer combo comes up empty, the sidebar draws NO IMAGE with a blank nozzle diameter,
and any user preset inheriting a Snapmaker machine is orphaned. On Linux a clean install cannot
select a printer at all.
It has stayed hidden because the profiles are only read from
resources/when the datadir doesnot already hold a newer bundle, so an existing install keeps whatever it cached — and CI and
most development happen where the filesystem is case-insensitive.
The fix
The filename, not the manifest. The manifest entry, the preset's own
namefield and itscompatible_printersall already agree on lowercase, so the file is the outlier:Snapmaker.json→process_list[].sub_path…(0.4 nozzle).jsonname0.10mm Color Mixing @Snapmaker U1 (0.4 nozzle)compatible_printersSnapmaker U1 (0.4 nozzle)…(0.4 **N**ozzle).json← the only disagreementThe vendor version also goes
02.02.55.02→02.02.55.03. Without it the corrected file onlyreaches new installs:
check_installed_vendor_profiles()reinstalls from resources only when theresource bundle is newer than the datadir's, so anyone already carrying
02.02.55.02would keepthe broken set.
Two files changed: the rename, and one character of the version string.