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>
189 lines
9.8 KiB
Groff
189 lines
9.8 KiB
Groff
.TH DAT-THANG 1 "October 2026" "dat-thang v0.0.002" "User Commands"
|
|
.SH NAME
|
|
dat-thang \- SDL2 local archive and peer discovery client
|
|
.SH SYNOPSIS
|
|
.B dat-thang
|
|
.RI [ --archive DIRECTORY ]
|
|
.RI [ --site HOSTNAME ]
|
|
.RI [ --offline ]
|
|
.br
|
|
.B dat-thang --version
|
|
.SH DESCRIPTION
|
|
dat-thang is the SDL2 graphical client for browsing a local filesystem directory,
|
|
explicitly loading or creating Dat archives, and controlling the client's online
|
|
discovery state. The top-left switch applies to the whole client. OFF leaves all
|
|
loaded archive topics, unannounces when possible, closes the network socket, and
|
|
clears peer state. ON connects the client and announces archives in its loaded
|
|
archive list. Selecting an archive or browsing a directory does not toggle the
|
|
client's network state or create an archive.
|
|
.PP
|
|
Version v0.0.002 is a prototype in pre-alpha.
|
|
.PP
|
|
The pane to the right of the Merkle graph navigates the local filesystem.
|
|
Click a directory to enter it; navigation alone never creates or shares an
|
|
archive. The bottom bar displays the selected filename and directory. Use
|
|
F9 or IMPORT DAT to load an existing archive from the selected directory, or
|
|
CREATE NEW DAT to deliberately create one. Loaded archives are remembered in
|
|
the archive switcher and shared whenever the client is online. Secret signing keys are stored under
|
|
.B $HOME/.dat/secret_keys/
|
|
using Dat Desktop's sharded discovery-key paths, with one raw secret file per
|
|
feed. See the installed key-management documentation.
|
|
.PP
|
|
Click the local SITE field while an archive is loaded to assign that archive a
|
|
dat-dns hostname. Type the hostname and press Return to save a local alias; this
|
|
client resolves it immediately. The confirmation dialog copies the corresponding
|
|
dat-dns value to the clipboard. Public Dillo-compatible resolution uses the
|
|
hostname's HTTPS /.well-known/dat response, whose first line is dat:// followed
|
|
by the 64-digit archive key and whose optional second line is TTL=<seconds>.
|
|
Escape cancels hostname editing. The site field can also display the
|
|
hostname supplied with --site. Archive displays the selected archive key in
|
|
hexadecimal or compact Base32768 form; click the format control to switch and
|
|
COPY to copy its dat:// address. Version shows the active
|
|
selected metadata-feed version and latest version; click the arrows to check out
|
|
another recorded version. The matching Merkle view shows the feed's block count
|
|
and a tree view of its active version.
|
|
The peer pane distinguishes discovered peer announcements from authenticated
|
|
connected peers with a marker on each buddy-list row. Double-click a peer to
|
|
open Cable-thang's encrypted direct-message pane. Copy the desired dat:// link
|
|
from the local ARCHIVE field, paste it into chat with Ctrl+V, and press Enter
|
|
to send it. Click a received dat:// message to copy it, then click the
|
|
right-hand ARCHIVE field and press Ctrl+V followed by Enter to begin importing
|
|
into the currently selected local directory. The
|
|
incoming archive appears in the lower transfer table while peers are found and
|
|
metadata downloads. The current Cesspool message record is Cable-specific and
|
|
is not Cabal feed interoperability.
|
|
.PP
|
|
By default dat-thang listens on UDP 3282 and cable-thang listens on UDP 3000,
|
|
the stable ports used by Cesspool LAN discovery. If a preferred port is busy,
|
|
the client chooses another known Cesspool port. Set DDAT_PORT to pin the local
|
|
port. With no configured rendezvous, discovery is limited to the local network;
|
|
across networks, both clients need a reachable Cesspool node.
|
|
The YOU panel shows the selected room's local Cable feed address. Like Cabal,
|
|
the key is scoped to that room's local feed and remains stable across restarts;
|
|
room and optional admin keys are separate. The CLI prints the full address with
|
|
.BR "cable whoami <room-address>" .
|
|
The panel also shows connected peers, discovered peers, and the total number of
|
|
loaded local directories available for sharing.
|
|
The lower table lists loaded archives as well as active transfers. Its progress
|
|
column is a bar: local archives are complete, while transfer bars count received
|
|
blocks against the peer's advertised feed lengths. Received blocks are checked
|
|
against SLEEP proofs and saved in per-feed .remote caches for later sessions.
|
|
For each local archive, TITLE and DESCRIPTION come from its root `dat.scm`
|
|
S-expression. Missing fields fall back to the directory name and archive key.
|
|
.SH OPTIONS
|
|
.TP
|
|
.B --version, -v
|
|
Print \fBdat-thang v0.0.002 (prototype, pre-alpha)\fR and exit.
|
|
.TP
|
|
.B --archive DIRECTORY
|
|
Start in DIRECTORY. If it contains an existing .dat archive, load that archive;
|
|
otherwise browse the directory without creating or sharing an archive. Defaults
|
|
to the current directory.
|
|
.TP
|
|
.B --site HOSTNAME
|
|
Display HOSTNAME in the site field.
|
|
.TP
|
|
.B --offline
|
|
Start with peer discovery disabled, even when the directory already has an
|
|
archive.
|
|
.TP
|
|
.B --smoke
|
|
Render one frame and save build/linux/dat-thang-smoke.bmp on GNU/Linux or
|
|
build/windows/dat-thang-smoke.bmp on Windows. Intended for headless
|
|
render checks.
|
|
.SH CONTROLS
|
|
.TP
|
|
.B F1
|
|
Show this manual page in the client. Use Up/Down or the mouse wheel to scroll;
|
|
press Escape to close it.
|
|
.TP
|
|
.B F9
|
|
Load an existing Dat archive from the selected directory. This does not create
|
|
an archive or start discovery; use ON to share it.
|
|
.TP
|
|
.B CREATE NEW DAT
|
|
Create a Dat archive for the selected local directory and import its current
|
|
files. Use ON to start discovery after creation.
|
|
.TP
|
|
.B IMPORT DAT
|
|
With no remote address entered, load an existing archive in the selected local
|
|
directory. To import a remote archive, enter a dat:// URL in the
|
|
right-hand SITE or ARCHIVE field, select an empty destination directory, then
|
|
click IMPORT DAT. Verified metadata and content blocks are cached below that
|
|
directory's .dat folder.
|
|
.TP
|
|
.B Escape
|
|
Toggle the client menu.
|
|
.TP
|
|
.B Mouse
|
|
Click OFF to disconnect all peers and go offline. Click ON to bring the client
|
|
online and announce loaded archives. With no loaded archives it still connects
|
|
to Cesspool without announcing a topic. Archive selection changes the local view.
|
|
Click entries in the right-hand pane to navigate
|
|
directories or select a filename. Click ARCHIVES above the pane to switch
|
|
between known local archives. The directory pane has its own scrollbar and
|
|
mouse-wheel scrolling. The bottom archive/transfer table includes known shared
|
|
archives and active transfers; its horizontal scrollbar can be dragged, and
|
|
the mouse wheel scrolls rows (Shift+wheel scrolls columns). Enter a remote dat:// address in the mirrored
|
|
SITE or ARCHIVE field before selecting IMPORT DAT. Drag transfer-table header dividers to resize
|
|
columns; use Shift+wheel over the table to scroll horizontally. The bottom
|
|
track indicates horizontal position. Right-click opens load, create, and
|
|
copy-address actions. COPY includes the selected archive version in its dat://
|
|
link.
|
|
.SH NETWORK
|
|
The client reads endpoints saved by \fBdat bootstrap add host:port\fR or
|
|
\fBdat bootstrap set host:port\fR from
|
|
$HOME/.config/dat-gpt/bootstrap and also accepts DDAT_BOOTSTRAP as a comma- or
|
|
semicolon-separated list. The Settings menu also edits this endpoint and
|
|
restarts discovery immediately. Run \fBcesspool-bootstrap\fR on the rendezvous
|
|
host with \fB--advertise HOST:PORT\fR to print the address clients should use.
|
|
It does not query an outside service for a public IP. Allow the chosen UDP
|
|
port through the host firewall and router.
|
|
This is Cesspool rendezvous for these C clients; it is not a BitTorrent DHT
|
|
node and cannot be substituted for the historical JavaScript Dat bootstrap
|
|
servers. OFF leaves every archive topic and closes the Cesspool socket. ON
|
|
starts archive discovery; the indicator turns green only after a Cesspool
|
|
response or connected peer.
|
|
.SH ENVIRONMENT
|
|
.TP
|
|
.B DDAT_BOOTSTRAP
|
|
Comma- or semicolon-separated Cesspool rendezvous endpoints, for example
|
|
127.0.0.1:3282.
|
|
Saved endpoints from dat bootstrap add are also loaded automatically.
|
|
.TP
|
|
.B DDAT_PORT
|
|
UDP listening port. If unset, Cesspool selects an available default port.
|
|
.TP
|
|
.B DAT_THANG_MANPAGE
|
|
Optional path to the dat-thang manual source displayed by F1.
|
|
.SH MENU
|
|
Escape opens the vertical Settings, Return, Exit menu. Settings contains
|
|
persistent controls for the default copied-address format, sonar audio, and
|
|
connecting on startup. Use Up/Down and Enter, or click an item. Return resumes
|
|
the client; Exit closes it. Escape from Settings returns to the menu.
|
|
.SH AUDIO
|
|
Click the speaker icon to play and send a two-second low square-wave cue.
|
|
Clicking the dolphin plays and sends a one-second arpeggiated chiptune cue.
|
|
The dolphin cue goes to connected authenticated peers. The speaker cue refreshes
|
|
discovery for the active archive and is sent to discovered peers as their secure
|
|
sessions become ready. Peers play received cues locally; the speaker response
|
|
causes the peer to return one dolphin chirp, which plays at the sender and marks
|
|
the peer found. The waveform viewer draws samples captured from the actual SDL
|
|
audio output.
|
|
.SH BUILD DATE
|
|
The header shows the program build date in Discordian format (ddate). The
|
|
calendar conversion is compiled directly into dat-thang; no external ddate
|
|
program or runtime lookup is needed on Windows or GNU/Linux.
|
|
.SH DILLO
|
|
To install the Dillo DPI helper for the current Dillo source, build with make, run make install using the
|
|
same PREFIX as Dillo, add proto.dat=dat/dat.dpi to ~/.dillo/dpidrc, and restart
|
|
Dillo. The helper first reads its local archive cache at
|
|
~/.dillo/dat/archives/XX/<key-tail>. On a cache miss, it can use the configured
|
|
Cesspool bootstrap to find a peer, authenticate the SLEEP session, and fetch
|
|
the archive metadata and content feeds into that cache. Start the bootstrap
|
|
before the clients so the first archive announcement is recorded. The Linux
|
|
side-by-side runbook uses the default GNU/Linux output path, build/linux, to
|
|
keep its objects separate from Windows artifacts in a shared checkout.
|
|
.SH SEE ALSO
|
|
ddat(1), dat(1)
|