Skip to content

release: v6.1.0 — 3D-render fixes + AV/EDR packaging fix - #50

Merged
RFingAdam merged 7 commits into
mainfrom
release/v6.1.0
Jul 30, 2026
Merged

release: v6.1.0 — 3D-render fixes + AV/EDR packaging fix#50
RFingAdam merged 7 commits into
mainfrom
release/v6.1.0

Conversation

@RFingAdam

Copy link
Copy Markdown
Owner

Summary

Rolls up everything currently on release/v6.1.0 into main for the v6.1.0 release:

Full notes: RELEASE_NOTES.mdVersion 6.1.0, CHANGELOG.md[6.1.0].

Merge order

This PR will pick up #49's commits automatically once #49 merges into release/v6.1.0 — no need to wait, GitHub will keep the diff in sync.

Test plan

  • tests/test_3d_scaling_fixes.py covers the 3D-render fixes
  • Merge build: disable UPX, add PE version resource, drop stale hidden import #49 into release/v6.1.0 first
  • Merge this PR into main
  • Tag main as v6.1.0 and push the tag to trigger release.yml (builds Windows/Linux, Inno Setup installer, publishes the GitHub Release)
  • Re-test the Windows install against Cylance with the new unsigned-but-unpacked-and-versioned exe

RFingAdam and others added 7 commits June 26, 2026 13:35
The shared 3D scaling machinery (equal symmetric axis limits +
set_box_aspect([1,1,1])) was verified to render true proportions — a sphere
renders as a sphere in both passive and active routes. This fixes one
data-selection bug and hardens the degenerate-input paths.

- save: active H-pol/V-pol 3D saves passed total power; now pass
  h_power_dBm_2d / v_power_dBm_2d (matches the already-correct GUI path)
- plotting: plot_passive_3d_component is NaN-robust + guards the constant-gain
  (max==min) division-by-zero, mirroring the active route
- plotting: _setup_3d_axes guards flat/all-NaN extents (no lim=0 / lim=NaN
  box collapse)
- refactor: process_data returns (grid, theta, phi) only; the dead Cartesian
  X/Y/Z + db_to_linear radius (discarded by every caller) are removed
- cleanup: drop the dead gain_normalized local and the vestigial
  shadowing_enabled / shadow_direction params (shadowing is applied to the
  gain data upstream; the overlay was never wired up)
- tests: add tests/test_3d_scaling_fixes.py (per-pol save, NaN/constant-gain
  robustness, degenerate axes, process_data contract)
- bump version 6.0.0 -> 6.1.0

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
mcp 2.0.0 was just published on PyPI and restructured the package,
dropping mcp.server.fastmcp. The unbounded mcp>=1.0.0 pin let CI
resolve to it, and pytest aborted collection for all 32 test files
on the single broken import in test_v52_rf_tools.py.
matplotlib now hard-errors on matplotlib.use("TkAgg") in headless
environments (no display) instead of silently deferring the failure.
Every module that force-selects TkAgg at import time broke CI test
collection as a result, since importing plot_antenna transitively
triggers all of them. Falls back to Agg when TkAgg can't load;
real desktop usage is unaffected.
The process_data() call reformatted in 991878e was never actually run
through black, so the CI formatting gate has been red since that
commit landed — just masked because pytest collection was failing
first for unrelated reasons.
…#49)

* build: disable UPX, add PE version resource, drop stale hidden import

RFlect's Windows exe was getting flagged by Cylance/EDR on every
release. Root causes in RFlect.spec: UPX-compressed onefile build with
no PE VERSIONINFO resource and no code signing — a textbook
PyInstaller false-positive pattern.

- upx=False: UPX packing is a well-known AV/EDR heuristic trigger
- version='version_info.txt': embeds Company/Product/FileVersion
  metadata in the exe's PE header (Windows-only; PyInstaller ignores
  this on Linux/macOS with just a log warning, confirmed against
  building/api.py, so the Linux CI job is unaffected)
- drop the stale 'anthropic' hidden import left over from the removed
  in-app AI/LLM stack

Code signing (the other half of the fix) is tracked separately.

* docs: release notes for v6.1.0 (3D fixes + AV/EDR packaging fix)

Adds the Version 6.1.0 section to RELEASE_NOTES.md (it was missing —
the release workflow's changelog auto-extraction falls back to a
generic stub when no matching "## Version X.Y.Z" header exists, which
is what happened for v6.0.0). Also documents the packaging fix in
CHANGELOG.md and flips the 6.1.0 header from Unreleased to today's
date.
@RFingAdam
RFingAdam marked this pull request as ready for review July 30, 2026 17:43
@RFingAdam
RFingAdam merged commit 156391a into main Jul 30, 2026
6 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