Skip to content

release: DualSPHysics Studio v1.0.2 - #2

Merged
Zerliner merged 3 commits into
mainfrom
agent/release-v1.0.2
Jul 30, 2026
Merged

Zerliner merged 3 commits into
mainfrom
agent/release-v1.0.2

Conversation

@Zerliner

Copy link
Copy Markdown
Owner

What changed

  • adds conservative preflight and post-GenCase resource estimates
  • adds the Run Center with stage state, live logs, progress and ETA
  • adds case-local reproducible .dss-run records, XML snapshots and diagnostic exports
  • adds an explicitly confirmed one-click GenCase → selected CPU/GPU solver → PartVTK workflow
  • keeps XML in diagnostic bundles by default, with an explicit privacy exclusion option
  • updates version metadata, packaging, roadmap and user documentation to v1.0.2

Impact

Users can evaluate likely resource requirements before launching, follow a complete simulation pipeline from one place, and retain auditable records suitable for reruns and support diagnostics. PartVTK is always retained in the one-click workflow.

Validation

  • full pytest suite passed
  • python -m dualsphysics_studio --smoke-test passed
  • git diff --check passed
  • Windows portable package smoke-tested separately

@Zerliner
Zerliner marked this pull request as ready for review July 30, 2026 14:17
@Zerliner
Zerliner merged commit 2bc3b91 into main Jul 30, 2026
2 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b27b94e0e4

ℹ️ 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".

Comment on lines +488 to +492
result = re.sub(
r"(?i)\b[A-Z]:[\\/]+Users[\\/]+[^\\/\s\"']+",
"<USER_HOME>",
result,
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Redact absolute paths outside the known roots

When a tool log or manifest contains an absolute path outside the source, output, or configured tool roots—for example D:\shared\meshes\input.stl—the diagnostic ZIP retains it verbatim. The fallback expression only recognizes paths under X:\Users\..., so exporting and sharing a supposedly path-redacted diagnostic can disclose other local directories and filenames; handle arbitrary Windows absolute paths as well.

Useful? React with 👍 / 👎.

Comment on lines +1397 to +1401
redaction_paths=(
source_path.parent,
session.output_root,
self.settings.gencase_root,
),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Omit an empty configured root from redaction paths

When tools are discovered through DUALSPHYSICS_ROOT while the saved gencase_root remains empty, this passes "" to _Redactor. Path("") becomes ., causing every period in exported JSON, summaries, and logs—including versions, timestamps, decimals, and filenames—to be replaced with <LOCAL_PATH_3>, substantially corrupting the diagnostic package; only pass this path when the setting is non-empty.

Useful? React with 👍 / 👎.

Comment on lines +473 to +476
def _refresh_run_history(self, source: Path) -> tuple[RunSession, ...]:
sessions = find_case_sessions(source)
for session in sessions:
session.mark_interrupted()

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve sessions owned by another running instance

When the same case is open in a second Studio process while the first process is still running a stage, refreshing history unconditionally rewrites the first process's live session as interrupted. Since streaming logs do not rewrite run.json, that record and the second instance's UI remain falsely interrupted until the active stage finishes; use an ownership/liveness marker or locking before recovering a running session.

Useful? React with 👍 / 👎.

Comment on lines +183 to +185
counts = [
max(1, math.floor(span / dp + 1e-9) + 1)
for span in spans

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Guard grid-ratio overflow in resource estimation

For a parseable case with a finite but extremely small positive dp relative to the definition span, span / dp becomes infinity and math.floor() raises OverflowError. Estimation runs automatically when a document is loaded and before a full run, so such an input aborts those handlers instead of reporting an unavailable or over-budget estimate; validate that the ratio is finite and bounded before converting it to an integer.

Useful? React with 👍 / 👎.

Comment on lines +448 to +452
self._run_session = None
self._selected_session = None
self._full_run_active = False
self._manual_session_active = False
self._pending_full_stage = None

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep active workflow state when another XML is opened

If the user opens another XML while a manual or one-click stage is running, the Open action remains enabled and set_document() reaches this handler, which clears the active session and full-workflow flags even though the worker continues. The current stage then finishes without updating its run record, and a one-click run never schedules its remaining solver or PartVTK stages, leaving run.json stuck as running; either prevent document replacement during execution or retain the active workflow state independently of the displayed document.

Useful? React with 👍 / 👎.

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