Skip to content

GUI silently discards a saved project's setting overrides unless the key is also listed in different_settings_to_system #213

Description

@jwalker279-cmd

GUI silently discards a saved project's setting overrides unless the key is also listed in different_settings_to_system

Version: QIDIStudio 02.07.02.10 (Win64), GUI.
Mode: opening a .3mf project that has a modified project_settings.config (values that differ from its named system/user preset).

Summary

A project 3MF's Metadata/project_settings.config can contain a value that differs from its parent preset (named by print_settings_id) — for example the file literally states fill_density = "8%", layer_height = "0.2". On open, the GUI only re-applies overrides whose key is also present in the different_settings_to_system field (a ;-joined, 3-slot list aligned with inherits_group: process/filament/printer). If a key was changed in the JSON but its name was never added to different_settings_to_system, the GUI silently discards the value and rebuilds from the parent preset instead — no warning, no asterisk, no diff dialog. The dropdown/preset name shown is also just the parent preset's label, so the file can visibly say e.g. * 0.16mm Balanced Quality while actually slicing (headlessly, and until this bug, in the GUI too) at 0.20mm / 8% infill.

This is a genuine data-loss bug: a file that is correct on disk can silently print wrong the moment someone opens it in the GUI, with no visual indication anything changed.

Repro

  1. Take any project 3MF derived from a system preset.
  2. Hand-edit Metadata/project_settings.config: change a value (e.g. fill_density) without adding its key to different_settings_to_system.
  3. Open the file in QIDIStudio GUI.
  4. Check the process settings panel — the field shows the parent preset's value, not the one written in the file, with no "modified" marker (orange dot / revert arrow).

Expected: every value literally present in project_settings.config is honored on open, or at minimum flagged as ignored.
Actual: unlisted keys are silently overwritten from the parent preset with no visual cue.

Additional related bug: switching the process preset dropdown discards ALL overrides at once

Even correctly-registered overrides (present in different_settings_to_system) are wiped in bulk if the user touches the process preset dropdown — selecting the same or any preset resets every project-level override back to that preset's stock values, no confirmation prompt.

Impact / cost

We hit both forms of this on a real production file: a bowl model built at 8% infill / 0.20mm opened at 15% / 0.16mm (471.6g/26.8h vs the intended 335.1g/14.7h) with zero indication anything was wrong — only caught because the GUI-open QA step happened to compare the reported slice weight against a recorded baseline.

Workaround (in use here)

When writing a project 3MF programmatically, register every overridden key in the correct different_settings_to_system slot (0=process, 1=filament, 2=printer) matching inherits_group, and verify by re-reading the written file. Confirm in the GUI by checking for the orange "modified" marker + revert arrow next to each value that's supposed to differ from the preset — a value can look right by coincidence if the preset's stock value happens to match.

Suggested fix

Either honor every explicit value in project_settings.config regardless of different_settings_to_system membership, or refuse to silently discard a value on open — surface a diff/confirmation dialog instead. At minimum, warn before a process-preset dropdown change wipes existing project overrides.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions