Repository navigation
chore(release): v2.6.0 - #198
Merged
Merged
Conversation
git-changelog's angular convention marks a commit as major when any message line matches ^break(s|ing changes?)?[ :] case-insensitively, so a wrapped body line in 32039aa computed v3.0.0 instead of v2.5.0. After "Compute next version", a new step lists every triggering line in the job summary whenever the bump is a major. It reuses git-changelog's own parse, so the commits and regex cannot drift. With bump=auto the run stops before anything is pushed unless one line is the exact "BREAKING CHANGE: <description>" footer; an explicit bump=major is only reported. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The angular convention's subject regex has no "!", so git-changelog silently drops "feat!: ..." style commits from the changelog and never treats them as major. Enforce subject-exclamation-mark=never so they fail Commit Lint and the local commit-msg hook instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Explain that any body line starting with "break", "breaks" or "breaking change(s)" bumps the major version, that only the exact upper-case footer form should be used, and how prepare-release now reports and blocks an unintended major. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bumps [typing-extensions](https://github.com/python/typing_extensions) from 4.15.0 to 4.16.0. - [Release notes](https://github.com/python/typing_extensions/releases) - [Changelog](https://github.com/python/typing_extensions/blob/main/CHANGELOG.md) - [Commits](python/typing_extensions@4.15.0...4.16.0) --- updated-dependencies: - dependency-name: typing-extensions dependency-version: 4.16.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
The local hook (third-party rev v9.21.0) resolved @commitlint/cli 19.8.1 with an unpinned config-conventional 20.5.0, while CI installed whatever npm served (21.2.3 of both). Rules such as subject-exclamation-mark behave differently across those majors. Replace the third-party hook with a local node hook that pins cli, config-conventional and Node exactly, and have the Commit Lint workflow run that hook through pre-commit instead of its own npm install. The hook environment is cached on the config's hash. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Switching the ecosystem to uv made Dependabot open one PR per locked dependency, and every one failed Commit Lint: with no Dependabot commit in main's recent history to copy, it guessed "build(deps-dev): Bump" from human commits, and subject-case rejects the capital. Group updates (all actions; ruff and ty; everything else in uv) and pin the "chore(deps)" prefix the existing Dependabot commits already use. Casing still comes from Dependabot's heuristic, so Commit Lint now skips commits authored by Dependabot on PRs Dependabot opened; human commits pushed onto those PRs are still linted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CI used unpinned `uvx ruff` (latest on PyPI), pre-commit pinned ruff-pre-commit at v0.15.4 (not tracked by Dependabot), and uv.lock held 0.15.15. Make uv.lock the single source of truth so Dependabot uv bumps move all three together. - Add a `lint` dependency group with ruff; `dev` includes it. - CI lint job: `uv sync --locked --only-group lint`, then `uv run --no-sync ruff ...`. - pre-commit: replace ruff-pre-commit with local `uv run ruff` hooks, matching the existing local ty hook. - Update CONTRIBUTING.md and the PR template to `uv run ruff`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n_scores
The set comprehension filtered on one zone.get("encounterRewardTableId")
call but yielded a second, so its elements stayed typed Any | None. ty
0.0.86 (Dependabot PR #175) rejects sorting such a set. Bind the id with
a walrus in the filter, as the scoring loop below already does, and
annotate the set as set[str]. Behaviour is unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both _compare helpers return early when list lengths differ, so the zip always sees equal-length inputs. strict=True states that invariant and satisfies ruff B905. The scripts are also run through ruff format, which they had drifted from because CI never checked parity/. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CI only checked formatting under src/ and tests/, so these drifted. The pre-commit hygiene hooks also fixed trailing whitespace and final newlines in a few of them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Fixtures are only read through json.loads, so the trailing newline added by end-of-file-fixer does not change any test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The format step had continue-on-error set, so drift never failed the build. Everything is formatted now, so drop it and widen the check to examples/ and parity/. Lint parity/ too; examples/ stays out of lint, matching the pre-commit ruff hook. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ruff 0.17 formats Python code blocks inside Markdown, and the format check now covers examples/, so the Dependabot ruff 0.17.0 bump would fail Lint on this file. Apply its formatting (PEP 8 blank lines around the top-level function) now. ruff 0.15 skips Markdown, so this passes on the currently locked version too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
refactor(helpers): narrow TB reward table ids to str in get_tb_mission_scores
ci(release): guard prepare-release against accidental major bumps
ci(ci): pin commitlint once and run the same hook in CI
ci(ci): group Dependabot updates and stop linting its own commits
…-extensions-4.16.0 build(deps): Bump typing-extensions from 4.15.0 to 4.16.0
Bumps [pytest](https://github.com/pytest-dev/pytest) from 9.0.3 to 9.1.1. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](pytest-dev/pytest@9.0.3...9.1.1) --- updated-dependencies: - dependency-name: pytest dependency-version: 9.1.1 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [ty](https://github.com/astral-sh/ty) from 0.0.56 to 0.0.86. - [Release notes](https://github.com/astral-sh/ty/releases) - [Changelog](https://github.com/astral-sh/ty/blob/main/CHANGELOG.md) - [Commits](astral-sh/ty@0.0.56...0.0.86) --- updated-dependencies: - dependency-name: ty dependency-version: 0.0.86 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
…-9.1.1 build(deps-dev): Bump pytest from 9.0.3 to 9.1.1
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.7.6 to 9.7.7. - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](squidfunk/mkdocs-material@9.7.6...9.7.7) --- updated-dependencies: - dependency-name: mkdocs-material dependency-version: 9.7.7 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
…-material-9.7.7 build(deps-dev): Bump mkdocs-material from 9.7.6 to 9.7.7
Bumps [git-changelog](https://github.com/pawamoy/git-changelog) from 2.9.4 to 2.10.0. - [Release notes](https://github.com/pawamoy/git-changelog/releases) - [Changelog](https://github.com/pawamoy/git-changelog/blob/main/CHANGELOG.md) - [Commits](pawamoy/git-changelog@2.9.4...2.10.0) --- updated-dependencies: - dependency-name: git-changelog dependency-version: 2.10.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
…angelog-2.10.0 build(deps-dev): Bump git-changelog from 2.9.4 to 2.10.0
build(deps-dev): Bump ty from 0.0.56 to 0.0.86
Give the SwgohComlink and SwgohComlinkAsync pages the same outline: Quick Start, Connecting to Comlink, Handling Errors, Retries and Pacing, Stat Calculation, API Reference. The sync page previously opened with retry backoff details and had no quick start; it now shows how to create, use and close a client, and how to point it at a service and enable HMAC signing. The async page moves error handling ahead of retries and links to the sync page for the shared constructor and retry details. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs(api): order client pages for first-time readers
Replace the single-version deploy-pages workflow with mike deploys to a gh-pages branch so the 2.x product line and the 3.x pre-release line can share https://swgoh-utils.github.io/comlink-python/ behind Material's version picker. This is the 2.x half; the 3.x line carries the same docs.yml and overrides, with `extra.prerelease: true` in mkdocs.yml. - docs.yml: deploy on main and release/v* (plus manual runs on v* tags); the version comes from CHANGELOG.md like release.yml: main -> X.Y + `latest`, pre-release lines -> X.Y + `dev` titled "(pre-release)"; stable release/vX.Y.Z staging branches are skipped. The first stable deploy runs `mike set-default latest` so the root keeps opening 2.x. fetch-depth 0, bot git identity, contents: write, one gh-pages concurrency group, and a guard so forks never publish. - mkdocs.yml: extra.version.provider mike, default alias `latest`. - overrides/main.html: "older version" banner (pre-release banner when a line sets extra.prerelease). - docs dependency group: add mike. - ci.yml: build-check docs with --strict, matching the deploy. - CONTRIBUTING: "Publishing the docs" with the one-time cutover steps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The v1 -> v2 migration guide and README told readers to replace `except requests.RequestException` with `except httpx.RequestError`, but the clients catch httpx.RequestError and re-raise SwgohComlinkException, so that handler never fires. Point readers at SwgohComlinkException and list the SwgohComlinkHTTPError family (v2.3+) in the hierarchy. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Per review: docs deploy from branches named release/*, each published under its own version; latest/default follows the newest stable release and pre-releases get an alias for their kind. - docs.yml: trigger on pushes to release/** (same path filters, plus the new helper) and workflow_dispatch; the job runs only in swgoh-utils/comlink-python on refs/heads/release/*. main, develop and tags no longer deploy. - .github/scripts/docs_version.py: version = PEP 440 version in the branch name (release/v2.5.0 -> 2.5.0); invalid or local versions fail with ::error::. Reads `mike list --json`: a stable version takes `latest` (and set-default) only if >= every deployed stable; a pre-release takes alpha/beta/rc/dev (dev wins) only if >= every deployed version of its kind, and never touches latest. Unit tests in tests/unit/test_docs_version.py. - mkdocs.yml: extra.prerelease reads DOCS_PRERELEASE (set from the decision), defaulting to the line's own value for local builds; check-yaml skips mkdocs.yml (the strict docs build validates it). - setup-uv cache disabled in the publishing job (zizmor cache-poisoning). - .gitignore: un-ignore .github/scripts/ (a bare `scripts/` rule hid it). - CONTRIBUTING: version/alias rules, release timing (prepare-release.yml pushes with GITHUB_TOKEN, which does not start workflows, so run the deploy by hand), and the cutover steps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ci(docs): publish versioned docs from release/* branches with mike
prepare-release.yml pushes release/vX.Y.Z with GITHUB_TOKEN, and GitHub does not start workflows from GITHUB_TOKEN pushes, so docs.yml's `push: release/**` trigger never fired for a staged release. Dispatch docs.yml on the new branch right after pushing it (workflow_dispatch is the documented exception), which needs `actions: write`. CONTRIBUTING: drop the manual "run Deploy docs" step, add the github-pages environment's gh-pages deployment branch to the cutover (branch-based Pages builds still deploy through that environment, so it must not be deleted), and record that the cutover is done. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…docs ci(release): dispatch the docs deploy on the staged release branch
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.17.0 to 0.17.1. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](astral-sh/ruff@0.17.0...0.17.1) --- updated-dependencies: - dependency-name: ruff dependency-version: 0.17.1 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [ty](https://github.com/astral-sh/ty) from 0.0.86 to 0.0.88. - [Release notes](https://github.com/astral-sh/ty/releases) - [Changelog](https://github.com/astral-sh/ty/blob/main/CHANGELOG.md) - [Commits](astral-sh/ty@0.0.86...0.0.88) --- updated-dependencies: - dependency-name: ty dependency-version: 0.0.88 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
….17.1 build(deps-dev): Bump ruff from 0.17.0 to 0.17.1
build(deps-dev): Bump ty from 0.0.86 to 0.0.88
List the base ids of an Era's units from the game data eraDefinition collection: its eraUnitId roster plus its journey unit, with the units it loans to players added on request (include_loaned=True). With no era_id the Era active now is read, its window taken as half-open since consecutive Eras share their boundary millisecond. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
feat(helpers): add get_era_units for an Era's unit roster
GameDataBuilder only promoted a unit's rarity-1 definition to its base entry, so a unit with no ONE_STAR row was silently dropped from unitData even though its growth tables were collected. ADELPHIRANGER starts at 2 stars and was missing as a result. Use each unit's lowest-rarity definition as its base instead. The fields the builder reads (skills, gear tiers, relics, categories, crew) are identical across rarities, so this is equivalent for every unit that does have a 1-star row. Unknown rarity enums (normalised to 0) are still ignored. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ne-star fix(statcalc): build units that start above one star
# Conflicts: # .github/workflows/docs.yml # CONTRIBUTING.md
MarTrepodi
marked this pull request as ready for review
October 22, 2026 16:12
A release PR into main carries every develop commit, and Commit Lint re-checked all of them. Dependabot's "Bump ..." subjects fail subject-case and are only exempt on PRs Dependabot opened, so the v2.6.0 release PR failed the required check on eight commits that had already passed it on their way into develop. On PRs into main, also exclude commits reachable from develop, which requires the same check. PRs into develop lint exactly as before. The fetch now names its refspecs with "+" so it updates refs that actions/checkout already created instead of relying on FETCH_HEAD. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
11 of 18 tasks
…ommits ci(ci): skip commits already on develop when linting release PRs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated release prep for v2.6.0. CHANGELOG.md regenerated via git-changelog.
Merging promotes
develop->mainwith the changelog already in place.Afterwards, run the release workflow on
mainto build, publish, and tag v2.6.0.No open issues are referenced by the 22 pull requests merged since v2.5.0.
v2.6.0 (2026-10-22)
Features
Bug Fixes
Code Refactoring
Docs
Merge note:
maincarried six docs/CI commits from #190 and #192 thatdeveloplater revised, and they conflicted in.github/workflows/docs.ymlandCONTRIBUTING.md.origin/mainis merged into this branch with every conflict resolved to thedevelopside. The tree is byte-identical to the stagedrelease/v2.6.0, so this PR ships exactlydevelopplus the changelog. Merge with Create a merge commit.🤖 Generated with Claude Code