Release history

Changelog

User-visible additions, changes, fixes, and release milestones generated from the canonical project changelog.

All notable changes to A.T.O.M are recorded here. The project follows Semantic Versioning and this file follows Keep a Changelog.

Unreleased

Added

  • Add reproducible Ubuntu X11/Wayland native project-dialog qualification through the real GTK desktop portal, including Turkish paths, file identity and byte checks, and Save/Open cancellation.

Fixed

  • Refresh both production Alpine image pins to 3.24.4 with zlib 1.3.2-r1 for CVE-2026-85091, and check the built images' zlib security floor in CI.

0.13.1 - 2026-10-27

Added

  • Add a reproducible two-Cell Ankara planning walkthrough with a dataset-bound portable project, exact RF inputs, recorded baseline/recommendation/overlap trade-off and an API reproduction script; document separate Version, project and report preservation.

Fixed

  • Increase documentation landing-page guidance to 16px prose and 14px secondary text, and stack reference descriptions so long labels wrap without clipping.
  • Replace the documentation landing previews with a matched light/dark pair from the real two-Cell Ankara workflow, with source, dataset, request and image provenance.
  • Clarify report source identity, retained downloads, regeneration and project evidence limits; correct walkthrough propagation reach to normalized score units.
  • Reconcile the maintained roadmap with delivered features and explicit blockers, list all fourteen workspace tools, and separate the current API contract from deferred ideas and application release versions.
  • Update transitive frontend development dependencies undici to 7.30.1 and zod to 4.6.7 to clear the high-severity advisories reported by the CI security audit.
  • Make contribution guidance discoverable from the README and root CONTRIBUTING.md; repair Git LFS and Go/Vite setup, split-server readiness, Vitest/Playwright and Go checks, pinned documentation tooling, public links and the VERSION-based release workflow.

0.13.0 - 2026-10-22

Added

  • Add an opt-in desktop API sidecar control protocol: the host supplies inherited control pipes, the sidecar binds to loopback, reports lifecycle/readiness events, authenticates each request with a per-launch token and exact host/origin, and drains cleanly when the host closes the pipe. Default web, Docker, and CLI modes are unchanged; this is sidecar support, not a packaged desktop application.
  • Add a Figma-authored ATOM signal-path icon with scalable SVG, transparent and monochrome marks, a small-size favicon, PNG exports, and Windows ICO/macOS ICNS assets. Refresh the app, README and documentation icon and provide a reproducible export and validation script.
  • Redesign generated Markdown and printable reports around one semantic model: a decision summary with evaluation completeness, explicit KPI units and populations, deterministic interpretation, numbered collision-aware maps sampled to 300 RF segments, grouped common/reference RF profiles with per-Cell deviations, separated source/generator provenance and an engineering appendix. Add UTC timestamps and shared report filename stems, preserve retained artifact bytes and historical unknowns, document reading/print settings, and verify real A4 PDFs and accessibility. RF, optimization, score and persistence contracts are unchanged.
  • Show where two compatible network plans differ: Results → Compare offers Show where they differ for saved network Versions, the current network plan, or an optimization's baseline and solutions on the current dataset and model. A new POST /api/compare-network endpoint evaluates both plans (one protected RF request) and returns demand buildings newly served or lost and buildings whose overlap changed, with counts that reconcile exactly with the aggregate KPI deltas and a bounded building list. The map layer has a labeled legend, and reports include the counts and a static map.
  • Place and manage co-located multi-sector Cells as one site group: Inventory → Place site adds N Cells (default 0/120/240°, editable) at one map point that move together. Each remains an ordinary Cell in every request (sector azimuths are its default azimuth); editing one member changes only that Cell unless you apply its RF profile to the site, and Ungroup site restores independent Cells. Projects round-trip the optional siteGroupId/sectorAzimuthDeg fields without a file version change, and older files import unchanged.
  • Export a local review package for the current saved Version from Review → Report: one .zip with the HTML and Markdown reports, the project file, the report map and a manifest.json (file SHA-256 hashes, dataset and model identity, Version/Run lineage, limitations). It is generated in the browser with no RF request, checks its own manifest before downloading, follows the shareable filename rule, and refuses unsaved drafts with guidance to save a Version.
  • Report network KPIs inside one drawn area of interest: with Report KPIs inside the drawn area on, Evaluate and Optimize Network add served demand, residential buildings and overlap inside the area beside the network-wide values in Results and reports. The API gains an optional aoi polygon (validated like search_polygon) and stats.area_of_interest, a subset aggregation of the same per-building results; objectives, scores and the scenario fingerprint are unchanged.
  • Show a dismissible first-run card before any project work exists: one sentence on what A.T.O.M does, Run the pre-selected sector, Open sample network project and a Planning glossary link. The sample opens as a new project without changing existing work and selects the two Cells nearest the pre-selected sector, so Evaluate Network is one more click. Dismissal is remembered in this browser.
  • Add a keyboard-operable trade-off chart to Results → Solutions: plot the retained Pareto frontier on any two objectives (or the optimization score), see Recommended and Selected marked by shape and label, and inspect a solution by choosing its point without an RF request. A table lists the plotted solutions, and the solution list shows the top five with a Show all control.
  • Expose candidate Cell recommendation as an explicit Find an additional Cell action in Network mode (Propagation and Results → Candidates) that lists its prerequisites before you run it. Candidates keeps its own Results tab beside Solutions after a Pareto optimization, and Draw search area keeps the selected Cells instead of replacing them with the eight nearest. Candidate scoring and the request are unchanged.
  • Compare any two states from Results → Compare, even while a network result is shown: pick the current result, the optimization baseline or recommended solution, the inspected Pareto alternative, or any saved Version, and see KPI deltas, input differences and an A/B map switch in one view. Pairs with a different dataset or model version show an incompatibility notice instead of deltas, Baseline vs Recommended stays the default after an optimization, and Plan → Scenarios links to the same view.
  • Explain normalized network scores, Pareto trade-offs, local reranking and explicit apply/search actions with accessible Results help.
  • Define OpenAPI response schemas for readiness and batch experiment discovery, with shared response-contract fixtures checked against the existing handlers.
  • Explain a single-sector result before its metrics: one line built from the returned fields separates ray blockage from demand coverage gaps and names the receiver-sensitivity, planning-radius and building-service thresholds, with an "About these metrics" disclosure.
  • Bring completed results into view: Run Sector, Auto-Optimize Sector, Evaluate Network, Optimize Network and finished area selections fit the map to the selected Cells and their planning radius, unless you moved the map during the run; the Interference tool now summarizes a completed analysis with an Open in Results action.
  • Apply a Pareto alternative from an optimization run on an unsaved working draft: the Run's exact starting plan is saved as the source Version first (refused if Cells, RF settings or inventory changed), and Solutions marks the solution already loaded in the draft.

Fixed

  • Build with Go 1.26.10 to include the fix for GO-2026-6809 in crypto/x509, which govulncheck reports for Go 1.26.9.
  • Update the frontend build tooling to Vite 6.4.5 and Vitest 4.1.12 for the launch-editor command-injection and mock-registration advisories reported by npm audit.
  • Restore result context after a reload: the newest retained Run that computed exactly the restored plan (canonical request, dataset and model version, the same rule as applying a draft Pareto alternative) is shown as HISTORICAL with its summary, and a working draft offers Restore map layers as the only RF request. Saving a Version right after a matching run records that Run as its source in Version metadata, Results explains when no Run applies, live network evaluations no longer borrow an earlier optimization Run, and the command bar never shows Ready with UNAVAILABLE.
  • Give CSV Measurement Validation its own section in Review → Data instead of a collapsed Research disclosure, and rename the Analyze → RF Diagnostics campaign tool to Research campaign evidence so no two tools share the measurement-validation name. Boundary copy, the six-Cell limit and the explicit apply confirmation are unchanged.
  • Distinguish a planning-mode switch from an input change: switching Single ↔︎ Network without changing inputs shows a neutral OTHER MODE state naming the Result's mode instead of STALE, while any input change, and any identity or fingerprint mismatch, still shows STALE. Run labels lead with type · Cells · headline metric · time in the command bar, Results and Run history, with the Run ID kept in details. The header, Results and Scenarios share one Version-state wording ("No saved Version", "Version N", "Version N · Unsaved changes"). New Scenarios are named from the plan mode ("Sector plan N", "Network plan N"); existing names never change.
  • Keep map chrome out of map work at desktop sizes: the Map key fades and stops capturing clicks while you draw an area, place a Cell or pick a path endpoint, and scrolls instead of clipping; command-bar segments truncate instead of overprinting "RF details"; Results tabs wrap so every tab stays visible; a drawer heading focused on open is underlined instead of boxed. Linux screenshot baselines (light/dark × 1440/1280/1024) now cover first run, Results and Solutions.
  • Explain request failures with recovery steps: an unreachable API names its address and offers Retry for the startup loads, server errors keep their detail with retry guidance, the RF deadline (504) suggests retrying or reducing the plan, and unreadable responses are reported; out-of-range Setup values show inline errors with aria-invalid, and the invalid-profile prompt names and opens Setup or Inventory according to where the value lives.
  • Name report and project downloads <project>-<scenario>-v<N>-<yyyymmdd>[-report] instead of report IDs, drop the duplicated single-cell RF section and unconfigured constraint rows, replace inline SVG in Markdown reports with a pointer to the HTML/PDF report (which keeps the map), and show the same Scenario/Version/Run lineage on the Report source card and the stored Report.
  • Close the project menu with Escape and return focus to its trigger without closing the open tool, name the trigger after its project, use one "Save Version" label for the visible text, accessible name and progress, rename the command-bar cell-selection action to "Select 2+ cells", and add an axe accessibility smoke check for the project menu, Setup and Results.
  • Show result units exactly as produced (dBm, m), present a zero-gap result neutrally with an unavailable Worst Rx, use Cell instead of tower in selection, error and report copy, and state the nearest-to-centre rule when a drawn area holds more Cells than the network limit.
  • Carry an applied optimization solution's azimuths into the plan. Numeric Cell IDs let the previously saved azimuths win, so the next run used the old values; Versions applied before this fix now restore the solution azimuths.
  • Keep the Terminology tab visible across documentation pages and highlight it when selected.
  • Explain recovery after portable-project size and complexity limits, preserve current result context on rejected imports, and link to the unchanged format limits.

0.12.3 - 2026-10-16

Added

  • Add a planning glossary that distinguishes Cells, sectors, physical sites, tower records, candidate feasibility and dataset identity, linked from setup, inventory, first-use help and documentation navigation.
  • Add a roadmap and contribution-readiness audit, structured planning issue forms, and a scoped pull-request template.

Fixed

  • Make generated reference pages match the pinned Pandoc output for reproducible documentation builds.

0.12.2 - 2026-10-15

Fixed

  • Reconcile current product, model, accuracy, optimization and performance claims with the released planning scope; clarify independent network8/Recommendation5/Measurement6 and portable-evidence limits.
  • Repair five malformed OpenAPI Response Objects and enforce strict OpenAPI 3.1 validation with structural regression tests.
  • Disclose Measurement Validation's six-Cell limit before submission, prevent out-of-scope requests, and use neutral residual-bias review wording.
  • Present known RF Retry-After delays as recovery guidance without automatic retry or changes to request accounting.

Changed

  • Lead current documentation with a concrete baseline-to-recommendation planning task and classify current product docs separately from historical qualification, research and design evidence.

0.12.1 - 2026-10-09

Changed

  • Refresh the README for 0.12.1 capabilities, qualified eight-cell planning and independent workflow limits, with four current Ankara workspace screenshots.

Fixed

  • Wait for imported projects to finish saving and keep narrow tool drawers within their viewport.
  • Upgrade to Go 1.26.9 and golang.org/x/net 0.60.0 to include fixes for newly reported Go HTTP and HTTP/2 vulnerabilities.

Added

  • Add documentation appearance using the application palette and shared browser preference, with a sun/moon toggle, System appearance by default, and matching light and dark landing-page previews.

  • Promote normal network selection from six to eight Cells within the qualified Ankara W1/Profile A scope; bounded verified follow-ups allow the complete28-call analysis/optimization journey. Independent Recommendation5 and Measurement Validation6 limits remain.

  • Bounded verified RF follow-ups: retain 20 ordinary attempts per ClientIP/60s and prebook up to 8 shared verified follow-up units for network maps and Azimuth refreshes. Add one-time input-bound capabilities, finite expiry, cleanup, operational headers and legacy-server compatibility. The original implementation was validated at six Cells; the normal product cap is now eight within the separately qualified W1/Profile A scope.

  • Document the eight-Cell request-budget/workflow policy design, comparing alternatives and specifying a bounded verified-follow-up recommendation without implementing a limiter or changing the six-Cell product cap.

  • Record the clean successor eight-Cell qualification with verified pre-measurement real E2Es and a request-budget policy blocker; preserve the prior invalid audit, six-Cell product cap and fixed production policy.

  • Record the audit-only eight-Cell W1 operational and request-budget re-audit while preserving the six-Cell product cap and fixed production policy.

  • Record the independent W1 shipping-runtime reference qualification, preserving previous studies and fixed production policy.

  • Record the conservative fixed deployment profile study for the exact Ankara six-Cell workload envelope: no reference profile certified; preserve empirical HTTP evidence, operational headroom gates and unchanged fixed production policy.

  • Observe CPU, cgroup and memory constraints with provenance at startup; add local Auto profile diagnostics and controlled-container calibration while preserving fixed RF admission, deadlines, workers and scientific identities.

  • Document locked estimator validation on fresh Ankara domains and unchanged models: retain the invalid-validation decision, numerical failures, HTTP evidence and sustained-load limitations; keep Auto observation-only.

0.12.0 - 2026-10-08

Added

  • Promote normal selected-network planning from six to eight Cells within the frozen Ankara W1/Profile A qualification; retain independent Recommendation5 and Measurement Validation6 limits.
  • Enable complete eight-Cell workflows with20 ordinary attempts plus8 bounded verified follow-up units, preserving concurrency2/1, deadline60s, worker1/queue16 and existing RF science and persistence guards.

0.11.0 - 2026-10-04

Fixed

  • Make six-Cell result-bearing project exports importable using lossless columnar GeoJSON, retaining scientific results, Version provenance and independent imported identity mappings under bounded validation.
  • Preserve newly saved immutable Version history when a concurrently queued autosave contains the previous Scenario, retaining the latest working draft.
  • Persist Scenario Delete → Undo through captured callbacks and immediate reload by checking the latest workspace, restoring the active Scenario, and promptly committing writes on the reusable workspace database connection.

Changed

  • Export project file schema v3; continue importing valid v1/v2 files. Keep workspace schema v2, the 16 MiB file ceiling, and existing encoded JSON guards; add explicit 32 MiB / one-million-value decoded-content budgets.

0.10.2 - 2026-10-03

Changed

  • Give network optimization a stable, quiet busy action and delayed inline search scope plus elapsed time, with truthful long-running feedback and unchanged requests, search behavior, results, and deadlines.
  • Distinguish running network optimization from unavailable actions using a readable teal-accented surface, and compact its stable feedback reserve from 126 px to approximately 104 px.

0.10.1 - 2026-10-03

Fixed

  • Avoid retracing unchanged cells during network optimization with a bounded request-local cache of independent RF contributions; preserve the full search, scientific results, fingerprints and existing 60-second deadline.

  • Round RF rate-limit retry timing up to the actual window expiry, add hashed-client admission-denial diagnostics, and verify the six-cell Evaluate → Interference → Re-evaluate workflow within the unchanged 20-request budget.

0.10.0 - 2026-10-03

Added

  • Add locally persisted Light, Dark and System appearance, semantic dark shell tokens, and a native Alidade Smooth Dark basemap; preserve light rendering, RF palettes, camera, selection, result identity and explicit provider fallbacks. Include matched visual evidence and provider deployment guidance.

Fixed

  • Reduce RF ray stroke density in both themes without changing colors, geometry or counts; correct shared dark Interference/diagnostic action variants and deliberate disabled styling while preserving readiness and light action appearance.

  • Allow the exact Stadia Maps tile origin in the application's image CSP so Alidade Smooth loads in Go-served and container deployments while preserving OpenStreetMap support and all other directives.

Changed

  • Use Alidade Smooth as the default light raster basemap after matched overlay/context evaluation; keep muted OpenStreetMap selectable in Layers and keep basemap choice outside RF and project state.

  • Consolidate workspace typography, spacing, controls, panel headers, and stage menus; keep the primary Run/Evaluate action visible across tools and add relevant Results empty-state actions.

  • Quiet the OSM basemap and available Cells, center selected Cell order labels, distinguish active/selected/inspected/focused markers, and simplify header status and stage badges without changing RF, optimization, request, or persistence semantics.

0.9.3 - 2026-10-03

Added

  • Add sanitized real Ankara Concept 6A.1.1 ingestion, GNSS/radio QA, transmitter reconciliation, and blocked-readiness evidence without calibration or RF behavior changes.

Fixed

  • Update vulnerable frontend and Go module dependencies, move Go builds to 1.26.6, and refresh the Alpine 3.24 image digest to patched releases.

0.9.2 - 2026-09-27

Changed

  • Restructure workspace tools around clearer primary, secondary, and provenance details; add Plan > Scenarios, compact Run History list/detail, single-workflow RF Diagnostics research views, and denser optimization, Results, Data, Experiments, Building Entry, and Core Lab presentations without changing RF or persistence semantics.
  • Replace full-list Cell browsing with explicit Network, Map area, and Search / Filter working sets; separate Cell detail editing, keep browse selection outside RF state, and add reviewed batch edits for three validated scalar fields.

0.9.1 - 2026-09-24

Added

  • Add a read-only contextual inspector for map-linked Cells, Buildings, Interference samples, and existing map entities, with exact source/freshness context and direct Inventory and Path Profile actions.
  • Separate map Inspect and Select cells modes, preserve task state across supported panel layouts, and give area drawing, cell placement, and path endpoint selection priority over inspection.
  • Consolidate map chrome into interaction, result visualization, View context, and Layers controls; remove duplicate map popups, clarify Network selection guidance, and keep the compact interaction, View, and Layers controls reachable on phones.

Fixed

  • Keep retained Interference samples inspectable when switching map interaction modes and show unavailable values when the response lacks evidence.
  • Keep active Scenario lineage when draft and saved plan values differ only by object key order or map-only focus/ray scope.

0.9.0 - 2026-09-23

Added

  • Add local-first Concept 7D report artifacts with exact ScenarioRevision/Run lineage, SHA-256 verification, separate IndexedDB retention, historical Run generation, offline download, regeneration, corruption handling, and explicit cleanup/quota behavior.
  • Add local-first Concept 7E Scenario UX with explicit immutable Versions, draft/Save version semantics, Scenario switching, input diffs, branch and duplicate lineage, optimization application choices, friendly Run/Report navigation, and safe input-first comparison.
  • Add Concept 7G result freshness and source lineage across the workspace, Results, Run History, Reports, map legend, and optimization actions, with explicit stale/history safety, draft-source clarity, and accessible state labels.
  • Add Concept 7H RF configuration progressive disclosure, keeping Planning visible while grouping specialist and reference controls under Advanced and Research / reference without changing RF behavior or saved inputs.

0.8.0 - 2026-09-19

Added

  • Add opt-in deterministic_pareto_archive_search_v1 for bounded priority-independent Pareto candidate discovery, exact evaluated-state archiving, post-discovery priority reranking, deterministic discovery/ranking fingerprints, and Concept 5C audit artifacts; legacy and Concept 5B search policies remain available.
  • Add opt-in deterministic_multistart_coordinate_v1 network search with until-stable coordinate descent, deterministic starts, request-scoped memoization, evaluated-state archive/Pareto metadata, explicit budgets, and Concept 5B audit artifacts while preserving the legacy default.
  • Add Concept 4F.3A.5 diagnostic terrain-clearance primitive with radio-minus-terrain endpoint/sign/no-data/datum/interpolation contracts, NASADEM/FABDEM 432-path regression artifacts, and no canonical RF coupling.
  • Add Concept 4F.1 deterministic height-aware urban_short_range centerline obstruction with explicit OSM/levels/fallback provenance, conservative unknown-height NLOS, terrain-status metadata, multipart logical-building handling, shared ray/surface/interference/optimizer/building-entry integration, canonical audit evidence, and API/docs contracts.
  • Add Concept 4F.2 p526-single-edge-v1 diffraction diagnostics with independent P.526-16 reference fixtures, known-height obstruction ledgers, deterministic roof-edge selection, canonical UMa comparison, Fresnel separation, restrained Path Profile UI, and no network/optimizer/surface/interference/building-entry coupling.
  • Add Concept 4F.3A spatial-evidence foundations with explicit DTM/DSM and vertical-datum semantics, windowed GeoTIFF sampling, terrain path evidence, robust building-base/roof ledgers, source-independent external-height matching, conflict/precedence policies, deterministic fingerprints, Ankara readiness artifacts, diagnostic-only inspector routes, and no canonical RF coupling.
  • Add Concept 4F.3A.1 bounded Ankara external-height acquisition and matching pilot with exact Microsoft GlobalMLBuildingFootprints tile selection, raw checksums, input QA, normalized sidecar output, deterministic STRtree matching, source-agreement audits, diagnostic impact, reproducibility, and an honest NO-GO for numeric promotion when the active tiles contain no positive heights.
  • Add Concept 4F.3A.2 diagnostic-only GlobalBuildingAtlas GBA.Height Ankara acquisition with official index/tile checksums, CC BY-NC license gate, windowed raster sampling, deterministic extraction policy, height agreement and precedence audits, 432-path/P.526/P.1411/reflection readiness evidence, canonical-invariance ledger, and a measured NO-GO for 4F.3B numeric comparison.
  • Add Concept 4F.3A.3 Ankara ground-elevation evidence pilot with NASADEM primary-source audits, FABDEM research-only comparison, HGT/GeoTIFF sampling fixtures, exact tile checksums, robust perimeter building-base diagnostics, 432-path terrain profiles, explicit EGM96/EGM2008 datum gating, readiness artifacts, and no canonical RF coupling.
  • Add Concept 4F.3A.4 read-only terrain-clearance and vertical-datum validation with frozen 4F.3A.3 evidence, corrected signed-clearance diagnostics, endpoint/height/spacing/interpolation/no-data audits, EGM96-to-EGM2008 frame reconciliation, local-control and building-base evidence, representative profiles, canonical-invariance records, and a gated 4F.3B NO-GO decision.
  • Add Concept 4G.1 explicit conducted-power/EIRP semantics, absolute TX gain versus relative antenna-pattern attenuation, shared antenna evaluation, scalar RX gain and deterministic polarization-loss terms, a bounded 3GPP single-element reference preset, signed link-budget diagnostics, and compatibility regression evidence without adding array, beamforming, noise, or stochastic polarization behavior.
  • Add Concept 4G.2 deterministic receiver noise and sensitivity foundation with manual compatibility mode, opt-in kTB-based per-cell thresholds, strict link margin and usable-reach semantics, explicit bandwidth provenance, separate building/interference behavior, UI/API/report contracts, and canonical comparison evidence without adding PHY, MCS, throughput, or UE-conformance behavior.
  • Add Concept 4H.1 inspectable interference and radio-quality bookkeeping with raw received-carrier power, explicit serving selection, exact co-channel eligibility, linear desired/interference/noise ledgers, planning RSRP/RSRQ/SINR semantics, outage reasons, scenario fingerprints, API/report/UI diagnostics, and canonical compatibility evidence without coupling radio KPIs into optimization.
  • Add Concept 4H.2 optional interference-aware optimization with a fixed candidate-independent radio-quality domain, denominator-complete serviceability fraction, stable utility, Pareto/reranking/explainability/report/UI integration, explicit finite-horizon and policy metadata, 2.6 GHz support, 140 GHz unavailability, canonical disabled-mode invariance, and deterministic enabled-mode evidence without hard radio constraints, MCS, scheduler, or traffic simulation.
  • Add Concept 4I.1 read-only 140 GHz/sub-THz applicability audit with exact research_sub_thz baseline, clause-level ITU/3GPP reference ledger, independent atmospheric/material/diffraction fixtures, measurement transferability assessment, double-counting rules, and a gated 4I.2 roadmap without changing production RF behavior.
  • Add Concept 4I.2A opt-in sub_thz_atmospheric_reference_v1 with explicit P.525-5 FSPL, P.676-13 gas, P.838-3 rain, local-fog P.840-9 sensitivity, auditable ledgers, controlled fixtures, isolated API/UI workflow, and no canonical RF coupling.
  • Add Concept 4I.2B isolated ITU-R P.1411-13 Table 4 candidates with strict applicability gates, provenance, 140 GHz envelopes, median-only statistics, side-by-side comparison boundaries, diagnostics UI, API/docs contracts, and Ankara readiness artifacts.
  • Add Concept 4I.3 isolated measurement-evidence validation with versioned campaign/quantity/calibration provenance, applicability-first P.525/atmospheric/P.1411/reference adapters, censored and directional-basis handling, common-sample metrics, constant-bias-only diagnostics, deterministic spatial/site/campaign holdouts, metadata-only external evidence, synthetic controls, readiness gates, API/docs artifacts, and a restrained RF Diagnostics UI without canonical RF coupling.
  • Add Concept 4I.4 isolated P.2040-4 material/facade reference evaluation with strict Table 3 ranges, explicit electrical-property provenance, complex TE/TM slab coefficients, internal reflections, stable power ledgers, controlled fixtures, separate 80 dB comparison, optional material-characterization adapter, API/UI/docs contracts, and no canonical RF coupling.
  • Add Concept 4I.5A read-only 140 GHz specular-reflection geometry and composition audit with sourced image-method spreading, P.2040 interface/slab composition rules, direction-aware antenna and TE/TM requirements, finite facade/height/roughness/visibility gates, Ankara readiness counts, controlled derivations, and an isolated 4I.5B reference-only contract without production RF coupling.
  • Add Concept 4I.5B isolated single_bounce_specular_reflection_reference_v1 with explicit image-source geometry, finite-facade and vertical gates, TE/TM P.2040 interface/slab coefficients, roughness/Fresnel/far-field evidence, independent two-leg visibility, one-path P.525 spreading, reflected-path link-budget diagnostics, API/UI/docs contracts, and controlled 140 GHz invariance fixtures without canonical or network coupling.

0.7.0 - 2026-09-17

Added

  • Add Concept 4E building-entry analysis for deterministic 2.6/28 GHz service estimates immediately inside representative facades, with standard-derived low/high O2I scenarios, material-data auditing, one batched API request, RF-aware caching, and restrained Analyze/report surfaces.

Changed

  • Replace network optimization's arbitrary raw weighted score with stable 0–1 objective utilities, normalized importance priorities, a 0–100 composite score, raw metric preservation, contribution breakdowns, and preference-ranked feasible Pareto solutions.
  • Scope demand and residential normalization to a deterministic selected-cell radius-union domain, report unavailable objectives as N/A with effective weights, and present the legacy coverage objective as propagation reach.
  • Add lazy per-cell Pareto explanations that compare a selected solution with a single baseline-reverted counterfactual in the same target domain, preserving raw metric deltas, direction-aware interpretation, feasibility evidence, and priority-only score re-ranking.
  • Redesign generated Markdown/HTML planning reports around network scope, authoritative recommendations, baseline/Pareto evidence, evaluated cell explanations, conditional interference summaries, and concise report-only maps.
  • Clarify report priorities as relative 0–100 values, distinguish unconfigured hard constraints, humanize optimization-domain labels, and omit universally unavailable PCI columns.
  • Add map-first RF display controls for received-power surfaces, scoped/hidden propagation rays, and independent selected-cell focus without launching new RF work.

Fixed

  • Keep six-cell network selections unique, visible, and capped across map, area, restore, recommendation, and undo flows.
  • Restore automatic GitHub Pages deployment from the current static documentation so changelog updates on main reach the published site.

0.6.0 - 2026-08-02

Added

  • Add a unified map key, visible local-save status, and recoverable deletion controls.

Changed

  • Reorganize the frontend into four labeled workflow stages with contextual tool navigation and run actions, stronger text contrast, and clearer focus states.
  • Standardize RF unit and unavailable-value formatting, replace side-stripe status treatments, and align drawer, layer, and result transitions to one reduced-motion-safe timing system.

Fixed

  • Keep drawer headers and tool tabs fixed while long tool bodies scroll, preventing active-tab borders from being clipped by the content boundary.
  • Keep every workspace destination reachable in a single mobile navigation row without pushing tools below the viewport.
  • Pin documentation generation to Pandoc 3.10 so CI reproduces the committed reference pages exactly.
  • Copy every Core Lab adapter Go source into the container build so lifecycle helpers are linked into the release image.

0.5.0 - 2026-07-31

Added

  • Add an inspectable 2.5D point-to-point path profiler with optional COG/GeoTIFF terrain, building heights, LOS/Fresnel classification, single knife-edge diffraction, material-aware penetration, environmental sensitivity terms, uncertainty ranges, and an interactive vertical cross section.
  • Add asynchronous batch experiment matrices with cancellation, deterministic dataset/model fingerprints, bounded caching, a headless CLI, progress UI, scenario tables, and Pareto evidence.
  • Add configurable network objectives, weights, hard constraints, feasibility evidence, and non-dominated azimuth solutions while keeping unsupported tilt, power, candidate-site, cost, fiber, and permitting inputs explicit.
  • Add spatially blocked five-fold calibration validation, spatial-diversity rejection, per-cell/per-band and distance/obstruction residual summaries, robust outlier flags, uncertainty quantiles, confidence intervals, and campaign provenance/expiration support.
  • Add regular-grid analytical coverage surfaces, marching-square isolines, opacity and display-threshold controls, plus GeoTIFF, contour GeoJSON, and CSV exports.
  • Add OGC API Features-style, viewport-bounded building queries with pagination and GeoJSON/CSV representations so clients need not transfer the full building dataset.
  • Add a persistent cell Inventory workspace with manual map placement, dragging, duplication, deletion, bounded CSV/GeoJSON import, search, validation, and independent per-cell RF profiles across propagation, network, interference, recommendation, measurement, and report workflows.
  • Add Dataset Pack Studio for arbitrary-region source inspection, geometry repair, reprojection/cropping, schema-v2 manifests, hashes, provenance/licenses/confidence, QA evidence, and optional terrain, clutter, building-height, and material layers.
  • Add a local installed-dataset catalog and atomic manifest-ID switching that retains the active immutable pack on validation failure, with optional administration-key protection.

Security

  • Upgrade brace-expansion to 5.0.8, require Go 1.26.5 for both services, and align container builder tags with the patched toolchain.
  • Reject measurement CSV files above 2 MiB before reading them into browser memory while retaining the independent 5,000-sample limit.
  • Add weekly npm dependency updates, a high-severity frontend advisory gate, and matching govulncheck coverage for the Core Lab adapter.
  • Require constant-time API-key authorization for Core Lab scenario mutation at both the public backend route and the private adapter hop.
  • Run the Core Lab adapter as a non-root user with a read-only filesystem, no Linux capabilities, no privilege escalation, and no host-published port.
  • Bound imported project files to 16 MiB and deeply validate scenario counts, nesting, collection sizes, strings, and nested snapshot types before persistence.
  • Limit recommendation search polygons to 256 coordinates before candidate point-in-polygon evaluation.
  • Add restrictive browser security headers, HTTPS-aware HSTS, and an opt-in transport requirement for deployments behind a TLS gateway.
  • Keep adapter response bodies, dataset filesystem paths, and detailed load failures in server logs instead of returning them to API clients.
  • Reject unknown or trailing JSON input across backend RF routes and Core Lab scenario mutation without exposing parser diagnostics.
  • Bound frontend JSON response parsing to 32 MiB using both Content-Length checks and streaming byte accounting.
  • Stream building GeoJSON features into the spatial index instead of retaining the full encoded file and decoded collection together, with explicit manifest, tower, and building file ceilings.
  • Resolve dataset file symlinks before containment checks so manifests cannot escape the configured dataset directory.

Removed

  • Remove duplicate root copies of propagation screenshots and keep the documentation asset paths canonical.

Changed

  • Upgrade project files and dataset manifests to schema v2 with backward-compatible v1 import/loading migrations.
  • Include resolved per-cell RF profiles and dataset QA/provenance in reproducibility outputs and planning reports.
  • Extract frontend workspace formatting/state helpers and backend RF/segment geometry math from the application and simulation monoliths into focused, tested modules.
  • Refresh Open5GS reachability outside the adapter cache mutex, serve stale probe state during refresh, and treat HTTP client/server failures as disconnected.
  • Remove redundant RF convenience APIs that created background contexts and silently discarded computation errors.
  • Drain in-flight backend and Core Lab adapter requests on interrupt or termination signals with a bounded graceful-shutdown window.
  • Consolidate report escaping, numeric/Markdown formatting, and printable table construction behind one tested utility.

Fixed

  • Keep focused-drawer actions in normal layout flow so the propagation optimizer cannot overlap the vertical path-profile panel.

0.4.0 - 2026-07-30

Security

  • Pin container base images by digest, lock Python dependencies and hashes, review pull-request dependency changes, scan production images, and publish release SBOM and provenance attestations.
  • Upgrade backend and adapter builds to Go 1.26, frontend and CI builds to Node.js 24 LTS, and runtime containers to Alpine 3.24 so maintained toolchains provide current security fixes.
  • Protect the full building-dataset response with strong ETag caching, conditional 304 responses, separate global and per-client transfer budgets, and optional origin API-key authentication.
  • Bound segmented simulations to 25,000 estimated and actual GeoJSON features, reject oversized ray/radius combinations before allocation, and cancel parallel ray workers if building splits exhaust the shared feature budget.
  • Pin every external GitHub Action to an immutable commit SHA, stop checkout from persisting release credentials, and enforce pinned workflow dependencies in CI.
  • Upgrade golang.org/x/net to v0.57.0 and its security-sensitive transitive modules, add govulncheck to backend CI, and enable weekly Go module updates.

Fixed

  • Serialize browser workspace commits, arbitrate IndexedDB and fallback copies by persistence revision, and reserve local storage for failed primary writes instead of duplicating every payload.
  • Store recommendation details once in the canonical response array and reference them from GeoJSON features by stable feature ID, including compaction of legacy scenario artifacts.
  • Generate backend, Core Lab adapter, and frontend scenario/RF policy bindings from one canonical source, and share one tower input type across RF endpoints.

0.3.0 - 2026-07-26

Fixed

  • Compute sector propagation and coverage gaps from one shared ray-profile pass instead of launching duplicate frontend requests.
  • Remove the tracked OSMnx response cache and exclude regenerated pipeline caches from Git and Docker build contexts.
  • Protect expensive RF routes with per-client concurrency and request budgets, optional API-key authentication, computation deadlines, and deep-loop cancellation.

0.2.0 - 2026-07-24

Added

  • Add keyboard-accessible full-site search to the static documentation website.
  • Publish the canonical project changelog as a searchable documentation page.

Removed

  • Remove the academic report PDF and its documentation-only source and build assets.

Fixed

  • Bound Core Lab cluster identifiers and scenario bodies to prevent topology, session, and event fan-out exhaustion.
  • Bound RF tower identifiers to prevent small measurement and interference requests from amplifying into multi-gigabyte JSON responses.
  • Persist the saved scenario a user opens, and detach the draft from that baseline when its planning inputs change.
  • Prevent stale map layers from being stored with changed inputs or input-only recommendation scenarios.
  • Assign new nested scenario IDs when projects are duplicated or imported so cache entries cannot collide.
  • Restore the local-storage backup when IndexedDB is available but does not contain a workspace record.
  • Mirror successful workspace saves to local storage so the fallback does not silently age behind IndexedDB.
  • Compare dataset hash maps independently of JSON object key order.
  • Score candidate recommendations from the active optimized per-cell azimuths instead of reverting to the global baseline azimuth.
  • Invalidate old RF and residual layers when applying a measurement-derived calibration offset.
  • Include dataset hashes in calibration compatibility checks so changed dataset content invalidates an old profile.
  • Preserve per-cell azimuths through network evaluation, optimization, saved scenarios, and recommendation application.
  • Align the Markdown documentation entry point with the maintained static docs hub, current version, and model limitations.

Changed

  • Establish a canonical VERSION file, automated version checks, release-note generation, and tag-driven GitHub Releases.
  • Publish the latest container tag only for stable releases, never prerelease tags.

0.1.0 - 2026-07-17

Added

  • Deterministic sector, network, optimization, interference, recommendation, and measurement-validation workflows.
  • Focused map workspace with projects, saved scenarios, comparison, reports, dataset metadata, and optional 5G Core communication paths.
  • Go API resource controls, validated dataset packs, OpenAPI documentation, responsive browser tests, and multi-architecture container publishing.