Skip to content

fix(profiles): correct a filename case that breaks every Snapmaker preset on Linux - #771

Open
physicsG wants to merge 1 commit into
Snapmaker:mainfrom
physicsG:fix/profile-filename-case-upstream
Open

fix(profiles): correct a filename case that breaks every Snapmaker preset on Linux#771
physicsG wants to merge 1 commit into
Snapmaker:mainfrom
physicsG:fix/profile-filename-case-upstream

Conversation

@physicsG

@physicsG physicsG commented Aug 24, 2026

Copy link
Copy Markdown

One process profile is on disk as

resources/profiles/Snapmaker/process/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.

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_json aborts on a failed entry, one missing file
of 570 takes the entire 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. 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 does
not 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 name field and its
compatible_printers all already agree on lowercase, so the file is the outlier:

Snapmaker.jsonprocess_list[].sub_path …(0.4 nozzle).json
the preset's own name 0.10mm Color Mixing @Snapmaker U1 (0.4 nozzle)
compatible_printers Snapmaker U1 (0.4 nozzle)
the file on disk …(0.4 **N**ozzle).json ← the only disagreement

The vendor version also goes 02.02.55.0202.02.55.03. 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 datadir's, so anyone already carrying 02.02.55.02 would keep
the broken set.

Two files changed: the rename, and one character of the version string.

…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant