Skip to content

fix(rate-ui): keep moving subjects framed by default - #4303

Closed
d-sorgcodexagent[bot] wants to merge 5 commits into
fix/rate-mobile-tools-menufrom
fix/rate-pyqt-default-camera
Closed

fix(rate-ui): keep moving subjects framed by default#4303
d-sorgcodexagent[bot] wants to merge 5 commits into
fix/rate-mobile-tools-menufrom
fix/rate-pyqt-default-camera

Conversation

@d-sorgcodexagent

@d-sorgcodexagent d-sorgcodexagent Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add one DRY, shared moving-subject camera initializer in Python and TypeScript
  • start PyQt6 Swing/Flight and React Club/Flight at 2x zoom with bounded tracking and Auto Fit enabled
  • preserve neutral defaults for static viewports and preserve independent user disable, manual-orbit suspension, snap views, and re-centering
  • update the active camera contract and all three durable handoffs in the implementation commit

Continues #4300 under epic #4218 and builds on camera issue #4284.

Exact stack evidence

No existing PR base was changed or retargeted.

Verification

  • focused Python/PyQt camera/layout/simulation suite: 49/49
  • full React suite: 111 files / 673 tests
  • desktop + constrained 2x-DPR Chrome Playwright: 6/6
  • TypeScript: pass
  • zero-warning ESLint: pass
  • production Vite build: pass
  • pinned MyPy 1.13 on four changed Python production files: pass
  • Ruff check/format and git diff --check: pass
  • campaign manifest validator: pass
  • campaign and launcher manifest contracts: 14/14
  • native Windows inspection: Swing opens at a useful tracked scale and remains in-frame through playback

Contract boundary

This changes camera presentation defaults only. Physics, frames, trajectories, geometry, result schemas, solver outputs, and persistence are unchanged. Tracking and Auto Fit remain independently reversible; manual orbit still suspends tracking and Re-center restores it.

Release boundary

This is draft evidence only. Protected CI, required review, parent integration, UpstreamDrift consumers, remaining #4300 layout work, and ordinary release remain open. Do not close #4300, #4284, or #4218 from this PR alone.

Current-parent reconciliation

Exact head 98cf359 normally preserves the original camera child first and current #4301 head c653f9f second. Independent exact-head review verified a 17-file intended delta, 49 PyQt tests, 673 React tests, six desktop/high-DPI Playwright cases, and all documented static/governance gates. Fresh protected CI and review remain required.

# Conflicts:
#	docs/development/RATE_OF_CLOSURE_CAMPAIGN_HANDOFF.md
@dieterolson

Copy link
Copy Markdown
Collaborator

Superseded by #4466, which consolidates all 43 open src/rate_of_closure PRs into one
branch. Closing this one is measured, not assumed: verify_coverage.sh reports
safe=43 NOT-covered=0 against consolidated/rate-closure-remainder-2026-08-13, so this
PR's head is contained and nothing here is dropped.

Stacks were folded top-down (each child into its own parent, then the parent upward), so
non-tip work is included rather than skipped — including 8067ca79a (#4171, CAD export
artifact validation) and f9afa9d96 (#4309, strict ground result playback), each of which
lived in exactly one PR and is absent from its stack tip.

The consolidation also repairs defects the merge exposed, listed in #4466: two unguarded
datetime.UTC imports that break the Python 3.10 lane, a PyQt module registry that could no
longer construct the main window, the club-assembly binding and STL/sidecar controls that had
been dropped from the wired tree, and a filelock dependency that would have failed
tests (3.11) at collection.

Reopen this PR if you need its branch; the branch itself is untouched.

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