Fix #2761 (recovered after Claude Code exited before committing)#2778
Closed
aethersdr-agent[bot] wants to merge 1 commit into
Closed
Fix #2761 (recovered after Claude Code exited before committing)#2778aethersdr-agent[bot] wants to merge 1 commit into
aethersdr-agent[bot] wants to merge 1 commit into
Conversation
7 tasks
Collaborator
|
Claude here — closing as incomplete recovery. The PR title's "(recovered after Claude Code exited before committing)" was accurate but the recovery captured only the API-surface additions, not the implementation wiring. Specifically:
Closing rather than patching on top — going to redo the full integration locally to keep the implementation cohesive across the four touch points. Will open a fresh PR shortly. 73, Jeremy KK7GWY & Claude (AI dev partner) |
auto-merge was automatically disabled
May 17, 2026 01:31
Pull request was closed
7 tasks
ten9876
added a commit
that referenced
this pull request
May 17, 2026
…2784) ## Summary Implements [the plan from #2761](#2761). Replaces incomplete agent attempt #2778 (which committed the API surface without the implementation wiring). When a slice tunes near a pan edge, the existing **Pan Follows VFO** machinery slides the pan center so the slice stays visible. But the VFO flag panel hanging off the slice marker is fixed-width — the slice can be well inside the trigger boundary while the flag panel is already clipping the pan edge. Split pairs (LockLeft + LockRight on the same marker, #2663 / #2744) are particularly affected: PR #2744 intentionally accepted that the outward-facing flag clips and documented \"the user pans toward center to read it\" as the workaround. This change removes that workaround by treating the **flag's outer edge** as the trigger reference, not the slice frequency. ## What changes - \`revealFrequencyIfNeeded\` gains \`leftFlagEdgeOffsetMhz\` / \`rightFlagEdgeOffsetMhz\` defaulted to \`0.0\`. Only consumed on the \`IncrementalTune\` path — \`CommandedTargetCenter\` / \`RevealOffscreen\` ignore them. - Offsets are clamped to 95% of \`triggerDistanceFromCenter\` so tiny panadapters where flag-width > trigger-margin don't oscillate the pan around the slice. - \`panFollowVfo\` now computes flag-width-in-MHz from the bound \`VfoWidget\` (\`width() * (bandwidthMhz / specPixelW)\`) and threads it through: - **Split pair** (\`SpectrumWidget::sliceHasSplitPartner\` returns true): both offsets non-zero — extends the trigger on both sides since LockLeft + LockRight flags render on both sides simultaneously. - **Single-flag slice**: only the side where the flag currently renders (per \`VfoWidget::onLeft()\`). - **Collapsed / compact-mode flag**: both offsets stay 0.0 — compact mode doesn't render a wide flag. ## Files | File | Change | |---|---| | \`src/gui/MainWindow.h\` | \`revealFrequencyIfNeeded\` signature + comment | | \`src/gui/MainWindow.cpp\` | Implementation: clamp + apply offsets in the trigger comparison; \`panFollowVfo\` computes offsets from VfoWidget state | | \`src/gui/SpectrumWidget.h\` | \`sliceHasSplitPartner(int)\` accessor | | \`src/gui/SpectrumWidget.cpp\` | \`sliceHasSplitPartner\` implementation (scans \`m_sliceOverlays\` for the slice + checks \`splitPartnerId\`) | | \`src/gui/VfoWidget.h\` | \`onLeft()\` accessor exposing the existing \`m_lastOnLeft\` state set by \`updatePosition\` | Net: **85 insertions / 9 deletions** across 5 files. ## Local verification - [x] Build clean (\`cmake --build build --target AetherSDR\`) — 401/401 link, only pre-existing warnings - [x] Test-target link audit: none of the touched headers are linked by isolated test targets — the new \`onLeft()\` accessor and \`sliceHasSplitPartner()\` accessor are GUI-only and only consumed from MainWindow.cpp. No CMakeLists changes needed. ## Test plan (manual, post-merge) - [ ] Tune a slice toward a pan edge with a wide VFO flag visible — pan should slide *before* the flag clips - [ ] In split mode (LockLeft + LockRight on the same marker) — pan should slide before *either* flag clips - [ ] Non-flag callers (Memory recall, click-to-tune absolute jump) — no behavior change (CommandedTargetCenter ignores the offsets) - [ ] Compact-mode (collapsed) flag — falls back to original slice-frequency comparison - [ ] Toggle \`View → Pan Follows VFO\` off — pan does not slide at all (existing override preserved) ## Closes - Closes #2761 - Closes-as-replacement for #2778 (incomplete recovery) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #2761
What was changed
Fix #2761 (recovered after Claude Code exited before committing)
Files modified
src/gui/MainWindow.hsrc/gui/SpectrumWidget.cppsrc/gui/SpectrumWidget.hsrc/gui/VfoWidget.hGenerated by AetherClaude (automated agent for AetherSDR)