You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailscale/types
Nick Khyl af3d3c433b types/prefs: add a package containing generic preference types
This adds a new package containing generic types to be used for defining preference hierarchies.
These include prefs.Item, prefs.List, prefs.StructList, and prefs.StructMap. Each of these types
represents a configurable preference, holding the preference's state, value, and metadata.
The metadata includes the default value (if it differs from the zero value of the Go type)
and flags indicating whether a preference is managed via syspolicy or is hidden/read-only for
another reason. This information can be marshaled and sent to the GUI, CLI and web clients
as a source of truth regarding preference configuration, management, and visibility/mutability states.

We plan to use these types to define device preferences, such as the updater preferences,
the permission mode to be used on Windows with #tailscale/corp#18342, and certain global options
that are currently exposed as tailscaled flags. We also aim to eventually use these types for
profile-local preferences in ipn.Prefs and and as a replacement for ipn.MaskedPrefs.

The generic preference types are compatible with the tailscale.com/cmd/viewer and
tailscale.com/cmd/cloner utilities.

Updates #12736

Signed-off-by: Nick Khyl <nickk@tailscale.com>
3 months ago
..
appctype appc,ipn/ipnlocal,types/appctype: implement control provided routes 10 months ago
dnstype all: use reflect.TypeFor now available in Go 1.22 (#11078) 10 months ago
empty all: update copyright and license headers 2 years ago
flagtype all: update copyright and license headers 2 years ago
ipproto all: use Go 1.22 range-over-int 7 months ago
key all: add test for package comments, fix, add comments as needed 5 months ago
lazy types/lazy: re-init SyncValue during test cleanup if it wasn't set before SetForTest 4 months ago
logger all: use Go 1.22 range-over-int 7 months ago
logid types/logid: add Add method (#12478) 5 months ago
netlogtype all: update copyright and license headers 2 years ago
netmap net/ipset, wgengine/filter/filtertype: add split-out packages 5 months ago
nettype wgengine/magicsock, types/nettype, etc: finish ReadFromUDPAddrPort netip migration 2 years ago
opt types/opt: add (Value[T]).GetOr(def T) T method 4 months ago
persist types/persist: remove unused field Persist.Provider 7 months ago
prefs types/prefs: add a package containing generic preference types 3 months ago
preftype cmd/tailscaled,*: add start of configuration file support 1 year ago
ptr all: update copyright and license headers 2 years ago
structs all: update copyright and license headers 2 years ago
tkatype types/tkatype: add test for MarshaledSignature's JSON format 1 year ago
views cmd/viewer, types/views, util/codegen: add viewer support for custom container types 4 months ago