hd-dock: the Hydrogen Desktop app launcher

The dock is the launcher rail on the right edge of the HD workspace. Every card in it is a wiki app page. The dock resolves what to SHOW (name, brief, hero) from the page itself and how to LAUNCH from a dock block the app declares. Display is never duplicated into the dock; the page is the single source of truth.

The list has two layers

  1. The global manifest (adom-curated). HD fetches a public manifest and renders its apps. Only the adom team edits it; featured and order exist only here. It is world-readable at:

    https://wiki.adom.inc/blob/bootstrap/hd-bootstrap/dock/apps.json

    HD refreshes it on launch and then on the poll cadence the manifest itself declares (poll_seconds, currently 6 hours), so curation changes never wait for an HD release. Want your app on the global list? Make it dock-ready (below), then open an issue on the adom/hydrogen-desktop wiki page asking for listing; the adom team vets and merges.

  2. User-added apps (self-serve, local). Any user adds any public wiki app from Dock settings (the gear at the top of the rail) with owner/slug, or by asking their AI ("add adom/orbital-lab to my dock"). These render in All apps, are pinnable, and persist locally. They never affect other users.

The dock block (what an app declares)

In the app's wiki package.json:

"dock": {
  "webview": { "title": "Adom TSCi", "favicon": "icons/tsci.svg" },
  "launch": {
    "mode": "container_command",
    "steps": [
      { "label": "Installing Adom TSCi",
        "run": "adom-wiki pkg install adom/adom-tsci",
        "skip_if": "command -v adom-tsci",
        "timeout_seconds": 180 },
      { "label": "Starting the board viewer",
        "run": "adom-tsci serve --print-url",
        "await": "url",
        "timeout_seconds": 60 }
    ],
    "on_ready": "navigate_placeholder"
  }
}

webview

Field Required Meaning
title yes Webview tab title while the app is loaded
favicon no Tab icon, a path in the app's page repo
url for mode: "webview" Page to load directly (hosted app, or the wiki page itself)

launch

  • mode: "webview": nothing to install; the dock loads webview.url directly.
  • mode: "container_command": run steps in order in the user's workspace container, then on_ready: "navigate_placeholder" navigates the pre-loaded webview to the URL a step produced.
Step field Required Meaning
label yes Shown in the launch toast while the step runs
run yes The command
skip_if no Probe command; exit 0 skips the step (idempotent installs)
await no url: scrape the first URL the command prints, hold for on_ready
url_pattern no Scrape regex, default https?://\S+
timeout_seconds no Per-step budget; timing out fails the launch with this label

The --print-url convention is the whole integration contract: a dock-ready server verb prints its own reachable URL to stdout and keeps serving.

The loading screen is free

The instant a launch involves a webview, HD paints the panel with the workspace theme background token and runs the Adom orbital loading animation (transparent, so it reflects any theme) until the app URL has truly loaded, then fades it out. Install steps stay behind the mark with their labels ticking in the launch toast. Apps bundle nothing and opt into nothing. Details and the embeddable single-file animation: the adom/orbital-lab wiki page.

Publisher checklist (make your app dock-ready)

  1. Public wiki page with a hero and a billboard-quality one-line brief; the dock shows exactly these.
  2. Install step is adom-wiki pkg install <owner>/<slug> with a skip_if probe so relaunches skip it.
  3. Server verb takes --print-url; that step gets await: "url".
  4. Sane timeout_seconds (180 install / 60 serve are good defaults).
  5. Add the dock block to package.json, publish the page.
  6. Test from your own dock: Dock settings, Add app, owner/slug, click it, watch the steps run behind the loading mark.

Adding an app for a user (AI recipe)

When the user asks you to add a wiki app to their dock:

  1. Confirm the page exists and is public (adom-wiki discover search).
  2. Open Dock settings (gear at the top of the rail), Add app, enter owner/slug; or drive the equivalent HD API if you are automating.
  3. If the page has no dock block, it still loads as a plain webview of its wiki page; tell the user launch steps need the block and point the publisher at this skill.