Browse Source

Merge branch 'main' into v2

* main:
  build: use own script instead of svu
  chore(gui, man, authors): update docs, translations, and contributors
Jakob Borg 5 months ago
parent
commit
ac3f390afa

+ 2 - 6
.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"

+ 1 - 0
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

+ 2 - 0
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=

+ 3 - 1
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",

+ 1 - 1
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

+ 1 - 1
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

+ 4 - 3
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

+ 18 - 1
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

+ 1 - 1
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

+ 1 - 1
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

+ 1 - 1
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

+ 1 - 1
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

+ 1 - 1
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

+ 1 - 1
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

+ 6 - 3
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.

+ 1 - 1
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

+ 1 - 1
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

+ 1 - 1
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

+ 1 - 1
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

+ 1 - 1
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

+ 118 - 0
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
+}