Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
e99d339
Bump dependabot/fetch-metadata from 2.4.0 to 2.5.0
dependabot[bot] Jan 5, 2026
fc67d02
Merge pull request #90 from SpanPanel/dependabot/github_actions/depen…
github-actions[bot] Jan 5, 2026
0e0a16b
Bump pytest from 8.4.2 to 9.0.2 in the dev-dependencies group
dependabot[bot] Jan 7, 2026
882b898
Merge pull request #91 from SpanPanel/dependabot/pip/dev-dependencies…
cayossarian Jan 7, 2026
5abe588
Bump urllib3 from 2.6.0 to 2.6.3
dependabot[bot] Jan 8, 2026
4dea465
Merge pull request #92 from SpanPanel/dependabot/pip/urllib3-2.6.3
github-actions[bot] Jan 8, 2026
4fd1778
Handle NetworkError exceptions in retry logic for parallel requests
NickBorgers Jan 10, 2026
651dff8
Bump the runtime-dependencies group with 2 updates
dependabot[bot] Jan 13, 2026
f52fdb8
Merge pull request #94 from SpanPanel/dependabot/pip/runtime-dependen…
github-actions[bot] Jan 13, 2026
b6b25bd
Bump cffi from 1.17.1 to 2.0.0
dependabot[bot] Jan 13, 2026
0ec4237
Merge branch 'main' into dependabot/pip/cffi-2.0.0
cayossarian Jan 13, 2026
0073315
Merge pull request #95 from SpanPanel/dependabot/pip/cffi-2.0.0
cayossarian Jan 13, 2026
e1c4615
Bump virtualenv from 20.34.0 to 20.36.1
dependabot[bot] Jan 13, 2026
874c2cd
Merge pull request #96 from SpanPanel/dependabot/pip/virtualenv-20.36.1
github-actions[bot] Jan 13, 2026
40364be
Bump filelock from 3.20.1 to 3.20.3
dependabot[bot] Jan 13, 2026
cfd106e
Merge pull request #97 from SpanPanel/dependabot/pip/filelock-3.20.3
github-actions[bot] Jan 13, 2026
8588212
Bump bandit from 1.9.2 to 1.9.3 in the dev-dependencies group
dependabot[bot] Jan 19, 2026
d596329
Merge pull request #98 from SpanPanel/dependabot/pip/dev-dependencies…
github-actions[bot] Jan 19, 2026
9a89ca3
Bump markupsafe from 3.0.2 to 3.0.3
dependabot[bot] Jan 19, 2026
51ec134
Add gRPC transport layer with PanelCapability flags and unified snaps…
cayossarian Feb 17, 2026
47b910e
Phase 2a: extend SpanPanelSnapshot with Gen2 panel and hardware statu…
cayossarian Feb 17, 2026
e75eb52
fix(grpc): replace fixed IID offset with positional circuit pairing
cayossarian Feb 17, 2026
08b67e9
docs: add Developer Setup for Hardware Testing section
cayossarian Feb 17, 2026
3e854f3
docs: add v1.1.15 changelog entry for Gen3 gRPC support
cayossarian Feb 18, 2026
d8f918f
fix(grpc): use Trait 15 Breaker Groups for authoritative circuit mapping
Feb 18, 2026
0ebcb5a
Merge branch 'main' into dependabot/pip/markupsafe-3.0.3
cayossarian Feb 18, 2026
b65370e
Merge branch 'main' into fix/issue-89-network-error-handling
cayossarian Feb 18, 2026
1b28146
Merge pull request #93 from NickBorgers/fix/issue-89-network-error-ha…
cayossarian Feb 18, 2026
0389f6f
Merge remote-tracking branch 'origin/main' into grpc_addition
cayossarian Feb 18, 2026
b891fe9
Merge branch 'main' into dependabot/pip/markupsafe-3.0.3
cayossarian Feb 18, 2026
102fcf2
Merge pull request #99 from SpanPanel/dependabot/pip/markupsafe-3.0.3
cayossarian Feb 18, 2026
51d9c25
Merge remote-tracking branch 'origin/main' into grpc_addition
cayossarian Feb 18, 2026
6909b72
Bump cryptography from 45.0.5 to 46.0.5
dependabot[bot] Feb 18, 2026
3815ad7
Merge pull request #100 from SpanPanel/dependabot/pip/cryptography-46…
cayossarian Feb 18, 2026
cda7c56
Merge remote-tracking branch 'origin/main' into grpc_addition
cayossarian Feb 18, 2026
2e946dd
chore: regenerate poetry.lock
cayossarian Feb 18, 2026
df2d114
Merge branch 'grpc_addition' of github.com:SpanPanel/span-panel-api i…
cayossarian Feb 18, 2026
5f8277f
fix: use panel_resource_id as serial number fallback for Gen3
Feb 19, 2026
05141e3
fix: detect stale .deps-installed marker when venv is recreated
cayossarian Feb 19, 2026
8929af9
chore: update mypy and black target versions for Python 3.14
cayossarian Feb 19, 2026
7545475
refactor: reduce cyclomatic complexity in grpc/client.py
cayossarian Feb 19, 2026
e3db1b0
chore: regenerate poetry.lock for Python 3.14 compatibility
cayossarian Feb 19, 2026
ccf2a7e
ci: replace Python 3.12 with 3.14 to match HA minimum requirement
cayossarian Feb 19, 2026
dd14aae
ci: replace Python 3.12 with 3.14 to match HA minimum requirement
cayossarian Feb 19, 2026
e767157
Merge remote-tracking branch 'origin/main' into grpc_addition
cayossarian Feb 19, 2026
cb0ea43
docs: restructure README for Gen2/Gen3 dual-transport support
cayossarian Feb 20, 2026
9b979b5
update change log date
cayossarian Feb 20, 2026
706661f
Merge pull request #101 from SpanPanel/grpc_addition
cayossarian Feb 20, 2026
dc15eb0
chore(deps-dev): bump nodeenv from 1.9.1 to 1.10.0
dependabot[bot] Feb 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.12", "3.13"]
python-version: ["3.13", "3.14"]

steps:
- name: Checkout code
Expand Down Expand Up @@ -62,7 +62,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"
python-version: "3.14"

- name: Install Poetry
uses: snok/install-poetry@v1
Expand Down Expand Up @@ -96,7 +96,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"
python-version: "3.14"

- name: Install Poetry
uses: snok/install-poetry@v1
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/dependabot-auto-approve.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@v2.4.0
uses: dependabot/fetch-metadata@v2.5.0
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/dependabot-auto-merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@v2.4.0
uses: dependabot/fetch-metadata@v2.5.0
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"

Expand Down
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,21 @@ All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.1.15] - 2/19/2026

### Added

- **Gen3 gRPC transport** (`grpc/` subpackage): `SpanGrpcClient` connects to Gen3 panels (MAIN40 / MLO48) on port 50065 via manual protobuf encoding. Supports push-streaming via `Subscribe` RPC with registered callbacks. No authentication required. Thanks
to @Griswoldlabs for the Gen3 implementation (PR #169 in `SpanPanel/span`).
- **Protocol abstraction**: `SpanPanelClientProtocol` and capability-mixin protocols (`AuthCapableProtocol`, `CircuitControlProtocol`, `StreamingCapableProtocol`, etc.) provide static type-safe dispatch across transports.
- **`PanelCapability` flags**: Runtime advertisement of transport features. Gen2 advertises `GEN2_FULL`; Gen3 advertises `GEN3_INITIAL` (`PUSH_STREAMING` only).
- **Unified snapshot model**: `SpanPanelSnapshot` and `SpanCircuitSnapshot` are returned by `get_snapshot()` on both transports. Gen2- and Gen3-only fields are `None` where not applicable.
- **`create_span_client()` factory** (`factory.py`): Creates the appropriate client by generation or auto-detects by probing Gen2 HTTP then Gen3 gRPC.
- **Circuit IID mapping fix**: `_parse_instances()` now collects trait-16 and trait-26 IIDs independently, deduplicates and sorts both lists, and pairs them by position. A `_metric_iid_to_circuit` reverse map enables O(1) streaming lookup. Replaces the
hardcoded `METRIC_IID_OFFSET` assumption that failed on MLO48 panels.
- **gRPC exception classes**: `SpanPanelGrpcError`, `SpanPanelGrpcConnectionError`.
- **`grpcio` optional dependency**: Install with `span-panel-api[grpc]` for Gen3 support.

## [1.1.14] - 12/2025

### Fixed in v1.1.14
Expand Down
Loading
Loading