- 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.
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