diff --git a/.github/workflows/release-syncthing.yaml b/.github/workflows/release-syncthing.yaml index 53619e73b..94e4c83ee 100644 --- a/.github/workflows/release-syncthing.yaml +++ b/.github/workflows/release-syncthing.yaml @@ -25,16 +25,12 @@ jobs: with: go-version: stable - - name: Get svu - run: | - go install github.com/caarlos0/svu@latest - - name: Determine version to release run: | if [[ "$GITHUB_REF_NAME" == "release" ]] ; then - next=$(svu next) + next=$(go run ./script/next-version.go) else - next=$(svu prerelease --pre-release rc) + next=$(go run ./script/next-version.go --pre) fi echo "NEXT=$next" >> $GITHUB_ENV echo "Next version is $next" diff --git a/go.mod b/go.mod index 5af31ba21..edd012200 100644 --- a/go.mod +++ b/go.mod @@ -61,6 +61,7 @@ require ( github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/certifi/gocertifi v0.0.0-20210507211836-431795d63e8d // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/coreos/go-semver v0.3.1 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dustin/go-humanize v1.0.1 // indirect diff --git a/go.sum b/go.sum index a10124f68..5f505877f 100644 --- a/go.sum +++ b/go.sum @@ -48,6 +48,8 @@ github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= +github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc= github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= diff --git a/gui/default/assets/lang/lang-fil.json b/gui/default/assets/lang/lang-fil.json index 8a2cdc19f..2c96fdbc8 100644 --- a/gui/default/assets/lang/lang-fil.json +++ b/gui/default/assets/lang/lang-fil.json @@ -27,6 +27,7 @@ "Allowed Networks": "Mga Pinapayagang Network", "Alphabetic": "Alpabetiko", "Altered by ignoring deletes.": "Binago sa pamamagitan ng hindi pagpansin sa mga pagtanggal.", + "Always turned on when the folder type is \"{%foldertype%}\".": "Palaging nakabukas kung ang uri ng folder ay nakatakda bilang \"{{foldertype}}\".", "An external command handles the versioning. It has to remove the file from the shared folder. If the path to the application contains spaces, it should be quoted.": "Pinapamahala ng external na command ang file versioning. Kailangan nitong tanggalin ang file mula sa binabahaging folder. Kung may mga space ang path sa application, kailangan itong i-quote.", "Anonymous Usage Reporting": "Anonymous na Pag-uulat ng Paggamit", "Anonymous usage report format has changed. Would you like to move to the new format?": "Nagbago ang pormat ng anonymous na ulat ng paggamit. Gusto mo bang lumipat sa bagong pormat?", @@ -52,6 +53,7 @@ "Body:": "Body:", "Bugs": "Mga Bug", "Cancel": "Kanselahin", + "Cannot be enabled when the folder type is \"{%foldertype%}\".": "Hindi maaaring paganahin kapag ang uri ng folder ay \"{{foldertype}}\".", "Changelog": "Mga Pagbabago", "Clean out after": "Linisin pagkatapos", "Cleaning Versions": "Mga Bersyon ng Paglinis", @@ -311,7 +313,7 @@ "Receive Encrypted": "Makatanggap Naka-Encrypt", "Receive Only": "Makatanggap Lamang", "Received data is already encrypted": "Naka-encrypt na ang natanggap na data", - "Recent Changes": "Mga Kamakilang Pagbabago", + "Recent Changes": "Mga Kamakailang Pagbabago", "Reduced by ignore patterns": "Binabawasan ng mga ignore pattern", "Relay LAN": "Relay na LAN", "Relay WAN": "Relay na WAN", diff --git a/man/stdiscosrv.1 b/man/stdiscosrv.1 index d5e0831eb..2a086ba20 100644 --- a/man/stdiscosrv.1 +++ b/man/stdiscosrv.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "STDISCOSRV" "1" "May 25, 2025" "v1.29.6" "Syncthing" +.TH "STDISCOSRV" "1" "Jun 01, 2025" "v1.29.6" "Syncthing" .SH NAME stdiscosrv \- Syncthing Discovery Server .SH SYNOPSIS diff --git a/man/strelaysrv.1 b/man/strelaysrv.1 index d617a6632..043c4188e 100644 --- a/man/strelaysrv.1 +++ b/man/strelaysrv.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "STRELAYSRV" "1" "May 25, 2025" "v1.29.6" "Syncthing" +.TH "STRELAYSRV" "1" "Jun 01, 2025" "v1.29.6" "Syncthing" .SH NAME strelaysrv \- Syncthing Relay Server .SH SYNOPSIS diff --git a/man/syncthing-bep.7 b/man/syncthing-bep.7 index 7cd86dfc0..f8278658b 100644 --- a/man/syncthing-bep.7 +++ b/man/syncthing-bep.7 @@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-BEP" "7" "May 25, 2025" "v1.29.6" "Syncthing" +.TH "SYNCTHING-BEP" "7" "Jun 01, 2025" "v1.29.6" "Syncthing" .SH NAME syncthing-bep \- Block Exchange Protocol v1 .SH INTRODUCTION AND DEFINITIONS @@ -254,8 +254,9 @@ protocol buffer message just as in the uncompressed case. This informational message provides information about the cluster configuration as it pertains to the current connection. A Cluster Config message MUST be the first post authentication message sent on a BEP -connection. Additional Cluster Config messages MUST NOT be sent after the -initial exchange. +connection. Additional Cluster Config messages MAY be sent after the initial +exchange to change the connection in place with the update configuration. If an +implementation does not support that, it SHOULD close the connection. .SS Protocol Buffer Schema .INDENT 0.0 .INDENT 3.5 diff --git a/man/syncthing-config.5 b/man/syncthing-config.5 index 60478e60a..68a8366eb 100644 --- a/man/syncthing-config.5 +++ b/man/syncthing-config.5 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-CONFIG" "5" "May 25, 2025" "v1.29.6" "Syncthing" +.TH "SYNCTHING-CONFIG" "5" "Jun 01, 2025" "v1.29.6" "Syncthing" .SH NAME syncthing-config \- Syncthing Configuration .SH SYNOPSIS @@ -1537,6 +1537,23 @@ no limit. Affects incoming connections and prevents attempting outgoing connections. The mechanism is described in detail in a \fI\%separate chapter\fP\&. .UNINDENT +.INDENT 0.0 +.TP +.B auditEnabled +When \fBtrue\fP, analogous to \fI\%\-\-audit\fP being set. +Defaults to \fBfalse\fP\&. +.sp +When either this option, or \fI\%\-\-audit\fP (or both) are enabled, +auditing is enabled. +.UNINDENT +.INDENT 0.0 +.TP +.B auditFile +Analogous to \fI\%\-\-auditfile\fP\&. Defaults to being unset. +.sp +For compatibility reasons, if both this option and \fI\%\-\-auditfile\fP +are set, \fI\%\-\-auditfile\fP takes priority. +.UNINDENT .SH DEFAULTS ELEMENT .INDENT 0.0 .INDENT 3.5 diff --git a/man/syncthing-device-ids.7 b/man/syncthing-device-ids.7 index d17001e3f..a3e08c86c 100644 --- a/man/syncthing-device-ids.7 +++ b/man/syncthing-device-ids.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-DEVICE-IDS" "7" "May 25, 2025" "v1.29.6" "Syncthing" +.TH "SYNCTHING-DEVICE-IDS" "7" "Jun 01, 2025" "v1.29.6" "Syncthing" .SH NAME syncthing-device-ids \- Understanding Device IDs .sp diff --git a/man/syncthing-event-api.7 b/man/syncthing-event-api.7 index d8bf2a5a0..9deb6d00f 100644 --- a/man/syncthing-event-api.7 +++ b/man/syncthing-event-api.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-EVENT-API" "7" "May 25, 2025" "v1.29.6" "Syncthing" +.TH "SYNCTHING-EVENT-API" "7" "Jun 01, 2025" "v1.29.6" "Syncthing" .SH NAME syncthing-event-api \- Event API .SH DESCRIPTION diff --git a/man/syncthing-faq.7 b/man/syncthing-faq.7 index ce59664e2..ed9faa0dd 100644 --- a/man/syncthing-faq.7 +++ b/man/syncthing-faq.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-FAQ" "7" "May 25, 2025" "v1.29.6" "Syncthing" +.TH "SYNCTHING-FAQ" "7" "Jun 01, 2025" "v1.29.6" "Syncthing" .SH NAME syncthing-faq \- Frequently Asked Questions .INDENT 0.0 diff --git a/man/syncthing-globaldisco.7 b/man/syncthing-globaldisco.7 index b09d2ca2a..3f4a9bd35 100644 --- a/man/syncthing-globaldisco.7 +++ b/man/syncthing-globaldisco.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-GLOBALDISCO" "7" "May 25, 2025" "v1.29.6" "Syncthing" +.TH "SYNCTHING-GLOBALDISCO" "7" "Jun 01, 2025" "v1.29.6" "Syncthing" .SH NAME syncthing-globaldisco \- Global Discovery Protocol v3 .SH ANNOUNCEMENTS diff --git a/man/syncthing-localdisco.7 b/man/syncthing-localdisco.7 index 46526c13c..d59ffb0e9 100644 --- a/man/syncthing-localdisco.7 +++ b/man/syncthing-localdisco.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-LOCALDISCO" "7" "May 25, 2025" "v1.29.6" "Syncthing" +.TH "SYNCTHING-LOCALDISCO" "7" "Jun 01, 2025" "v1.29.6" "Syncthing" .SH NAME syncthing-localdisco \- Local Discovery Protocol v4 .SH MODE OF OPERATION diff --git a/man/syncthing-networking.7 b/man/syncthing-networking.7 index 4d04dea7f..241a2b066 100644 --- a/man/syncthing-networking.7 +++ b/man/syncthing-networking.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-NETWORKING" "7" "May 25, 2025" "v1.29.6" "Syncthing" +.TH "SYNCTHING-NETWORKING" "7" "Jun 01, 2025" "v1.29.6" "Syncthing" .SH NAME syncthing-networking \- Firewall Setup .SH ROUTER SETUP diff --git a/man/syncthing-relay.7 b/man/syncthing-relay.7 index 7573ebf86..6576e2bd4 100644 --- a/man/syncthing-relay.7 +++ b/man/syncthing-relay.7 @@ -28,7 +28,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-RELAY" "7" "May 25, 2025" "v1.29.6" "Syncthing" +.TH "SYNCTHING-RELAY" "7" "Jun 01, 2025" "v1.29.6" "Syncthing" .SH NAME syncthing-relay \- Relay Protocol v1 .SH WHAT IS A RELAY? @@ -246,8 +246,11 @@ After the successful response, all the bytes written and received will be relayed between the two devices in the session directly. .SS Example Exchange .sp -Client A \- Permanent protocol mode -Client B \- Temporary protocol mode +Client A is the first to join the session. +.sp +Client B is the second to join the session. +.sp +Both are in session mode. .TS box center; l|l|l|l. diff --git a/man/syncthing-rest-api.7 b/man/syncthing-rest-api.7 index 94abbf5d0..25d4ece4c 100644 --- a/man/syncthing-rest-api.7 +++ b/man/syncthing-rest-api.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-REST-API" "7" "May 25, 2025" "v1.29.6" "Syncthing" +.TH "SYNCTHING-REST-API" "7" "Jun 01, 2025" "v1.29.6" "Syncthing" .SH NAME syncthing-rest-api \- REST API .sp diff --git a/man/syncthing-security.7 b/man/syncthing-security.7 index 16b9e2510..540dde2e4 100644 --- a/man/syncthing-security.7 +++ b/man/syncthing-security.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-SECURITY" "7" "May 25, 2025" "v1.29.6" "Syncthing" +.TH "SYNCTHING-SECURITY" "7" "Jun 01, 2025" "v1.29.6" "Syncthing" .SH NAME syncthing-security \- Security Principles .sp diff --git a/man/syncthing-stignore.5 b/man/syncthing-stignore.5 index 6e5e24dd0..84d2c8c29 100644 --- a/man/syncthing-stignore.5 +++ b/man/syncthing-stignore.5 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-STIGNORE" "5" "May 25, 2025" "v1.29.6" "Syncthing" +.TH "SYNCTHING-STIGNORE" "5" "Jun 01, 2025" "v1.29.6" "Syncthing" .SH NAME syncthing-stignore \- Prevent files from being synchronized to other nodes .SH SYNOPSIS diff --git a/man/syncthing-versioning.7 b/man/syncthing-versioning.7 index 070fa33b7..a403b8a8f 100644 --- a/man/syncthing-versioning.7 +++ b/man/syncthing-versioning.7 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING-VERSIONING" "7" "May 25, 2025" "v1.29.6" "Syncthing" +.TH "SYNCTHING-VERSIONING" "7" "Jun 01, 2025" "v1.29.6" "Syncthing" .SH NAME syncthing-versioning \- Keep automatic backups of deleted files by other nodes .sp diff --git a/man/syncthing.1 b/man/syncthing.1 index 6697a5991..712328a23 100644 --- a/man/syncthing.1 +++ b/man/syncthing.1 @@ -27,7 +27,7 @@ level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. -.TH "SYNCTHING" "1" "May 25, 2025" "v1.29.6" "Syncthing" +.TH "SYNCTHING" "1" "Jun 01, 2025" "v1.29.6" "Syncthing" .SH NAME syncthing \- Syncthing .SH SYNOPSIS diff --git a/script/next-version.go b/script/next-version.go new file mode 100644 index 000000000..f3052e360 --- /dev/null +++ b/script/next-version.go @@ -0,0 +1,118 @@ +//go:build ignore +// +build ignore + +package main + +import ( + "flag" + "fmt" + "os" + "os/exec" + "strconv" + "strings" + + "github.com/coreos/go-semver/semver" +) + +const suffix = "rc" + +func main() { + pre := flag.Bool("pre", false, "Create a prerelease") + flag.Parse() + + // Get the latest "v1.22.3" or "v1.22.3-rc.1" style tag. + latestTag, err := cmd("git", "describe", "--abbrev=0", "--match", "v[0-9].*") + if err != nil { + fmt.Println(err) + os.Exit(1) + } + latest, err := semver.NewVersion(latestTag[1:]) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + + // Get the latest "v1.22.3" style tag, excludeing prereleases. + latestStableTag, err := cmd("git", "describe", "--abbrev=0", "--match", "v[0-9].*", "--exclude", "*-*") + if err != nil { + fmt.Println(err) + os.Exit(1) + } + latestStable, err := semver.NewVersion(latestStableTag[1:]) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + + // Get the commit logs since the latest stable tag. + logsSinceLatest, err := cmd("git", "log", "--pretty=format:%s", latestStableTag+"..HEAD") + if err != nil { + fmt.Println(err) + os.Exit(1) + } + + // Check if the next version should be a feature or a patch release + nextIsFeature := false + for _, line := range strings.Split(logsSinceLatest, "\n") { + if strings.HasPrefix(line, "feat") { + nextIsFeature = true + break + } + } + next := *latestStable + if nextIsFeature { + next.BumpMinor() + } else { + next.BumpPatch() + } + + if latest.PreRelease != "" { + if !*pre { + // We want a stable release. Simply remove the prerelease + // suffix. + latest.PreRelease = "" + fmt.Println(latest) + return + } + + // We want the next prerelease. We are already on a prerelease. If + // it's the correct prerelease compared to the logs we just got, we + // should just bump the prerelease counter. + if next.LessThan(*latest) { + parts := latest.PreRelease.Slice() + for i, p := range parts { + if v, err := strconv.Atoi(p); err == nil { + parts[i] = strconv.Itoa(v + 1) + latest.PreRelease = semver.PreRelease(strings.Join(parts, ".")) + fmt.Println(latest) + return + } + } + } + + // Otherwise we generate a new rc.1 for the correct next version. + next.PreRelease = suffix + ".1" + fmt.Println(next) + return + } + + if nextIsFeature { + latest.BumpMinor() + } else { + latest.BumpPatch() + } + if *pre { + latest.PreRelease = suffix + ".1" + } + + fmt.Println(latest) +} + +func cmd(name string, args ...string) (string, error) { + cmd := exec.Command(name, args...) + bs, err := cmd.CombinedOutput() + if err != nil { + return "", err + } + return strings.TrimSpace(string(bs)), nil +}