Files
PinchChat/CONTRIBUTING.md

91 lines
2.5 KiB
Markdown

# Contributing to PinchChat
Thanks for your interest in contributing! 🦞
## Getting Started
1. **Fork** the repository
2. **Clone** your fork:
```bash
git clone https://github.com/<your-username>/pinchchat.git
cd pinchchat
```
3. **Install dependencies:**
```bash
npm install
```
4. **Set up your environment:**
```bash
cp .env.example .env
# Edit .env with your OpenClaw gateway details
```
5. **Start the dev server:**
```bash
npm run dev
```
## Development
- **Dev server:** `npm run dev` — starts Vite with hot reload
- **Lint:** `npm run lint` — must pass with 0 errors and 0 warnings
- **Test:** `npm test` — runs Vitest unit tests (must all pass)
- **Build:** `npm run build` — must pass with 0 errors before submitting a PR
- **Preview:** `npx vite preview` — serve the production build locally
### Project Structure
```
src/
├── components/ # React components
│ ├── chat/ # Chat area (messages, input, streaming)
│ └── sidebar/ # Session list sidebar
├── hooks/ # Custom React hooks (WebSocket, sessions)
├── lib/ # Utilities (markdown, formatting)
├── types/ # TypeScript type definitions
├── App.tsx # Root component
└── main.tsx # Entry point
```
## Making Changes
1. Create a feature branch: `git checkout -b feat/my-feature`
2. Make your changes
3. Ensure all checks pass:
```bash
npm run lint # 0 errors, 0 warnings
npm test # all tests pass
npm run build # 0 errors
```
4. Commit using [Conventional Commits](https://www.conventionalcommits.org/):
- `feat:` — new feature
- `fix:` — bug fix
- `docs:` — documentation only
- `refactor:` — code change that neither fixes a bug nor adds a feature
- `style:` — formatting, missing semicolons, etc.
- `perf:` — performance improvement
- `ci:` — CI/CD changes
5. Push and open a Pull Request
## Reporting Issues
When filing an issue, please include:
- Browser and version
- Steps to reproduce
- Expected vs actual behavior
- Console errors (if any)
## Code Style
- TypeScript strict mode
- Tailwind CSS v4 for styling (no inline styles)
- Functional React components with hooks
- Keep components focused and small
## Code of Conduct
This project follows the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code.
## License
By contributing, you agree that your contributions will be licensed under the [MIT License](LICENSE).