From 52f9be55f8734e6bc797d144f9eaa542644c75a4 Mon Sep 17 00:00:00 2001 From: Sidon Kodraliu Date: Fri, 10 Jul 2026 11:38:49 +0200 Subject: [PATCH 1/9] Route compatibility reports to Discussions; add issue forms + triage --- .github/ISSUE_TEMPLATE/bug.yml | 68 +++++++++++++++++++++++++ .github/ISSUE_TEMPLATE/config.yml | 8 +++ .github/ISSUE_TEMPLATE/feature.yml | 28 ++++++++++ .github/workflows/triage-non-issues.yml | 65 +++++++++++++++++++++++ COMPATIBILITY.md | 23 +++++++++ CONTRIBUTING.md | 22 ++++++++ 6 files changed, 214 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature.yml create mode 100644 .github/workflows/triage-non-issues.yml create mode 100644 COMPATIBILITY.md create mode 100644 CONTRIBUTING.md diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml new file mode 100644 index 0000000..bf38848 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -0,0 +1,68 @@ +name: Bug report +description: Report a defect in the Roborock Local Server stack +labels: ["bug"] +body: + - type: markdown + attributes: + value: >- + Thanks for taking the time to file a bug! If instead you just want to + confirm the server works (or does not work) on your device, please use + the [Compatibility Discussions + category](https://github.com/DonSidro/local_roborock_server/discussions/categories/compatibility) + rather than opening an issue. + + - type: checkboxes + id: confirm-defect + attributes: + label: This is a defect + options: + - label: I have confirmed this is a defect, not a report that the project works on my device. + required: true + + - type: textarea + id: what-happened + attributes: + label: What happened? + description: Describe the problem, including what you expected to happen instead. + placeholder: Onboarding fails after DNS and server checks pass... + validations: + required: true + + - type: textarea + id: reproduce + attributes: + label: Steps to reproduce + description: What did you do, in what order? + placeholder: | + 1. ... + 2. ... + 3. ... + validations: + required: true + + - type: input + id: vacuum + attributes: + label: Vacuum model + description: Which Roborock model are you running against? + placeholder: Roborock S8 MaxV Ultra + validations: + required: false + + - type: input + id: version + attributes: + label: Server / image version + description: Which version or image tag are you running? + placeholder: ghcr.io/python-roborock/local_roborock_server:v1.0.2 + validations: + required: false + + - type: textarea + id: logs + attributes: + label: Relevant logs + description: Paste any relevant log output. This will be automatically formatted, no backticks needed. + render: shell + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..a3079fc --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: false +contact_links: + - name: ๐Ÿงน Device compatibility report + url: https://github.com/DonSidro/local_roborock_server/discussions/categories/compatibility + about: >- + Confirming the server works (or does not work) on your vacuum? That goes in + the Compatibility Discussions category, not in Issues. Please share your + model, firmware, and which certificate chain you used so others can benefit. diff --git a/.github/ISSUE_TEMPLATE/feature.yml b/.github/ISSUE_TEMPLATE/feature.yml new file mode 100644 index 0000000..c913d4c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature.yml @@ -0,0 +1,28 @@ +name: Feature request +description: Suggest an idea or improvement for the project +labels: ["enhancement"] +body: + - type: textarea + id: problem + attributes: + label: What problem would this solve? + description: Describe the use case or the pain point behind the request. + placeholder: It would be great if... + validations: + required: true + + - type: textarea + id: proposal + attributes: + label: Proposed solution + description: How would you like this to work? + validations: + required: false + + - type: textarea + id: alternatives + attributes: + label: Alternatives considered + description: Any other approaches you have thought about. + validations: + required: false diff --git a/.github/workflows/triage-non-issues.yml b/.github/workflows/triage-non-issues.yml new file mode 100644 index 0000000..da0f77a --- /dev/null +++ b/.github/workflows/triage-non-issues.yml @@ -0,0 +1,65 @@ +name: Triage non-issues + +on: + issues: + types: [opened] + +permissions: + issues: write + +jobs: + triage: + runs-on: ubuntu-latest + steps: + - name: Label and nudge likely compatibility reports + uses: actions/github-script@v7 + with: + script: | + const issue = context.payload.issue; + const body = (issue.body || "").trim(); + const title = (issue.title || "").trim(); + + // Always mark new issues for a human to look at. + await github.rest.issues.addLabels({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: issue.number, + labels: ["needs-triage"], + }); + + // Heuristics for "it works on my device" style reports. + const phrases = [ + "works on my", + "works fine", + "just confirming", + "confirming it works", + "can confirm", + "working on my", + ]; + const haystack = (title + "\n" + body).toLowerCase(); + const matchesPhrase = phrases.some((p) => haystack.includes(p)); + const isShort = body.length < 200; + + if (!matchesPhrase && !isShort) { + return; + } + + const discussions = + "https://github.com/DonSidro/local_roborock_server/discussions/categories/compatibility"; + const comment = [ + "Thanks for the report!", + "", + "This looks like it might be a **device-compatibility confirmation** rather than a bug.", + "If so, please share it in the [Compatibility Discussions category](" + discussions + ") โ€”", + "that keeps Issues focused on defects and makes your result easier for others to find.", + "Confirmed results can also be added to [COMPATIBILITY.md](../blob/main/COMPATIBILITY.md) via a quick PR.", + "", + "If this really is a bug, no worries โ€” a maintainer will take a look. This issue stays open either way.", + ].join("\n"); + + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: issue.number, + body: comment, + }); diff --git a/COMPATIBILITY.md b/COMPATIBILITY.md new file mode 100644 index 0000000..1a5dbb0 --- /dev/null +++ b/COMPATIBILITY.md @@ -0,0 +1,23 @@ +# Compatibility + +A community-maintained record of devices people have run the Roborock Local Server against. +This is for confirmed, working (or not-working) results. If you just want to ask a question or +share a report to discuss, use the +[Compatibility Discussions category](https://github.com/DonSidro/local_roborock_server/discussions/categories/compatibility) +instead. + +For the certificate-chain compatibility matrix, see [Tested vacuums](docs/tested_vacuums.md). + +Legend for **Works?**: โœ… working ยท โŒ not working ยท โ“ partial / unconfirmed + +| Device | OS / Version | Project version | Works? | Notes | +|---|---|---|:---:|---| +| Roborock S8 MaxV Ultra | Firmware `02.52.32` | v1.0.2 | โœ… | ZeroSSL chain, Docker Compose install | +| Roborock S5 Max | Firmware not reported | v1.0.2 | โŒ | Rejects ZeroSSL; onboards fine with the Actalis chain | + +## Adding your device + +Got a confirmed result? Open a pull request adding a row to the table above. Keep the columns in +order and use the legend symbols for the **Works?** column. If you are not sure yet, start a thread +in the [Compatibility Discussions category](https://github.com/DonSidro/local_roborock_server/discussions/categories/compatibility) +first and we can promote confirmed results here. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..6110029 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,22 @@ +# Contributing + +If you would like to contribute there are a few ways that would be great! + +1. Code is always welcome that you have fully tested. +2. Video walkthroughs of how to actually set this up would be great. +3. Documentation. Human-written documentation always 'feels' better than what AI produces. + +## Where does my report go? + +To keep Issues focused and actionable, there are three destinations depending on what you have: + +- **Found a bug?** โ†’ Open an [Issue](https://github.com/DonSidro/local_roborock_server/issues/new/choose). + Use the bug report form and confirm it is a real defect, not a "works on my device" note. +- **Confirming (or ruling out) that the server runs on your vacuum?** โ†’ Post in the + [Compatibility Discussions category](https://github.com/DonSidro/local_roborock_server/discussions/categories/compatibility). + Please include your model, firmware, and which certificate chain you used. These reports do **not** + belong in Issues. +- **Have a confirmed, reproducible result to record?** โ†’ Open a pull request adding a row to + [COMPATIBILITY.md](COMPATIBILITY.md) so the next person can find it quickly. + +Feature ideas are welcome as Issues too โ€” use the feature request form. From aecefa6d9353d7a53d0ce90af83d072f84754fd1 Mon Sep 17 00:00:00 2001 From: Sidon Kodraliu Date: Fri, 10 Jul 2026 11:42:23 +0200 Subject: [PATCH 2/9] Route compatibility reports to Discussions; add issue forms + triage --- .github/ISSUE_TEMPLATE/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index a3079fc..f5484c5 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,6 +1,6 @@ blank_issues_enabled: false contact_links: - - name: ๐Ÿงน Device compatibility report + - name: Device compatibility report url: https://github.com/DonSidro/local_roborock_server/discussions/categories/compatibility about: >- Confirming the server works (or does not work) on your vacuum? That goes in From 9bc40407e295f26b455b3779a1f1c5c21f117fb7 Mon Sep 17 00:00:00 2001 From: Sidon Kodraliu Date: Fri, 10 Jul 2026 11:46:39 +0200 Subject: [PATCH 3/9] wording fixups --- .github/ISSUE_TEMPLATE/bug.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index bf38848..762de31 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -14,17 +14,17 @@ body: - type: checkboxes id: confirm-defect attributes: - label: This is a defect + label: This is a real issue? options: - - label: I have confirmed this is a defect, not a report that the project works on my device. + - label: I have confirmed this is a issue, not a report that the project works on my device. required: true - type: textarea id: what-happened attributes: label: What happened? - description: Describe the problem, including what you expected to happen instead. - placeholder: Onboarding fails after DNS and server checks pass... + description: Describe the issue/problem, including what you expected to happen instead. + placeholder: Onboarding fails after devices says connection to wifi... validations: required: true @@ -44,7 +44,7 @@ body: id: vacuum attributes: label: Vacuum model - description: Which Roborock model are you running against? + description: Which Roborock model are you trying on? placeholder: Roborock S8 MaxV Ultra validations: required: false From 01aa077ed1df898d8e4cbaa20e06b093c1f25ea0 Mon Sep 17 00:00:00 2001 From: Sidon Kodraliu Date: Fri, 10 Jul 2026 11:51:49 +0200 Subject: [PATCH 4/9] wording fixups --- .github/ISSUE_TEMPLATE/bug.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index 762de31..ec2dcd8 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -1,18 +1,18 @@ -name: Bug report -description: Report a defect in the Roborock Local Server stack -labels: ["bug"] +name: Bug/Issue report +description: Report a issue related to the Roborock Local Server stack +labels: ["bug/issue"] body: - type: markdown attributes: value: >- - Thanks for taking the time to file a bug! If instead you just want to - confirm the server works (or does not work) on your device, please use + Thanks for taking the time to file a bug/issue! If instead you just want to + confirm the server/onboarding works (or does not work) on your device, please use the [Compatibility Discussions category](https://github.com/DonSidro/local_roborock_server/discussions/categories/compatibility) rather than opening an issue. - type: checkboxes - id: confirm-defect + id: confirm-issue attributes: label: This is a real issue? options: From 4d1793d2a807b4d5e9a36521a887420ab0ce63c2 Mon Sep 17 00:00:00 2001 From: Sidon Kodraliu Date: Fri, 10 Jul 2026 11:55:29 +0200 Subject: [PATCH 5/9] wording fixups --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6110029..6dd2311 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,7 +11,7 @@ If you would like to contribute there are a few ways that would be great! To keep Issues focused and actionable, there are three destinations depending on what you have: - **Found a bug?** โ†’ Open an [Issue](https://github.com/DonSidro/local_roborock_server/issues/new/choose). - Use the bug report form and confirm it is a real defect, not a "works on my device" note. + Use the bug report form and confirm it is a real issue, not a "works on my device" note. - **Confirming (or ruling out) that the server runs on your vacuum?** โ†’ Post in the [Compatibility Discussions category](https://github.com/DonSidro/local_roborock_server/discussions/categories/compatibility). Please include your model, firmware, and which certificate chain you used. These reports do **not** From a583dfc049971fec8d837c24add06f7fb5520372 Mon Sep 17 00:00:00 2001 From: Sidon Kodraliu Date: Fri, 10 Jul 2026 11:58:15 +0200 Subject: [PATCH 6/9] pointing to the Tested Vacuums instead --- COMPATIBILITY.md | 23 ----------------------- CONTRIBUTING.md | 2 +- 2 files changed, 1 insertion(+), 24 deletions(-) delete mode 100644 COMPATIBILITY.md diff --git a/COMPATIBILITY.md b/COMPATIBILITY.md deleted file mode 100644 index 1a5dbb0..0000000 --- a/COMPATIBILITY.md +++ /dev/null @@ -1,23 +0,0 @@ -# Compatibility - -A community-maintained record of devices people have run the Roborock Local Server against. -This is for confirmed, working (or not-working) results. If you just want to ask a question or -share a report to discuss, use the -[Compatibility Discussions category](https://github.com/DonSidro/local_roborock_server/discussions/categories/compatibility) -instead. - -For the certificate-chain compatibility matrix, see [Tested vacuums](docs/tested_vacuums.md). - -Legend for **Works?**: โœ… working ยท โŒ not working ยท โ“ partial / unconfirmed - -| Device | OS / Version | Project version | Works? | Notes | -|---|---|---|:---:|---| -| Roborock S8 MaxV Ultra | Firmware `02.52.32` | v1.0.2 | โœ… | ZeroSSL chain, Docker Compose install | -| Roborock S5 Max | Firmware not reported | v1.0.2 | โŒ | Rejects ZeroSSL; onboards fine with the Actalis chain | - -## Adding your device - -Got a confirmed result? Open a pull request adding a row to the table above. Keep the columns in -order and use the legend symbols for the **Works?** column. If you are not sure yet, start a thread -in the [Compatibility Discussions category](https://github.com/DonSidro/local_roborock_server/discussions/categories/compatibility) -first and we can promote confirmed results here. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6dd2311..a6c8720 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,6 +17,6 @@ To keep Issues focused and actionable, there are three destinations depending on Please include your model, firmware, and which certificate chain you used. These reports do **not** belong in Issues. - **Have a confirmed, reproducible result to record?** โ†’ Open a pull request adding a row to - [COMPATIBILITY.md](COMPATIBILITY.md) so the next person can find it quickly. + [Tested Vacuums.md](tested_vacuums.md) so the next person can find it quickly. Feature ideas are welcome as Issues too โ€” use the feature request form. From 4b2e90cfc6d0bf82971431e62fb7e1a7149b5adb Mon Sep 17 00:00:00 2001 From: Sidon Kodraliu Date: Fri, 10 Jul 2026 11:59:17 +0200 Subject: [PATCH 7/9] pointing to the Tested Vacuums instead --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a6c8720..7a350e7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,6 +17,6 @@ To keep Issues focused and actionable, there are three destinations depending on Please include your model, firmware, and which certificate chain you used. These reports do **not** belong in Issues. - **Have a confirmed, reproducible result to record?** โ†’ Open a pull request adding a row to - [Tested Vacuums.md](tested_vacuums.md) so the next person can find it quickly. + [Tested Vacuums.md](/docs/tested_vacuums.md) so the next person can find it quickly. Feature ideas are welcome as Issues too โ€” use the feature request form. From 3a69f9f06544594ee3e016500c50b86769d8b2a8 Mon Sep 17 00:00:00 2001 From: Sidon Kodraliu Date: Fri, 10 Jul 2026 22:47:01 +0200 Subject: [PATCH 8/9] pointed to upstream repo --- .github/ISSUE_TEMPLATE/bug.yml | 2 +- .github/ISSUE_TEMPLATE/config.yml | 2 +- .github/workflows/triage-non-issues.yml | 4 ++-- CONTRIBUTING.md | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index ec2dcd8..3440309 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -8,7 +8,7 @@ body: Thanks for taking the time to file a bug/issue! If instead you just want to confirm the server/onboarding works (or does not work) on your device, please use the [Compatibility Discussions - category](https://github.com/DonSidro/local_roborock_server/discussions/categories/compatibility) + category](https://github.com/Python-roborock/local_roborock_server/discussions/categories/compatibility) rather than opening an issue. - type: checkboxes diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index f5484c5..f6f5e90 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,7 +1,7 @@ blank_issues_enabled: false contact_links: - name: Device compatibility report - url: https://github.com/DonSidro/local_roborock_server/discussions/categories/compatibility + url: https://github.com/Python-roborock/local_roborock_server/discussions/categories/compatibility about: >- Confirming the server works (or does not work) on your vacuum? That goes in the Compatibility Discussions category, not in Issues. Please share your diff --git a/.github/workflows/triage-non-issues.yml b/.github/workflows/triage-non-issues.yml index da0f77a..96fbb50 100644 --- a/.github/workflows/triage-non-issues.yml +++ b/.github/workflows/triage-non-issues.yml @@ -45,14 +45,14 @@ jobs: } const discussions = - "https://github.com/DonSidro/local_roborock_server/discussions/categories/compatibility"; + "https://github.com/Python-roborock/local_roborock_server/discussions/categories/compatibility"; const comment = [ "Thanks for the report!", "", "This looks like it might be a **device-compatibility confirmation** rather than a bug.", "If so, please share it in the [Compatibility Discussions category](" + discussions + ") โ€”", "that keeps Issues focused on defects and makes your result easier for others to find.", - "Confirmed results can also be added to [COMPATIBILITY.md](../blob/main/COMPATIBILITY.md) via a quick PR.", + "Confirmed results can also be added to [tested_vacuums.md](../blob/main/docs/tested_vacuums.md) via a quick PR.", "", "If this really is a bug, no worries โ€” a maintainer will take a look. This issue stays open either way.", ].join("\n"); diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7a350e7..d1e7f78 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,10 +10,10 @@ If you would like to contribute there are a few ways that would be great! To keep Issues focused and actionable, there are three destinations depending on what you have: -- **Found a bug?** โ†’ Open an [Issue](https://github.com/DonSidro/local_roborock_server/issues/new/choose). +- **Found a bug?** โ†’ Open an [Issue](https://github.com/Python-roborock/local_roborock_server/issues/new/choose). Use the bug report form and confirm it is a real issue, not a "works on my device" note. - **Confirming (or ruling out) that the server runs on your vacuum?** โ†’ Post in the - [Compatibility Discussions category](https://github.com/DonSidro/local_roborock_server/discussions/categories/compatibility). + [Compatibility Discussions category](https://github.com/Python-roborock/local_roborock_server/discussions/categories/compatibility). Please include your model, firmware, and which certificate chain you used. These reports do **not** belong in Issues. - **Have a confirmed, reproducible result to record?** โ†’ Open a pull request adding a row to From 6e60f1082c309eb976822372229aad351f6360eb Mon Sep 17 00:00:00 2001 From: Sidon Kodraliu Date: Fri, 10 Jul 2026 23:01:07 +0200 Subject: [PATCH 9/9] removed workflow for now, needs fine-tuning --- .github/workflows/triage-non-issues.yml | 65 ------------------------- 1 file changed, 65 deletions(-) delete mode 100644 .github/workflows/triage-non-issues.yml diff --git a/.github/workflows/triage-non-issues.yml b/.github/workflows/triage-non-issues.yml deleted file mode 100644 index 96fbb50..0000000 --- a/.github/workflows/triage-non-issues.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: Triage non-issues - -on: - issues: - types: [opened] - -permissions: - issues: write - -jobs: - triage: - runs-on: ubuntu-latest - steps: - - name: Label and nudge likely compatibility reports - uses: actions/github-script@v7 - with: - script: | - const issue = context.payload.issue; - const body = (issue.body || "").trim(); - const title = (issue.title || "").trim(); - - // Always mark new issues for a human to look at. - await github.rest.issues.addLabels({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: issue.number, - labels: ["needs-triage"], - }); - - // Heuristics for "it works on my device" style reports. - const phrases = [ - "works on my", - "works fine", - "just confirming", - "confirming it works", - "can confirm", - "working on my", - ]; - const haystack = (title + "\n" + body).toLowerCase(); - const matchesPhrase = phrases.some((p) => haystack.includes(p)); - const isShort = body.length < 200; - - if (!matchesPhrase && !isShort) { - return; - } - - const discussions = - "https://github.com/Python-roborock/local_roborock_server/discussions/categories/compatibility"; - const comment = [ - "Thanks for the report!", - "", - "This looks like it might be a **device-compatibility confirmation** rather than a bug.", - "If so, please share it in the [Compatibility Discussions category](" + discussions + ") โ€”", - "that keeps Issues focused on defects and makes your result easier for others to find.", - "Confirmed results can also be added to [tested_vacuums.md](../blob/main/docs/tested_vacuums.md) via a quick PR.", - "", - "If this really is a bug, no worries โ€” a maintainer will take a look. This issue stays open either way.", - ].join("\n"); - - await github.rest.issues.createComment({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: issue.number, - body: comment, - });