Thank you for your interest in contributing to Perles! This document provides guidelines for contributing to the project.
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/perles.git - Create a branch:
git checkout -b feature/your-feature - Make your changes
- Run tests:
make test - Commit with a descriptive message
- Push and create a Pull Request
- Go 1.24+
- A beads-enabled project for testing (
.beads/directory withbeads.db)
make build # Build binary
make test # Run tests
make test-v # Verbose tests
make test-update # Update golden filesperles/
├── cmd/ # CLI entry point
├── internal/
│ ├── app/ # Root application model
│ ├── beads/ # Database client and CLI executor
│ ├── bql/ # BQL parser and executor
│ ├── config/ # Configuration handling
│ ├── keys/ # Keybinding definitions
│ ├── mode/ # Mode controllers (kanban, search)
│ ├── watcher/ # File watcher for auto-refresh
│ └── ui/ # UI components
│ ├── board/ # Kanban board and column components
│ ├── coleditor/ # Column editor modal
│ ├── colorpicker/# Color picker for columns
│ ├── details/ # Issue detail view
│ ├── help/ # Help overlay
│ ├── modal/ # Generic modal component
│ ├── picker/ # Status/priority picker
│ ├── styles/ # Shared lip gloss styles
│ ├── toaster/ # Toast notifications
│ └── viewselector/# View switcher component
└── Makefile
- Follow standard Go formatting (
gofmt) - Use meaningful variable and function names
- Keep functions focused and under 50 lines when possible
- Add comments for exported functions
- Write tests for new functionality
make test # All tests
make test-update # Update golden filesWe use teatest for TUI snapshot testing. These tests compare rendered output against golden files stored in testdata/ directories.
If you intentionally change UI output:
- Run
make testto see failures - Review the diff to ensure changes are intentional
- Run
make test-updateto update golden files - Commit the updated golden files with your changes
- Update README.md if adding new features
- Add tests for new functionality
- Ensure all tests pass (
make test) - Update documentation as needed
- Request review from maintainers
- Use GitHub Issues for bug reports and feature requests
- Include perles version (
perles --version) - Include Go version (
go version) - Provide steps to reproduce bugs
- Include relevant configuration if applicable
If you have questions about contributing, feel free to open a discussion or issue on GitHub.