Příspěvek předaný jako soubor
Až do 1.6 přicházel příspěvek od člověka u terminálu. Průvodce položil své otázky, otevřel editor, na konci se zeptal, co dál. Nic jiného ho napsat neumělo: ani skript, ani cron, ani telefon.
./blog.sh add post.md
dělá tutéž práci s markdownem předaným místo napsaným. Žádný editor, žádné otázky, žádný dialog na konci. Holé jméno souboru se hledá v incoming/, takže soubor může dorazit týmž nahráním jako fotografie, a jakmile je příspěvek zapsán, smaže se.
Kde by se průvodce ptal, tohle odmítá
Člověka se lze zeptat. Skriptu ne, takže z každé otázky je odmítnutí, které nic nezapíše: fotka, která se nedonahrála, prázdné tělo, soubor, který není text, druhé jméno souboru tam, kde se čekalo jedno. Alternativa – hádání – byla změřena na starém kódu, kde se značka pořadí bajtů před hlavičkou brala jako text těla: tři neviditelné bajty z editoru ve Windows a příspěvek dorazil bez titulku a bez štítků, pojmenovaný po slovech „title:" a „tags:", exit 0. 1.6 čte hlavičku skrz ně.
--json: jeden objekt, nic jiného
S --json je odpověď jediný objekt na standardním výstupu. Zapsaný příspěvek nese slug, path, state, url, deploy a warnings, každý klíč vždy přítomný. Odmítnutí nese ok: false, důvod jako kód a jednu větu.
A odmítnutí odchází s nulou. To je záměr a bylo k tomu třeba telefonu: Zkratky v iOS zahodí výstup vzdáleného příkazu, který selhal, takže každé odmítnutí, které mohl telefon potkat, se vrátilo jako holý stav a nic víc – přesně tehdy, když byl důvod to hlavní. Stav odpovídá na jedinou otázku, na kterou objekt nemůže: jestli vůbec nějaká odpověď dorazila. Nenulový stav znamená, že engine chybí nebo stroj není nastavený. Bez --json se nic nemění: próza na stderr a nenulový stav, jako vždy.
Draft, pokud soubor neřekne jinak
Soubor se zastaví u draftu. publish: yes v jeho hlavičce je jediná věc, o kterou si soubor smí říci a průvodce nikdy nemohl: jít rovnou ven, datum ustálené, oznámení odeslané, web znovu sestavený, odpověď nesoucí veřejnou adresu. Příspěvek odeslaný z vlaku nemá stůl, ke kterému by se vrátil, takže se rozhoduje při odeslání. Chybí-li, nebo je-li tam cokoli jiného než yes/true/1, je to draft.
U stolu jsou táž dvě rozhodnutí přepínače: publish <slug> --yes odpoví na dialog předem a --no-announce stránku vystaví a na Mastodon ani Bluesky nepošle nic – toot to potom může poslat ručně. Jednu věc za tebe --yes nerozhodne: příspěvek datovaný mimo nedávné okno se publikuje, ale neoznámí, a běh to řekne. Oznámení je ten jeden krok, který nejde vzít zpět.
--untrusted
Markdown, který přijel po drátě, dostává ještě jedno pravidlo: odkaz na obrázek smí jmenovat jen holé jméno souboru. Bez něj  načte soubor do médií příspěvku – u stolu správně, tam ten soubor má kdokoli, kdo to napsal, tak jako tak, a dveře v okamžiku, kdy markdown přichází odjinud.
Nic z toho nepřidává API, token ani naslouchající port. Soubor se zapíše někam, kam engine vidí, a spustí se příkaz. To je celá integrační plocha a je to táž, jakou má člověk.

Komentáře