Thank you for your interest in contributing to Clip! This document provides guidelines and information for contributors.
As this is a beta release, we're particularly interested in:
- Performance issues on different Windows versions
- Compatibility problems with specific applications
- UI/UX issues or unexpected behavior
- Memory leaks or resource usage problems
- AutoHotkey integration issues
- Workflow improvements
- New clipboard processing features
- UI/UX enhancements
- Integration with other tools
- Accessibility improvements
- Different Windows versions (Windows 10, 11)
- Various screen resolutions and DPI settings
- Different antivirus software configurations
- Heavy clipboard usage scenarios
- Long-running stability tests
- Node.js 18+
- Windows 10/11 (for testing)
- Git
- Visual Studio Build Tools (for native modules)
-
Fork and Clone
git clone https://github.com/YOUR_USERNAME/Clip.git cd Clip -
Install Dependencies
npm install
-
Start Development
npm run start
-
Build for Testing
npm run build:all npm run test:build
Clip/
├── src/
│ ├── main.ts # Electron main process
│ ├── preload.js # Preload script
│ ├── logger.ts # Logging utilities
│ └── renderer/ # React UI components
│ ├── App.tsx # Main React component
│ ├── ThemeProvider.tsx # Theme management
│ └── index.tsx # React entry point
├── native/ # C++ native modules
│ ├── clipmsg.cpp # Windows API integration
│ ├── SendPaste.exe # Paste utility
│ └── AutoHotkey.exe # Global hotkey support
├── assets/ # Icons and resources
├── dist/ # Build output
└── scripts/ # Build scripts
- Check Existing Issues - Search for similar issues first
- Use Issue Templates - Follow the provided templates
- Provide Details - Include:
- Windows version and build
- Clip version
- Steps to reproduce
- Expected vs actual behavior
- Screenshots/videos if applicable
- Error logs (check
%LOCALAPPDATA%/clip-main-error.log)
-
Create a Branch
git checkout -b feature/your-feature-name
-
Make Changes
- Follow existing code style
- Add comments for complex logic
- Update documentation if needed
-
Test Thoroughly
npm run build:all npm run test:build
-
Commit with Clear Messages
git commit -m "feat: add new clipboard filter feature" -
Push and Create PR
git push origin feature/your-feature-name
- Use TypeScript for all new code
- Follow existing naming conventions
- Use 4 spaces for indentation
- Add JSDoc comments for public functions
- Prefer
constoverletwhere possible
- Use functional components with hooks
- Keep components focused and small
- Use meaningful prop names
- Handle loading and error states
- Handle errors gracefully
- Use async/await for asynchronous operations
- Log important events for debugging
- Clean up resources properly
- Minimize main thread blocking
- Use caching for expensive operations
- Optimize database queries
- Handle large clipboard items efficiently
- Validate all user inputs
- Use secure IPC communication
- Minimize native module usage
- Handle sensitive data carefully
- Test on multiple Windows versions
- Verify memory usage over time
- Test with various clipboard content types
- Ensure proper cleanup on exit
bug- Something isn't workingenhancement- New feature or requestdocumentation- Improvements to docsgood first issue- Good for newcomershelp wanted- Extra attention neededbeta-feedback- Beta testing feedbackperformance- Performance relatedui/ux- User interface/experience
Contributors will be recognized in:
- README.md acknowledgments
- Release notes
- GitHub contributors page
- GitHub Issues - For bugs and feature requests
- GitHub Discussions - For questions and general discussion
By contributing to Clip, you agree that your contributions will be licensed under the MIT License.
Thank you for helping make Clip better! 🚀