Skip to content

Make controller coverage explicit and correct Joy-Con rail documentation - #65

Merged
jmonster merged 2 commits into
mainfrom
docs/controller-feature-coverage
Sep 18, 2026
Merged

jmonster merged 2 commits into
mainfrom
docs/controller-feature-coverage

Conversation

@jmonster

@jmonster jmonster commented Sep 17, 2026 •

Copy link
Copy Markdown
Owner

Completion status

Merged as db976e7e08c35bc90e62a55bfe432e6a0dda6f95. All eight PR workflows for final head 4fef3dc28ec479eb2ee1c35fed6aade145568850 completed successfully, including the formerly pending Intel application builds and fresh-runner launch checks. The merge occurred during the completion audit; that audit verified results and updated this description but did not execute the merge operation.

Head tree: f8d923431660af4096a3db1e5ce141894dcaed00. The implementation retains Linux/BlueZ support and GameCube motor controls from #70.

Completed changes

  • Add an explicit four-controller coverage matrix covering input, optical counters, motion, output adapters and unsupported accessory features. Distinguish implemented software, raw measurements, selected physical profiles, native builds and physical gameplay qualification.
  • Correct reversed left Joy-Con SL/SR labels in the protocol note. Add a repository regression comparing all four documented rail masks with the public API. Clarify GameCube analog travel versus independent digital clicks.
  • Preserve current GameCube on/off SDL rumble and distinguish the separate device-timed soft/strong clips. Do not restore the obsolete claim that GameCube has no continuous motor control.
  • Document macOS/CoreBluetooth, experimental Linux/BlueZ, platform-specific physical identity, and Windows/Android limits. Preserve the optional macOS dashboard boundary and library examples.
  • Retain public action types, including Switch2ActionAxis, and keep the README at 99 lines without weakening the existing size gate.

The feature changes only README, protocol/API/coverage documentation and the repository regression. It does not alter product source, transport, ABI, dependencies, build configuration or physical acceptance records.

Completed CI

Workflow Final result
Linux BlueZ and native hosts PASS
macOS build and regressions PASS
Swift concurrency PASS
Native C distribution PASS
SDL input regressions PASS
Native SDL consumers PASS
Packaged runtime PASS
Emulator integration PASS: host tests, full Dolphin/Cemu builds and inspections on arm64 and x86_64, and all four separate launch/shutdown jobs

CI provenance: synthetic merge c9be92e7618e7be2f87988523b6c5d66df58d13c merges the feature head into a187693b8ced4328758c4e242a4eb203d26608a2 and has the same tree as that head. Main subsequently advanced before this PR was merged. These completed PR runs are not relabeled as fresh post-merge validation of the final combined main tree.

No submitted reviews or unresolved review threads were present at the pre-merge completion check. No checks, assertions or repository protections were weakened during completion. The final audit updated metadata only; it did not perform a new local test run or code change.

Previously recorded local validation

The five original repository/layout/link tests, research-boundary tests and whitespace checks passed. All 339 tracked files and executable modes in the downloaded head-specific CI archive matched the published tree.

A separately tested local tree combined main a187693b8ced4328758c4e242a4eb203d26608a2 with #63, #64, this #65 head and #68 at 9757016: fa80b2e7eab3dfadc3196e73c01c9d59079b1422. It passed the retained suite, 92 debug / 92 release package tests with warnings as errors, 8/8 real SDL/native host tests including pinned Dolphin/Cemu motion processing, lib/lib64 relocation with missing-library negative controls, 20 BlueZ scenarios, and 40 additional transition cases. That combined tree did not include #71.

An additional previously recorded all-four-model harness exercised the real BlueZ transport, shared queue/C ABI, unmodified SDL 3.4.16 and pinned Cemu motion processor, covering input edges, motor requests, reconnect identity and teardown. These historical combined checks were not a newly committed CI test. Their synthetic service/profiles do not establish physical radio or gameplay acceptance.

Qualification boundary

Measured per-controller calibration, accessory-specific behavior and physical gameplay qualification remain separate. Linux retains its experimental qualification boundary. No hardware testing or release publication was performed by the completion audit.

Separate four-ID Bluetooth support, raw telemetry, explicit calibrated SDL motion and dashboard-only outputs. State the implemented GameCube clip limit, independent Joy-Con streams, charging-grip/edition qualification, and excluded audio/NFC/GameChat/firmware transports without inventing hardware validation.

Correct swapped left Joy-Con SL/SR labels in the protocol reference to match the existing public API; retain GameCube digital trigger clicks alongside analog travel. Add a repository regression that fails against the previous documentation. Remove the blanket claim that all documented functions are implemented and physically tested, and the unsupported promise of future NFC publication. Index the existing motion-profile API.

Documentation and repository tests only. Local source/link, research-boundary and application-identity checks pass. No production controller code, coefficients, acceptance records or packaging changes.
Merge main into the documentation branch without dropping the implemented Linux transport or GameCube motor channel. Retain the Joy-Con rail-mask correction and regression, clarify platform identity and hardware qualification, and preserve the README size gate.

Repository/link and research-boundary tests pass on the exact tree. No production controller code changes.
@jmonster
jmonster marked this pull request as ready for review September 18, 2026 01:25
@jmonster
jmonster merged commit db976e7 into main Sep 18, 2026
22 checks passed
@jmonster
jmonster deleted the docs/controller-feature-coverage branch September 18, 2026 04:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant