added PyInstaller builds, AGPLv3, transport config

- Add pyinstaller.spec and GitHub/Forgejo CI workflows for cross-platform builds
- Add AGPLv3 license
- Move data storage to ~/.tinyweb/
- Add --version and --port CLI flags
- Add transport node selection in /style (smart regeneration preserves Reticulum config)
- Add discover more nodes link to rmap.world
This commit is contained in:
lichenblankie 2026-04-08 04:36:28 +00:00
parent e6f77f0a55
commit 5b32d69863
9 changed files with 924 additions and 20 deletions

81
pyinstaller.spec Normal file
View file

@ -0,0 +1,81 @@
# -*- mode: python ; coding: utf-8 -*-
import os
import sys
block_cipher = None
# Hidden imports that PyInstaller can't detect automatically
hiddenimports = [
"RNS",
"RNS.Destination",
"RNS.Identity",
"RNS.Reticulum",
"onnxruntime",
"onnxruntime.capi.onnxruntime_pybind11_state",
"tokenizers",
"huggingface_hub",
"hnswlib",
"bs4",
"beautifulsoup4",
"numpy",
"requests",
]
# Data files to include
datas = [
("themes", "themes"),
]
# Exclude unnecessary modules
excludes = [
"test",
"tests",
"tkinter",
"matplotlib",
"scipy",
"pandas",
"IPython",
"jupyter",
"notebook",
]
a = Analysis(
["app.py"],
pathex=[],
binaries=[],
datas=datas,
hiddenimports=hiddenimports,
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=excludes,
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name="TinyWeb",
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)