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
{{ message }}
Repository navigation
Current-host preferences and targeted dictionary updates in bootstrap defaults
#12981
The typed plist support in 2026.9.3 (#12947) covers a lot of preferences that previously needed scripts. Two additions would let me move more macOS setup into bootstrap defaults.
Following the feedback in #12983, both use one explicit entry form alongside the existing [bootstrap.macos.defaults] shorthand.
Current-host preferences
Some settings use defaults -currentHost. An entry can select that scope:
The optional host defaults to "any". Host scope is part of preference identity for merging, reads, writes, synchronization, and status, so the same domain and key can be managed independently in each scope. Existing shorthand defaults retain their whole-value, any-host behavior.
Targeted dictionary updates
For shared dictionaries such as AppleSymbolicHotKeys, an optional path selects a nested value while preserving the other shortcuts and their settings:
Paths work in either host scope. Each component is a literal dictionary key. Updates retain siblings and their plist types, including types TOML cannot express. Missing dictionaries are created; an existing non-dictionary along the path is an error. Arrays remain whole values, with no index operations. Status compares only the selected value.
Exact entries merge global → local, with global-domain aliases normalized before merging. Overlapping paths, or a whole-value declaration and a path targeting the same preference in the same host scope, are rejected before writing.
Both additions have merged: #12983 adds the shared entry form and current-host support, and #12984 adds dictionary paths in either host scope. The related history path fix, #12982, has also merged.
All three PRs have merged: #12982 fixes history path aliases, #12983 adds explicit defaults entries and current-host support, and #12984 adds targeted dictionary updates in either host scope.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
The typed plist support in 2026.9.3 (#12947) covers a lot of preferences that previously needed scripts. Two additions would let me move more macOS setup into bootstrap defaults.
Following the feedback in #12983, both use one explicit entry form alongside the existing
[bootstrap.macos.defaults]shorthand.Current-host preferences
Some settings use
defaults -currentHost. An entry can select that scope:The optional
hostdefaults to"any". Host scope is part of preference identity for merging, reads, writes, synchronization, and status, so the same domain and key can be managed independently in each scope. Existing shorthand defaults retain their whole-value, any-host behavior.Targeted dictionary updates
For shared dictionaries such as
AppleSymbolicHotKeys, an optionalpathselects a nested value while preserving the other shortcuts and their settings:Paths work in either host scope. Each component is a literal dictionary key. Updates retain siblings and their plist types, including types TOML cannot express. Missing dictionaries are created; an existing non-dictionary along the path is an error. Arrays remain whole values, with no index operations. Status compares only the selected value.
Exact entries merge global → local, with global-domain aliases normalized before merging. Overlapping paths, or a whole-value declaration and a path targeting the same preference in the same host scope, are rejected before writing.
Both additions have merged: #12983 adds the shared entry form and current-host support, and #12984 adds dictionary paths in either host scope. The related history path fix, #12982, has also merged.
All reactions