Welcome Contributors!
Thank you for your interest in contributing to Quick Select! This plugin helps Obsidian users supercharge their workflow by quickly selecting items in any modal using keyboard shortcuts. We welcome contributions of all kinds, including bug fixes, new features, documentation improvements, and more.Development Setup
Install dependencies
- TypeScript 5.8.3
- esbuild 0.25.2 for building
- ESLint with TypeScript support
- Obsidian API (latest)
Build Process
The project uses esbuild for fast compilation. Available scripts:Build Script Details
npm run dev: Runs esbuild in watch mode for active developmentnpm run build: Runs TypeScript type checking (no emit) and builds for productionnpm run version: Updates version numbers in manifest.json and versions.json, then stages them for commit
The build process uses
esbuild.config.mjs for bundling and produces main.js as the output.Code Style
The project maintains consistent code style using ESLint and Prettier.ESLint Configuration
The project uses.eslintrc with TypeScript ESLint:
- Extends recommended ESLint and TypeScript rules
- Parser:
@typescript-eslint/parser - Key rules:
- Unused variables are errors (except function arguments)
- TypeScript comments are allowed
- Empty functions are permitted
Prettier Configuration
Formatting is handled by.prettierrc:
- Indentation: 2 spaces (no tabs)
- Quotes: Double quotes
- Semicolons: Required
- Line endings: LF
- Trailing commas: All
- Arrow function parens: Always
Run your linter before submitting code to ensure it follows the project’s style guidelines.
Testing Guidelines
When contributing code:-
Manual Testing: Test your changes in an actual Obsidian vault
- Copy
main.jsandmanifest.jsonto your vault’s.obsidian/plugins/quick-open/directory - Reload Obsidian and test the functionality
- Copy
-
Test Multiple Scenarios: Quick Select works across many modal types:
- Quick switcher
- Command palette
- Search modals
- Tag selection
- Slash commands
- Alias selection
-
Cross-Platform: If possible, test on different platforms:
- macOS (⌘ + number)
- Windows (Ctrl + number)
- Linux (Ctrl + number)
- Version Compatibility: Ensure compatibility with Obsidian >= 0.15.0
Pull Request Process
Make your changes
- Write clear, concise code
- Follow the existing code style
- Add comments for complex logic
- Update documentation if needed
Test thoroughly
- Run
npm run buildto ensure no TypeScript errors - Test in a real Obsidian vault
- Verify all affected modal types still work
Commit your changes
Write clear commit messages:Follow conventional commit format:
feat:for new featuresfix:for bug fixesdocs:for documentationrefactor:for code improvements
Continuous Integration
The project uses GitHub Actions for automated releases:- Workflow:
.github/workflows/release.yml - Trigger: Pushing version tags
- Process: Builds the plugin and creates GitHub releases
- Artifacts:
main.js,manifest.json, andstyles.css
License
This project is licensed under the MIT License. By contributing, you agree that your contributions will be licensed under the same MIT License. See LICENSE.txt for details.Getting Help
- Issues: GitHub Issues
- Discussions: For questions and ideas
- Sponsor: GitHub Sponsors
Code of Conduct
Be respectful, constructive, and welcoming to all contributors. We’re all here to make Quick Select better for the Obsidian community.Thank you for contributing to Quick Select! 🚀