Skip to content

Latest commit

 

History

History
70 lines (54 loc) · 2.47 KB

CONTRIBUTING.md

File metadata and controls

70 lines (54 loc) · 2.47 KB

Contributing to Tincan CLI

Thank you for your interest in contributing to Tincan CLI! We welcome bug reports, feature proposals, documentation improvements, and code contributions from developers of all skill levels.


Code of Conduct

Please treat everyone in the community with respect, empathy, and professional courtesy.


How to Contribute

1. Finding an Issue

Browse the GitHub Issues for open tasks:

  • good first issue: Ideal for new contributors.
  • help wanted: Tasks where community help is actively requested.
  • bug: Confirmed defects needing fixes.
  • enhancement: New features and design proposals.

Claim the issue before you start. Comment on it to say you'd like to take it, and wait until it is assigned to you. That way two people never work on the same thing, and we can point you at the right part of the code before you write any. Pull requests for issues that are unassigned, or assigned to someone else, may be closed.

Something you'd like to change that has no issue yet? Open one first, unless it's a typo or a broken link.

2. Setting Up Development Environment & Branching Model

  1. Fork and clone the repository:
    git clone https://github.com/YOUR-USERNAME/tincan-cli.git
    cd tincan-cli
  2. Create a topic branch off develop:
    git checkout develop
    git pull origin develop
    git checkout -b feature/my-feature-name
  3. Install build dependencies (Opus, pkg-config, ALSA/CoreAudio).
  4. Run tests:
    cargo test
    cargo clippy --all-targets

Branching Conventions

  • main: Stable production releases.
  • develop: Integration branch for upcoming releases (PR target).
  • feature/*: New feature development.
  • fix/*: Bug fixes.
  • docs/*: Documentation and wiki updates.

3. Submitting Pull Requests

  • Keep PRs focused on a single logical change.
  • Ensure all automated unit & integration tests pass (cargo test).
  • Format code with cargo fmt.
  • Write clear commit messages. Do NOT include AI co-author tags or automated bot signatures.

Coding Guidelines

  • Rust Edition: Rust 2024 edition (rust-version = 1.91).
  • Error Handling: Use anyhow for top-level error propagation and specific error enums for library modules.
  • Async Runtime: Use tokio multi-threaded runtime.
  • Audio Code Style: Keep lock-free audio ring buffers isolated from async/blocking calls to guarantee real-time audio safety.