Skip to content

fix(ui): fill host pane + show controls when hosted in the Suite - #15

Merged
VU3ESV merged 1 commit into
mainfrom
fix/plugin-fill-and-inline-controls
Jun 4, 2026
Merged

fix(ui): fill host pane + show controls when hosted in the Suite#15
VU3ESV merged 1 commit into
mainfrom
fix/plugin-fill-and-inline-controls

Conversation

@VU3ESV

@VU3ESV VU3ESV commented Jun 4, 2026

Copy link
Copy Markdown
Owner

Problem

When hosted out-of-process in the Amateur Radio Suite, this plugin (1) didn't fill the host pane — content floated undersized in a band with empty space — and (2) showed no controls (the connection badge, mode/backend picker, and connection + setup buttons were missing). Antenna/BPF render fine because their controls are reachable via a navigation container / inline; this plugin put them only in .toolbar.

Cause

  • Fill: ContentView constrained with only minWidth(/minHeight) and meterPane used .frame(maxWidth: .infinity, alignment: .top) with no maxHeight — so it sized to content and the host centered it.
  • Controls: SwiftUI .toolbar items render in the window title bar. A hosted .appex has no window, so they vanish (NavigationStack doesn't help on macOS — it also defers to the window).

Fix

  • Add maxWidth: .infinity, maxHeight: .infinity so the content fills the pane (top-anchored).
  • Add an embedded flag: the extension entry point passes embedded: true, and ContentView renders the same controls inline (embeddedToolbar) instead of relying on the window toolbar. The standalone app (embedded: false) keeps its window toolbar unchanged.

Verified

Built locally and hosted in the Suite: the UI now fills the pane and the inline control bar (connection badge · picker · connection + setup buttons) renders, matching the standalone window. Standalone app unaffected. swift build clean.

🤖 Generated with Claude Code

Two issues when LP-700 runs out-of-process inside the Amateur Radio Suite:

1. The UI didn't fill the host pane — ContentView used only minWidth/minHeight
   and meterPane used .frame(maxWidth: .infinity, alignment: .top) with no
   maxHeight, so it floated undersized. Add maxWidth/maxHeight .infinity so it
   fills and top-anchors.

2. The toolbar controls (connection badge, backend badge, connection + SETUP
   buttons) were invisible — SwiftUI `.toolbar` items render in the window title
   bar, which a hosted .appex doesn't have. Add an `embedded` flag: the
   extension passes embedded: true and ContentView renders the same controls
   inline (embeddedToolbar); the standalone app keeps its window toolbar.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@VU3ESV
VU3ESV merged commit 9dd88d9 into main Jun 4, 2026
1 check passed
@VU3ESV
VU3ESV deleted the fix/plugin-fill-and-inline-controls branch June 4, 2026 19:24
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