mirror of
https://github.com/bybrooklyn/openbitdo.git
synced 2026-03-19 04:12:56 -04:00
OpenBitdo SDK
OpenBitdo SDK includes:
bitdo_proto: protocol/transport/session librarybitdo_app_core: shared firmware-first workflow and policy layerbitdo_tui: Ratatui/Crossterm terminal appopenbitdo: beginner-first launcher (openbitdostarts guided TUI)
Build
cargo build --workspace
Test
cargo test --workspace --all-targets
Guard
./scripts/cleanroom_guard.sh
Hardware smoke report
./scripts/run_hardware_smoke.sh
TUI app examples (openbitdo)
cargo run -p openbitdo -- --mock
CLI surface
openbitdo [--mock]: interactive dashboard flow (mouse-primary, minimal keyboard).
Interactive behavior (openbitdo)
- dashboard starts with:
- searchable device list (left)
- quick actions (center)
- persistent event panel (right)
- primary quick actions:
RefreshDiagnoseRecommended UpdateEdit Mapping(capability-gated)SettingsQuit
- firmware transfer path:
- preflight generation
- explicit confirm/cancel action
- updating progress and final result screen
- mapping editors are draft-first with:
- apply
- undo
- reset
- restore backup
- recovery lock behavior is preserved when rollback fails.
Headless library API
- headless automation remains available as a Rust API in
bitdo_tui:run_headlessRunLaunchOptionsHeadlessOutputMode
openbitdoCLI does not expose a headless command surface.
Config schema (v2)
- persisted fields:
schema_versionadvanced_modereport_save_modedevice_filter_textdashboard_layout_modelast_panel_focus
- v1 files are read with compatibility defaults and normalized to v2 fields at load time.
Packaging
./scripts/package-linux.sh v0.0.1-rc.2 x86_64
./scripts/package-linux.sh v0.0.1-rc.2 aarch64
./scripts/package-macos.sh v0.0.1-rc.2 arm64 aarch64-apple-darwin
Packaging outputs use:
openbitdo-<version>-<os>-<arch>.tar.gzopenbitdo-<version>-<os>-<arch>standalone binary.sha256checksum file for each artifact- macOS arm64 additionally emits
.pkg(unsigned/ad-hoc for RC)
Release Workflow
- CI checks remain in
.github/workflows/ci.yml. - Tag-based release workflow is in
.github/workflows/release.yml. - Release tags must originate from
main. v0.0.1-rc.2style tags publish GitHub pre-releases.- Release notes are sourced from
/Users/brooklyn/data/8bitdo/cleanroom/CHANGELOG.md. - Package-manager publish runs only after release assets are published.
Public RC Gate
- No open GitHub issues with label
release-blocker. - Scope-completeness gate:
- JP108 RC scope is dedicated mapping only (
A/B/K1-K8). - Ultimate2 RC scope is expanded mapping for required fields only.
- JP108 RC scope is dedicated mapping only (
- Clean-tree requirement from
/Users/brooklyn/data/8bitdo/cleanroom/RC_CHECKLIST.mdmust be satisfied before tagging.
Distribution Prep
- Homebrew install path for public RC:
brew tap bybrooklyn/openbitdobrew install openbitdo
- Homebrew Core inclusion is not required for
v0.0.1-rc.2. - Homebrew formula scaffold:
/Users/brooklyn/data/8bitdo/cleanroom/packaging/homebrew/Formula/openbitdo.rb - Homebrew tap sync script (disabled by default):
/Users/brooklyn/data/8bitdo/cleanroom/packaging/homebrew/sync_tap.sh - Tap repository:
bybrooklyn/homebrew-openbitdo - AUR package sources:
/Users/brooklyn/data/8bitdo/cleanroom/packaging/aur/openbitdo-bin
- AUR package names:
openbitdo-bin
- Release metadata renderer:
/Users/brooklyn/data/8bitdo/cleanroom/packaging/scripts/render_release_metadata.sh
- AUR publish workflow:
/Users/brooklyn/data/8bitdo/cleanroom/.github/workflows/aur-publish.yml- gated by
AUR_PUBLISH_ENABLED=1
- Homebrew publish path:
release.ymlrenders checksum-pinned formula and runssync_tap.sh- gated by
HOMEBREW_PUBLISH_ENABLED=1
- macOS
.pkgcaveat:- unsigned/ad-hoc is accepted for
v0.0.1-rc.2 - notarization required for
v0.1.0
- unsigned/ad-hoc is accepted for
CI Gates
- required:
guardtesttui-smoke-testaur-validatebuild-macos-arm64