Skip to content

Latest commit

 

History

History
111 lines (80 loc) · 3.97 KB

File metadata and controls

111 lines (80 loc) · 3.97 KB

keylightd — TODO

1. Release Pipeline Migration DONE

Migrated to jmylchreest/gha-extract-git-version@v1 with semver-compliant versioning, test gate, gh release create, concurrency control, deployment summary, and consistent archive naming. See .github/workflows/build-release.yml.

Completed items
  • Version extraction via gha-extract-git-version@v1 (format: X.Y.Z-dev.N+hash)
  • Tag-safe format for snapshots (vX.Y.Z-dev.N-hash)
  • Duplicate build detection (should_skip)
  • Concurrency control (cancel-in-progress)
  • Test gate with race detector before builds
  • fail-fast: false on all matrix strategies
  • Upgraded to actions/checkout@v6, upload-artifact@v6, download-artifact@v7, setup-go@v6
  • Switched from softprops/action-gh-release@v2 to gh release create
  • Deployment summary via $GITHUB_STEP_SUMMARY
  • Explicit permissions: contents: write
  • SBOM generation retained
  • Consistent archive naming (no v prefix on tray archives)
  • github-actions[bot] identity for AUR/Homebrew publishing
  • Snapshot cleanup matches all prereleases

Deferred:

  • Go build caching via actions/cache@v5 (Go setup action handles this adequately)
  • Source-build AUR package (low priority)
  • Lint job with golangci-lint (separate concern)
  • Additional binary architectures (low demand)

2. HTTP API Migration: Chi + Huma DONE

Migrated to Chi + Huma with typed request/response structs, auto-generated OpenAPI spec, Chi middleware ecosystem, and full backward compatibility. See internal/http/.

Completed items
  • All 13 routes preserved with exact backward compatibility
  • Typed Huma handlers with input/output structs
  • 204 No Content for DELETE endpoints
  • 207 Multi-Status for group state (partial failure)
  • Lights returned as map (not array)
  • Comma-separated group IDs supported
  • Both auth header formats (Authorization: Bearer and X-API-Key)
  • Auth middleware at Huma level (typed routes) and Chi level (raw 207/WebSocket routes)
  • Rate limiting via go-chi/httprate
  • Comprehensive test coverage (handlers + HTTP client)

3. Structured Logging with slog-logfilter DONE

Integrated slog-logfilter with hot-reload, validation, and runtime filter management.

Completed items
  • slog-logfilter integration with logfilter.SetDefault()
  • Config-driven filters with validation
  • Hot-reload on config file changes
  • Filter validation (type, pattern, level, expiry)
  • Invalid filters logged at WARN, existing filters preserved
  • HTTP API for filter management (/api/v1/logging/)

4. Tray App Visual/UX Improvements DONE

Completed items
  • Slider fill visualization with accent-color linear-gradient
  • Temperature gradient (warm-amber to cool-blue)
  • On/off card states (green-tinted on, reduced opacity off)
  • Collapsible sections (CSS max-height transition)
  • Hidden empty sections (groups auto-hides when empty)
  • Footer removed (version only in Settings > About)
  • Master toggle (power icon in header, green when any on)
  • Settings panel slide animation (translateX, 250ms)

5. Dependency Maintenance

5.1 fyne.io/systray Replace Directive

go.mod pins fyne.io/systray to commit 4856ac3adc3c (Aug 12, 2025) via a replace directive for SetOnTapped/SetOnSecondaryTapped support. As of Feb 2026, v1.12.0 has not been released.

  • Monitor for fyne.io/systray v1.12.0+ release
  • When released: go mod edit -dropreplace fyne.io/systray && go get fyne.io/systray@v1.12.0

5.2 Wails CLI Version Pinning

CI installs Wails CLI with @latest, which may diverge from the v2.11.0 library in go.mod.

  • Pin Wails CLI install to @v2.11.0 in CI
  • Monitor Wails v3 stable release status (currently alpha)