Skip to content

Releases: jmylchreest/keylightd

v0.1.6

02 May 07:21
dc94f52

Choose a tag to compare

Changelog

  • dc94f52 fix(ci): bump deploy-aur action to v4.1.3

v0.1.5

02 May 07:08
da04de4

Choose a tag to compare

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

02 May 07:02
da04de4

Choose a tag to compare

Pre-release

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

30 Apr 20:48
500a495

Choose a tag to compare

Pre-release

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.

  1. 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.

  2. 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.

  3. 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

01 Apr 13:10
a8bee01

Choose a tag to compare

Changelog

  • a8bee01 ci(deps): bump CI actions and Go dependencies, harden release validation

Snapshot 0.1.4-dev.1+a8bee01

01 Apr 10:13
a8bee01

Choose a tag to compare

Pre-release

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

31 Mar 18:52
00ebce9

Choose a tag to compare

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

29 Mar 23:09
c59438a

Choose a tag to compare

Pre-release

Snapshot build from commit c59438a

Commit: feat: add Elgato Key Light MK.2 support (closes #24)

Snapshot 0.0.50-dev.2+483886b

10 Mar 19:43
483886b

Choose a tag to compare

Pre-release

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.

v0.0.49

08 Mar 09:49
f7dd179

Choose a tag to compare

Changelog

  • f7dd179 fix(lint): allow golangci-lint to typecheck keylightd-tray without built frontend
  • e2316d0 fix(lint): exclude contrib/keylightd-tray from golangci-lint run