mirror of
https://github.com/dredx/prole.git
synced 2026-09-24 18:34:31 +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
22 lines
643 B
Swift
22 lines
643 B
Swift
import Foundation
|
|
|
|
enum Debug {
|
|
static let isEnabled: Bool = {
|
|
if let v = ProcessInfo.processInfo.environment["PROLESTATUS_DEBUG"] {
|
|
return v == "1" || v.lowercased() == "true" || v.lowercased() == "yes"
|
|
}
|
|
return false
|
|
}()
|
|
|
|
static func log(_ message: @autoclosure () -> String) {
|
|
guard isEnabled else { return }
|
|
let ts = ISO8601DateFormatter().string(from: Date())
|
|
FileHandle.standardOutput.write(("[ProleStatus] " + ts + " " + message() + "\n").data(using: .utf8)!)
|
|
}
|
|
}
|
|
|
|
@inline(__always)
|
|
func dlog(_ message: @autoclosure () -> String) {
|
|
Debug.log(message())
|
|
}
|