feat(data): granular full-site export dialog + cmd+k Export#68
Merged
Conversation
Rebuild the Data-workspace Export dialog as a sibling of the Site Import
modal: a two-column category navigator + detail pane, everything selected
by default so the primary action is a one-click full export. Content
tables expose a per-row checklist (pages/posts/components/…) with per-table
All/None; shell, media, folders and redirects are all-or-nothing toggles.
Make a full export actually round-trip into a fresh instance identically by
extending the bundle to also carry the media folder tree (+ each asset's
folder membership) and published-URL redirects. Add includeMediaFolders /
includeRedirects flags, an /export/summary endpoint for category counts,
extended preview totals + import counters, and replace-strategy restore
(parent-first folder ordering, post-write membership assignment, redirects
inserted after their target rows). Credentials and instance-runtime state
are deliberately excluded from the portable bundle.
Replace the flat tables[]+rowIds export request with a unified
tables: { tableId, rowIds? }[] model (omit → full export; per-entry rowIds
→ subset). A new round-trip test proves folders, membership and redirects
survive export → import into a pristine instance.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Hoist the Export dialog to a global modal (SiteExportModal) mounted at the admin shell and driven by adminUi.siteExport, mirroring SiteImportModal. Add a "Export Site" Spotlight command (data.export capability, available on any workspace) so export is reachable from cmd+k anywhere, and route the Data workspace's Export button + grid "Export selected" through the same openSiteExport(context) store action instead of a page-local dialog. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
| ${input.name}, | ||
| ${input.slug}, | ||
| ${input.sortOrder}, | ||
| ${null} |
Full-export overview (category navigator + detail) and the per-row content checklist, for the PR / feature doc. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
Rebuilds the Export dialog into a polished sibling of the Site Import modal, makes a full export round-trip into a fresh instance identically, and makes Export reachable from cmd+k everywhere.
Screenshots
Full export — category navigator + detail (everything selected by default):
Per-row checklist for a content table (All / None + live count):
UX — granular, full-export-by-default
Select all/Select none.Reachable from cmd+k
SiteExportModal) driven byadminUi.siteExport, plus an "Export Site" Spotlight command (data.export, any workspace). The Data-workspace Export button and grid "Export selected" now route through the sameopenSiteExport(context)store action.Backend — close the "identical" gaps
The bundle now also carries media folders (the tree) + each asset's
folderIdsmembership, and redirects (old URL → row, filtered self-consistent). NewincludeMediaFolders/includeRedirectsflags, an/export/summaryendpoint, extended preview totals + import counters, andreplace-strategy restore (parent-first folder ordering, post-write membership assignment, redirects after their target rows).Deliberately excluded from a portable bundle: credentials (passwords, AI keys), instance-runtime state (sessions, audit logs), plugin package bytes.
Request model
Replaces flat
tables: string[]+ globalrowIdswith a unifiedtables: { tableId, rowIds? }[](omit → full export; per-entryrowIds→ subset).Verification
bun run build✅ ·bun run lint✅ ·bun test✅ 5446 pass, 0 failreplace-import into a pristine instance; new Spotlight-command test covers the cmd+k entry; manually verified cmd+k → "Export Site" opens the dialog.Notes
docs/features/site-transfer.mdupdated.🤖 Generated with Claude Code