Releases: jmylchreest/keylightd
v0.1.6
v0.1.5
Changelog
- da04de4 ci(deps): bump geekyeggo/delete-artifact from 5 to 6 (#32)
- 690e789 deps(deps): bump github.com/fsnotify/fsnotify (#33)
- c147cd4 ci(deps): bump actions/upload-artifact from 6 to 7 (#31)
- 8ba8691 ci(deps): bump actions/upload-pages-artifact from 4 to 5 (#30)
- 16c7547 fix(lint): scope tray pprof to dedicated mux with read header timeout
- f1d8106 keylightd-tray: skip redundant systray emits and re-renders
Snapshot 0.1.5-dev.7+da04de4
Snapshot build from commit da04de4
Commit: ci(deps): bump geekyeggo/delete-artifact from 5 to 6 (#32)
Bumps geekyeggo/delete-artifact from 5 to 6.
updated-dependencies:
- dependency-name: geekyeggo/delete-artifact
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Snapshot 0.1.5-dev.1+500a495
Snapshot build from commit 500a495
Commit: keylightd-tray: pause polling when window hidden, diff before render
The frontend ran setInterval(refresh, 1000)/2500 forever, including for
the many hours the tray window is typically hidden. Over ~19h of
uptime that drove the cgroup memory of the tray process from ~140 MB
at startup to ~1.2 GB (peak 2.2 GB). Go heap stayed ~3 MB throughout —
the growth is entirely webkit2gtk's JS engine accumulating GC pressure
from sustained allocation while invisible.
Two changes address the polling waste; the third adds a profiling
on-ramp for future investigations.
-
Pause polling when window is hidden.
Go side (app.go) emits a "window:visible" event from ShowWindow /
HideWindow / showWindowDirect / hideWindowDirect — covering both
the tray ToggleWindow path and any direct API. (document.hidden
doesn't fire on runtime.WindowHide(), so the page-visibility API
isn't enough on its own.)JS side (main.js) replaces the boolean refreshPaused with a
Set-based pauseReasons + helpers (setPollingPaused, applyPauseState,
changePollingInterval) so multiple concurrent pause causes (window
hidden, slider drag) compose cleanly without racing each other.
When all reasons clear, polling resumes with an immediate refresh. -
Diff before render.
refresh() now hashes the GetStatus() response (small payload, plain
JSON.stringify) and skips the entire updateUI / updateStatusBadge /
updateMasterToggle / updateSectionVisibility chain when state is
identical to the last poll. Steady-state DOM operations drop to
near-zero, which is the dominant source of webkit JS heap churn. -
Optional pprof endpoint.
New --pprof flag (default empty/disabled). When set to a listen
address, registers net/http/pprof handlers on a goroutine. Off by
default — no port opens, no behaviour change. Lets us actually
profile the binary in production without rebuilding.
Drops the hardcoded 1000ms initial setInterval — the user-configured
rate (default 2500ms) is used from the start.
Daemon-side push-based event delivery (the architectural fix that
removes polling entirely) is tracked separately as #29.
v0.1.4
Snapshot 0.1.4-dev.1+a8bee01
Snapshot build from commit a8bee01
Commit: ci(deps): bump CI actions and Go dependencies, harden release validation
Bump actions/upload-pages-artifact v3→v4, actions/deploy-pages v4→v5,
codecov/codecov-action v5→v6, huma v2.37.2→v2.37.3, wails v2.11.0→v2.12.0.
Add release version base validation: workflow_dispatch releases now verify
that the base tag has a corresponding GitHub Release before proceeding,
preventing stray tags from hijacking the version calculation.
Skip duplicate main-branch builds when the commit is already tagged.
v0.1.3
Changelog
- 00ebce9 fix(lint): handle all error returns in atomic write and remove unused saveGroups
- 098bd1d fix: return defensive copies from group getters and hold lock through save
- 614ff7b fix: use typed NotFound errors for proper HTTP 404 responses
- ba6f35b feat: add ParseExpiryDuration with day-unit support
- 7685880 fix: use atomic write for config file persistence
Snapshot 0.0.50-dev.3+c59438a
Snapshot 0.0.50-dev.2+483886b
Snapshot build from commit 483886b
Commit: ci: add artifact cleanup jobs to reduce Actions storage billing
Add cleanup-artifacts jobs to build-release.yml and docs.yml that delete
intermediary artifacts after all downstream jobs complete. Artifacts are
only needed to pass files between jobs; once releases are created and
publishing finishes, they serve no purpose but still consume billed
GB-hours of storage.