Publish adom-tts to the wiki

Where this app lives (memorize):

  • Page: https://wiki.adom.inc/adom/adom-tts (org adom, slug adom-tts, type app)
  • Page title: Adom TTS — Text to Speech (the hero headline matches it verbatim)
  • CLI: adom-wiki — the ONLY wiki tool. adompkg, "wiki v1/v2", and any *.adom.cloud slug host are DEPRECATED; if a doc says otherwise it is stale.
  • The wiki has TWO unsynced layers: the package registry (pkg publish / pkg install — what installers get) and the git page repo (repo push — the Files tab, README, dev-skills/, publish-skills/, screenshots). Ship BOTH.

Release steps

  1. Bump every version file (any code change = new version; versions are immutable on the registry):

    cd /home/adom/project/adom-tts
    echo "X.Y.Z" > VERSION
    sed -i 's/^version = .*/version = "X.Y.Z"/' Cargo.toml
    sed -i 's/"version": "[0-9.]*"/"version": "X.Y.Z"/' package.json page.json
    
  2. Gate on tests, build, deploy locally (see dev-skills/adom-tts-dev for the full dev cycle and the byte-compare sweep):

    cargo test --release 2>&1 | grep -q "test result: ok" || { echo "TESTS FAILED"; exit 1; }
    ./build.sh && install -m 0755 target/release/adom-tts ~/.local/bin/adom-tts
    
  3. Publish the package — the binary ships INSIDE it. NO release uploads. Read the adom-wiki skill carefully: packages are resolved PER PLATFORM and the skill's own example says "a Linux consumer installs the package (CLI + skills)". Release assets exist ONLY for artifacts fetched OUTSIDE the install flow (a Windows installer a laptop downloads directly, pup's bridge zip that Adom Desktop fetches itself). adom-tts has no such consumer — every user is a Linux container running pkg install — so a release for adom-tts makes NO sense. (Got this wrong twice: first shipped src+pngs+ binary in a fat tarball AND a duplicate release; then over-corrected to a skills-only tarball with the binary as a release. Correct: lean allowlist WITH the binary, zero releases.)

    • package.json files allowlist: manifest + install/uninstall scripts + bin/adom-tts + skills/** + completions/** (~2.3 MB). NO src/, NO pngs (page assets via repo push). dev-/publish-skills auto-excluded.
    adom-wiki pkg pack --json    # VERIFY: ~10 files, ~2.3 MB, bin/adom-tts present
    adom-wiki pkg publish --org adom
    

    Then prove the loop: HOME=$(mktemp -d) adom-wiki pkg install adom/adom-tts and run $HOME/.local/bin/adom-tts --version from that fresh home.

  4. Push the source — README, src/, screenshots, page.json, and the dev + publish skills (they reach the page ONLY via repo push; the Skills tab shows them under its Dev / Publish sub-tabs):

    adom-wiki repo push adom/adom-tts -m "vX.Y.Z — <changelog>"
    
  5. Keep the hero linked. The hero lives in page.json ONLY (never embed it in the README):

    "hero": { "type": "image", "path": "screenshots/hero-v3.png" }
    

    If a publish/step ever clobbers page metadata, re-push page.json LAST and re-check the page header. Regenerate the hero itself with the adom-wiki-hero skill (fresh REAL player screenshot, bleed-bottom/midnight, title = the page title verbatim).

  6. Verify live — in pup, always (never claim published without looking):

    adom-desktop --target <laptop> browser_open_window '{"sessionId":"wiki-check","url":"https://wiki.adom.inc/adom/adom-tts?cb=<epoch>"}'
    adom-desktop --target <laptop> browser_screenshot '{"sessionId":"wiki-check"}'   # read the PNG it saves
    

    Check: version, hero renders, Skills tab shows User + Dev + Publish tiers, README intact, Install command correct, and NO EMOJIS anywhere in the README or skills (user rule — plain typographic marks only).

  7. Prove playback end-to-end (the release isn't done until a human can hear it):

    adom-tts say "release X.Y.Z verification" --out /tmp/rel.mp3 --thread release --play --confirm
    # must print: ✓ CONFIRMED
    

Stale things get DELETED, not deprecated (user rule, pre-launch)

We have not launched: leaving "[DEPRECATED]" garbage around is worse than removing it. A bad package VERSION: fix, bump, republish (registry versions are immutable; the new version supersedes). A stale PAGE, hero, or file: delete it outright — adom-wiki repo rm <ref> <path> for files, adom-wiki repo delete <ref> --hard --confirm for whole pages. Only reach for deprecation notices after we launch and third parties depend on things.

Skills live IN this repo (user rule)

Never create a standalone wiki skill page that just points at adom-tts — all skills associated with the app belong in THIS repo's tiers (skills/, dev-skills/, publish-skills/) so they version and ship with the app. Example: tts-pronunciation was a scattered standalone page and is now skills/tts-pronunciation/ here. The one sanctioned standalone is adom/hands-free — a cross-cutting trigger router, kept deliberately thin.

A rename is not just a slug change

Renaming a page = slug + title + brief/description + SKILL.md name + install paths + discovery triggers + THE HERO (the old pixels carry the old name — regenerate it with the adom-wiki-hero skill) + deleting old-name art and directories everywhere (wiki files, ~/.claude/skills, installers). The im-driving → hands-free rename missed the hero on the first pass; don't repeat that.

Distribution notes

  • Other containers pick the release up via their wiki auto-update hook; inside THIS container run the byte-compare sweep (dev skill) so every copy matches.
  • The running drainer self-supersedes to the new version on the next say --play — do not kill it.