This is a Rust crate with no non-Rust dependencies. Clone the repo and build:
git clone https://github.com/pilgrimagesoftware/fulltime-plugin-api.git
cd fulltime-plugin-api
cargo buildThe toolchain is pinned in rust-toolchain.toml; rustup picks it up automatically.
Before opening a PR, run what CI runs:
cargo fmt --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-features --workspace
cargo test --no-default-features
cargo test --doc
RUSTDOCFLAGS="-D warnings" cargo doc --no-depsThis repo follows the standard master/develop git-flow:
masterreflects the latest released version; nothing is committed here directly.developis the integration branch. Branchfeature/*orfix/*offdevelop, and open your PR back intodevelop.release/*branches are cut automatically by the release workflow (see RELEASING.md). You shouldn't need to create one by hand.
CI (ci.yaml) runs fmt, clippy, test, and doc on every PR; all must pass before merging.
Commits follow Conventional Commits (feat:, fix:, chore:, docs:, etc.).
This isn't enforced by CI today, but it's what git-cliff reads to generate the changelog and compute the next version on release.
A commit that doesn't follow the convention won't show up in the changelog and won't contribute to the version bump.
wit/data-provider.wit is the source of truth for the canonical schema and the data-provider interface.
The Rust types in src/bindings.rs are generated from it via wit-bindgen, not hand-written.
If you change a record or function signature there, update the matching requirement/scenario in openspec/changes/define-league-data-contract/specs/ (or a new OpenSpec change, if the original change has already been archived), and bump SCHEMA_VERSION/INTERFACE_VERSION in src/lib.rs per the versioning policy in docs/plugin-authoring.md.