Releases: grumpybollocks/g910-control
Release list
v1.15 — Safely re-apply the profile card height reduction
v1.14 fixed profile card corruption by reverting an earlier height reduction back to full size — the corruption's actual cause was a missing size policy, not the smaller padding/font choices themselves.
Now that every card is correctly pinned (Fixed vertical size policy, shipped in v1.14), the compact sizing is safe to reapply: cards are ~42px (down from 61-64px, roughly a third smaller) instead of the old fixed ~64px.
Verified with the same stress test as v1.14 (0/1/2/3 profiles) plus a real multi-word profile name ("profile i like") against the actual built package — every card's rendered height matches its own sizeHint exactly at every count, and the Load/Delete button padding was checked against this font's real fontMetrics().height() (24px) before use, so text can't clip the way it did in v1.12.
v1.9 — canvas click now stops running effects (latest)
One consistency fix.
- Clicking a key directly on the keyboard image now stops a running effect too, same as every other static colour action (presets, hex, Rainbow, switching zones, profile load). Previously a direct click's colour could get silently overwritten by the effect's next tick.
v1.14 — Fix profile card corruption (real root cause this time)
The last two releases (v1.12, v1.13) both tried to shrink/stabilize the profile card height using a self-referential sizeHint()-based calculation recomputed on every save — confirmed via a real screenshot that adding a second profile compounded this into garbled, overlapping, unreadable cards.
This release reverts that entirely:
- Profile cards are back to plain default sizing (normal font, normal button padding) — no more custom shrinking tricks.
- The scroll area uses a simple static height cap, not a recomputed one.
- The actual root cause of both the original inflation bug and this new corruption: cards had no explicit vertical size policy, so Qt's default let them grow or shrink away from their natural size whenever there was slack. Every card is now pinned to a Fixed vertical size policy — it always renders at its own correct height regardless of how many profiles exist.
Verified with a 0/1/2/3/5/back-to-2-profile stress test against the actual built package (not just a single-profile check like the previous two releases), plus the 3 real profiles currently saved on this machine — all render correctly with no compression or inflation.
v1.13 — Fix oversized profile card + clipped button text
Two real bugs from a live screenshot, plus one rename:
- A saved profile card could render as a huge (~90px) box with Load/Delete squeezed and clipped at the bottom edge — a missing layout stretch let Qt inflate the single/last card to fill the scroll viewport instead of keeping it at its natural compact size. Cards now always render at their real size (42px), regardless of the container's height.
- Those buttons' text was genuinely clipped — an earlier fixed height (16px) was smaller than the font's own line height (24px). Replaced with proper padding so Qt sizes them correctly from real font metrics instead of a guessed number.
- Renamed Random Colours to Random Colours (WIP) — it's a hue-sweep gradient with a randomized starting point, not fully independent per-key randomness, so same-row keys on Main Board still read as an ordered band. The name shouldn't oversell it.
Verified: namcap-clean (same two known false positives), extracted-package personal-data audit clean, headless launch of the actual built package, profile card height confirmed matching its own sizeHint exactly (42px) instead of stretching.
v1.12 — Preset palette fix, compact colour picker row, shorter profile cards
All from direct feedback after v1.11:
- Preset swatches: Gold and Sky Blue were too close to Yellow and Cyan to tell apart at a glance — replaced with Brown and Silver. Grid is now 5 columns instead of 3.
- The hex code row is now compact: a small live-updating colour swatch, the hex field, and Apply all on one line, replacing the separate full-width preview box above it.
- New Colour Picker button opens a full colour picker and fills the hex field — doesn't apply on its own, Apply/Enter still does that.
- Saved profile cards are about half their old height (61px → 30px) via tighter margins and a smaller name label, so more profiles fit on screen without scrolling.
Verified: namcap-clean (same two known false positives), extracted-package personal-data audit clean, headless launch of the actual built package, hex-apply flow tested live against real hardware.
v1.11 — Random colours rename, more presets, Profiles panel fix
Changes, all from direct feedback:
- Renamed the Rainbow preset button to Random colours (matches what it actually does since v1.10 — a different starting hue every click).
- 6 more preset swatches: White, Gold, Teal, Indigo, Sky Blue, Lime (9 → 15 total).
- Fixed the Profiles panel always claiming its full 300px height even with just 1–2 saved profiles — it now sizes to the real content and only caps/scrolls once you have enough profiles to need it.
- The G-Keys/macro strip under the keyboard now has a thin separator line above it and is labeled Add New Macro instead of the more cryptic "G-Keys", so it reads as its own section.
Verified: namcap-clean (same two known false positives), extracted-package personal-data audit clean, headless launch of the actual built package, and the new preset colours + rename tested live against real hardware.
v1.10 — Main Board rainbow no longer leaves keys grey
Fixes reported directly from live use:
- Main Board's Rainbow preset used to skip the six keys with no individual LED (Win/Alt/AltGr/Menu/right-Ctrl/right-Shift), leaving them visibly grey. It now fills them with the gradient's starting hue via a whole-block fill, same mechanism the static colour apply already used.
- Rainbow now picks a random starting hue every click instead of the same fixed gradient each time.
- Breathing/Colour Cycle/Rainbow Wave/Speed moved out of the main Color Mode panel into a separate Effects (WIP) tab — marked work-in-progress because the on-screen preview for a few keys can still lag the real keyboard during an animation. Switching zones or tabs now stops any running effect automatically, and there's a dedicated Stop Effects button.
- Fixed a stale v1.8 download-link example left over in INSTALL.md.
Verified: namcap-clean (same two known false positives as every prior release), extracted-package personal-data audit clean, headless launch of the actual built package with no keyboard simulated, and the rainbow fill tested live against real hardware.
v1.8 — bug fixes, live Speed control, fresh-install fixes
Bug fixes, a new control, and honest answers to two direct questions: does this actually install cleanly on a fresh box, and does the landing page look like a real project?
- Fixed: Breathing/Colour Cycle on Main Board left the six keys with no individual LED (Win/Alt/AltGr/Menu/right-Ctrl/right-Shift) stuck at a stale colour on screen while the rest of the board updated. The real hardware was almost certainly fine — this was the on-screen preview under-covering what the real apply already reaches.
- New: a live Speed slider (20%–300%) for every effect — drag it mid-animation, no restart needed.
- New: Profiles now remember an active effect, not just whatever colour happened to be showing when you saved. Loading a profile that had Colour Cycle running resumes the cycle, at the same speed, on the same zone.
- Fixed a real install gap:
gitisn't guaranteed on a fresh, minimal Arch install (confirmed against Arch's own package group definitions), so the very first documented command could fail before you ever reached this app's own installer.INSTALL.mdnow says so upfront, with a git-free download alternative; the script itself now checks forsudotoo instead of failing with a confusing error. - Landing page got a badges row and an honest "cheeky bits" section — real facts from this project's own development, not filler.
Every fix verified on real hardware before this tag was cut — see the commit history for the exact numbers, including a byte-for-byte check that this machine's 8 real saved profiles were untouched throughout.
v1.7 — animated effects + layout fix
Also fixes the sidebar clipping some of you saw — a few buttons were genuinely too wide for their panel.
- Three animated effects, next to the existing static presets: Breathing (pulses whatever colour is in the hex field), Colour Cycle (the whole zone slowly rotates through every hue), Rainbow Wave (like the Rainbow preset, but the gradient scrolls). A Stop Effect button ends whichever one's running.
- Fixed the sidebar being ~100px too narrow for its own content — the hex-code row and the "Nav Cluster"/"Main Board" button row were genuinely clipped at the right edge, not a scrollbar quirk.
- Found and fixed a real device-level conflict while building this: saving or loading a Profile while an effect is running could corrupt the read (the keyboard's own protocol doesn't like a read and a write happening at once) — both now stop any running effect first.
Every effect verified changing colour over time on the real keyboard, not just assumed from the code; the device-conflict fix was reproduced failing 10/10 times before being fixed, then confirmed fixed.
v1.6 — Rainbow preset
A real feature, not just a fix this time.
- New "Rainbow" preset in the Color Mode sidebar. Sweeps an evenly-spaced colour-wheel gradient across whichever zone you have selected — works on Logo, G-Keys, F1-F12, Numpad, Nav Cluster, and Main Board, following the keys' actual left-to-right/top-to-bottom order so it reads as a smooth sweep. Respects the brightness slider like every other preset.
- On Main Board specifically: the six keys with no individual LED (Win/Alt/AltGr/Menu/right-Ctrl/right-Shift) are left untouched by the rainbow rather than being forced into it — there's no single colour that could represent them in a gradient anyway.
Verified entirely on real hardware: the gradient produces genuinely different colours per key, the brightness slider provably scales what's actually sent to the device (not just the on-screen preview), and Main Board's exclusions were confirmed live, not just read from the code.