Files
NetMesh/CONTRIBUTING.md

117 lines
3.8 KiB
Markdown
Raw Permalink Normal View History

# Contributing to Netcatty
Thank you for your interest in contributing to Netcatty — an AI-powered SSH client, SFTP browser, and terminal manager built with Electron, React, and xterm.js.
Please read this guide before submitting issues or pull requests.
## Code of Conduct
This project follows the [Contributor Covenant Code of Conduct](./CODE_OF_CONDUCT.md). By participating, you agree to uphold this standard.
## Ways to Contribute
- Report bugs via [GitHub Issues](https://github.com/binaricat/Netcatty/issues)
- Suggest features or improvements
- Fix bugs or implement features listed in Issues
- Improve documentation
## Reporting Issues
Issues that do not follow the required format are closed automatically by the
issue-format bot.
- **Title prefix (required):** start with `[Bug]`, `[Feature]`, or `[Other]`,
then a short summary of at least 4 characters.
Example: `[Bug] SFTP upload fails on Windows`
- **Template (required):** open from
[New Issue](https://github.com/binaricat/Netcatty/issues/new/choose) and pick
**Bug Report** or **Feature Request**. Fill every required field. Blank
issues are disabled (`blank_issues_enabled: false`).
- **Templates live in**
[`.github/ISSUE_TEMPLATE/`](https://github.com/binaricat/Netcatty/tree/main/.github/ISSUE_TEMPLATE).
- Questions and open-ended discussion belong in
[GitHub Discussions](https://github.com/binaricat/Netcatty/discussions), not Issues.
If you open an issue via the API or `gh`, you must still use a valid title
prefix and a body that matches the Bug Report or Feature Request template
structure (required headings such as "Steps to reproduce" or
"Problem / pain point").
## Development Setup
**Prerequisites:** Node.js 22+ and npm.
```bash
# Clone the repository
git clone https://github.com/binaricat/Netcatty.git
cd Netcatty
# Install dependencies
npm ci
# Start in development mode (Vite + Electron)
npm run dev
```
## Build & Package
```bash
npm run build # Build for production
npm run pack # Package for current platform
npm run pack:mac # macOS (DMG + ZIP)
npm run pack:win # Windows (NSIS, portable, ZIP)
npm run pack:linux # Linux (AppImage, DEB, RPM, pacman)
```
## Linting and Tests
```bash
npm run lint # Run ESLint
npm test # Run the test suite
```
## Pull Request Process
1. Fork the repository.
2. Create a feature branch:
```bash
git checkout -b feature/your-feature-name
```
3. Make your changes, following the existing project style.
4. Commit with a clear message:
```bash
git commit -m 'feat: add amazing feature'
```
5. Push the branch and open a Pull Request against `main`. Use the checklist in
[`.github/PULL_REQUEST_TEMPLATE.md`](https://github.com/binaricat/Netcatty/blob/main/.github/PULL_REQUEST_TEMPLATE.md).
6. Run `npm run lint` and `npm test` before requesting review.
7. If you changed the capability catalog, run `npm run generate:capability-tools`
and commit any generated updates.
8. Ensure all CI checks pass before requesting review.
## Commit Message Convention
We recommend following [Conventional Commits](https://www.conventionalcommits.org/):
- `feat:` — new feature
- `fix:` — bug fix
- `docs:` — documentation only
- `refactor:` — code change without feature or fix
- `chore:` — build process or tooling changes
## Architecture & Coding Guidelines
Netcatty is organized around three layers:
- Domain logic in `domain/`
- Application state in `application/state/`
- UI components in `components/`
Keep side effects in application or infrastructure code, avoid direct
`localStorage` or network calls from components, and update relevant
documentation when behavior changes.
## License
By contributing, you agree that your contributions will be licensed under the [GPL-3.0 License](./LICENSE).