The version is written once, and there is somewhere to record a change
Two pieces of release machinery that have to exist before a first bump, plus the bump: 0.1.0 to 0.2.0. The version was written twice — `pyproject.toml` and `meshterm/__init__.py` — and kept in step by hand. That is a drift waiting to happen, and an unusually visible one here: `__version__` is read by the splash wordmark, the menu mark, the About page, a trace export and the tile-server user agent, so the number a user reads on screen is the package attribute, while the number in a built wheel would have been the `pyproject` literal. `[project] version` is now `dynamic` and hatchling reads the attribute, so there is one place to edit and the two cannot disagree. Verified against hatchling rather than assumed: it resolves `0.2.0`. `CHANGELOG.md` starts in Keep a Changelog form, with the `[Unreleased]` heading that makes release notes a rename rather than an excavation of the log. Its first entry is 0.2.0 and it says plainly that the history before it is not reconstructed — 596 commits of pre-history would be a worse document, not a more complete one. 0.2.0 rather than something nearer the announced 0.9.0: the numbers between here and the release are for real feature sets, and there is no reason to spend them early. 0.9.0 is a number chosen for the launch, not one to be arrived at by counting — landing on 0.7.0 on the day and bumping straight to 0.9.0 is fine. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
b7c629b50f
commit
660540a84e
3 files changed
+52
-2
No files matched your search
@@ -0,0 +1,45 @@
|
||||
# Changelog
|
||||
|
||||
Notable changes to MeshTerm, newest first.
|
||||
|
||||
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the version
|
||||
numbers follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html) — with the caveat
|
||||
SemVer itself makes for a leading zero: while the major version is `0`, a **minor** bump is
|
||||
allowed to change behaviour, not just add to it.
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.2.0] — 2026-09-07
|
||||
|
||||
The first version to carry a changelog. Everything before it is in the commit log and is
|
||||
deliberately not reconstructed here.
|
||||
|
||||
### Added
|
||||
|
||||
- This file.
|
||||
|
||||
### Changed
|
||||
|
||||
- The project description now says what MeshTerm is, how it reaches a radio, and which
|
||||
systems it runs on, instead of naming a category. It is the PyPI summary and the package
|
||||
docstring, which no longer disagree.
|
||||
- The version is written in exactly one place, `meshterm/__init__.py`. The distribution
|
||||
metadata reads it from there rather than repeating it, so the number on the splash screen
|
||||
and the number in a built wheel cannot drift apart.
|
||||
- The basemap user agent identifies the real repository and reports the running version.
|
||||
It previously sent a bare `https://github.com/` and a hardcoded `0.1` to OpenFreeMap,
|
||||
which is the only handle a tile operator has on a client.
|
||||
- `macOS` and `Bluetooth` are spelled one way across the project. `BLE` stays where it is
|
||||
an identifier — the transport name, the config keys, the CLI.
|
||||
|
||||
### Fixed
|
||||
|
||||
- The three commands `CONTRIBUTING.md` asks contributors to run all pass:
|
||||
`python -m pytest -q`, `ruff check .`, and `ruff format --check .`. The lint gate had been
|
||||
reporting 2222 errors and the format gate 154 files, so a first contributor could not tell
|
||||
their own diff from the background.
|
||||
- Two `TYPE_CHECKING` imports the test suite referenced but never imported, on paths that
|
||||
happened never to run.
|
||||
|
||||
[Unreleased]: https://github.com/jpmartineau/MeshTerm/compare/v0.2.0...HEAD
|
||||
[0.2.0]: https://github.com/jpmartineau/MeshTerm/releases/tag/v0.2.0
|
||||
@@ -5,7 +5,7 @@ Supports USB, Bluetooth and TCP companion connection. For Windows, macOS and Lin
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
__version__ = "0.1.0"
|
||||
__version__ = "0.2.0"
|
||||
__author__ = "Jean-Pierre Martineau"
|
||||
|
||||
#: The year MeshTerm was first published; the copyright span starts here.
|
||||
|
||||
+6
-1
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
||||
|
||||
[project]
|
||||
name = "meshterm"
|
||||
version = "0.1.0"
|
||||
dynamic = ["version"]
|
||||
description = "MeshTerm is a full-featured TUI-based MeshCore client for your terminal. Supports USB, Bluetooth and TCP companion connection. For Windows, macOS and Linux."
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.10"
|
||||
@@ -37,6 +37,11 @@ dev = [
|
||||
[project.scripts]
|
||||
meshterm = "meshterm.cli:main"
|
||||
|
||||
# The one place a version is written; `[project] version` is dynamic so the package
|
||||
# attribute and the distribution metadata cannot drift apart.
|
||||
[tool.hatch.version]
|
||||
path = "meshterm/__init__.py"
|
||||
|
||||
[tool.hatch.build.targets.wheel]
|
||||
packages = ["meshterm"]
|
||||
|
||||
|
||||
Reference in new issue
Block a user