Skip to content

Commit 20d2c84

Browse files
author
Maksym Shtembuliak
committed
Release v0.3.0-beta.1
1 parent afba88b commit 20d2c84

407 files changed

Lines changed: 91518 additions & 11536 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/ISSUE_TEMPLATE/bug_report.yml‎

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ body:
2828
id: integration_version
2929
attributes:
3030
label: EyeBond Local version
31-
placeholder: 0.1.43
31+
placeholder: 0.2.0
3232
validations:
3333
required: true
3434
- type: input
@@ -83,3 +83,20 @@ body:
8383
label: Logs, screenshots, or additional context
8484
description: Paste relevant logs or screenshots. Redact secrets if needed.
8585
render: shell
86+
- type: dropdown
87+
id: discovery_source
88+
attributes:
89+
label: Where did you hear about EyeBond Local?
90+
description: Optional. Helps understand where the project is found.
91+
options:
92+
- Prefer not to say
93+
- Search engine (Google, etc.)
94+
- Home Assistant Community
95+
- Reddit
96+
- Telegram
97+
- YouTube
98+
- GitHub
99+
- Friend / installer
100+
- Other
101+
validations:
102+
required: false
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
name: Device Contribution
2+
description: Share a learned device so it can be added to the built-in catalog.
3+
title: "device: "
4+
labels:
5+
- device-contribution
6+
body:
7+
- type: markdown
8+
attributes:
9+
value: |
10+
Thanks for helping support more inverters! This is for devices that the
11+
integration identified as **partial** or **did not recognize**, where you
12+
ran **learning** to discover the sensors and controls.
13+
14+
Before submitting:
15+
16+
1. In the integration options, run **Add controls (device learning)** to discover
17+
the device's sensors and controls.
18+
2. Create a **Support Archive**: *Configure → Diagnostics and service tools →
19+
Create support archive*.
20+
3. Attach the downloaded Support Archive (a `.zip`) to this issue.
21+
22+
The archive carries the device fingerprint, register map, and label correlations,
23+
with **no** part number, serial number, IP, or account — those are stripped on your
24+
device before the file is written. A maintainer turns the archive into a catalog
25+
contribution.
26+
- type: checkboxes
27+
id: preflight
28+
attributes:
29+
label: Preflight
30+
options:
31+
- label: I ran device learning on this device.
32+
required: true
33+
- label: I will attach the Support Archive (.zip) to this issue.
34+
required: true
35+
- label: I searched existing issues first.
36+
required: true
37+
- type: input
38+
id: model
39+
attributes:
40+
label: Inverter model (as printed on the unit)
41+
placeholder: e.g. SMG II 4200 / Anenji ANJ-11KW-48V
42+
validations:
43+
required: true
44+
- type: input
45+
id: integration_version
46+
attributes:
47+
label: Integration version
48+
placeholder: 0.2.0
49+
validations:
50+
required: true
51+
- type: textarea
52+
id: notes
53+
attributes:
54+
label: Notes
55+
description: Anything unusual about the device, or sensors/controls you expected but did not get.
56+
validations:
57+
required: false

‎.github/ISSUE_TEMPLATE/support_archive.yml‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,20 @@ body:
8686
label: Extra context
8787
description: Include anything the archive does not capture well, such as screenshots, a known-good vendor app behavior, or a short reproduction note.
8888
placeholder: The vendor app shows values correctly; Home Assistant only gets collector metadata.
89+
- type: dropdown
90+
id: discovery_source
91+
attributes:
92+
label: Where did you hear about EyeBond Local?
93+
description: Optional. Helps understand where the project is found.
94+
options:
95+
- Prefer not to say
96+
- Search engine (Google, etc.)
97+
- Home Assistant Community
98+
- Reddit
99+
- Telegram
100+
- YouTube
101+
- GitHub
102+
- Friend / installer
103+
- Other
104+
validations:
105+
required: false

‎CHANGELOG.md‎

Lines changed: 394 additions & 12 deletions
Large diffs are not rendered by default.

‎CONTRIBUTING.md‎

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ Anything that can live in JSON (capabilities, conditions, presets, register layo
2626

2727
When deciding where new logic belongs, use this order:
2828

29-
1. **`profiles/`** (JSON) — capability groups, writable metadata, conditions, presets, support annotations.
30-
2. **`register_schemas/`** (JSON) — read-side layouts, fields, enums, bit labels, model overlays.
29+
1. **`protocol_catalogs/profiles/`** (JSON) — capability groups, writable metadata, conditions, presets, support annotations.
30+
2. **`protocol_catalogs/register_schemas/`** (JSON) — read-side layouts, fields, enums, bit labels, model overlays.
3131
3. **`payload/`** (Python) — family-level framing and parse helpers.
3232
4. **`drivers/`** (Python) — probe, read, write, and procedural derived logic only.
3333
5. **HA entities** — purely presentational. No protocol or register knowledge.
@@ -59,16 +59,18 @@ custom_components/eybond_local/
5959
├── runtime/ # coordinator, hub, transport orchestration
6060
├── payload/ # protocol framing and parsing
6161
├── drivers/ # probe + read + write orchestration
62-
├── profiles/ # capability metadata (JSON)
63-
├── register_schemas/ # register layouts (JSON)
64-
├── fixtures/ # offline replay helpers
62+
├── protocol_catalogs/
63+
│ ├── profiles/ # capability metadata (JSON)
64+
│ └── register_schemas/ # register layouts (JSON)
65+
├── fixtures/ # runtime fixture/replay helper package
6566
├── support/ # support exports and evidence indexes
6667
├── metadata/ # profile/schema loaders and local drafts
6768
└── *.py # entity platforms, config flow, services
6869
6970
docs/ # public docs and generated reports
71+
catalog/inverter_models/ # commercial model and sanitized source records
7072
tools/ # CLI utilities, validation scripts, and release helpers
71-
.local/ # maintainer-only local notes, fixtures, generated reports, and release scratch files (gitignored)
73+
.local/ # maintainer-only notes, fixtures, design history, generated reports, and release scratch files (gitignored)
7274
tests/ # unit and regression tests
7375
```
7476

@@ -90,11 +92,18 @@ To refresh generated documentation reports before running the quality gate:
9092
python3 tools/quality_gate.py --refresh-generated
9193
```
9294

95+
`pytest tests/` works too (`pytest.ini` disables the auto-plugins that
96+
conflict with the suite), and with `pytest-xdist` installed
97+
(`pip install pytest-xdist`) `pytest tests/ -n auto` runs it in parallel —
98+
that plugin is optional and not part of the base environment.
99+
93100
The quality gate checks profile validity, unit tests, and public generated-doc freshness. PRs should leave it green.
94101

95102
Fixture replay and fixture-derived reports are local-only workflows. Keep those artifacts under `.local/` and run them manually when you need debugging evidence.
96103

97-
A complete reference of CLI tools (probing, local fixtures, validation, doc generation) is in [tools/README.md](tools/README.md).
104+
A short reference for supported validation, catalog, release, and contribution
105+
tools is in [tools/README.md](tools/README.md). Low-level hardware probes and
106+
local fixture workflows are maintainer-only notes under `.local/`.
98107

99108
---
100109

@@ -107,7 +116,7 @@ These are the hard rules — don't cross them without discussion:
107116
- **Fixture-first over live debugging** when feasible — but keep those fixtures local unless you intentionally sanitize them for sharing.
108117
- **JSON-first over Python** for new family additions.
109118
- **Local fixtures and maintainer-only notes belong under `.local/`** and are not part of the public repository.
110-
- **`tools/` is public project tooling** used by CI, release validation, and generated-doc checks.
119+
- **`tools/` is supported project tooling** for CI, release validation, catalog validation, generated-doc checks, and sanitized contribution workflows.
111120
- **`.local/generated/`, `.local/release-notes/`, and raw research dumps** remain local-only artifacts and should stay out of git.
112121

113122
---

0 commit comments

Comments
 (0)