Skip to content

feat: single-file YAML bundle format, library group import support - #13

Merged
machado144 merged 1 commit into
mainfrom
feat/flat-yaml-export
Jul 9, 2026
Merged

feat: single-file YAML bundle format, library group import support#13
machado144 merged 1 commit into
mainfrom
feat/flat-yaml-export

Conversation

@machado144

Copy link
Copy Markdown
Contributor

Summary

  • New --flat bundle export format (loadout-config/v1): one self-contained YAML document, small enough to paste into a gist/doc — bundle import auto-detects it (and dir/tar.gz) by content, no new CLI verb.
  • Web UI: a "single YAML file" export option on /export (copyable + downloadable) and a "paste YAML" import tab on the dashboard's bundle import panel, alongside the existing archive upload.
  • Fixes a real gap in the core import path found while building this: library/groups.yaml was never wired into PlanImport/Apply for any bundle format (groups postdate the original profiles/library import support) — now new/conflicting groups are diffed and merged like profiles are, across all three bundle shapes.

This is PR 4 of 4 in the library-groups/export/flat-YAML sequence (#9, #10, #11, #12 merged earlier). Once this merges and main is verified green, next step is deleting the v1.4.0 release and cutting a fresh one covering all four PRs.

Test plan

  • go build ./..., go vet ./..., gofumpt -l ., go test -race ./..., make ci all green
  • make test-integration green, including a new TestBundleFlow_FlatYAML mirroring the existing tar.gz round-trip test
  • npx vitest run, npx tsc --noEmit green in web/
  • make build-web, refreshed internal/web/dist committed
  • Manual Playwright verification: exported a selection as flat YAML from /export (copy button works), pasted it into a fresh store's dashboard import panel, reviewed the plan, applied, confirmed the skill/library entry/group all landed correctly in the destination store's files
  • README updated (CLI table, Bundles section)

🤖 Generated with Claude Code

Adds a self-contained loadout-config/v1 YAML export/import format
alongside the existing directory/tar.gz bundle — small enough to paste
into a gist or doc. bundle import auto-detects the input shape by
content (gzip magic bytes vs YAML apiVersion), so no new CLI verb is
needed. The web UI gets a matching "single YAML file" export option
and a "paste YAML" import tab alongside the existing file upload.

Along the way, fixes a real gap in the core import path: library
groups (library/groups.yaml) were never wired into PlanImport/Apply
for any bundle format, since groups postdate the original
profiles/library import support.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown

StructLint — All checks passed

267 rules validated against .structlint.yaml. No violations found.

View full run · Powered by StructLint

@machado144
machado144 merged commit b0f4f8a into main Jul 9, 2026
6 of 12 checks passed
@machado144
machado144 deleted the feat/flat-yaml-export branch July 9, 2026 12:55
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