mirror of
https://github.com/dredx/prole.git
synced 2026-09-23 12:03:59 +00:00
- Default to Application Window mode with full app menu; status bar overlay remains available - Restore clickable startup Splash Tip (5s) with animated GIF and live counter; use light theme (Aqua) - Status bar item: monospaced "P" icon; left click shows overlay (status mode) or main window (app mode) - Overlay: add Maximize button (□) to toggle back to main window; keep click‑through elsewhere - Global hotkey Cmd+Opt+Shift+P toggles modes; Prole menu item mirrors the same toggle and updates title dynamically - Application menu (Prole): Show Status Bar / Show Main Window (contextual), Refresh Now, Quit - Application Window layout: non‑scrolling, vertical 1‑line rows (svc, k3s aggregate, local) with top‑right timestamp; bottom‑left controls (⟳ Refresh, _ Minimize) - Parameterize endpoints via `prole.properties` (bundled + user override). Replace legacy raspberry with retropie defaults - ServiceChecker + UI read endpoints from Config loader; tooltips/labels reflect configured hosts/ports - Build script: generate `Info.plist` with `LSUIElement=false`; bundle resources (`prole-type.gif`, `prole.properties`); ad‑hoc codesign. Universal build supported - Documentation: rewrite README with technical build/run/config details and operational posture Files: - proleStatus/Sources/: AppDelegate.swift, OverlayWindow.swift, StatusView.swift, StatusItemController.swift, SplashTipWindowController.swift, MainWindowController.swift, AppStatusView.swift, ServiceChecker.swift, Config.swift - proleStatus/build.sh - proleStatus/prole.properties - proleStatus/README.md Notes: - Build verified via `./build.sh build` (arm64). App starts in App Window mode with light theme; menu + hotkey + overlay toggle operate as intended |
||
|---|---|---|
| .. | ||
| dist/ProleStatus.app/Contents | ||
| Sources | ||
| build.sh | ||
| prole.properties | ||
| README.md | ||
#####################################################
# ╭───────────────────────────────────────────────╮ #
# │ _ ___ _ _ │ #
# │ _ __ _ _ ___| |___/ __| |_ __ _| |_ _ _ ___ │ #
# │ | '_ \ '_/ _ \ / -_)__ \ _/ _` | _| || (_-< │ #
# │ | .__/_| \___/_\___|___/\__\__,_|\__|\_,_/__/ │ #
# │ |_| │ #
# ╰───────────────────────────────────────────────╯ #
#####################################################
Prole — macOS status and control surface for Prole endpoints, with a path to an integrated virtual workstation harness.
Overview
- Prole provides live reachability and latency signals for Prole service endpoints. It operates in two modes: a regular application window for situational awareness and a minimalist status‑bar overlay for persistent at‑a‑glance status.
- The application will evolve to include a virtual workstation surface to coordinate work across a network of Prole‑linked LLMs. The current scope is operational visibility and control of endpoints.
Supported platform
- macOS 12.0+ (Monterey or newer) on Apple Silicon (arm64) and Intel (x86_64). Universal builds are supported by the build script.
Execution environment requirements (runtime)
- No external daemons or brew packages are required to run the built app bundle.
- Network access to the configured endpoints.
Build environment requirements
- Xcode Command Line Tools (swiftc, xcrun). Install if needed:
xcode-select --install - System tools used by the build:
iconutilandsips(for.icnsgeneration)codesign(ad‑hoc signing)plutil(plist formatting, via xcrun if needed)
Repository layout (subset)
prole-app/— macOS app sources and build systemSources/— Swift sources (AppKit)build.sh— hermetic CLI build producing a.appbundleprole.properties— default endpoint configuration (bundled into Resources)dist/Prole.app— build output
Build script
- The build is driven by
prole-app/build.sh. Typical usage:cd prole-app ./build.sh build # build for host arch ./build.sh run # build (if needed) and open the app ./build.sh build-universal # produce a universal (arm64+x86_64) binary ./build.sh debug # run in foreground with verbose logs ./build.sh clean # remove build artifacts ./build.sh package # zip dist/Prole.app into dist/Prole.zip
What the script does
- Compiles all Swift sources with
swiftc(AppKit, Carbon, Network frameworks). - Generates
Contents/Info.plistwithLSUIElement=falseso the app can present a standard menu when in Application Window mode. - Generates an application icon (
Prole.icns) and a template status glyph as needed. - Copies resources:
www/images/prole-type.gif→Contents/Resources/prole-type.gif(for the startup tip splash)prole-app/prole.properties→Contents/Resources/prole.properties
- Performs ad‑hoc code signing of the
.appbundle.
Alternate build path (installer UI)
- The repository includes
install.py, a Tkinter helper that can orchestrate the build. From the repository root:python3 install.py - Use the “Build Prole macOS app” step. The installer will produce
prole-app/dist/Prole.appand can optionally copy it to/Applications.
Run modes and controls
- Modes:
- Application Window mode (default): resizable window with three vertical status rows (svc, k3s aggregate, local) and a timestamp in the top‑right. A small control bar bottom‑left exposes Refresh (⟳) and Minimize to Status Bar (_).
- Status Bar mode: thin overlay aligned with the macOS menu bar; shows a scrolling summary and a 'maximize' button (□) to return to the main window.
- Toggle between modes with the global shortcut:
Cmd+Option+Shift+P
- Menus:
- Application menu “Prole” (next to the Apple menu): Show Status Bar / Show Main Window (same toggle as the hotkey), Refresh Now, Quit.
- Status‑bar “P” icon (right‑click): Show/Hide Status Bar Icon, Show/Hide Application Window, Refresh Now, Quit.
Configuration
- Endpoint configuration is provided via Java‑style
key=valueproperties. Two locations are read at startup; the user override has precedence:- Bundled defaults:
Prole.app/Contents/Resources/prole.properties - User override (optional):
~/Library/Application Support/Prole/prole.properties
- Bundled defaults:
- Default keys:
svc.host,svc.portk3s.retropie.host,k3s.retropie.portk3s.pi.host,k3s.pi.portk3d.local.host,k3d.local.port
- Example user override:
# Override core service endpoint svc.host=svc.my-domain.tld svc.port=443 # Local k3d on a custom port k3d.local.port=6445
Operational notes
- Status checks are TCP connect probes executed on a background timer (default: 30s). Latency is the connection time in milliseconds; failures record a short diagnostic for tooltips.
- The splash screen is transient (~ 5s) and can be dismissed with a click. It loads
prole-type.gifif present in Resources.
Diagnostics & troubleshooting
- Ensure Xcode CLT is installed if the build fails:
xcode-select --install - If the app launches without a standard menu/window, verify
Info.plisthasLSUIElement=false(the build script sets this). Rebuild usingbuild.sh. - If the hotkey appears inactive, bring the app to the foreground or use the Prole menu item (it triggers the same toggle).
- If status indicators stay red, validate network reachability and adjust
prole.propertiesto endpoints reachable from your host. - For ad‑hoc logging, search the sources for
dlog("…")and run via./build.sh debugto watch stdout.
Security & signing
- The
.appbundle is ad‑hoc signed by default. For distribution, replace with a Developer ID signature and notarize as appropriate for your environment.
Roadmap
- Integration of a virtual workstation to orchestrate a network of Prole‑linked LLMs from within the Prole surface.
License
- See the repository
LICENSEfile.