mirror of
https://github.com/agessaman/meshcore-bot.git
synced 2026-09-29 02:47:56 +00:00
chore(release): prepare v1.1.0
This commit is contained in:
@@ -8,7 +8,7 @@ file is kept only for historical reference.
|
||||
|
||||
## Outstanding known issues
|
||||
|
||||
As of **v1.0.0**.
|
||||
As of the **v1.1.0 release candidate**.
|
||||
|
||||
### High priority
|
||||
|
||||
|
||||
+25
-6
@@ -6,6 +6,8 @@ semantic versioning.
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [1.1.0] - 2026-09-13
|
||||
|
||||
### Added
|
||||
|
||||
- Local commands and local services (dropped into `local/commands` and
|
||||
@@ -66,6 +68,27 @@ semantic versioning.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Service installers no longer leave `venv/bin/pip` and other console scripts
|
||||
pointing at the temporary build environment after an atomic virtualenv swap.
|
||||
`--update-venv` also repairs already-broken shebangs before replacing the old
|
||||
environment (#229).
|
||||
|
||||
- Direct messages from newly advertised companions resolve through
|
||||
`pending_contacts` until the next contact snapshot, so a successful command ACK
|
||||
is no longer followed by a failed keyword reply.
|
||||
|
||||
- Command matching preserves the original on-air message body while using a
|
||||
cleaned copy for mention and trigger matching. Commands and web-viewer events no
|
||||
longer receive content altered as a side effect of dispatch (#267).
|
||||
|
||||
- The dark mesh map uses OpenFreeMap instead of Carto's retired unauthenticated
|
||||
raster tiles. Browsers without the required WebGL support fall back to an
|
||||
inverted OpenStreetMap layer instead of displaying a blank map.
|
||||
|
||||
- ARMv7 service and Debian-package installs use the piwheels index and the shipped
|
||||
compatibility constraints consistently, avoiding source builds and incompatible
|
||||
dependency selections on 32-bit Raspberry Pi systems (#269).
|
||||
|
||||
- Published packet payloads carry UTC in every time field, not just `timestamp`
|
||||
(#278). `time` and `date` came from a local `datetime.now()` while the
|
||||
`timestamp` beside them was UTC, so a consumer reading the pair off a bot in a
|
||||
@@ -619,12 +642,6 @@ considered stable; breaking changes to them will come with a major version bump.
|
||||
|
||||
### Fixed
|
||||
|
||||
- Service installers no longer leave `venv/bin/pip` (and other console scripts)
|
||||
with shebangs pointing at the temporary `.venv-build-$$` path after the atomic
|
||||
virtualenv swap. Optional package prompts and documented pip invocations now
|
||||
use `venv/bin/python -m pip`. `--update-venv` rewrites shebangs in place so
|
||||
already-broken installs heal without a full rebuild, and the previous venv is
|
||||
kept until rewrite succeeds (issue #229).
|
||||
- Data retention now runs shortly after startup and then daily. It no longer
|
||||
requires 24 hours of uninterrupted uptime before the first cleanup, and its
|
||||
timer remains independent from the nightly maintenance email.
|
||||
@@ -922,6 +939,8 @@ hardening fixes.
|
||||
v0.9.0.
|
||||
- Discord integration, kg7qin integration notes (`f2936be`, `de6279c`).
|
||||
|
||||
[Unreleased]: https://github.com/agessaman/meshcore-bot/compare/v1.1.0...HEAD
|
||||
[1.1.0]: https://github.com/agessaman/meshcore-bot/compare/v1.0.0...v1.1.0
|
||||
[1.0.0]: https://github.com/agessaman/meshcore-bot/compare/v0.9.3...v1.0.0
|
||||
[0.9.3]: https://github.com/agessaman/meshcore-bot/compare/v0.9.2...v0.9.3
|
||||
[0.9.2]: https://github.com/agessaman/meshcore-bot/compare/v0.9.1...v0.9.2
|
||||
|
||||
@@ -7,17 +7,18 @@ tracked here — see [CHANGELOG.md](CHANGELOG.md) for shipped changes and
|
||||
The Inline TODOs section at the bottom is auto-generated by
|
||||
`python scripts/update_todos.py` (see [Auto-Update](#auto-update)).
|
||||
|
||||
**Last updated:** 2026-08-07 — v1.0.0 release prep. Coverage 53% (3,981 passed / 11 skipped), `fail_under = 35`.
|
||||
**Last updated:** 2026-09-13. The v1.1.0 release-candidate suite reports 55%
|
||||
coverage, and `fail_under = 50`.
|
||||
|
||||
---
|
||||
|
||||
## Test coverage
|
||||
|
||||
Coverage reached **53%** at v1.0.0, past the old 40% target. `fail_under` is
|
||||
still 35 — worth raising now that there is headroom.
|
||||
Coverage is **55%** at the v1.1.0 release candidate. The enforced floor is 50%.
|
||||
|
||||
Hardware- and API-dependent modules cap the realistic ceiling, so the list below
|
||||
is ordered by value rather than by percentage. Figures are from the v1.0.0 run.
|
||||
is ordered by value rather than by percentage. Per-module figures below are from
|
||||
the v1.0.0 run and should be refreshed in a separate coverage review.
|
||||
|
||||
**Pure logic — best value:**
|
||||
|
||||
@@ -132,4 +133,3 @@ Or run it as part of a pre-commit hook by adding to `.pre-commit-config.yaml`:
|
||||
|
||||
> _Last scanned: 2026-08-07. No `# TODO`, `# FIXME`, or `# HACK` markers
|
||||
> found in `modules/` or `tests/`. Run `python scripts/update_todos.py` to refresh._
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ The bot will not start without these sections. The validator reports them as **e
|
||||
- `[WebViewer]` → use `[Web_Viewer]`
|
||||
- `[FeedManager]` → use `[Feed_Manager]`
|
||||
- `[Jokes]` → use `[Joke_Command]` / `[DadJoke_Command]` (see [Configuration](configuration.md) and [Upgrade](upgrade.md) for legacy support).
|
||||
- **`[Aliases]`** — Deprecated in v0.9. Move entries to per-command `aliases =` under each `*_Command` section. The validator may report this as **info**; see [Upgrade guide](upgrade.md#upgrading-from-v08--v09).
|
||||
- **`[Aliases]`** — Deprecated in v0.9. Move entries to per-command `aliases =` under each `*_Command` section. The validator may report this as **info**; see [Upgrade guide](upgrade.md#upgrading-from-v08-v09).
|
||||
- **Unknown sections** (not in the canonical list and not a `*_Command` section) are reported as **info**; the validator may suggest a similar section name if it looks like a command.
|
||||
|
||||
### Optional sections (info only)
|
||||
|
||||
+1
-1
@@ -418,7 +418,7 @@ For production deployments:
|
||||
|
||||
1. **Use specific image tags** instead of `latest`:
|
||||
```yaml
|
||||
image: ghcr.io/your-username/meshcore-bot:v1.0.0
|
||||
image: ghcr.io/your-username/meshcore-bot:v1.1.0
|
||||
```
|
||||
|
||||
2. **Set resource limits** in `docker-compose.yml`:
|
||||
|
||||
@@ -91,7 +91,7 @@ meshcore-bot.url = "github:agessaman/meshcore-bot/";
|
||||
## Next steps
|
||||
|
||||
- **[Command Reference](command-reference.md)** — Full command reference (wx, aqi, sun, path, prefix, etc.)
|
||||
- **[Upgrade guide](upgrade.md)** — Migrating to v0.9 from older releases
|
||||
- **[Upgrade guide](upgrade.md)** - Release-specific upgrade notes
|
||||
- **[Config validation](config-validation.md)** — Validate `config.ini` before first run
|
||||
- **[Data retention](data-retention.md)** — Database cleanup defaults
|
||||
- **[README](https://github.com/agessaman/meshcore-bot/blob/main/README.md)** — Features, keywords, configuration overview
|
||||
|
||||
@@ -21,7 +21,7 @@ isolated environment, which sidesteps PEP 668 (`externally-managed-environment`)
|
||||
Debian 12+, Ubuntu 23.04+, Fedora and Arch without you managing a virtualenv:
|
||||
|
||||
```bash
|
||||
pipx install "git+https://github.com/agessaman/meshcore-bot@v1.0.0"
|
||||
pipx install "git+https://github.com/agessaman/meshcore-bot@v1.1.0"
|
||||
```
|
||||
|
||||
Upgrade to a newer tag with `pipx install --force "git+https://github.com/agessaman/meshcore-bot@vX.Y.Z"`.
|
||||
|
||||
@@ -263,7 +263,7 @@ independent of this setting.
|
||||
"model": "Heltec V3",
|
||||
"firmware_version": "v3.1.2",
|
||||
"radio": "915000000,250,9,8",
|
||||
"client_version": "meshcore-bot/v1.0.0",
|
||||
"client_version": "meshcore-bot/v1.1.0",
|
||||
"stats": {
|
||||
"rx_packets": 1234,
|
||||
"tx_packets": 567
|
||||
|
||||
+55
-5
@@ -2,7 +2,57 @@
|
||||
|
||||
This document describes changes that may affect users upgrading from previous versions. Read the section that matches the version you are upgrading **from** (not the version you are installing).
|
||||
|
||||
For a full list of v0.9 changes, see [CHANGELOG.md](https://github.com/agessaman/meshcore-bot/blob/main/CHANGELOG.md).
|
||||
For the full release history, see [CHANGELOG.md](https://github.com/agessaman/meshcore-bot/blob/main/CHANGELOG.md).
|
||||
|
||||
## Upgrading from v1.0.0 to v1.1.0
|
||||
|
||||
v1.1.0 adds features without removing or renaming the stable configuration,
|
||||
command, service-plugin, or web-viewer interfaces introduced in v1.0.0. Existing
|
||||
configuration files continue to work. Back up `config.ini`, `local/`, and the bot
|
||||
database before upgrading, then use the normal installer or container update path.
|
||||
|
||||
### Database
|
||||
|
||||
Migration 23 adds nullable `snr` and `rssi` columns to `observed_paths`. The bot
|
||||
applies it automatically and records it in `schema_version`; existing path rows and
|
||||
rows without a direct RF measurement retain `NULL` values. The migration is
|
||||
transactional and safe to run more than once.
|
||||
|
||||
### Configuration and local extensions
|
||||
|
||||
- `[Test_Command] distance_unit` controls printed path distances. Its default,
|
||||
`auto`, uses miles for `en` and `en-US` replies and kilometres for other locales.
|
||||
- `[PacketCapture] observer_name` can give MQTT payloads an observer identity that
|
||||
differs from the connected MeshCore node name. Leaving it unset preserves the
|
||||
v1.0.0 behavior.
|
||||
- `[Localization] local_translation_path` loads operator-owned catalog overrides
|
||||
from the configured local directory. Existing installations need no new file.
|
||||
- `mqttN_keepalive` and `mqttN_jwt_reconnect_on_renew` control broker keepalive and
|
||||
renewed-token reconnect behavior. Their defaults preserve ordinary brokers while
|
||||
making expiring-token sessions reconnect before the broker rejects them.
|
||||
- The Plugins page now discovers local commands and services and saves their new
|
||||
sections to `local/config.ini`. A section already present in the base config keeps
|
||||
its existing owner.
|
||||
|
||||
### Behavior changes
|
||||
|
||||
- Packet-capture `timestamp`, `date`, and `time` fields now describe the same UTC
|
||||
instant. Consumers that interpreted `date` or `time` as host-local values must
|
||||
switch to UTC.
|
||||
- Airplanes uses `adsb.lol` by default because the former public endpoint rejects
|
||||
unauthenticated clients. Existing `airplanes.live` defaults are remapped; custom
|
||||
and local readsb URLs are unchanged.
|
||||
- The web viewer's former Disconnect action is labelled Stop Bot and asks for
|
||||
confirmation because the action terminates the process rather than only closing
|
||||
the radio connection.
|
||||
- Response templates support nested placeholders, quoted filter arguments,
|
||||
`hops_min`, `shorten`, and `if_nonempty`. Existing templates retain their prior
|
||||
syntax, and substituted values are not reparsed as template source.
|
||||
- Scheduled messages can be edited in the web viewer and can include bounded
|
||||
`{cmd:...}` output. Schedules using command output must leave at least 15 minutes
|
||||
between runs.
|
||||
- Proactive weather output, `!wx`, and `!gwx` share localized alert formatting.
|
||||
Russian is included, and local catalogs can override individual strings.
|
||||
|
||||
## Upgrading from v0.8 → v0.9
|
||||
|
||||
@@ -15,11 +65,11 @@ v0.9 is a large release focused on operational reliability, observability, and d
|
||||
|
||||
### Config changes
|
||||
|
||||
- **Command aliases** — The global **`[Aliases]`** section is removed. Move each alias list to the corresponding command section as `aliases = stem1, stem2` (stems only; no command prefix). See [Configuration](configuration.md#per-command-aliases-v09).
|
||||
- **Command aliases** — The global **`[Aliases]`** section is removed. Move each alias list to the corresponding command section as `aliases = stem1, stem2` (stems only; no command prefix). See [Configuration](configuration.md#command-specific-sections).
|
||||
- **`max_response_hops`** — Shipped config templates now default to **7** (was 10). The code fallback when unset is still 64. Review this if you relied on the old template default.
|
||||
- **New optional sections** (safe to omit):
|
||||
- **`[Rate_Limits]`** — Per-channel minimum seconds between bot messages. See [Configuration](configuration.md#rate-limiting).
|
||||
- **`[Webhook]`** — Inbound HTTP POST relay to channels or DMs. See [Configuration](configuration.md#inbound-webhook).
|
||||
- **`[Rate_Limits]`** — Per-channel minimum seconds between bot messages. See [README](https://github.com/agessaman/meshcore-bot#per-channel-rate-limiting).
|
||||
- **`[Webhook]`** — Inbound HTTP POST relay to channels or DMs. See [README](https://github.com/agessaman/meshcore-bot#inbound-webhook).
|
||||
- Radio reliability options under **`[Bot]`** (zombie-radio detection, send suppression during outages, etc.) — see `config.ini.example`.
|
||||
|
||||
### Database
|
||||
@@ -63,7 +113,7 @@ v0.9 is a large release focused on operational reliability, observability, and d
|
||||
|
||||
## Upgrading from v0.7 → v0.8
|
||||
|
||||
If you are coming from v0.7 and skipping v0.8, also read [Upgrading from v0.8 → v0.9](#upgrading-from-v08--v09) above.
|
||||
If you are coming from v0.7 and skipping v0.8, also read [Upgrading from v0.8 → v0.9](#upgrading-from-v08-v09) above.
|
||||
|
||||
### Path command and mesh graph
|
||||
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "meshcore-bot"
|
||||
version = "1.0.0"
|
||||
version = "1.1.0"
|
||||
description = "MeshCore Bot with commands for mesh testing, utilities, and service integration."
|
||||
readme = "README.md"
|
||||
# Table form rather than the SPDX string form: the string form needs
|
||||
|
||||
@@ -22,7 +22,7 @@ fi
|
||||
if [[ -z "${VERSION}" ]]; then
|
||||
echo "ERROR: Could not read the version from pyproject.toml" >&2
|
||||
echo " Install tomli (Python 3.10) or pass the version explicitly:" >&2
|
||||
echo " ./scripts/build-deb.sh 1.0.0" >&2
|
||||
echo " ./scripts/build-deb.sh 1.1.0" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user