Refactor prole-app and establish temporary release process

- Moved prole-tools-app to prole-app at the project root to make it self-contained for transition to its own repository.
- Created prole-tools-app/dist/ directory to host build artifacts.
- Generated distribution artifacts (Prole Tools.app and Prole Tools.zip) using prole-app/build.sh package.
- Checked in the generated artifacts to prole-tools-app/dist/ (bypassing .gitignore for temporary release process).
Changes Summary
•
Renamed directory prole-tools-app/ to prole-app/.
•
Populated prole-tools-app/dist/ with the latest build output from prole-app/build.sh.
•
Staged all changes, including the forced addition of ignored artifacts in prole-tools-app/dist/.
This commit is contained in:
chrisfu 2026-01-18 15:04:23 -08:00
parent a4d0a2e0a3
commit 197c72dd7a
55 changed files with 3360 additions and 3051 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -14,12 +14,12 @@ Types if import:
IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
tracking down the missing module yourself. Thanks!
missing module named nt - imported by _colorize (delayed, conditional, optional), shutil (conditional), importlib._bootstrap_external (conditional), os (delayed, conditional, optional), ntpath (optional), ctypes (delayed, conditional)
missing module named 'collections.abc' - imported by tracemalloc (top-level), typing (top-level), traceback (top-level), _colorize (top-level), logging (top-level), selectors (top-level), http.client (top-level), importlib.resources.readers (top-level), inspect (top-level), PIL.Image (top-level), PIL._typing (top-level), xml.etree.ElementTree (top-level), PIL.TiffImagePlugin (top-level), PIL.ImageOps (top-level), PIL.ImagePalette (top-level), PIL.GimpGradientFile (conditional), PIL.ImageFilter (top-level), PIL.ImageQt (conditional), PIL.ImageMath (conditional), PIL.ImageSequence (conditional), PIL.PngImagePlugin (conditional), PyObjCTools.KeyValueCoding (top-level), objc._convenience_nsdictionary (top-level), objc._convenience_mapping (top-level), objc._convenience_nsset (top-level), objc._convenience_nsarray (top-level), objc._bridges (top-level), objc._properties (top-level), objc._pycoder (top-level), PIL.Jpeg2KImagePlugin (conditional)
missing module named nt - imported by shutil (conditional), importlib._bootstrap_external (conditional), ntpath (optional), _colorize (delayed, conditional, optional), os (delayed, conditional, optional), ctypes (delayed, conditional)
missing module named 'collections.abc' - imported by _colorize (top-level), typing (top-level), traceback (top-level), logging (top-level), selectors (top-level), http.client (top-level), importlib.resources.readers (top-level), tracemalloc (top-level), inspect (top-level), PIL.Image (top-level), PIL._typing (top-level), xml.etree.ElementTree (top-level), PIL.TiffImagePlugin (top-level), PIL.ImageOps (top-level), PIL.ImagePalette (top-level), PIL.GimpGradientFile (conditional), PIL.ImageFilter (top-level), PIL.ImageQt (conditional), PIL.ImageMath (conditional), PIL.ImageSequence (conditional), PIL.PngImagePlugin (conditional), PyObjCTools.KeyValueCoding (top-level), objc._convenience_nsdictionary (top-level), objc._convenience_mapping (top-level), objc._convenience_nsset (top-level), objc._convenience_nsarray (top-level), objc._bridges (top-level), objc._properties (top-level), objc._pycoder (top-level), PIL.Jpeg2KImagePlugin (conditional)
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional)
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional)
missing module named winreg - imported by importlib._bootstrap_external (conditional), mimetypes (optional), urllib.request (delayed, conditional, optional), platform (delayed, optional)
missing module named _winapi - imported by shutil (conditional), pathlib._os (optional), mimetypes (optional), subprocess (conditional), ntpath (optional), sysconfig (delayed)
missing module named _winapi - imported by shutil (conditional), ntpath (optional), pathlib._os (optional), mimetypes (optional), subprocess (conditional), sysconfig (delayed)
missing module named AppKit.NSImage - imported by AppKit (delayed, conditional, optional), /Users/chrisfu/dev/prole/install.py (delayed, conditional, optional)
missing module named AppKit.NSApplication - imported by AppKit (delayed, conditional, optional), /Users/chrisfu/dev/prole/install.py (delayed, conditional, optional)
missing module named objc.nosuchclass_error - imported by objc (top-level), objc._lazyimport (top-level)

Binary file not shown.

View File

@ -156,8 +156,8 @@ class ProleInstaller:
("System Environment", "env_setup"),
("Kerberos Authentication", "kerberos_config"),
("Database Password", "init_password"),
("Initialization", "init_cluster"),
("Docker Build", "init_db_build"),
("Initialization", "init_cluster"),
("Prole DB Deploy", "init_cnpg_deploy"),
("Prole.app", "build"),
("Create Installer", "create_installer")
@ -257,8 +257,8 @@ class ProleInstaller:
# New Initialize screens in sequence
self._register_page('init_password', None)
self._register_page('init_cluster', None)
self._register_page('init_db_build', None)
self._register_page('init_cluster', None)
self._register_page('init_cnpg_deploy', None)
self._register_page('build', None)
@ -1443,7 +1443,7 @@ class ProleInstaller:
time.sleep(2)
# Move to next page
self.root.after(1000, lambda: self.show_page('init_cluster'))
self.root.after(1000, lambda: self.show_page('init_db_build'))
threading.Thread(target=worker, daemon=True).start()
@ -2239,14 +2239,14 @@ class ProleInstaller:
if current_id == 'kerberos_config':
self.show_page('env_setup')
return
if current_id == 'init_cluster':
if current_id == 'init_db_build':
self.show_page('init_password')
return
if current_id == 'init_db_build':
self.show_page('init_cluster')
if current_id == 'init_cluster':
self.show_page('init_db_build')
return
if current_id == 'init_cnpg_deploy':
self.show_page('init_db_build')
self.show_page('init_cluster')
return
if current_id == 'init_password':
self.show_page('kerberos_config')
@ -2373,6 +2373,10 @@ class ProleInstaller:
self._generate_ssh_key_with_overlay()
return
if current_id == 'init_db_build':
self.show_page('init_cluster')
return
if current_id == 'init_cluster':
# Ensure docker is started, then proceed
if not self.check_docker_running():
@ -2381,10 +2385,6 @@ class ProleInstaller:
except Exception:
pass
return
self.show_page('init_db_build')
return
if current_id == 'init_db_build':
self.show_page('init_cnpg_deploy')
return

BIN
net/scan

Binary file not shown.

View File

@ -4,6 +4,8 @@ Network Discovery Summary:
Primary Router: 10.0.0.1 (Unknown)
DNS Servers:
Detected Devices:
- 10.0.0.170 [b0:ee:7b:ca:73:99] (Roku_ca:73:99): Ports [], Services: []
- 10.0.0.31 [7e:c4:a3:58:ee:94] (7e:c4:a3:58:ee:94): Ports [], Services: []
- 10.0.0.1 [Unknown] (Unknown): Ports [53], Services: ['DNS']
- 10.0.0.2 [Unknown] (Unknown): Ports [], Services: []
- 10.0.0.3 [Unknown] (Unknown): Ports [53, 445, 88, 389, 636], Services: ['DNS', 'SMB/CIFS (Possible Windows/AD)', 'Active Directory Related']
@ -26,17 +28,15 @@ Detected Devices:
- 10.0.0.99 [Unknown] (Unknown): Ports [], Services: []
- 10.0.0.107 [Unknown] (Unknown): Ports [], Services: []
- 10.0.0.111 [Unknown] (Unknown): Ports [], Services: []
- 10.0.0.112 [Unknown] (Unknown): Ports [80, 443], Services: ['Web Server']
- 10.0.0.113 [Unknown] (Unknown): Ports [], Services: []
- 10.0.0.117 [Unknown] (Unknown): Ports [80], Services: ['Web Server']
- 10.0.0.123 [Unknown] (Unknown): Ports [80], Services: ['Web Server']
- 10.0.0.124 [Unknown] (Unknown): Ports [80], Services: ['Web Server']
- 10.0.0.125 [Unknown] (Unknown): Ports [80], Services: ['Web Server']
- 10.0.0.127 [Unknown] (Unknown): Ports [], Services: []
- 10.0.0.128 [Unknown] (Unknown): Ports [], Services: []
- 10.0.0.130 [Unknown] (Unknown): Ports [53], Services: ['DNS']
- 10.0.0.143 [Unknown] (Unknown): Ports [53], Services: ['DNS']
- 10.0.0.145 [Unknown] (Unknown): Ports [], Services: []
- 10.0.0.170 [Unknown] (Unknown): Ports [], Services: []
- 10.0.0.175 [Unknown] (Unknown): Ports [80], Services: ['Web Server']
- 10.0.0.180 [Unknown] (Unknown): Ports [], Services: []
- 10.0.0.185 [Unknown] (Unknown): Ports [53, 445, 88, 389, 636], Services: ['DNS', 'SMB/CIFS (Possible Windows/AD)', 'Active Directory Related']

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>25B78</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>RoyalVNCKit</string>
<key>CFBundleIdentifier</key>
<string>royalvnc-1.0.1.RoyalVNCKit</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>RoyalVNCKit</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string>25B74</string>
<key>DTPlatformName</key>
<string>macosx</string>
<key>DTPlatformVersion</key>
<string>26.1</string>
<key>DTSDKBuild</key>
<string>25B74</string>
<key>DTSDKName</key>
<string>macosx26.1</string>
<key>DTXcode</key>
<string>2611</string>
<key>DTXcodeBuild</key>
<string>17B100</string>
<key>LSMinimumSystemVersion</key>
<string>12.0</string>
</dict>
</plist>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>25B78</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>RoyalVNCKit</string>
<key>CFBundleIdentifier</key>
<string>royalvnc-1.0.1.RoyalVNCKit</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>RoyalVNCKit</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSupportedPlatforms</key>
<array>
<string>MacOSX</string>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string>25B74</string>
<key>DTPlatformName</key>
<string>macosx</string>
<key>DTPlatformVersion</key>
<string>26.1</string>
<key>DTSDKBuild</key>
<string>25B74</string>
<key>DTSDKName</key>
<string>macosx26.1</string>
<key>DTXcode</key>
<string>2611</string>
<key>DTXcodeBuild</key>
<string>17B100</string>
<key>LSMinimumSystemVersion</key>
<string>12.0</string>
</dict>
</plist>

View File

@ -1 +0,0 @@
Versions/Current/Resources

View File

@ -1 +0,0 @@
Versions/Current/RoyalVNCKit

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key><string>en</string>
<key>CFBundleExecutable</key><string>Prole Tools</string>
<key>CFBundleIdentifier</key><string>org.prole.ProleTools</string>
<key>CFBundleInfoDictionaryVersion</key><string>6.0</string>
<key>CFBundleName</key><string>Prole Tools</string>
<key>CFBundlePackageType</key><string>APPL</string>
<key>CFBundleShortVersionString</key><string>1.0</string>
<key>CFBundleVersion</key><string>1</string>
<key>LSMinimumSystemVersion</key><string>12.0</string>
<key>NSHighResolutionCapable</key><true/>
<key>NSPrincipalClass</key><string>NSApplication</string>
<key>LSApplicationCategoryType</key><string>public.app-category.developer-tools</string>
<!-- UIElement must be false so the app can present a normal window and app menu when in Application Window mode. -->
<key>LSUIElement</key><false/>
<key>CFBundleIconFile</key><string>Prole Tools.icns</string>
</dict>
</plist>

Binary file not shown.

View File

@ -0,0 +1,40 @@
# Prole default endpoints (bundled). Override in:
# ~/Library/Application Support/Prole/prole.properties
# using the same key=value format.
# UI assets (relative to repo root when building; file name within app bundle at runtime)
# New canonical keys used by installer and app
icon=img/proleIcon.png
background=img/proleLogoSepia.png
# Legacy keys retained for backward compatibility
ui.icon=img/proleIcon.png
ui.background=img/proleLogoSepia.png
ui.welcometxt=installer/welcome.txt
# Dev port-forward supervision
# Note: Port mappings are now sourced from $PROLE_HOME/conf/port-mappings.conf.
# The legacy pf.* keys are intentionally omitted from the bundled defaults.
pf.enabled=true
# Core service
svc.host=svc.prole.org
svc.port=443
# k3s aggregate ? replace legacy raspberry with retropie
k3s.retropie.host=retropie.prole.org
k3s.retropie.port=6443
# local k3d
k3d.local.host=localhost
k3d.local.port=6443
# internal postgres
postgres.host=k3s.prole.org
postgres.port=5432
# Reserved for future cloud endpoints
# aws.eks.host=
# aws.eks.port=
# gcp.gke.host=
# gcp.gke.port=

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -0,0 +1,159 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>files</key>
<dict>
<key>Resources/Prole Tools.icns</key>
<data>
O2xhP8ZPEJtId599wQgaNvr6Tbc=
</data>
<key>Resources/prole.properties</key>
<data>
6tlbp59sbW6kytPGLdfpYvE1LAs=
</data>
<key>Resources/statusIcon.png</key>
<data>
WZj6we6ol7rjXIAqv0XRcjlp0ek=
</data>
</dict>
<key>files2</key>
<dict>
<key>Frameworks/libRoyalVNCKit.dylib</key>
<dict>
<key>cdhash</key>
<data>
x3WU0hM7LHs4jSy1Y47kPQvJte4=
</data>
<key>requirement</key>
<string>cdhash H"c77594d2133b2c7b388d2cb5638ee43d0bc9b5ee"</string>
</dict>
<key>Resources/Prole Tools.icns</key>
<dict>
<key>hash2</key>
<data>
32A/+d7uMdVpzwKanvbcEVqVeWPPadHLZgnx2i5TqmI=
</data>
</dict>
<key>Resources/prole.properties</key>
<dict>
<key>hash2</key>
<data>
uqL8e/uC5EacuHkYlxhefCtR6HAQSbj+ji0uWk4oOWc=
</data>
</dict>
<key>Resources/statusIcon.png</key>
<dict>
<key>hash2</key>
<data>
fRoU7pnG+am2KW9tWBZLJ++A6rd6Mmus6oSOklRu/dQ=
</data>
</dict>
</dict>
<key>rules</key>
<dict>
<key>^Resources/</key>
<true/>
<key>^Resources/.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^Resources/.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Resources/Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^version.plist$</key>
<true/>
</dict>
<key>rules2</key>
<dict>
<key>.*\.dSYM($|/)</key>
<dict>
<key>weight</key>
<real>11</real>
</dict>
<key>^(.*/)?\.DS_Store$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>2000</real>
</dict>
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
<dict>
<key>nested</key>
<true/>
<key>weight</key>
<real>10</real>
</dict>
<key>^.*</key>
<true/>
<key>^Info\.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^PkgInfo$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^Resources/</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^Resources/.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^Resources/.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Resources/Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^[^/]+$</key>
<dict>
<key>nested</key>
<true/>
<key>weight</key>
<real>10</real>
</dict>
<key>^embedded\.provisionprofile$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^version\.plist$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
</dict>
</dict>
</plist>

BIN
prole-tools-app/dist/Prole Tools.zip vendored Normal file

Binary file not shown.