Thank you for your interest in contributing! Here's how to get started.
- Install Go 1.26+
- Clone the repository:
git clone https://github.com/chenyc21/traverse.git cd traverse - Install dependencies:
go mod download
- Build and run:
go build -o traverse . ./traverse
- Use
gofmtto format your code - Run
go vet ./...before committing - Follow standard Go conventions
Use Conventional Commits:
feat:— new featurefix:— bug fixdocs:— documentationstyle:— formatting, no code changerefactor:— code refactoringtest:— adding testschore:— maintenance
Example: feat: add file preview panel
- Fork the repository
- Create a feature branch:
git checkout -b feat/my-feature - Make your changes
- Run tests:
go test ./... - Run linter:
go vet ./... - Commit with conventional commit message
- Push and create a Pull Request
Run all tests:
go test ./...Run tests with coverage:
go test -cover ./...traverse/
├── main.go # Entry point
├── app.go # Core model struct + Init/Update + directory/Git loading
├── handlers.go # Keyboard event handling
├── commands.go # Async commands (file ops, Git ops, filter, shell)
├── render.go # UI rendering (sidebar, preview, status bar, dialogs)
├── git.go # GitService (os/exec wrapper)
├── file.go # File loading, sorting, icons
├── preview.go # Syntax-highlighted preview (Chroma)
├── keys.go # Keybinding definitions
├── config.go # Configuration management (Viper)
└── themes/ # Theme files
Open an issue on GitHub for any questions or suggestions.