frontend-development #1
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "frontend-development"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Hardware: - v5 Pico mapping: 9 switches (BT-A/B/C/D, FX-L/R, EX, dead, START) with 32 WS2812B LEDs on a single chain. SW_GPIO_SIZE, LED_GPIO_SIZE, WS2812B_LED_SIZE updated in src/controller_config.h. - Boot dispatch (boot_dispatch.{c,h}): startup-eligible trigger switches select a non-default profile or apply an LED override at boot time. NO_TRIGGER_SW sentinel + profileTriggers / ledOverrides tables drive the boot-time choice. Encoders: - encoder_dispatch.{c,h}: pure logic that converts quadrature edges into HID axis events. Ring buffer in the ISR, dispatch in the HID tick. encoder_override.{c,h}: traveling-spot LED effect with ENC_OVERRIDE_HOLD_US (500 ms) fade after last edge. - HID-descriptor-aware: Joystick profiles can use JoyX/JoyY, Keyboard profiles can use MouseX/MouseY/Scroll. None disables. - Host-testable: firmware-tests/ runs the same encoder_dispatch module against a non-RP2040 target. LED rework: - WS2812B chain with per-button pressed-color overrides (palette.buttonPressed) and per-encoder color overrides on the perimeter LED ranges. - LED modes: Palette / Cycle / Turbocharge / Off / LowBrightness. Per-profile ledMode + boot-time LED overrides composing in a defined order (palette -> pressed -> mode effect -> encoder -> dim -> off). - Palette modes: Static + Shift (32-step rotation every shiftStepMs). Keyboard report: - keyboard_report.{c,h}: NKRO-aware report builder; modifier routing for HID_KEY_CONTROL_LEFT etc. Generated config: - src/generated_config.h is emitted by the configurator's codegen. - profile_t, profile_trigger_t, led_override_t structs declared in controller_config.h; arrays sized to MAX_PROFILES / MAX_LED_OVERRIDES with sentinel padding rows. Tests: - firmware-tests/ uses cmake to build encoder_dispatch + palette_math modules against the host toolchain and asserts on HID-report shapes. Documentation: - documentation/agentic-context/firmware-hardware-checklist.md - implementation-plans/ entries for encoder remapping, LED rework detail, LED model rework, LED debug test, firmware refactor, firmware hardware verification, firmware-bootsel-usb-deferred. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>Build orchestrator: - build.sh at repo root: detects OS, auto-installs cmake / ninja / arm-none-eabi-gcc / Node / pnpm if missing (brew on macOS, apt/pacman/dnf on Linux), then routes to firmware-only, desktop-only, or both via subcommands. - Subcommands: firmware, app (pnpm tauri:build + open the .app detached), app-dev (pnpm tauri:dev), clean (wipe build/ + src-tauri/target/), all. - ensure_rust precheck — exits with a friendly rustup install hint if cargo isn't on PATH. Documentation tree: - documentation/README.md — master TOC hub. - documentation/architecture/ — overview, IPC bridge, build-flash flow. Includes pastel-dark Mermaid diagrams: system-context flowchart, build-and-flash sequence diagram, BuildView state machine. - documentation/models/ — profile (classDiagram), layout JSON schema, encoder-mode × HID-descriptor compatibility matrix. - documentation/configuration.md — generated_config.h + ~/.svdx-pico/config.json schemas. - documentation/development/ — setup, running, testing. - documentation/firmware/ — Pocket SDVX Pico v5 hardware map, LED model render order, encoder dispatch pipeline. - agentic-context/implementation-plans/: ci-distribution + ci-smoke-test (CI design) + audit-docs-ci-squash (this turn's plan). - Root README links the doc tree + calls out the rustup prerequisite for the desktop app. Configurator package config: - configurator/package.json, pnpm-lock.yaml, vite.config.ts, svelte.config.js, tsconfig.{app,node,}.json, .gitignore. - Deps: @tauri-apps/api + plugin-dialog + plugin-fs runtime; @tauri-apps/cli + svelte + vite + vitest + svelte-check + tsx + @testing-library/svelte + jsdom dev. - Scripts: dev / build / preview / check / test / test:run / test:firmware / tauri / tauri:dev / tauri:build / clean. Forgejo Actions (.forgejo/workflows/): - build.yaml: firmware job on Ubuntu (apt-installs the toolchain, builds the UF2, uploads as artifact); desktop matrix over macos-latest / ubuntu-latest / windows-latest (each runs pnpm tauri:build with cargo target cache, uploads the per-OS bundle as an artifact). Triggers on push to main / sprint branches + on annotated tags. - check.yml: pre-existing lint / type-check workflow on push + PR + manual dispatch. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>