Skip to content

Releases: Kaiser0733/G102-Android-Controller

v2.1.1 — Landscape rotation state fix

Choose a tag to compare

@Kaiser0733 Kaiser0733 released this 09 Sep 10:09

Fixes the landscape effect-menu issue LO reported. UI state restore only — zero USB/protocol changes.

ROOT CAUSE (found by code-path tracing, not guessing)
configChanges means rotation does NOT recreate the Activity — my 2.1.0 rotation path re-inflated the fresh landscape layout but never re-applied live UI state. Fresh views revert to XML defaults: all four action buttons (RGB ON/OFF, APPLY COLOR, APPLY EFFECT) came back disabled, status text reset. In landscape the effect menu looked dead/unavailable — exactly what you saw. The effect menu itself (Solid/Cycle/Wave/Breathe/Blend/Zones) was never removed; it was the enable-state that was lost.

THE FIX (12 lines, MainActivity only)
After re-inflation, re-run the SAME read-only state refresh that onResume uses: commandListener() -> status text + refreshDeviceState() (reads USB state, enables buttons, NEVER sends commands) + diagnostics panel open/closed restore. No new USB path, no listener churn, no config change. Byte-identical hardware behavior.

VERIFY

  • No-automatic-USB guard green, layout guard green (4 variants x 24 IDs), 57/57 tests
  • CI run 34338121205 GREEN, versionCode 6 / 2.1.1, pinned keystore (installs over 2.1.0)

PHYSICAL TEST (Tab A9+)

  1. Open app portrait — RGB ON/OFF, effect menu all live.
  2. Rotate to landscape — RGB ON/OFF and APPLY EFFECT must still be clickable, effect dropdown opens with all 6 effects, device name + status text intact.
  3. Open diagnostics, rotate — panel stays open with history.
  4. Rotate back — same. Repeat a few times.
  5. RGB OFF/ON + an effect apply in BOTH orientations — behavior must be unchanged from 2.1.0.

APK SHA-256: 6df62d0c5664b6322fc6e5a1cd419bf72702675c7c84ce75f60f3a4d90813d94

v2.1.0 — Responsive UI (phone + tablet, portrait + landscape)

Choose a tag to compare

@Kaiser0733 Kaiser0733 released this 08 Sep 18:10

UI-ONLY release. Installs directly over 2.0.2 (pinned key, versionCode 5).

WHAT CHANGED (presentation only — zero USB/protocol/behavior changes)

  • Four responsive layouts: phone portrait, phone landscape (2-column), tablet portrait (centered 560dp), tablet landscape (45/55 two-panel).
  • 8 shared section includes — every layout carries every control, structurally (CI-enforced).
  • Preset swatches now a 4x2 grid (was 8 cramped in one row); sizes scale by device class.
  • Consistent spacing scale (4/8/12/16/24dp) via dimens; landscape is denser, tablets roomier.
  • Rotation swaps layouts without recreating the Activity — no USB command can fire, hex draft preserved.
  • New CI guard: every layout variant must expose all 24 view IDs exactly once.

VERIFY (same interaction -> same bytes)

  • v1 RGB OFF sequence byte-identical, regression-pinned: 57/57 unit tests green.
  • No-automatic-USB guard + layout structure guard green in CI.
  • Kotlin diff vs 2.0.2: MainActivity presentation only (rotation re-inflate, GridLayout presets, dimen sizes, version-safe diagnostics string).

PHYSICAL TEST (Tab A9+)

  1. Portrait: balanced centered controls, presets in 4x2 grid, scroll works.
  2. Rotate to landscape: two-panel layout, no overlap, cursor stable, NO command sent from rotation.
  3. RGB OFF -> RGB ON -> color + APPLY (behavior unchanged).
  4. All 6 effects — dynamic controls appear per effect in both orientations.
  5. Rotate back and forth several times: no crash, no lag growth, no ghost cursors, no auto RGB.
  6. Diagnostics expand in both orientations.
    If anything fails: COPY DIAGNOSTICS + test number + last button.

APK SHA-256: 6c74e6206973ba537451b760d526ce27e4160af049d90535dcb5cc8436376c92

v2.0.2 — Runtime stability hotfix

Choose a tag to compare

@Kaiser0733 Kaiser0733 released this 08 Sep 15:57

Stability hotfix. Installs directly over 2.0.1 (pinned signing key, versionCode 4).

WHAT CHANGED

  • Removed automatic live USB preview completely. Only RGB ON / RGB OFF / APPLY send commands.
  • Removed auto-apply (was unreliable across Activity recreation).
  • Fixed invisible color swatches (Android alpha).
  • Bounded diagnostics (500 lines) and crash log (64KB) — no runaway memory growth.
  • One-command-at-a-time USB gate; detach of an unrelated peripheral no longer cancels a mouse command.
  • v1 RGB OFF path unchanged — byte-identical, regression-pinned (57/57 unit tests green).

PHYSICAL TEST

  1. Install over 2.0.1, open with mouse connected, touch nothing 2 min — expect no lag, no ghost cursors, no auto 'Working'.
  2. Adjust brightness/effect/color WITHOUT apply — expect zero mouse change.
  3. RGB OFF once, then RGB ON once.
  4. Custom color + APPLY.
  5. Use 10 minutes — expect no progressive lag.
    If anything fails: COPY DIAGNOSTICS and report the test number + last button pressed.

APK SHA-256: 58bfe1fe5f5cb11c9e541c31d0542056112d0609bc58d564f7c8473ca053b3bc