mirror of
https://github.com/NickoScope/nickol-knx-mcp.git
synced 2026-09-29 19:31:12 +02:00
ux: gentle real-project feedback nudge where people actually run the tool
Cloners install and run the tool but rarely reread the README, so the existing 'call for testers' never reaches them. Two low-noise touchpoints instead: - project_report: a one-line footer linking the real-project test-report issue template (the report is the artefact a human reads after a real run); - load_project: a short 'feedback' field on the result — the first call every new user makes. Anonymised addresses explicitly welcome. No logic change; full suite green. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
467772618e
commit
05a0658a3a
@@ -18,6 +18,8 @@ from .generate_ha import generate_ha_yaml
|
||||
_SEV_ICON = {"error": "🔴", "warning": "🟡", "info": "🔵"}
|
||||
|
||||
|
||||
FEEDBACK_URL = "https://github.com/NickoScope/nickol-knx-mcp/issues/new?template=real_project_test.yml"
|
||||
|
||||
def _section(title: str, findings: list[dict[str, Any]]) -> str:
|
||||
if not findings:
|
||||
return f"### {title}\n\n_No issues found._\n"
|
||||
@@ -119,6 +121,15 @@ def build_report(project: LoadedProject,
|
||||
"4. Generate ETS CSV/XML and HA YAML, commit to Git, then import into ETS "
|
||||
"and deploy to Home Assistant.\n"
|
||||
)
|
||||
# A gentle, one-line nudge at the very end — the report is the artefact a
|
||||
# human actually reads after running the tool on a real project, so this is
|
||||
# where a field report is most likely to happen. Anonymised is fine.
|
||||
md.append(
|
||||
"\n---\n*Ran this on a real ETS project? Two lines in a "
|
||||
f"[real-project test report]({FEEDBACK_URL}) — what it got right, what it "
|
||||
"got wrong — are what make the next release better. Anonymised addresses "
|
||||
"are perfectly fine.*\n"
|
||||
)
|
||||
|
||||
summary = {
|
||||
"ga_count": len(gas),
|
||||
|
||||
@@ -21,7 +21,7 @@ from .analyze import (validate_naming, detect_missing_status, detect_dpt_issues,
|
||||
detect_topology_issues, secure_posture)
|
||||
from .generate_ha import generate_ha_yaml
|
||||
from .generate_ets import generate_ets_csv, generate_ets_xml
|
||||
from .report import build_report
|
||||
from .report import build_report, FEEDBACK_URL
|
||||
from .handover import build_handover
|
||||
from .device_library import decompose_device as _decompose_device, list_recipes
|
||||
from .appprog_parser import (parse_project as _parse_project,
|
||||
@@ -95,6 +95,11 @@ def load_project(path: str, password: Optional[str] = None,
|
||||
"devices": len(proj.devices),
|
||||
"functions": len(proj.functions),
|
||||
"ets_tool_version": proj.info.get("tool_version"),
|
||||
# The first call every new user makes — the one place a gentle nudge for a
|
||||
# real-project field report reaches exactly the people who ran it.
|
||||
"feedback": ("Ran this on a real ETS project? Two lines on what it got "
|
||||
"right/wrong help the next release: "
|
||||
f"{FEEDBACK_URL} (anonymised is fine)."),
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user