vfv 0.2.0

A fast terminal file viewer with fuzzy search and syntax highlighting
# Contributing to vfv

Thank you for your interest in contributing to vfv!

> **日本語版**: [CONTRIBUTING_ja.md]CONTRIBUTING_ja.md

## Development Setup

### Prerequisites

- Rust 1.85 or later
- Git

### Building from Source

```bash
git clone https://github.com/noumi0k/vfv.git
cd vfv
cargo build
```

### Running Tests

```bash
cargo test
```

### Running with Debug Output

```bash
cargo run -- ~/some/directory
```

## Pull Request Process

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Make your changes
4. Run `cargo fmt` and `cargo clippy`
5. Run tests with `cargo test`
6. Commit your changes with a descriptive message
7. Push to your branch (`git push origin feature/amazing-feature`)
8. Open a Pull Request

## Code Style

- Follow Rust standard formatting (`cargo fmt`)
- Address all clippy warnings (`cargo clippy`)
- Keep functions small and focused
- Add comments for non-obvious logic

## Commit Messages

- Use the imperative mood ("Add feature" not "Added feature")
- Keep the first line under 72 characters
- Reference issues when applicable

## Reporting Issues

When reporting issues, please include:

- vfv version (`vfv --version`)
- OS and version
- Steps to reproduce
- Expected vs actual behavior

## For Maintainers

### Releasing

We use [cargo-release](https://github.com/crate-ci/cargo-release) to automate version bumping, tagging, and changelog updates.

```bash
# Install cargo-release (once)
cargo install cargo-release

# Dry run (preview changes without executing)
cargo release patch

# Execute release
cargo release patch --execute   # 0.1.1 → 0.1.2
cargo release minor --execute   # 0.1.1 → 0.2.0
cargo release major --execute   # 0.1.1 → 1.0.0
```

This will:
1. Update version in `Cargo.toml`
2. Update `CHANGELOG.md` (`[Unreleased]``[version] - date`)
3. Create commit: "Release {version}"
4. Create tag: `v{version}`
5. Push to remote

GitHub Actions will then automatically:
- Build binaries for Linux/macOS/Windows
- Create GitHub Release with binaries
- Publish to crates.io

### Manual Release (without cargo-release)

1. Update `CHANGELOG.md` with the new version
2. Update version in `Cargo.toml`
3. Commit: `git commit -am "Release vX.Y.Z"`
4. Tag: `git tag vX.Y.Z`
5. Push: `git push && git push --tags`

## License

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