Skip to content

feat: add pixelvault export command#7

Merged
facundofarias merged 1 commit into
mainfrom
feat/export-command
Jul 20, 2026
Merged

feat: add pixelvault export command#7
facundofarias merged 1 commit into
mainfrom
feat/export-command

Conversation

@facundofarias

Copy link
Copy Markdown
Member

Adds pixelvault export — pulls every image in a project as a tar archive (manifest.json + all images), the CLI half of the free no-lock-in "export everything" story.

Flow (secret-key, project-scoped):

  1. POST /v1/export → job
  2. poll GET /v1/export-jobs/:id (backoff 1s→5s, --timeout) with progress to stderr
  3. download the tar from /download → write to --output (default pixelvault-export-<job>.tar)
  4. optional --extract via the system tar

Safety: refuses to write a 0-byte archive; maps the 409 "already in progress" to a clear message. --json emits the final job; the archive path goes to stdout (progress to stderr) so it composes.

Depends on the API endpoints in pixelvault-dev/pixelvault#143 (not yet deployed) — the command builds against that contract; full end-to-end needs the API live.

Verified: typecheck + build clean, 30 tests pass (incl. the defaultOutputPath helper), --help renders.

🤖 Generated with Claude Code

Export every image in a project as a tar archive (manifest.json + all images)
via the async bulk-export API: POST /v1/export → poll GET /v1/export-jobs/:id →
download the tar. Flags: --output, --extract (system tar), --timeout, --json.

Refuses to write a 0-byte archive; surfaces the 409 "already in progress" case
with a helpful message. Progress to stderr, archive path to stdout.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@facundofarias
facundofarias merged commit 50f2151 into main Jul 20, 2026
2 checks passed
@facundofarias
facundofarias deleted the feat/export-command branch July 20, 2026 17:22
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