Skip to content

docs: an onboarding guide, and the stop verb the CLI was missing - #7

Merged
Flatts3000 merged 2 commits into
mainfrom
docs/onboarding
Aug 5, 2026
Merged

docs: an onboarding guide, and the stop verb the CLI was missing#7
Flatts3000 merged 2 commits into
mainfrom
docs/onboarding

Conversation

@Flatts3000

Copy link
Copy Markdown
Owner

What this changes

Adds docs/onboarding.md, and the stop subcommand that writing it revealed was missing.

Why two paths

A mod repo already has a build tool that owns the launch, so devbridge slots into a Gradle run
block and the whole thing is a systemProperty. A modpack has no build tool, and the CurseForge
app offers no field for a system property, which is the entire reason gamebridge launch exists.
Everything after startup is identical. Nothing said that in one place before.

The gap it found

The protocol has a stop verb. The CLI had no way to send it, so an unattended loop could start a
game and never close one. cmd stop is not a substitute: /stop is a dedicated server's console
command and does not exist in singleplayer, which is the case this tool is for. Now its own
subcommand, refusing with a useful message when pointed at RCON.

The guide also corrects something the existing docs would have taught wrongly: options belong to the
tool, not the verb, so cmd "..." --player @s is an "unrecognized arguments" error and
--player @s cmd "..." is right. I wrote it the wrong way round first and only caught it by running
it.

Verified

Everything asserted in the guide was checked on this machine rather than recalled:

  • stop is registered, refuses without --devbridge, and routes when given one.
  • --player @s cmd "..." parses; the form the guide previously showed does not.
  • The Trashlands pack guard it cites is real - tools/check_pack_deps.py defines
    DEV_ONLY_MODS = ("devbridge",) and runs in two of that repo's workflows.
  • The verb table, the ping fields, the ::1 behaviour, the console-versus-player distinction and
    the launch flow were all exercised against a running game while building feat(gamebridge): launch an instance with devbridge switched on #6.

Not verified: the Path A Gradle snippet end to end in a fresh mod repo. It is the same block this
repo's README has carried since the first commit and that Recompile uses today.

Two ways into this tool and they are not the same shape. A mod repo already has a build
tool that owns the launch, so devbridge slots into a Gradle run block. A modpack has no
build tool, which is why gamebridge launch exists. Everything after startup is identical,
and until now nothing said so in one place.

Writing it turned up a real gap: the protocol has a stop verb and the CLI had no way to
send it. An unattended loop could start a game and never close one, and `cmd stop` is not
a substitute - /stop is a dedicated server's console command and does not exist in
singleplayer, which is the case this whole tool is for. Added as its own subcommand.

The guide also corrects a mistake the docs would otherwise have taught: options belong to
the tool rather than the verb, so `cmd "..." --player @s` is an unrecognized-arguments
error and `--player @s cmd "..."` is right.

Everything in it was checked against this machine rather than remembered, including the
Trashlands pack guard it cites, which is real (tools/check_pack_deps.py, DEV_ONLY_MODS) and
runs in two of that repo's workflows.
Review of this branch. The guide told readers not to reuse somebody else's port and then
supplied 25580 six times, which is the exact number two projects on this machine collided
on and the reason that paragraph exists. A document that demonstrates the mistake it warns
about teaches the mistake.

Path A now takes '<your port>', which is not a number and so fails at startup with
"devbridge.port is not a number" naming the property - a better outcome than opening a
socket somebody did not choose. Path B sets PORT once at the top, so the worked example
stays runnable after one edit.

The remaining 25580 is in the sentence describing what happened, where it belongs.

Also retitles the command table. It lists CLI subcommands rather than protocol verbs, and
the two differ: shot is the screenshot verb, and launch is not a verb at all because the
game is not running yet.
@Flatts3000
Flatts3000 merged commit c8a5a2e into main Aug 5, 2026
1 check passed
@Flatts3000
Flatts3000 deleted the docs/onboarding branch August 5, 2026 01:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant