From 05a0658a3a31605fb7c1f652e9a5192b3af67e0b Mon Sep 17 00:00:00 2001 From: Nikolay Miroshnichenko Date: Tue, 8 Sep 2026 12:19:20 +0200 Subject: [PATCH] ux: gentle real-project feedback nudge where people actually run the tool MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- nickol_knx_mcp/report.py | 11 +++++++++++ nickol_knx_mcp/server.py | 7 ++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/nickol_knx_mcp/report.py b/nickol_knx_mcp/report.py index d351efb..aab80c1 100644 --- a/nickol_knx_mcp/report.py +++ b/nickol_knx_mcp/report.py @@ -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), diff --git a/nickol_knx_mcp/server.py b/nickol_knx_mcp/server.py index 644554b..d2a0fc6 100644 --- a/nickol_knx_mcp/server.py +++ b/nickol_knx_mcp/server.py @@ -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)."), }