Thanks for your interest in contributing! Here's how to get started.
- Go 1.25+ (or use mise — the repo includes a
.mise/config.toml) - macOS (clipx uses
pbcopy/pbpaste)
make build # build binary to ./clipx-bin
make test # run tests
make test-race # run tests with race detector
make check # fmt + vet + test
make coverage # generate HTML coverage reportcmd/clipx/ CLI entry point (commands, LaunchAgent management)
internal/clipx/
clipboard.go Clipboard abstraction (pbcopy/pbpaste)
config.go Config file (~/.config/clipx/config.json)
net.go Network utilities (DNS resolution, ping)
node.go Core daemon (listener, clipboard watcher, peer sync)
protocol.go Wire protocol (encode/decode messages & chunks)
*_test.go Tests
# terminal 1 — start a node
make build && ./clipx-bin
# terminal 2 — pair and test
./clipx-bin pair 127.0.0.1- Fork the repo
- Create a feature branch (
git checkout -b my-feature) - Make your changes
- Run
make checkto ensure everything passes - Commit with a conventional commit message
- Open a pull request
We use conventional commits:
feat:new featuresfix:bug fixesperf:performance improvementsdocs:documentation changestest:test changeschore:maintenance tasks
Please open a GitHub issue with:
- Your macOS version
clipx versionoutput- Steps to reproduce
- Relevant logs from
~/Library/Logs/clipx.log
By contributing, you agree that your contributions will be licensed under the MIT License.