Skip to content

Open Source SWMM 6 Alpha 4 Release - #12

Open
cbuahin wants to merge 507 commits into
devfrom
swmm6_gui
Open

cbuahin wants to merge 507 commits into
devfrom
swmm6_gui

Conversation

@cbuahin

@cbuahin cbuahin commented Sep 17, 2026

Copy link
Copy Markdown
Member

No description provided.

Comment thread src/main.cpp
+ QStringLiteral(".log");
}

g_logFileHandle = std::fopen(QFile::encodeName(path).constData(), "a");
Complete Phase 28 bank-pair authoring, persisted recipes, source validation and worker/save integration. Correct Phase 29 quad ranking and stabilize geometry calculations at projected coordinates.

Validation: Phase 28 passed 584 checks across eight suites; Phase 29 passed 679 checks across ten suites. Both GUI builds, strict signature checks and fresh launches succeeded. Native acceptance and documented junction/packaging gates remain open.
The comparison plot opens as a floating panel. The dialog registry restacks
every open plot, not just the active one, so raising one no longer buries
its siblings (including under macOS native child-window stacking), and a
queued restack never covers a modal prompt opened in the meantime.
QTemporaryFile::close() keeps its native handle open, and on Windows that
handle is opened without FILE_SHARE_DELETE. The engine writer publishes by
renaming its own temporary over the staged path, so every built-in save on
Windows failed with "Cannot publish output '.openswmm-stage-XXXXXX': Access
is denied". Stage files now drop the QTemporaryFile once the unique name is
reserved and remove the file themselves.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Contour bands and isolines derive from the layer's static classification
range (full-run depth scan / global elevation span) and are pan/zoom-
invariant, but the Far LOD bucket hard-vetoed drawContours and
exactContourBands, so zooming in made bands and isolines appear instead
of the same static band set rendering at every zoom. The Far branch of
Qsg2DLodPolicy::decide now allows both passes; contour labels stay
Mid/Near-only (screen-space clutter at Far densities). One policy change
covers the depth-results and terrain-mesh renderers alike.
Share signed VFR surface depths across connected wet edges for maps, point queries and exact profile intervals. Clip wet footprints, preserve dry gaps and refresh same-time frames and historical envelopes.

Rasterize profile water, envelope and soil fills as compound paths to eliminate pale cell-edge seams. Surface smoothing changes the display projection while preserving stored simulation volumes.

Validation: nine targeted regression suites, forced asynchronous contour checks, 18 seam comparisons across fill types and display scales, and a rebuilt and signature-verified macOS application.
Complete GUI robustness phases 30-34: preserve numeric precision and dirty
state, validate editor drafts, guard owner lifetimes, and protect asynchronous
loading and simulation output preparation.

Add semantic surface/groundwater result catalogs, independent scalar
sublayers, synchronized rendering and legends, reversible style sessions,
known-unit CSV export, and clearer selection/groundwater icons. Include
regression coverage and implementation reports.

Validation in the integrated shared workspace: Phase 34 has 215 passing
checks across 11 suites; Phase 33 has 439 passing checks with two retained
engine validator failures and two explicit skips. Release build, deep strict
signature verification and native startup passed. Meshing overhaul and
unrelated generated artifacts remain outside this commit.
cbuahin and others added 6 commits October 1, 2026 02:08
Patches 0001-0003 (workplans/MESH_OVERHAUL_PLAN_2026-09-29.md, Phases 0-6:
graded size field v2, terrain tolerance, straightness trimming, an in-tree
constrained Delaunay kernel on Shewchuk's predicates replacing the Triangle
library, the quadtree core) and the Phase 7 session's edits (seedless size
field, region-flood fix, Bellinge and engine harnesses, test registrations).
This is the tree the Phase 7 session built and ran the revision 1-2 gates on;
the next commit replaces its generator.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nq8ygNzPRdyeuCtwHAeqPz
Phase 6b (terrain break lines, patch 0004) and Phase 8
(workplans/MESH_TRIANGLE_ENGINE_PLAN_2026-09-30.md, patch 0005): constrained
Delaunay refinement with a guaranteed minimum angle (default 30 deg, 20-33),
smooth grading and coarsening to 20 x the cell size; quads only in aligned
feature strips (four-sided quad regions, corridors, streets between facing DEM
break lines, optional conduit strips); constraint lines that cross or come
closer than the refinement floor are joined; conduit alignments stored
backwards are unfolded; the quadtree and the cell-shape and grid-orientation
options are removed. Phase 7 harnesses rewritten for the triangle engine
(Bellinge runs A-F, lake at rest with a quad region). Not yet compiled on the
Mac: workplans/MESH_OVERHAUL_PHASE7_HANDOFF_2026-09-30.md revision 4.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nq8ygNzPRdyeuCtwHAeqPz
Add named section series, styles, scalar tracks, saved definitions and table
exports. Keep the settings pane collapsed by default and persist its toolbar
toggle using the existing 1D profile dialog pattern.

Include the supporting profile editor and project persistence code required
by the section controls. Leave unrelated groundwater assignment and mesh
changes outside this commit.

Validation: profile series, store and combined widget suites passed; the
updated application built and launched successfully.
Sample exact mesh intervals and signed water surfaces so profile fills reach
analytic terrain intersections without joining across dry cells. Retain
both adjacent triangles for boundary-aligned traces during animation.

Extend the contour endpoint bands beyond the selected color range while
keeping the physical dry cutoff independent of the theme minimum. Apply
the same rule to CPU, QSG, flat and smooth contour rendering.

Validation: 12 targeted suites passed, including analytical profile and
range-saturation regressions. Forced asynchronous contour checks passed
23 cases; the testing application built, passed signature verification
and launched successfully.
Classify reconstructed cells before smoothing so dry cells and residual
films cannot contribute water geometry or influence neighbouring surfaces.
Retain deeper partial pools and clip their water at the zero-depth shoreline.

Add persisted water visibility controls with model-threshold inheritance,
an explicit display cutoff, Show thin films, and Cancel/Undo support.
Refresh profiles and historical envelopes and reject stale contour jobs
when the display policy changes, without altering simulation values.

Validation: six targeted suites passed, including forced asynchronous
contours, saved/live parity, and raw-depth preservation. The 27-case
integration suite passed again with Cancel/Undo/Redo coverage. The app
built, passed strict/deep signature verification, and launched for testing.
Normalize file-level Doxygen metadata, Caleb Buahin attribution and source
formatting while retaining upstream notices and license assignments. Add
detailed behavior, argument, lifetime, return and failure contracts for
reviewed functions, plus the shared formatting and Doxygen alias fixes.

Record validation and the remaining review scope. Preserve completed comments
from files with independent pending implementation edits in the checkpoint
record; keep those implementation edits outside this documentation commit.
The thorough project-wide function documentation pass remains in progress.
Describe maintained function behavior, arguments, results, units, lifetime,
failure handling and side effects from source review. Preserve implementation
behavior and original licensing while naming previously unnamed parameters.

Record complete working-source coverage and preserve comments tied to separate
pending implementation in review records without staging that implementation.

Validation: full production Doxygen in base and optional configurations has
zero warnings or actual function/argument gaps; unit and integration helper
coverage passes. Focused native/MOC checks and token/format checks pass, with
one disabled legacy test reproducing its pre-existing declaration mismatch.
Bundle five portable SI examples with measured reference tables, qualified
comparison data, and Welcome-page packaging. Add the T11 walkthrough and
curated manual figures, viewer and review downloads.

Validation: manual link and figure audits; deterministic example archive check.
Check tenfold scaling, default-column CSV sources, and precise rain and snow factors across saved GUI models. Clarify how gage and subcatchment factors compose.

Companion engine fix: openswmm.engine 63907ec3. Validation: all 16 rainfall GUI checks passed against the corrected engine.
Add the smoothing reference interval to 2D simulation options and preserve unedited theta/reference precision through Apply and save/reload. Document configuration and the 36-case refinement results, with updated plots and curated download assets.

Validation: focused GUI persistence/no-edit checks and manual links pass. Simulation outputs, verification logs and unrelated ongoing changes are excluded.
Keep imported precision and complete text until controls are edited, persist
independent writer selections and portable destinations, and retain project
styles, custom CRS, result display settings and calibration bindings. Quote
delimited exports and report write failures.

Add four focused GUI regressions and retain the 38-group audit and completion
records. Pair with engine commit c5244651 for model-format persistence.

Validation: 43 selected GUI checks and eight focused engine suites pass.
The selected shared GUI sources also compile without unrelated implicit-FV
preview headers; those existing edits remain outside this commit.
Add Coriolis and Smagorinsky controls plus per-wall Cw editing through the existing edge selection, attribute table and inspector. Preserve coefficients through INP/GeoPackage saves, exports, undo/redo and supported edge remapping.

Validation: momentum-options and boundary-toolbar GUI targets pass, including enabled controls, selective edits, metadata round trips and subdivision remapping. The local development app passes strict deep signature verification and bundled-engine API checks.
Expose optional SDK 1.3 lifecycle snapshots and queued state observations through
one application registry, with distinct open-session IDs, load generations and
revisions. Preserve the frozen legacy and typed V1 interfaces.

Instrument native readiness, close, normal/sidecar/recovery save boundaries and
synchronous pre-save collection. Keep facade queries pure and guard collectors
against reentrant window deletion. Package a lifecycle example and integrate its
API and usage documentation into the GUI Doxygen site and SDK CI.

Validation: 79 core SDK results, 15 native lifecycle results, 87 multi-session
and 66 single-session live GUI assertions passed locally on macOS arm64.
Archived SDK 1.1 Data and SDK 1.2 typed consumers remain compatible. Strict
public and implementation SDK Doxygen checks have zero warnings.
Expose optional SDK 1.4 model/layer/results observations, copied view snapshots
and validated commands without changing frozen legacy or V1/V2 interfaces.
Track native attachments once per model window, merge domain and lifecycle
notifications in one ordered registry, and coalesce repeatable invalidations.

Repair shared selection across rename/edit/undo and legacy boundary observer
lifetimes. Validate vector filters, guard asynchronous result adoption/closure,
and distinguish native result units and published cursors from project units and
requested frames. Package a consumer-local Qt adapter and independent view
example, integrated Doxygen documentation and SDK CI coverage.

Validation: 123 SDK/native results and 214 live GUI assertions passed locally
on macOS arm64/Qt 6.9.3. Archived SDK 1.1 Data, 1.2 typed-event and 1.3 lifecycle
consumers remain compatible alongside two independent 1.4 view modules. Strict
public and implementation SDK Doxygen checks have zero warnings.
Give every accepted run and extension job a unique attempt identity, separate
cancellation requests from terminal outcomes, and publish bounded copied state
through optional V4 events and a consumer-local Qt signal adapter. Track actual
MDI focus and scoped dock/command state with validated runtime identities.

Guard native preparation, stale callbacks, reentrant UI creation and shutdown.
Install an activity example and add independent-consumer and native CI gates.
Integrate the contracts, ownership rules and examples into the GUI Doxygen site.

Validated locally on macOS arm64 with 191 core/native results and 289 live GUI
assertions, including archived SDK 1.1 through 1.4 modules and two SDK 1.5
consumers. Strict public/internal Doxygen checks emit no warnings.

This branch was successfully deployed

1 active (outdated) deployment
github-pages — 25a2fabf Deployed Oct 22, 2026 by cbuahin via deploy-docs #71
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.

2 participants