Skip to content

push then export diffs #12

Closed
Closed

Description

@UnderpantsGnome

The new push command gets me closer to what I'm looking for, thank you 🙂

This gist shows what I pushed, and what I get when I export the config.

None of the macos_prefs are exported and all the descriptions, including the main one are empty.

There is a base_preset setting that did not exist in the push.

The packages are not what I pushed.

Activity

  1. github-actions commented on Mar 18, 2026

    @github-actions

    👋 Thanks for opening this issue!

    Welcome to OpenBoot! We appreciate your contribution to the project.

    To help us address this quickly:

    • If reporting a bug, please include your macOS version and OpenBoot version (openboot version)
    • If requesting a feature, describe your use case
    • If you have questions, check out our documentation

    @fullstackjam will review this soon.

  2. fullstackjam commented on Mar 19, 2026

    @fullstackjam
    Member

    Hey @UnderpantsGnome, thanks for the detailed gist — that made it easy to trace through exactly what happened.

    Packages not matching (42 vs 70+) — this was a real bug. When uploading a snapshot, the server was only keeping packages it recognized from its own catalog, so anything outside that set — awscli, duckdb, mysql@8.4, mosquitto, etc. — was silently dropped. That's been fixed; the server now preserves everything from your snapshot regardless of whether it appears in the catalog. Please push again and you should see your full package list.

    macOS preferences — they are being stored in the snapshot and will be in your exported JSON, but they're nested under snapshot.macos_prefs rather than at the top level like in your pushed file. If you weren't seeing them there at all, re-pushing should help. Separately, v0.44.0 (released today) fixed two bugs in how preferences are actually applied during install: preference domains like com.apple.dock were being parsed incorrectly (split at the first dot instead of the last), and the type field could be silently dropped during serialization. Neither would have affected what shows up in the export, but both matter for correctness when running openboot install.

    Descriptions all empty — two separate things here. The config's main description is set from the prompts during openboot snapshot push — if you left it blank at that step, it'll be blank on the config. You can update it anytime in the dashboard. As for package descriptions (the desc field on each package), those aren't currently captured in the snapshot format — packages are stored as plain names without descriptions. That's a limitation we can look at improving.

    base_preset appearing in the export — expected behavior. The server infers a base preset from your installed packages and stores it with the config. It doesn't affect what gets installed.

    To get a clean result: brew upgrade openboot to get v0.44.0, then run openboot snapshot push again.

  3. UnderpantsGnome commented on Mar 19, 2026

    @UnderpantsGnome
    Author

    I tried pushing the same JSON as yesterday with 0.45.0 and got this error:

    % openboot push openboot-new.json
    Error: parse snapshot: json: cannot unmarshal array into Go struct field Snapshot.packages of type snapshot.PackageSnapshot
    
  4. fullstackjam commented on Mar 19, 2026

    @fullstackjam
    Member

    Fixed in v0.45.1 — openboot push now accepts packages as either:

    • Structured: {"formulae": [], "casks": [], "taps": [], "npm": []}
    • Flat array: ["git", "curl", "jq"] (treated as formulae)

    Please update and try again:

    brew upgrade openboot
    openboot push openboot-new.json
  5. UnderpantsGnome commented on Mar 19, 2026

    @UnderpantsGnome
    Author

    still happening

    % openboot version
    OpenBoot v0.45.1
    
    % openboot push openboot-new.json
    Error: parse snapshot: packages must be an object {formulae,casks,taps,npm} or a string array
    
  6. fullstackjam commented on Mar 19, 2026

    @fullstackjam
    Member

    still happening

    % openboot version
    OpenBoot v0.45.1
    
    % openboot push openboot-new.json
    Error: parse snapshot: packages must be an object {formulae,casks,taps,npm} or a string array
    

    is there one? https://gist.githubusercontent.com/UnderpantsGnome/c1c620f0551a7ff5ee92e76437cc1ee2/raw/

  7. fullstackjam commented on Mar 19, 2026

    @fullstackjam
    Member

    v0.45.2 is out — this should fix it for real this time. The previous fix only handled flat string arrays, but your file uses the typed object format ([{"name":"git","type":"formula","desc":"..."}]). Now all three formats work.

    brew upgrade openboot
    openboot push openboot-new.json

    Tested locally with your exact gist file — parsing succeeds.

  8. UnderpantsGnome commented on Mar 19, 2026

    @UnderpantsGnome
    Author

    push works
    export works

    snapshot --import does not list any of the macos_prefs or taps, I'm guessing because they exported under the snapshot key.

    Unrelated: I noticed there's a missing space between the ⚙️ and macOS Prefs in the TUI, and the ghosting is still happening on the NPM and Taps tabs.

  9. fullstackjam commented on Mar 19, 2026

    @fullstackjam
    Member

    Glad push and export are working now!

    The three issues you mentioned:

    1. snapshot --import missing macos_prefs and taps — I looked into this more closely. The macos_prefs showing as null in your export was because the earlier push attempts failed (before v0.45.2), so the snapshot data never reached the server. Your config was likely created through the dashboard, not via a successful push. If you re-push your file now, the full snapshot (including macos_prefs) will be stored correctly.

      We did find and fix a small gap on the server side — taps weren't being extracted into the packages list when creating a config from a snapshot. That's deployed now.

    2. Missing space between ⚙️ and "macOS Prefs" — Will fix.

    3. Ghosting on NPM and Taps tabs — Could you share a screenshot? That would help track it down.

  10. UnderpantsGnome commented on Mar 19, 2026

    @UnderpantsGnome
    Author

    It's the same as the other tabs you fixed, you can see that alfred shows up as the first Cask, when I switch to the NPM tab you can see the ed is still there

    Image Image
  11. fullstackjam commented on Mar 19, 2026

    @fullstackjam
    Member

    v0.45.4 fixes both TUI issues:

    1. Ghost text — Root cause was that lines in View() weren't padded to terminal width, so switching tabs left stale characters behind. Added padAllLines() that wraps every View() return across all three TUI components (package selector, snapshot editor, macOS selector). No more "No itemsed" or similar artifacts.

    2. ⚙️ spacing — Added trailing space to the icon so it renders consistently across terminals.

    brew upgrade openboot
  12. UnderpantsGnome commented on Mar 19, 2026

    @UnderpantsGnome
    Author
    % openboot version
    OpenBoot v0.45.4
    
    % openboot push michael-full.json
    Error: parse config: json: cannot unmarshal object into Go struct field RemoteConfig.packages of type string
    

    Here are the in (push) and out (export) files.

  13. added a commit that references this issue on Mar 19, 2026
    db6adab
  14. fullstackjam commented on Mar 20, 2026

    @fullstackjam
    Member

    Fixed in v0.45.5 — openboot push now accepts config files with typed package objects ([{"name":"git","type":"formula"}]).

    Update with brew upgrade openboot and try again. Thanks for the report and the sample files!

  15. UnderpantsGnome commented on Mar 20, 2026

    @UnderpantsGnome
    Author

    push and export work, but the macos_prefs are still nested under snapshot so they don't import

  16. fullstackjam commented on Mar 21, 2026

    @fullstackjam
    Member

    Fixed in v0.45.7 — both server and client side.

    Server: The API now includes macos_prefs as a top-level field when you export a config, so it's no longer buried inside the snapshot object.

    Client: Even with older exported files where macos_prefs is nested under snapshot, the CLI will now find and import them correctly.

    To get a clean round-trip:

    1. brew upgrade openboot to get v0.45.7
    2. Re-export your config from the dashboard — the new export will have macos_prefs at the top level
    3. openboot snapshot --import should now show all your macOS preferences

    That said, even without re-exporting, v0.45.7 can import from the old nested format too.

  17. UnderpantsGnome commented on Mar 21, 2026

    @UnderpantsGnome
    Author

    I did a push and export, the macos_prefs were still nested, but the import works, so I guess it's not a big deal.

  18. added 2 commits that reference this issue on Apr 16, 2026
    3b8a12c
    7c9ed44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions