summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2024-10-07build(deps): bump google.golang.org/protobuf from 1.34.2 to 1.35.1dependabot/go_modules/google.golang.org/protobuf-1.35.1dependabot[bot]
Bumps google.golang.org/protobuf from 1.34.2 to 1.35.1. --- updated-dependencies: - dependency-name: google.golang.org/protobuf dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
2024-10-07chore(gui, man, authors): update docs, translations, and contributorsSyncthing Release Automation
2024-10-06fix(gui): improve device ID readability in black and dark themes (fixes ↵André Colomb
#9757) (#9758)
2024-10-04chore(db): process "unchanged" files anyway (#9755)v1.28.0-rc.3v1.28.0Jakob Borg
Skipping these makes the sequence numbering inconcistent; we've received a file and suppsedly added it to the database, but if you check the sequence number afterwards it didn't increase, i.e., we trigger [this failure condition](https://github.com/syncthing/syncthing/blob/47f48faed7331b7ba4ad3d6775d5cffacf8931b5/lib/model/indexhandler.go#L447-L459) and, similarly, a future update will look like there was a hole in the numbering. I propose to at least temporarily remove this optimisation in order for things to make more sense. Is there a reason to keep this beyond saving some database operations?
2024-10-02fix(upgrades): avoid clobbering cache when filtering (#9752)Jakob Borg
The slice is shared, can't overwrite elements of it. (Upgrade server only thing.)
2024-10-02build(deps): update dependencies (#9751)v1.28.0-rc.2Jakob Borg
2024-09-30chore(build): use conventional commit title in update script (#9747)tomasz1986
2024-09-30Merge branch 'infrastructure'Jakob Borg
* infrastructure: feat(ursrv): new metrics based approach
2024-09-30feat(ursrv): new metrics based approachJakob Borg
2024-09-30gui, man, authors: Update docs, translations, and contributorsSyncthing Release Automation
2024-09-29chore(model): improve tracking sentPrevSeq for index debugging (#9740)Jakob Borg
2024-09-30fix(model): prevent division by zero in numHashers (#9744)Emil Lundberg
This should prevent the panic that occurred in this test run: https://github.com/syncthing/syncthing/actions/runs/11095876010/job/30825046810 ``` 2024-09-29T21:01:53.5425372Z === RUN TestIssue4357 2024-09-29T21:01:53.5505943Z panic: runtime error: integer divide by zero [recovered] 2024-09-29T21:01:53.5512200Z panic: runtime error: integer divide by zero 2024-09-29T21:01:53.5516633Z 2024-09-29T21:01:53.5523018Z goroutine 2655 [running]: 2024-09-29T21:01:53.5524157Z github.com/thejerf/suture/v4.(*Supervisor).runService.func2.2() 2024-09-29T21:01:53.5527176Z /home/runner/go/pkg/mod/github.com/thejerf/suture/v4@v4.0.5/supervisor.go:563 +0xd0 2024-09-29T21:01:53.5530556Z panic({0x1080d20?, 0x1851290?}) 2024-09-29T21:01:53.5564723Z /home/runner/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.23.1.linux-amd64/src/runtime/panic.go:785 +0x132 2024-09-29T21:01:53.5566616Z github.com/syncthing/syncthing/lib/model.(*model).numHashers(0xc0006f6180, {0x117dc1a, 0x7}) 2024-09-29T21:01:53.5568061Z /home/runner/work/syncthing/syncthing/lib/model/model.go:2581 +0x210 2024-09-29T21:01:53.5569912Z github.com/syncthing/syncthing/lib/model.(*folder).scanSubdirsChangedAndNew(0xc00c38c808, {0x0, 0x0, 0x0}, 0xc0003fc060) 2024-09-29T21:01:53.5571612Z /home/runner/work/syncthing/syncthing/lib/model/folder.go:653 +0x250 2024-09-29T21:01:53.5573010Z github.com/syncthing/syncthing/lib/model.(*folder).scanSubdirs(0xc00c38c808, {0x0, 0x0, 0x0}) 2024-09-29T21:01:53.5574447Z /home/runner/work/syncthing/syncthing/lib/model/folder.go:512 +0xd0f 2024-09-29T21:01:53.5576011Z github.com/syncthing/syncthing/lib/model.(*folder).scanTimerFired(0xc00c38c808) 2024-09-29T21:01:53.5577367Z /home/runner/work/syncthing/syncthing/lib/model/folder.go:916 +0x46 2024-09-29T21:01:53.5579010Z github.com/syncthing/syncthing/lib/model.(*folder).Serve(0xc00c38c808, {0x1307650, 0xc0006a0910}) 2024-09-29T21:01:53.5580428Z /home/runner/work/syncthing/syncthing/lib/model/folder.go:205 +0xd7e 2024-09-29T21:01:53.5581624Z github.com/thejerf/suture/v4.(*Supervisor).runService.func2() 2024-09-29T21:01:53.5582978Z /home/runner/go/pkg/mod/github.com/thejerf/suture/v4@v4.0.5/supervisor.go:567 +0x249 2024-09-29T21:01:53.5584400Z created by github.com/thejerf/suture/v4.(*Supervisor).runService in goroutine 2651 2024-09-29T21:01:53.5585872Z /home/runner/go/pkg/mod/github.com/thejerf/suture/v4@v4.0.5/supervisor.go:541 +0x32a 2024-09-29T21:01:53.5661413Z FAIL github.com/syncthing/syncthing/lib/model 5.510s ``` ### Testing I have not been able to reproduce the panic throughout a few minutes of continuously running the test without this fix, but judging by the traceback it seems to only happen if the test happens to delete the folder from config at the same time `scanTimerFired` triggers.
2024-09-29chore(model): log sequence anomaly when update appears not to "take" (#9741)Jakob Borg
I hope this doesn't fire, but 👻 I'm Seeing Things I Can't Explain 👻
2024-09-29docs(docker): add healthcheck to docker-compose (#9742)maxice8
### Purpose Syncthing had a healthcheck API for a while, and the example Dockerfile for it has it in the form of: HEALTHCHECK --interval=1m --timeout=10s \ CMD curl -fkLsS -m 2 127.0.0.1:8384/rest/noauth/health | grep -o --color=never OK || exit 1 Let's add it to the docker-compose as well ### Testing I use this docker-compose.yml file to deploy via ansible (using community.docker.docker_compose_v2) to my machine with success, using `wait: true` in ansible for it to use `docker compose up --wait`. ```yml - name: Enable syncthing docker community.docker.docker_compose_v2: project_src: /srv/syncthing wait: true wait_timeout: 90 ```
2024-09-28fix(ignore): ensure normalization of patterns and paths match (fixes #9597) ↵Simon Frei
(#9717) In ignores, normalize the input when parsing it. When scanning, normalize earlier such that the path is already normalized when checking ignores. This requires splitting normalization of the string from normalization of the file, as we don't want to attempt the latter if the file is ignored. Closes #9598 --------- Co-authored-by: Jakob Borg <jakob@kastelo.net>
2024-09-28fix(ur): actually send usage report directly when enabled (#9736)Jakob Borg
There was a bug that the unique ID was not set when reporting was enabled, and thus the reports where rejected by the server. The unique ID got set only on startup, so next time Syncthing restarted. This makes sure to set the unique ID when blank.
2024-09-28chore(model): remove GUI/log warning on sequence anomaly (#9738)Jakob Borg
I can see already in our Sentry data that there are a fair amount of these warnings, and mostly the shape of it. Asking users to report them will likely cause a lot of reporting effort to fairly little additional value. We can do that when/if we have something more targeted to ask for.
2024-09-26Merge branch 'infrastructure'Jakob Borg
* infrastructure: feat(stupgrades): filter returned releases per compatibility
2024-09-26feat(stupgrades): filter returned releases per compatibilityJakob Borg
2024-09-25refactor(upgrade): rename insecureGet which is no longer insecure (#9735)Jakob Borg
2024-09-25chore: add more advanced policy configuration (#9726)Jakob Borg
This codifies a review policy which is closer to what I always envisioned, but which isn't expressible using the normal checks in the GitHub GUI. It would move the commit approval check from GitHub into the policy-bot check which is already present to enforce the conventional-commits standard. Approvals in general would still work the same -- it's just that the bot picks it up and toggles the status accordingly. From a GitHub side when this is enabled we'd remove the requires-review check from there and let the bot decide that part. We would still require builds and tests to pass of course. There are a couple of relexations from the current policy, details in the code but briefly: - Changes to translations or dependencies by a trusted person don't require review - Trivial changes by a trusted person, explicitly marked as such, don't require review This enables less bureaucracy for things like adding new translated languages and updating dependencies, and enables the trivial-change workflow to a larger audience than, like, me, who could always just bypass the rules by way of being admin.
2024-09-24chore: enable TLS client cache for HTTPS where appropriate (#9721)v1.28.0-rc.1Jakob Borg
https://forum.syncthing.net/t/infrastructure-report-discovery-stuff/22819/4
2024-09-23fix(connections): announce PtP links again (fixes #9730) (#9731)Jakob Borg
2024-09-23gui, man, authors: Update docs, translations, and contributorsSyncthing Release Automation
2024-09-22chore(ursrv): add Nix detection (#9729)bt90
Classify the builder `nix@nix` as [Nix](https://nixos.org/) ![369684243-172cab09-df6f-449a-a638-1f0a0c080ab3](https://github.com/user-attachments/assets/37a6e0a5-bdcb-4b31-8b36-eaaa42423382)
2024-09-22chore(ursrv): extend F-Droid detection (#9728)bt90
Our f-droid apps are currently built using `vagrant@bookworm`: ![grafik](https://github.com/user-attachments/assets/172cab09-df6f-449a-a638-1f0a0c080ab3)
2024-09-22fix(gui): get version from header when not authenticated (#9724)Emil Lundberg
### Purpose Since #8757, the Syncthing GUI now has an unauthenticated state. One consequence of this is that `$scope.versionBase()` is not initialized while unauthenticated, which causes the `docsURL` function to truncate links to just `https://docs.syncthing.net`/, discarding the section path. This currently affects at least the "Help > Introduction" link reachable both while logged in and not. The issue is exacerbated in https://github.com/syncthing/syncthing/pull/9175 where we sometimes want to show additional contextual help links from the login page to particular sections of the docs. I don't think it's any worse to try to preserve the section path even without an explicit version tag, than to fall back to just the host and lose all context the link was attempting to provide. ### Testing - On commit b1ed2802fb944bb5e3dea3b4a80c05db3a9df7c3 (before): - Open the GUI, set a username and log out. - Open the "Help" drop-down. The "Introduction" item links to: https://docs.syncthing.net/ - Log in. - Open the "Help" drop-down. The "Introduction" item links to: https://docs.syncthing.net/v1.27.10/intro/gui - On commit 44fef317800ce1d0795b4e2ebfbd5e9deda849ef (after): - Open the GUI, set a username and log out. - Open the "Help" drop-down. The "Introduction" item links to: https://docs.syncthing.net/intro/gui - Log in. - Open the "Help" drop-down. The "Introduction" item links to: https://docs.syncthing.net/v1.27.10/intro/gui ### Screenshots This is a GUI change, but affecting only URLs in the markup with no visual changes. ### Drawbacks If a `docsURL` call generates a versionless link to a docs page that doesn't exist on https://docs.syncthing.net - presumably because Syncthing is not the latest version and links to a deleted page? - then this will lead to GitHub's generic 404 page with no link to the Syncthing docs root. Before, any versionless link would also be a pathless link, leading to the Syncthing docs root instead of a 404 page.
2024-09-21fix(connections): skip point-to-point interfaces when listing LANs (fixes ↵Jakob Borg
#9719) (#9720) Point-to-point interfaces are typically VPNs and similar which, for our purposes, do not qualify as LANs.
2024-09-21build(deps): update all dependencies (#9723)Jakob Borg
2024-09-21chore(connections): lower log level from INFO to DEBUG for "already ↵Sonu Kumar Saw
connected to this device" messages (fixes #9715) (#9722) ### Purpose The primary aim of this change is to minimize log clutter in production environments. There are many lines in the logs coming from an expected race condition when two devices connect `already connected to this device`. These messages do not indicate errors and can overwhelm the log files with unnecessary noise. By lowering the logging level, we enhance the usability of the logs, making it easier for users and developers to identify actual issues without being distracted ### Testing 1. Build syncthing locally 2. Start two Syncthing instances ```bash ./syncthing -no-browser -home=~/.config/syncthing1 ./syncthing -no-browser -home=~/.config/syncthing2 ``` 3. Enable the DEBUG logs from UI for `connections` package 4. Connect the synching instances by adding remote devices from the UI 5. Observe the logs for the message `XXXX already connected to this device` ### Screenshots ![image](https://github.com/user-attachments/assets/882ccb4c-d39d-463a-8f66-2aad97010700) ## Authorship Your name and email will be added automatically to the AUTHORS file based on the commit metadata.
2024-09-21chore(cmd): clean up commands (#9705)Jakob Borg
Move infrastructure related commands to under `cmd/infra` and development stuff to `cmd/dev`. The default build command builds the regular user facing binaries: syncthing, stdiscosrv, and strelaysrv.
2024-09-18chore(fs): put the caseFS as the outermost layer again (#9716)Simon Frei
Reasoning in comments. The main motivation is to avoid all the case checks when walking the filesystem. "again" as we already tried once, but it caused a major issue ragarding mtimefs layer. The root of this problem has been fixed in the meantime in ac8b3342a
2024-09-18fix(meta): return read error in forbidden_words_test (#9706)André Colomb
When reading a file fails, the error is currently swallowed / hidden. Probably just a typo.
2024-09-16Merge branch 'infrastructure'Jakob Borg
* infrastructure: chore(stdiscosrv): ensure incoming addresses are sorted and unique chore(stdiscosrv): use zero-allocation merge in the common case chore(stdiscosrv): properly clean out old addresses from memory chore(stdiscosrv): calculate IPv6 GUA
2024-09-16gui, man, authors: Update docs, translations, and contributorsSyncthing Release Automation
2024-09-15chore(protocol): prioritize closing a connection (#9711)Simon Frei
The read/write loops may keep going for a while on a closing connection with lots of read/write activity, as it's random which select case is chosen. And if the connection is slow or even broken, a single read/write can take a long time/until timeout. Add initial non-blocking selects with only the cases relevant to closing, to prioritize those.
2024-09-15chore(stdiscosrv): ensure incoming addresses are sorted and uniqueJakob Borg
2024-09-15chore(stdiscosrv): use zero-allocation merge in the common caseJakob Borg
2024-09-15chore(stdiscosrv): properly clean out old addresses from memoryJakob Borg
2024-09-15fix(model): shut down index sender faster (#9704)Jakob Borg
2024-09-15chore(stdiscosrv): calculate IPv6 GUAJakob Borg
2024-09-15chore(gui): update HumanDuration.js (#9710)Ross Smith II
Relevant changes: ko: Use correct names for month and hour in Korean (465eaed) Hide unit count if 2 in Arabic (f90d847)
2024-09-13Merge branch 'infrastructure'Jakob Borg
* infrastructure: chore(stdiscosrv): hide internal/undocumented flags chore(stdiscosrv): remove legacy replication chore(stdiscosrv): clean up s3 handling chore(stdiscosrv): less garbage in statistics chore(stdiscosrv): improve expire, logging chore(stdiscosrv): sched in loop chore(stdiscosrv): database writing logging chore(stdiscosrv): use order-preserving expire chore(stdiscosrv): simplify sorting chore(stdiscosrv): reduce allocations in cert handling chore(stdiscosrv): reduce unnecessary allocations in merge feat(stdiscosrv): enable HTTP profiler feat(discosrv): in-memory storage with S3 backing feat(stdiscosrv): make compression optional (and faster)
2024-09-13chore(stdiscosrv): hide internal/undocumented flagsJakob Borg
2024-09-13chore(stdiscosrv): remove legacy replicationJakob Borg
2024-09-13chore(stdiscosrv): clean up s3 handlingJakob Borg
2024-09-13chore(stdiscosrv): less garbage in statisticsJakob Borg
2024-09-13chore(stdiscosrv): improve expire, loggingJakob Borg
2024-09-13chore(stdiscosrv): sched in loopJakob Borg
2024-09-13chore(stdiscosrv): database writing loggingJakob Borg