@diffohq/diffo 0.3.0 → 0.4.1
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.
- package/README.md +22 -4
- package/dist/cli.mjs +524 -13
- package/dist/client/assets/{abnfDiagram-O67JEVCF-DdDBSVZ4.js → abnfDiagram-O67JEVCF-b6l_FGHi.js} +1 -1
- package/dist/client/assets/{arc-BgNb6rn9.js → arc-Cz0jZwLH.js} +1 -1
- package/dist/client/assets/architecture-7GRP2DOG-BXYREMFQ.js +1 -0
- package/dist/client/assets/{architectureDiagram-NJMV4G6O-HNLU6Z_V.js → architectureDiagram-NJMV4G6O-CJdtqKce.js} +1 -1
- package/dist/client/assets/{blockDiagram-BEXU5L5S-DO434Dqm.js → blockDiagram-BEXU5L5S-Ci-lnLGN.js} +1 -1
- package/dist/client/assets/{c4Diagram-YGBWAQC7-CkhXDWcc.js → c4Diagram-YGBWAQC7-DDO2mTMB.js} +1 -1
- package/dist/client/assets/channel-CtvNwuQX.js +1 -0
- package/dist/client/assets/{chunk-3FUC2YCW-DTfKImVL.js → chunk-3FUC2YCW-VyswqFt3.js} +1 -1
- package/dist/client/assets/{chunk-5DYCD2WN-9Pj_Xuzv.js → chunk-5DYCD2WN-B4MBZW5P.js} +1 -1
- package/dist/client/assets/{chunk-742MDFTN-DRQNNbBo.js → chunk-742MDFTN-Cxvmvrid.js} +1 -1
- package/dist/client/assets/{chunk-7INBJB4K-BqnHF3P0.js → chunk-7INBJB4K-DkBnRFbH.js} +1 -1
- package/dist/client/assets/{chunk-7M6MHVWA-NTwtPxj_.js → chunk-7M6MHVWA-BvJgBwEi.js} +1 -1
- package/dist/client/assets/{chunk-7PRAP22T-reFtaiUY.js → chunk-7PRAP22T-OfiMNi_y.js} +1 -1
- package/dist/client/assets/{chunk-GTNCS2PH-BbSQqqTd.js → chunk-GTNCS2PH-BodN5cRQ.js} +1 -1
- package/dist/client/assets/{chunk-GWA4HPMP-B3OAiKhC.js → chunk-GWA4HPMP-KifxxZcy.js} +1 -1
- package/dist/client/assets/{chunk-MBY4JIJT-CNIWhzdY.js → chunk-MBY4JIJT-rw02bHlj.js} +1 -1
- package/dist/client/assets/{chunk-NETBCI7D-Cu2GMg5A.js → chunk-NETBCI7D-CWjhZoou.js} +1 -1
- package/dist/client/assets/{chunk-O7XYJQB3-C616frX3.js → chunk-O7XYJQB3-CyxnSfZ3.js} +1 -1
- package/dist/client/assets/{chunk-UA2S7LBM-_7jUrSu1.js → chunk-UA2S7LBM-BReIFgsu.js} +1 -1
- package/dist/client/assets/{chunk-WEXAMYUT--WmuTjt8.js → chunk-WEXAMYUT-DHwMy8v7.js} +1 -1
- package/dist/client/assets/{chunk-XXDRQBXY-CH68Fn6G.js → chunk-XXDRQBXY-C398QZbS.js} +1 -1
- package/dist/client/assets/{chunk-Z7XXMR3K-CMGWkbdd.js → chunk-Z7XXMR3K-hEV1GU64.js} +1 -1
- package/dist/client/assets/{chunk-ZIGJFQKS-Bupo8UEA.js → chunk-ZIGJFQKS-DJJL7llO.js} +1 -1
- package/dist/client/assets/{classDiagram-v2-NBCMYWYE-BlYlsN2U.js → classDiagram-v2-NBCMYWYE-pSGZI880.js} +1 -1
- package/dist/client/assets/{core-BuHBGQx-.js → core-C05I4wHV.js} +1 -1
- package/dist/client/assets/{cose-bilkent-JH36ORCC-BtFdPq63.js → cose-bilkent-JH36ORCC-DNV8Dqd8.js} +1 -1
- package/dist/client/assets/{cynefin-OW5HDTMX-DQ0j2-fq.js → cynefin-OW5HDTMX-DF-6FOgS.js} +1 -1
- package/dist/client/assets/{cynefinDiagram-VND7K2PF-DnctQE5u.js → cynefinDiagram-VND7K2PF-D3-iJq2J.js} +1 -1
- package/dist/client/assets/{dagre-6A5THRUB-u940AeXp.js → dagre-6A5THRUB-C9FDZkaa.js} +1 -1
- package/dist/client/assets/{diagram-22UHCM2B-B1jzZKtP.js → diagram-22UHCM2B-CfSJBDyN.js} +1 -1
- package/dist/client/assets/{diagram-3UASUU5V-BY_6wxmf.js → diagram-3UASUU5V-D946baYo.js} +1 -1
- package/dist/client/assets/{diagram-ATOU4E4O-CTsYtnJJ.js → diagram-ATOU4E4O-CGrjukoA.js} +1 -1
- package/dist/client/assets/{diagram-CDSNMT55-DuEJO9EQ.js → diagram-CDSNMT55-B47UPtWq.js} +1 -1
- package/dist/client/assets/{diagram-MLGK6HIB-CZ10U2Mk.js → diagram-MLGK6HIB-D06yEd5R.js} +1 -1
- package/dist/client/assets/{diagram-MPIPVDR6-CkO6cJlF.js → diagram-MPIPVDR6-BRUBT2B9.js} +1 -1
- package/dist/client/assets/{dist-DkqXbsqN.js → dist-BfTRyLGm.js} +1 -1
- package/dist/client/assets/{dist-DFkgQY1o.js → dist-DVw88SBM.js} +1 -1
- package/dist/client/assets/{ebnfDiagram-ZINNZB2B-BJtnMhOp.js → ebnfDiagram-ZINNZB2B-BnuExfrd.js} +1 -1
- package/dist/client/assets/{elk-276RUBZZ-CShSerV4.js → elk-276RUBZZ-BmdcLjR9.js} +1 -1
- package/dist/client/assets/{engine-oniguruma-DDtqknzG.js → engine-oniguruma-Bw1dOuOO.js} +1 -1
- package/dist/client/assets/{erDiagram-OPXOYQCR-2VvQxgaY.js → erDiagram-OPXOYQCR-CKCR3jQT.js} +1 -1
- package/dist/client/assets/eventmodeling-NTZA5JFV-C7ouopD6.js +1 -0
- package/dist/client/assets/flowDiagram-KWPJA3E3-C2o4wCpi.js +1 -0
- package/dist/client/assets/{ganttDiagram-FUAMR5RP-hQJ3ga2L.js → ganttDiagram-FUAMR5RP-BwkoweG7.js} +1 -1
- package/dist/client/assets/{gitGraph-4MIJSDKK-CVt38-tW.js → gitGraph-4MIJSDKK-M7_hHVyH.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-X574FWY7-X6_FAtp_.js → gitGraphDiagram-X574FWY7-BVm_sLT_.js} +1 -1
- package/dist/client/assets/index-BEG1ZxrX.css +1 -0
- package/dist/client/assets/index-BwDjlzOZ.js +91 -0
- package/dist/client/assets/{info-A6RAGUB7-CsIS2T8y.js → info-A6RAGUB7-DPBs3m_X.js} +1 -1
- package/dist/client/assets/{infoDiagram-VRGFBTTK-CNesth4F.js → infoDiagram-VRGFBTTK-DDb3KyOP.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-OU5B5YK6-C3uowhy1.js → ishikawaDiagram-OU5B5YK6-CPt4RDlr.js} +1 -1
- package/dist/client/assets/{journeyDiagram-ZHPQQLJL-Bti7zdNB.js → journeyDiagram-ZHPQQLJL-ECQSHJ0N.js} +1 -1
- package/dist/client/assets/{kanban-definition-PNTS6WVX-Co13mJCW.js → kanban-definition-PNTS6WVX-tAmonxA8.js} +1 -1
- package/dist/client/assets/{line-CodMwzVg.js → line-x6vAh41a.js} +1 -1
- package/dist/client/assets/{linear-D9CKVpWI.js → linear-BqczUNss.js} +1 -1
- package/dist/client/assets/{mermaid-parser.core-OY76TKUN.js → mermaid-parser.core-siQPZsry.js} +3 -3
- package/dist/client/assets/{mermaid.core-DWE2Tn2R.js → mermaid.core-CLHTQVF-.js} +4 -4
- package/dist/client/assets/{mindmap-definition-NLK3R4M7-DJ3MEvZg.js → mindmap-definition-NLK3R4M7-C9fnEdyl.js} +1 -1
- package/dist/client/assets/{packet-AYTQ26CC-CW1j_hFQ.js → packet-AYTQ26CC-DAeK0Q4n.js} +1 -1
- package/dist/client/assets/{pegDiagram-GJSIUBJH-hOvLvBiF.js → pegDiagram-GJSIUBJH-BrWBFYPO.js} +1 -1
- package/dist/client/assets/{pie-WAS4IAKB-D1KPtuKA.js → pie-WAS4IAKB-CnieihkO.js} +1 -1
- package/dist/client/assets/{pieDiagram-5QR66LMP-CJN1M2lG.js → pieDiagram-5QR66LMP-Bp5f6Eal.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-O4NWA36T-DOysLQ6R.js → quadrantDiagram-O4NWA36T-ECuLA3RS.js} +1 -1
- package/dist/client/assets/{radar-RG4KPBEZ-B7XCBnIS.js → radar-RG4KPBEZ-BJXkERy0.js} +1 -1
- package/dist/client/assets/{railroad-74A4TZTK-0nmMIDEw.js → railroad-74A4TZTK-Di61fiV5.js} +1 -1
- package/dist/client/assets/railroad-abnf-HS5TGJTU-DCBYLLLl.js +1 -0
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-VWOalqH1.js +1 -0
- package/dist/client/assets/railroad-peg-WCYAUIDC-BTTWaHra.js +1 -0
- package/dist/client/assets/{railroadDiagram-XR7U4H2S-BXbeU-WV.js → railroadDiagram-XR7U4H2S-Dn2WPOQe.js} +1 -1
- package/dist/client/assets/{requirementDiagram-PLB6GJNP-D3G2HYv-.js → requirementDiagram-PLB6GJNP-uuvtvHmq.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-IPEJSGJF-CFSa-Gk4.js → sankeyDiagram-IPEJSGJF-BXk6X0af.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-PO4LG4MO-BvmuQTlz.js → sequenceDiagram-PO4LG4MO-BsPoSXhg.js} +1 -1
- package/dist/client/assets/{src-CplSIRuf.js → src-B4djUhOi.js} +1 -1
- package/dist/client/assets/{stateDiagram-v2-GCMORJYK-C_ceCfHy.js → stateDiagram-v2-GCMORJYK-cCml5k6n.js} +1 -1
- package/dist/client/assets/{swimlanes-2SLR337P-D-n44lEC.js → swimlanes-2SLR337P-Dh7v55ZA.js} +1 -1
- package/dist/client/assets/swimlanesDiagram-TC7HE7FX-q8VF72XO.js +8 -0
- package/dist/client/assets/{timeline-definition-EJHVYXUP-DKYNs1Uj.js → timeline-definition-EJHVYXUP-LFjkFV14.js} +1 -1
- package/dist/client/assets/{treeView-Q6P3EWNA-COW2UiIS.js → treeView-Q6P3EWNA-RYZHSXeB.js} +1 -1
- package/dist/client/assets/{treemap-WGGIJYW6-DJOuJZmF.js → treemap-WGGIJYW6-UVw_-EPz.js} +1 -1
- package/dist/client/assets/{usecaseDiagram-POWQR4AR-BTmpbeJZ.js → usecaseDiagram-POWQR4AR-DZfPogyb.js} +1 -1
- package/dist/client/assets/{vennDiagram-UO4OBE2U-C37AKEaJ.js → vennDiagram-UO4OBE2U-CN7Ldg-2.js} +1 -1
- package/dist/client/assets/{wardley-WFR3VGLG-CpVTtNOC.js → wardley-WFR3VGLG-CXPbbIy_.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-VNRHLVJA-ja-hiiVC.js → wardleyDiagram-VNRHLVJA-5p0A7_g6.js} +1 -1
- package/dist/client/assets/{xychartDiagram-PMCCYNJV-BsDoacSf.js → xychartDiagram-PMCCYNJV-gJ7xwZXO.js} +1 -1
- package/dist/client/index.html +2 -2
- package/package.json +1 -1
- package/plugin.json +1 -1
- package/skills/diffo/SKILL.md +6 -4
- package/dist/client/assets/architecture-7GRP2DOG-CYv-P09J.js +0 -1
- package/dist/client/assets/channel-eN698CVO.js +0 -1
- package/dist/client/assets/eventmodeling-NTZA5JFV-Ur4Uzv5y.js +0 -1
- package/dist/client/assets/flowDiagram-KWPJA3E3-BQS1w4s1.js +0 -1
- package/dist/client/assets/index-BpeDzG-X.css +0 -1
- package/dist/client/assets/index-t7j89PJp.js +0 -91
- package/dist/client/assets/railroad-abnf-HS5TGJTU-DJU_abQP.js +0 -1
- package/dist/client/assets/railroad-ebnf-LZEXJU2U-_TwNbNw6.js +0 -1
- package/dist/client/assets/railroad-peg-WCYAUIDC-CAYsrf-p.js +0 -1
- package/dist/client/assets/swimlanesDiagram-TC7HE7FX-DrlgJMk7.js +0 -8
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@ come back as fixes.
|
|
|
21
21
|
[](LICENSE)
|
|
22
22
|
[](#quick-start)
|
|
23
23
|
[](https://diffohq.github.io/diffo/)
|
|
24
|
-
[](#contributing)
|
|
25
25
|
|
|
26
26
|
</div>
|
|
27
27
|
|
|
@@ -143,7 +143,7 @@ nothing to configure.
|
|
|
143
143
|
</td>
|
|
144
144
|
</tr>
|
|
145
145
|
<tr>
|
|
146
|
-
<td
|
|
146
|
+
<td width="50%">
|
|
147
147
|
|
|
148
148
|
**It explains itself**
|
|
149
149
|
|
|
@@ -153,10 +153,27 @@ one orienting comment: a sentence on what the change does, plus a small
|
|
|
153
153
|
orients, and it never pre-reviews: no verdicts, nothing is "fine". That judgement is the
|
|
154
154
|
part it doesn't get to make.
|
|
155
155
|
|
|
156
|
+
</td>
|
|
157
|
+
<td width="50%">
|
|
158
|
+
|
|
159
|
+
**Read it in the right order**
|
|
160
|
+
|
|
161
|
+
A diff arrives alphabetically, which is almost never the order to read it in. Ask, and the
|
|
162
|
+
agent posts **layers**: the change as ordered steps, each with a title, a summary, and its
|
|
163
|
+
files. You read one layer at a time; `]` steps to the next. Anything the agent touches after
|
|
164
|
+
posting gathers in a *Since your review* layer, so nothing hides outside the plan.
|
|
165
|
+
|
|
156
166
|
</td>
|
|
157
167
|
</tr>
|
|
158
168
|
</table>
|
|
159
169
|
|
|
170
|
+
<picture>
|
|
171
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/layers-dark.gif">
|
|
172
|
+
<img alt="A 23-file change, every file folded. The header chip reads agent · suggests layers; the reviewer clicks it, eight layers land, and picking the first shows its summary card. ] steps to layers 2 and 3, where the reviewer asks on a line and the agent answers in the thread." src="docs/assets/layers.gif" width="100%">
|
|
173
|
+
</picture>
|
|
174
|
+
|
|
175
|
+
<p align="center"><sub>Layers, in one take: the agent offers an outline, the reviewer asks, and a 23-file change arrives as eight steps to read in order. Three layers in, a question on a line comes back answered in the thread. A real server and a real <code>diffo poll</code> on the other end; only the agent's thinking time is cut.</sub></p>
|
|
176
|
+
|
|
160
177
|
## Where it fits
|
|
161
178
|
|
|
162
179
|
Diffo doesn't replace pull request review, and it isn't trying to. A pull request is how you
|
|
@@ -202,7 +219,7 @@ cheapest to change.
|
|
|
202
219
|
| --- | --- |
|
|
203
220
|
| [**Your first review**](https://diffohq.github.io/diffo/tutorial) | The whole loop end to end, about five minutes |
|
|
204
221
|
| [**Getting started**](https://diffohq.github.io/diffo/guide/getting-started) | Install, and where each agent gets wired |
|
|
205
|
-
| [**The review loop**](https://diffohq.github.io/diffo/guide/the-loop) | Reading, commenting, and what the agent receives |
|
|
222
|
+
| [**The review loop**](https://diffohq.github.io/diffo/guide/the-loop) | Reading, layers, commenting, and what the agent receives |
|
|
206
223
|
| [**How it works**](https://diffohq.github.io/diffo/guide/how-it-works) | The components and the server lifecycle |
|
|
207
224
|
| [**The agent side**](https://diffohq.github.io/diffo/agents) | The agent protocol: every command, every payload |
|
|
208
225
|
| [**Architecture**](https://diffohq.github.io/diffo/architecture) | Diff pipeline, delivery queue, SQLite state |
|
|
@@ -214,7 +231,7 @@ cheapest to change.
|
|
|
214
231
|
TypeScript on Node >= 24: a [Hono](https://hono.dev) server over loopback serving a React 19
|
|
215
232
|
UI, live updates over server-sent events from one recursive filesystem watch, and state in a
|
|
216
233
|
single SQLite file at `~/.diffo/diffo.db` through the runtime's built-in `node:sqlite`, so
|
|
217
|
-
there is no database to install. **Zero network calls.** 1,
|
|
234
|
+
there is no database to install. **Zero network calls.** 1,143 tests across 63 files.
|
|
218
235
|
|
|
219
236
|
Reviews are scoped per repo **and branch**, and the server is loopback-only, rejecting
|
|
220
237
|
non-loopback `Host` and `Origin` headers so a web page can't reach into your repo through
|
|
@@ -254,6 +271,7 @@ daily — and the edges are still moving. What works today:
|
|
|
254
271
|
|
|
255
272
|
- [x] [Live review of any changeset](https://diffohq.github.io/diffo/guide/how-it-works): the working tree, or anything since `--base`.
|
|
256
273
|
- [x] [The comment loop](https://diffohq.github.io/diffo/guide/the-loop): threads that reach the session that wrote the code.
|
|
274
|
+
- [x] [Layers](https://diffohq.github.io/diffo/guide/the-loop#read-it-in-layers): the agent's reading plan, one ordered step at a time.
|
|
257
275
|
- [x] [One setup, every agent](https://diffohq.github.io/diffo/guide/getting-started): Claude Code, Codex, Cursor, VS Code, Copilot CLI, Gemini CLI, Amp, Goose, OpenCode.
|
|
258
276
|
- [x] [Reading tools](https://diffohq.github.io/diffo/reference/keyboard-shortcuts): unified and split diffs, word-level marks, coverage tracking.
|
|
259
277
|
|