Welcome Contributors!
Ghostty Config is an open-source project, and we welcome contributions from the community. Whether you’re fixing bugs, adding features, improving documentation, or providing feedback, your help is appreciated!Ways to Contribute
Report Bugs
Found a bug? Please report it on the GitHub issue tracker. When reporting bugs, include:- Clear description of the issue
- Steps to reproduce the problem
- Expected vs. actual behavior
- Browser and OS information
- Screenshots or screen recordings (if applicable)
- Relevant error messages from the console
Suggest Features
Have an idea for a new feature? Open an issue on the GitHub tracker with the “enhancement” label. Feature requests should include:- Clear description of the proposed feature
- Use case and motivation (why it’s needed)
- Potential implementation approach (if you have ideas)
- Examples from other tools (if relevant)
Submit Pull Requests
Ready to contribute code? Follow these steps:Set up development environment
Create a feature branch
Create a new branch for your changes:Use descriptive branch names like:
feature/add-color-palette-importfix/keybind-validation-crashdocs/update-readme
Make your changes
Make your changes following the project’s code style:
- Write clear, readable code
- Follow existing patterns and conventions
- Add comments for complex logic
- Update or add tests if applicable
- Ensure TypeScript types are correct
Commit your changes
Write clear, descriptive commit messages:Good commit messages:
- “Fix keybind validation crash on empty input”
- “Add support for custom font imports”
- “Update README with deployment instructions”
- “Fix bug”
- “Update code”
- “WIP”
Code Style
General Guidelines
- Follow TypeScript best practices
- Use meaningful variable and function names
- Keep functions small and focused
- Avoid deeply nested code
- Write self-documenting code when possible
Formatting
The project uses Prettier and ESLint for consistent code formatting:- ESLint: Uses
@zerebos/eslint-configpresets - Prettier: Standard Prettier with
prettier-plugin-svelte
Svelte Conventions
- Use Svelte 5 runes (
$state,$derived,$effect) for reactivity - Keep component files focused and under ~300 lines when possible
- Extract reusable logic into utility functions
- Use TypeScript for prop types
Testing
The project uses Vitest for unit testing. Tests are co-located with source files:src/lib/utils/keybinds.test.ts tests keybinds.ts
When adding new features:
- Add tests for utility functions
- Test edge cases and error conditions
- Ensure existing tests still pass
Development Notes
Project Status
Ghostty Config is in active development. Some features are still being built and the API may change. See the roadmap for planned features.Getting Help
If you have questions:- Check existing GitHub issues
- Open a new discussion issue
- Review the project structure documentation
License
By contributing to Ghostty Config, you agree that your contributions will be licensed under the Apache-2.0 License.Recognition
Contributors are recognized in:- GitHub’s contributor list
- Pull request acknowledgments
- Release notes for significant contributions