v0.3.0: fix HTTP client leak, add tests and CI pipeline
Some checks failed
CI / lint (push) Failing after 27s
CI / test (push) Successful in 30s
Release / build (push) Failing after 2m33s

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>
This commit is contained in:
Axel Meyer
2026-03-04 00:36:52 +01:00
parent 99eeffcbe4
commit 59a98843f7
17 changed files with 495 additions and 30 deletions

View File

@@ -14,7 +14,7 @@ import (
st "git.davoryn.de/calic/syncwarden/internal/syncthing"
)
const version = "0.2.0"
const version = "0.3.0"
// App manages the tray icon and Syncthing monitoring.
type App struct {
@@ -54,12 +54,14 @@ func (a *App) onReady() {
if a.cfg.SyncthingAPIKey == "" {
if key, err := st.DiscoverAPIKey(); err == nil && key != "" {
a.cfg.SyncthingAPIKey = key
_ = config.Save(a.cfg)
if err := config.Save(a.cfg); err != nil {
log.Printf("config save error: %v", err)
}
log.Printf("auto-discovered Syncthing API key")
}
}
a.client = st.NewClient(a.cfg.BaseURL(), a.cfg.SyncthingAPIKey)
a.client = st.NewClient(a.cfg.BaseURL(), a.cfg.SyncthingAPIKey, a.cfg.SyncthingInsecureTLS)
// Check if Syncthing is installed
if !st.IsInstalled() {