mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-08-18 00:26:29 +00:00
docs(github): refresh issue/PR templates and CONTRIBUTING for the AfterTouch toolkit (refs #478)
The templates were written during the Go-library era and no longer match the project: they asked reporters (mostly speaker owners) for Go versions, library versions, pkg/client pickers, and minimal repro code, while pointing at dead doc links. #478 reported one of those dead links (the troubleshooting guide). Issue templates: - Fix the dead troubleshooting + API-cookbook links (now the published docs site). - Delete the legacy .md duplicates of bug_report/feature_request/device_compatibility (GitHub was showing them alongside the .yml forms). - Rewrite bug_report.yml and feature_request.yml around how people actually run AfterTouch (service/CLI/player/backup); make them short and easy to file, with the encrypted diagnostic export as the headline ask. - Add device_compatibility.yml (slim) and a config.yml chooser that links Discussions, the Survival Guide, and the Troubleshooting Guide. Blank issues stay enabled. Diagnostic-export transparency: instead of claiming the report "contains no readable secrets", state honestly that the raw datastore XML (e.g. Sources.xml) is included as-is and can carry access tokens for linked services (Spotify/Amazon), that there is no datastore-redaction setting, and that users can unlink first or send privately. Point at the same support email the Health tab shows (aftertouch-support@gesellix.net) and note GitHub blocks .age uploads (rename to .age.txt or zip). PR template: cut the library-era ceremony down to summary/issue/type/testing/ checklist, add an "AI-assisted contributions" note (agent code welcome, unreviewed slop rejected), a no-personal-data reminder, and an MIT + Code of Conduct footer. CONTRIBUTING.md: reframe from "Bose SoundTouch API Client / Go library" to the AfterTouch toolkit; fix build paths (./build/) and make targets; drop broken references; point at CLAUDE.md; add the AI stance and the no-personal-data rule. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
2dada5a61a
commit
ae67e1e8ad
@@ -1,77 +0,0 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: 'bug'
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Environment (please complete the following information):**
|
||||
- OS: [e.g. macOS 14.0, Windows 11, Ubuntu 22.04]
|
||||
- Go version: [e.g. 1.25.5]
|
||||
- Library version: [e.g. v1.0.0, commit hash if using main branch]
|
||||
- SoundTouch device model: [e.g. SoundTouch 10, SoundTouch 20]
|
||||
- Device firmware version: [if known]
|
||||
|
||||
**Command/Code that failed**
|
||||
```bash
|
||||
# If using CLI tool, provide the exact command
|
||||
soundtouch-cli --host 192.0.2.100 info get
|
||||
|
||||
# If using Go library, provide minimal code example
|
||||
```
|
||||
|
||||
**Error output**
|
||||
```
|
||||
Paste the complete error message here, including stack traces if available
|
||||
```
|
||||
|
||||
**Device Information (if applicable)**
|
||||
```xml
|
||||
<!-- If the issue is device-specific, include output from: -->
|
||||
<!-- soundtouch-cli --host YOUR_DEVICE_IP info get -->
|
||||
```
|
||||
|
||||
**Network Configuration**
|
||||
- Network setup: [e.g. home WiFi, corporate network, VPN]
|
||||
- Firewall/proxy: [any network restrictions]
|
||||
- Device connectivity: [how device connects to network - WiFi, Ethernet]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here. For example:
|
||||
- Does this happen consistently or intermittently?
|
||||
- Did this work in a previous version?
|
||||
- Are there any workarounds?
|
||||
- Any relevant log files or debug output
|
||||
|
||||
**Logs (if applicable)**
|
||||
```
|
||||
# Enable verbose logging with --verbose flag or debug environment variable
|
||||
# and paste relevant log output here
|
||||
```
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
---
|
||||
|
||||
**Checklist**
|
||||
- [ ] I have searched existing issues to avoid duplicates
|
||||
- [ ] I have tested with the latest version
|
||||
- [ ] I have included all relevant environment information
|
||||
- [ ] I have provided a minimal reproduction case
|
||||
- [ ] I have included complete error messages
|
||||
@@ -1,201 +1,118 @@
|
||||
name: Bug Report
|
||||
description: File a bug report to help us improve the library
|
||||
description: Something in AfterTouch isn't working the way it should
|
||||
title: "[Bug]: "
|
||||
labels: ["bug", "triage"]
|
||||
assignees: []
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for taking the time to fill out this bug report! Please provide as much detail as possible to help us diagnose and fix the issue.
|
||||
Thanks for helping improve **AfterTouch**! 🙏
|
||||
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
label: Library Version
|
||||
description: What version of the library are you using?
|
||||
placeholder: "v1.0.0"
|
||||
validations:
|
||||
required: true
|
||||
AfterTouch is a community-built toolkit that keeps Bose SoundTouch speakers
|
||||
working after the Bose cloud shutdown. We both give and ask for support here,
|
||||
so don't worry about getting every field perfect.
|
||||
|
||||
- type: dropdown
|
||||
id: go-version
|
||||
attributes:
|
||||
label: Go Version
|
||||
description: What version of Go are you using?
|
||||
options:
|
||||
- "1.25.5+"
|
||||
- "1.25"
|
||||
- "1.24"
|
||||
- "1.23"
|
||||
- "Other (please specify in description)"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
id: operating-system
|
||||
attributes:
|
||||
label: Operating System
|
||||
description: What operating system are you running on?
|
||||
options:
|
||||
- "Linux"
|
||||
- "macOS"
|
||||
- "Windows"
|
||||
- "FreeBSD"
|
||||
- "Other (please specify in description)"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: device-model
|
||||
attributes:
|
||||
label: Bose Device Model
|
||||
description: What Bose SoundTouch device are you trying to control?
|
||||
placeholder: "SoundTouch 10, SoundTouch 20, etc."
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: device-firmware
|
||||
attributes:
|
||||
label: Device Firmware Version
|
||||
description: What firmware version is your device running? (Check in Bose app or via /info endpoint)
|
||||
placeholder: "4.8.1.4567.891234567"
|
||||
A quick look at the
|
||||
[Troubleshooting Guide](https://gesellix.github.io/Bose-SoundTouch/docs/guides/TROUBLESHOOTING/)
|
||||
often saves time. For "how do I...?" questions, please use
|
||||
[Discussions](https://github.com/gesellix/Bose-SoundTouch/discussions) instead.
|
||||
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Bug Description
|
||||
description: A clear and concise description of what the bug is.
|
||||
placeholder: "Describe what happened and what you expected to happen..."
|
||||
label: What happened?
|
||||
description: What went wrong, and what did you expect to happen instead?
|
||||
placeholder: "When I play a radio station from the player UI, the speaker shows an orange light and nothing plays. I expected it to start playing."
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: reproduction-steps
|
||||
id: steps
|
||||
attributes:
|
||||
label: Steps to Reproduce
|
||||
description: Steps to reproduce the behavior
|
||||
label: Steps to reproduce
|
||||
description: How can we trigger it? Rough steps are fine.
|
||||
placeholder: |
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
1. Open the player UI
|
||||
2. Search for a station
|
||||
3. Press play
|
||||
4. ...
|
||||
validations:
|
||||
required: true
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: expected-behavior
|
||||
id: diagnostic
|
||||
attributes:
|
||||
label: Expected Behavior
|
||||
description: A clear and concise description of what you expected to happen.
|
||||
placeholder: "What should have happened instead?"
|
||||
label: Diagnostic report (the most helpful thing you can attach)
|
||||
description: |
|
||||
In the AfterTouch **admin UI**, open the **Health tab** and click
|
||||
**Download diagnostic report**. It is by far the best way to help us
|
||||
diagnose a bug. GitHub blocks `.age` uploads, so rename the file to
|
||||
`.age.txt` (or zip it) before dragging it into this box. You can also email
|
||||
it instead: aftertouch-support@gesellix.net.
|
||||
|
||||
The file is **encrypted** to the maintainer's key, so only the maintainer
|
||||
can open it. The structured summary has credentials redacted, but the raw
|
||||
datastore files (for example `Sources.xml`) are included as-is and can
|
||||
contain the access tokens your speaker uses for linked services like
|
||||
Spotify or Amazon. If that is a concern, unlink those services before
|
||||
exporting, or email the report privately instead.
|
||||
placeholder: "Attach the aftertouch-diagnostic-*.age.txt (or .zip) file here."
|
||||
validations:
|
||||
required: true
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: code-sample
|
||||
- type: input
|
||||
id: device
|
||||
attributes:
|
||||
label: Code Sample
|
||||
description: Please provide a minimal code sample that reproduces the issue
|
||||
render: go
|
||||
placeholder: |
|
||||
package main
|
||||
label: Speaker model & firmware
|
||||
description: Which speaker, and (if you know it) the firmware version.
|
||||
placeholder: "SoundTouch 10, firmware 27.0.6"
|
||||
validations:
|
||||
required: false
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/gesellix/bose-soundtouch/pkg/client"
|
||||
)
|
||||
- type: dropdown
|
||||
id: how-run
|
||||
attributes:
|
||||
label: How are you running AfterTouch?
|
||||
options:
|
||||
- "Docker / docker compose"
|
||||
- "Prebuilt binary"
|
||||
- "Built from source"
|
||||
- "Not sure"
|
||||
validations:
|
||||
required: false
|
||||
|
||||
func main() {
|
||||
// Your code that demonstrates the issue
|
||||
}
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
label: AfterTouch version
|
||||
description: Shown in the admin UI footer, or via the binary's `--version`.
|
||||
placeholder: "v0.111.2"
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Error Messages / Logs
|
||||
description: Please include any relevant error messages, stack traces, or log output
|
||||
label: Logs / error messages
|
||||
description: Any relevant output from the service, CLI, or browser console. Please mask real LAN IPs if you can.
|
||||
render: shell
|
||||
placeholder: |
|
||||
Error: connection refused
|
||||
at github.com/gesellix/bose-soundtouch/pkg/client.(*Client).makeRequest
|
||||
...
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: dropdown
|
||||
id: component
|
||||
attributes:
|
||||
label: Component
|
||||
description: Which component is affected?
|
||||
multiple: true
|
||||
options:
|
||||
- "Client Library (pkg/client)"
|
||||
- "WebSocket Events"
|
||||
- "Device Discovery"
|
||||
- "CLI Tool"
|
||||
- "Models/XML Parsing"
|
||||
- "Documentation"
|
||||
- "Examples"
|
||||
- "Build/Release"
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: dropdown
|
||||
id: severity
|
||||
attributes:
|
||||
label: Severity
|
||||
description: How severe is this bug?
|
||||
options:
|
||||
- "Low - Minor inconvenience"
|
||||
- "Medium - Affects functionality but workaround exists"
|
||||
- "High - Blocks major functionality"
|
||||
- "Critical - Application crashes or data loss"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: network-info
|
||||
attributes:
|
||||
label: Network Configuration
|
||||
description: Details about your network setup (if relevant to the issue)
|
||||
placeholder: |
|
||||
- Device IP: 192.0.2.100
|
||||
- Network type: WiFi/Ethernet
|
||||
- Router model:
|
||||
- Any firewalls or network restrictions:
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: additional-context
|
||||
attributes:
|
||||
label: Additional Context
|
||||
description: Add any other context about the problem here
|
||||
placeholder: "Screenshots, network traces, related issues, etc."
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: checkboxes
|
||||
id: troubleshooting
|
||||
id: checklist
|
||||
attributes:
|
||||
label: Troubleshooting Steps
|
||||
description: Have you tried these troubleshooting steps?
|
||||
label: Before you submit
|
||||
options:
|
||||
- label: "I have checked the [Troubleshooting Guide](docs/TROUBLESHOOTING.md)"
|
||||
- label: "I have verified my device is reachable (ping test)"
|
||||
- label: "I have tested with the CLI tool"
|
||||
- label: "I have checked for similar existing issues"
|
||||
- label: "I am using the latest version of the library"
|
||||
- label: "I checked the [Troubleshooting Guide](https://gesellix.github.io/Bose-SoundTouch/docs/guides/TROUBLESHOOTING/)"
|
||||
- label: "I searched [existing issues](https://github.com/gesellix/Bose-SoundTouch/issues) for a duplicate"
|
||||
- label: "I'm on a recent AfterTouch version"
|
||||
|
||||
- type: checkboxes
|
||||
id: terms
|
||||
id: coc
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: By submitting this issue, you agree to follow our Code of Conduct
|
||||
description: This project follows a [Code of Conduct](https://github.com/gesellix/Bose-SoundTouch/blob/main/CODE_OF_CONDUCT.md).
|
||||
options:
|
||||
- label: "I agree to follow this project's Code of Conduct"
|
||||
required: true
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# Free-form blank issues stay enabled for anything that doesn't fit a template.
|
||||
blank_issues_enabled: true
|
||||
contact_links:
|
||||
- name: 💬 Questions & Support (Discussions)
|
||||
url: https://github.com/gesellix/Bose-SoundTouch/discussions
|
||||
about: "\"How do I...?\", setup help, and general support. AfterTouch is a community effort: ask here, and help others when you can."
|
||||
- name: 🚑 Survival Guide
|
||||
url: https://gesellix.github.io/Bose-SoundTouch/docs/guides/SURVIVAL-GUIDE/
|
||||
about: "Getting your speakers working again after the Bose cloud shutdown. Start here."
|
||||
- name: 🔧 Troubleshooting Guide
|
||||
url: https://gesellix.github.io/Bose-SoundTouch/docs/guides/TROUBLESHOOTING/
|
||||
about: "Common problems and their fixes. Please check this before filing a bug."
|
||||
@@ -1,113 +0,0 @@
|
||||
---
|
||||
name: Device compatibility report
|
||||
about: Report compatibility with a new SoundTouch device model
|
||||
title: 'Device Compatibility: [Device Model]'
|
||||
labels: 'compatibility, documentation'
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Device Information**
|
||||
- **Model**: [e.g. SoundTouch 30, Wave SoundTouch IV, SoundTouch Portable]
|
||||
- **Model Number**: [e.g. 738102-2100, found on device label]
|
||||
- **Firmware Version**: [if known, from device settings or API response]
|
||||
- **Purchase Date**: [approximate, helps identify firmware generation]
|
||||
|
||||
**Testing Results**
|
||||
|
||||
### Basic Functionality
|
||||
- [ ] Device discovery (UPnP/mDNS)
|
||||
- [ ] Basic device info (`GET /info`)
|
||||
- [ ] Now playing status (`GET /now_playing`)
|
||||
- [ ] Media controls (play/pause/stop)
|
||||
- [ ] Volume control
|
||||
- [ ] Source listing (`GET /sources`)
|
||||
|
||||
### Advanced Features
|
||||
- [ ] Bass control (`GET/POST /bass`)
|
||||
- [ ] Balance control (`GET/POST /balance`) - if stereo device
|
||||
- [ ] Clock/time management (`GET/POST /clockTime`)
|
||||
- [ ] Network information (`GET /networkInfo`)
|
||||
- [ ] WebSocket events
|
||||
- [ ] Multiroom zones (master)
|
||||
- [ ] Multiroom zones (slave)
|
||||
|
||||
### Advanced Audio Controls (Professional/High-end Models)
|
||||
- [ ] DSP controls (`GET/POST /audiodspcontrols`)
|
||||
- [ ] Tone controls (`GET/POST /audioproducttonecontrols`)
|
||||
- [ ] Level controls (`GET/POST /audioproductlevelcontrols`)
|
||||
|
||||
### Known Issues
|
||||
List any features that don't work or behave unexpectedly:
|
||||
- Feature name: Description of issue
|
||||
- Command that fails: `soundtouch-cli command that doesn't work`
|
||||
|
||||
**Device Info Output**
|
||||
```xml
|
||||
<!-- Paste output from: soundtouch-cli --host YOUR_DEVICE_IP info get -->
|
||||
<!-- This helps us understand device capabilities and variants -->
|
||||
```
|
||||
|
||||
**Device Capabilities Output**
|
||||
```xml
|
||||
<!-- Paste output from: soundtouch-cli --host YOUR_DEVICE_IP capabilities -->
|
||||
<!-- This shows what features the device reports as available -->
|
||||
```
|
||||
|
||||
**Bass Capabilities (if supported)**
|
||||
```xml
|
||||
<!-- Paste output from: soundtouch-cli --host YOUR_DEVICE_IP bass capabilities -->
|
||||
<!-- Only if the device supports bass control -->
|
||||
```
|
||||
|
||||
**Available Sources**
|
||||
```xml
|
||||
<!-- Paste output from: soundtouch-cli --host YOUR_DEVICE_IP source list -->
|
||||
<!-- Shows what audio sources this device supports -->
|
||||
```
|
||||
|
||||
**Testing Commands Used**
|
||||
```bash
|
||||
# List the specific commands you used for testing
|
||||
soundtouch-cli --host 192.0.2.100 info get
|
||||
soundtouch-cli --host 192.0.2.100 play start
|
||||
# ... etc
|
||||
```
|
||||
|
||||
**Environment**
|
||||
- **OS**: [e.g. macOS 14.0, Windows 11, Ubuntu 22.04]
|
||||
- **Go version**: [e.g. 1.25.5]
|
||||
- **Library version**: [e.g. v1.0.0, commit hash]
|
||||
- **Network setup**: [home WiFi, corporate, etc.]
|
||||
|
||||
**Performance Notes**
|
||||
- Response times: [normal, slow, timeouts]
|
||||
- Specific timeouts: [any endpoints that timeout]
|
||||
- WebSocket stability: [connects reliably, frequent disconnects, etc.]
|
||||
|
||||
**Comparison with Tested Models**
|
||||
If you have experience with other SoundTouch models:
|
||||
- **Similar to**: [e.g. works like SoundTouch 20]
|
||||
- **Differences from**: [e.g. missing balance control compared to SoundTouch 30]
|
||||
|
||||
**Additional Notes**
|
||||
Any other observations about device behavior, quirks, or special considerations:
|
||||
- Does the device have unique features not seen in other models?
|
||||
- Are there any setup requirements or configuration notes?
|
||||
- Does it work differently in different network environments?
|
||||
|
||||
**Documentation Impact**
|
||||
- [ ] Update supported devices list
|
||||
- [ ] Add device-specific notes to documentation
|
||||
- [ ] Update compatibility matrix
|
||||
- [ ] Add to integration test suite
|
||||
|
||||
---
|
||||
|
||||
**Checklist**
|
||||
- [ ] I have tested basic functionality (info, play, volume)
|
||||
- [ ] I have tested advanced features available on this device
|
||||
- [ ] I have provided complete device information output
|
||||
- [ ] I have noted any issues or limitations
|
||||
- [ ] I have tested in a typical network environment
|
||||
- [ ] I understand this helps improve compatibility for all users
|
||||
@@ -0,0 +1,74 @@
|
||||
name: Device Compatibility Report
|
||||
description: Tell us how AfterTouch works (or doesn't) with your SoundTouch model
|
||||
title: "[Compatibility]: "
|
||||
labels: ["compatibility", "documentation"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for helping map out which speakers AfterTouch supports! 📋
|
||||
|
||||
Reports like yours help everyone with the same model, and feed our
|
||||
compatibility notes in the docs.
|
||||
|
||||
- type: input
|
||||
id: model
|
||||
attributes:
|
||||
label: Speaker model
|
||||
placeholder: "SoundTouch 20, Wave SoundTouch IV, SoundTouch Portable, ..."
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: firmware
|
||||
attributes:
|
||||
label: Firmware version
|
||||
description: From the admin UI, the Bose app, or the device's `/info`.
|
||||
placeholder: "27.0.6"
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: works
|
||||
attributes:
|
||||
label: What works?
|
||||
placeholder: |
|
||||
- Discovery
|
||||
- Playback and presets
|
||||
- Stereo pair / multiroom
|
||||
- Migration off the Bose cloud
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: broken
|
||||
attributes:
|
||||
label: What doesn't work?
|
||||
placeholder: "Anything that failed or behaved unexpectedly on this model."
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: diagnostic
|
||||
attributes:
|
||||
label: Diagnostic report
|
||||
description: |
|
||||
Optional, but very helpful. In the AfterTouch **admin UI**, open the
|
||||
**Health tab** and click **Download diagnostic report**. GitHub blocks
|
||||
`.age` uploads, so rename the file to `.age.txt` (or zip it) before
|
||||
attaching, or email it to aftertouch-support@gesellix.net. It is encrypted
|
||||
to the maintainer's key. The raw datastore files inside are included as-is,
|
||||
so if you have linked services like Spotify or Amazon, unlink them first or
|
||||
send the file privately.
|
||||
placeholder: "Attach the aftertouch-diagnostic-*.age.txt (or .zip) file here."
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: checkboxes
|
||||
id: coc
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: This project follows a [Code of Conduct](https://github.com/gesellix/Bose-SoundTouch/blob/main/CODE_OF_CONDUCT.md).
|
||||
options:
|
||||
- label: "I agree to follow this project's Code of Conduct"
|
||||
required: true
|
||||
@@ -1,77 +0,0 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: 'enhancement'
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Use case**
|
||||
Describe your specific use case and how this feature would benefit you and other users.
|
||||
|
||||
**SoundTouch API Support**
|
||||
- [ ] This feature is supported by the official SoundTouch API
|
||||
- [ ] This feature is NOT supported by the SoundTouch API (custom enhancement)
|
||||
- [ ] I'm not sure if this is supported by the SoundTouch API
|
||||
|
||||
**API Documentation Reference (if applicable)**
|
||||
If this feature is based on a SoundTouch API endpoint, please provide:
|
||||
- Endpoint URL: [e.g. GET /newendpoint]
|
||||
- Documentation reference: [page number or section in official API docs]
|
||||
- XML request/response examples: [if known]
|
||||
|
||||
**Implementation Details (optional)**
|
||||
If you have ideas about how this could be implemented:
|
||||
- Suggested package/module: [e.g. pkg/client, cmd/soundtouch-cli]
|
||||
- Method signatures: [if you have suggestions]
|
||||
- CLI commands: [if this affects the CLI tool]
|
||||
|
||||
**Device Compatibility**
|
||||
- SoundTouch models this applies to: [e.g. all models, SoundTouch 20+, specific models]
|
||||
- Have you tested this manually: [e.g. via curl, Postman, etc.]
|
||||
|
||||
**Examples**
|
||||
Provide examples of how you would like to use this feature:
|
||||
|
||||
```go
|
||||
// Go library example
|
||||
client.NewFeature(parameters)
|
||||
```
|
||||
|
||||
```bash
|
||||
# CLI example
|
||||
soundtouch-cli --host 192.0.2.100 new-feature --param value
|
||||
```
|
||||
|
||||
**Priority**
|
||||
- [ ] Critical - blocks important functionality
|
||||
- [ ] High - would significantly improve user experience
|
||||
- [ ] Medium - nice to have enhancement
|
||||
- [ ] Low - minor improvement
|
||||
|
||||
**Additional context**
|
||||
Add any other context, screenshots, or examples about the feature request here.
|
||||
|
||||
**Related Issues**
|
||||
- Related to #[issue number]
|
||||
- Depends on #[issue number]
|
||||
- Blocks #[issue number]
|
||||
|
||||
---
|
||||
|
||||
**Checklist**
|
||||
- [ ] I have searched existing issues to avoid duplicates
|
||||
- [ ] I have checked the documentation to ensure this feature doesn't already exist
|
||||
- [ ] I have provided a clear use case and rationale
|
||||
- [ ] I have considered the impact on existing functionality
|
||||
- [ ] I understand this may require SoundTouch API support to implement
|
||||
@@ -1,205 +1,74 @@
|
||||
name: Feature Request
|
||||
description: Suggest an idea or enhancement for this project
|
||||
description: Suggest an idea or improvement for AfterTouch
|
||||
title: "[Feature]: "
|
||||
labels: ["enhancement", "triage"]
|
||||
assignees: []
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for suggesting a new feature! Please provide as much detail as possible to help us understand your request and its potential impact.
|
||||
Thanks for the idea! 💡
|
||||
|
||||
- type: input
|
||||
id: version
|
||||
attributes:
|
||||
label: Library Version
|
||||
description: What version of the library are you currently using?
|
||||
placeholder: "v1.0.0"
|
||||
validations:
|
||||
required: true
|
||||
AfterTouch is a community-built toolkit for keeping Bose SoundTouch speakers
|
||||
alive. For open-ended "would it be possible...?" brainstorming,
|
||||
[Discussions](https://github.com/gesellix/Bose-SoundTouch/discussions) is often
|
||||
a better fit. Use this form when you have a concrete improvement in mind.
|
||||
|
||||
- type: textarea
|
||||
id: problem
|
||||
attributes:
|
||||
label: Problem Description
|
||||
description: Is your feature request related to a problem? Please describe what you're trying to accomplish.
|
||||
placeholder: "I'm always frustrated when... / I need to be able to... / Currently it's not possible to..."
|
||||
label: What problem would this solve?
|
||||
placeholder: "I can't ... / It's hard to ... / Currently there's no way to ..."
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: solution
|
||||
id: idea
|
||||
attributes:
|
||||
label: Proposed Solution
|
||||
description: Describe the solution you'd like to see implemented.
|
||||
placeholder: "I would like to see... / A new function that... / An option to..."
|
||||
label: What would you like to see?
|
||||
placeholder: "Describe the feature or improvement you have in mind."
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
id: area
|
||||
attributes:
|
||||
label: Which part of AfterTouch?
|
||||
multiple: true
|
||||
options:
|
||||
- "soundtouch-service (local cloud)"
|
||||
- "soundtouch-cli"
|
||||
- "soundtouch-player (web UI)"
|
||||
- "soundtouch-backup"
|
||||
- "Go library (pkg/*)"
|
||||
- "Documentation"
|
||||
- "Not sure"
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: alternatives
|
||||
attributes:
|
||||
label: Alternatives Considered
|
||||
description: Describe any alternative solutions or features you've considered.
|
||||
placeholder: "I considered... / Another approach could be... / Workaround I'm currently using..."
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: dropdown
|
||||
id: component
|
||||
attributes:
|
||||
label: Component
|
||||
description: Which component would this feature affect?
|
||||
multiple: true
|
||||
options:
|
||||
- "Client Library (pkg/client)"
|
||||
- "WebSocket Events"
|
||||
- "Device Discovery"
|
||||
- "CLI Tool"
|
||||
- "Models/XML Parsing"
|
||||
- "Documentation"
|
||||
- "Examples"
|
||||
- "New API Endpoint"
|
||||
- "Performance Optimization"
|
||||
- "Developer Experience"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
id: device-compatibility
|
||||
attributes:
|
||||
label: Device Compatibility
|
||||
description: Which Bose SoundTouch devices should this feature support?
|
||||
multiple: true
|
||||
options:
|
||||
- "All SoundTouch devices"
|
||||
- "SoundTouch 10"
|
||||
- "SoundTouch 20"
|
||||
- "SoundTouch 30"
|
||||
- "SoundTouch Portable"
|
||||
- "SoundTouch Wave"
|
||||
- "Other (specify in description)"
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: dropdown
|
||||
id: priority
|
||||
attributes:
|
||||
label: Priority
|
||||
description: How important is this feature to you?
|
||||
options:
|
||||
- "Low - Nice to have"
|
||||
- "Medium - Would improve my workflow"
|
||||
- "High - Important for my use case"
|
||||
- "Critical - Blocking my project"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
id: api-type
|
||||
attributes:
|
||||
label: API Type (if applicable)
|
||||
description: What type of API enhancement is this?
|
||||
options:
|
||||
- "Not applicable"
|
||||
- "New Bose SoundTouch endpoint"
|
||||
- "Enhancement to existing endpoint"
|
||||
- "Client library improvement"
|
||||
- "WebSocket event enhancement"
|
||||
- "Discovery enhancement"
|
||||
- "CLI command addition"
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: use-case
|
||||
attributes:
|
||||
label: Use Case / User Story
|
||||
description: Describe your specific use case or user story
|
||||
placeholder: |
|
||||
As a [type of user], I want to [goal] so that [benefit].
|
||||
|
||||
Example: As a home automation developer, I want to create custom zones so that I can group speakers dynamically based on user preferences.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: example-api
|
||||
attributes:
|
||||
label: Desired API Example
|
||||
description: Show how you'd like the API to work (if applicable)
|
||||
render: go
|
||||
placeholder: |
|
||||
// Example of how you envision using this feature
|
||||
client := soundtouch.New("192.0.2.100", 8090)
|
||||
|
||||
// Your desired API call
|
||||
result, err := client.NewFeature(options)
|
||||
if err != nil {
|
||||
// handle error
|
||||
}
|
||||
|
||||
// Use the result
|
||||
fmt.Println(result)
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: technical-details
|
||||
attributes:
|
||||
label: Technical Details
|
||||
description: Any technical considerations, constraints, or implementation ideas?
|
||||
placeholder: |
|
||||
- Should this be backward compatible?
|
||||
- Any performance considerations?
|
||||
- Integration with existing features?
|
||||
- External dependencies needed?
|
||||
label: Alternatives or workarounds
|
||||
description: Anything you've already tried or considered. Links and references are welcome.
|
||||
placeholder: "See the API Cookbook (https://gesellix.github.io/Bose-SoundTouch/docs/reference/API-COOKBOOK/) ..."
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: checkboxes
|
||||
id: implementation
|
||||
id: help
|
||||
attributes:
|
||||
label: Implementation
|
||||
description: Are you willing to help implement this feature?
|
||||
label: Can you help?
|
||||
description: Completely optional. Community contributions are very welcome.
|
||||
options:
|
||||
- label: "I can help implement this feature"
|
||||
- label: "I can provide testing/feedback"
|
||||
- label: "I can help implement this"
|
||||
- label: "I can help test it"
|
||||
- label: "I can help with documentation"
|
||||
- label: "I need someone else to implement this"
|
||||
|
||||
- type: textarea
|
||||
id: research
|
||||
attributes:
|
||||
label: Research & References
|
||||
description: Have you found any relevant resources, similar implementations, or Bose documentation?
|
||||
placeholder: |
|
||||
- Links to relevant documentation
|
||||
- Similar features in other libraries
|
||||
- Bose SoundTouch API references
|
||||
- Related GitHub issues or discussions
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: checkboxes
|
||||
id: checklist
|
||||
attributes:
|
||||
label: Checklist
|
||||
description: Please confirm the following
|
||||
options:
|
||||
- label: "I have searched for existing issues and feature requests"
|
||||
required: true
|
||||
- label: "I have checked the [API Cookbook](docs/API-COOKBOOK.md) for existing functionality"
|
||||
required: true
|
||||
- label: "This feature is related to Bose SoundTouch functionality"
|
||||
required: true
|
||||
- label: "I have considered backward compatibility"
|
||||
|
||||
- type: checkboxes
|
||||
id: terms
|
||||
id: coc
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: By submitting this feature request, you agree to follow our Code of Conduct
|
||||
description: This project follows a [Code of Conduct](https://github.com/gesellix/Bose-SoundTouch/blob/main/CODE_OF_CONDUCT.md).
|
||||
options:
|
||||
- label: "I agree to follow this project's Code of Conduct"
|
||||
required: true
|
||||
|
||||
@@ -1,171 +1,45 @@
|
||||
## Description
|
||||
## Summary
|
||||
|
||||
Brief description of the changes in this PR.
|
||||
What does this PR do, and why?
|
||||
|
||||
## Type of Change
|
||||
## Linked issue
|
||||
|
||||
Please check the type of change your PR introduces:
|
||||
<!-- Use "Refs #123". Reserve "Fixes #123" for a change the maintainer has confirmed
|
||||
actually resolves the issue (a merged PR is not confirmation on its own). -->
|
||||
Refs #
|
||||
|
||||
- [ ] Bug fix (non-breaking change which fixes an issue)
|
||||
- [ ] New feature (non-breaking change which adds functionality)
|
||||
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
||||
- [ ] Documentation update
|
||||
- [ ] Performance improvement
|
||||
- [ ] Code refactoring (no functional changes)
|
||||
- [ ] Test improvements
|
||||
- [ ] Build/CI improvements
|
||||
## Type of change
|
||||
|
||||
## Related Issues
|
||||
- [ ] Bug fix
|
||||
- [ ] New feature
|
||||
- [ ] Breaking change
|
||||
- [ ] Documentation
|
||||
- [ ] Refactor / tests / tooling
|
||||
|
||||
- Fixes #[issue number]
|
||||
- Relates to #[issue number]
|
||||
- Part of #[issue number]
|
||||
## How was it tested?
|
||||
|
||||
## Changes Made
|
||||
- [ ] `make check` passes (fmt, vet, lint, tests)
|
||||
- [ ] Tested against a real SoundTouch device (details below)
|
||||
|
||||
### API Changes
|
||||
- [ ] Added new endpoints
|
||||
- [ ] Modified existing endpoints
|
||||
- [ ] Added new CLI commands
|
||||
- [ ] Modified existing CLI commands
|
||||
- [ ] Added new configuration options
|
||||
<!-- If you tested on hardware, note the model and what you observed. In any pasted
|
||||
output, use RFC-5737 documentation IPs (192.0.2.x), never your real LAN IPs. -->
|
||||
|
||||
### Implementation Details
|
||||
- Describe the main changes
|
||||
- List any new dependencies
|
||||
- Mention any architectural changes
|
||||
## Checklist
|
||||
|
||||
## Testing
|
||||
|
||||
### Automated Tests
|
||||
- [ ] Unit tests added/updated
|
||||
- [ ] Integration tests added/updated
|
||||
- [ ] All existing tests pass
|
||||
- [ ] Test coverage maintained or improved
|
||||
|
||||
### Manual Testing
|
||||
- [ ] Tested with real SoundTouch device(s)
|
||||
- [ ] Tested CLI changes manually
|
||||
- [ ] Tested in different network environments
|
||||
|
||||
**Device(s) tested with:**
|
||||
- Device model: [e.g. SoundTouch 10]
|
||||
- Device IP: [e.g. 192.0.2.100]
|
||||
- Test results: [brief description]
|
||||
|
||||
### Test Commands
|
||||
```bash
|
||||
# Commands used to test this change
|
||||
make test
|
||||
go test ./pkg/client -v -run TestNewFeature
|
||||
soundtouch-cli --host 192.0.2.100 new-command
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
- [ ] Updated relevant documentation
|
||||
- [ ] Added code comments for complex logic
|
||||
- [ ] Updated CLI help text
|
||||
- [ ] Added usage examples
|
||||
- [ ] Updated API documentation
|
||||
|
||||
**Documentation files updated:**
|
||||
- [ ] README.md
|
||||
- [ ] docs/API-Endpoints-Overview.md
|
||||
- [ ] docs/CLI-REFERENCE.md
|
||||
- [ ] Code documentation (godoc)
|
||||
|
||||
## Backward Compatibility
|
||||
|
||||
- [ ] This change is backward compatible
|
||||
- [ ] This change includes breaking changes (requires major version bump)
|
||||
- [ ] This change requires configuration migration
|
||||
|
||||
**Breaking changes (if any):**
|
||||
- Describe what breaks
|
||||
- Provide migration instructions
|
||||
|
||||
## Security Considerations
|
||||
|
||||
- [ ] No security implications
|
||||
- [ ] Security review required
|
||||
- [ ] Added input validation
|
||||
- [ ] Updated authentication/authorization
|
||||
|
||||
## Performance Impact
|
||||
|
||||
- [ ] No performance impact
|
||||
- [ ] Performance improvement
|
||||
- [ ] Potential performance regression (justify why)
|
||||
|
||||
**Performance notes:**
|
||||
- Measured impact: [benchmarks, timing, memory usage]
|
||||
- Optimization opportunities: [if any]
|
||||
|
||||
## Code Quality
|
||||
|
||||
- [ ] Code follows project style guidelines
|
||||
- [ ] No linting errors
|
||||
- [ ] No security warnings
|
||||
- [ ] Memory leaks checked (if applicable)
|
||||
|
||||
### Pre-submission Checklist
|
||||
|
||||
- [ ] `make check` passes (format, lint, vet)
|
||||
- [ ] `make test` passes
|
||||
- [ ] No TODO comments left in production code
|
||||
- [ ] Error handling is comprehensive
|
||||
- [ ] Logging is appropriate (not too verbose, not too quiet)
|
||||
|
||||
## Deployment Notes
|
||||
|
||||
Any special considerations for deployment:
|
||||
- Configuration changes required
|
||||
- Database migrations needed
|
||||
- Service restart required
|
||||
- Rollback procedures
|
||||
|
||||
## Screenshots (if applicable)
|
||||
|
||||
If this PR includes UI changes or CLI output changes, include screenshots or terminal output examples.
|
||||
|
||||
```bash
|
||||
# Before
|
||||
$ soundtouch-cli old-command
|
||||
Old output...
|
||||
|
||||
# After
|
||||
$ soundtouch-cli new-command
|
||||
New improved output...
|
||||
```
|
||||
|
||||
## Additional Notes
|
||||
|
||||
Any additional information that reviewers should know:
|
||||
- Design decisions and trade-offs
|
||||
- Future work planned
|
||||
- Alternative approaches considered
|
||||
- References to external documentation
|
||||
|
||||
## Review Requests
|
||||
|
||||
**Areas that need special attention:**
|
||||
- [ ] Error handling logic
|
||||
- [ ] Performance critical sections
|
||||
- [ ] Security implications
|
||||
- [ ] API design choices
|
||||
- [ ] Documentation clarity
|
||||
|
||||
**Specific questions for reviewers:**
|
||||
1. Question about design choice X?
|
||||
2. Is error handling sufficient in section Y?
|
||||
3. Should we consider alternative approach Z?
|
||||
- [ ] My changes are focused, and I have read the diff myself
|
||||
- [ ] No personal data (real LAN IPs, MAC addresses, device IDs, account IDs) in code, tests, or fixtures
|
||||
- [ ] Docs or CLI help updated if behavior changed
|
||||
|
||||
---
|
||||
|
||||
**Reviewer Guidelines:**
|
||||
- Check that all tests pass
|
||||
- Verify documentation is updated
|
||||
- Test manually if device access available
|
||||
- Consider backward compatibility
|
||||
- Evaluate error handling and edge cases
|
||||
### A note on AI-assisted contributions
|
||||
|
||||
AI and agent-assisted code is welcome, we use it here too. What we cannot accept is
|
||||
unreviewed "slop": large generated diffs the author has not read, run, or understood.
|
||||
Keep PRs small and focused, make sure `make check` passes, and be ready to explain your
|
||||
changes during review.
|
||||
|
||||
By contributing, you agree that your work is licensed under the project's
|
||||
[MIT License](https://github.com/gesellix/Bose-SoundTouch/blob/main/LICENSE) and that you
|
||||
will follow the
|
||||
[Code of Conduct](https://github.com/gesellix/Bose-SoundTouch/blob/main/CODE_OF_CONDUCT.md).
|
||||
|
||||
Reference in New Issue
Block a user