Repository navigation
Conversation
- Frames use the official 1-based (start,r,g,b,end) range format, merged to at most 34 ranges (3 HID reports instead of 8), 1 ms gap between reports - Retry/reopen a stalled hid_write (0x3E5) instead of dropping the strip - Read LED count and size via 0x82 and adopt them automatically - Hardware brightness 255 (was 100 on a 0-255 scale) - 45/60 FPS options, 60 by default - Per-side LED counts and corner gap for strips with empty corners - Turn the strip off on Windows shutdown/restart/sign-out Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
…you.patch" This reverts commit 54a5544.
macOS runners are often unavailable and the upstream signing secret does not exist in the fork, which skipped or failed the whole build. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Keeps settings untouched on test/virtual connections. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
…frame Lock-key OSDs, UAC and mode changes make DXGI drop the duplication. The capture ended with an error and restarted, and a fresh duplication returned an all-black frame until the first image arrived: the strip strobed black on every Caps/Num/Scroll Lock press in Screen mode. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Windows sends a keyboard-indicator SET_REPORT to the controller's keyboard interface on every lock-key press. Above ~30 FPS it collides with frame reception and the firmware shows white/random garbage. A low-level hook that only inspects these three keys holds output for 250 ms (frames are dropped, solid colours wait). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
On the secure desktop both DXGI duplication and the GDI fallback fail. Hold the last real frame while duplication is rebuilt (4 tries/s) instead of ending capture with an error. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Starts only after 0.3 s without a desktop image, so brief capture losses keep full brightness. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
…tes" This reverts commit 43b5b41.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Launch at login now registers a scheduled task with the highest available rights (one UAC prompt when toggled) instead of the Run key, so the lock-key guard also sees administrator windows. A normally started second copy can still hand over to the elevated instance. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
The USB capture confirmed the indicator SET_REPORT collision and the pause works in every non-elevated window; elevated windows are covered by the elevated login task. Refresh CLAUDE.md accordingly. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
A capture with the DynamicLight window focused showed frames never paused: the hook did not fire. It lived on the session-events thread, which can block on engine events long enough for Windows to drop a low-level hook silently. Move the hook to its own thread and add a 4 ms GetAsyncKeyState poll of Caps/Num/Scroll Lock as a backstop. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
- If desktop duplication stays unavailable for 3 s, try GDI and keep streaming it until DXGI returns (a display moved to another GPU no longer freezes the strip on a dimmed frame forever); UAC still holds. - A solid colour re-checks the lock-key window while waiting, capped at one second so the engine never stalls on a held key. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
The controller reports its LED count and display size. On a fresh setup pick 3 or 4 monitor edges by which gives the kit's ~2 cm LED pitch, and split LEDs using the selected display's actual aspect ratio instead of a fixed 16:9. Covers 24"/27" kits in both variants with wide margins. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
- Drop release/installer-script jobs the build waited on, and the CLI and updater packages the fork does not ship. - Run fmt/tests/clippy and the installer build as parallel jobs. - PR builds use a fast release profile (no LTO, 16 codegen units); pushes to main keep the project's optimised profile. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Each frame copied the whole desktop to a CPU staging texture (14.7 MB at 1440p, 60 times a second), which cost 2-9 % of a 3080 Ti. Copy it into a mip-mapped texture, generate mips on the GPU and read back only the level whose shorter side is at least 128 px (320x180 at 1440p: 64x less data). Edge colours are averages anyway, so the result is unchanged; GPUs that cannot generate mips keep the full-size path. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
prepare() needed &mut self while the acquired frame borrowed the duplication; it now only borrows the device and returns the textures. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
- New task "DynamicLight Launch" (no trigger): a normally started copy runs it and exits, so shortcuts and the installer's Run open the elevated app without a UAC prompt. - Launch at login keeps the logon task; turning it off keeps the launch task. --setup-tasks [login] / --remove-tasks for installer hooks. - Installer asks once (not on silent installs or when tasks exist); interactive uninstall removes the tasks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
- lift_dark: below 40 % brightness scale colours along a curve with one factor for all channels, keeping the hue so dim scenes stay visible instead of fading into PWM noise. Slider in Screen (default 35, 0 off). - 90 and 120 FPS options marked experimental. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Above 30 FPS lock-key indicator updates collide with frames, and an unelevated guard cannot see key presses in administrator windows. On Windows without admin rights the output is capped at 30 FPS; faster options are disabled with a note and an 'Allow administrator rights' button that registers the launch task (one UAC) and restarts elevated. The saved rate applies again once elevated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
PR caches are isolated except for the base branch. With a different key and profile on main, every PR started cold. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
The delayed restart went through cmd.exe with Rust's argument quoting (\"), which cmd.exe does not understand: the task name with a space was mangled and schtasks /Run silently failed. Pass the command line raw. Also always re-register the launch task (re-enables a disabled one) and spawn the restart detached. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
- Version 1.0.0, above every upstream 0.x, so the updater never offers upstream builds over the fork. - Updater endpoint, signing public key and trusted download path point to BrenOne/DynamicLight. - A pushed vX.Y.Z tag signs the installer with the repository secrets and publishes a GitHub Release with the installer, its signature and latest.json. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Sqdi9StAk5iH4ETYHDqEq
Author
|
Sorry, opened by mistake — meant for my fork. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.