# Installation
Pointbreak Review publishes prebuilt `pointbreak` binaries for macOS, Linux, and Windows. The install
scripts select the archive for the current platform and verify it against the release's
`checksums.txt` before writing the binary.
## macOS and Linux
Install the latest release into `~/.local/bin`:
```sh
If `~/.local/bin` is not already in `PATH`, the installer prints a command for your current shell and
names the appropriate zsh or bash configuration file for a permanent change. Run the command, then
verify the result:
```sh
pointbreak --version
```
The script also supports `wget` when run from a local checkout.
### Pin a version or change the install directory
Pass installer options after `sh -s --`:
```sh
curl -fsSL https://raw.githubusercontent.com/withpointbreak/pointbreak/main/scripts/install.sh \
| sh -s -- --version=v0.7.0 --prefix="$HOME/bin"
```
`--version` accepts a release with or without its leading `v`. The default is the latest published,
non-prerelease GitHub release. `--prefix` names the directory that will contain `pointbreak`.
## Windows PowerShell
Install the latest release into `%LOCALAPPDATA%\Pointbreak\bin`:
```powershell
The installer adds that directory to your user `PATH` when necessary. Restart the terminal before
running:
```powershell
pointbreak --version
```
To pin a version, choose another install directory, or leave `PATH` unchanged, invoke the downloaded
script as a script block:
```powershell
$Install = [scriptblock]::Create((irm https://raw.githubusercontent.com/withpointbreak/pointbreak/main/scripts/install.ps1))
& $Install -Version v0.7.0 -InstallDir "$HOME\bin" -NoModifyPath
```
## Your first Review
Once `pointbreak --version` reports the installed release, go straight to a first useful Review:
make a real change to a tracked file in one of your repositories, capture it with a useful summary,
and open Review:
```sh
pointbreak capture --summary "<what changed>"
pointbreak inspect --open
```
[Getting started](getting-started.md) continues from here through the complete paired
author/reviewer loop. The sections below cover installer options, checksum verification, supported
platforms, and manual downloads; return to them when you need them.
## Checksum verification
Verification is on by default and fails closed. The installer stops without replacing `pointbreak` if:
- `checksums.txt` cannot be downloaded;
- the selected archive has no valid entry;
- SHA-256 tooling is unavailable on macOS or Linux; or
- the downloaded archive's checksum does not match.
You can bypass verification explicitly with `--no-verify` on macOS or Linux, or `-NoVerify` on
Windows. This is intended for exceptional situations where you have verified the archive another
way.
To inspect a script before running it:
```sh
curl -fsSL -o install.sh https://raw.githubusercontent.com/withpointbreak/pointbreak/main/scripts/install.sh
less install.sh
sh install.sh
```
On Windows:
```powershell
irm https://raw.githubusercontent.com/withpointbreak/pointbreak/main/scripts/install.ps1 -OutFile install.ps1
Get-Content .\install.ps1
.\install.ps1
```
## Install with Cargo
The published crate is named `pointbreak` and installs the `pointbreak` command:
```sh
cargo install pointbreak
pointbreak --version
```
This path builds from source and requires a current Rust toolchain. The release installers do not.
## Upgrading to 0.7.0
Release `0.7.0` is a one-release hard cutover. Before its first use:
1. Stop every process that can write Review state.
2. Move owner-controlled state and config offline, preserving the directory contents:
| pre-`0.7.0` operational location | `0.7.0` location |
| --- | --- |
| `<repo>/.shore/` | `<repo>/.pointbreak/` |
| `<git-common-dir>/shore/` | `<git-common-dir>/pointbreak/` |
| `<git-common-dir>/shore.link.json` | `<git-common-dir>/pointbreak.link.json` |
| `$XDG_DATA_HOME/shore` | `$XDG_DATA_HOME/pointbreak` |
| `$HOME/.shore` | `$HOME/.pointbreak` |
| `%APPDATA%\shore` | `%APPDATA%\pointbreak` |
Move a linked clone's shared common-directory store once, not once per worktree. If you set an
explicit user home, move that directory to the location now selected by `POINTBREAK_HOME`.
3. Update environment and configuration references to the canonical `POINTBREAK_*` names and
Pointbreak paths.
4. Run `pointbreak store paths --repo <path> --format json` to confirm the canonical repository,
common-directory, binding, home, and key locations, then verify readback with commands such as
`pointbreak revision list` and `pointbreak history`.
Rollback is the inverse filesystem move performed while writers remain stopped. Pointbreak provides
no runtime fallback, compatibility alias, automatic migration, migration CLI, or dual read/write
window. The existing `pointbreak store migrate` command serves an older Pointbreak store-topology
change; it does not perform this `0.7.0` namespace cutover.
## Supported platforms
| `darwin-x64` | macOS | Intel 64-bit | `.tar.gz` |
| `darwin-arm64` | macOS | Apple silicon | `.tar.gz` |
| `linux-x64` | Linux (glibc) | x86-64 | `.tar.gz` |
| `linux-arm64` | Linux (glibc) | ARM64 | `.tar.gz` |
| `alpine-x64` | Linux (musl/Alpine) | x86-64 | `.tar.gz` |
| `alpine-arm64` | Linux (musl/Alpine) | ARM64 | `.tar.gz` |
| `win32-x64` | Windows | x86-64 | `.zip` |
| `win32-arm64` | Windows | ARM64 | `.zip` |
The macOS/Linux installer requires `tar`, plus either `curl` or `wget`, and either `sha256sum` or
the macOS-provided `shasum`. The Windows installer uses built-in PowerShell archive and hashing
commands.
## Manual download
Download the archive for your target and `checksums.txt` from the
[GitHub releases page](https://github.com/withpointbreak/pointbreak/releases). For example, on Apple
silicon macOS:
```sh
VERSION=0.7.0
TARGET=darwin-arm64
ARCHIVE="pointbreak-${VERSION}-${TARGET}.tar.gz"
BASE="https://github.com/withpointbreak/pointbreak/releases/download/v${VERSION}"
curl -fsSLO "${BASE}/${ARCHIVE}"
curl -fsSLO "${BASE}/checksums.txt"
install -m 0755 pointbreak "$HOME/.local/bin/pointbreak"
```
On Linux, replace `shasum -a 256` with `sha256sum`. Windows archives contain `pointbreak.exe` and can be
verified with `Get-FileHash -Algorithm SHA256` before using `Expand-Archive`.
Archives downloaded with `curl` on macOS normally need no quarantine adjustment. If a browser adds
the quarantine attribute, remove it from the extracted binary with:
```sh
xattr -d com.apple.quarantine ./pointbreak
```