# Changelog

All notable changes to this project will be documented in this file.

This changelog is automatically generated by [release-please](https://github.com/googleapis/release-please) based on [Conventional Commits](https://www.conventionalcommits.org/).

## [0.2.17](https://github.com/jorijn/meshcore-stats/compare/v0.2.16...v0.2.17) (2026-02-17)


### Features

* add configurable custom HTML head injection ([#118](https://github.com/jorijn/meshcore-stats/issues/118)) ([edde12f](https://github.com/jorijn/meshcore-stats/commit/edde12f17c3ff34dc1310bbcbda333897b876c56))


### Miscellaneous Chores

* **deps:** lock file maintenance ([#116](https://github.com/jorijn/meshcore-stats/issues/116)) ([b23710b](https://github.com/jorijn/meshcore-stats/commit/b23710b5aebbce34692d4f37ef1108591e916142))
* **deps:** update ghcr.io/astral-sh/uv docker tag to v0.10.1 ([#110](https://github.com/jorijn/meshcore-stats/issues/110)) ([06517c5](https://github.com/jorijn/meshcore-stats/commit/06517c58056d8820c236e29a0d0ce39748a5e335))
* **deps:** update ghcr.io/astral-sh/uv docker tag to v0.10.2 ([#112](https://github.com/jorijn/meshcore-stats/issues/112)) ([e99df4c](https://github.com/jorijn/meshcore-stats/commit/e99df4cac13a09b070ab2cc6fab4d2f6b5ba2a9c))
* **deps:** update ghcr.io/astral-sh/uv docker tag to v0.10.3 ([#117](https://github.com/jorijn/meshcore-stats/issues/117)) ([de22906](https://github.com/jorijn/meshcore-stats/commit/de2290639f97ab08662de63d1a3c8cc589ac8654))
* **deps:** update github/codeql-action action to v4.32.3 ([#115](https://github.com/jorijn/meshcore-stats/issues/115)) ([19b04be](https://github.com/jorijn/meshcore-stats/commit/19b04be430292298e7158ef2330efdcd324059c4))

## [0.2.16](https://github.com/jorijn/meshcore-stats/compare/v0.2.15...v0.2.16) (2026-02-09)


### Features

* add telemetry chart discovery and unit display ([#109](https://github.com/jorijn/meshcore-stats/issues/109)) ([137bbe3](https://github.com/jorijn/meshcore-stats/commit/137bbe3c663004ddad549c47c7502822a79775b6))


### Bug Fixes

* **html:** use relative asset and nav paths for subpath deploys ([#84](https://github.com/jorijn/meshcore-stats/issues/84)) ([f21a378](https://github.com/jorijn/meshcore-stats/commit/f21a3788bd0ee7c327f4d8bd484e183a8f656c27))


### Miscellaneous Chores

* **deps:** lock file maintenance ([#108](https://github.com/jorijn/meshcore-stats/issues/108)) ([3c765a3](https://github.com/jorijn/meshcore-stats/commit/3c765a35f2b37adbdba68aa37928e739a4ad5e20))
* **deps:** lock file maintenance ([#85](https://github.com/jorijn/meshcore-stats/issues/85)) ([410eee4](https://github.com/jorijn/meshcore-stats/commit/410eee439e3f7d9f6d8a0cec18ceafd42e0aff62))
* **deps:** lock file maintenance ([#89](https://github.com/jorijn/meshcore-stats/issues/89)) ([d636f5c](https://github.com/jorijn/meshcore-stats/commit/d636f5cbe3705e91ff37378d839c6919fc1d44b2))
* **deps:** lock file maintenance ([#98](https://github.com/jorijn/meshcore-stats/issues/98)) ([471ebcf](https://github.com/jorijn/meshcore-stats/commit/471ebcff45c02bb099a2c2bdf69839a83f9c87a3))
* **deps:** update actions/attest-build-provenance action to v3.2.0 ([#90](https://github.com/jorijn/meshcore-stats/issues/90)) ([23c8622](https://github.com/jorijn/meshcore-stats/commit/23c86226b830736d21d3fc5b081ffb0b21844d75))
* **deps:** update actions/checkout action to v6.0.2 ([#87](https://github.com/jorijn/meshcore-stats/issues/87)) ([b789cbc](https://github.com/jorijn/meshcore-stats/commit/b789cbcc56f50e62164dbfad15f55530c84dd9df))
* **deps:** update actions/checkout digest to de0fac2 ([#100](https://github.com/jorijn/meshcore-stats/issues/100)) ([a84b0c3](https://github.com/jorijn/meshcore-stats/commit/a84b0c30c1252aac15b4a26e2834a1ff4e821eb7))
* **deps:** update actions/setup-python digest to a309ff8 ([#86](https://github.com/jorijn/meshcore-stats/issues/86)) ([43e07d3](https://github.com/jorijn/meshcore-stats/commit/43e07d3ffc2dfaab10adc763129ceb2f31ff44c9))
* **deps:** update astral-sh/setup-uv action to v7.2.1 ([#96](https://github.com/jorijn/meshcore-stats/issues/96)) ([6168a0b](https://github.com/jorijn/meshcore-stats/commit/6168a0b4e9ac6e9f0093901d8775a5ae2169c648))
* **deps:** update astral-sh/setup-uv action to v7.3.0 ([#106](https://github.com/jorijn/meshcore-stats/issues/106)) ([b56add8](https://github.com/jorijn/meshcore-stats/commit/b56add874822f2d630718d509c1a59c546d3c48c))
* **deps:** update docker/login-action action to v3.7.0 ([#94](https://github.com/jorijn/meshcore-stats/issues/94)) ([d1770cf](https://github.com/jorijn/meshcore-stats/commit/d1770cfc631a0d5a874dd97b454aed61a77dcb3c))
* **deps:** update ghcr.io/astral-sh/uv docker tag to v0.10.0 ([#105](https://github.com/jorijn/meshcore-stats/issues/105)) ([dc477b6](https://github.com/jorijn/meshcore-stats/commit/dc477b6532777ac4d142626a62715a9fcff01f74))
* **deps:** update ghcr.io/astral-sh/uv docker tag to v0.9.25 ([#77](https://github.com/jorijn/meshcore-stats/issues/77)) ([df9bfff](https://github.com/jorijn/meshcore-stats/commit/df9bfffa78202ceb285c13e9d652e132d5d3fd96))
* **deps:** update ghcr.io/astral-sh/uv docker tag to v0.9.26 ([#82](https://github.com/jorijn/meshcore-stats/issues/82)) ([c0758f4](https://github.com/jorijn/meshcore-stats/commit/c0758f4c0dd92b22e6c7f69b13adcc0615b9e48c))
* **deps:** update ghcr.io/astral-sh/uv docker tag to v0.9.27 ([#92](https://github.com/jorijn/meshcore-stats/issues/92)) ([6f89953](https://github.com/jorijn/meshcore-stats/commit/6f899536b0745d834621f7b4dc72b7f559cad2f8))
* **deps:** update ghcr.io/astral-sh/uv docker tag to v0.9.28 ([#95](https://github.com/jorijn/meshcore-stats/issues/95)) ([159fb02](https://github.com/jorijn/meshcore-stats/commit/159fb02379be99939531cb00f1f94a36f6054ebf))
* **deps:** update ghcr.io/astral-sh/uv docker tag to v0.9.29 ([#101](https://github.com/jorijn/meshcore-stats/issues/101)) ([69108a9](https://github.com/jorijn/meshcore-stats/commit/69108a90b7c19ed9837a5263da4cd73d4086d2fe))
* **deps:** update ghcr.io/astral-sh/uv docker tag to v0.9.30 ([#103](https://github.com/jorijn/meshcore-stats/issues/103)) ([70f0b0c](https://github.com/jorijn/meshcore-stats/commit/70f0b0c74687b4e2ef6d68976eacc3f2ff94c8bb))
* **deps:** update github/codeql-action action to v4.31.11 ([#88](https://github.com/jorijn/meshcore-stats/issues/88)) ([453231c](https://github.com/jorijn/meshcore-stats/commit/453231c65093a4b25013190f30fe0acfde8969de))
* **deps:** update github/codeql-action action to v4.32.2 ([#91](https://github.com/jorijn/meshcore-stats/issues/91)) ([8bee466](https://github.com/jorijn/meshcore-stats/commit/8bee46645b65295ca590a1153db5dc3a5618558e))
* **deps:** update nginx:1.29-alpine docker digest to 1d13701 ([#107](https://github.com/jorijn/meshcore-stats/issues/107)) ([d9b413b](https://github.com/jorijn/meshcore-stats/commit/d9b413b18f7d1bf280e5313ecc6de8ce39aed767))
* **deps:** update nginx:1.29-alpine docker digest to 4870c12 ([#97](https://github.com/jorijn/meshcore-stats/issues/97)) ([88df0ff](https://github.com/jorijn/meshcore-stats/commit/88df0ffd128c7915d2fe48ed1c93e06a75156a96))
* **deps:** update nginx:1.29-alpine docker digest to 5878d06 ([#104](https://github.com/jorijn/meshcore-stats/issues/104)) ([34d5990](https://github.com/jorijn/meshcore-stats/commit/34d5990ca80c4a24ae3d75520afb0b9e0eb7fce6))
* **deps:** update nginx:1.29-alpine docker digest to 66d420c ([#78](https://github.com/jorijn/meshcore-stats/issues/78)) ([2455f35](https://github.com/jorijn/meshcore-stats/commit/2455f35d3226ec4222099556c1251f8fc2bcf877))
* **deps:** update nginx:1.29-alpine docker digest to 7d7a15b ([#93](https://github.com/jorijn/meshcore-stats/issues/93)) ([5fecc33](https://github.com/jorijn/meshcore-stats/commit/5fecc3317d1a1721f2e188bf8d6b02400c0be70f))
* **deps:** update nginx:1.29-alpine docker digest to b0f7830 ([#81](https://github.com/jorijn/meshcore-stats/issues/81)) ([6afd70b](https://github.com/jorijn/meshcore-stats/commit/6afd70b0d9eddc36533cf04075d994c97ed28f75))
* **deps:** update python:3.14-slim-bookworm docker digest to adb6bdf ([#79](https://github.com/jorijn/meshcore-stats/issues/79)) ([3007845](https://github.com/jorijn/meshcore-stats/commit/3007845bd22754452afd6c66a6f48098678307e6))
* **deps:** update python:3.14-slim-bookworm docker digest to e87711e ([#99](https://github.com/jorijn/meshcore-stats/issues/99)) ([81ba1ef](https://github.com/jorijn/meshcore-stats/commit/81ba1efaf2e5439d82525b2e3f622868252c4431))
* **deps:** update python:3.14-slim-bookworm docker digest to f0540d0 ([#102](https://github.com/jorijn/meshcore-stats/issues/102)) ([ddcee7f](https://github.com/jorijn/meshcore-stats/commit/ddcee7fa72d9bdabed076a3e10f10ab22b235185))

## [0.2.15](https://github.com/jorijn/meshcore-stats/compare/v0.2.14...v0.2.15) (2026-01-13)


### Bug Fixes

* **charts:** skip short counter intervals ([#73](https://github.com/jorijn/meshcore-stats/issues/73)) ([97ebba4](https://github.com/jorijn/meshcore-stats/commit/97ebba4f2da723100ec87d21b6f8780ee0793e46))


### Miscellaneous Chores

* **deps:** update python:3.14-slim-bookworm docker digest to 55b18d5 ([#69](https://github.com/jorijn/meshcore-stats/issues/69)) ([392ba22](https://github.com/jorijn/meshcore-stats/commit/392ba226babdaa7bd4beb0c6ff7b832a3aca5e71))

## [0.2.14](https://github.com/jorijn/meshcore-stats/compare/v0.2.13...v0.2.14) (2026-01-13)


### Miscellaneous Chores

* add lockFileMaintenance to update types ([#65](https://github.com/jorijn/meshcore-stats/issues/65)) ([b249a21](https://github.com/jorijn/meshcore-stats/commit/b249a217e85031a0ce73865e577d37583c3af5ea))
* **deps:** lock file maintenance ([#66](https://github.com/jorijn/meshcore-stats/issues/66)) ([a89d745](https://github.com/jorijn/meshcore-stats/commit/a89d745d6bcb4aae13fab3f0c0d7dd7c1a643f3a))
* **deps:** update ghcr.io/astral-sh/uv docker tag to v0.9.24 ([#61](https://github.com/jorijn/meshcore-stats/issues/61)) ([18ca787](https://github.com/jorijn/meshcore-stats/commit/18ca787f7fe054a425af4fba16306621fead7ced))
* **deps:** update github/codeql-action action to v4.31.10 ([#67](https://github.com/jorijn/meshcore-stats/issues/67)) ([c1b8978](https://github.com/jorijn/meshcore-stats/commit/c1b89782eb374bb1f161ef86bebd64dc8ece9e1c))
* **deps:** update golang docker tag to v1.25 ([#70](https://github.com/jorijn/meshcore-stats/issues/70)) ([63a8420](https://github.com/jorijn/meshcore-stats/commit/63a842016cd14d0e338840fb4e41abb17bb32ba5))
* **deps:** update nginx:1.29-alpine docker digest to c083c37 ([#62](https://github.com/jorijn/meshcore-stats/issues/62)) ([df0c374](https://github.com/jorijn/meshcore-stats/commit/df0c374b654606c2b6d36ae3fa5134691885cd5d))
* enable renovate automerge for patch and digest updates ([#64](https://github.com/jorijn/meshcore-stats/issues/64)) ([6fc2e76](https://github.com/jorijn/meshcore-stats/commit/6fc2e762cfbea31ebca4a120d0d0e1a3547b0455))


### Build System

* **docker:** add armv7 container support ([#68](https://github.com/jorijn/meshcore-stats/issues/68)) ([75e50f7](https://github.com/jorijn/meshcore-stats/commit/75e50f7ee95404b7ab9c0abeec12fa5e17ad24f6))

## [0.2.13](https://github.com/jorijn/meshcore-stats/compare/v0.2.12...v0.2.13) (2026-01-09)


### Miscellaneous Chores

* drop digest from compose image ([#59](https://github.com/jorijn/meshcore-stats/issues/59)) ([3a03060](https://github.com/jorijn/meshcore-stats/commit/3a0306043c8a8dfeb1b5b6df6fa988322cc64e98))

## [0.2.12](https://github.com/jorijn/meshcore-stats/compare/v0.2.11...v0.2.12) (2026-01-09)


### Miscellaneous Chores

* **deps:** lock file maintenance ([#52](https://github.com/jorijn/meshcore-stats/issues/52)) ([d4b5885](https://github.com/jorijn/meshcore-stats/commit/d4b5885379c06988bd8261039c67c6a6724b7704))
* **deps:** lock file maintenance ([#58](https://github.com/jorijn/meshcore-stats/issues/58)) ([a3a5964](https://github.com/jorijn/meshcore-stats/commit/a3a5964488e7fbda5b6d792fa9f0f712e0a0d0c3))
* **deps:** pin dependencies ([#55](https://github.com/jorijn/meshcore-stats/issues/55)) ([9cb95f8](https://github.com/jorijn/meshcore-stats/commit/9cb95f8108738ff21a8346f8922fcd218843fb7d))
* **deps:** pin python docker tag to e8a1ad8 ([#57](https://github.com/jorijn/meshcore-stats/issues/57)) ([f55c236](https://github.com/jorijn/meshcore-stats/commit/f55c236080f6c9bc7a7f090f4382cd53281fc2ac))
* **deps:** update actions/attest-build-provenance digest to 00014ed ([#40](https://github.com/jorijn/meshcore-stats/issues/40)) ([e937f2b](https://github.com/jorijn/meshcore-stats/commit/e937f2b0b7a34bb5c7f3f51b60a592f78a78079d))
* **deps:** update actions/checkout action to v6 ([#48](https://github.com/jorijn/meshcore-stats/issues/48)) ([3967fd0](https://github.com/jorijn/meshcore-stats/commit/3967fd032ad95873bc50c438351ba52e6448a335))
* **deps:** update actions/setup-python action to v6 ([#49](https://github.com/jorijn/meshcore-stats/issues/49)) ([97223f1](https://github.com/jorijn/meshcore-stats/commit/97223f137ca069f6f2632e2e849274cced91a8b3))
* **deps:** update actions/upload-artifact action to v6 ([#50](https://github.com/jorijn/meshcore-stats/issues/50)) ([46fc383](https://github.com/jorijn/meshcore-stats/commit/46fc383eaa9cd99185a5b2112e58d5ff163f3185))
* **deps:** update ghcr.io/astral-sh/uv docker tag to v0.9.22 ([#44](https://github.com/jorijn/meshcore-stats/issues/44)) ([83cf2bf](https://github.com/jorijn/meshcore-stats/commit/83cf2bf929bfba9f7019e78767abf04abe7700d2))
* **deps:** update github/codeql-action action to v4 ([#51](https://github.com/jorijn/meshcore-stats/issues/51)) ([83425a4](https://github.com/jorijn/meshcore-stats/commit/83425a48f67a5d974065b9d33ad0a24a044d67d0))
* **deps:** update github/codeql-action digest to ee117c9 ([#41](https://github.com/jorijn/meshcore-stats/issues/41)) ([dd7ec5b](https://github.com/jorijn/meshcore-stats/commit/dd7ec5b46e92365dbf2731f2378b2168c24f0b88))
* **deps:** update nginx docker tag to v1.29 ([#47](https://github.com/jorijn/meshcore-stats/issues/47)) ([57a53a8](https://github.com/jorijn/meshcore-stats/commit/57a53a8800c9c97459ef5139310a8c23c7540943))
* support python 3.14 in CI and docker ([#56](https://github.com/jorijn/meshcore-stats/issues/56)) ([b66f538](https://github.com/jorijn/meshcore-stats/commit/b66f5380b69108f22d53aaf1a48642c240788d3f))
* switch to Renovate and pin uv image ([#38](https://github.com/jorijn/meshcore-stats/issues/38)) ([adc4423](https://github.com/jorijn/meshcore-stats/commit/adc442351bc84beb6216eafedd8e2eaa95109bfd))


### Continuous Integration

* **docker:** add PR build and smoke test ([#53](https://github.com/jorijn/meshcore-stats/issues/53)) ([40d7d3b](https://github.com/jorijn/meshcore-stats/commit/40d7d3b2faef5ae7c268cd1ecc9616d1dd421f12))
* switch actions to version tags for renovate digests ([#54](https://github.com/jorijn/meshcore-stats/issues/54)) ([1f6e7c5](https://github.com/jorijn/meshcore-stats/commit/1f6e7c50935265579be4faadeb5dc88c4098a71c))

## [0.2.11](https://github.com/jorijn/meshcore-stats/compare/v0.2.10...v0.2.11) (2026-01-08)


### Bug Fixes

* **docker:** skip project install in uv sync ([#35](https://github.com/jorijn/meshcore-stats/issues/35)) ([26d5125](https://github.com/jorijn/meshcore-stats/commit/26d5125e15a78fd7b3fddd09292b4aff6efd23b7))


### Miscellaneous Chores

* **release:** track uv.lock in release-please ([#33](https://github.com/jorijn/meshcore-stats/issues/33)) ([fb627fd](https://github.com/jorijn/meshcore-stats/commit/fb627fdacd1b58d0c8fc10b8d3d8738a1bdce799))

## [0.2.10](https://github.com/jorijn/meshcore-stats/compare/v0.2.9...v0.2.10) (2026-01-08)


### Documentation

* add TZ timezone setting to example config ([45bdf5d](https://github.com/jorijn/meshcore-stats/commit/45bdf5d6d47aacb7ebaba8e420bc9f8d917d06a3))


### Tests

* add comprehensive pytest test suite with 95% coverage ([#29](https://github.com/jorijn/meshcore-stats/issues/29)) ([a9f6926](https://github.com/jorijn/meshcore-stats/commit/a9f69261049e45b36119fd502dd0d7fc2be2691c))
* stabilize suite and broaden integration coverage ([#32](https://github.com/jorijn/meshcore-stats/issues/32)) ([ca13e31](https://github.com/jorijn/meshcore-stats/commit/ca13e31aae1bff561b278608c16df8e17424f9eb))

## [0.2.9](https://github.com/jorijn/meshcore-stats/compare/v0.2.8...v0.2.9) (2026-01-06)


### Bug Fixes

* tooltip positioning and locale-aware time formatting ([f7923b9](https://github.com/jorijn/meshcore-stats/commit/f7923b94346c3d492e7291ecca208ab704176308))


### Continuous Integration

* add artifact-metadata permission for attestation storage records ([c978844](https://github.com/jorijn/meshcore-stats/commit/c978844271eafd35f4778d748d7c832309d1614f))

## [0.2.8](https://github.com/jorijn/meshcore-stats/compare/v0.2.7...v0.2.8) (2026-01-06)


### Bug Fixes

* normalize reporting outputs and chart tooltips ([e37aef6](https://github.com/jorijn/meshcore-stats/commit/e37aef6c5e55d2077baf4ee35abdff0562983d69))

## [0.2.7](https://github.com/jorijn/meshcore-stats/compare/v0.2.6...v0.2.7) (2026-01-06)


### Features

* add telemetry collection for companion and repeater nodes ([#24](https://github.com/jorijn/meshcore-stats/issues/24)) ([a3015e2](https://github.com/jorijn/meshcore-stats/commit/a3015e2209781bdd7c317fa992ced6afa19efe61))

## [0.2.6](https://github.com/jorijn/meshcore-stats/compare/v0.2.5...v0.2.6) (2026-01-05)


### Bug Fixes

* add tmpfs mount for fontconfig cache to fix read-only filesystem errors ([3d0d903](https://github.com/jorijn/meshcore-stats/commit/3d0d90304cec5ebcdb34935400de31afd62e258d))

## [0.2.5](https://github.com/jorijn/meshcore-stats/compare/v0.2.4...v0.2.5) (2026-01-05)


### Features

* add automatic serial port locking to prevent concurrent access ([3c5eace](https://github.com/jorijn/meshcore-stats/commit/3c5eace2207279c55401dd8fa27294d5a94bb682))


### Documentation

* fix formatting in architecture diagram ([7eee23e](https://github.com/jorijn/meshcore-stats/commit/7eee23ec40ff9441515b4ac18fbb7cd3f87fa4b5))

## [0.2.4](https://github.com/jorijn/meshcore-stats/compare/v0.2.3...v0.2.4) (2026-01-05)


### Documentation

* rewrite README with Docker-first installation guide ([6ac5262](https://github.com/jorijn/meshcore-stats/commit/6ac52629d3025db69f9334d3185b97ce16cd3e4b))

## [0.2.3](https://github.com/jorijn/meshcore-stats/compare/v0.2.2...v0.2.3) (2026-01-05)


### Continuous Integration

* use fine-grained PAT for release-please to trigger Docker builds ([2730a9d](https://github.com/jorijn/meshcore-stats/commit/2730a9d906eeb5761af29dd69e8d4ebbfca50491))

## [0.2.2](https://github.com/jorijn/meshcore-stats/compare/v0.2.1...v0.2.2) (2026-01-05)


### Bug Fixes

* **ci:** skip smoke test when manual push is disabled ([e3a1df4](https://github.com/jorijn/meshcore-stats/commit/e3a1df4aa64bf87c32848be0d5c5e5ce16968186))
* move serial device config to override file ([6776c2c](https://github.com/jorijn/meshcore-stats/commit/6776c2c4293b71f4649a42dcf6c517f3b44469b5))

## [0.2.1](https://github.com/jorijn/meshcore-stats/compare/v0.2.0...v0.2.1) (2026-01-05)


### Features

* add Docker containerization with GitHub Actions CI/CD ([7ba5ed3](https://github.com/jorijn/meshcore-stats/commit/7ba5ed37d40d7c5e0a7e206cedcf6f70096759e5))
* add Docker containerization with GitHub Actions CI/CD ([7a181e4](https://github.com/jorijn/meshcore-stats/commit/7a181e4b1ac581b2b897cd70aa77c5c983c6e80a))


### Bug Fixes

* improve Docker configuration and documentation ([ee959d9](https://github.com/jorijn/meshcore-stats/commit/ee959d95a18afeeab47d41cc85ac435ba2a87016))


### Miscellaneous Chores

* clean up permissions in settings.local.json ([f47916c](https://github.com/jorijn/meshcore-stats/commit/f47916cf82118bb30d80d901773f0bfaf2de315a))


### Code Refactoring

* rename docker-compose.development.yml to docker-compose.dev.yml ([046d7ea](https://github.com/jorijn/meshcore-stats/commit/046d7ead708cc2807f10bcd36e1e1cf7494a8f45))

## [0.2.0](https://github.com/jorijn/meshcore-stats/compare/v0.1.0...v0.2.0) (2026-01-04)


### ⚠ BREAKING CHANGES

* Configuration file renamed from .envrc to meshcore.conf. Users must copy meshcore.conf.example to meshcore.conf and migrate their settings. The new file format is the same (shell-style exports) but without the direnv-specific "layout python3" command.

### Features

* auto-load config from meshcore.conf ([8ca5a1e](https://github.com/jorijn/meshcore-stats/commit/8ca5a1e6d0f29fce1c66f526116c6cd484c0f8b5))

## 0.1.0 (Initial Release)

Initial release of MeshCore Stats - a monitoring system for MeshCore LoRa mesh networks.

### Features

- Data collection from companion and repeater nodes
- SQLite database with EAV schema for flexible metric storage
- Interactive SVG chart generation with matplotlib
- Static HTML site with day/week/month/year views
- Monthly and yearly statistics reports
- Light and dark theme support
- Circuit breaker for unreliable LoRa connections
- Battery percentage calculation from voltage curves
