@axelgar/opentree 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +32 -3
  2. package/package.json +5 -5
package/README.md CHANGED
@@ -15,7 +15,7 @@ opentree is a cross-platform CLI tool that manages multiple AI coding agent sess
15
15
  - **💬 Built-in Chat**: Every agent speaks the [Agent Client Protocol](https://agentclientprotocol.com) and runs inside opentree's own chat view — answer permissions, watch diffs, send images, and drive the agent from the dashboard without attaching
16
16
  - **📊 TUI Dashboard**: Interactive terminal UI for managing workspaces (press `?` for help)
17
17
  - **🔀 Parallel Development**: Work on multiple branches simultaneously without checkout overhead
18
- - **📝 Diff Viewer**: Review changes before committing
18
+ - **📝 Diff Viewer**: Read a workspace's changes with a file tree, search and syntax colour — and leave notes on lines that go to its agent as a prompt
19
19
  - **🚀 PR Creation**: Create GitHub PRs directly from the TUI with auto-generated title and body
20
20
  - **✈️ Autopilot**: After each agent turn, run your check command, feed failures back, and publish the PR when it passes — per workspace, opt-in
21
21
  - **📦 Dispatch**: `opentree dispatch 42 --headless` turns an issue into a PR with nobody watching, exiting with a code a script can branch on
@@ -119,7 +119,7 @@ opentree
119
119
  - `n` - Create new workspace (prompts for branch name, then base branch)
120
120
  - `i` - Create workspace from a GitHub issue number
121
121
  - `Enter` - Attach to selected workspace
122
- - `d` - Show diff for selected workspace (`pgup`/`pgdn` page it, `g`/`G` jump to the ends)
122
+ - `d` - Open the workspace's diff (see *Reviewing a diff* below)
123
123
  - `D` - Compare a fan-out group: every sibling's diff in one scroll
124
124
  - `W` - Promote a fan-out's winner: keep this sibling, delete the rest
125
125
  - `p` - Create PR for selected workspace (auto-generates title and body from commits)
@@ -144,6 +144,35 @@ opentree
144
144
  The mouse works too: the wheel scrolls, a click selects a row, and a
145
145
  double-click attaches to it.
146
146
 
147
+ ### Reviewing a diff
148
+
149
+ `d` opens the workspace's changes — committed and uncommitted, each under its
150
+ own heading — with the changed files down the left and the code on the right,
151
+ syntax-coloured, added and removed lines on a green and a red band. There is a
152
+ cursor, and everything else is a question about where it is. Press `?` inside
153
+ the view for the full card.
154
+
155
+ - `j`/`k`, `pgup`/`pgdn`, `g`/`G` move; `]`/`[` jump between hunks, `n`/`p`
156
+ between files; a click on a file in the tree jumps to it, a click on a line
157
+ takes the cursor there
158
+ - `space` ticks the file under the cursor as reviewed; `t` hides the tree
159
+ - `/` finds: type, `enter` keeps the query, and `n`/`N` step its matches until
160
+ `esc` clears it (with no query, `n` steps files again)
161
+ - `L` shows line numbers, `w` wraps long lines, `W` marks the words that
162
+ changed within a changed line
163
+ - `a` or `enter` writes a note on the line under the cursor, `A` on the whole
164
+ file; `@` lists them, `x` deletes the one under the cursor
165
+ - `s` sends every note to the workspace's agent as one prompt: the path and
166
+ line, the code quoted, and what you said about it. A note that ends in `?`
167
+ (or carries `??` anywhere) is asked as a question rather than given as an
168
+ instruction — *why is this recomputed every frame?* gets an answer, *cache
169
+ this* gets a change.
170
+ - `esc` closes; with notes unsent it warns first and closes on the second press
171
+
172
+ `D` opens a fan-out group the same way, every sibling's diff in one view with
173
+ the tree grouped by sibling. Notes cannot be sent from there — three agents,
174
+ one prompt, no right answer about who gets it.
175
+
147
176
  Each row also carries what its agent is doing — working, waiting on a
148
177
  permission, stopped — plus cost and context use, read live from the chat's
149
178
  control socket. Open PRs show **CI check status** badges.
@@ -463,7 +492,7 @@ dashboard messages whichever you like.
463
492
  The dashboard shows the group as one thing: siblings sort together under
464
493
  every sort mode, each row wears a `⑂ feat/x` badge, and the cost, context
465
494
  and diff numbers already on every row become the scoreboard. `D` opens the
466
- comparison — every sibling's diff in one scroll, sectioned by agent.
495
+ comparison — every sibling's diff in one view, the file tree grouped by agent.
467
496
 
468
497
  Then pick:
469
498
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axelgar/opentree",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "Git worktree manager CLI for orchestrating parallel AI coding sessions",
5
5
  "repository": {
6
6
  "type": "git",
@@ -17,10 +17,10 @@
17
17
  "NOTICE"
18
18
  ],
19
19
  "optionalDependencies": {
20
- "@axelgar/opentree-linux-x64": "1.2.0",
21
- "@axelgar/opentree-linux-arm64": "1.2.0",
22
- "@axelgar/opentree-darwin-x64": "1.2.0",
23
- "@axelgar/opentree-darwin-arm64": "1.2.0"
20
+ "@axelgar/opentree-linux-x64": "1.3.0",
21
+ "@axelgar/opentree-linux-arm64": "1.3.0",
22
+ "@axelgar/opentree-darwin-x64": "1.3.0",
23
+ "@axelgar/opentree-darwin-arm64": "1.3.0"
24
24
  },
25
25
  "engines": {
26
26
  "node": ">=18"