Skip to content

The host's command line

ChiakiNg.exe opens the console list when it is given no flag — the consoles on your network, with a Connect on any that is registered. Every flag below is declared in one list in app/Session/HostCommandLine.cs, and a name it does not declare is refused rather than ignored — a mistyped flag does not silently open the window.

Both tables are generated from that list at build time. If a flag is renamed in the application, the rename lands here in the same commit.

The ones the front page prints. Each does something a person running PPortal might want, and none of them needs a checkout. --consoles is what running it with no flag at all does; it is named here because a run that asked for a diagnostic screen instead can ask for this one back.

FlagTakesWhat it does
--selftestrun the host's own assertions and exit with the verdict
--controllersprint what SDL sees, for a pad that is plugged in now
--capture-controllerlog presses for twenty seconds; add --analog for the sticks
--analogwith --capture-controller: include the axes, which flood the log
--map-controlleropen the mapping screen against a real pad
--consolesopen the console list and connect to a registered console - what no flag does

The rest report on this repository rather than on the console. They are the reason this area exists: they are documented nowhere a reader could reach, and --help is a line each.

FlagTakesWhat it does
--recountcheck the sizes the backlog states, and print what corrects each
--applywith --recount: run those corrections through roadkeep, stopping on a refusal
--select-corpus<in> <out>keep the entries a replay can expect, and report what was dropped
--ratchet[id]list the shipped tasks no assertion names; with an id, where it is named
--backlogsplit the open lines into what can be started and what waits on something absent
--capture-mapping[path]render the mapping screen off-screen to a PNG
--record[path]record this session's exchange to a file, for PP297's replay
--capture-exchange[path]wake a registered console, run one session and record the exchange
--capture-datagrams[path]the same session, recording takion's arrivals and their times
--measure-decoder[name]the same session WITH a decoder, reporting how many frames it decoded
--show-stream[name]open a window and put a console's picture in it, with the named decoder
--microphonewith --show-stream: open a microphone and send it, which is off unless asked
--audio-prefill[n]with --show-stream: hold n decoded frames before the first, trading latency for a queue that does not run dry
--capture-wire[path]with --show-stream --via relay: write BOTH directions of the relay, which the replay corpus never holds
--console[name]with either capture: which registered console, by nickname
--capture-seconds[n]with any run that takes a length: how long, which sets the hold too
--via[address|relay]with --capture-datagrams: go through an address, or 'relay' to run one here and keep whole datagrams
--record-json-oracle[path]write down what json-c answers, so PP33 can delete it and keep the comparison
--record-takion-oracle[path]write down what takion's wrappers answer, so PP27 can delete them and keep the comparison
--record-framepath-oracle[path]the same for fec, the frame processor and the video receiver, which PP27's deletion also reaches
--replay-datagrams<path>replay a datagram capture through the managed receive path
--timedwith --replay-datagrams: time the MAC gate against the C over the capture
--dcomp-demoshow what one window composes, which PP163 is answered by looking at
--topmostwith --dcomp-demo: the control, asking the visual to cover WPF instead
--layerswith --dcomp-demo: the overlay PP319 chose, over the video plane

Two of them are worth naming here, because they are part of how work is committed rather than diagnostics you run once:

  • --recount checks every size the backlog states against the files it states them about, and prints the roadkeep call that corrects each. It writes nothing itself.
  • --ratchet lists the shipped tasks that no assertion mentions. The count may fall and may not rise, so a task shipped with no test naming its id turns the suite red in the commit that ships it.

Both refuse rather than answer when the host running them is older than app/, and name the source that moved. There is more than one ChiakiNg.exe on a machine that has built this tree — compile.cmd builds one and prints where, and a publish leaves another behind — and a stale copy reads the current backlog with rules the tree has moved past, which is a wrong answer that looks exactly like a right one. Run the host compile.cmd names.

Windows attenuates every other audio stream while a microphone on the communications endpoint is open — by 80% on the default setting. The console’s audio is one of those streams, so turning the microphone on quiets the game it is meant to accompany. Nothing in the run reports it as a fault: the attenuation happens in the system mixer, below anything the application counts, so the audio line still says every sample was played.

The host asks Windows not to do this, and prints what it got — ducking off where the request was accepted, ducking ON where it was not. On Windows 11 26200 the request is accepted and the attenuation happens anyway, measured against a console with a listener present. Where the sound matters, the setting is the remedy: Control Panel → Sound → Communications → Do nothing.