Skip to content

Fix client controls and unify host presentations #26

Open

Description

@atomicdeploy

Follow-up to #2, #8 and #6. Source checkpoint: PR #27, commit908f829 (including9c0a9fe). Checkmarks below mean implementation and stated local tests, not deployed acceptance.

  • Diagnostic-source/correction-output numbering fixed without migrating existing saved rules.
  • Reactive extended-effects controls and confirmed readback while open.
  • Default-enabled transient correction preview with explicit durable Save; Flutter USB/WS/HTTP and native Wi-Fi.
  • Shared Flutter sixteen-name palette, HSV controls, optional hex and recent colors.
  • Unified host presentation API: cells/groups, colors/effects, bulk, overlays, temporary/persistent and frame fallback; contract and explicit-run examples.
  • Flutter pinch/hold, bounded snapped pan and compact mobile footer.
  • Remove redundant physical-verification narration, with regression guard.
  • Fix Keycontroller Web appendChild startup regression; canonical UI only.
  • Assess compatible egui family: keep0.36.2 because dock/icon/theme require it; do not force mixed0.37 types.
  • Reduce avoidable melody/beep/shift command delay with fast WS commands, prioritized dispatch and actual AVR handler ACK.
  • Targeted tests and ESP32-S3/AVR/Windows/Android build candidates; published checkpoint.

Still open

  • CI/review and safe merge of PR Fix live controls, correction previews and host presentations #27 (no bypass).
  • Authorized deployment and actual board/Android/Windows acceptance.
  • Measured acoustic and end-to-end command latency on connected hardware.
  • Native correction management over USB (currently intentionally Wi-Fi-only).
  • Complete interactive mini-game UI; current Snake example demonstrates an autonomous host trail, not a full interactive game.

Evidence: Flutter analyzer clean,84 widget/model +5 WS/HTTP +2 USB tests; native18 correction +10 realtime tests; canonical LED/audio/USB/host tests; nine affected Web suites; local browser effects edits without reopening. Exact artifact hashes, profiles and remaining limits are in docs/CLIENT-CONTROL-CANDIDATE.md; API/examples in docs/HOST-PRESENTATION.md.

No board contacted, rebooted, flashed or actuated and no app replaced in this checkpoint. Source versions0.2.8 agree. AVR candidate is table-selection/buffered/noRF, not universal for keycontroller. Existing per-board settings/rules/scene remain untouched. ESP32-S3+AVR remain release targets; ESP8266 retained under #25.

Copilot review request was attempted through GitHub CLI but the reviewer was not resolvable; no completed Copilot review is claimed.

Activity

  1. atomicdeploy commented on Oct 27, 2026

    @atomicdeploy
    OwnerAuthor

    Per-group pixel-count follow-up: inspected existing PixelGroupLayout/PixelGroupStore, Flutter PixelGroupsPage, native pixel_groups and canonical Web editor. This feature already exists; no duplicate subsystem or default changes were needed. Re-ran tools/test-pixel-groups.ps1 successfully: inherit/custom prefix spans, capacity validation, durable store/no-op and failure behavior, renderers for both game roles, diagnostics/frame topology, and shared REST/USB guards. Counts are 1-255; zero/omitted overrides inherit global default, within compiled total capacity. Explicit Save only. No board connection, deployment, configuration write or current-instance value changes; working tree remains clean. Installed-device acceptance is not claimed by these host tests.

  2. atomicdeploy commented on Oct 28, 2026

    @atomicdeploy
    OwnerAuthor

    Fire checkpoint: 24e3147 (PR #27, pushed).

    • Explicit Fire selection, including re-selecting the active effect, starts from cold/black heat; reading status never restarts it.
    • Fire animates in both grouped-static and effects modes, using a bounded monotonic simulation clock, independent of GPIO/RMT output cadence.
    • Replaced cable-order line diffusion with a 2-D field over the real staggered table. Logical/physical mapping, custom group counts, semantic states and correction rules stay unchanged.
    • Saved fire_rotation (0/90/180/270 degrees) uses the existing validated partial presentation patch/store. Web/Flutter/Rust provide observed-support controls and confirmed readback.
    • Focused actual renderer, persistence, queue/stress, role/group, Web command/readback/mount/backend and single-source asset tests passed; Flutter analyze + 3 widget tests and Rust 3 appearance tests passed. Isolated browser preview accepted 180-degree readback and was visually inspected, not hardware acceptance.
    • Final ESP32-S3 production-profile SDK build passed: program 2,325,955/3,342,336, static RAM 138,436/327,680 bytes. Both GPIO and RMT-DMA are included; optional SSH/SCP and BLE are excluded.
    • Approved installation and real 480-pixel cold-start/rotation/smoothness feedback. No production board or installed app was changed in this task.

    Candidate: build/esp32s3-buffered/esp32s3.ino.bin, SHA256 4a1b345d687b805c3b2c515a56176eb96513233baae6c91eaaf7d12bc8e3906c.

    Donor provenance and retained MIT license, precise test/build scope and remaining acceptance are in REUSE-PREFLIGHT-RECEIPT.md and the existing hash-bound comparison ledger. Unrelated local window-icon/signal-indicator work was preserved, not included. Corrected a pre-existing pixel-group test assertion to match the already-implemented managed public-file write API, retaining private-file denial. Repository CI is not claimed green: the separate existing PcControllerRuntime.h SOURCE-MAPPING.json certificate mismatch was reproduced and remains open. Parent production acceptance #2 remains open.

  3. atomicdeploy commented on Oct 28, 2026

    @atomicdeploy
    OwnerAuthor

    Handoff review found and fixed a data-loss risk: HostPresentationStore and StateAppearanceSettings both used /presentation.json and /presentation.pending. Host layers now use /host-presentation.json and their own staging path, with no guessed migration. A regression using both real store implementations failed before the fix and passes after it: bidirectional independent saves/reboot, failed rename, unchanged palette staging, scene and correction bytes. Published on PR #27; targeted presentation/host/Snake regressions pass. No production filesystem or board was contacted; final-head CI and existing installed/native-USB/physical gates remain open.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions