Skip to content

Commit ffc9a4a

Browse files
committed
release-prep: finalize v0.2.0 hardening policy and release notes
1 parent 3755675 commit ffc9a4a

File tree

12 files changed

+159
-17
lines changed

12 files changed

+159
-17
lines changed

CHANGELOG.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Changelog
2+
3+
All notable changes to this project are documented in this file.
4+
5+
This format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
6+
and versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [Unreleased]
9+
10+
## [0.2.0] - 2026-02-23
11+
12+
### Added
13+
14+
- WebSocket v2 bridge protocol, transport metadata, and auth/session framing as the standard bridge path.
15+
- Typed API substrate (`api.metadata.get`, `api.construct`, `api.invoke`) with Python typed wrappers under `client.baritone.*`.
16+
- Minecraft identifier constants under `pyritone.minecraft.blocks`, `pyritone.minecraft.items`, and `pyritone.minecraft.entities`.
17+
- Release parity and fallback debt report: `python/docs/release-parity-fallback-report.md`.
18+
- Async-only release notes: `docs/release-notes-v0.2.0.md`.
19+
20+
### Changed
21+
22+
- Python client direction is async-only with `pyritone.Client` as the canonical entry point.
23+
- Docs and demos were migrated to async class-oriented usage (`async with Client()`).
24+
- Generated command docs now use async-only examples.
25+
- Mod and Python package versions were bumped to `0.2.0` for this release line.
26+
27+
### Removed
28+
29+
- Legacy socket bridge server code path from the mod runtime.
30+
- Legacy sync-labeled user docs/examples (`python/docs/sync-client.md`, `python/example_sync.py`).
31+
32+
### Compatibility Policy
33+
34+
- `PyritoneClient` and `AsyncPyritoneClient` remain exported in `v0.2.x` as soft-deprecated aliases to `Client`.
35+
- Generated sync command shims (`python/src/pyritone/commands/sync_*.py`) remain in `v0.2.x` for migration cushioning.
36+
- `client.execute(...)` remains public as an advanced raw command escape hatch; user-facing docs should prefer generated command wrappers and typed APIs.
37+
- Planned removal target for alias/shim compatibility surfaces: no earlier than `v0.3.0`.
38+
39+
## [0.1.2]
40+
41+
- Last release before the async-only WebSocket v2 migration line.

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ python demos/01_connect_discovery.py
6868

6969
- Async-only release checklist: `docs/release-checklist.md`
7070
- Parity/fallback debt snapshot: `python/docs/release-parity-fallback-report.md`
71+
- Release notes draft: `docs/release-notes-v0.2.0.md`
72+
- Changelog: `CHANGELOG.md`
7173

7274
## One-Click Dev Client
7375

docs/release-checklist.md

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,30 @@ Use this checklist before publishing a release from `feat/ws-v2-async`.
2525
- Confirm fallback debt gates are green:
2626
- `python/tests/test_fallback_debt.py`
2727

28-
## 4. Versioning + Changelog
29-
30-
- Record user-facing changes in changelog under an `Unreleased` (or release) section.
31-
- If compatibility aliases/shims are removed, treat as a breaking change release.
32-
- Ensure release notes call out websocket v2 + async-only client direction.
33-
34-
## 5. Publish Readiness
28+
## 4. Compatibility Policy (v0.2.x Tag Decision)
29+
30+
- Keep compatibility aliases exported in `v0.2.x`:
31+
- `PyritoneClient -> Client`
32+
- `AsyncPyritoneClient -> Client`
33+
- Keep generated sync command shim modules in `v0.2.x`:
34+
- `python/src/pyritone/commands/sync_*.py`
35+
- Do not increase compatibility debt ceilings in `python/tests/test_fallback_debt.py`.
36+
- Keep `client.execute(...)` public as an advanced escape hatch for command interop and CLI usage.
37+
- Docs/quickstarts should prefer generated command wrappers and `client.baritone.*` typed APIs.
38+
- Removal target for aliases + sync shims: no earlier than `v0.3.0`.
39+
40+
## 5. Versioning + Release Notes
41+
42+
- Bump Python package version in:
43+
- `python/pyproject.toml`
44+
- Bump mod version in:
45+
- `mod/gradle.properties`
46+
- Record user-facing changes in:
47+
- `CHANGELOG.md`
48+
- Publish release notes from Wave 9 outputs in:
49+
- `docs/release-notes-v0.2.0.md`
50+
51+
## 6. Publish Readiness
3552

3653
- Build Python package:
3754
- `cd python && python -m build`

docs/release-notes-v0.2.0.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Release Notes v0.2.0 (Async-Only + WebSocket v2)
2+
3+
Release target for the `feat/ws-v2-async` migration line.
4+
5+
## Highlights
6+
7+
- WebSocket v2 is now the bridge transport baseline (`ws://127.0.0.1:27841/ws`).
8+
- `pyritone.Client` is the canonical async client API.
9+
- Typed Baritone wrappers are available under `client.baritone.*`.
10+
- Minecraft constants are available under `pyritone.minecraft.*`.
11+
- Docs/demos were rewritten to async-only usage.
12+
13+
## Breaking Direction Changes
14+
15+
- Sync runtime semantics were removed from the Python client path.
16+
- Bridge usage is now websocket-first (legacy socket bridge path removed).
17+
- New code should use:
18+
- generated command wrappers (for command dispatch),
19+
- typed wrappers (`client.baritone.*`) for richer API calls.
20+
21+
## Compatibility Policy For v0.2.x
22+
23+
- Keep compatibility aliases:
24+
- `PyritoneClient -> Client`
25+
- `AsyncPyritoneClient -> Client`
26+
- Keep generated sync command shim modules:
27+
- `python/src/pyritone/commands/sync_*.py`
28+
- Treat both as soft-deprecated migration cushions; removal target is no earlier than `v0.3.0`.
29+
- Keep `client.execute(...)` available as an advanced raw-command escape hatch.
30+
- Guidance: prefer wrapper/typed APIs in user-facing docs and new application code.
31+
32+
## Parity + Debt Snapshot
33+
34+
- Canonical command wrappers: `42`
35+
- Alias wrappers: `21`
36+
- Compatibility alias assignments: `3`
37+
- Sync command shim modules: `6`
38+
- Legacy socket bridge path: removed (guarded by tests)
39+
- Cancel fallback `"stop"` command path: removed (guarded by tests)
40+
41+
Primary references:
42+
43+
- `python/docs/release-parity-fallback-report.md`
44+
- `python/docs/baritone-typed-parity.md`
45+
- `docs/release-checklist.md`
46+
47+
## Upgrade Notes
48+
49+
1. Prefer importing `Client` from `pyritone`.
50+
2. Move command calls to awaited async flows (`await client.goto(...)`, etc.).
51+
3. Keep alias imports only as transitional compatibility while migrating existing codebases.
52+
4. Use `client.execute(...)` only when wrapper/typed surfaces do not cover the needed command flow.

docs/runbook.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,4 @@ pyritone --host 127.0.0.1 --port 27841 --token <token> ping
3333

3434
## Not In World
3535

36-
- Connect to any singleplayer or multiplayer world before running `baritone.execute`.
36+
- Connect to any singleplayer or multiplayer world before dispatching Baritone commands (wrapper methods or advanced `client.execute(...)`).

mod/gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ fabric_version=0.136.1+1.21.8
1414
baritone_version=1.15.0
1515

1616
# Mod properties
17-
mod_version=0.1.0
17+
mod_version=0.2.0
1818
maven_group=com.pyritone
1919
archives_base_name=pyritone_bridge

python/README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ python demos/01_connect_discovery.py
7474
- Legacy aliases (`PyritoneClient`, `AsyncPyritoneClient`) are compatibility-only; use `Client` in docs and new code.
7575
- Low-level methods:
7676
- `ping`, `status_get`, `status_subscribe`, `status_unsubscribe`, `execute`, `cancel`, `next_event`, `wait_for`, `wait_for_task`
77+
- `execute(...)` is an advanced raw command path; prefer generated command wrappers and typed APIs in new code.
7778
- Typed API substrate: `api_metadata_get`, `api_construct`, `api_invoke`
7879
- Typed Baritone wrappers:
7980
- `client.baritone` root namespace over Wave 4 typed calls
@@ -102,6 +103,13 @@ python demos/01_connect_discovery.py
102103
- Typed remote references:
103104
- `RemoteRef(ref_id=..., java_type=...)` values returned by `api_construct` / `api_invoke`
104105

106+
## Compatibility Policy (v0.2.x)
107+
108+
- `PyritoneClient` and `AsyncPyritoneClient` remain exported as temporary compatibility aliases.
109+
- Generated sync command shim modules (`python/src/pyritone/commands/sync_*.py`) remain for migration cushioning.
110+
- Both compatibility surfaces are soft-deprecated and planned for removal no earlier than `v0.3.0`.
111+
- Keep new docs/examples on `Client` + async command/typed APIs; use raw `execute(...)` only for advanced/interop cases.
112+
105113
## Auto-Discovery (Zero-Setup)
106114

107115
By default, `pyritone` discovers bridge metadata from:

python/docs/migration-from-legacy-aliases.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,14 @@ PyritoneClient and AsyncPyritoneClient are temporary compatibility aliases to Cl
3030
All client methods are async and must be awaited.
3131
```
3232

33+
### Compatibility window
34+
35+
```text
36+
Release policy for v0.2.x keeps these aliases and generated sync command shims
37+
as soft-deprecated migration cushions.
38+
Planned removal target: no earlier than v0.3.0.
39+
```
40+
3341
### Common mistakes
3442

3543
- Keeping old import names in new docs/examples.

python/docs/release-parity-fallback-report.md

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,22 @@ Remaining intentional debt:
3232
- Sync command shim modules are still generated for compatibility surfaces.
3333
- Raw command transport (`baritone.execute`) is retained for command-wrapper interop and edge usage.
3434

35+
## Tag Policy Decision (v0.2.0)
36+
37+
- Keep compatibility aliases in public exports for `v0.2.x`:
38+
- `PyritoneClient -> Client`
39+
- `AsyncPyritoneClient -> Client`
40+
- Keep generated sync command shim modules for `v0.2.x`:
41+
- `python/src/pyritone/commands/sync_*.py`
42+
- Treat both as soft-deprecated migration cushions and keep debt ceilings flat:
43+
- alias assignments `<= 3`
44+
- sync shim modules `<= 6`
45+
- Keep `client.execute(...)` public for advanced command interop and CLI usage, but position it as advanced-only in docs.
46+
- Prefer generated command wrappers and typed `client.baritone.*` APIs in user-facing examples.
47+
- Removal target for aliases + sync shims: no earlier than `v0.3.0`.
48+
3549
## Release Readiness Notes
3650

3751
- Docs and demos now present `pyritone.Client` as the primary client.
3852
- Sync-labeled usage guides/examples were removed from user-facing docs.
3953
- Migration guidance is isolated in `python/docs/migration-from-legacy-aliases.md`.
40-
41-
## Recommended Next Cleanup Before Major Release
42-
43-
1. Remove compatibility aliases from public exports.
44-
2. Stop generating sync command shim modules.
45-
3. Re-evaluate whether `baritone.execute` should remain public or move to advanced-only guidance.

python/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "pyritone"
7-
version = "0.1.2"
7+
version = "0.2.0"
88
description = "Python client for the Py-Ritone Baritone bridge"
99
readme = "README.md"
1010
requires-python = ">=3.10"

0 commit comments

Comments
 (0)