From 0f0a2f04f02a0f16c5799b174c030d4bdd974da6 Mon Sep 17 00:00:00 2001 From: Marsh Macy Date: Fri, 17 Jul 2026 20:43:23 -0700 Subject: [PATCH] release 1.2.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bump the version for adventure-bundled monsters (phase 9, #26). Minor release: the change is additive to the public surface — the Adventure.monsters field, the GameSession.effective_monsters property, and the validation tightening recorded under Changed. Rename the CHANGELOG [Unreleased] section to [1.2.0] and refresh the compare links; regenerate uv.lock (the diff touches only the osrlib entry). The local dry run passed: uv build, check_dist, and a fresh-venv install_smoke all clean for 1.2.0. The versioned-docs adoption trigger is evaluated and not fired, per the plan's work item 6: a release cut from main creates no divergence between published docs and main, matching the 1.1.0 precedent. Claude-Session: https://claude.ai/code/session_018e1XMwtEpnzA4zuuPZhzaS --- CHANGELOG.md | 5 ++++- pyproject.toml | 2 +- uv.lock | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17bbed6..efad1c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), ## [Unreleased] +## [1.2.0] - 2026-07-17 + ### Added - `Adventure.monsters` — an adventure document can bundle its own custom `MonsterTemplate`s, which join the shipped catalog for that adventure's sessions everywhere the engine resolves template ids: keyed encounters, `SpawnMonsters`, inline wandering tables, listen checks, and `GameSession.spawn`. Downstream of spawn nothing changes — combat, XP, treasure, persistence, and replay carry bundled monsters unmodified. Bundled ids must not collide with the shipped catalog or each other; collisions fail `validate_adventure` (and, for doctored saves, `load_game`) with `ContentValidationError`. The session exposes the union as the read-only `GameSession.effective_monsters` property. @@ -36,6 +38,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), - The documentation site: quickstart, guides, front-end walk-throughs, and a full reference for every command, event, rejection code, message code, RNG stream, and content id. - The typed surface: complete type hints under `py.typed`, checked in CI. -[Unreleased]: https://github.com/mmacy/osrlib-python/compare/v1.1.0...HEAD +[Unreleased]: https://github.com/mmacy/osrlib-python/compare/v1.2.0...HEAD +[1.2.0]: https://github.com/mmacy/osrlib-python/compare/v1.1.0...v1.2.0 [1.1.0]: https://github.com/mmacy/osrlib-python/compare/v1.0.0...v1.1.0 [1.0.0]: https://github.com/mmacy/osrlib-python/releases/tag/v1.0.0 diff --git a/pyproject.toml b/pyproject.toml index e9367ac..4cf8dda 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "osrlib" -version = "1.1.0" +version = "1.2.0" description = "B/X (1981 Basic/Expert) tabletop RPG rules engine for turn-based dungeon crawlers" readme = "README.md" # The wheel ships Open Game Content (osrlib/data/*.json and its LICENSE-OGL.md diff --git a/uv.lock b/uv.lock index 32be0d4..7c87f1d 100644 --- a/uv.lock +++ b/uv.lock @@ -487,7 +487,7 @@ wheels = [ [[package]] name = "osrlib" -version = "1.1.0" +version = "1.2.0" source = { editable = "." } dependencies = [ { name = "pydantic" },