Repository navigation
feat(settings): expose external-wall/solid/top/travel speeds + crossing-perimeters retraction - #209
Conversation
…ng-perimeters retraction Add five goosli slicing settings as editable form widgets: - print_speed_external_wall (int mm/s, default 0) - print_speed_solid (int mm/s, default 0) - print_speed_top (int mm/s, default 0) - travel_speed (int mm/s, default 130) - only_retract_when_crossing_perimeters (bool, default false) Adds defaults to settings.yaml slicing block, GROUPING["material"] membership, with_sett() widget branches (mirroring print_speed_wall and retraction_on), and EN/RU locale strings. Version field left untouched (auto-bumped at build). Mirrors goosli keys from goosli #276/#278 (merged to goosli master). Bead: goosli_v2-81o
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0b43c4239f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| print_speed: 60 | ||
| print_speed_layer1: 30 | ||
| print_speed_wall: 60 | ||
| print_speed_external_wall: 0 |
There was a problem hiding this comment.
Gate new slicer settings on compatible goosli
When this Spycer build is paired with a goosli binary from before the changes that added these fields, adding this default and the other new slicing defaults makes every slice send unknown YAML keys: src/settings.py's PathBuilder.get_cmd_with_path serializes all of sett() into --data, and I checked .github/workflows/build.yaml/build-linux.yaml only package Spycer/settings rather than updating or validating ./lib/goosli. Because the slicer strict-decodes its settings, users in that release/runtime context fail before touching the new controls; please guard these keys behind a slicer-version check or make the goosli upgrade atomic with this settings change.
Useful? React with 👍 / 👎.
What
Exposes five goosli slicing settings as editable form widgets in the spycer settings panel (Material group):
print_speed_external_wall0print_speed_solid0print_speed_top0travel_speed130only_retract_when_crossing_perimetersfalseHow
Mechanical additions mirroring the existing
print_speed_wall(int) andretraction_on(bool) widgets:settings.yaml— 5 defaults added to theslicing:block.src/settings_widget.py— keys added toGROUPING["material"](membership is what renders the widget), plus 5 newwith_sett()elifbranches (4QSpinBoxcopied fromprint_speed_wall, 1QCheckBoxcopied fromretraction_on).src/locales.py— EN class attrs + RUdicts["ru"]entries for each label.These mirror the goosli keys added in goosli #276 / #278 (merged to goosli
master). Keys are under the gooslislicing:block and are not renamed.Version field intentionally NOT bumped
common.versioninsettings.yamlis left untouched — per the repo owner it is auto-bumped during the build process, which also handles existing-project migration.spycer does not bundle goosli. The
./lib/gooslibinary is supplied out-of-band at release assembly. goosli strict-decodes its settings YAML (KnownFields), so an unknown key makes every slice fail.This UI must not ship until the bundled
./lib/goosliis new enough to know all 5 keys (i.e. built from gooslimasterincluding #276/#278). If a release pairs this spycer UI with an older goosli, slicing will break for every user the moment any of these settings is present in the YAML payload.Verification
Qt/vtk are not installable in the dev sandbox, so verification was static + a standalone serialization round-trip:
python3 -c "import ast; ast.parse(...)"onsettings_widget.py,locales.py,settings.py— all parse.settings.yamlparses; all 5 keys present with correct defaults;common.versionunchanged (v1.0.0).Settings→to_plain_data→yaml.safe_dump→ base64, copied verbatim fromsrc/settings.py): set all 5 keys via the same assignments theon_changehandlers use, confirmed they round-trip into the serialized YAML payload.GROUPINGentry, 1elif name ==branch, and 2 locale attrs (EN + RU).Bead: goosli_v2-81o