term39 0.14.5

A modern, retro-styled terminal multiplexer with a classic MS-DOS aesthetic
# Contributing to term39

Thank you for your interest in contributing to term39! This document provides guidelines for contributing to the project.

## Getting Started

1. Fork the repository
2. Clone your fork locally
3. Create a new branch for your feature or bugfix

## Development Setup

### Prerequisites

- Rust (Edition 2024)
- Cargo

### Building

```bash
# Standard build (terminal backend)
cargo build

# Release build
cargo build --release

# With framebuffer support (Linux only)
cargo build --features framebuffer-backend
```

### Running

```bash
# Default Unicode mode
cargo run

# ASCII compatibility mode
cargo run -- --ascii

# Framebuffer mode (Linux console only, requires root or video group)
sudo ./target/release/term39 --fb-mode=80x25
```

## Code Quality

Before submitting a pull request, ensure your code passes all checks:

```bash
# Format code
cargo fmt

# Run linter
cargo clippy

# Run tests
cargo test

# Quick compile check
cargo check
```

## Pull Request Process

1. Ensure your code follows the existing style and conventions
2. Run `cargo fmt` to format your code
3. Run `cargo clippy` and address any warnings
4. Run `cargo test` to ensure all tests pass
5. Update documentation if you're changing functionality
6. Create a pull request with a clear description of your changes

## Code Style Guidelines

- Follow standard Rust conventions
- Use meaningful variable and function names
- Keep functions focused and reasonably sized
- Add comments only where the logic isn't self-evident
- Maintain the MS-DOS aesthetic for UI-related changes

## Architecture Notes

When contributing, please be mindful of:

- **Rendering System**: Uses double-buffered rendering with dirty region tracking
- **Backend Abstraction**: Support both terminal and framebuffer backends
- **Charset Modes**: Maintain compatibility for both Unicode and ASCII modes
- **Cross-platform**: Terminal backend should work on Linux, macOS, and Windows

## Reporting Issues

When reporting bugs, please include:

- Operating system and version
- Terminal emulator (if applicable)
- Steps to reproduce the issue
- Expected vs actual behavior

## Questions?

Feel free to open an issue for questions or discussions about the project.