The dropdown height defaulted to screenCap before the content was measured, and the ScrollView frame had no alignment, so an unmeasured panel rendered at nearly full screen height with the content centered in it (macOS then centered the oversized window). Default to a modest height until measured and pin the frame to .top, so the popover anchors under the menu bar and sizes to its content, scrolling only on genuine overflow.
CCS Bar (macOS)
Native SwiftUI menu bar app for CCS. A thin client of the CCS local web-server: it glances per-account quota, cost and tier, and performs account control (pause/resume, set default, solo, tier-lock) from the menu bar.
The app never talks to a provider directly. Every call goes to localhost, and
CCS performs any provider fetch server-side. Opening the menu fires a debounced
force-refresh so the glance reflects live data without blocking the UI.
Layout
Sources/CCSBarCore— pure Foundation logic (no SwiftUI): API client, discovery handshake, models, formatting, refresh debounce. Fully unit-tested.Sources/CCSBarApp— SwiftUIMenuBarExtraapp: view-model + views.Sources/CCSBarCheck— runnable assert harness used in place of XCTest (XCTest ships with full Xcode; this builds on a CommandLineTools toolchain).
Build and test
Requires a Swift 5.9+ toolchain (CommandLineTools is enough; full Xcode not required for build/test).
swift build # build all targets, including the app
swift run ccs-bar-check # run the logic tests (exits non-zero on failure)
Discovery
The app reads ~/.ccs/bar.json (written by ccs bar launch):
{ "baseUrl": "http://127.0.0.1:3000", "port": 3000, "authMode": "loopback" }
v1 supports authMode: "loopback" only (dashboard auth disabled, localhost).
Packaging
Scripts/package_app.sh assembles CCS Bar.app from a release build and signs
it. v1 uses ad-hoc signing (CCS_BAR_SIGNING=adhoc, the default); users open it
the first time via right-click then Open, or clear quarantine with
xattr -dr com.apple.quarantine "/Applications/CCS Bar.app". Developer ID
signing + notarization (CCS_BAR_SIGNING=developer-id) is the public-launch
path and is not required for ad-hoc distribution.