state,change,mapper: report LastSeen for online peers per tailcfg protocol - #3420
Open
zicochaos wants to merge 1 commit into
Open
state,change,mapper: report LastSeen for online peers per tailcfg protocol#3420zicochaos wants to merge 1 commit into
zicochaos wants to merge 1 commit into
Conversation
…tocol
Tailscale 1.102 switched the Apple GUI to InitialStatus + peer deltas
and the GUI hides exit nodes it considers offline. headscale only sent
LastSeen for offline peers and never included it in online/offline
patches, so the new GUI treated every peer as never-online and hid all
exit nodes from the list, while the CLI kept working.
- emit LastSeen for online peers in TailNode, per tailcfg docs
("when the node was last online ... nil if never been online")
- set LastSeen on connect/disconnect in State and carry it in the
NodeOnline/NodeOffline change patches
Updates juanfont#3415
zicochaos
requested review from
juanfont,
kradalby,
nblock and
ohdearaugustin
as code owners
August 11, 2026 10:59
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
tailcfg documents
Node.LastSeenas "when the node was last online … nil if never been online", andPeerChange.LastSeenas accompanying online-status changes. headscale only sentLastSeenfor offline peers and never included it in online/offline patches, so clients on the new InitialStatus + peer-delta code path (Tailscale 1.102 on Apple platforms, tailscale/tailscale@6bf05cb63) saw online peers as never-online — rendering exit nodes as offline in the GUI.LastSeenfor online peers inTailNode, per tailcfg semanticsLastSeenon connect/disconnect inStateand carry it in theNodeOnline/NodeOfflinechange patchesCovered by a new servertest regression test and updated change/mapper tests. Note: this alone does not fix the empty exit-node list from #3415 — that turned out to be the GUI requiring a suggested exit node; see the issue for analysis and a policy (
nodeAttrs) workaround.Updates #3415