v2 moved issues.exclude-rules to linters.exclusions.rules and
issues.exclude-dirs to linters.exclusions.paths. Enable the
std-error-handling preset for defer Close() patterns.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Suppress known-safe patterns (defer Close, binary.Write, setup CLI)
so the lint job passes without touching unrelated code.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Release pipeline crashed when no prior release existed because
grep returned exit 1 (no match) under set -e. Add || true.
golangci-lint v2 requires a version: "2" field in .golangci.yml.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reuse a single long-poll HTTP client instead of creating one per
Events() call (~every 30s). Make TLS skip-verify configurable via
syncthing_insecure_tls. Log previously swallowed config errors.
Add unit tests for all monitor trackers, config, and state logic.
Add CI workflow (vet, golangci-lint, govulncheck, go test -race).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add Syncthing installation detection (PATH + config file check) to both
the tray app and setup installer. When missing, the tray shows an
"Install Syncthing..." menu item and the setup opens the download page.
Rewrite README with Mermaid topology graph, per-binary dependency tables,
project layout, API endpoint reference, and shields.io badges.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Embed the blue SyncWarden shield icon in the panel binary and set it
as the window icon via Win32 SendMessage/WM_SETICON on startup.
Uses the syncing (blue) variant as the status-independent panel icon.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace procedural icon renderer with pre-rendered textured icons:
- Use Stammtisch wood texture as shield face (crop tabletop planks)
- Apply Syncthing motif via darken blend ("warpaint on wood" effect)
- Fix Syncthing logo geometry: asymmetric node placement (76°/116°/168°
gaps) with offset hub, matching the official SVG
- Metal rim with rivets and directional lighting
- Embed pre-rendered PNGs via go:embed (no runtime rendering)
- Icon generator in cmd/icongen/ takes wood texture as input
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Redesign tray/app icon as a wooden round shield with iron rim, rivets,
wood grain, and the Syncthing network motif (ring + 3 nodes + spokes)
painted in the state color. Dark shadow outline for wood contrast.
Inspired by Stammtisch hero icon style (warm, illustrated wood tones).
- Dynamic tray icon changes color per state (green/blue/gray/red)
- Static assets: PNG at 7 sizes + multi-size .ico + preview sheet
- Icon generator utility (cmd/icongen)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Ubuntu 24.04 (Noble) dropped webkit2gtk-4.0; install 4.1 and symlink
the pkg-config file so webview_go finds it
- MinGW ships eventtoken.h (lowercase) but WebView2.h includes
EventToken.h; create case-correct symlink for Linux cross-compilation
- Delete existing Gitea release before creating new one (re-release)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
If CGO dependencies are missing, panel builds are skipped with a warning
and the tray binary falls back to opening the browser.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Re-add CGO panel builds with apt-get install of gcc/g++/mingw-w64/webkit2gtk
- Panel launch falls back to default browser if panel binary not found
- Restore panel binary in nfpm .deb package
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The pattern 'syncwarden' matched cmd/syncwarden/ too.
Anchor binary patterns to repo root with leading slash.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The golang:1.24 container lacks Node (needed by actions/checkout).
Pin nfpm to v2.41.1 to avoid go>=1.25 requirement that triggers
toolchain download and breaks the build.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The act runner doesn't have CGO/MinGW available by default. Ship tray +
setup binaries only (panel requires CGO cross-compile, deferred to later).
Also move apt-get install to the step that needs it (zip).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Full Syncthing tray wrapper with:
- System tray with 5 icon states (idle/syncing/paused/error/disconnected)
- Syncthing REST API client with auto-discovered API key
- Long-polling event listener for real-time status
- Transfer rate monitoring, folder tracking, recent files, conflict counting
- Full context menu with folders, recent files, settings toggles
- Embedded admin panel binary (webview, requires CGO)
- OS notifications via beeep (per-event configurable)
- Syncthing process management with auto-restart
- Cross-platform installer with autostart
- CI pipeline for Linux (.deb + .tar.gz) and Windows (.zip)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>