@diffohq/diffo 0.10.0 → 0.12.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 (100) hide show
  1. package/README.md +19 -29
  2. package/dist/cli.mjs +635 -45
  3. package/dist/client/assets/{abnfDiagram-O67JEVCF-DBlSJW53.js → abnfDiagram-O67JEVCF-Dz8VXQP2.js} +1 -1
  4. package/dist/client/assets/{arc-BZZ_ET2N.js → arc-BzCu5Txo.js} +1 -1
  5. package/dist/client/assets/architecture-7GRP2DOG-DXR42FQE.js +1 -0
  6. package/dist/client/assets/{architectureDiagram-NJMV4G6O-CmS7e2K4.js → architectureDiagram-NJMV4G6O-DkNhFqaV.js} +1 -1
  7. package/dist/client/assets/{blockDiagram-BEXU5L5S-Kj8H2ODF.js → blockDiagram-BEXU5L5S-H5iGDrKH.js} +1 -1
  8. package/dist/client/assets/{c4Diagram-YGBWAQC7-CixbFJxb.js → c4Diagram-YGBWAQC7-BCWmLGS5.js} +1 -1
  9. package/dist/client/assets/channel-SN11_URN.js +1 -0
  10. package/dist/client/assets/{chunk-3FUC2YCW-CRdo0Gw5.js → chunk-3FUC2YCW-ca8N6xua.js} +1 -1
  11. package/dist/client/assets/{chunk-5DYCD2WN-Bw9n6qPh.js → chunk-5DYCD2WN-PNfMjtmJ.js} +1 -1
  12. package/dist/client/assets/{chunk-742MDFTN-BsvOSyDz.js → chunk-742MDFTN-BCGjcJss.js} +1 -1
  13. package/dist/client/assets/{chunk-7INBJB4K-ie7EoCoW.js → chunk-7INBJB4K-CrKz2qgm.js} +1 -1
  14. package/dist/client/assets/{chunk-7M6MHVWA-DJlbYDLH.js → chunk-7M6MHVWA--GjKV-c3.js} +1 -1
  15. package/dist/client/assets/{chunk-7PRAP22T-Hs5y39V8.js → chunk-7PRAP22T-DjHxtzzp.js} +1 -1
  16. package/dist/client/assets/{chunk-GTNCS2PH-DNq6Ojc7.js → chunk-GTNCS2PH-Dz4v2kmQ.js} +1 -1
  17. package/dist/client/assets/{chunk-GWA4HPMP-vgn0kxbp.js → chunk-GWA4HPMP-BSgkR_3v.js} +1 -1
  18. package/dist/client/assets/{chunk-MBY4JIJT-C7fMuqSl.js → chunk-MBY4JIJT-Bq7wFcIu.js} +1 -1
  19. package/dist/client/assets/{chunk-NETBCI7D-ZJtjvGwt.js → chunk-NETBCI7D-CcPc99um.js} +1 -1
  20. package/dist/client/assets/{chunk-O7XYJQB3-DESjnZZT.js → chunk-O7XYJQB3-DmV54lZx.js} +1 -1
  21. package/dist/client/assets/{chunk-UA2S7LBM-Cmf087s8.js → chunk-UA2S7LBM-BShAYBVS.js} +1 -1
  22. package/dist/client/assets/{chunk-WEXAMYUT-U1TW5ZAF.js → chunk-WEXAMYUT-D19EF-TI.js} +1 -1
  23. package/dist/client/assets/{chunk-XXDRQBXY-D1B1IYm1.js → chunk-XXDRQBXY-DYNSGGeq.js} +1 -1
  24. package/dist/client/assets/{chunk-Z7XXMR3K-D3BUH0qv.js → chunk-Z7XXMR3K-CUy3HgJd.js} +1 -1
  25. package/dist/client/assets/{chunk-ZIGJFQKS-Bx6yZhwg.js → chunk-ZIGJFQKS-D9UToYrl.js} +1 -1
  26. package/dist/client/assets/{classDiagram-v2-NBCMYWYE-sjiBGJdD.js → classDiagram-v2-NBCMYWYE-Chemkzmq.js} +1 -1
  27. package/dist/client/assets/{core-6IJUkucC.js → core-DHnkJax7.js} +1 -1
  28. package/dist/client/assets/{cose-bilkent-JH36ORCC-xaMCCs4V.js → cose-bilkent-JH36ORCC-Bewr0AYG.js} +1 -1
  29. package/dist/client/assets/{cynefin-OW5HDTMX-C5k9L5NF.js → cynefin-OW5HDTMX-CirO8zKP.js} +1 -1
  30. package/dist/client/assets/{cynefinDiagram-VND7K2PF-BqiILl4G.js → cynefinDiagram-VND7K2PF-DGrP6yY_.js} +1 -1
  31. package/dist/client/assets/{dagre-6A5THRUB-BtgX5KvU.js → dagre-6A5THRUB-Co00MmNX.js} +1 -1
  32. package/dist/client/assets/{diagram-22UHCM2B-BcDIKY8C.js → diagram-22UHCM2B-CyINGoxd.js} +1 -1
  33. package/dist/client/assets/{diagram-3UASUU5V-C-DrBJ6K.js → diagram-3UASUU5V-9-GW6GaI.js} +1 -1
  34. package/dist/client/assets/{diagram-ATOU4E4O-B0W6FX6y.js → diagram-ATOU4E4O-BQ-r4IMq.js} +1 -1
  35. package/dist/client/assets/{diagram-CDSNMT55-D1O9NYQ3.js → diagram-CDSNMT55-wDvP2y-X.js} +1 -1
  36. package/dist/client/assets/{diagram-MLGK6HIB-WC8izmk2.js → diagram-MLGK6HIB-BnQVNLhl.js} +1 -1
  37. package/dist/client/assets/{diagram-MPIPVDR6-D5ko9V-k.js → diagram-MPIPVDR6-CvQmhTpZ.js} +1 -1
  38. package/dist/client/assets/{dist-BBmACywa.js → dist-Be-c8hXl.js} +1 -1
  39. package/dist/client/assets/{dist-Bss8uvIz.js → dist-Deo8rbAn.js} +1 -1
  40. package/dist/client/assets/{ebnfDiagram-ZINNZB2B-BFIYDkrv.js → ebnfDiagram-ZINNZB2B-D_lCUmG0.js} +1 -1
  41. package/dist/client/assets/{elk-276RUBZZ-WsSc0CyB.js → elk-276RUBZZ-rxjXBYWb.js} +1 -1
  42. package/dist/client/assets/{engine-oniguruma-DmL6leO7.js → engine-oniguruma-BJ2pZwxc.js} +1 -1
  43. package/dist/client/assets/{erDiagram-OPXOYQCR-CjaKeGKh.js → erDiagram-OPXOYQCR-Dfd_ZBo9.js} +1 -1
  44. package/dist/client/assets/eventmodeling-NTZA5JFV-C3U-p4vY.js +1 -0
  45. package/dist/client/assets/flowDiagram-KWPJA3E3-Czdi2rFR.js +1 -0
  46. package/dist/client/assets/{ganttDiagram-FUAMR5RP-22OFMoat.js → ganttDiagram-FUAMR5RP-C1eOGnpc.js} +1 -1
  47. package/dist/client/assets/{gitGraph-4MIJSDKK-BP0idayz.js → gitGraph-4MIJSDKK-BJDMPbrH.js} +1 -1
  48. package/dist/client/assets/{gitGraphDiagram-X574FWY7-Cx5rPzjc.js → gitGraphDiagram-X574FWY7-COQk3bFW.js} +1 -1
  49. package/dist/client/assets/index-B8R5lnLt.css +1 -0
  50. package/dist/client/assets/index-DOSGiRCe.js +93 -0
  51. package/dist/client/assets/{info-A6RAGUB7-BvZZu8IY.js → info-A6RAGUB7-YKHokYRL.js} +1 -1
  52. package/dist/client/assets/{infoDiagram-VRGFBTTK-Bbk1aZco.js → infoDiagram-VRGFBTTK-6uJdW7Uf.js} +1 -1
  53. package/dist/client/assets/{ishikawaDiagram-OU5B5YK6-DbyWrUBY.js → ishikawaDiagram-OU5B5YK6-BF3c1rog.js} +1 -1
  54. package/dist/client/assets/{journeyDiagram-ZHPQQLJL-Ka7zlagO.js → journeyDiagram-ZHPQQLJL-DuWY0HyM.js} +1 -1
  55. package/dist/client/assets/{kanban-definition-PNTS6WVX-Q_NAEdRt.js → kanban-definition-PNTS6WVX-DpxFXlZZ.js} +1 -1
  56. package/dist/client/assets/{line-SDAA9fEr.js → line-u-U51JAx.js} +1 -1
  57. package/dist/client/assets/{linear-BPf2OGUv.js → linear-Dpw7ISW8.js} +1 -1
  58. package/dist/client/assets/{mermaid-parser.core-BjLzFSoy.js → mermaid-parser.core-NVWntgrf.js} +3 -3
  59. package/dist/client/assets/{mermaid.core-vvUsQbpX.js → mermaid.core-B93MCzyy.js} +4 -4
  60. package/dist/client/assets/{mindmap-definition-NLK3R4M7-DuVzu_4M.js → mindmap-definition-NLK3R4M7-CIFJqrKY.js} +1 -1
  61. package/dist/client/assets/{packet-AYTQ26CC-A66za-wc.js → packet-AYTQ26CC-DlE9OJIa.js} +1 -1
  62. package/dist/client/assets/{pegDiagram-GJSIUBJH-ClH92MDY.js → pegDiagram-GJSIUBJH-DVAxFXk4.js} +1 -1
  63. package/dist/client/assets/{pie-WAS4IAKB-sJ2H2jF4.js → pie-WAS4IAKB-CnF58beD.js} +1 -1
  64. package/dist/client/assets/{pieDiagram-5QR66LMP-BmlcB4fD.js → pieDiagram-5QR66LMP-C9NRYvUb.js} +1 -1
  65. package/dist/client/assets/{quadrantDiagram-O4NWA36T-BUdNHhtc.js → quadrantDiagram-O4NWA36T-Bk84qmTE.js} +1 -1
  66. package/dist/client/assets/{radar-RG4KPBEZ-B3MRkz7l.js → radar-RG4KPBEZ--0RoMbvC.js} +1 -1
  67. package/dist/client/assets/{railroad-74A4TZTK-CPQddZw9.js → railroad-74A4TZTK-QYeNnCgA.js} +1 -1
  68. package/dist/client/assets/railroad-abnf-HS5TGJTU-CAw2FOzX.js +1 -0
  69. package/dist/client/assets/railroad-ebnf-LZEXJU2U-lUllLfGX.js +1 -0
  70. package/dist/client/assets/railroad-peg-WCYAUIDC-Cnu3kREr.js +1 -0
  71. package/dist/client/assets/{railroadDiagram-XR7U4H2S-B2wicmNk.js → railroadDiagram-XR7U4H2S-CCTlqXdV.js} +1 -1
  72. package/dist/client/assets/{requirementDiagram-PLB6GJNP-4fGmNry2.js → requirementDiagram-PLB6GJNP-Bqbgo3QR.js} +1 -1
  73. package/dist/client/assets/{sankeyDiagram-IPEJSGJF-ByuhL9nO.js → sankeyDiagram-IPEJSGJF-BXC5cjxI.js} +1 -1
  74. package/dist/client/assets/{sequenceDiagram-PO4LG4MO-CHeFXNrS.js → sequenceDiagram-PO4LG4MO-Bds-OSHb.js} +1 -1
  75. package/dist/client/assets/{src-DuEx6MBc.js → src-DQOrnl7t.js} +1 -1
  76. package/dist/client/assets/{stateDiagram-v2-GCMORJYK-Dsfly8rU.js → stateDiagram-v2-GCMORJYK-D1xkwXMJ.js} +1 -1
  77. package/dist/client/assets/{swimlanes-2SLR337P-DDb1xXAV.js → swimlanes-2SLR337P-Djv5MaNv.js} +1 -1
  78. package/dist/client/assets/swimlanesDiagram-TC7HE7FX-By5FZWiE.js +8 -0
  79. package/dist/client/assets/{timeline-definition-EJHVYXUP-iC4lxMiK.js → timeline-definition-EJHVYXUP-Xpylk9Go.js} +1 -1
  80. package/dist/client/assets/{treeView-Q6P3EWNA-zXF3RWVa.js → treeView-Q6P3EWNA-DZhZ3oTA.js} +1 -1
  81. package/dist/client/assets/{treemap-WGGIJYW6-BvA719M0.js → treemap-WGGIJYW6-DM7_PSXC.js} +1 -1
  82. package/dist/client/assets/{usecaseDiagram-POWQR4AR-CXzh5cdW.js → usecaseDiagram-POWQR4AR-BFIAR0u1.js} +1 -1
  83. package/dist/client/assets/{vennDiagram-UO4OBE2U-BuMQeNKp.js → vennDiagram-UO4OBE2U-JHvTvqTF.js} +1 -1
  84. package/dist/client/assets/{wardley-WFR3VGLG-m1zZI6-6.js → wardley-WFR3VGLG-DwlxIwqO.js} +1 -1
  85. package/dist/client/assets/{wardleyDiagram-VNRHLVJA-DiB2QtGU.js → wardleyDiagram-VNRHLVJA-BqfNR_Ex.js} +1 -1
  86. package/dist/client/assets/{xychartDiagram-PMCCYNJV-CKRPoaV8.js → xychartDiagram-PMCCYNJV-CNVbi53o.js} +1 -1
  87. package/dist/client/favicon.svg +15 -7
  88. package/dist/client/index.html +2 -2
  89. package/package.json +2 -1
  90. package/plugin.json +1 -1
  91. package/dist/client/assets/architecture-7GRP2DOG-Cds-sOVr.js +0 -1
  92. package/dist/client/assets/channel-BI4dhOPo.js +0 -1
  93. package/dist/client/assets/eventmodeling-NTZA5JFV-DE5ql6lo.js +0 -1
  94. package/dist/client/assets/flowDiagram-KWPJA3E3-CObKVtKJ.js +0 -1
  95. package/dist/client/assets/index-CL4K6Y07.css +0 -1
  96. package/dist/client/assets/index-DXMhk4ok.js +0 -93
  97. package/dist/client/assets/railroad-abnf-HS5TGJTU-CijG3JBn.js +0 -1
  98. package/dist/client/assets/railroad-ebnf-LZEXJU2U-CNgXgJgc.js +0 -1
  99. package/dist/client/assets/railroad-peg-WCYAUIDC-BkwGmMtj.js +0 -1
  100. package/dist/client/assets/swimlanesDiagram-TC7HE7FX-DXpYpXP-.js +0 -8
package/README.md CHANGED
@@ -2,15 +2,11 @@
2
2
 
3
3
  <a href="https://diffohq.github.io/diffo/">
4
4
  <picture>
5
- <source media="(prefers-color-scheme: dark)" srcset="assets/logo-dark.svg">
6
- <img src="assets/logo.svg" alt="Diffo" width="76" height="76">
5
+ <source media="(prefers-color-scheme: dark)" srcset="assets/readme-hero-dark.svg">
6
+ <img src="assets/readme-hero.svg" alt="Diffo: the human way to review agent-written code" width="100%">
7
7
  </picture>
8
8
  </a>
9
9
 
10
- # Diffo
11
-
12
- ### The human way to review agent-written code.
13
-
14
10
  Ask your agent for a review. You get the change in **layers**, in the order it should be
15
11
  read, and **the agent on the other end of every comment**: it answers on the line and fixes
16
12
  while you read. Hand it a pull request instead, and it reads beside you and sends your
@@ -18,26 +14,19 @@ review to GitHub.
18
14
 
19
15
  [Quick start](#quick-start) · [The conversation](#talk-to-the-agent-on-the-line) · [Layers](#read-it-in-layers) · [Pull requests](#review-a-pull-request) · [Docs](#docs) · [Contributing](#contributing)
20
16
 
21
- [![CI](https://img.shields.io/github/actions/workflow/status/DiffoHQ/diffo/ci.yml?branch=main&label=CI)](https://github.com/DiffoHQ/diffo/actions/workflows/ci.yml)
22
- [![npm](https://img.shields.io/npm/v/%40diffohq%2Fdiffo?label=npm&color=cb3837)](https://www.npmjs.com/package/@diffohq/diffo)
23
- [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE)
24
- [![Node](https://img.shields.io/badge/node-%E2%89%A5%2024-brightgreen)](#quick-start)
25
- [![Docs](https://img.shields.io/badge/docs-diffo-8b5cf6)](https://diffohq.github.io/diffo/)
26
- [![Tests](https://img.shields.io/badge/tests-1327-brightgreen)](#contributing)
17
+ [![CI](https://img.shields.io/github/actions/workflow/status/DiffoHQ/diffo/ci.yml?branch=main&label=CI&style=flat-square)](https://github.com/DiffoHQ/diffo/actions/workflows/ci.yml)
18
+ [![npm](https://img.shields.io/npm/v/%40diffohq%2Fdiffo?label=npm&style=flat-square&color=1f883d)](https://www.npmjs.com/package/@diffohq/diffo)
19
+ [![License](https://img.shields.io/badge/license-Apache--2.0-1f883d?style=flat-square)](LICENSE)
20
+ [![Docs](https://img.shields.io/badge/docs-diffohq.github.io-1f883d?style=flat-square)](https://diffohq.github.io/diffo/)
27
21
 
28
22
  </div>
29
23
 
30
- <!-- Every clip here is a real recording: a real Claude Code session, a real server, and a
31
- real changeset under review. The hero and the pull request clip review a small demo
32
- app, so the diff reads at a glance; the layers clip, and the tutorial, review this
33
- repo's own changesets. -->
34
-
35
- <!-- Light-theme only. The clip opens once the session has finished writing the change:
36
- waiting on the agent is fast-forwarded — the badge in the session's corner says so
37
- while it runs — and nothing else is cut. -->
38
- <img alt="One take of the whole loop. A Claude Code session has just written natural-language due dates into a todo app; the reviewer types /diffo, and the session opens a live review and hands over its localhost URL, which opens beside the session. The reviewer leaves a question on the weekday line (a bare weekday always lands next week, should it mean today?) and the agent's answer appears in the thread while they watch." src="docs/assets/loop.gif" width="100%">
24
+ <picture>
25
+ <source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme-demo-dark.svg">
26
+ <img alt="The Diffo loop. In the agent's terminal you type /diffo and the review opens beside it. You ask a question on line 14, and it flies to the agent; the agent fixes the code and answers, and the answer and the fix fly back, landing in the thread and in the diff you are reading." src="docs/assets/readme-demo.svg" width="100%">
27
+ </picture>
39
28
 
40
- <p align="center"><sub>The whole loop in one take: type <code>/diffo</code>, read the diff, ask on the line, and the answer comes back in the thread. Left is a real Claude Code session, right is the real review it opened. Nothing here is a mock-up; the only edit is that waiting on the agent runs fast.</sub></p>
29
+ <p align="center"><sub>The whole loop: type <code>/diffo</code>, ask on the line, and the answer and the fix come back into the diff you're reading.</sub></p>
41
30
 
42
31
  ---
43
32
 
@@ -96,11 +85,11 @@ the next. Anything the agent touches after posting gathers in a *Since your revi
96
85
  so nothing hides outside the plan.
97
86
 
98
87
  <picture>
99
- <source media="(prefers-color-scheme: dark)" srcset="docs/assets/layers-dark.gif">
100
- <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%">
88
+ <source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme-layers-dark.svg">
89
+ <img alt="Layers in Diffo. The header chip reads agent · suggests layers and the reviewer accepts. The request crosses to the agent's terminal, which outlines the 13-file change as four ordered steps and posts them with diffo layers. Four layers land in the rail; the first layer's card draws its diagram, its files are read and ticked, and ] steps to the second and third layers." src="docs/assets/readme-layers.svg" width="100%">
101
90
  </picture>
102
91
 
103
- <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. Only the agent's thinking time is cut.</sub></p>
92
+ <p align="center"><sub>Thirteen files, alphabetical, become four steps to read in order.</sub></p>
104
93
 
105
94
  ## Review a pull request
106
95
 
@@ -111,11 +100,12 @@ you as a copilot for code it did not write. Every comment has two tabs. **Commen
111
100
  goes to the author, as one review when you finish. **Ask agent** stays on your machine:
112
101
  the agent can run the tests and answer with evidence, and it never posts to GitHub.
113
102
 
114
- <!-- Light-theme only, like the hero. The pull request is a real one on a demo repo
115
- (DiffoHQ/todo-demo#1), and the review at the end is the one this take submitted. -->
116
- <img alt="One take of a pull request review. On GitHub, a pull request adds recurring todos to a todo app; in Claude Code the reviewer types /diffo with its link, and the review opens beside the session, the PR's title, author and checks in the header. The agent lays the change out in layers. On the streak check the reviewer asks the agent whether anything done on its due day now counts as late, and the answer comes back in the thread; they leave a comment for GitHub on the same line, submit the review with Request changes, and the review appears on the pull request." src="docs/assets/pr-review.gif" width="100%">
103
+ <picture>
104
+ <source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme-pr-dark.svg">
105
+ <img alt="A pull request in Diffo: you hand the PR link to your agent and it is checked out in a worktree of its own; a Private question on line 13 crosses to your agent, which runs the tests and answers in the thread; a PR comment waits as a draft until Submit review, and then the review crosses to GitHub, while the private thread stays on your machine." src="docs/assets/readme-pr.svg" width="100%">
106
+ </picture>
117
107
 
118
- <p align="center"><sub>A pull request, end to end: hand over the link, read it in layers, ask your agent on a line, leave a comment for the author, and submit to GitHub. A real Claude Code session and a real pull request; the only edit is that waiting on the agent runs fast.</sub></p>
108
+ <p align="center"><sub>Two destinations: a <b>Private</b> question goes to your agent and never leaves your machine; a <b>PR comment</b> waits as a draft and goes to GitHub when you submit.</sub></p>
119
109
 
120
110
  ## Where it fits
121
111