Skip to content

chore: release 1.0.0 - #32

Merged
MobyNL merged 1 commit into
mainfrom
chore/release-1.0.0
Aug 18, 2026
Merged

chore: release 1.0.0#32
MobyNL merged 1 commit into
mainfrom
chore/release-1.0.0

Conversation

@MobyNL

@MobyNL MobyNL commented Aug 18, 2026

Copy link
Copy Markdown
Owner

The last of the ten PRs. Closes the changelog, declares the library stable, and replaces the committed keyword documentation with a published, versioned site.

Version and promise

Version becomes 1.0.0, classifier becomes Development Status :: 5 - Production/Stable.

The README now carries the promise that makes the classifier mean something: keyword names, argument names and their order will not change within 1.x; new arguments are only added at the end with defaults; and the rule model is part of the promise, not just the signatures — how patterns match, the order in which matching rules apply, and what times means. It also states what is not covered, so nobody has to guess: module layout, class names, and anything with a leading underscore.

A migration table from 0.3.0 sits beside it, since 1.0.0 renamed every rule keyword once and a reader arriving from PyPI should not have to reconstruct that from the changelog.

Documentation

docs/MitmLibraryKeywords.html is deleted. A rendered libdoc page embeds its generation time, the absolute path of the machine that produced it, and the Robot Framework and Python versions — so a committed copy cannot be diffed against a fresh one without normalising all of that away. That was attempted twice and failed three 0.3.0 release attempts before being removed, which left a file nothing regenerated.

A docs workflow generates and publishes to gh-pages instead:

/MitmLibraryKeywords.html        newest release — the path pyproject.toml,
                                 the README and every published release point at
/latest/MitmLibraryKeywords.html
/1.0.0/MitmLibraryKeywords.html
/dev/MitmLibraryKeywords.html    current main
/versions.json  /index.html      the list, and the page that renders it

Released versions are never rebuilt, so a page keeps describing the version it was generated from even after mitmproxy and Robot Framework move on.

tools/build_docs_index.py renders the landing page and maintains the version list. It is a module rather than inline workflow script so it can be tested — 15 tests, including that 1.10.0 is newer than 1.9.0 (text sorting gets that wrong), that publishing main twice does not add two entries, and that a version name from a tag is HTML-escaped.

Releases

The release workflow now creates the GitHub release, taking its notes from the changelog section for that version and attaching the built artefacts. It runs after publishing, so a release is never announced for a version that failed to reach PyPI, and it fails outright if the changelog has no section matching the tag.

I also created the missing v0.3.0 release retroactively — the tag and the PyPI release existed but no GitHub release did: https://github.com/MobyNL/robotframework-mitmlibrary/releases/tag/v0.3.0

One manual step for you

GitHub Pages must be switched from "deploy from main, /docs folder" to "deploy from gh-pages, / root" in repository settings. The published URL does not change. Do it after merging, once the first gh-pages commit exists, so the site is never briefly empty.

Verification

ruff check ., robocop check atest and mypy clean. pytest: 254 passed, 97.71% coverage. The changelog-extraction step and the index generator were both run locally against the real changelog.

🤖 Generated with Claude Code

Closes the changelog, declares the library stable, and replaces the committed
keyword documentation with a published, versioned site.

The version becomes 1.0.0 and the classifier Production/Stable. The README now
carries the promise that makes the classifier mean something: keyword names,
argument names and their order do not change within 1.x, new arguments are only
added at the end with defaults, and the rule model - how patterns match, in what
order matching rules apply, what times means - is part of that promise rather
than only the signatures. It also says what is not covered, so nobody has to
guess: module layout, class names and anything with a leading underscore.

A migration table from 0.3.0 sits next to it, because 1.0.0 renamed every rule
keyword once and a reader arriving from PyPI should not have to reconstruct that
from the changelog.

Documentation:
- docs/MitmLibraryKeywords.html is deleted. A rendered libdoc page carries its
  generation time, the absolute path of the machine that produced it and the
  Robot Framework and Python versions used, so a committed copy cannot be
  compared against a fresh one without normalising all of that away. That was
  tried twice and failed three release attempts before being removed, which left
  a file nothing regenerated.
- A docs workflow generates it instead and publishes to gh-pages: one directory
  per release, /dev for main, /latest for the newest release, and the bare
  MitmLibraryKeywords.html kept where it is because pyproject.toml, the README
  and the metadata of every already published release point at it.
- Released versions are never rebuilt, so a page keeps describing the version it
  was generated from even after mitmproxy and Robot Framework move on.
- tools/build_docs_index.py renders the landing page and maintains the version
  list. It lives in a module rather than in the workflow so it can be tested,
  which it is: fifteen tests, including that 1.10.0 is newer than 1.9.0 and that
  publishing main twice does not add two entries.

Releases:
- The release workflow now creates the GitHub release, taking its notes from the
  changelog section for that version and attaching the built artefacts. It runs
  after publishing, so a release is never announced for a version that failed to
  reach PyPI, and it fails outright if the changelog has no section for the tag.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@MobyNL
MobyNL merged commit 53fbfd1 into main Aug 18, 2026
15 checks passed
@MobyNL
MobyNL deleted the chore/release-1.0.0 branch August 19, 2026 07:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant