{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":526276446,"defaultBranch":"main","name":"golink","ownerLogin":"tailscale","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-08-18T15:50:18.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/48932923?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1715211202.0","currentOid":""},"activityList":{"items":[{"before":"1a9ceff8bf8c632aed87eef749ef3552880d16fb","after":null,"ref":"refs/heads/will/tags","pushedAt":"2024-05-08T23:33:22.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"}},{"before":"187497a7ce0523e85a7361840a703e65d2f2dcab","after":"55a3c6e2fe19671ca82f92cc85882f530440608d","ref":"refs/heads/main","pushedAt":"2024-05-08T23:33:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"},"commit":{"message":"use semantic version tagging for docker images\n\nwe've never tagged stable releases, but should really do so. This\nchange will cause our docker images to be tagged following typical\nsemver fashion... the initial `v1.0.0` release will be tagged `v1`,\n`v1.0`, `v1.0.0`, and `latest`.\n\nUpdates #104\n\nSigned-off-by: Will Norris ","shortMessageHtmlLink":"use semantic version tagging for docker images"}},{"before":"ed6c3966544e9e3a042b3f3cf2f6e55d6385e3cc","after":null,"ref":"refs/heads/will/regex","pushedAt":"2024-05-07T19:18:57.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"}},{"before":"41e9dc91ec7f97d51bcedae54e4905948de85cc0","after":"187497a7ce0523e85a7361840a703e65d2f2dcab","ref":"refs/heads/main","pushedAt":"2024-05-07T19:18:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"},"commit":{"message":"add regexp.Match to template funcs\n\nAdd a \"Match\" template func, which uses regexp.MatchString to match a\nvalue against a regular expression pattern.\n\nFixes #125\n\nSigned-off-by: Will Norris ","shortMessageHtmlLink":"add regexp.Match to template funcs"}},{"before":"d9fff916217ab86199fed0db876ac8e53852e762","after":"ed6c3966544e9e3a042b3f3cf2f6e55d6385e3cc","ref":"refs/heads/will/regex","pushedAt":"2024-05-07T19:03:10.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"},"commit":{"message":"add regexp.Match to template funcs\n\nAdd a \"Match\" template func, which uses regexp.MatchString to match a\nvalue against a regular expression pattern.\n\nFixes #125\n\nSigned-off-by: Will Norris ","shortMessageHtmlLink":"add regexp.Match to template funcs"}},{"before":"ff6aba39df43bba5f68e266570a4be750dee341b","after":"d9fff916217ab86199fed0db876ac8e53852e762","ref":"refs/heads/will/regex","pushedAt":"2024-05-07T18:59:41.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"},"commit":{"message":"add regexp.Match to template funcs\n\nAdd a \"Match\" template func, which uses regexp.MatchString to match a\nvalue against a regular expression pattern.\n\nSigned-off-by: Will Norris ","shortMessageHtmlLink":"add regexp.Match to template funcs"}},{"before":null,"after":"ff6aba39df43bba5f68e266570a4be750dee341b","ref":"refs/heads/will/regex","pushedAt":"2024-05-07T18:56:18.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"},"commit":{"message":"add regexp.Match to template funcs\n\nAdd a \"Match\" template func, which uses regexp.MatchString to match a\nvalue against a regular expression pattern.\n\nSigned-off-by: Will Norris ","shortMessageHtmlLink":"add regexp.Match to template funcs"}},{"before":"e2c7c78ae167a99e4b175679104cba4483c89e47","after":"41e9dc91ec7f97d51bcedae54e4905948de85cc0","ref":"refs/heads/main","pushedAt":"2024-04-25T16:20:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"},"commit":{"message":"flake.nix: don't wait for network-online.target to start golink\n\ngolink is a tsnet service, and Tailscale's data plane is very good at monitoring for changes to network state and reacting to them. As such, it doesn't need to wait for network-online.target, it can start up concurrently with everything else and shorten the long pole of bootup.\r\n\r\nAdditionally, network-online.target is an antipattern in systemd that almost never means what people want it to mean. \"Online\" has no precise definition, and (I posit) almost never matches the ideal version of \"online\" that people have in their mind. It specifically does _not_ mean that the network functions, or that any particular flavor of connectivity exists. A machine behind a captive portal is \"online\" for the purposes of bootup, and so is a machine that got a DHCP lease but is having all its packets blackholed. Systemd has a whole page of documentation on \"what does online even mean\", because this is such a recurring point of confusion: https://systemd.io/NETWORK_ONLINE/\r\n\r\nIt is almost always wrong to depend on network-online.target, and I wish it was named slow-down-boot-for-no-reason.target, which is how most downstream programs use it.\r\n\r\n, the point is, golink is a well-behaved service that reacts to connectivity changes on the fly (it has to, that's what tailscale does), and so can be started concurrently with networking and other services.","shortMessageHtmlLink":"flake.nix: don't wait for network-online.target to start golink"}},{"before":"0822312f1c69d5be0d84ede96f7728179da7c844","after":null,"ref":"refs/heads/no-network-dependency","pushedAt":"2024-04-25T16:20:28.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"}},{"before":null,"after":"1a9ceff8bf8c632aed87eef749ef3552880d16fb","ref":"refs/heads/will/tags","pushedAt":"2024-04-02T22:13:00.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"},"commit":{"message":"use semantic version tagging for docker images\n\nwe've never tagged stable releases, but should really do so. This\nchange will cause our docker images to be tagged following typical\nsemver fashion... the initial `v1.0.0` release will be tagged `v1`,\n`v1.0`, `v1.0.0`, and `latest`.\n\nUpdates #104\n\nSigned-off-by: Will Norris ","shortMessageHtmlLink":"use semantic version tagging for docker images"}},{"before":"4baf4136afb57cd477043de1d9fdfbd716e5fa3a","after":null,"ref":"refs/heads/will/grants","pushedAt":"2024-04-02T18:39:57.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"}},{"before":"c66cbb8eca0e7fbd00722e990e4e09cfe85bcb54","after":"e2c7c78ae167a99e4b175679104cba4483c89e47","ref":"refs/heads/main","pushedAt":"2024-04-02T18:39:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"},"commit":{"message":"README: document permission model and grants\n\nUpdates #18\nUpdates #22\nUpdates #86\nUpdates #120\n\nSigned-off-by: Will Norris ","shortMessageHtmlLink":"README: document permission model and grants"}},{"before":"f62e0b89523ac33d0f3b2d03b9520d5a368b05d4","after":"4baf4136afb57cd477043de1d9fdfbd716e5fa3a","ref":"refs/heads/will/grants","pushedAt":"2024-04-02T18:36:20.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"},"commit":{"message":"README: document permission model and grants\n\nUpdates #18\nUpdates #22\nUpdates #86\nUpdates #120\n\nSigned-off-by: Will Norris ","shortMessageHtmlLink":"README: document permission model and grants"}},{"before":null,"after":"f62e0b89523ac33d0f3b2d03b9520d5a368b05d4","ref":"refs/heads/will/grants","pushedAt":"2024-04-02T18:29:22.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"},"commit":{"message":"README: document permission model and grants\n\nUpdates #18\nUpdates #22\nUpdates #86\nUpdates #120\n\nSigned-off-by: Will Norris ","shortMessageHtmlLink":"README: document permission model and grants"}},{"before":"b1d4d28e608571c9cae93f4c8d1579e1c2f4f4a6","after":"b0041b7f3eddae86aade0864b286d9c2b02989c3","ref":"refs/heads/will/readonly","pushedAt":"2024-04-02T17:21:33.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"},"commit":{"message":"add support for running in read-only mode\n\nRight now, running in read-only mode displays a banner stating that\nlinks can be resolved but not created or updated, as well as actively\nblocking requests to modify links.\n\nUpdate #118\n\nSigned-off-by: Will Norris ","shortMessageHtmlLink":"add support for running in read-only mode"}},{"before":"69fd07846a30ee5297740a6130ce0e221c88bace","after":"b1d4d28e608571c9cae93f4c8d1579e1c2f4f4a6","ref":"refs/heads/will/readonly","pushedAt":"2024-04-02T16:52:40.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"},"commit":{"message":"add support for running in read-only mode\n\nRight now, running in read-only mode displays a banner stating that\nlinks can be resolved but not created or updated, as well as actively\nblocking requests to modify links.\n\nUpdate #118\n\nSigned-off-by: Will Norris ","shortMessageHtmlLink":"add support for running in read-only mode"}},{"before":null,"after":"69fd07846a30ee5297740a6130ce0e221c88bace","ref":"refs/heads/will/readonly","pushedAt":"2024-04-02T16:44:06.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"},"commit":{"message":"add support for running in read-only mode\n\nRight now, running in read-only mode displays a banner stating that\nlinks can be resolved but not created or updated, as well as actively\nblocking requests to modify links.\n\nUpdate #118","shortMessageHtmlLink":"add support for running in read-only mode"}},{"before":"6c79b503e19a500c551ce162b0a1b32abebd9a94","after":"c66cbb8eca0e7fbd00722e990e4e09cfe85bcb54","ref":"refs/heads/main","pushedAt":"2024-04-02T01:20:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"noncombatant","name":"Chris Palmer","path":"/noncombatant","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/372693?s=80&v=4"},"commit":{"message":"Protect save and update from CSRF (#117)\n\nAlso, fix a lint.\r\n\r\nFixes #116\r\n\r\nSigned-off-by: Chris Palmer ","shortMessageHtmlLink":"Protect save and update from CSRF (#117)"}},{"before":"4394028a44928ff21a9c315e5e246f2d4c97e2f6","after":null,"ref":"refs/heads/noncombatant/csrf-defense","pushedAt":"2024-04-02T01:20:59.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"noncombatant","name":"Chris Palmer","path":"/noncombatant","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/372693?s=80&v=4"}},{"before":"424ee4a521a9db1b67f3f329065c0889b582395a","after":"4394028a44928ff21a9c315e5e246f2d4c97e2f6","ref":"refs/heads/noncombatant/csrf-defense","pushedAt":"2024-04-02T01:13:51.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"noncombatant","name":"Chris Palmer","path":"/noncombatant","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/372693?s=80&v=4"},"commit":{"message":"Protect save and update from CSRF\n\nAlso, fix a lint.\n\nFixes #116\n\nSigned-off-by: Chris Palmer ","shortMessageHtmlLink":"Protect save and update from CSRF"}},{"before":null,"after":"424ee4a521a9db1b67f3f329065c0889b582395a","ref":"refs/heads/noncombatant/csrf-defense","pushedAt":"2024-04-02T00:07:46.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"noncombatant","name":"Chris Palmer","path":"/noncombatant","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/372693?s=80&v=4"},"commit":{"message":"Protect save and update from CSRF\n\nAlso, fix a lint.\n\nFixes #116\n\nSigned-off-by: Chris Palmer ","shortMessageHtmlLink":"Protect save and update from CSRF"}},{"before":"1268d3ba150a32ff082ec2a80424aabcd3aec8d1","after":null,"ref":"refs/heads/will/suggest","pushedAt":"2024-03-15T21:42:44.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"}},{"before":"0b61ec165e9ca24876467093cfc91908981ecd4d","after":"6c79b503e19a500c551ce162b0a1b32abebd9a94","ref":"refs/heads/main","pushedAt":"2024-03-15T21:42:43.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"},"commit":{"message":"suggest long URL for new go links if peer exists\n\nIf you visit a non-existent go link, we render the home page and pre-\npopulate the \"short\" input with the name of the link, and autofocus the\n\"long\" input so that you can simply paste a long URL and submit.\n\nIt is common (at least at Tailscale) to create go links that correspond\nto the name of a device on the tailnet. For example, go/who points to\nhttp://who/. With this change, when you visit a non-existent go link,\nwe check to see if a peer exists on the tailnet with that name, and if\nso we suggest that as the long URL.\n\nSigned-off-by: Will Norris ","shortMessageHtmlLink":"suggest long URL for new go links if peer exists"}},{"before":"787690a8ed5fa7baab8cb3876aa645179f900e2b","after":"1268d3ba150a32ff082ec2a80424aabcd3aec8d1","ref":"refs/heads/will/suggest","pushedAt":"2024-03-15T18:50:02.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"},"commit":{"message":"suggest long URL for new go links if peer exists\n\nIf you visit a non-existent go link, we render the home page and pre-\npopulate the \"short\" input with the name of the link, and autofocus the\n\"long\" input so that you can simply paste a long URL and submit.\n\nIt is common (at least at Tailscale) to create go links that correspond\nto the name of a device on the tailnet. For example, go/who points to\nhttp://who/. With this change, when you visit a non-existent go link,\nwe check to see if a peer exists on the tailnet with that name, and if\nso we suggest that as the long URL.\n\nSigned-off-by: Will Norris ","shortMessageHtmlLink":"suggest long URL for new go links if peer exists"}},{"before":null,"after":"787690a8ed5fa7baab8cb3876aa645179f900e2b","ref":"refs/heads/will/suggest","pushedAt":"2024-03-15T18:46:54.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"},"commit":{"message":"suggest long URL for new go links if peer exists\n\nIf you visit a non-existent go link, we render the home page and pre-\npopulate the \"short\" input with the name of the link, and autofocus the\n\"long\" input so that you can simply paste a long URL and submit.\n\nIt is common (at least at Tailscale) to create go links that correspond\nto the name of a device on the tailnet. For example, go/who points to\nhttp://who/. With this change, when you visit a non-existent go link,\nwe check to see if a peer exists on the tailnet with that name, and if\nso we suggest that as the long URL.\n\nSigned-off-by: Will Norris ","shortMessageHtmlLink":"suggest long URL for new go links if peer exists"}},{"before":"af345e6af13aeed375f685ce0124f9ad6e0a5df9","after":null,"ref":"refs/heads/will/https-flag","pushedAt":"2024-03-04T19:26:20.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"}},{"before":"544870985e579996640182ec02e322500d3bb57e","after":"0b61ec165e9ca24876467093cfc91908981ecd4d","ref":"refs/heads/main","pushedAt":"2024-03-04T19:26:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"},"commit":{"message":"make https optional (but default to on)\n\nFixes #107\n\nSigned-off-by: Will Norris ","shortMessageHtmlLink":"make https optional (but default to on)"}},{"before":"fe18ffba8d741700aaef5f795ff70aeca827578f","after":null,"ref":"refs/heads/will/webui","pushedAt":"2024-03-04T18:04:20.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"}},{"before":"b76177ac91c9268de08dc19226bb8832f979e1cc","after":"544870985e579996640182ec02e322500d3bb57e","ref":"refs/heads/main","pushedAt":"2024-03-04T18:04:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"},"commit":{"message":"enable new web ui for managing node\n\nwe've had support for enabling the web UI in tsnet apps from the\nbeginning, but I don't think we've ever actually used it anywhere.\nsome of the settings exposed through the web ui don't make a ton of\nsense for tsnet, and might not even work. But we're working toward\nbeing able to enable the web ui on clients by default (with all of the\nexisting restrictions and ACL enforcement in place), and golink seemed\nlike a good playground to try it in a tsnet app.\n\nSigned-off-by: Will Norris ","shortMessageHtmlLink":"enable new web ui for managing node"}},{"before":"7367be11d0a7667a17abba08b77a22f122d370db","after":"af345e6af13aeed375f685ce0124f9ad6e0a5df9","ref":"refs/heads/will/https-flag","pushedAt":"2024-03-02T03:50:29.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"willnorris","name":"Will Norris","path":"/willnorris","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1112?s=80&v=4"},"commit":{"message":"make https optional (but default to on)\n\nFixes #107\n\nSigned-off-by: Will Norris ","shortMessageHtmlLink":"make https optional (but default to on)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAERR7nlwA","startCursor":null,"endCursor":null}},"title":"Activity ยท tailscale/golink"}