5.5 KiB
Contributing
Thank you for your interest in contributing! This document outlines the process for contributing to the project. For end-user documentation, see README.md. For architecture and internals, see DEVELOPMENT.md.
Code of Conduct
By participating in this project, you agree to maintain a respectful and inclusive environment. Be kind, constructive, and professional in all interactions.
Reporting Bugs
Bugs are tracked as GitHub issues using the bug report template, which prompts for the reproduction steps, version info, and other details needed to triage the issue.
Before opening a new bug report:
- Search existing issues to see if it has already been reported.
- Make sure you are running the latest version of the plugin and the minimum required version of Obsidian.
- Try to reproduce the bug in a clean vault with other plugins disabled or removed.
- Try to reproduce the bug in both light and dark mode, since some issues are theme-specific.
- Try to reproduce the bug in the Obsidian desktop application and the Obsidian mobile app, since some issues are device-specific.
Suggesting Enhancements
Feature requests are tracked as GitHub issues using the feature request template. The template focuses on the problem you're trying to solve before the proposed solution.
Before opening an issue, check the ROADMAP.md to make sure your idea isn't already planned or out of scope for this plugin, and check the milestones page to make sure it isn't already scheduled for a release.
If your idea is still in an early stage and you'd like to discuss it before filing a formal request, open an Ideas discussion instead.
Accepted feature requests are assigned a milestone (e.g. v2.3.0) indicating which release they're planned for. Issues without a milestone have not yet been scheduled — they may still be accepted, but no release has been committed to.
Questions and Discussion
For usage questions, configuration help, or sharing how you use the plugin, please open a discussion rather than an issue. Discussion categories include Q&A, Ideas, and Show & Tell, each with its own template.
Contributing Code
Before you start...
- Check the ROADMAP.md to make sure the same feature isn't already planned.
- Check the milestones page to see which release an issue is scheduled for. If you'd like to work on an issue, comment on it before starting so it can be confirmed available and not in progress by someone else.
- Open an issue or discussion for non-trivial changes so we can agree on the approach. Small fixes (typos, doc improvements, obvious bugs) can skip this.
- Scope each pull request to one issue, bug, or feature. Bundled changes are harder to review.
- Consider whether your changes need new dependencies. If a change requires a new dependency, mention why in the issue first.
Once you are ready to code...
- Fork the repository and create your branch from
master. - Follow the development setup in DEVELOPMENT.md.
- Make your changes in a clear, focused commit history.
- Add a schema migration if your change alters the on-disk shape of
ContactNoteConfiguration(renamed/removed fields, restructured values). See Configuration Schema Migrations. - Lint your code by running
npm run lint. - Build the project with
npm run buildto ensure there are no TypeScript errors. - Test your changes in a local Obsidian vault. If your change touches the shared card renderer or contact data model, verify both the ContactsView (sidebar panel) and ContactsBasesView (
.basefile). - Update documentation (README or DEVELOPMENT.md) if your changes affect user-facing behavior or development workflow.
Creating a Pull Request
When creating a pull request you'll be met with a default pull request template. It includes a list of template names that can be appended to the pull request URL to create a PR using one of the specialized templates. If you are unsure of which template to use, the default is fine. Fill out the chosen template and select Create pull request when you are ready.
Pull Request Templates
For more specific changes, you can use one of the specialized templates:
| Type of change | Template URL parameter |
|---|---|
| New feature | ?template=feature.md |
| Bug fix | ?template=bugfix.md |
| Documentation | ?template=docs.md |
| Refactor | ?template=refactor.md |
License
By contributing to this project you agree that your contributions will be licensed under the GNU Affero General Public License v3.0.