Skip to content

diffr: install the newest release with install.sh - #1056

Closed
sidkmenon wants to merge 1 commit into
sm/diffr-config-initfrom
sm/diffr-install-sh
Closed

sidkmenon wants to merge 1 commit into
sm/diffr-config-initfrom
sm/diffr-install-sh

Conversation

@sidkmenon

@sidkmenon sidkmenon commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

curl -fsSL https://install.dev.fast/diffr | sh finds the newest
diffr/X.Y.Z release of devdotfast/whiteboard (or DIFFR_VERSION), checks
its archive against the release's SHA256SUMS, and puts diffr and
diffr-tui in DIFFR_INSTALL_DIR, ~/.local/bin by default. Then it runs
diffr config init on /dev/tty when there is a terminal, and otherwise
prints the config init --json command for an agent.

The release already publishes the archives and SHA256SUMS, so the
release workflow does not change.

https://claude.ai/code/session_01LYrgBPQFAiQVjNV6D7UkQv

@sidkmenon
sidkmenon added this pull request to stack #1055 October 9, 2026 00:55
@sidkmenon
sidkmenon force-pushed the sm/diffr-install-sh branch from 24a75f5 to f9af9e5 Compare October 9, 2026 02:40
@sidkmenon
sidkmenon force-pushed the sm/diffr-config-init branch from cb3c935 to d6117b5 Compare October 9, 2026 02:40
@sidkmenon
sidkmenon removed this pull request from stack #1055 October 9, 2026 02:40
@sidkmenon
sidkmenon added this pull request to stack #1060 October 9, 2026 02:40
@sidkmenon
sidkmenon removed this pull request from stack #1060 October 9, 2026 02:40
@sidkmenon
sidkmenon force-pushed the sm/diffr-install-sh branch 2 times, most recently from d1853ee to 6545169 Compare October 9, 2026 04:09
`curl -fsSL https://install.dev.fast/diffr | sh` finds the newest
`diffr/X.Y.Z` release of devdotfast/whiteboard (or DIFFR_VERSION), checks
its archive against the release's SHA256SUMS, and puts diffr and
diffr-tui in DIFFR_INSTALL_DIR, ~/.local/bin by default. Then it runs
`diffr config init` on /dev/tty when there is a terminal, and otherwise
prints the `config init --json` command for an agent.

The release already publishes the archives and SHA256SUMS, so the
release workflow does not change.

Claude-Session: https://claude.ai/code/session_01LYrgBPQFAiQVjNV6D7UkQv
Agent-Session: 01a11aca-5007-7b80-ad35-c0a0f746a05d
Agent-Session: ec5d2c35-3045-44f3-9c41-ba4378797c8e
Agent-Session: 01a11cf1-8ad4-7910-b120-b0d622692a95
Agent-Session: 01a11ded-d896-7251-bf8f-c71bf07fd283
Agent-Session: 01a11e03-81df-7d63-bfa5-953f535444d2
Agent-Session: 01a11e0a-d042-71d2-9bc9-ac7b652487d1
Agent-Session: b5985b3c-e5d2-4bb4-b6ac-7fec168d8328
Agent-Session: 7ba69deb-2039-47e6-900f-0f30a79e167a
Agent-Session: 01a11ecf-aa86-7a81-a5e6-c5dfe72d48eb
@sidkmenon

Copy link
Copy Markdown
Contributor Author

Folded into #1066, which carries these commits rebased onto main beneath #1019.

@sidkmenon sidkmenon closed this Oct 9, 2026
sidkmenon added a commit that referenced this pull request Oct 9, 2026
One command installs diffr and its Claude Code plugin:

```sh
curl -fsSL https://install.dev.fast/diffr | sh
```

Commit by commit:
- **`DIFFR_CONFIG_DIR`**: a host such as Whiteboard can keep its own
diffr config file. Without the variable, diffr reads the same file as
before.
- **`--help` guides**: `diffr --help` ends with a guide for agents
(`docs/agents.md`), and `diffr config --help` with the plugins guide
(`docs/plugin.md`). `-h` stays short. An agent runs `diffr --help` in
its shell, so what it reads always matches the installed diffr.
- **`diffr config init`**: in a terminal, asks which agents get the
diffr plugin and which provider writes summaries, and asks for a key
only when neither the config nor the environment has one. Without a
terminal, `config init --json` prints the questions and a schema, and
`config init --json ANSWERS` applies them; the key never goes through
`--json`. Claude Code is the only agent: `claude plugin install
diffr@devfast` after adding or updating the devfast marketplace, the
same marketplace Whiteboard's plugin uses. Installed agents are recorded
in `$XDG_STATE_HOME/diffr/install.json`, outside the synced config
directory.
- **`install.sh`**: finds the newest `diffr/X.Y.Z` release (or
`DIFFR_VERSION`), checks the archive against the release's SHA256SUMS,
installs diffr and diffr-tui in `DIFFR_INSTALL_DIR` (`~/.local/bin` by
default), then runs `diffr config init` on a first install.
- **Install module**: what `config init` installs moves to `install.rs`,
so `upgrade` and `uninstall` use it without the prompts. No behavior
change.
- **`diffr upgrade` and `diffr uninstall`**: work the way diffr was
installed, read from where the binary is (Homebrew, Cargo, inside
`node_modules`: refuse, otherwise install.sh). After an upgrade, each
recorded agent updates its plugin. `uninstall` keeps `~/.config/diffr`,
which Whiteboard shares.
- **Docs**: the plugins guide for agents, the man page's commands, files
and environment, and a README that leads with the install script.
- **Summaries**: `config init` asks yes or no for pseudocode summaries,
then the provider, then its key.
- **PATH and failures**: install.sh offers to put diffr on PATH and
points install failures at the issue tracker.
- **Steps**: setup shows each step as it runs.

## Before the install route goes live
- Release `diffr/0.1.18` after this and #1019 merge. install.sh installs
the newest `diffr/*` release; 0.1.17 has no `config init` or `upgrade`,
and the plugin needs 0.1.18.
- Then merge Fix-Fast/dev#1119, which points `install.dev.fast/diffr` at
`diffr/install.sh` on main.

## Testing
- `cargo fmt --check` and `cargo test`, including the CLI tests for
`DIFFR_CONFIG_DIR`, the `--help` guides, `config init --json`, `upgrade`
and `uninstall`.

Replaces #1039, #1040, #1054, #1056, #1057 and #1063.

Stack: #1065 → #1066 → #1019 → #1023 → #1024 → #1025 → #1026

https://claude.ai/code/session_01HNbERuYJjvvAjBN19zEDbo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant