Skip to content

feat(cli): add unpublish command and align publish with new API#74

Open
jheddings wants to merge 2 commits intomainfrom
feat/unpublish-command
Open

feat(cli): add unpublish command and align publish with new API#74
jheddings wants to merge 2 commits intomainfrom
feat/unpublish-command

Conversation

@jheddings
Copy link
Copy Markdown
Collaborator

Summary

  • Adds the everywhere unpublish command (DELETE /api/v1/app/:name)
  • Updates publish to use the new POST /api/v1/apps/publish endpoint
  • Switches publish body from multipart/form-data to raw application/zip
  • Updates publish response shape from {id, referenceId, status, appType, creator} to {tenant, name, title, bundleUrl}

The name field from package.json is now the canonical plugin identifier across publish, unpublish, and bundle URLs — no UUID, no slug, no transformation.

unpublish reads the name from package.json in the current plugin directory, the same way publish does, so the CLI ergonomics match: run it from the plugin directory (or pass -D <plugin-dir>).

Breaking changes

  • The publish response shape changed. Anyone parsing id / referenceId / status / appType / creator will need to migrate to the new shape.
  • The publish request body is now a raw ZIP, not a multipart form.

Release

This change targets the next minor release: 0.3.0.

Test plan

  • Registry uploadToRegistry tests cover URL, headers, body shape, and response parsing for the new contract
  • Registry deleteFromRegistry tests cover URL, auth header, error paths
  • publish command tests cover login required, missing manifest, success, and auth.https=false
  • unpublish command tests cover login required, missing manifest, success, auth.https=false, and delete failure
  • Full suite: 320 tests passing
  • just check: typecheck + lint + format clean
  • End-to-end verification against a live server with the matching API change once that lands

jheddings and others added 2 commits May 6, 2026 14:12
- Add `everywhere unpublish` command — DELETE /api/v1/app/:name
- Update publish endpoint to POST /api/v1/apps/publish
- Switch publish body from multipart form to raw application/zip
- Update publish response shape to {tenant, name, title, bundleUrl}

The npm package name from package.json is the canonical plugin
identifier across publish, unpublish, and bundle URLs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- auth token: GET /auth/token → GET /api/v1/auth/token
- GraphQL data: /api/data/graphql → /api/v1/data/graphql
  (default in GraphQLResolver, dev-server proxy in view, vite plugin middleware)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant