Skip to content

Release 0.2.0 - #12

Merged
paulyhedral merged 14 commits into
masterfrom
release/0.2.0
Jul 21, 2026
Merged

Release 0.2.0#12
paulyhedral merged 14 commits into
masterfrom
release/0.2.0

Conversation

@psw-ci

@psw-ci psw-ci Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Automated release PR. Review the changelog and version bump before merging.

paulyhedral and others added 14 commits July 19, 2026 21:24
…ontract (#5)

* docs: add badges, CONTRIBUTING, CODE_OF_CONDUCT, and RELEASING

Adds crates.io/docs.rs/CI/license badges to README, a CONTRIBUTING.md
covering dev setup, branching, commit conventions, and the WIT-contract
change process, the org's standard Citizen Code of Conduct, and a
RELEASING.md documenting the prepare-release/tag-release/release pipeline
built earlier (including the CRATES_API_KEY-to-trusted-publishing follow-up).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0117XhibDRjfkbNdmmxzqhHn

* chore: switch to crates.io trusted publishing

Trusted publishing is now configured for fulltime-plugin-api on crates.io
(bootstrapped by the v0.1.0 token-based publish). Flips release.yaml to
trusted-publishing: true and updates RELEASING.md; CRATES_API_KEY is no
longer used by the workflow. Marks task 5.2 complete - v0.1.0 is published.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0117XhibDRjfkbNdmmxzqhHn

* chore: archive define-league-data-contract, sync baseline specs

All 16 tasks complete: canonical schema, WIT interface, manifest format
implemented and v0.1.0 published to crates.io. Archives the change to
openspec/changes/archive/2026-07-19-define-league-data-contract and syncs
its three delta specs into openspec/specs/ as the initial baseline.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0117XhibDRjfkbNdmmxzqhHn

* fix: drop static CHANGELOG title to match git-cliff --prepend behavior

git-cliff --prepend inserts at byte offset 0, ahead of any static content
already in the file — with a hand-written "# Changelog" title at the top,
the v0.1.0 release landed above that title instead of under it, and the
release also lacked a version heading since cliff.toml's body template
didn't render one. Adds the version heading to the body template and drops
the static title (README's CHANGELOG link doesn't need one), matching
dtrpg-sdk.rs's title-less convention, which doesn't hit this because it
never had competing static content at the top to displace.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0117XhibDRjfkbNdmmxzqhHn

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…/.claude/

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0117XhibDRjfkbNdmmxzqhHn
* feat!: add host fetch capability and public plugin export bindings

Implements the add-host-fetch-capability OpenSpec change.

Adds a `host` WIT interface (`fetch`, reusing errors.network-failure)
and wires it into `world plugin` as an import alongside the existing
`export data-provider`, so a plugin component can no longer
instantiate without a host that supplies network access. Bumps
INTERFACE_VERSION to 2.0 accordingly.

Re-exports the generated `Guest` trait and `export!` macro for the
data-provider interface (via wit-bindgen's pub_export_macro option),
and adds a `host_fetch` wrapper around the generated fetch import, so
a downstream plugin can implement and export the world using this
crate's own canonical types instead of regenerating an incompatible
copy from a vendored WIT file.

BREAKING CHANGE: world plugin now imports `host.fetch`; any component
built against the previous world requires rebuilding, and
INTERFACE_VERSION 1.x manifests are no longer accepted.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0117XhibDRjfkbNdmmxzqhHn

* fix: re-export the exports module so export! works from downstream crates

wit-bindgen's single-arg export!($ty) expands to self::export!($ty
with_types_in self), which only resolves inside this crate. Verified
by cross-compiling a scratch crate against this one for
wasm32-wasip2: the with_types_in form is required downstream, and it
in turn needs the generated exports::fulltime::plugin_api module tree
reachable at the crate root, not just the Guest trait alias pulled
out of it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0117XhibDRjfkbNdmmxzqhHn

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
The manual conflict-resolution commit from the 0.1.1 release PR got
picked up by git-cliff as if it were a real fix; it documents nothing
a consumer of this crate needs to know.
PR #7's squash merge dropped the feat!: prefix, which git-cliff never
saw, so the automated release under-bumped 0.1.1 instead of a proper
minor/major version and produced an empty changelog section for it.
CodeQL (actions/missing-workflow-permissions) flagged all four
workflows for relying on the repo/org default GITHUB_TOKEN scope
instead of declaring least-privilege permissions explicitly. Match
each caller's permissions to what its called reusable workflow
actually needs.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HBx5hHVEkjx3YN5rffiRM5
docs/plugin-authoring.md documented fulltime_plugin_api::export!(MyPlugin)
-- the single-arg form, which only resolves inside this crate itself.
Every downstream plugin (see Plugins/Bundesliga) needs the with_types_in
form. Also corrects "0.2" dependency version references (that version
was never released -- host-fetch/PR#7 shipped as 0.1.1, not 0.2.0, due
to a squash-merge dropping the feat! prefix; see RELEASING.md) and adds
the host interface / Guest / export! bindings to README's "What's in
this crate", which never mentioned them.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HBx5hHVEkjx3YN5rffiRM5
Sync the data-provider-plugin-api delta (downstream implementation
bindings, versioning policy update) into the main spec, add the new
host-fetch-capability spec, and archive the completed change now that
PR #7 has merged.
Adds a required `name` field to `Manifest` for a plugin's human-readable
display name (distinct from `id`), plus an optional `[names]` table for
locale-keyed display names with `Manifest::localized_name(locale)` falling
back to `name`. Not marked breaking: the plugin API contract is still
pre-1.0 and in flux.
@psw-ci psw-ci Bot added the release Release preparation PR label Jul 21, 2026
@psw-ci
psw-ci Bot requested a review from paulyhedral July 21, 2026 21:19
@paulyhedral
paulyhedral merged commit 58547e3 into master Jul 21, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release Release preparation PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant