Files
codewhale/CONTRIBUTING.md
T
Hunter Bown 7b91169017 refactor: move source files into workspace crates
- Move src/* into crates/tui/src/ to create a proper workspace structure
- Add .claude/ and .trimtab/ directories for Trimtab closed-loop workflow
- Add DEPENDENCY_GRAPH.md and update documentation
- Update Cargo.toml files to reflect new crate dependencies
- Update CI workflows and npm package scripts
- All tests pass, release build works
2026-03-11 20:00:38 -05:00

3.4 KiB

Contributing to DeepSeek TUI

Thank you for your interest in contributing to DeepSeek TUI! This document provides guidelines and instructions for contributing.

Getting Started

Prerequisites

  • Rust 1.85 or later (edition 2024)
  • Cargo package manager
  • Git

Setting Up Development Environment

  1. Fork and clone the repository:

    git clone https://github.com/YOUR_USERNAME/DeepSeek-TUI.git
    cd DeepSeek-TUI
    
  2. Build the project:

    cargo build
    
  3. Run tests:

    cargo test
    
  4. Run with development settings:

    cargo run
    

Development Workflow

Code Style

  • Run cargo fmt before committing to ensure consistent formatting
  • Run cargo clippy and address all warnings
  • Follow Rust naming conventions (snake_case for functions/variables, CamelCase for types)
  • Add documentation comments for public APIs

Testing

  • Write tests for new functionality
  • Ensure all existing tests pass: cargo test
  • For integration tests, use the tests/ directory

Commit Messages

Use clear, descriptive commit messages following conventional commits:

  • feat: New feature
  • fix: Bug fix
  • docs: Documentation changes
  • refactor: Code refactoring
  • test: Adding or updating tests
  • chore: Maintenance tasks

Example: feat: add --doctor command for system diagnostics

Project Structure

src/
├── main.rs           # Entry point and CLI definition
├── config.rs         # Configuration management
├── client.rs         # HTTP client for DeepSeek API
├── llm_client.rs     # LLM abstraction layer
├── models.rs         # Data structures
├── mcp.rs            # Model Context Protocol support
├── hooks.rs          # Hook system for extensibility
├── skills.rs         # Skills/plugin system
├── core/             # Core engine components
│   ├── engine.rs     # Main agent loop
│   ├── session.rs    # Session management
│   └── ...
├── tools/            # Built-in tools
│   ├── shell.rs      # Shell execution
│   ├── file.rs       # File operations
│   └── ...
├── tui/              # Terminal UI
│   ├── app.rs        # Application state
│   ├── ui.rs         # Rendering logic
│   └── ...
└── sandbox/          # Sandbox execution (macOS)

Submitting Changes

  1. Create a feature branch from main:

    git checkout -b feat/your-feature
    
  2. Make your changes and commit them

  3. Ensure CI passes:

    cargo fmt --check
    cargo clippy
    cargo test
    
  4. Push your branch and create a Pull Request

  5. Describe your changes clearly in the PR description

Pull Request Guidelines

  • Keep PRs focused on a single change
  • Update documentation if needed
  • Add tests for new functionality
  • Ensure CI passes before requesting review

Reporting Issues

When reporting issues, please include:

  • Operating system and version
  • Rust version (rustc --version)
  • DeepSeek TUI version (deepseek --version)
  • Steps to reproduce the issue
  • Expected vs actual behavior
  • Relevant error messages or logs

Code of Conduct

Be respectful and inclusive. We welcome contributors of all backgrounds and experience levels.

License

By contributing to DeepSeek TUI, you agree that your contributions will be licensed under the MIT License.

Questions?

Feel free to open an issue for any questions about contributing.