Skip to content

Release v0.3.6 - #59

Merged
Heerpa merged 4 commits into
masterfrom
develop
Nov 11, 2026
Merged

Heerpa merged 4 commits into
masterfrom
develop

Conversation

@Heerpa

@Heerpa Heerpa commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator

Release v0.3.6.

Promotes develop to master for tagging. Contents since v0.3.5:

Added

  • Clean-tubings options dialog (feat(gui): per-run cleaning options dialog #58) — per-run choice of which reservoirs to clean, a per-reservoir pump-out (Default / Calculated loaded − injected / Custom), and which cleaning liquids to use. Backed by LegacyArchitecture.clean_tubings(res_to_clean=…, max_reservoir_vol={…}), SystemService.cleaning_plan(), and a new optional cleaning.default_reservoir_load design field.

Changed

  • A cleaning pre_empty_volume of 0 now skips the pre-empty (matching the field's tooltip); previously a literal 0 still pumped each reservoir's tubing dead-volume.

CHANGELOG stamped [0.3.6] - 2026-11-11. Tag v0.3.6 will be pushed to master after merge to trigger the Windows installer release.

🤖 Generated with Claude Code

Heerpa and others added 4 commits November 11, 2026 09:48
…uids)

Triggering "Clean tubings" from the Fluid tab now opens a dialog instead of
a bare confirm, letting the operator tailor each cleaning run:

- which reservoirs to clean — a checkable row per wired reservoir (the ones
  the loaded run used are pre-checked; unused wired ones can be added, any
  can be deselected; falls back to all-checked when the run marks none used);
- a per-reservoir pre-empty pump-out — Default (the design's single
  pre_empty_volume), Calculated (loaded − injected, from an editable
  per-reservoir loaded volume), or a Custom value;
- which cleaning liquids to use (all on by default).

Backing changes:
- LegacyArchitecture.clean_tubings gains a res_to_clean override and accepts
  a {reservoir_id: volume} mapping for max_reservoir_vol (per-reservoir
  pre-empty; None/non-positive skips a reservoir).
- SystemService.cleaning_plan() describes what the procedure would operate on
  (reservoirs with injected + dead volumes, cleaning rounds, defaults);
  clean_tubings() forwards the dialog's res_to_clean / cleaning_reservoirs /
  pre_empty_volumes overrides.
- New optional cleaning.default_reservoir_load design field seeds the dialog's
  loaded-volume column.

When no fluid system/design is connected the old simple confirm + whole-system
clean still applies. Tests cover the new legacy/service paths and the dialog.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Require ≥1 cleaning liquid when liquids are configured: deselecting every
  liquid while keeping a pre-empty would otherwise pass validation and run a
  pre-empty-only clean that silently cleaned nothing. Pre-empty-only stays
  allowed only when no cleaning liquids are configured at all.
- cleaning_plan(): read values, not keys, when a raw legacy config carries
  cleaning_reservoirs as a {pos: entry} dict (mirrors clean_tubings).
- Prefill the Calculated-mode loaded volume when default_reservoir_load is 0
  (was skipped by a falsy-zero check).
- Collapse the double label computation in _build_reservoir_table.
- Doc: cleaning_plan's "injected" is the planned protocol total, not actual.
- CHANGELOG: note that a cleaning pre_empty_volume of 0 now skips the
  pre-empty (matching the field's tooltip; previously it still pumped the
  tubing dead-volume).

Tests cover the liquid-required validity rule, the pre-empty-only path, and
the dict cleaning_reservoirs plan.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat(gui): per-run cleaning options dialog
@Heerpa
Heerpa merged commit 0af65e7 into master Nov 11, 2026
12 checks passed
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