Skip to content

Add channel exports with resumable one-way sync - #31

Merged
dzucconi merged 2 commits into
mainfrom
codex/channel-export-sync
Oct 22, 2026
Merged

dzucconi merged 2 commits into
mainfrom
codex/channel-export-sync

Conversation

@dzucconi

Copy link
Copy Markdown
Member

Summary

Add arena download, with export and sync aliases, building on the idea in #26 and matching the web export's filenames and CSV columns.

arena download <channel> [directory]
  → assets, text, source shortcuts
  → manifest.json, index.html, <slug>.csv
  → optional ZIP
repeat → fetch changes, reuse files, reconcile names

Sync runs one way from Are.na. It preserves local edits, retains removed items by default, and recovers interrupted transfers and file moves. Connected channels are saved as shortcuts. Includes bounded concurrency, retries, cancellation, and NDJSON progress.

Evidence

  • Before: No channel export command in the CLI.
    After: All three command names share help and validation; tests cover export formats, repeat syncs, conflicts, pruning, ZIP contents, and interrupted moves.
  • Validation: 153 tests pass in cassette replay mode, plus type checking, build, formatting, and whitespace checks. An independent three-file rotation recovers at all 13 interruption checkpoints with asset downloads disabled.

Merge Danger

Door: Two-way

The feature can be reverted without an API or data migration. Local actions are consequential: --overwrite replaces local edits, --prune deletes unchanged managed files absent from the export, and --zip replaces an existing ZIP at the specified path.

Blast Radius: Filesystem

Writes stay in the selected export directory and ZIP path. Are.na content is read only. Shared changes to import are limited to extracting its existing progress bar.

@dzucconi dzucconi added the minor label Oct 22, 2026
@dzucconi
dzucconi merged commit 899b249 into main Oct 22, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant