Contributing¶
Help improve Voice Assistant Persistent Timers!
Ways to Contribute¶
- Report bugs - File issues with reproduction steps
- Suggest features - Open discussions for new ideas
- Add devices - Contribute configurations for new hardware
- Improve docs - Fix errors, add examples, clarify steps
- Share translations - Add custom sentences in other languages
Development Setup¶
Prerequisites¶
- Python 3.13+
- uv package manager
- Home Assistant instance for testing
Clone Repository¶
git clone https://github.com/Djelibeybi/voice-assistant-persistent-timers.git
cd voice-assistant-persistent-timers
Install Tools¶
Extract Configurations¶
Validate Configs¶
Code Style¶
YAML¶
- 2-space indentation
- No trailing whitespace
- Descriptive comments for complex logic
- Group related configuration sections
Python¶
- Follow PEP 8
- Use type hints
- Document functions with docstrings
- User
rufffor formatting and linting
Markdown¶
- One sentence per line (for better diffs)
- Use ATX-style headers (
#) - Include alt text for images
- Use fenced code blocks with language hints
Literate Programming Format¶
Device configurations use literate programming. Code blocks are embedded in markdown documentation.
Code Block Markers¶
# file: esphome/examples/device-name.yaml
# section: substitutions
substitutions:
timer_area: "kitchen"
# file:- Output file path# section:- Section identifier for ordering
Section Order¶
Sections are assembled in this order:
- substitutions
- esphome
- esp32
- packages
- external_components
- api
- ota
- wifi
- logger
- i2c
- spi
- audio
- wake_word
- sensor
- text_sensor
- touchscreen
- binary_sensor
- button
- switch
- globals
- script
- image
- font
- color
- display
Example Device Doc¶
# My Device
Description of the device.
## Hardware Overview
| Feature | Value |
| ------- | -------- |
| Board | ESP32-S3 |
## Substitutions
\`\`\`yaml
# file: esphome/examples/my-device.yaml
# section: substitutions
substitutions:
timer_area: "area_name"
\`\`\`
## ESPHome Core
\`\`\`yaml
# file: esphome/examples/my-device.yaml
# section: esphome
esphome:
name: my-device
\`\`\`
Pull Request Process¶
Before Submitting¶
- Test your changes - Verify on actual hardware if possible
- Run validation -
./scripts/validate_configs.sh - Update docs - If adding features, document them
- Check formatting - No trailing whitespace, consistent indentation
PR Guidelines¶
- One feature or device per PR - Easier to review
- Clear title - Describe what changes
- Description - Explain why and how
- Link issues - Reference related issues
Commit Messages¶
Follow conventional commits:
feat: add support for ESP32-S3-BOX-Lite
fix: correct timer sensor attribute name
docs: clarify area naming requirements
chore: update ESPHome version requirement
Review Process¶
- Maintainer reviews within 1-2 weeks
- Address feedback with new commits
- Squash when approved
- Maintainer merges
Adding a New Device¶
Step 1: Gather Information¶
Document the hardware:
- Board/chip model
- Display type and resolution
- Touch controller (if any)
- Audio codec
- GPIO pin assignments
Step 2: Create Device Doc¶
Copy docs/devices/_template.md and fill in sections:
Step 3: Extract and Test¶
python3 scripts/extract_configs.py
esphome config esphome/examples/my-new-device.yaml
esphome run esphome/examples/my-new-device.yaml
Step 4: Verify Timer Functionality¶
Test checklist:
- Timer starts with voice command
- Display shows progress
- Alarm sounds on completion
- Timer persists after restart
- Cancel/pause/resume work
Step 5: Submit PR¶
Include:
- Device documentation file
- Any required package updates
- Update to README.md device table
- Test results
Reporting Bugs¶
Good Bug Report¶
## Description
Timer display doesn't update when timer is paused.
## Steps to Reproduce
1. Start a 5-minute timer
2. Say "Pause the timer"
3. Display still shows countdown instead of "paused"
## Expected Behavior
Display should show "(paused)" indicator.
## Actual Behavior
Display continues showing countdown numbers.
## Environment
- ESPHome: 2025.5.0
- Home Assistant: 2024.5.0
- Device: ESP32-S3-BOX-3
- Timer area: kitchen
## Logs
[Relevant log excerpts]
## Configuration
[Relevant config snippets - no secrets!]
Feature Requests¶
Good Feature Request¶
## Feature
Support for multiple timers per area.
## Use Case
Cooking often requires multiple simultaneous timers
(e.g., pasta water and sauce).
## Proposed Solution
1. Add timer naming support: "Set a pasta timer for 10 minutes"
2. Display multiple progress bars
3. Query by name: "How much time on the pasta timer?"
## Alternatives Considered
- Using timers from different areas
- Using HA dashboard instead
## Would you work on this?
Yes, I can contribute an implementation.
Code of Conduct¶
- Be respectful and inclusive
- Focus on constructive feedback
- Help newcomers learn
- Assume good intent
License¶
Contributions are licensed under CC BY-NC-SA 4.0.
By contributing, you agree to license your work under these terms.
Questions?¶
- Open a discussion on GitHub
- Check existing issues first
- Include relevant context