ddat interop with dat js
cable interop with cabal js
ddat's frontend = dat-thang
cable fe = cable-thang
dillo support based on cel's dillo-dat
bootstrap node
xplatform support

Signed-off-by: divo <418@cryspace.space>
This commit is contained in:
divorce committed 2026-10-19 00:17:02 -04:00
1 parent f0f91540be
commit b735900f2e
323 files changed
+134347 -343

No files matched your search

+96
View File
@@ -0,0 +1,96 @@
# Windows build
The native Windows build uses MSYS2's UCRT64 toolchain and creates a runnable
folder of PE executables plus their runtime DLLs and data files. It does not
reuse the GNU/Linux `build/` directory or generated `config.mk`.
Install MSYS2, then install the UCRT64 packages needed by the project:
```sh
pacman -S --needed \
mingw-w64-ucrt-x86_64-gcc \
mingw-w64-ucrt-x86_64-make \
mingw-w64-ucrt-x86_64-pkgconf \
mingw-w64-ucrt-x86_64-libsodium \
mingw-w64-ucrt-x86_64-curl \
mingw-w64-ucrt-x86_64-SDL2 \
mingw-w64-ucrt-x86_64-SDL2_ttf
```
From the repository root in PowerShell, run:
```powershell
.\build-windows.ps1
```
Compiler outputs, including tests and intermediate files, stay in
`build\windows`. Distribution output is staged separately: `dist\windows-x64`
contains only the eight user-facing programs, their runtime DLLs, assets,
Scheme files, and manuals. `dist\installers` contains a portable ZIP and, when
Inno Setup is installed, the setup executable. Do not distribute the contents
of `build\windows` directly. The build date's Discordian calendar conversion
is compiled into the GUI; no external `ddate` installation is needed.
To create just the portable ZIP, run `build-windows.ps1`. To create the install
wizard as well, run `build-windows-installer.ps1`.
`cable-thang.exe` is a native C/S7 client using Cesspool and Sleep. Node.js
and Cabal JavaScript modules are needed only for optional interoperability
tests. Cable audio and video support are experimental and disabled by default,
so the regular Windows build does not require FFmpeg. To enable both, install
FFmpeg and build with:
```powershell
pacman -S --needed mingw-w64-ucrt-x86_64-ffmpeg
.\build-windows.ps1 -EnableCableMedia
```
The UCRT64 FFmpeg libraries provide Cable's AAC-LC encoder/decoder, OBS MPEG-TS
ingest, and low-resolution JPEG video exchange; their runtime DLLs are copied
beside the Windows executables. In `cable-thang`, `OBS INPUT` (or
Ctrl+Shift+V) listens on local UDP port 5000; OBS can publish MPEG-TS there
using its Custom FFmpeg Output.
The GNU/Linux workflow is `./configure`, `make`, and `make install`; its default
compiler output is `build/linux`. To create a staged GNU/Linux tarball, use
`make package`. Release artifacts go under `dist/` on both platforms. To create
a source-only archive, run `package-source.ps1`; its contents and exclusions
are documented in `docs\source-distribution.md`.
That configuration checks for libcurl because the Dillo-compatible
`dat-dns` lookup uses HTTPS `/.well-known/dat`; it does not call the operating
system DNS TXT resolver.
## Install wizard
Install [Inno Setup 6](https://jrsoftware.org/isinfo.php) after installing the
MSYS2 build tools. From PowerShell at the repository root, run:
```powershell
.\build-windows-installer.ps1
```
The script rebuilds the Windows applications, bundles their DLLs and runtime
assets, and creates `dist\installers\dat-thang-setup-0.0.002-x64.exe`.
The application identifies itself as `dat-thang v0.0.002 (prototype,
pre-alpha)`; the executable file version is `0.0.2.0`.
The wizard offers a per-user or all-users install, a destination folder,
optional desktop shortcut, optional PATH entry for the terminal commands, and
an optional launch at the end. Uninstall removes a PATH entry only when this
installer added it. The app and installer use the same generic green hexagon
icon. The Start menu includes dat-thang and a command prompt with the installed
tools on PATH.
`cable-thang.exe` is included for opening a room address from the command
prompt and connects through Cesspool.
`cesspool-bootstrap.exe` runs a dedicated Cesspool discovery node in the
foreground. It is for an operator deploying a reachable public rendezvous
host, not something chat users need to run. The node needs a stable state
directory and inbound UDP on the selected port; see `docs\cesspool-bootstrap.1`
for process-supervisor and firewall setup. The Windows installer includes the
executable and the operator manpage in its `docs` folder.
Keep the node identity outside the checkout. In PowerShell, run the development
executable with `--state-dir "$env:LOCALAPPDATA\dat-gpt\cesspool-bootstrap-state"`.
That keeps the private identity key in per-user application data rather than in
the source tree or disposable compiler output.