Skip to content
This repository was archived by the owner on Jul 13, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1194 commits
Select commit Hold shift + click to select a range
826fd54
tsweb/varz: only export numeric expvar.Map values
knyar Feb 6, 2026
35e656a
tsweb/varz: remove unnecessary Map.Init() calls in tests
knyar Feb 6, 2026
fe69b7f
cmd/tailscale: add event bus queue depth debugging
raggi Feb 6, 2026
9ba2a80
go.toolchain.{rev,next.rev}: update to Go 1.25.7 / Go 1.26rc3 (#18633)
awly Feb 6, 2026
5eaaf97
tailcfg: add peerRelay bool to hostinfo
KevinLiang10 Feb 4, 2026
a3215f1
cmd/tailscale,feature/featuretags: make webbrowser and colorable deps…
bradfitz Feb 8, 2026
dfba01c
cmd/tailscaled: update documentation url
timtailscale Feb 8, 2026
fff6232
flake.nix: update NixOS wiki link (#18662)
faukah Feb 9, 2026
00e180c
go.mod: update bart dep to v0.26.1 (#18659)
amalscale Feb 9, 2026
5a5572e
tstun,wgengine: add new datapath hooks for intercepting Connectors 2025
mzbenami Dec 11, 2025
d26d3fc
.github/workflows: add macos runner
bradfitz Feb 9, 2026
770bf00
tool/gocross: replace use of Start-Process -Wait flag with WaitForExit
dblohm7 Feb 9, 2026
e4008d1
cmd/containerboot: fix error handling for egress (#18657)
BeckyPauley Feb 10, 2026
086968c
net/dns, ipn/local: skip health warnings in dns forwarder when accept…
barnstar Feb 10, 2026
dc1d811
magicsock, ipnlocal: revert eventbus-based node/filter updates, remov…
bradfitz Feb 8, 2026
6cbfc2f
logtail/filch: fix filch test panic (#18660)
scottjab Feb 10, 2026
1172b2f
licenses: update license notices
Feb 11, 2026
12188c0
ipn/ipnlocal: log traffic steering scores and suggested exit nodes (#…
sfllaw Feb 11, 2026
8e39a0a
go.toolchain.next.rev: update to final Go 1.26.0 [next]
bradfitz Feb 11, 2026
45db369
prober: export a metric with the number of in-flight probes
knyar Feb 10, 2026
73d0931
tstest: update clock to always use UTC (#18663)
fserb Feb 11, 2026
84ee5b6
testcontrol: send updates for new DNS records or app capabilities
hwh33 Feb 9, 2026
0bac422
tstun: add test for intercept ordering
mzbenami Feb 10, 2026
36d359e
clientupdate, cmd/tailscale/cli: support updating to release-candidat…
willh-ts Feb 12, 2026
068074c
portlist: also tb.Skip benchmarks (not just tests) on bad Linux kernels
bradfitz Feb 12, 2026
d468870
.github/workflows: bump oss-fuzz builder hash
bradfitz Feb 12, 2026
a341eea
k8s-operator,cmd/k8s-operator: define ProxyGroupPolicy CRD (#18614)
davidsbond Feb 13, 2026
afb065f
net/dns: write MagicDNS host names to the hosts file on domain-joined…
nickkhyl Feb 13, 2026
9741c1e
control/controlknobs,net/dns,tailcfg: add a control knob that disable…
nickkhyl Feb 13, 2026
be4449f
util/clientmetric, wgengine/watchdog: report watchdog errors in user/…
barnstar Feb 13, 2026
4f1406f
ipn/ipnlocal/netmapcache: include packet filters in the cache (#18715)
creachadair Feb 13, 2026
3cc7f89
health: always include control health messages in the current state
nickkhyl Feb 13, 2026
371d636
gokrazy: use monorepo for gokrazy appliance builds (monogok)
bradfitz Feb 8, 2026
6854d29
ipn/ipnlocal: log errors when suggesting exit nodes (#18728)
sfllaw Feb 14, 2026
3f3af84
tool/gocross: respect TS_GO_NEXT=1 in gocross too
bradfitz Feb 16, 2026
bfc15cb
cmd/cigocacher: remove Windows-specific disk code moved upstream (#18…
bradfitz Feb 16, 2026
4044e05
client/systray: set consistent ID for StatusNotifierItem
willnorris Feb 16, 2026
a820456
all: replace UserVisibleError with vizerror package
willnorris Feb 16, 2023
a6390ca
ssh/tailssh: fix data race on conn auth state in OnPolicyChange
bradfitz Feb 13, 2026
a7a8644
net/dns: make MagicDNS IPv6 registration opt-out now, not opt-in
bradfitz Feb 17, 2026
fbbf0d6
tsconsensus: fix race condition in TestOnlyTaggedPeersCanBeDialed
hwh33 Feb 13, 2026
f4aea70
ipn/ipnlocal: add basic support for netmap caching (#18530)
creachadair Feb 17, 2026
eb3d35c
cmd/k8s-operator,k8s-operator: define ProxyGroupPolicy reconciler (#1…
davidsbond Feb 18, 2026
299f1bf
testcontrol: ensure Server.UpdateNode triggers netmap updates
hwh33 Feb 12, 2026
976aa94
ipn/ipnlocal, cmd/tailscale: use wildcard. prefix for cert filenames …
fserb Feb 18, 2026
9acf22f
netmon: use State AnyInterfaceUp in ChangeDelta (#18752)
barnstar Feb 18, 2026
7fb61e1
cmd/cigocacher: make --stats flag best-effort (#18761)
tomhjp Feb 19, 2026
c208ba2
.github: Bump actions/setup-go from 5.5.0 to 6.2.0 (#18455)
dependabot[bot] Feb 19, 2026
6e76db7
go.mod: bump filippo.io/edwards25519 (#18765)
awly Feb 19, 2026
f1509d2
build(deps): bump lodash from 4.17.21 to 4.17.23 in /client/web (#18476)
dependabot[bot] Feb 19, 2026
c0446aa
.github: Bump DeterminateSystems/nix-installer-action from 20 to 21 (…
dependabot[bot] Feb 19, 2026
f5d1202
build(deps): bump postcss from 8.4.14 to 8.4.31 in /cmd/tsconnect (#9…
dependabot[bot] Feb 19, 2026
03d0f6c
build(deps): bump github.com/go-git/go-git/v5 from 5.13.1 to 5.16.5 (…
dependabot[bot] Feb 19, 2026
03247a3
.github: Bump actions/create-github-app-token from 2.0.6 to 2.2.1 (#1…
dependabot[bot] Feb 19, 2026
9e31a68
build(deps): bump micromatch from 4.0.5 to 4.0.8 in /cmd/tsconnect (#…
dependabot[bot] Feb 19, 2026
c38d1ba
cmd/tailscale/cli: add bind-address and bind-port flags to netcheck c…
amalscale Feb 19, 2026
d9d95db
build(deps): bump github.com/go-viper/mapstructure/v2 (#16914)
dependabot[bot] Feb 19, 2026
2a60d0a
.github: Bump github/codeql-action from 3.29.8 to 4.31.10 (#18454)
dependabot[bot] Feb 19, 2026
cae54e2
build(deps): bump github.com/docker/docker (#13081)
dependabot[bot] Feb 19, 2026
3b737ed
appc,feature/conn25,net: Add DNS response interception for conn25
franbull Jan 28, 2026
2d64c0d
cmd/k8s-operator/e2e: mark TestIngress flaky (#18773)
tomhjp Feb 20, 2026
8890c3c
cmd/containerboot,kube: enable autoadvertisement of Tailscale service…
ChaosInTheCRD Feb 20, 2026
c48b736
licenses: update license notices
Feb 23, 2026
0ea55d3
.github: bump peter-evans/create-pull-request from 8.0.0 to 8.1.0
dependabot[bot] Feb 23, 2026
98c77ac
.github: bump actions/cache from 4.2.4 to 5.0.3
dependabot[bot] Feb 23, 2026
3d2bb5b
.github: bump actions/download-artifact from 6.0.0 to 7.0.0
dependabot[bot] Feb 23, 2026
8be5aff
.github: bump actions/checkout from 6.0.1 to 6.0.2
dependabot[bot] Feb 23, 2026
980e1c9
.github: bump actions/upload-artifact from 4.6.2 to 6.0.0
dependabot[bot] Feb 23, 2026
a58a8fc
.: permit running binary built with TS_GO_NEXT=1
bradfitz Feb 23, 2026
dc80fd6
flake: fix default devShell
kradalby Feb 22, 2026
811fe7d
ipnext,ipnlocal,wgengine/filter: add extension hooks for custom filte…
mzbenami Feb 20, 2026
eb819c5
cmd/containerboot, net/dns/resolver: remove unused funcs in tests
bradfitz Feb 25, 2026
329d2e2
prober: fix race condition in TestExcludeInRunAll (#18807)
mikeodr Feb 25, 2026
fd2ebcd
cmd/k8s-operator: add exit node example (#18087)
cmosetick Feb 25, 2026
7370c24
tool/listpkgs: add --affected-by-tag
bradfitz Feb 25, 2026
518d241
netns,wgengine: add OpenBSD support to netns via an rtable
jcs Feb 22, 2026
54de5da
tstest/integration/nat: use per-call timeout in natlab ping (#18811)
fserb Feb 25, 2026
6e2677b
client/systray: open BrowseToURL from WatchIPN in a browser (#18816)
awly Feb 26, 2026
15836e5
util/set: make Set.Slice return elements in sorted order for ordered …
bradfitz Feb 26, 2026
da90ea6
wgengine/magicsock: only run derpActiveFunc after connecting to DERP …
fserb Feb 26, 2026
5ac35b6
client/systray: add installer for a freedesktop autostart file (#18767)
cmol Feb 26, 2026
a98036b
go.mod: bump gvisor
bradfitz Feb 27, 2026
30e1231
cmd/tailscaled/*.{target,unit}: add systemd online target
raggi Jan 31, 2026
0fb207c
wgengine/netstack: deliver self-addressed packets via loopback
raggi Feb 27, 2026
4530580
net/netmon: ignore NetBird interface on Linux
raggi Feb 27, 2026
439d841
tsnet: fix slow test shutdown leading to flakes
raggi Feb 28, 2026
fa13f83
tsnet: fix deadlock in Server.Close during shutdown
raggi Feb 28, 2026
142ce99
.github/workflows: rename tidy workflow to match what it is
raggi Mar 1, 2026
48e0334
tsnet: fix Listen for unspecified addresses and ephemeral ports
raggi Feb 27, 2026
2743e0b
.github/actions/go-cache: check for pre-built cigocacher (#18833)
tomhjp Mar 2, 2026
3e8913f
licenses: update license notices
Mar 2, 2026
e0ca836
.github: Bump github/codeql-action from 4.32.3 to 4.32.5
dependabot[bot] Mar 2, 2026
eeb1fa0
.github: Bump actions/setup-go from 6.2.0 to 6.3.0
dependabot[bot] Mar 2, 2026
5a2168d
scripts/installer.sh: handle KDE Linux (#18861)
Erisa Mar 2, 2026
8fd02bb
types/geo: fix floating point bug causing NaN returns in SphericalAng…
amalscale Mar 3, 2026
0cca3bd
wgengine/magicsock: improve error message for moving Mullvad node keys
alexwlchan Feb 27, 2026
2d21dd4
wgengine/magicsoc,net/tstun: put disco key advertisement behind a nob…
cmol Mar 3, 2026
120f27f
feature/conn25: stop adding multiple entries for same domain+dst
franbull Feb 20, 2026
d42b374
net/porttrack: add net.Listen wrapper to help tests allocate ports ra…
bradfitz Mar 4, 2026
dab8922
go.mod: bump github.com/cloudflare/circl version (#18878)
awly Mar 4, 2026
26ef46b
util/linuxfw,wgengine/router: add connmark rules for rp_filter workar…
mikeodr Mar 4, 2026
2c9ffdd
cmd/tailscale,ipn,net/netutil: remove rp_filter strict mode warnings …
mikeodr Mar 4, 2026
30adf45
feature/portlist: address case where poller misses CollectServices up…
bradfitz Mar 4, 2026
ea1f161
.github/workflows: enable natlab in CI
cmol Feb 26, 2026
26951a1
ipn/ipnlocal: skip writing netmaps to disk when disabled (#18883)
creachadair Mar 4, 2026
d58bfb8
net/udprelay: use GOMAXPROCS instead of NumCPU for socket count
dpaneda Mar 4, 2026
87bf76d
net/porttrack: change magic listen address format for Go 1.26
bradfitz Mar 5, 2026
d784dcc
go.toolchain.branch: switch to Go 1.26
bradfitz Mar 4, 2026
faf7f2b
cmd/k8s-operator: remove deprecated TS_EXPERIMENTAL_KUBE_API_EVENTS (…
BeckyPauley Mar 5, 2026
d82e478
cli: `--json` for `tailscale dns status|query`
kradalby Feb 18, 2026
1b53c00
clientupdate,net/tstun: add support for OpenWrt 25.12.0 using apk (#1…
cmol Mar 5, 2026
19e2c8c
cmd/k8s-proxy: use L4 TCPForward instead of L7 HTTP proxy (#18179)
rajsinghtech Mar 5, 2026
c17ec8c
VERSION.txt: this is v1.97.0 (#18898)
barnstar Mar 5, 2026
9657a93
tstest/natlab: add test for no control and rotated disco key (#18261)
cmol Mar 5, 2026
2810f0c
all: fix typos in comments
bradfitz Mar 5, 2026
8cfbaa7
go.mod: bump staticcheck to version that supports Go 1.26
bradfitz Mar 5, 2026
2a64c03
types/ptr: deprecate ptr.To, use Go 1.26 new
bradfitz Mar 5, 2026
bb45b2e
nix: update flakes to get a nixpkgs version with go 1.26
kradalby Mar 6, 2026
8e3d176
control/controlbase: deflake, speed up TestConnMemoryOverhead
bradfitz Mar 6, 2026
40858a6
ipnext,ipnlocal: add ExtraWireGuardAllowedIPs hook
mzbenami Mar 2, 2026
3cc7b85
prober: fix queuing delay probe txRecords overflow under high DERP se…
mikeodr Mar 6, 2026
4453cc5
go.mod: bump to Go 1.26.1
bradfitz Mar 6, 2026
bd2a2d5
all: use Go 1.26 things, run most gofix modernizers
bradfitz Mar 5, 2026
e400d5a
cmd/testwrapper: make test tolerant of a GOEXPERIMENT being set
bradfitz Mar 6, 2026
ac74dfa
util/osuser: extend id command fallback for group IDs to freebsd
neinkeinkaffee Mar 5, 2026
6a19995
tailcfg: reintroduce UserProfile.Groups
neinkeinkaffee Feb 17, 2026
a4614d7
appc,feature/conn25: conn25: send address assignments to connector
franbull Feb 27, 2026
633e892
ssh/tailssh: fix race between termination message write and session t…
bradfitz Mar 9, 2026
8d3efd4
go.mod: bump for internal/poll: move rsan to heap on windows
nickkhyl Mar 9, 2026
0023f1a
.github/workflows: use tailscale/go for Windows CI too
bradfitz Mar 9, 2026
9522619
cmd/k8s-operator: use correct tailnet client for L7 & L3 ingresses (#…
davidsbond Mar 10, 2026
16c4780
go.toolchain.next.rev: update to final Go 1.26.1 [next] (#18939)
jasonodonnell Mar 10, 2026
32adca7
pull-toolchain.sh: advance the next hash if it's behind
bradfitz Mar 10, 2026
525f7a1
types/key: add NodePrivate.Raw32 and DiscoPrivateFromRaw32
bradfitz Mar 9, 2026
021de2e
util/linuxfw: fix nil pointer panic in connmark rules without IPv6 (#…
mikeodr Mar 10, 2026
99bde5a
tstest/integration: deflake TestCollectPanic
bradfitz Mar 10, 2026
99e3e9a
ssh/tailssh: mark TestSSHRecordingCancelsSessionsOnUploadFailure as f…
bradfitz Sep 17, 2025
f905871
ipn/ipnlocal, feature/ssh: move SSH code out of LocalBackend to feature
bradfitz Mar 10, 2026
16fa81e
wgengine: add API to force a disco key for experiments, testing
bradfitz Mar 10, 2026
7a43e41
client/web: signal need to wait for auth across tabs
neinkeinkaffee Mar 11, 2026
95a135e
cmd/{containerboot,k8s-operator}: reissue auth keys for broken proxie…
tomhjp Mar 11, 2026
70de111
wgengine/magicsock: fix three race conditions in TestTwoDevicePing
bradfitz Mar 9, 2026
607d01c
net/batching: clarify & simplify single packet read limitations
jwhited Mar 11, 2026
dd1da0b
wgengine: search randomly for unused port instead of in contiguous ra…
kari-ts Mar 11, 2026
4c7c109
netns: add Android callback to bind socket to network (#18915)
kari-ts Mar 11, 2026
073a9a8
wgengine{,/magicsock}: add DERP hooks for filtering+sending packets
bradfitz Mar 11, 2026
0c53cf7
.github: Bump actions/upload-artifact from 6.0.0 to 7.0.0
dependabot[bot] Mar 2, 2026
224305b
.github: Bump actions/download-artifact from 7.0.0 to 8.0.0
dependabot[bot] Mar 2, 2026
0a4e0e2
.github: Bump github/codeql-action from 4.32.5 to 4.32.6
dependabot[bot] Mar 9, 2026
be62e6d
tsnet: make tsnet fallback to control url from environment
kradalby Mar 11, 2026
7412fc0
flake.nix: update build to use buildGo126Module (#18977)
mikeodr Mar 12, 2026
dd480f0
gokrazy: fix busybox breakglass support, add test
bradfitz Mar 10, 2026
621f719
cmd/k8s-operator: fix Service reconcile triggers for default ProxyCla…
tomhjp Mar 13, 2026
660a460
feature/conn25: Update ConnectorTransitIPRequest handling (#18979)
george-tailscale Mar 13, 2026
96dde53
net/{batching,udprelay},wgengine/magicsock: add SO_RXQ_OVFL clientmet…
jwhited Mar 11, 2026
4c91f90
tstest/integration: add userspace-networking + proxymap WhoIs integra…
bradfitz Mar 13, 2026
54606a0
wgengine/netstack: don't register subnet/4via6 TCP flows with proxymap
bradfitz Mar 13, 2026
51a117f
feature/conn25: rewrite A records for connector domains
franbull Mar 3, 2026
b3c6184
go.mod: bump tailscale/wireguard-go
jwhited Mar 16, 2026
a565833
kube/certs: discover TLS domains from TCP TerminateTLS handlers (#19020)
rajsinghtech Mar 17, 2026
9826db3
docs: add new package to go:embed commit-messages.md
bradfitz Mar 17, 2026
b0e63cb
wgengine/netstack: add TS_NETSTACK_KEEPALIVE_{IDLE,INTERVAL} envknobs
josefbacik Mar 16, 2026
667fd0d
build_docker.sh: fix typo
AaronPerk Mar 18, 2026
ce77890
feature/conn25: add NATing support with flow caching
mzbenami Mar 6, 2026
26ba71d
derp: add envknob to disable RTT stats collection (#19029)
mikeodr Mar 18, 2026
31d65a9
net/batching: eliminate gso helper func indirection
jwhited Mar 17, 2026
156d97c
derp/derpserver: fix locking in a few expvar.Func metrics (#19031)
bradfitz Mar 18, 2026
4e88d23
control,health,ipn: move IP forwarding check to health tracker (#19007)
mikeodr Mar 18, 2026
2534bc3
net/tstun: do not write when Wrapper is closed (#19038)
cmol Mar 18, 2026
0d8d383
net/dns: use the correct separator for multiple servers in the same N…
nickkhyl Mar 19, 2026
ac19bd5
feature/featuretags: skip TestAllOmitBuildTagsDeclared when not in a …
bradfitz Mar 19, 2026
ca9aa20
ipn/ipnlocal: populate Groups field in profileFromView
neinkeinkaffee Mar 19, 2026
85bb5f8
wgengine/magicsock,control/controlclient: do not overwrite discokey w…
cmol Mar 20, 2026
1e09eb0
feature/conn25: implement IPMapper
franbull Mar 18, 2026
79f71be
feature/conn25: implement IPMapper
franbull Mar 19, 2026
ffa7df2
ipn: reject advertised routes with non-address bits set (#18649)
bcreane Mar 20, 2026
34477cf
tka: use constant-time comparison of disablement secret (#19064)
awly Mar 20, 2026
3a5afc3
feature/conn25: guard against an index out of bounds panic (#19066)
awly Mar 20, 2026
ea7040e
ipn/{ipnext,ipnlocal}: expose authReconfig in ipnext.Host as AuthReco…
mzbenami Mar 18, 2026
931fe56
tsnet: fall back to 'tsnet' when os.Executable fails on darwin
prakashrj Mar 19, 2026
34267d5
cmd/tailscale: print a helpful error for Taildrive CLI on macOS GUI
alexwlchan Mar 17, 2026
6e5a64d
.github: Bump actions/cache from 5.0.3 to 5.0.4
dependabot[bot] Mar 23, 2026
323e0f8
docs/windows/policy: add CheckUpdates key to tailscale.admx (#19044)
jpelchat Mar 23, 2026
4378260
util/osdiag: fix typo in comment (reciever -> receiver)
Mar 22, 2026
1d6ecb1
safesocket, ipn/ipnserver: use PeerCreds on solaris and illumos
nshalman Mar 23, 2026
67496e1
cmd/tailscale/cli: fix a typo in the `whois` help text
alexwlchan Mar 23, 2026
d3626c5
feature/conn25: add packet filter allow functions
franbull Mar 20, 2026
18528d1
.github: Bump github/codeql-action from 4.32.6 to 4.34.1
dependabot[bot] Mar 23, 2026
db3348f
.github/workflows: limit vet to the tailscale.com module (#19084)
tomhjp Mar 23, 2026
04ef9d8
ipn/ipnlocal: add a map for node public key to node ID lookups (#19051)
amalscale Mar 23, 2026
0b4c0f2
net/dns/resolver: treat DNS REFUSED responses as soft errors in forwa…
bcreane Mar 23, 2026
44ec71c
tsnet: print state change in auth loop more responsively (#18048)
tomhjp Mar 23, 2026
1d0fde6
all: use `bart.Lite` instead of `bart.Table` where appropriate
alexwlchan Mar 23, 2026
1403920
derp,types,util: use bufio Peek+Discard for allocation-free fast read…
mikeodr Mar 24, 2026
302e49d
cmd/tailscale/cli: add a debug command to print the statedir
alexwlchan Mar 23, 2026
bdcf976
feature/conn25: guard extension Init() and PeerAPI handler with opt-i…
mzbenami Mar 24, 2026
9c36a71
feature/*,net/tstun: add tundev_txq_drops clientmetric on Linux
jwhited Mar 19, 2026
85906b6
feature/conn25: call AuthReconfigAsync after address assignment
franbull Mar 23, 2026
f0ba1f3
net/udprelay: remove experimental label from package docs
jwhited Mar 24, 2026
590546b
disco: remove experimental label from BindUDPRelayHandshakeState
jwhited Mar 24, 2026
87ec323
control/controlclient: allow multiple non-streaming map requests (#19…
cmol Mar 24, 2026
066ce9a
licenses: update license notices
Mar 23, 2026
1e51d57
ipn: fix the typo causing NoSNAT always set to true (#19110)
KevinLiang10 Mar 24, 2026
9992b7c
ipn,ipn/local: broadcast ClientVersion if AutoUpdate.Check (#19107)
kari-ts Mar 24, 2026
f52c1e3
derp: use AvailableBuffer for WriteFrameHeader, consolidate tests (#1…
mikeodr Mar 24, 2026
bb59942
types/key: use AvailableBuffer for WriteRawWithoutAllocating (#19102)
mikeodr Mar 24, 2026
9a4a2db
control/controlclient: handle errors in rememberLastNetmapUpdator (#1…
cmol Mar 25, 2026
c026be1
ipn/ipnserver: use peercreds for actor.Username on freebsd (for Taild…
rtgnx Mar 25, 2026
a57c645
ipn/ipnlocal: debounce extra enqueues in ExtensionHost.AuthReconfigAsync
mzbenami Mar 24, 2026
47ef1a9
tsnet: use tstest.Shard in new tsnet tests
hwh33 Jan 22, 2026
1794765
tsnet: block rather than poll in setup for TestListenService
hwh33 Jan 22, 2026
4f43ad3
tsnet: clean up state when Service listener is closed
hwh33 Jan 22, 2026
954a2df
net/dns: fix duplicate search line entries (OpenBSD, primarily)
blackgnezdo Mar 25, 2026
33da8a8
go.toolchain.*: bump for mips and synology segmentation violation fixes
nickkhyl Mar 25, 2026
18983ec
wif: add AWS ecs for autogenerated OIDC tokens
pguinard-public-com Mar 5, 2026
330a17b
net/batching: use vectored writes on Linux (#19054)
illotum Mar 25, 2026
2d5962f
feature/conn25,ipn/ipnext,ipn/ipnlocal: add ExtraRouterConfigRoutes hook
franbull Mar 25, 2026
b4519e9
.github: Bump actions/create-github-app-token from 2.2.1 to 3.0.0 (#1…
dependabot[bot] Mar 26, 2026
45f989f
ipn/ipnlocal: warn incompatibility between no-snat-routes and exitnod…
KevinLiang10 Mar 26, 2026
fa22d0a
docs: add commit message example (#19134)
noelob Mar 26, 2026
f0fa895
tsnet/tsnet.go: fix docs link (#19136)
WalterHub Mar 26, 2026
4ace87a
net,tsnet: fix the capitalisation of "Wireshark"
alexwlchan Mar 26, 2026
86135d3
feature/conn25: Store transit ips by connector key (#19071)
george-tailscale Mar 26, 2026
e7121b4
feature/conn25: connect the ExtraWireguardAllowedIPs hook (#19140)
george-tailscale Mar 26, 2026
2b1030a
release/dist/unixpkgs: include tailscale-online.target in packages
bradfitz Mar 22, 2026
d3bfc33
Add 'fish' to the list of scales
SamPlaysKeys Mar 27, 2026
70fabf1
.github: Bump actions/download-artifact from 8.0.0 to 8.0.1
dependabot[bot] Mar 16, 2026
156e6ae
feature/conn25: install all the hooks
mzbenami Mar 26, 2026
0694521
README: update the version of Go in the README (#19168)
Lykathia Mar 29, 2026
edb2be1
cmd/tailscale: improve `tailscale lock` error message if no keys
alexwlchan Mar 26, 2026
4c0f488
docker: add riscv64 to container image architectures
gounthar Mar 28, 2026
99f8039
tsnet: fix advertiseService dropping existing services
evan314159 Mar 28, 2026
bf46772
control/controlclient,ipn/ipnlocal,wgengine: avoid restarting wiregua…
cmol Mar 30, 2026
87388ce
licenses: update license notices
Mar 30, 2026
61ac021
wgengine/magicsock: assume network up for tests
hwh33 Mar 28, 2026
4334dfa
control/controlclient: take mapsession and release lock early in sub …
cmol Mar 31, 2026
6f0ca94
tka: consolidate all the limits into a single file
alexwlchan Mar 31, 2026
fed0df6
tsnet: add test for advertising multiple Services
hwh33 Mar 29, 2026
1e2fdfd
tsnet: fix bug in closing multiple ServiceListeners at once
hwh33 Mar 30, 2026
88e7330
ipn,tka: improve Tailnet Lock logs
alexwlchan Apr 1, 2026
990d25c
go.toolchain.rev, version: bump Tailscale Go, add IsTailscaleGo
bradfitz Apr 1, 2026
4ffb92d
tka: refer consistently to "DisablementValues"
alexwlchan Mar 31, 2026
5b62f98
ipn, cmd/tailscale/cli: allow setting FQDN sans dot as an exit node
alexwlchan Mar 23, 2026
c76113a
wgengine/magicsock: send out disco keys over TSMP periodically (#19212)
cmol Apr 1, 2026
211ef67
tailcfg,ipn/ipnlocal: regulate netmap caching via a node attribute (#…
creachadair Apr 1, 2026
9c1d59f
version: parse Void Linux version strings
alexwlchan Mar 31, 2026
e82ffe0
cmd/k8s-operator: add further E2E tests for Ingress (#19219)
BeckyPauley Apr 2, 2026
ffaebd7
control/controlclient: filter out disco updates from full map (#19220)
cmol Apr 2, 2026
d6b626f
tstest: add test for connectivity to off-tailnet CGNAT endpoints
tendstofortytwo Apr 2, 2026
eaa5d9d
client,cmd/tailscale,ipn/{ipnlocal,localapi}: add debug CLI command t…
creachadair Apr 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
59 changes: 59 additions & 0 deletions .github/actions/go-cache/action.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#!/usr/bin/env bash
#
# This script sets up cigocacher, but should never fail the build if unsuccessful.
# It expects to run on a GitHub-hosted runner, and connects to cigocached over a
# private Azure network that is configured at the runner group level in GitHub.
#
# Usage: ./action.sh
# Inputs:
# URL: The cigocached server URL.
# HOST: The cigocached server host to dial.
# Outputs:
# success: Whether cigocacher was set up successfully.

set -euo pipefail

if [ -z "${GITHUB_ACTIONS:-}" ]; then
echo "This script is intended to run within GitHub Actions"
exit 1
fi

if [ -z "${URL:-}" ]; then
echo "No cigocached URL is set, skipping cigocacher setup"
exit 0
fi

BIN_PATH="$(PATH="$PATH:$HOME/bin" command -v cigocacher || true)"
if [ -z "${BIN_PATH}" ]; then
echo "cigocacher not found in PATH, attempting to build or fetch it"

GOPATH=$(command -v go || true)
if [ -z "${GOPATH}" ]; then
if [ ! -f "tool/go" ]; then
echo "Go not available, unable to proceed"
exit 1
fi
GOPATH="./tool/go"
fi

BIN_PATH="${RUNNER_TEMP:-/tmp}/cigocacher$(${GOPATH} env GOEXE)"
if [ -d "cmd/cigocacher" ]; then
echo "cmd/cigocacher found locally, building from local source"
"${GOPATH}" build -o "${BIN_PATH}" ./cmd/cigocacher
else
echo "cmd/cigocacher not found locally, fetching from tailscale.com/cmd/cigocacher"
"${GOPATH}" build -o "${BIN_PATH}" tailscale.com/cmd/cigocacher
fi
fi

CIGOCACHER_TOKEN="$("${BIN_PATH}" --auth --cigocached-url "${URL}" --cigocached-host "${HOST}" )"
if [ -z "${CIGOCACHER_TOKEN:-}" ]; then
echo "Failed to fetch cigocacher token, skipping cigocacher setup"
exit 0
fi

echo "Fetched cigocacher token successfully"
echo "::add-mask::${CIGOCACHER_TOKEN}"

echo "GOCACHEPROG=${BIN_PATH} --cache-dir ${CACHE_DIR} --cigocached-url ${URL} --cigocached-host ${HOST} --token ${CIGOCACHER_TOKEN}" >> "${GITHUB_ENV}"
echo "success=true" >> "${GITHUB_OUTPUT}"
35 changes: 35 additions & 0 deletions .github/actions/go-cache/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: go-cache
description: Set up build to use cigocacher

inputs:
cigocached-url:
description: URL of the cigocached server
required: true
cigocached-host:
description: Host to dial for the cigocached server
required: true
checkout-path:
description: Path to cloned repository
required: true
cache-dir:
description: Directory to use for caching
required: true

outputs:
success:
description: Whether cigocacher was set up successfully
value: ${{ steps.setup.outputs.success }}

runs:
using: composite
steps:
- name: Setup cigocacher
id: setup
shell: bash
env:
URL: ${{ inputs.cigocached-url }}
HOST: ${{ inputs.cigocached-host }}
CACHE_DIR: ${{ inputs.cache-dir }}
working-directory: ${{ inputs.checkout-path }}
# https://github.com/orgs/community/discussions/25910
run: $GITHUB_ACTION_PATH/action.sh
2 changes: 1 addition & 1 deletion .github/workflows/checklocks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
runs-on: [ ubuntu-latest ]
steps:
- name: Check out code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Build checklocks
run: ./tool/go build -o /tmp/checklocks gvisor.dev/gvisor/tools/checklocks/cmd/checklocks
Expand Down
73 changes: 73 additions & 0 deletions .github/workflows/cigocacher.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: Build cigocacher

on:
# Released on-demand. The commit will be used as part of the tag, so generally
# prefer to release from main where the commit is stable in linear history.
workflow_dispatch:

jobs:
build:
strategy:
matrix:
GOOS: ["linux", "darwin", "windows"]
GOARCH: ["amd64", "arm64"]
runs-on: ubuntu-24.04
env:
GOOS: "${{ matrix.GOOS }}"
GOARCH: "${{ matrix.GOARCH }}"
CGO_ENABLED: "0"
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Build
run: |
OUT="cigocacher$(./tool/go env GOEXE)"
./tool/go build -o "${OUT}" ./cmd/cigocacher/
tar -zcf cigocacher-${{ matrix.GOOS }}-${{ matrix.GOARCH }}.tar.gz "${OUT}"

- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: cigocacher-${{ matrix.GOOS }}-${{ matrix.GOARCH }}
path: cigocacher-${{ matrix.GOOS }}-${{ matrix.GOARCH }}.tar.gz

release:
runs-on: ubuntu-24.04
needs: build
permissions:
contents: write
steps:
- name: Download all artifacts
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
pattern: 'cigocacher-*'
merge-multiple: true
# This step is a simplified version of actions/create-release and
# actions/upload-release-asset, which are archived and unmaintained.
- name: Create release
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
const fs = require('fs');
const path = require('path');

const { data: release } = await github.rest.repos.createRelease({
owner: context.repo.owner,
repo: context.repo.repo,
tag_name: `cmd/cigocacher/${{ github.sha }}`,
name: `cigocacher-${{ github.sha }}`,
draft: false,
prerelease: true,
target_commitish: `${{ github.sha }}`
});

const files = fs.readdirSync('.').filter(f => f.endsWith('.tar.gz'));

for (const file of files) {
await github.rest.repos.uploadReleaseAsset({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: release.id,
name: file,
data: fs.readFileSync(file)
});
console.log(`Uploaded ${file}`);
}
10 changes: 5 additions & 5 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,17 +45,17 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

# Install a more recent Go that understands modern go.mod content.
- name: Install Go
uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
with:
go-version-file: go.mod

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0
uses: github/codeql-action/init@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
Expand All @@ -66,7 +66,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0
uses: github/codeql-action/autobuild@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1

# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
Expand All @@ -80,4 +80,4 @@ jobs:
# make release

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0
uses: github/codeql-action/analyze@38697555549f1db7851b81482ff19f1fa5c4fedc # v4.34.1
29 changes: 29 additions & 0 deletions .github/workflows/docker-base.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: "Validate Docker base image"
on:
workflow_dispatch:
pull_request:
paths:
- "Dockerfile.base"
- ".github/workflows/docker-base.yml"
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: "build and test"
run: |
set -e
IMG="test-base:$(head -c 8 /dev/urandom | xxd -p)"
docker build -t "$IMG" -f Dockerfile.base .

iptables_version=$(docker run --rm "$IMG" iptables --version)
if [[ "$iptables_version" != *"(legacy)"* ]]; then
echo "ERROR: Docker base image should contain legacy iptables; found ${iptables_version}"
exit 1
fi

ip6tables_version=$(docker run --rm "$IMG" ip6tables --version)
if [[ "$ip6tables_version" != *"(legacy)"* ]]; then
echo "ERROR: Docker base image should contain legacy ip6tables; found ${ip6tables_version}"
exit 1
fi
4 changes: 1 addition & 3 deletions .github/workflows/docker-file-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,10 @@ on:
branches:
- main
pull_request:
branches:
- "*"
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: "Build Docker image"
run: docker build .
6 changes: 3 additions & 3 deletions .github/workflows/flakehub-publish-tagged.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ jobs:
id-token: "write"
contents: "read"
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: "${{ (inputs.tag != null) && format('refs/tags/{0}', inputs.tag) || '' }}"
- uses: "DeterminateSystems/nix-installer-action@main"
- uses: "DeterminateSystems/flakehub-push@main"
- uses: DeterminateSystems/nix-installer-action@c5a866b6ab867e88becbed4467b93592bce69f8a # v21
- uses: DeterminateSystems/flakehub-push@71f57208810a5d299fc6545350981de98fdbc860 # v6
with:
visibility: "public"
tag: "${{ inputs.tag }}"
20 changes: 14 additions & 6 deletions .github/workflows/golangci-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@ name: golangci-lint
on:
# For now, only lint pull requests, not the main branches.
pull_request:

paths:
- ".github/workflows/golangci-lint.yml"
- "**.go"
- "go.mod"
- "go.sum"
# TODO(andrew): enable for main branch after an initial waiting period.
#push:
# branches:
Expand All @@ -23,17 +27,21 @@ jobs:
name: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
- uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
with:
go-version-file: go.mod
cache: false
cache: true

- name: golangci-lint
uses: golangci/golangci-lint-action@1481404843c368bc19ca9406f87d6e0fc97bdcfd # v7.0.0
uses: golangci/golangci-lint-action@b7bcab6379029e905e3f389a6bf301f1bc220662 # head as of 2026-03-04
with:
version: v2.0.2
version: v2.10.1

# Show only new issues if it's a pull request.
only-new-issues: true

# Loading packages with a cold cache takes a while:
args: --timeout=10m

4 changes: 2 additions & 2 deletions .github/workflows/govulncheck.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:

steps:
- name: Check out code into the Go module directory
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Install govulncheck
run: ./tool/go install golang.org/x/vuln/cmd/govulncheck@latest
Expand All @@ -24,7 +24,7 @@ jobs:

- name: Post to slack
if: failure() && github.event_name == 'schedule'
uses: slackapi/slack-github-action@b0fa283ad8fea605de13dc3f449259339835fc52 # v2.1.0
uses: slackapi/slack-github-action@91efab103c0de0a537f72a35f6b8cda0ee76bf0a # v2.1.1
with:
method: chat.postMessage
token: ${{ secrets.GOVULNCHECK_BOT_TOKEN }}
Expand Down
22 changes: 17 additions & 5 deletions .github/workflows/installer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ on:
- scripts/installer.sh
- .github/workflows/installer.yml
pull_request:
branches:
- "*"
paths:
- scripts/installer.sh
- .github/workflows/installer.yml
Expand Down Expand Up @@ -60,6 +58,14 @@ jobs:
# Check a few images with wget rather than curl.
- { image: "debian:oldstable-slim", deps: "wget" }
- { image: "debian:sid-slim", deps: "wget" }
- { image: "debian:stable-slim", deps: "curl" }
- { image: "ubuntu:24.04", deps: "curl" }
- { image: "fedora:latest", deps: "curl" }
# Test TAILSCALE_VERSION pinning on a subset of distros.
# Skip Alpine as community repos don't reliably keep old versions.
- { image: "debian:stable-slim", deps: "curl", version: "1.80.0" }
- { image: "ubuntu:24.04", deps: "curl", version: "1.80.0" }
- { image: "fedora:latest", deps: "curl", version: "1.80.0" }
runs-on: ubuntu-latest
container:
image: ${{ matrix.image }}
Expand Down Expand Up @@ -93,22 +99,28 @@ jobs:
contains(matrix.image, 'parrotsec') ||
contains(matrix.image, 'kalilinux')
- name: checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: run installer
run: scripts/installer.sh
env:
TAILSCALE_VERSION: ${{ matrix.version }}
# Package installation can fail in docker because systemd is not running
# as PID 1, so ignore errors at this step. The real check is the
# `tailscale --version` command below.
continue-on-error: true
- name: check tailscale version
run: tailscale --version
run: |
tailscale --version
if [ -n "${{ matrix.version }}" ]; then
tailscale --version | grep -q "^${{ matrix.version }}" || { echo "Version mismatch!"; exit 1; }
fi
notify-slack:
needs: test
runs-on: ubuntu-latest
steps:
- name: Notify Slack of failure on scheduled runs
if: failure() && github.event_name == 'schedule'
uses: slackapi/slack-github-action@b0fa283ad8fea605de13dc3f449259339835fc52 # v2.1.0
uses: slackapi/slack-github-action@91efab103c0de0a537f72a35f6b8cda0ee76bf0a # v2.1.1
with:
webhook: ${{ secrets.SLACK_WEBHOOK_URL }}
webhook-type: incoming-webhook
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/kubemanifests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
runs-on: [ ubuntu-latest ]
steps:
- name: Check out code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Build and lint Helm chart
run: |
eval `./tool/go run ./cmd/mkversion`
Expand Down
Loading