mirror of
https://github.com/moonD4rk/HackBrowserData.git
synced 2026-05-19 18:58:03 +02:00
d8032ac824
* docs: rewrite README, RFCs, and CONTRIBUTING * docs: fix Linux storage labels in RFC-006 (Opera/Vivaldi swapped)
74 lines
2.3 KiB
Markdown
74 lines
2.3 KiB
Markdown
# Contributing to HackBrowserData
|
|
|
|
We appreciate your interest in contributing to HackBrowserData! This document provides guidelines for contributors.
|
|
|
|
## Getting Started
|
|
|
|
- Always base your work from the `main` branch.
|
|
- Before creating a Pull Request (PR), make sure there is a corresponding issue for your contribution. If there isn't one already, please create one.
|
|
|
|
## Go Version Constraint
|
|
|
|
This project **must build with Go 1.20** to maintain Windows 7 support. This is enforced by CI.
|
|
|
|
- Do **not** use features from Go 1.21+ (e.g., `log/slog`, `slices`, `maps`, `cmp` packages)
|
|
- Do **not** bump the `go` directive in `go.mod` beyond `go 1.20`
|
|
- `modernc.org/sqlite` is pinned at v1.31.1 (v1.32+ requires Go 1.21)
|
|
|
|
## Development Commands
|
|
|
|
```bash
|
|
# Build
|
|
go build ./cmd/hack-browser-data/
|
|
|
|
# Test
|
|
go test ./...
|
|
|
|
# Lint (requires golangci-lint v2)
|
|
golangci-lint run
|
|
|
|
# Format
|
|
gofumpt -l -w .
|
|
goimports -w -local github.com/moond4rk/hackbrowserdata .
|
|
|
|
# Spelling check
|
|
typos
|
|
```
|
|
|
|
## Pull Requests
|
|
|
|
When creating a PR, please follow these guidelines:
|
|
|
|
- Link your PR to the corresponding issue.
|
|
- Provide context in the PR description to help reviewers understand the changes.
|
|
- Include 'before' and 'after' examples if applicable.
|
|
- Include steps for functional testing or replication.
|
|
- If you're adding a new feature, make sure to include unit tests.
|
|
|
|
### Commit Message Convention
|
|
|
|
Use [Conventional Commits](https://www.conventionalcommits.org/) format:
|
|
|
|
```
|
|
feat: add support for new browser
|
|
fix: resolve cookie decryption on Windows
|
|
chore: update dependencies
|
|
docs: improve RFC documentation
|
|
refactor: simplify profile discovery logic
|
|
test: add extraction tests for Firefox
|
|
```
|
|
|
|
## Code Style
|
|
|
|
- **Platform code**: use build tags (`_darwin.go`, `_windows.go`, `_linux.go`)
|
|
- **Error handling**: use `fmt.Errorf("context: %w", err)` for wrapping; do not ignore errors unless it is deliberate best-effort cleanup (e.g. `Close`/`Remove`)
|
|
- **Naming**: follow Go conventions
|
|
- **Tests**: use `t.TempDir()` for filesystem tests
|
|
- **Architecture**: see `rfcs/` for design documents
|
|
|
|
## Questions
|
|
|
|
If you have any questions or need further guidance, please feel free to ask in the issue or PR, or [reach out to the maintainers](mailto:me@moond4rk.com). We will reply to you as soon as possible.
|
|
|
|
Thank you for your contribution!
|