You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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
% 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
% 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
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.
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.
Missing space between ⚙️ and "macOS Prefs" — Will fix.
Ghosting on NPM and Taps tabs — Could you share a screenshot? That would help track it down.
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
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.
⚙️ spacing — Added trailing space to the icon so it renders consistently across terminals.
Activity
github-actions commentedon Mar 18, 2026
👋 Thanks for opening this issue!
Welcome to OpenBoot! We appreciate your contribution to the project.
To help us address this quickly:
openboot version)@fullstackjam will review this soon.
fullstackjam commentedon Mar 19, 2026
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_prefsrather 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 likecom.apple.dockwere being parsed incorrectly (split at the first dot instead of the last), and thetypefield could be silently dropped during serialization. Neither would have affected what shows up in the export, but both matter for correctness when runningopenboot 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 (thedescfield 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_presetappearing 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 openbootto get v0.44.0, then runopenboot snapshot pushagain.UnderpantsGnome commentedon Mar 19, 2026
I tried pushing the same JSON as yesterday with
0.45.0and got this error:fullstackjam commentedon Mar 19, 2026
Fixed in v0.45.1 —
openboot pushnow acceptspackagesas either:{"formulae": [], "casks": [], "taps": [], "npm": []}["git", "curl", "jq"](treated as formulae)Please update and try again:
UnderpantsGnome commentedon Mar 19, 2026
still happening
fullstackjam commentedon Mar 19, 2026
is there one? https://gist.githubusercontent.com/UnderpantsGnome/c1c620f0551a7ff5ee92e76437cc1ee2/raw/
UnderpantsGnome commentedon Mar 19, 2026
This is the file I'm trying to push
https://gist.githubusercontent.com/UnderpantsGnome/c1c620f0551a7ff5ee92e76437cc1ee2/raw/40e35f808570b51cb0dc2e6169d950e1348295ee/pushed.json
fullstackjam commentedon Mar 19, 2026
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.Tested locally with your exact gist file — parsing succeeds.
UnderpantsGnome commentedon Mar 19, 2026
pushworksexportworkssnapshot --importdoes not list any of themacos_prefsortaps, I'm guessing because they exported under thesnapshotkey.Unrelated: I noticed there's a missing space between the ⚙️ and
macOS Prefsin the TUI, and the ghosting is still happening on the NPM and Taps tabs.fullstackjam commentedon Mar 19, 2026
Glad push and export are working now!
The three issues you mentioned:
snapshot --importmissing macos_prefs and taps — I looked into this more closely. Themacos_prefsshowing asnullin 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 (includingmacos_prefs) will be stored correctly.We did find and fix a small gap on the server side —
tapsweren't being extracted into the packages list when creating a config from a snapshot. That's deployed now.Missing space between ⚙️ and "macOS Prefs" — Will fix.
Ghosting on NPM and Taps tabs — Could you share a screenshot? That would help track it down.
UnderpantsGnome commentedon Mar 19, 2026
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
edis still therefullstackjam commentedon Mar 19, 2026
v0.45.4 fixes both TUI issues:
Ghost text — Root cause was that lines in
View()weren't padded to terminal width, so switching tabs left stale characters behind. AddedpadAllLines()that wraps everyView()return across all three TUI components (package selector, snapshot editor, macOS selector). No more "No itemsed" or similar artifacts.⚙️ spacing — Added trailing space to the icon so it renders consistently across terminals.
UnderpantsGnome commentedon Mar 19, 2026
Here are the in (push) and out (export) files.
fix: accept typed object array packages in push config
fullstackjam commentedon Mar 20, 2026
Fixed in v0.45.5 —
openboot pushnow accepts config files with typed package objects ([{"name":"git","type":"formula"}]).Update with
brew upgrade openbootand try again. Thanks for the report and the sample files!UnderpantsGnome commentedon Mar 20, 2026
push and export work, but the
macos_prefsare still nested undersnapshotso they don't importfullstackjam commentedon Mar 21, 2026
Fixed in v0.45.7 — both server and client side.
Server: The API now includes
macos_prefsas a top-level field when you export a config, so it's no longer buried inside thesnapshotobject.Client: Even with older exported files where
macos_prefsis nested undersnapshot, the CLI will now find and import them correctly.To get a clean round-trip:
brew upgrade openbootto get v0.45.7macos_prefsat the top levelopenboot snapshot --importshould now show all your macOS preferencesThat said, even without re-exporting, v0.45.7 can import from the old nested format too.
UnderpantsGnome commentedon Mar 21, 2026
I did a push and export, the
macos_prefswere still nested, but the import works, so I guess it's not a big deal.fix: accept flat array format for packages in snapshot push
fix: handle typed object array in snapshot packages unmarshal