Commit Graph

81 Commits

Author SHA1 Message Date
chrisfu
89dfd9e1be Merge remote-tracking branch 'origin/main'
# Conflicts:
#	prole-dns/init-prole-dns.sh
2026-01-02 20:58:51 -08:00
chrisfu
a3b3d83f44 feat(scripts): introduce DNS sync script for Samba AD and hosts management
- Added `init-prole-dns.sh` to sync host records to Samba AD DNS.
- Included a fallback `hosts.txt` for static entries when Postgres is unavailable.
- Script supports operations such as start, stop, sync, status, and flush.
- Integrated cron-based hourly sync functionality.
2026-01-02 20:56:44 -08:00
chrisfu
4c0c593b34 feat(scripts): introduce DNS sync script for Samba AD and hosts management
- Added `init-prole-dns.sh` to sync host records to Samba AD DNS.
- Included a fallback `hosts.txt` for static entries when Postgres is unavailable.
- Script supports operations such as start, stop, sync, status, and flush.
- Integrated cron-based hourly sync functionality.
2026-01-02 20:30:39 -08:00
chrisfu
b735a1df13 feat(app): add support for Ollama service integration
- Added Ollama endpoint to `Config.swift` and `install.py`.
- Updated `ServiceChecker` to handle Ollama status checks and errors.
- Enhanced `StatusView` with a sixth traffic light for Ollama.
2026-01-02 09:11:56 -08:00
chrisfu
7140933f28 feat(app): add support for Ollama service integration
- Added Ollama endpoint to `Config.swift` and `install.py`.
- Updated `ServiceChecker` to handle Ollama status checks and errors.
- Enhanced `StatusView` with a sixth traffic light for Ollama.
2025-12-30 23:56:24 -08:00
chrisfu
10adb0e53a feat(app, k8s): add OpenBAO status check and enhance service integration
- Added OpenBAO readiness check via `PFScriptBridge`.
- Merged service defaults with indexed configuration in `Config.swift`.
- Improved service checker to handle OpenBAO readiness using `kubectl`.
- Refined `StatusView` to support traffic light interactivity and case-insensitive service matching.
- Expanded `prole-db.yaml` with additional PostgreSQL extensions and function grants.
2025-12-30 23:47:22 -08:00
chrisfu
db01fb3dde Merge remote-tracking branch 'origin/main' 2025-12-30 22:19:02 -08:00
chrisfu
73bc5bfede feat: implement encrypted development database with OpenBao and CNPG - Update install.py with password matching visual feedback and OpenBao integration - Enhance etc/init_openbao.sh to store database password in OpenBao KV - Update etc/init_cloudnative_pg.sh to synchronize database password from OpenBao to K8s secrets - Configure CNPG cluster in k8s/prole/prole-db.yaml with pg_hba for password authentication - Update various scripts and app sources for better service integration 2025-12-30 22:18:55 -08:00
chrisfu
973920db07 feat: implement encrypted development database with OpenBao and CNPG - Update install.py with password matching visual feedback and OpenBao integration - Enhance etc/init_openbao.sh to store database password in OpenBao KV - Update etc/init_cloudnative_pg.sh to synchronize database password from OpenBao to K8s secrets - Configure CNPG cluster in k8s/prole/prole-db.yaml with pg_hba for password authentication - Update various scripts and app sources for better service integration 2025-12-30 22:15:14 -08:00
chrisfu
528e362d95 feat(scripts): add create, delete, and recreate actions for CloudNative-PG initialization
- Introduced new script commands to manage CloudNative-PG clusters (`create`, `delete`, `recreate`).
- Updated default namespace to `prole` and refined variable handling for cluster name.
- Adjusted kustomization.yaml to reference `prole-db.yaml` for consistency in manifests.
2025-12-24 03:02:57 -08:00
chrisfu
940a48a237 refactor(scripts, installer): replace deprecated init_primary_domain.sh with init_openbao.sh
- Removed `init_primary_domain.sh` entirely; introduced `init_openbao.sh` with updated logic and streamlined functionality.
- Standardized script names to align with the OpenBao-centric workflow.
- Updated installer to dynamically fetch Prole database versions and reflect script changes.
- Improved TLS generation and k8s manifest handling for CloudNative-PG.
- Added new references to OpenBao initialization across scripts and UI components.
2025-12-23 22:40:03 -08:00
chrisfu
6fa949cabc refactor(app, scripts): remove deprecated init-port-forwards.sh; enhance UI and db management
- Deleted `init-port-forwards.sh`, removing deprecated placeholder script.
- Introduced `dbStatus` command in `PFScriptBridge.swift` for querying database status with `kubecolor`.
- Improved `StatusView` UI: refined button interactivity and font standardization.
- Added `DBStatusWindowController` to `AppDelegate` for better database status visibility and control.
- Updated `OverlayWindow`: adjusted window levels and interaction behavior for smoother UX.
2025-12-22 21:27:00 -08:00
chrisfu
325d180e9e fix(installer, scripts): improve read-only text handling and streamline db password input
- Update `screen.py` to make text read-only using `state='disabled'`, while allowing text selection and copying.
- Simplify `init_primary_domain.sh` by removing unnecessary local variable declaration for `db_pass`.
2025-12-20 20:55:52 -08:00
chrisfu
3a1f5ea444 Milestone: Integrated CloudNative-PG initialization and build flow into Prole installer. Added new initialization screens, refactored scripts, and updated k8s manifests. 2025-12-20 20:33:19 -08:00
chrisfu
0e01595de0 refactor: switch to environment wrapper; standardize env.sh usage and improve $PROLE_HOME management
- Replace direct script invocation with `$PROLE_HOME/env.sh` wrapper for consistent environment setup across all components.
- Update runtime processes to dynamically resolve `$PROLE_HOME` or fallback to `$HOME/.prole`.
- Deprecate `init-port-forwards.sh` script bundling; remove from LaunchAgentManager and build system.
- Overhaul `env.sh` generation to include execution capability, customizable paths, and improved error handling.
- Standardize app name and paths to "Prole Tools" across all files and UI elements.
- Adjust build output to align with new structure, including executable naming and resource packaging.
2025-12-15 22:00:32 -08:00
chrisfu
1af0447303 install.py environment management
feat(installer): clear overlay widgets on page switch; generate robust env.sh with safe PATH defaults
•
Fix UI bug where Environment page widgets persisted after navigation
◦
Destroy overlay widgets and clear page-specific canvas items in _clear_canvas_page()
•
Improve $PROLE_HOME/env.sh generation in _save_env_to_file()
◦
Export core PROLE_* directories
◦
Add portable _prole_add_path helper
◦
Prepend $PROLE_HOME/bin and common macOS paths: /opt/homebrew/bin, /usr/local/bin, /usr/bin, /bin, /usr/sbin, /sbin
◦
Export final PATH and include guidance for custom paths (e.g., Ollama app bundle)
Rationale: Ensures clean screen transitions in the installer and provides a minimal, safe PATH so shells launched by Prole.app can find docker and ollama by default.
2025-12-15 12:51:45 -08:00
chrisfu
d1e4cb5db3 Remove inline shell from app; bundle external init script; fix build and packaging
•
Strip all embedded shell from LaunchAgentManager.swift; use external etc/init-port-fowards.sh copied from app Resources at runtime; set executable perms
•
Set defaultHelperScript to empty to eliminate inline script
•
Build script: bundle init-port-fowards.sh into Prole.app/Contents/Resources and chmod +x; capture spm_build_binary path via tail -n1
•
Fix malformed multiline XML in PortMappingsXML.save()
•
Preferences: handle new .agentPF tab in didSelect and windowDidResize
Result: Prole.app builds cleanly on arm64; no inline shell remains; embedded dylibs packaged and codesigned
2025-12-15 00:39:52 -08:00
chrisfu
39b2c1ae4b Merge remote-tracking branch 'origin/main' 2025-12-14 23:27:47 -08:00
chrisfu
9fbb728b1b Merge branch 'main' of github.com:dredx/prole 2025-12-14 23:27:39 -08:00
chrisfu
bdbcadfda6 Merge branch 'main' of github.com:dredx/prole 2025-12-14 23:24:57 -08:00
chrisfu
3f0f4b4c22 install.py drag and drop deploy. mv gcp to deploy dir. add init-port-fowards.sh and port-mappings.properties; now configured by Prole.app 2025-12-14 23:18:54 -08:00
chrisfu
e85aaa2f4b install.py drag and drop deploy. mv gcp to deploy dir. add init-port-fowards.sh and port-mappings.properties; now configured by Prole.app 2025-12-14 23:14:33 -08:00
chrisfu
603ce33dbf Updated prole-db/Dockerfile now based on percona-postgresql and uses pg_tde extension. openbao connections 2025-12-12 20:36:22 -08:00
chrisfu
ba2a957f4c Generate an animated loading GIF for Prole installer.
Inspired by 1980s Electronic Arts floppy disk loaders with alternating
animation speeds to reflect installation progress.
2025-12-12 19:56:03 -08:00
chrisfu
b2cbe72c4a ServiceChecker: background refresh + Preferences reload; PF crash fix; Prefs Save commit inputs
- ServiceChecker now runs as a background timer task (30s), skips overlapping runs, and caches per-endpoint state from Preferences (services + kubernetes). Legacy UI flags are kept in sync for StatusView/Overlay.
- Auto-reload on Preferences save: ServiceChecker listens to Config.didChange, clears caches, invalidates freshness, and triggers an immediate refresh.
- Preferences: ensure in-progress text edits are committed before saving (endEditing) for Kubernetes, Services, and Ports tabs.
- PortForwardManager: fix crash in termination handler by reading terminationStatus from the provided Process instance, then updating state on the manager queue.
- Minor: keep existing UI wiring; logging intact for diagnostics.

TODO: remove (list unused code paths)
- Config.primaryKube (unused in prole-app)
- Config.string(_:, default:) (unused in prole-app)
- Config.int(_:, default:) (unused in prole-app)
- PortForwardManager.parsePFCommand tuple parts `modeBackground` and `keepAlive` (never read by callers)
- Config.pfModeBackground and Config.pfKeepAlive (currently ineffective because their values aren’t used downstream)
2025-12-09 18:16:14 -08:00
chrisfu
565d91571b removed pi.prole.org from statusView -- very hardcoded still 2025-12-06 00:33:49 -08:00
chrisfu
0a98b668e0 Merge branch 'main' of github.com:dredx/prole 2025-12-05 23:38:06 -08:00
chrisfu
64455fa886 ### Milestone: Remove IRCKit, migrate to swift-nio IRC, enable RoyalVNC via SwiftPM, and fix runtime embedding
- Replaced all IRCKit (0.16) usage with NozeIO `swift-nio-irc-client` (SwiftPM).
- Enabled IRC window with new client: connects and joins `#prole` (plain TCP for now; SSL checkbox displays a notice).
- Enabled RoyalVNC and removed all optional/flag-based handling. Integrated RoyalVNC via SwiftPM (`royalvnc` on `main`).
- Updated VNC UI to current RoyalVNC API: `VNCConnection` + `VNCCAFramebufferView` with a strong delegate reference.
- Simplified build to use SwiftPM for both IRC and RoyalVNC.
- Fixed runtime embedding and loader issues:
  - Copy SwiftPM-built `.dylib` products (e.g., `libRoyalVNCKit.dylib`) into `Contents/Frameworks` and codesign them.
  - Added `@executable_path/../Frameworks` to app rpaths with `install_name_tool`.
- Removed manual RoyalVNCKit `.xcframework` building/embedding and any IRCKit traces.

#### Key changes
- `prole-app/build.sh`:
  - Build app via SwiftPM; removed IRCKit and manual RoyalVNC build logic.
  - Embed SwiftPM `.dylib` outputs into `Contents/Frameworks` and set app rpath.
  - Cleaned usage text; dependencies now handled by SwiftPM.
- `prole-app/Package.swift`:
  - Add `swift-nio-irc-client` (NozeIO) dependency.
  - Add RoyalVNC via SwiftPM: `https://github.com/royalapplications/royalvnc` on `main`.
- `prole-app/Sources/IRCWindowController.swift`:
  - Migrate to NozeIO `IRC` package API; re-enable Connect; join `#prole`.
  - Import AppKit; provide convenience init for transcript view.
- `prole-app/Sources/WorkstationWindowController.swift`:
  - Import `RoyalVNCKit`; use `VNCConnection` + `VNCCAFramebufferView`.
  - Implement `VNCConnectionDelegate` and keep a strong reference to the delegate.
- `prole-app/debug.sh`:
  - Removed IRCKit logs section; kept RoyalVNC logs earlier; then removed manual RoyalVNC altogether.

This build now launches successfully (no dyld errors), opens the Workstation window (RoyalVNC), and the IRC window connects via the new client.

### Suggested follow-ups
- If TLS is required for IRC, add `NIOSSL` integration and wire SSL checkbox to TLS connection.
- Optionally remove leftover Vendor references if any local cache remains.
2025-12-05 23:37:54 -08:00
chrisfu
397cd76328 ### Milestone: Remove IRCKit, migrate to swift-nio IRC, enable RoyalVNC via SwiftPM, and fix runtime embedding
- Replaced all IRCKit (0.16) usage with NozeIO `swift-nio-irc-client` (SwiftPM).
- Enabled IRC window with new client: connects and joins `#prole` (plain TCP for now; SSL checkbox displays a notice).
- Enabled RoyalVNC and removed all optional/flag-based handling. Integrated RoyalVNC via SwiftPM (`royalvnc` on `main`).
- Updated VNC UI to current RoyalVNC API: `VNCConnection` + `VNCCAFramebufferView` with a strong delegate reference.
- Simplified build to use SwiftPM for both IRC and RoyalVNC.
- Fixed runtime embedding and loader issues:
  - Copy SwiftPM-built `.dylib` products (e.g., `libRoyalVNCKit.dylib`) into `Contents/Frameworks` and codesign them.
  - Added `@executable_path/../Frameworks` to app rpaths with `install_name_tool`.
- Removed manual RoyalVNCKit `.xcframework` building/embedding and any IRCKit traces.

#### Key changes
- `prole-app/build.sh`:
  - Build app via SwiftPM; removed IRCKit and manual RoyalVNC build logic.
  - Embed SwiftPM `.dylib` outputs into `Contents/Frameworks` and set app rpath.
  - Cleaned usage text; dependencies now handled by SwiftPM.
- `prole-app/Package.swift`:
  - Add `swift-nio-irc-client` (NozeIO) dependency.
  - Add RoyalVNC via SwiftPM: `https://github.com/royalapplications/royalvnc` on `main`.
- `prole-app/Sources/IRCWindowController.swift`:
  - Migrate to NozeIO `IRC` package API; re-enable Connect; join `#prole`.
  - Import AppKit; provide convenience init for transcript view.
- `prole-app/Sources/WorkstationWindowController.swift`:
  - Import `RoyalVNCKit`; use `VNCConnection` + `VNCCAFramebufferView`.
  - Implement `VNCConnectionDelegate` and keep a strong reference to the delegate.
- `prole-app/debug.sh`:
  - Removed IRCKit logs section; kept RoyalVNC logs earlier; then removed manual RoyalVNC altogether.

This build now launches successfully (no dyld errors), opens the Workstation window (RoyalVNC), and the IRC window connects via the new client.

### Suggested follow-ups
- If TLS is required for IRC, add `NIOSSL` integration and wire SSL checkbox to TLS connection.
- Optionally remove leftover Vendor references if any local cache remains.
2025-12-05 22:54:47 -08:00
chrisfu
e9d6e2af96 Merge remote-tracking branch 'origin/main' 2025-12-05 14:24:34 -08:00
chrisfu
ace9587611 feat(build): milestone alpha build — conditional deps; IRCKit and RoyalVNCKit disabled by default
This marks a milestone alpha build of Prole.

Key changes
- build.sh now supports conditional third‑party frameworks via env flags:
  - PROLE_ENABLE_IRCKit (default: 0)
  - PROLE_ENABLE_RoyalVNCKit (default: 0)
- When disabled, IRCKit/RoyalVNCKit are not fetched, linked, or embedded.
- Swift compile receives convenience defines for conditional compilation:
  - -D PROLE_ENABLE_IRCKit or -D PROLE_ENABLE_IRCKit_DISABLED
  - -D PROLE_ENABLE_RoyalVNCKit or -D PROLE_ENABLE_RoyalVNCKit_DISABLED
- Archive flow stabilized; optional SSL-less path for IRCKit remains available via PROLE_DISABLE_SSL=1.
- App bundle generation unchanged (plist, icons, resources, codesign).

Why
- Restore a clean build on current toolchains and allow incremental re‑enablement of optional integrations.
- Make the build resilient: dependencies can be toggled on CI or locally without modifying sources.

Usage examples
- Default (alpha baseline; both off):
  ./build.sh build --arch arm64
- Enable IRCKit only:
  PROLE_ENABLE_IRCKit=1 ./build.sh build --arch arm64
- Enable RoyalVNCKit only:
  PROLE_ENABLE_RoyalVNCKit=1 ./build.sh build --arch arm64
- Enable both:
  PROLE_ENABLE_IRCKit=1 PROLE_ENABLE_RoyalVNCKit=1 ./build.sh build --arch arm64

Notes
- IRCKit SSL-less switch remains available if needed:
  PROLE_DISABLE_SSL=1 PROLE_ENABLE_IRCKit=1 ./build.sh build --arch arm64
- Current alpha defaults keep both IRCKit and RoyalVNCKit disabled.

Build: 2025-12-05 14:21 local
2025-12-05 14:24:22 -08:00
chrisfu
de1a34b1c2 feat(build): milestone alpha build — conditional deps; IRCKit and RoyalVNCKit disabled by default
This marks a milestone alpha build of Prole.

Key changes
- build.sh now supports conditional third‑party frameworks via env flags:
  - PROLE_ENABLE_IRCKit (default: 0)
  - PROLE_ENABLE_RoyalVNCKit (default: 0)
- When disabled, IRCKit/RoyalVNCKit are not fetched, linked, or embedded.
- Swift compile receives convenience defines for conditional compilation:
  - -D PROLE_ENABLE_IRCKit or -D PROLE_ENABLE_IRCKit_DISABLED
  - -D PROLE_ENABLE_RoyalVNCKit or -D PROLE_ENABLE_RoyalVNCKit_DISABLED
- Archive flow stabilized; optional SSL-less path for IRCKit remains available via PROLE_DISABLE_SSL=1.
- App bundle generation unchanged (plist, icons, resources, codesign).

Why
- Restore a clean build on current toolchains and allow incremental re‑enablement of optional integrations.
- Make the build resilient: dependencies can be toggled on CI or locally without modifying sources.

Usage examples
- Default (alpha baseline; both off):
  ./build.sh build --arch arm64
- Enable IRCKit only:
  PROLE_ENABLE_IRCKit=1 ./build.sh build --arch arm64
- Enable RoyalVNCKit only:
  PROLE_ENABLE_RoyalVNCKit=1 ./build.sh build --arch arm64
- Enable both:
  PROLE_ENABLE_IRCKit=1 PROLE_ENABLE_RoyalVNCKit=1 ./build.sh build --arch arm64

Notes
- IRCKit SSL-less switch remains available if needed:
  PROLE_DISABLE_SSL=1 PROLE_ENABLE_IRCKit=1 ./build.sh build --arch arm64
- Current alpha defaults keep both IRCKit and RoyalVNCKit disabled.

Build: 2025-12-05 14:21 local
2025-12-05 14:22:58 -08:00
chrisfu
f93ce88d33 Properly manage local port-forwards for dev environments. somewhat configurable, easily updatable. moving on 2025-12-05 00:29:51 -08:00
chrisfu
bbeef67a0f merge Dependencies + Deploy into single 'Setup & Deploy' page; add console preview, Next binding, and stable footer"
Live-updating Dependencies (background checks via installer.config.get_dep_info)\n- Final steps retained: pre-completed items + Start Prole Workstation + Install Prole.app\n- Console shows docker run; Enter/Next runs detatched and verifies\n- Drag-to-install popup marks completion on close\n- Fixed-height footer to prevent background geometry shifts\n- Back/Next footer; Next triggers same action as Enter\n\nNote: docker run preview didn’t appear for the user; follow-up fix planned.
2025-12-04 21:03:06 -08:00
chrisfu
120c9c2567 feat(installer): unified welcome flow, reliable footer gating; externalize install scripts; add Ollama; centralize canvas helpers
- Startup/UI: open main window with background; run dependency check on-canvas; hide footer during scan; reveal Next after debounce; add 600ms refresh and 9s failsafe; fixed background image replacement without clearing content.

- Canvas helpers: route all canvas calls via installer/screen.py; consistent status drawing.

- Installer script externalization: per-dependency templates + validator; compose install_dependencies.sh.

- Dependencies: add Ollama and template; install order: brew → ollama → k3d → kubectl → helm → krew → cmctl → plugins.

- Cleanup: removed deprecated splash and unused code paths.
2025-12-04 14:01:28 -08:00
chrisfu
3d174f4bbc remove gitignored files 2025-12-03 22:57:23 -08:00
chrisfu
aad4c9c919 installer: switch workstation build to Docker, drop Vagrant
- Remove Vagrant from dependency checks and UI; use Docker for workstation build.\n- Add WORKSTATION_VERSION ARG + OCI version label in workstation/Dockerfile; tag image as prole-workstation:<version>.\n- Add installer.workstation helpers: parse version, compose canonical docker build (auto platform flags on Apple Silicon).\n- Refactor install.py Workstation page to display/execute docker build; write logs to logs/workstation-docker-<ts>.log; update summary links.\n- Update Deploy page copy: "Build workstation Docker image".\n- Centralize footer buttons styling/layout with installer.screen.create_nav_footer and use it from install.py.\n- Update installer package docs to describe Docker-based workstation helpers.
2025-12-03 22:55:21 -08:00
chrisfu
0c69f90e71 ProleStatus: app-window default, light splash restored, status bar controls; endpoint config via properties; build + docs
- 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
2025-12-02 19:42:54 -08:00
chrisfu
da8bca97f6 chore(installer): Show 'Prole Installer' name and Prole icon on macOS; read images from properties
- Set visible process/menu name to 'Prole Installer' via Foundation on macOS.
- Prefer .icns from built Prole.app for Dock icon; fallback to PNG from properties via AppKit.
- Keep Tk iconphoto as a universal fallback.
- Move image configuration to prole-app/prole.properties with new keys:
  - icon=img/proleIcon.png
  - background=img/proleLogoSepia.png
- Support legacy keys ui.icon and ui.background for backward compatibility.

Files:
- install.py: strengthen _set_app_identity for process title and Dock icon.
- installer/config.py: add getters prioritizing new keys (with fallbacks).
- prole-app/prole.properties: add canonical keys; retain legacy; document.

Result: On macOS the menu bar now shows 'Prole Installer' instead of 'Python' and the Dock uses the Prole 'P' icon by default. Non-macOS behavior unchanged.
2025-12-02 18:52:04 -08:00
chrisfu
68842fd8d5 Merge branch 'main' of github.com:dredx/prole 2025-12-02 18:50:52 -08:00
chrisfu
92fe6fba95 docs and history. UE Dockerfile 2025-12-02 18:42:00 -08:00
chrisfu
8a6e8738db ProleStatus: app-window default, light splash restored, status bar controls; endpoint config via properties; build + docs
- 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
2025-12-01 21:08:30 -08:00
chrisfu
053d907666 prole.installer wip 2025-12-01 14:52:18 -08:00
chrisfu
1f4b394e94 installer: split monolith into installer/* modules, update entry install.py to use them; remove nested prole/* references and prefer top-level proleStatus build
- Add root-level installer package: config, build, workstation, deploy
- Update install.py to import from installer.*
- Ensure build/deploy use top-level proleStatus only (no prole/proleStatus)
- Keep UI/behavior intact (wizard pages, embedded console)

This commit contains only files required to run ./install.py and the new installer/* modules.
2025-12-01 14:25:43 -08:00
chrisfu
2c186d64bd grammar 2025-12-01 00:09:12 -08:00
chrisfu
9828a15328 ProleStatus: app-window default, light splash restored, status bar controls; endpoint config via properties; build + docs
- 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
2025-12-01 00:03:52 -08:00
chrisfu
849f6b4854 prole.org foundation deployment 2025-11-29 12:33:23 -08:00
chrisfu
ce69e1652a quieter header 2025-11-29 08:30:18 -08:00
chrisfu
a97f25ca73 file cleanup 2025-11-29 08:10:54 -08:00
chrisfu
8d68efcf36 Merge branch 'main' of github.com:dredx/prole 2025-11-29 08:09:34 -08:00