Skip to content

diffr: choose agents and the summaries provider with diffr config init - #1054

Closed
sidkmenon wants to merge 1 commit into
sm/diffr-helpfrom
sm/diffr-config-init
Closed

sidkmenon wants to merge 1 commit into
sm/diffr-helpfrom
sm/diffr-config-init

Conversation

@sidkmenon

@sidkmenon sidkmenon commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

In a terminal, config init 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 it errors and
points to --json: config init --json prints the questions, a schema
for the answers and the key facts, and config init --json ANSWERS
(a file, or - for stdin) applies them. The key never goes through
--json. Key instructions are a TODO.

Claude Code is the only agent: its plugin is installed with
claude plugin install diffr@devfast, after adding or updating the
devfast marketplace. Plugins install before the config is saved, so a
failure stops the run with the config unchanged. Installed agents are
recorded in $XDG_STATE_HOME/diffr/install.json, outside the synced
config directory, so a rerun offers them as defaults and removes the
plugin from an agent that is no longer chosen.

Prompts use cliclack.

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

https://claude.ai/code/session_01LYrgBPQFAiQVjNV6D7UkQv

@sidkmenon
sidkmenon added this pull request to stack #1055 October 9, 2026 00:42
@sidkmenon sidkmenon changed the title sm/diffr config init diffr: choose agents and the summaries provider with diffr config init Oct 9, 2026
@sidkmenon
sidkmenon force-pushed the sm/diffr-config-init branch 2 times, most recently 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
In a terminal, `config init` 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 it errors and
points to `--json`: `config init --json` prints the questions, a schema
for the answers and the key facts, and `config init --json ANSWERS`
(a file, or - for stdin) applies them. The key never goes through
`--json`. Key instructions are a TODO.

Claude Code is the only agent: its plugin is installed with
`claude plugin install diffr@devfast`, after adding or updating the
devfast marketplace. Plugins install before the config is saved, so a
failure stops the run with the config unchanged. Installed agents are
recorded in $XDG_STATE_HOME/diffr/install.json, outside the synced
config directory, so a rerun offers them as defaults and removes the
plugin from an agent that is no longer chosen.

Prompts use cliclack.

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