v1.7.0 — A terminal CLI on npm & bulk site operations

Released 2026-07-03 · commit pending merge · PR #47

Highlights

  • dropfast CLI — a first-party command line over the whole REST API, now published on npm: npm install -g @dropfast/cli.
  • Bulk operations — change settings, edit metadata, or delete across many sites in one API call, dry-run by default.
  • Agent-first everywheredropfast llms prints the entire command tree as JSON, and --json is the default when piped.

What's new

The dropfast CLI — publish and manage from the terminal

DropFast now has a first-party command line, published to npm as @dropfast/cli. Install it once and the dropfast command wraps the entire v1 REST API — publish a file, folder, or stdin (directories are zipped with index.html at the root), list and search your sites, walk versions and diffs, edit metadata, run the comment review loop, manage aliases, sharing grants, and teams.

bash
npm install -g @dropfast/cli
dropfast publish ./report.html --access private --meta df.project=acme

It's a thin client — the API's {code, message, fix} errors verbatim, deterministic exit codes (0/1/2/3/4/5), and --json output by default whenever stdout isn't a terminal, so agents and scripts get machine-readable results without asking. dropfast publish tracks each path in ~/.dropfast/state.json, so re-publishing the same path pushes a new version at the same slug and URL instead of minting a new one. Full command reference at /docs/cli; dropfast llms prints the whole tree as JSON.

Bulk site operations — one call, not a loop

A new endpoint, POST /api/v1/sites/bulk, applies one operation across many sites at once: change settings (access mode, password, comments), merge or unset metadata, or delete. Pick the targets with a metadata filter or an explicit slug list (up to 500), and every call takes a required, explicit dryRun flag so you preview exactly what would change before committing — the preview predicts per-row failures the real run would hit. Execution is best-effort per row: a partial failure still returns 200 with a per-slug results[] and a summary, so one bad row never sinks the batch.

bash
# preview, then execute — flip a whole project to private in one call
dropfast bulk set --filter df.project=acme --access private
dropfast bulk set --filter df.project=acme --access private --yes

Improvements

  • GET /api/v1/sites/{slug} now returns the site's metadata object, matching the list endpoint.
  • The dropfast-publish skill (v1.2.0) was rebuilt as pure policy over the CLI — private-by-default visibility, df.* tagging, and the review loop — with the CLI owning the plumbing. Now that the CLI is on npm, the skill and docs prefer the global dropfast binary and fall back to the in-repo runner; the hosted zero-install curl skill stays as the fallback.

← v1.6.0

Edit this page on GitHub