Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lib/db: Hold update lock while taking snapshot #9496

Merged
merged 1 commit into from
Apr 5, 2024

Conversation

calmh
Copy link
Member

@calmh calmh commented Apr 5, 2024

We need things to be quiescent so that the database snapshot matches the metadata snapshot.

Copy link
Member

@imsodin imsodin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should be good here with deadlocks: No iterator-style methods that acquire the lock nor callbacks, so impossible for a caller outside db to also get a snapshot while already doing something that hold the update lock.

I am mildly concerned about lock contention/delays in what's presumed to be cheap/quick read-only operations, during times of heavy writes (e.g. new remote). For a reasonably fast filesystem that's likely not a problem, however if anyone has it on a spinning disk it may be (though that's anyway not great). Thus maybe worth making it an rw-mutex, such that all snapshots can happen at once with a read-lock as soon as a (batch) write with a write-lock is done.

@calmh
Copy link
Member Author

calmh commented Apr 5, 2024

Possibly... but if there are no writers I expect the snapshotting to be quite fast. Let's try this.

@calmh calmh merged commit 2e7c034 into syncthing:main Apr 5, 2024
20 of 21 checks passed
@imsodin
Copy link
Member

imsodin commented Apr 7, 2024

Should we add a db transition to reset delta indexes on upgrading to 1.27.6? Seems like quite a few people are affected, and the fix wont help them until indexes are transferred again. A few pointless delta transfers seems a fair price to fix affected systems.

@calmh
Copy link
Member Author

calmh commented Apr 8, 2024

Agreed

calmh added a commit to calmh/syncthing that referenced this pull request Apr 8, 2024
calmh added a commit that referenced this pull request Apr 8, 2024
…9502)

### Purpose

Resend our indexes since we fixed that index-sending issue.

I made a new thing to only drop the non-local-device index IDs, i.e.,
those for other devices. This means we will see a mismatch and resend
all indexes, but they will not. This is somewhat cleaner as it avoids
resending everything twice when two devices are upgraded, and in any
case, we have no reason to force a resend of incoming indexes here.

### Testing

It happens on my computer...
@LinuxOnTheDesktop
Copy link

@imsodin : 'though that's anyway not great' - if Syncthing is discommended for HDDs then surely that ought to be declared prominently somewhere.

@bt90
Copy link
Contributor

bt90 commented Apr 10, 2024

Keeping Syncthings database on a HDD isn't a good idea, performance-wise. That's always been the case and is nothing new.

It's a potential bottleneck, but it works. Spinning rust and fast random I/O are two mutually exclusive things.

@LinuxOnTheDesktop
Copy link

Ah, the database (and only a bottlebeck - ah).

calmh added a commit to calmh/syncthing that referenced this pull request May 9, 2024
* main: (45 commits)
  build: Use Go 1.22.3 at minimum
  build: Use Go 1.22.3 at minimum
  gui: Add Hindi (hi) translation template (syncthing#9530)
  gui, man, authors: Update docs, translations, and contributors
  lib/connections: Add syncthing_connections_active metric (fixes syncthing#9527) (syncthing#9528)
  etc: Use 7MiB buffer size (syncthing#9524)
  gui: Fix Firefox bookmark favicon (fixes syncthing#9506) (syncthing#9507)
  gui, man, authors: Update docs, translations, and contributors
  gui, man, authors: Update docs, translations, and contributors
  gui, man, authors: Update docs, translations, and contributors
  lib/nat: Don't crash on empty address list (fixes syncthing#9503) (syncthing#9504)
  lib/db: Drop indexes for outgoing data to force refresh (ref syncthing#9496) (syncthing#9502)
  gui: Fix missing link to device editor for names with superscript (ref syncthing#9472) (syncthing#9494)
  lib/db: Hold update lock while taking snapshot (syncthing#9496)
  build: Update dependencies (syncthing#9497)
  gui, man, authors: Update docs, translations, and contributors
  gui, man, authors: Update docs, translations, and contributors
  Removed no longer relevant Bountysource link (syncthing#9480)
  lib/api: Missing return after HTTP error
  lib/api: Extract session store (syncthing#9425)
  ...
calmh added a commit to calmh/syncthing that referenced this pull request May 24, 2024
* main: (47 commits)
  gui, man, authors: Update docs, translations, and contributors
  build: Use Go 1.22.3 at minimum
  gui: Add Hindi (hi) translation template (syncthing#9530)
  gui, man, authors: Update docs, translations, and contributors
  lib/connections: Add syncthing_connections_active metric (fixes syncthing#9527) (syncthing#9528)
  etc: Use 7MiB buffer size (syncthing#9524)
  gui: Fix Firefox bookmark favicon (fixes syncthing#9506) (syncthing#9507)
  gui, man, authors: Update docs, translations, and contributors
  gui, man, authors: Update docs, translations, and contributors
  gui, man, authors: Update docs, translations, and contributors
  lib/nat: Don't crash on empty address list (fixes syncthing#9503) (syncthing#9504)
  lib/db: Drop indexes for outgoing data to force refresh (ref syncthing#9496) (syncthing#9502)
  gui: Fix missing link to device editor for names with superscript (ref syncthing#9472) (syncthing#9494)
  lib/db: Hold update lock while taking snapshot (syncthing#9496)
  build: Update dependencies (syncthing#9497)
  gui, man, authors: Update docs, translations, and contributors
  gui, man, authors: Update docs, translations, and contributors
  Removed no longer relevant Bountysource link (syncthing#9480)
  lib/api: Missing return after HTTP error
  lib/api: Extract session store (syncthing#9425)
  ...
rasa added a commit to rasa/syncthing that referenced this pull request Jul 7, 2024
Squashed commit of the following:

commit aea7fa5f22924fed75571cd07564f9e057c7f64f
Author: Simon Frei <freisim93@gmail.com>
Date:   Tue Jul 2 13:01:00 2024 +0200

    lib/ignore: Remove unused patterns in cache (#9601)

    Tiny cleanup I noticed while trying to fix/test another issue
    (https://github.com/syncthing/syncthing/pull/9600). I shortly tried to
    figure out what it was used for in the past, but gave up without
    results.

commit 403ce7e597c3b425f6e35bc479dba8292e908094
Author: Simon Frei <freisim93@gmail.com>
Date:   Tue Jul 2 12:58:06 2024 +0200

    lib/ignore: Fix caching of filenames with path separators on windows (#9600)

    Previously we queried cache with backslashes, and stored entries with
    slashes. As in no cache hits ever for non-toplevel files. I also
    eventually remembered that cache is disabled by default, so this is a
    bit pointless, but still right :P

commit 4704d3bc48761d89c2eafadf79f5d268631a063d
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon Jul 1 03:45:16 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit 2794b04243b2ada2367cb68452d17d49f3536b3f
Author: André Colomb <src@andre.colomb.de>
Date:   Sat Jun 29 17:53:32 2024 +0200

    gui: Add Filipino (fil) translation template (#9599)

commit 1ce64971fd2321ded8b1aa2b67583c695aab2ebb
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon Jun 24 03:45:42 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit eb6d80eac48969754d1e0cf1ba3434b19093fc2e
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon Jun 17 03:45:27 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit a8db3351ae920a27b4c0ed1f9fe6da1e80a2b8e6
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon Jun 10 03:45:25 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit 23a900e09609dba6c3254eaffff3ae088e87dd87
Author: Ross Smith II <ross@smithii.com>
Date:   Wed Jun 5 03:05:51 2024 -0700

    gui: Use localised time in duration (#9552)

    https://github.com/syncthing/syncthing/pull/8291 inpired me to develop
    this. I tested it with all the languages Syncthing currently supports,
    and they all work.

    The only issue is that when you change the language in the GUI, you have
    to either refresh the page, or wait a few seconds for the page to
    refresh by itself, before the duration is translated into the new
    language.

    ### Screenshots

    ![2024-05-20_21-47-58](https://github.com/syncthing/syncthing/assets/220772/7e3b371e-3495-4e3e-853a-b5a41215e6c7)

    ### Documentation

    The documentation for the translation widget is at
    https://github.com/EvanHahn/HumanizeDuration.js/blob/main/README.md

commit 5a304cf2958435aca91438ee8b1b1265363ac7b4
Author: Jakob Borg <jakob@kastelo.net>
Date:   Tue Jun 4 08:55:37 2024 -0400

    build: Skip autoprocs for build script

commit 136b3742bf4cc89ea4365d8b732281a2052f4cc3
Author: Jakob Borg <jakob@kastelo.net>
Date:   Tue Jun 4 13:58:49 2024 +0200

    build: Update dependencies (#9565)

commit 21e0f98fe266964765fcfee4b1b109b47a810410
Merge: 495809ac9 2bb5b2244
Author: Jakob Borg <jakob@kastelo.net>
Date:   Tue Jun 4 07:18:35 2024 -0400

    Merge branch 'infrastructure'

    * infrastructure:
      cmd/stupgrades: Basic process metrics
      cmd/stcrashreceiver: Ignore patterns, improve metrics
      cmd/strelaypoolsrv: More compact response, improved metrics
      cmd/stdiscosrv: Add AMQP replication

commit 2bb5b2244ba38c279d1bac6afaea463f67fce2b0
Author: Jakob Borg <jakob@kastelo.net>
Date:   Mon Jun 3 07:17:32 2024 +0200

    cmd/stupgrades: Basic process metrics

commit 2f281799c16ac9f32563e6fba513e3a0b846bad6
Author: Jakob Borg <jakob@kastelo.net>
Date:   Mon Jun 3 07:16:56 2024 +0200

    cmd/stcrashreceiver: Ignore patterns, improve metrics

commit 18a58a2ddc51b36ef204bb6d4e19a2b904a80498
Author: Jakob Borg <jakob@kastelo.net>
Date:   Mon Jun 3 07:14:45 2024 +0200

    cmd/strelaypoolsrv: More compact response, improved metrics

commit f283215fce1660753fba9e213a5fee8820137c0c
Author: Jakob Borg <jakob@kastelo.net>
Date:   Mon Jun 3 07:13:21 2024 +0200

    cmd/stdiscosrv: Add AMQP replication

commit 495809ac9ecb0bffd4045d164021f2b4ed235ecc
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon Jun 3 03:45:18 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit 9ca8addcf70ab7fcd92f01ee73b04530e0f382df
Author: Jakob Borg <jakob@kastelo.net>
Date:   Thu May 30 10:48:55 2024 +0200

    build: Add missing region attribute for uploads

commit 94181ade230f252e2f7a51cb7f4fd0c757c086da
Author: Jakob Borg <jakob@kastelo.net>
Date:   Mon May 27 13:56:32 2024 +0200

    build: Generalise S3 push options

commit e50933433e1e12cde5e15071768ab7a53eeed940
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon May 27 03:45:21 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit a2b8f2361ec0ccc07f46a19ed6dcc338cc96bf9a
Author: Jakob Borg <jakob@kastelo.net>
Date:   Fri May 24 08:51:02 2024 +0200

    lib/config: Add file inside folder marker directory (#9525)

    ### Purpose

    Avoid the issue where the folder marker is deleted by overzealous
    cleanup tools because it's just a useless, empty directory.

    We create a small file containing a an admonishment to not delete the
    directory, and some metadata that is just for human consumption at the
    moment. (But it would parse as a valid yaml file if we wanted to read
    this, at some point.)

    This will only apply when _creating_ a folder marker, that is, existing
    setups will not gain the file automatically. Obviously, when using a
    custom folder marker none of this applies.

    Also, slightly adjust the permission bits for the folder marker directory and file on Unixes, making sure the group & write bits are unset.

    ### Testing

    I've created and deleted a few folders and it appears to behave as I
    expect.

    ### Screenshots

    ```
    jb@ok:~/somefolder % ls -la
    total 0
    drwxr-xr-x   3 jb  staff   96 May  1 08:52 ./
    drwx------  12 jb  staff  384 May  1 08:52 ../
    drwxr-xr-x   3 jb  staff   96 May  1 08:52 .stfolder/
    jb@ok:~/somefolder % ls -l .stfolder
    total 8
    -rw-r--r--  1 jb  staff  122 May  1 08:52 syncthing-folder-39a4b0.txt
    jb@ok:~/somefolder % cat .stfolder/syncthing-folder-39a4b0.txt
    # This directory is a Syncthing folder marker.
    # Do not delete.

    folderID: xtdca-cudyf
    created: 2024-05-01T08:52:49+02:00
    ```

commit 4b60e86d0247fcca5c2117f4a1ed8eb1f9ff5d94
Author: Jakob Borg <jakob@kastelo.net>
Date:   Thu May 23 16:21:00 2024 +0200

    lib/config, lib/watchaggregator: Add config for max FS watcher delay (#9558)

    Currently the maximum delay is always derived automatically from the
    initial delay. This is fine in most cases, but for some use cases (large
    files that take a long time to write) we need to be able to set a longer
    max delay than the computed value (e.g., 15s delay with 10min timeout).

commit d6b5676603c4325874345ce07fb3ef07c403dd32
Author: Jakob Borg <jakob@kastelo.net>
Date:   Thu May 23 09:39:10 2024 +0200

    lib/fs: Watcher should react to xattr-only events on Darwin

commit 3821b6ceee2767dd12bea21a59ea82676e8a5305
Author: Jakob Borg <jakob@kastelo.net>
Date:   Tue May 21 13:37:43 2024 +0300

    build: Update dependencies (#9553)

commit 973585e97dbde730742095004f4263b5cc28e24c
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon May 20 03:45:15 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit ba6ac2f604eb1cd27764460b687537c5e40aaaf8
Author: Jakob Borg <jakob@kastelo.net>
Date:   Sat May 18 19:31:49 2024 +0200

    lib/geoip, cmd/relaypoolsrv, cmd/ursrv: Automatically manage GeoIP updates (#9342)

    This adds a small package `geoip` which knows how to download and manage
    the Maxmind GeoLite2 database we use. This removes the need for various
    scripts to download and manage the geoip database, something that today
    happens on Docker startup for the relay pool server and using various
    hand written hacks for the usage reporting server.

    The database is downloaded when needed and then refreshed on a
    best-effort basis weekly.

commit 57d399317e050189d76068872cf791f1cd1c0e24
Author: luchenhan <168071714+luchenhan@users.noreply.github.com>
Date:   Thu May 16 15:02:57 2024 +0800

    lib/db: Correct function name in comments (#9520)

commit f2d6722348d8ba51b4e7b11ad1176f73cb75a3b1
Author: WangXi <xib1102@icloud.com>
Date:   Thu May 16 15:01:16 2024 +0800

    lib/connections: Use proper errors.Is check (#9538)

commit 7b1b77e50da147fb6ec8e461d8c049588adf4b7f
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Thu May 16 08:56:44 2024 +0200

    build(deps): bump github.com/quic-go/quic-go from 0.42.0 to 0.43.0 (#9522)

    Bumps [github.com/quic-go/quic-go](https://github.com/quic-go/quic-go)
    from 0.42.0 to 0.43.0.
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a
    href="https://github.com/quic-go/quic-go/releases">github.com/quic-go/quic-go's
    releases</a>.</em></p>
    <blockquote>
    <h2>v0.43.0</h2>
    <h2><em>quic-go.net</em>: Launching a new Documentation Site</h2>
    <p>With this release, we're launching a new documentation site for the
    quic-go projects (quic-go itself, HTTP/3, webtransport-go, and soon,
    masque-go): <a href="https://quic-go.net">quic-go.net</a>.</p>
    <p>The documentation site aims to explain QUIC concepts and how they are
    made accessible using quic-go's API. This site replaces the wiki, and
    the ever-growing README files.</p>
    <p>A lot of work has gone into the documentation already, but we're by
    no means done yet. The entire source is public in <a
    href="https://github.com/quic-go/docs/">https://github.com/quic-go/docs/</a>,
    and we're happy about community contributions.</p>
    <h2>HTTP Datagrams (RFC 9297)</h2>
    <p>This release adds support for HTTP Datagrams (<a
    href="https://datatracker.ietf.org/doc/html/rfc9297">RFC 9297</a>), both
    on the client and on the server side (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4452">#4452</a>).
    HTTP Datagrams are used in WebTransport in CONNECT-UDP (<a
    href="https://datatracker.ietf.org/doc/html/rfc9298">RFC 9298</a>),
    among others.</p>
    <p>The new API for HTTP Datagrams is described on the new documentation
    page: <a href="https://quic-go.net/docs/http3/datagrams/">HTTP
    Datagrams</a>. The integration of HTTP Datagram support necessitated a
    comprehensive refactor of the HTTP/3 package, resulting in several
    breaking API changes listed below.</p>
    <h2>Breaking Changes</h2>
    <ul>
    <li>quicvarint: functions now return an <code>int</code> instead the
    internal <code>protocol.ByteCount</code> (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4365">#4365</a>)</li>
    <li>http3: <code>Server.SetQuicHeaders</code> was renamed to
    <code>SetQUICHeaders</code> (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4377">#4377</a>)</li>
    <li>http3: <code>Server.QuicConfig</code> was renamed to
    <code>QUICConfig</code> (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4384">#4384</a>)</li>
    <li>http3: <code>RoundTripper.QuicConfig</code> was renamed to
    <code>QUICConfig</code> (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4385">#4385</a>)</li>
    <li>http3: <code>RoundTripOpt.CheckSettings</code> was removed (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4416">#4416</a>).
    Use the new<code>SingleDestinationRoundTripper</code> API instead.</li>
    <li>http3: the <code>HTTPStreamer</code> interface is now implemented by
    the <code>http.ResponseWriter</code> (and not the
    <code>http.Request.Body</code>) (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4469">#4469</a>)</li>
    <li>include the maximum payload size in the
    <code>DatagramTooLargeError</code> (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4470">#4470</a>)</li>
    </ul>
    <h2>Other Notable Changes</h2>
    <ul>
    <li>GSO and ECN is disabled on kernel versions older than 5 (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4456">#4456</a>)</li>
    <li>http3: logging can be controlled using an <code>slog.Logger</code>
    (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4449">#4449</a>)</li>
    <li>http3: HEAD requests can now be sent in 0-RTT (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4378">#4378</a>)</li>
    <li>http3: duplicate QPACK encoder and decoder streams are not rejected
    as required by the RFC (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4388">#4388</a>)</li>
    <li>http3: Extended CONNECT are blocked until the server's SETTINGS are
    received, as required by the RFC (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4450">#4450</a>)</li>
    <li>http3: HTTP/3 client connections aren't removed if
    <code>RoundTrip</code> errors due to a cancelled context (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4448">#4448</a>).
    Thanks to <a
    href="https://github.com/GeorgeMac"><code>@​GeorgeMac</code></a>!</li>
    <li>http3: sniff Content-Type when flushing the ResponseWriter (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4412">#4412</a>).
    Thanks to <a
    href="https://github.com/WeidiDeng"><code>@​WeidiDeng</code></a>!</li>
    <li>The <code>Context</code> exposed on the <code>quic.Stream</code> is
    now derived from the connection's context (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4414">#4414</a>)</li>
    <li>The UDP send and receive buffer size was increased to 7 MiB (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4455">#4455</a>).
    Thanks to <a
    href="https://github.com/bt90"><code>@​bt90</code></a>!</li>
    </ul>
    <h2>Clarifications on the QUIC Stream State Machine</h2>
    <h3>Calling CancelWrite after Close</h3>
    <p>After a long and fruitful discussion (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4404">#4404</a>),
    we decided to clarify that calling <code>CancelWrite</code> after
    <code>Close</code> on a <code>SendStream</code> (or a bidirectional
    stream) should cause a state transition from the &quot;Data Sent&quot;
    to the &quot;Reset Sent&quot; state, as described in <a
    href="https://datatracker.ietf.org/doc/html/rfc9000#section-3.1">section
    3.1 of RFC 9000</a>. This matches the current behavior of quic-go,
    however, it didn't match the API documentation (fixed in <a
    href="https://redirect.github.com/quic-go/quic-go/issues/4419">#4419</a>).</p>
    <p>This means that stream data will not be delivered reliably if
    <code>CancelWrite</code> is called, and that this applies even if
    <code>Close</code> was called before.</p>
    <h3>Garbage Collection of Streams</h3>
    <p>This release also changes the way streams are garbage-collected (and
    the peer is granted additional limit to open a new stream), once they're
    not needed anymore, in a subtle way:</p>
    <ul>
    <li>for the send direction of streams: <a
    href="https://redirect.github.com/quic-go/quic-go/issues/4445">#4445</a></li>
    </ul>
    <!-- raw HTML omitted -->
    </blockquote>
    <p>... (truncated)</p>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/quic-go/quic-go/commit/93c4785521c0622e7c4e04d681404f1c802e18c4"><code>93c4785</code></a>
    http3: sniff Content-Type when flushing the ResponseWriter (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4412">#4412</a>)</li>
    <li><a
    href="https://github.com/quic-go/quic-go/commit/c0250ce82459ebdc60cc95c39dffed7ee0c0ec6b"><code>c0250ce</code></a>
    include the maximum payload size in the DatagramTooLargeError (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4470">#4470</a>)</li>
    <li><a
    href="https://github.com/quic-go/quic-go/commit/34f4d1443f97c3b09e34023cbb912a8a803829a6"><code>34f4d14</code></a>
    http3: implement on the HTTPStreamer on the ResponseWriter, flush header
    (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4469">#4469</a>)</li>
    <li><a
    href="https://github.com/quic-go/quic-go/commit/083ceb42f29c7d25d86e221e5a7a22eb6af1c006"><code>083ceb4</code></a>
    http3: rename Settings.EnableDatagram to EnableDatagrams (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4466">#4466</a>)</li>
    <li><a
    href="https://github.com/quic-go/quic-go/commit/e1e5b6294d2cca73f0664f879889780cfa2ae51d"><code>e1e5b62</code></a>
    README: link to the new documentation site (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4464">#4464</a>)</li>
    <li><a
    href="https://github.com/quic-go/quic-go/commit/2a37c531438f0d1512f39be9c768c363389be1ae"><code>2a37c53</code></a>
    http3: add support for HTTP Datagrams (RFC 9297) (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4452">#4452</a>)</li>
    <li><a
    href="https://github.com/quic-go/quic-go/commit/11b11594b249517098aeabfebb3797e85719dd25"><code>11b1159</code></a>
    http3: fix race condition in client unit test (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4463">#4463</a>)</li>
    <li><a
    href="https://github.com/quic-go/quic-go/commit/4b87539b1efd2ffd05996fb2b9a7519a9cdb9cd2"><code>4b87539</code></a>
    delay completion of the receive stream until the reset error was read
    (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4460">#4460</a>)</li>
    <li><a
    href="https://github.com/quic-go/quic-go/commit/bff131e546ad5861fa1ae77766776d08bec9f3bc"><code>bff131e</code></a>
    delay completion of the send stream until the reset error was delivered
    (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4445">#4445</a>)</li>
    <li><a
    href="https://github.com/quic-go/quic-go/commit/12aa63824c7f91d7925bfc0bdb78ae0ad942b3bf"><code>12aa638</code></a>
    disable GSO and ECN on kernels older than version 5 (<a
    href="https://redirect.github.com/quic-go/quic-go/issues/4456">#4456</a>)</li>
    <li>Additional commits viewable in <a
    href="https://github.com/quic-go/quic-go/compare/v0.42.0...v0.43.0">compare
    view</a></li>
    </ul>
    </details>
    <br />

    [![Dependabot compatibility
    score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/quic-go/quic-go&package-manager=go_modules&previous-version=0.42.0&new-version=0.43.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

    Dependabot will resolve any conflicts with this PR as long as you don't
    alter it yourself. You can also trigger a rebase manually by commenting
    `@dependabot rebase`.

    [//]: # (dependabot-automerge-start)
    [//]: # (dependabot-automerge-end)

    ---

    <details>
    <summary>Dependabot commands and options</summary>
    <br />

    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits
    that have been made to it
    - `@dependabot merge` will merge this PR after your CI passes on it
    - `@dependabot squash and merge` will squash and merge this PR after
    your CI passes on it
    - `@dependabot cancel merge` will cancel a previously requested merge
    and block automerging
    - `@dependabot reopen` will reopen this PR if it is closed
    - `@dependabot close` will close this PR and stop Dependabot recreating
    it. You can achieve the same result by closing it manually
    - `@dependabot show <dependency name> ignore conditions` will show all
    of the ignore conditions of the specified dependency
    - `@dependabot ignore this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)

    </details>

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 06914b872b806eb06fe8382344b9c4d6c1eee30d
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon May 13 03:45:18 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit f6df8b40b4207f71bba73be641110b648959ad54
Author: Jakob Borg <jakob@kastelo.net>
Date:   Wed May 8 08:01:46 2024 +0200

    build: Use Go 1.22.3 at minimum

commit e057f5ee9a4f4f7a45cd91734ee085306971ff42
Author: André Colomb <src@andre.colomb.de>
Date:   Tue May 7 10:29:42 2024 +0200

    gui: Add Hindi (hi) translation template (#9530)

    Based on user request from Weblate, user @Scrambled777.

    Looks promising based on the profile:
    https://hosted.weblate.org/user/Scrambled777/

commit a5bf110d90117eb2e81fb65b6c1e4bc8d53131ea
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon May 6 03:45:24 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit debbe726e0e7f90b96022659b72d7991cf501a18
Author: DerRockWolf <50499906+DerRockWolf@users.noreply.github.com>
Date:   Sat May 4 22:31:37 2024 +0200

    lib/connections: Add syncthing_connections_active metric (fixes #9527) (#9528)

    ### Purpose

    Adds a new metric `syncthing_connections_active` which equals to the
    amount of active connections per device.

    Fixes #9527

    <!--
    Describe the purpose of this change. If there is an existing issue that
    is
    resolved by this pull request, ensure that the commit subject is on the
    form
    `Some short description (fixes #1234)` where 1234 is the issue number.
    -->

    ### Testing

    I've manually tested it by running syncthing with these changes locally
    and examining the returned metrics from `/metrics`.
    I've done the following things:
    - Connect & disconnect a device
    - Increase & decrease the number of connections and verify that the
    value of the metric matches with the amount displayed in the GUI.

    ### Documentation

    https://github.com/syncthing/docs/blob/main/includes/metrics-list.rst
    needs to be regenerated with
    [find-metrics.go](https://github.com/syncthing/docs/blob/main/_script/find-metrics/find-metrics.go)

    ## Authorship

    Your name and email will be added automatically to the AUTHORS file
    based on the commit metadata.

    ---------

    Co-authored-by: Jakob Borg <jakob@kastelo.net>

commit ec3e474a53201f508e07f14a8fe409fe1879327a
Author: otbutz <tbutz@optitool.de>
Date:   Wed May 1 10:03:07 2024 +0200

    etc: Use 7MiB buffer size (#9524)

    ### Purpose

    In preparation for quic-go v0.43.0. see
    https://github.com/quic-go/quic-go/pull/4455

commit ebb1edc652b284c85c5952208b7bdfd279d32189
Author: Severin von Wnuck-Lipinski <ss7@live.de>
Date:   Wed May 1 09:00:36 2024 +0200

    gui: Fix Firefox bookmark favicon (fixes #9506) (#9507)

    ### Purpose

    Firefox uses the last specified favicon link for bookmarks, but only if
    it is available on initial page load.
    Remove the second link and use ng-href to change the icon instead.

    I'm not really familiar with AngularJS, feel free to offer suggestions
    for improvements.

    ### Testing

    Briefly tested on Firefox 124.0.2 and Chrome 123.0.6312.105.

commit 6204670c663338be519d3cb96fd9232752e08294
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon Apr 29 03:45:25 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit ff9b24f388ea21f15954cf33d123aa3d34759d23
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon Apr 22 03:45:18 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit 01b820dc78e1d8240485fa79fdbd12160ffb4fa6
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon Apr 15 04:10:05 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit 79ae24df7688c37a7a897218c87bff412a887b9d
Author: Jakob Borg <jakob@kastelo.net>
Date:   Thu Apr 11 13:23:29 2024 +0200

    lib/nat: Don't crash on empty address list (fixes #9503) (#9504)

commit 61b94b9ea51d2591145e07361f2a1816a480b6bf
Author: Jakob Borg <jakob@kastelo.net>
Date:   Mon Apr 8 11:14:27 2024 +0200

    lib/db: Drop indexes for outgoing data to force refresh (ref #9496) (#9502)

    ### Purpose

    Resend our indexes since we fixed that index-sending issue.

    I made a new thing to only drop the non-local-device index IDs, i.e.,
    those for other devices. This means we will see a mismatch and resend
    all indexes, but they will not. This is somewhat cleaner as it avoids
    resending everything twice when two devices are upgraded, and in any
    case, we have no reason to force a resend of incoming indexes here.

    ### Testing

    It happens on my computer...

commit 6fb3c5ccf2ed2b94ebdedf1bdaadc8d50d8d1dd3
Author: tomasz1986 <twilczynski@naver.com>
Date:   Sun Apr 7 21:37:31 2024 +0200

    gui: Fix missing link to device editor for names with superscript (ref #9472) (#9494)

    The commit 7e4e65ebf53dd98f0fee3f021c399b12f5966f12 added links to
    devices listed in the Shared With list in the folder info. However, it
    only added them to those that had no superscript next to them.

    With this change, the links are added to all devices regardless of
    whether they have the superscript next to their names or not. The commit
    also simplifies the code by using anchors directly instead of wrapping
    them in spans.

    Signed-off-by: Tomasz Wilczyński <twilczynski@naver.com>

commit 2e7c03420fc56f7f7c9a5590efdfaf69d8049fbf
Author: Jakob Borg <jakob@kastelo.net>
Date:   Fri Apr 5 21:32:43 2024 +0200

    lib/db: Hold update lock while taking snapshot (#9496)

commit faa56b4bb7e085fee4e8021dfbc995627dc069c1
Author: Jakob Borg <jakob@kastelo.net>
Date:   Fri Apr 5 16:13:20 2024 +0200

    build: Update dependencies (#9497)

commit d7ba5316b8f084472d3987adbeabfb256aad1b0e
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon Apr 1 03:45:41 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit bdfd0f0548d2f6fc4b5500690dbd383baa3b0561
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon Mar 25 03:45:14 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit 5d27185083d1acfc91b0b33438876313283cca88
Author: Tim Nordenfur <tim@gurka.se>
Date:   Sat Mar 23 00:23:02 2024 +0100

    Removed no longer relevant Bountysource link (#9480)

    ### Purpose

    Bountysource no longer exists and the readme link 404s. This removes the
    Bountysource link and corresponding readme section.

    Perhaps the section should instead be replaced by other instructions for
    voting on features.

commit 4dfb9d7c83ed172f12ae19408517961f4a49beeb
Author: Jakob Borg <jborg@coreweave.com>
Date:   Thu Mar 21 08:57:43 2024 -0400

    lib/api: Missing return after HTTP error

commit 2f15670094146ecb326610b2ff5b165b70410f3e
Author: Emil Lundberg <emil@emlun.se>
Date:   Thu Mar 21 13:09:47 2024 +0100

    lib/api: Extract session store (#9425)

    This is an extract from PR #9175, which can be reviewed in isolation to
    reduce the volume of changes to review all at once in #9175. There are
    about to be several services and API handlers that read and set cookies
    and session state, so this abstraction will prove helpful.

    In particular a motivating cause for this is that with the current
    architecture in PR #9175, in `api.go` the [`webauthnService` needs to
    access the
    session](https://github.com/syncthing/syncthing/pull/9175/files#diff-e2e14f22d818b8e635572ef0ee7718dee875c365e07225d760a6faae8be7772dR309-R310)
    for authentication purposes but needs to be instantiated before the
    `configMuxBuilder` for config purposes, because the WebAuthn additions
    to config management need to perform WebAuthn registration ceremonies,
    but currently the session management is embedded in the
    `basicAuthAndSessionMiddleware` which is [instantiated much
    later](https://github.com/syncthing/syncthing/pull/9175/files#diff-e2e14f22d818b8e635572ef0ee7718dee875c365e07225d760a6faae8be7772dL371-R380)
    and only if authentication is enabled in `guiCfg`. This refactorization
    extracts the session management out from `basicAuthAndSessionMiddleware`
    so that `basicAuthAndSessionMiddleware` and `webauthnService` can both
    use the same shared session management service to perform session
    management logic.

    ### Testing

    This is a refactorization intended to not change any externally
    observable behaviour, so existing tests (e.g., `api_auth_test.go`)
    should cover this where appropriate. I have manually verified that:

    - Appending `+ "foo"` to the cookie name in `createSession` causes
    `TestHtmlFormLogin/invalid_URL_returns_403_before_auth_and_404_after_auth`
    and `TestHtmlFormLogin/UTF-8_auth_works` to fail
    - Inverting the return value of `hasValidSession` cases a whole bunch of
    tests in `TestHTTPLogin` and `TestHtmlFormLogin` to fail
    - (Fixed) Changing the cookie to `MaxAge: 1000` in `destroySession` does
    NOT cause any tests to fail!
    - Added tests `TestHtmlFormLogin/Logout_removes_the_session_cookie`,
    `TestHTTPLogin/*/Logout_removes_the_session_cookie`,
    `TestHtmlFormLogin/Session_cookie_is_invalid_after_logout` and
    `TestHTTPLogin/200_path#01/Session_cookie_is_invalid_after_logout` to
    cover this.
    - Manually verified that these tests pass both before and after the
    changes in this PR, and that changing the cookie to `MaxAge: 1000` or
    not calling `m.tokens.Delete(cookie.Value)` in `destroySession` makes
    the respective pair of tests fail.

commit b49137ce36e57455935f9bc3aa98a1a27723b470
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon Mar 18 03:45:22 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit 7e4e65ebf53dd98f0fee3f021c399b12f5966f12
Author: Jaspitta <ste.scarpitta@gmail.com>
Date:   Sun Mar 17 20:13:09 2024 +0100

    gui: Open devices on click in Shared With list in folder info (fixes #8972) (#9472)

commit 8c8167a4ab3130c69bebcd53e0c11934fbc8e939
Author: Simon Frei <freisim93@gmail.com>
Date:   Mon Mar 11 07:30:21 2024 +0100

    lib/model: Don't bump seq on error in index handler (#9459)

commit 73cc5553b623dbbe71b75ddd0add9b89dca6714a
Author: Simon Frei <freisim93@gmail.com>
Date:   Sun Mar 10 22:28:40 2024 +0100

    lib/model: Prevent infinite index sending loop (fixes #9407) (#9458)

    Explanation of what/why in a code comment.

    Fixes https://github.com/syncthing/syncthing/issues/9407

commit 2ab2488274a2a5a857402fd65c949bddadbd7fad
Author: Simon Frei <freisim93@gmail.com>
Date:   Tue Mar 5 19:04:26 2024 +0100

    lib/scanner: Fix ticker leak in scanner (fixes #9417) (#9451)

    Move the ticker closer to where it's used and defer stop it to avoid
    missing a branch.

    Fixes regression introduced in
    https://github.com/syncthing/syncthing/commit/2f3eacdb6c1c33650ccdd91f42e842c116200d92

    Fixes https://github.com/syncthing/syncthing/issues/9417

commit eb9cd363d04997803beeb85d0ad6df0806a6537b
Author: Jakob Borg <jakob@kastelo.net>
Date:   Mon Mar 4 20:39:43 2024 +0100

    build: Update dependencies (#9448)

commit 7fe390653452ad0e0714f2264abf7005ed8dccd2
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon Mar 4 03:54:27 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit 5fdab1bf1132817771db4159caba8d0380153460
Author: André Colomb <src@andre.colomb.de>
Date:   Sun Mar 3 21:09:57 2024 +0100

    gui: Show encryption status for devices sharing folder (ref #8808) (#9355)

    This re-implements the stalled enhancement from #8808. Thanks @Craeckie
    for the idea and first implementation draft!

    If a folder is shared to a device with encryption, add a lock icon in
    front of the device name under "Shared With" in the folder details
    panel. Be careful not to add whitespace caused by line wraps in HTML
    source code, which would defeat the purpose of keeping the icon glued to
    the name by a non-breaking space.

    Apply the same lock icon for the list of folders shared with a device.

commit 13a6d43f0b63faa5b55d357124401c854dbf0b30
Author: André Colomb <src@andre.colomb.de>
Date:   Sun Mar 3 20:55:09 2024 +0100

    gui: Fix wrapping in "Shared With" / "Folders" lists. (#9438)

    This change was split off from #9355 as an independent clean-up / fix.
    See that PR for review discussion, testing, and screenshots.

    Improve the wrapping of folder labels / device names by going back to
    word-wrapping, but making sure other spans, such as the trailing comma,
    do not get separated from the label span.

    * Avoid adding whitespace caused by line wraps in HTML source code.

    The different cases within the ng-switch block are separated by
    newlines for readability, but that gets parsed as whitespace.  For
    wrapping purposes, this should not happen, because then there is no
    way to keep other HTML parts glued to the name / label in each list
    entry.

    * Simplify redundant conditional comma code.

    The separating comma after a device name or folder label (all but the
    last) should always stick to it.  Use the HTML comment trick to avoid
    whitespace and therefore a wrapping opportunity caused by the code
    formatting newline.  Thus the conditional comma only needs to be
    defined once, not in each ng-switch case.

    * Wrap at word boundaries and only break up words if necessary.

    Use the overflow-wrap: break-word; style instead of word-break:
    break-all;.  While the latter is suitable for longish paths, breaking
    device names or folder labels arbitrarily within words is ugly.

    This also makes the the <sup> numbers actually stay glued to their
    respective neighboring words.

    Include legacy CSS alias "word-wrap" in the class definition.

    * Fix indentation (unrelated).

commit ac942e2481fa0692f0a51bd9fd6b2a6b4142bd32
Author: Jakob Borg <jakob@kastelo.net>
Date:   Sat Mar 2 16:12:11 2024 +0100

    github: Convert issue templates into forms (fixes #9442)

commit bbd2a7fbc5029dd48bfd5b26f255028c2f7304da
Author: Luke Hamburg <1992842+luckman212@users.noreply.github.com>
Date:   Sat Mar 2 09:55:18 2024 -0500

    lib/model: Ignore difference in extended attributes & ownership when deleting (fixes #9371) (#9430)

    Adds a bool flag to `scanIfItemChanged()` to indicate when the scan was initiated from a delete function, and if so, tell `IsEquivalentOptional()` to ignore Xattrs and Ownership regardless of the global setting.

    I tested this with my sledgehammer and it seems to pass.

commit 07a9fa2dbd60cdd2ee7f1a74324476547c65f76c
Author: Jakob Borg <jakob@kastelo.net>
Date:   Tue Feb 27 13:05:19 2024 +0100

    all: Use own automaxprocs package that doesn't log (ref #9436) (#9437)

    ### Purpose

    🤫

commit aa559bf49615e375b749c735afd97cb6a7fb6698
Author: Thomas <9749173+uhthomas@users.noreply.github.com>
Date:   Mon Feb 26 12:23:14 2024 +0000

    all: Use Linux container CPU quota (fixes #9357, fixes #9435) (#9436)

    Go is not cgroup aware and by default will set GOMAXPROCS to the number
    of available threads, regardless of whether it is within the allocated
    quota. This behaviour causes high amount of CPU throttling and degraded
    application performance.

commit 2d968d46b78b4a37e88ab17bdda5870d84e86aa4
Author: Jakob Borg <jakob@kastelo.net>
Date:   Mon Feb 26 13:12:57 2024 +0100

    cmd/syncthing: Remove legacy GOMAXPROCS handling (ref #9436)

commit 86c4cafc96ecd935d2baf1947a238f280fb76e2c
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon Feb 26 03:45:28 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit c4dfb66d8476d85124242d5d4d7c799567258278
Author: Beat Reichenbach <44111292+beatreichenbach@users.noreply.github.com>
Date:   Thu Feb 22 00:47:43 2024 -0800

    docker: Add support for setting umask (#9429)

    Add support for setting umask value in the Docker `entrypoint.sh`
    script. This is useful when
    not syncing permissions and working with groups, and needing umask
    values like `002` instead of `022`.

commit f4d160684bf36c67d39ea60b9244cdb4c1041d67
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon Feb 19 03:45:23 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit b76e6ce70d8ac3fd235d2f71aef6704c7c65d77b
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon Feb 12 03:45:25 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit 6b4028eede0fbe1b15313343c227bfcdda420bc1
Author: Jakob Borg <jakob@kastelo.net>
Date:   Sun Feb 11 09:24:00 2024 +0100

    build: Use correct Go version also for script runs (#9414)

    The changes to go.mod in latest Go 1.21/1.22 are not fully understood by
    older Go that might be pre-installed on builds, so make sure we always
    have a modern one in place even for running small release scripts etc.

commit ad81ac8da71bad17139ecd6c48eb461d484a5248
Author: Jakob Borg <jakob@kastelo.net>
Date:   Sun Feb 11 09:20:29 2024 +0100

    lib/api: Deflake TestAPIServiceRequests (#9413)

    Somewhere along the way, the non-parallel test became parallel, and at
    that point, timeouts occurred. Parallel is better, so increase the
    timeout on the offending call a bit...

commit 7ebeaefe77d80df735622e4d8718a8c5614f0ecb
Author: Jakob Borg <jakob@kastelo.net>
Date:   Sun Feb 11 09:03:12 2024 +0100

    lib/model: Deflake new IndexHandlerTest (#9412)

    The new test has a flakiness factor on slow platforms, where the close
    on the sending connection races with the last index message, potentially
    messing up the count. This adds a wait to ensure that all sent messages
    are received, or the test will eventually fail with a timeout.

commit e1dd36561d51589a76c5db08664a7dbbc343382d
Author: Jakob Borg <jakob@kastelo.net>
Date:   Sat Feb 10 21:02:42 2024 +0100

    all: Use some Go 1.21 features (#9409)

commit 96c30f83870f12ad35477cf440cf57206324e0d3
Author: Jakob Borg <jakob@kastelo.net>
Date:   Sat Feb 10 19:16:27 2024 +0100

    lib/model, lib/protocol: Remove FileInfoBatch reuse behavior (#9399)

commit fc8b353011c1cd8b5bd6216fcdc60e3777a00c64
Author: Jakob Borg <jakob@kastelo.net>
Date:   Fri Feb 9 16:35:29 2024 +0100

    build: Use Go 1.22, minimum is Go 1.21 (#9408)

    Also updated dependencies, and an adjustment to build tags for how those
    are handled and how irrelevant go1.15 is nowadays...

commit 416b9e8924a99a01520aaa08ee60050eaf200dc8
Author: Jakob Borg <jakob@kastelo.net>
Date:   Fri Feb 9 11:17:44 2024 +0100

    lib/logger: Reduce API surface (#9404)

    There is no need to expose the IsTraced() thing; it's just used in
    initialisation, and thereafter ShouldDebug() is the corresponding
    correct call.

commit 9f6d732587b26f507916e26e2f5c57e331b1492c
Author: gudvinr <gudvinr@gmail.com>
Date:   Tue Feb 6 16:07:59 2024 +0300

    lib/logger: Split STTRACE into list of strings (#9402)

    Currently `IsTraced("xyz")` will return true for
    any inclusion of "xyz" in string.

    This change splits `STTRACE` using `','`, `' '` and `';'`
    as delimiters. That makes facilities separation
    more clear.

commit f2f5786b3368a42120a255b70e410bb1cd4c4dbd
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon Feb 5 03:45:33 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit eb617865d2430de378e28b9bde83cd5a17796aa8
Author: Jakob Borg <jakob@kastelo.net>
Date:   Thu Feb 1 15:13:33 2024 +0100

    lib/model: Typo in method name (fixes #9389)

commit a49e318d25cd4fa20cbab4f57483c23ff756ec90
Author: Jakob Borg <jakob@kastelo.net>
Date:   Thu Feb 1 15:11:09 2024 +0100

    lib/model: Typo in debug print (fixes #9386)

commit e74674a019fd6289c312dc9b94bd547eb180aeac
Author: Jakob Borg <jakob@kastelo.net>
Date:   Wed Jan 31 09:11:04 2024 +0100

    build: Update dependencies (#9379)

commit d98fa474aebe472498d2f1c151a296d3731f4666
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Wed Jan 31 08:33:02 2024 +0100

    build(deps): bump actions/cache from 3 to 4 (#9363)

    Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4.
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a
    href="https://github.com/actions/cache/releases">actions/cache's
    releases</a>.</em></p>
    <blockquote>
    <h2>v4.0.0</h2>
    <h2>What's Changed</h2>
    <ul>
    <li>Update action to node20 by <a
    href="https://github.com/takost"><code>@​takost</code></a> in <a
    href="https://redirect.github.com/actions/cache/pull/1284">actions/cache#1284</a></li>
    <li>feat: save-always flag by <a
    href="https://github.com/to-s"><code>@​to-s</code></a> in <a
    href="https://redirect.github.com/actions/cache/pull/1242">actions/cache#1242</a></li>
    </ul>
    <h2>New Contributors</h2>
    <ul>
    <li><a href="https://github.com/takost"><code>@​takost</code></a> made
    their first contribution in <a
    href="https://redirect.github.com/actions/cache/pull/1284">actions/cache#1284</a></li>
    <li><a href="https://github.com/to-s"><code>@​to-s</code></a> made their
    first contribution in <a
    href="https://redirect.github.com/actions/cache/pull/1242">actions/cache#1242</a></li>
    </ul>
    <p><strong>Full Changelog</strong>: <a
    href="https://github.com/actions/cache/compare/v3...v4.0.0">https://github.com/actions/cache/compare/v3...v4.0.0</a></p>
    <h2>v3.3.3</h2>
    <h2>What's Changed</h2>
    <ul>
    <li>Cache v3.3.3 by <a
    href="https://github.com/robherley"><code>@​robherley</code></a> in <a
    href="https://redirect.github.com/actions/cache/pull/1302">actions/cache#1302</a></li>
    </ul>
    <h2>New Contributors</h2>
    <ul>
    <li><a href="https://github.com/robherley"><code>@​robherley</code></a>
    made their first contribution in <a
    href="https://redirect.github.com/actions/cache/pull/1302">actions/cache#1302</a></li>
    </ul>
    <p><strong>Full Changelog</strong>: <a
    href="https://github.com/actions/cache/compare/v3...v3.3.3">https://github.com/actions/cache/compare/v3...v3.3.3</a></p>
    <h2>v3.3.2</h2>
    <h2>What's Changed</h2>
    <ul>
    <li>Fixed readme with new segment timeout values by <a
    href="https://github.com/kotewar"><code>@​kotewar</code></a> in <a
    href="https://redirect.github.com/actions/cache/pull/1133">actions/cache#1133</a></li>
    <li>Readme fixes by <a
    href="https://github.com/kotewar"><code>@​kotewar</code></a> in <a
    href="https://redirect.github.com/actions/cache/pull/1134">actions/cache#1134</a></li>
    <li>Updated description of the lookup-only input for main action by <a
    href="https://github.com/kotewar"><code>@​kotewar</code></a> in <a
    href="https://redirect.github.com/actions/cache/pull/1130">actions/cache#1130</a></li>
    <li>Change two new actions mention as quoted text by <a
    href="https://github.com/bishal-pdMSFT"><code>@​bishal-pdMSFT</code></a>
    in <a
    href="https://redirect.github.com/actions/cache/pull/1131">actions/cache#1131</a></li>
    <li>Update Cross-OS Caching tips by <a
    href="https://github.com/pdotl"><code>@​pdotl</code></a> in <a
    href="https://redirect.github.com/actions/cache/pull/1122">actions/cache#1122</a></li>
    <li>Bazel example (Take <a
    href="https://redirect.github.com/actions/cache/issues/2">#2</a>️⃣) by
    <a href="https://github.com/vorburger"><code>@​vorburger</code></a> in
    <a
    href="https://redirect.github.com/actions/cache/pull/1132">actions/cache#1132</a></li>
    <li>Remove actions to add new PRs and issues to a project board by <a
    href="https://github.com/jorendorff"><code>@​jorendorff</code></a> in <a
    href="https://redirect.github.com/actions/cache/pull/1187">actions/cache#1187</a></li>
    <li>Consume latest toolkit and fix dangling promise bug by <a
    href="https://github.com/chkimes"><code>@​chkimes</code></a> in <a
    href="https://redirect.github.com/actions/cache/pull/1217">actions/cache#1217</a></li>
    <li>Bump action version to 3.3.2 by <a
    href="https://github.com/bethanyj28"><code>@​bethanyj28</code></a> in <a
    href="https://redirect.github.com/actions/cache/pull/1236">actions/cache#1236</a></li>
    </ul>
    <h2>New Contributors</h2>
    <ul>
    <li><a href="https://github.com/vorburger"><code>@​vorburger</code></a>
    made their first contribution in <a
    href="https://redirect.github.com/actions/cache/pull/1132">actions/cache#1132</a></li>
    <li><a
    href="https://github.com/jorendorff"><code>@​jorendorff</code></a> made
    their first contribution in <a
    href="https://redirect.github.com/actions/cache/pull/1187">actions/cache#1187</a></li>
    <li><a href="https://github.com/chkimes"><code>@​chkimes</code></a> made
    their first contribution in <a
    href="https://redirect.github.com/actions/cache/pull/1217">actions/cache#1217</a></li>
    <li><a
    href="https://github.com/bethanyj28"><code>@​bethanyj28</code></a> made
    their first contribution in <a
    href="https://redirect.github.com/actions/cache/pull/1236">actions/cache#1236</a></li>
    </ul>
    <p><strong>Full Changelog</strong>: <a
    href="https://github.com/actions/cache/compare/v3...v3.3.2">https://github.com/actions/cache/compare/v3...v3.3.2</a></p>
    <h2>v3.3.1</h2>
    <h2>What's Changed</h2>
    <ul>
    <li>Reduced download segment size to 128 MB and timeout to 10 minutes by
    <a href="https://github.com/kotewar"><code>@​kotewar</code></a> in <a
    href="https://redirect.github.com/actions/cache/pull/1129">actions/cache#1129</a></li>
    </ul>
    <p><strong>Full Changelog</strong>: <a
    href="https://github.com/actions/cache/compare/v3...v3.3.1">https://github.com/actions/cache/compare/v3...v3.3.1</a></p>
    <h2>v3.3.0</h2>
    <h2>What's Changed</h2>
    <ul>
    <li>Bug: Permission is missing in cache delete example by <a
    href="https://github.com/kotokaze"><code>@​kotokaze</code></a> in <a
    href="https://redirect.github.com/actions/cache/pull/1123">actions/cache#1123</a></li>
    </ul>
    <!-- raw HTML omitted -->
    </blockquote>
    <p>... (truncated)</p>
    </details>
    <details>
    <summary>Changelog</summary>
    <p><em>Sourced from <a
    href="https://github.com/actions/cache/blob/main/RELEASES.md">actions/cache's
    changelog</a>.</em></p>
    <blockquote>
    <h1>Releases</h1>
    <h3>3.0.0</h3>
    <ul>
    <li>Updated minimum runner version support from node 12 -&gt; node
    16</li>
    </ul>
    <h3>3.0.1</h3>
    <ul>
    <li>Added support for caching from GHES 3.5.</li>
    <li>Fixed download issue for files &gt; 2GB during restore.</li>
    </ul>
    <h3>3.0.2</h3>
    <ul>
    <li>Added support for dynamic cache size cap on GHES.</li>
    </ul>
    <h3>3.0.3</h3>
    <ul>
    <li>Fixed avoiding empty cache save when no files are available for
    caching. (<a
    href="https://redirect.github.com/actions/cache/issues/624">issue</a>)</li>
    </ul>
    <h3>3.0.4</h3>
    <ul>
    <li>Fixed tar creation error while trying to create tar with path as
    <code>~/</code> home folder on <code>ubuntu-latest</code>. (<a
    href="https://redirect.github.com/actions/cache/issues/689">issue</a>)</li>
    </ul>
    <h3>3.0.5</h3>
    <ul>
    <li>Removed error handling by consuming actions/cache 3.0 toolkit, Now
    cache server error handling will be done by toolkit. (<a
    href="https://redirect.github.com/actions/cache/pull/834">PR</a>)</li>
    </ul>
    <h3>3.0.6</h3>
    <ul>
    <li>Fixed <a
    href="https://redirect.github.com/actions/cache/issues/809">#809</a> -
    zstd -d: no such file or directory error</li>
    <li>Fixed <a
    href="https://redirect.github.com/actions/cache/issues/833">#833</a> -
    cache doesn't work with github workspace directory</li>
    </ul>
    <h3>3.0.7</h3>
    <ul>
    <li>Fixed <a
    href="https://redirect.github.com/actions/cache/issues/810">#810</a> -
    download stuck issue. A new timeout is introduced in the download
    process to abort the download if it gets stuck and doesn't finish within
    an hour.</li>
    </ul>
    <h3>3.0.8</h3>
    <ul>
    <li>Fix zstd not working for windows on gnu tar in issues <a
    href="https://redirect.github.com/actions/cache/issues/888">#888</a> and
    <a
    href="https://redirect.github.com/actions/cache/issues/891">#891</a>.</li>
    <li>Allowing users to provide a custom timeout as input for aborting
    download of a cache segment using an environment variable
    <code>SEGMENT_DOWNLOAD_TIMEOUT_MINS</code>. Default is 60 minutes.</li>
    </ul>
    <h3>3.0.9</h3>
    <ul>
    <li>Enhanced the warning message for cache unavailablity in case of
    GHES.</li>
    </ul>
    <h3>3.0.10</h3>
    <ul>
    <li>Fix a bug with sorting inputs.</li>
    <li>Update definition for restore-keys in README.md</li>
    </ul>
    <!-- raw HTML omitted -->
    </blockquote>
    <p>... (truncated)</p>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/actions/cache/commit/13aacd865c20de90d75de3b17ebe84f7a17d57d2"><code>13aacd8</code></a>
    Merge pull request <a
    href="https://redirect.github.com/actions/cache/issues/1242">#1242</a>
    from to-s/main</li>
    <li><a
    href="https://github.com/actions/cache/commit/53b35c543921fe2e8b288765ff817de9de8d906f"><code>53b35c5</code></a>
    Merge branch 'main' into main</li>
    <li><a
    href="https://github.com/actions/cache/commit/65b8989fab3bb394817bdb845a453dff480c2b51"><code>65b8989</code></a>
    Merge pull request <a
    href="https://redirect.github.com/actions/cache/issues/1284">#1284</a>
    from takost/update-to-node-20</li>
    <li><a
    href="https://github.com/actions/cache/commit/d0be34d54485f31ca2ccbe66e6ea3d96544a807b"><code>d0be34d</code></a>
    Fix dist</li>
    <li><a
    href="https://github.com/actions/cache/commit/66cf064d47313d2cccf392d01bd10925da2bd072"><code>66cf064</code></a>
    Merge branch 'main' into update-to-node-20</li>
    <li><a
    href="https://github.com/actions/cache/commit/1326563738ddb735c5f2ce85cba8c79f33b728cd"><code>1326563</code></a>
    Merge branch 'main' into main</li>
    <li><a
    href="https://github.com/actions/cache/commit/e71876755e268d6cc25a5d3e3c46ae447e35290a"><code>e718767</code></a>
    Fix format</li>
    <li><a
    href="https://github.com/actions/cache/commit/01229828ffa049a8dee4db27bcb23ed33f2b451f"><code>0122982</code></a>
    Apply workaround for earlyExit</li>
    <li><a
    href="https://github.com/actions/cache/commit/3185ecfd6135856ca6d904ae032cff4f39b8b365"><code>3185ecf</code></a>
    Update &quot;only-&quot; actions to node20</li>
    <li><a
    href="https://github.com/actions/cache/commit/25618a0a675e8447e5ffc8ed9b7ddb2aaf927f65"><code>25618a0</code></a>
    Bump version</li>
    <li>Additional commits viewable in <a
    href="https://github.com/actions/cache/compare/v3...v4">compare
    view</a></li>
    </ul>
    </details>
    <br />

    [![Dependabot compatibility
    score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/cache&package-manager=github_actions&previous-version=3&new-version=4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

    Dependabot will resolve any conflicts with this PR as long as you don't
    alter it yourself. You can also trigger a rebase manually by commenting
    `@dependabot rebase`.

    [//]: # (dependabot-automerge-start)
    [//]: # (dependabot-automerge-end)

    ---

    <details>
    <summary>Dependabot commands and options</summary>
    <br />

    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits
    that have been made to it
    - `@dependabot merge` will merge this PR after your CI passes on it
    - `@dependabot squash and merge` will squash and merge this PR after
    your CI passes on it
    - `@dependabot cancel merge` will cancel a previously requested merge
    and block automerging
    - `@dependabot reopen` will reopen this PR if it is closed
    - `@dependabot close` will close this PR and stop Dependabot recreating
    it. You can achieve the same result by closing it manually
    - `@dependabot show <dependency name> ignore conditions` will show all
    of the ignore conditions of the specified dependency
    - `@dependabot ignore this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)

    </details>

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit f16817632fb604c76f1bbbfeb9c3b33c7507050e
Author: Jakob Borg <jakob@kastelo.net>
Date:   Wed Jan 31 08:24:39 2024 +0100

    lib/api: Improve folder summary event, verbose service (#9370)

    This makes a couple of small improvements to the folder summary
    mechanism:

    - The folder summary includes the local and remote sequence numbers in
    clear text, rather than some odd sum that I'm not sure what it was
    intended to represent.
    - The folder summary event is generated when appropriate, regardless of
    whether there is an event listener. We did this before because
    generating it was expensive, and we wanted to avoid doing it
    unnecessarily. Nowadays, however, it's mostly just reading out
    pre-calculated metadata, and anyway, it's nice if it shows up reliably
    when running with -verbose.

    The point of all this is to make it easier to use these events to judge
    when devices are, in fact, in sync. As-is, if I'm looking at two
    devices, it's very difficult to reliably determine if they are in sync
    or not. The reason is that while we can ask device A if it thinks it's
    in sync, we can't see if the answer is "yes" because it has processed
    all changes from B, or if it just doesn't know about the changes from B
    yet. With proper sequence numbers in the event we can compare the two
    and determine the truth. This makes testing a lot easier.

commit bda4016109a7492110ce8231d751521101af52f8
Author: Jakob Borg <jakob@kastelo.net>
Date:   Wed Jan 31 08:18:27 2024 +0100

    lib/protocol: Refactor interface (#9375)

    This is a refactor of the protocol/model interface to take the actual
    message as the parameter, instead of the broken-out fields:

    ```diff
    type Model interface {
            // An index was received from the peer device
    -       Index(conn Connection, folder string, files []FileInfo) error
    +       Index(conn Connection, idx *Index) error
            // An index update was received from the peer device
    -       IndexUpdate(conn Connection, folder string, files []FileInfo) error
    +       IndexUpdate(conn Connection, idxUp *IndexUpdate) error
            // A request was made by the peer device
    -       Request(conn Connection, folder, name string, blockNo, size int32, offset int64, hash []byte, weakHash uint32, fromTemporary bool) (RequestResponse, error)
    +       Request(conn Connection, req *Request) (RequestResponse, error)
            // A cluster configuration message was received
    -       ClusterConfig(conn Connection, config ClusterConfig) error
    +       ClusterConfig(conn Connection, config *ClusterConfig) error
            // The peer device closed the connection or an error occurred
            Closed(conn Connection, err error)
            // The peer device sent progress updates for the files it is currently downloading
    -       DownloadProgress(conn Connection, folder string, updates []FileDownloadProgressUpdate) error
    +       DownloadProgress(conn Connection, p *DownloadProgress) error
     }
    ```

    (and changing the `ClusterConfig` to `*ClusterConfig` for symmetry;
    we'll be forced to use all pointers everywhere at some point anyway...)

    The reason for this is that I have another thing cooking which is a
    small troubleshooting change to check index consistency during transfer.
    This required adding a field or two to the index/indexupdate messages,
    and plumbing the extra parameters in umpteen changes is almost as big a
    diff as this is. I figured let's do it once and avoid having to do that
    in the future again...

    The rest of the diff falls out of the change above, much of it being in
    test code where we run these methods manually...

commit 8f5d07bd092990ceeb5d7f6b496e67ed5680a82f
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon Jan 29 03:45:37 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit 302b352d78692bed09ca2b050d0abd9fc3932e74
Author: kylosus <33132401+kylosus@users.noreply.github.com>
Date:   Sun Jan 28 21:50:26 2024 +0300

    lib/fs: Add invalid UTF-8 guards to watcher (fixes #9369) (#9372)

    Add invalid UTF-8 guards to fix #9369. Probably not a permanent fix, but
    putting it up here in case someone else encounters the same panic.

commit 45beb28fa5b051d14a10f102a05ec46d36ecaa75
Author: Jakob Borg <jakob@kastelo.net>
Date:   Tue Jan 23 12:07:58 2024 +0100

    lib/api: Remove remnants of CSRF tokens file mentions (ref #9284)

commit ee9b20e47af48b7e6e0f5124248da5a9318176b1
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon Jan 22 03:45:30 2024 +0000

    gui, man, authors: Update docs, translations, and contributors

commit 0f55d5fc3e5a1a0d7db095af378dad701239d239
Author: tomasz1986 <twilczynski@naver.com>
Date:   Sat Jan 20 22:11:42 2024 +0100

    gui: Remove non-functional HTML from External Versioning tooltip (ref #8923) (#9358)

    gui: Remove non-functional HTML from External Versioning tooltip (ref
    #8923)

    Since [1], it is no longer possible to use HTML in tooltips. This was
    addressed in [2], however the commit missed one instance of HTML that
    was used to change the font type of the External versioning command
    tooltip. This remaining HTML is removed in this commit.

    [1] f5e5af391a6583047c64ef8c51642003a79b75cf
    [2] 73c52eafb6566435dffd979c3c49562b6d5a4238

    Signed-off-by: Tomasz Wilczyński <twilczynski@naver.com>

    ### Screenshots

    ![image](https://github.com/syncthing/syncthing/assets/5626656/d5f6c553-35cb-48c2-b654-809d8bbe93b8)

    Signed-off-by: Tomasz Wilczyński <twilczynski@naver.com>

commit 35e153625ce5139e2d30b36a0557b5e7a1e81ba0
Author: bt90 <btom1990@googlemail.com>
Date:   Tue Jan 16 17:14:12 2024 +0100

    cmd/ursrv: Add FreeBSD detection  (#9351)

    ### Purpose

    Classify `ports@freebsd` as `FreeBSD (3rd party)`

commit d5e1b99e6c89a80bd8b8147b1f510c7d2679d978
Author: bt90 <btom1990@googlemail.com>
Date:   Tue Jan 16 17:13:34 2024 +0100

    cmd/ursrv: Fix Arch detection (#9350)

    ### Purpose

    Classify `syncthing@archlinux` as `Arch (3rd party)`

commit 3297624037b4f944366f7f9a7fb9b884f02fa13d
Author: Jakob Borg <jakob@kastelo.net>
Date:   Mon Jan 15 11:13:22 2024 +0100

    lib/ignore: Optimise ignoring directories for filesystem watcher (fixes #9339) (#9340)

    This improves the ignore handling so that directories can be fully
    ignored (skipped in the watcher) in more cases. Specifically, where the
    previous rule was that any complex `!`-pattern would disable skipping
    directories, the new rule is that only matches on patterns *after* such
    a `!`-pattern disable skipping. That is, the following now does the
    intuitive thing:

    ```
    /foo
    /bar
    !whatever
    *
    ```

    - `/foo/**` and `/bar/**` are completely skipped, since there is no
    chance anything underneath them could ever be not-ignored
    - `!whatever` toggles the "can't skip directories any more" flag
    - Anything that matches `*` can't skip directories, because it's
    possible we can have `whatever` match something deeper.

    To enable this, some refactoring was necessary:

    - The "can skip dirs" flag is now a property of the match result, not of
    the pattern set as a whole.
    - That meant returning a boolean is not good enough, we need to actually
    return the entire `Result` (or, like, two booleans but that seemed
    uglier and more annoying to use)
    - `ShouldIgnore(string) boolean` went away with
    `Match(string).IsIgnored()` being the obvious replacement (API
    simplification!)
    - The watcher then needed to import the `ignore` package (for the
    `Result` type), but `fs` imports the watcher and `ignore` imports `fs`.
    That's a cycle, so I broke out `Result` into a package of its own so
    that it can be safely imported everywhere in things like `type Matcher
    interface { Match(string) result.Result }`. There's a fair amount of
    stuttering in `result.Result` and maybe we should go with something like
    `ignoreresult.R` or so, leaving this open for discussion.

    Tests refactored to suit, I think this change is in fact quite well
    covered by the existing ones...

    Also some noise because a few of the changed files were quite old and
    got the `gofumpt` treatment by my editor. Sorry not sorry.

    ---------

    Co-authored-by: Simon Frei <freisim93@gmail.com>

commit 445e8cc532767f554c40f523611ac74ad3389d74
Author: Syncthing Release Automation <release@syncthing.net>
Date:   Mon Jan 15 03:45:19 2024 +0000

    gui, man, authors: Update docs, translations, and contributors
rasa added a commit to calmh/syncthing that referenced this pull request Jul 7, 2024
* main: (89 commits)
    lib/ignore: Remove unused patterns in cache (syncthing#9601)
    lib/ignore: Fix caching of filenames with path separators on windows (syncthing#9600)
    gui, man, authors: Update docs, translations, and contributors
    gui: Add Filipino (fil) translation template (syncthing#9599)
    gui, man, authors: Update docs, translations, and contributors
    gui, man, authors: Update docs, translations, and contributors
    gui, man, authors: Update docs, translations, and contributors
    gui: Use localised time in duration (syncthing#9552)
    build: Skip autoprocs for build script
    build: Update dependencies (syncthing#9565)
    Merge branch 'infrastructure'
    cmd/stupgrades: Basic process metrics
    cmd/stcrashreceiver: Ignore patterns, improve metrics
    cmd/strelaypoolsrv: More compact response, improved metrics
    cmd/stdiscosrv: Add AMQP replication
    gui, man, authors: Update docs, translations, and contributors
    build: Add missing region attribute for uploads
    build: Generalise S3 push options
    gui, man, authors: Update docs, translations, and contributors
    lib/config: Add file inside folder marker directory (syncthing#9525)
    lib/config, lib/watchaggregator: Add config for max FS watcher delay (syncthing#9558)
    lib/fs: Watcher should react to xattr-only events on Darwin
    build: Update dependencies (syncthing#9553)
    gui, man, authors: Update docs, translations, and contributors
    lib/geoip, cmd/relaypoolsrv, cmd/ursrv: Automatically manage GeoIP updates (syncthing#9342)
    lib/db: Correct function name in comments (syncthing#9520)
    lib/connections: Use proper errors.Is check (syncthing#9538)
    build(deps): bump github.com/quic-go/quic-go from 0.42.0 to 0.43.0 (syncthing#9522)
    gui, man, authors: Update docs, translations, and contributors
    build: Use Go 1.22.3 at minimum
    gui: Add Hindi (hi) translation template (syncthing#9530)
    gui, man, authors: Update docs, translations, and contributors
    lib/connections: Add syncthing_connections_active metric (fixes syncthing#9527) (syncthing#9528)
    etc: Use 7MiB buffer size (syncthing#9524)
    gui: Fix Firefox bookmark favicon (fixes syncthing#9506) (syncthing#9507)
    gui, man, authors: Update docs, translations, and contributors
    gui, man, authors: Update docs, translations, and contributors
    gui, man, authors: Update docs, translations, and contributors
    lib/nat: Don't crash on empty address list (fixes syncthing#9503) (syncthing#9504)
    lib/db: Drop indexes for outgoing data to force refresh (ref syncthing#9496) (syncthing#9502)
    gui: Fix missing link to device editor for names with superscript (ref syncthing#9472) (syncthing#9494)
    lib/db: Hold update lock while taking snapshot (syncthing#9496)
    build: Update dependencies (syncthing#9497)
    gui, man, authors: Update docs, translations, and contributors
    gui, man, authors: Update docs, translations, and contributors
    Removed no longer relevant Bountysource link (syncthing#9480)
    lib/api: Missing return after HTTP error
    lib/api: Extract session store (syncthing#9425)
    gui, man, authors: Update docs, translations, and contributors
    gui: Open devices on click in Shared With list in folder info (fixes syncthing#8972) (syncthing#9472)
    lib/model: Don't bump seq on error in index handler (syncthing#9459)
    lib/model: Prevent infinite index sending loop (fixes syncthing#9407) (syncthing#9458)
    lib/scanner: Fix ticker leak in scanner (fixes syncthing#9417) (syncthing#9451)
    build: Update dependencies (syncthing#9448)
    gui, man, authors: Update docs, translations, and contributors
    gui: Show encryption status for devices sharing folder (ref syncthing#8808) (syncthing#9355)
    gui: Fix wrapping in "Shared With" / "Folders" lists. (syncthing#9438)
    github: Convert issue templates into forms (fixes syncthing#9442)
    lib/model: Ignore difference in extended attributes & ownership when deleting (fixes syncthing#9371) (syncthing#9430)
    all: Use own automaxprocs package that doesn't log (ref syncthing#9436) (syncthing#9437)
    all: Use Linux container CPU quota (fixes syncthing#9357, fixes syncthing#9435) (syncthing#9436)
    cmd/syncthing: Remove legacy GOMAXPROCS handling (ref syncthing#9436)
    gui, man, authors: Update docs, translations, and contributors
    docker: Add support for setting umask (syncthing#9429)
    gui, man, authors: Update docs, translations, and contributors
    gui, man, authors: Update docs, translations, and contributors
    build: Use correct Go version also for script runs (syncthing#9414)
    lib/api: Deflake TestAPIServiceRequests (syncthing#9413)
    lib/model: Deflake new IndexHandlerTest (syncthing#9412)
    all: Use some Go 1.21 features (syncthing#9409)
    lib/model, lib/protocol: Remove FileInfoBatch reuse behavior (syncthing#9399)
    build: Use Go 1.22, minimum is Go 1.21 (syncthing#9408)
    lib/logger: Reduce API surface (syncthing#9404)
    lib/logger: Split STTRACE into list of strings (syncthing#9402)
    gui, man, authors: Update docs, translations, and contributors
    lib/model: Typo in method name (fixes syncthing#9389)
    lib/model: Typo in debug print (fixes syncthing#9386)
    build: Update dependencies (syncthing#9379)
    build(deps): bump actions/cache from 3 to 4 (syncthing#9363)
    lib/protocol: Refactor interface (syncthing#9375)
    gui, man, authors: Update docs, translations, and contributors
    lib/fs: Add invalid UTF-8 guards to watcher (fixes syncthing#9369) (syncthing#9372)
    lib/api: Remove remnants of CSRF tokens file mentions (ref syncthing#9284)
    gui, man, authors: Update docs, translations, and contributors
    gui: Remove non-functional HTML from External Versioning tooltip (ref syncthing#8923) (syncthing#9358)
    cmd/ursrv: Add FreeBSD detection  (syncthing#9351)
    cmd/ursrv: Fix Arch detection (syncthing#9350)
    lib/ignore: Optimise ignoring directories for filesystem watcher (fixes syncthing#9339) (syncthing#9340)
    gui, man, authors: Update docs, translations, and contributors
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants