difit 5.0.6 → 5.0.7
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/dist/cli/comment.js +56 -14
- package/dist/cli/comment.test.js +93 -1
- package/dist/cli/utils.js +1 -1
- package/dist/client/assets/{arc-jpxKSIAg.js → arc-DREI5TWD.js} +1 -1
- package/dist/client/assets/architecture-7EHR7CIX-DGxkQlnD.js +1 -0
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-B92ZxjNC.js → architectureDiagram-3BPJPVTR-DFkR4rlM.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-D3ySUhR3.js → blockDiagram-GPEHLZMM-ZxUtccGH.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-BUzdNEmx.js → c4Diagram-AAUBKEIU-EE04Xrty.js} +1 -1
- package/dist/client/assets/channel-CHYmQZZG.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-1DQ-4Bz3.js → chunk-2J33WTMH-CuaIj_t6.js} +1 -1
- package/dist/client/assets/{chunk-3OPIFGDE-BQmtgKnq.js → chunk-3OPIFGDE-CH_P6j0v.js} +1 -1
- package/dist/client/assets/{chunk-4BX2VUAB-DFX6Qy74.js → chunk-4BX2VUAB-BhIIlsZ3.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-DtWki8a-.js → chunk-55IACEB6-BHzcuGiT.js} +1 -1
- package/dist/client/assets/{chunk-5ZQYHXKU-uSJ_ZgCu.js → chunk-5ZQYHXKU-irirG3d7.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-BB6xZgSD.js → chunk-727SXJPM-CxLWqspe.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-B1Cm665s.js → chunk-AQP2D5EJ-B_5FWHRn.js} +1 -1
- package/dist/client/assets/{chunk-BSJP7CBP-C15Vti01.js → chunk-BSJP7CBP-DpFoD8PT.js} +1 -1
- package/dist/client/assets/{chunk-CSCIHK7Q-CaTF_T3W.js → chunk-CSCIHK7Q-CN57H9UO.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-D1irlAGU.js → chunk-FMBD7UC4-DS0PqbvC.js} +1 -1
- package/dist/client/assets/{chunk-KSCS5N6A-DGAjxObb.js → chunk-KSCS5N6A-DMeidheb.js} +1 -1
- package/dist/client/assets/{chunk-L5ZTLDWV-F5Tij0A9.js → chunk-L5ZTLDWV-C9K_60Xm.js} +1 -1
- package/dist/client/assets/{chunk-LZXEDZCA-BkUKm4Z2.js → chunk-LZXEDZCA-BGtpnXZ1.js} +2 -2
- package/dist/client/assets/{chunk-ND2GUHAM-C0rukZcz.js → chunk-ND2GUHAM-dPpYOuu1.js} +1 -1
- package/dist/client/assets/{chunk-NZK2D7GU-DRm_z6tq.js → chunk-NZK2D7GU-DuRhNiHO.js} +1 -1
- package/dist/client/assets/{chunk-O5CBEL6O-BAuwNGEL.js → chunk-O5CBEL6O-DBgK6fiG.js} +1 -1
- package/dist/client/assets/chunk-QZHKN3VN-AnmIw7mX.js +1 -0
- package/dist/client/assets/chunk-WU5MYG2G-BTiTfGJM.js +1 -0
- package/dist/client/assets/{chunk-XPW4576I-2r3neXxa.js → chunk-XPW4576I-RVDoolKv.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-DMyzL29P.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-DMyzL29P.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-BF8GqjYH.js → cose-bilkent-S5V4N54A-C_heAUQX.js} +1 -1
- package/dist/client/assets/{dagre-BM42HDAG-BcWO-l21.js → dagre-BM42HDAG-nAm5-YBv.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-ChdDM46l.js → diagram-2AECGRRQ-DzkMI5-T.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-DOPYGuMt.js → diagram-5GNKFQAL-CISSUOsD.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-D6gmyyoA.js → diagram-KO2AKTUF-DVRaNRJB.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-C93nmtac.js → diagram-LMA3HP47-DJsfPM2-.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-Cgm6DAM8.js → diagram-OG6HWLK6-CgfXkSn6.js} +1 -1
- package/dist/client/assets/{dist-C7Q1SrJ8.js → dist-DsFysxLW.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-WzvVTKP0.js → erDiagram-TEJ5UH35-Duprm7mz.js} +1 -1
- package/dist/client/assets/eventmodeling-FCH6USID-DgO_2CL2.js +1 -0
- package/dist/client/assets/{flowDiagram-I6XJVG4X-BRAzB7RU.js → flowDiagram-I6XJVG4X-ChDsFg1k.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-Bned6Md4.js → ganttDiagram-6RSMTGT7-BgT4bA2O.js} +1 -1
- package/dist/client/assets/{gitGraph-WXDBUCRP-BsCF41a6.js → gitGraph-WXDBUCRP-D2Tc-dnW.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-sjN-t2iw.js → gitGraphDiagram-PVQCEYII-CktpkEml.js} +1 -1
- package/dist/client/assets/index-BMRoOTU-.js +83 -0
- package/dist/client/assets/index-DJEQpFaQ.css +2 -0
- package/dist/client/assets/{info-J43DQDTF-BnH-OC8Z.js → info-J43DQDTF-bJtQyd_Y.js} +1 -1
- package/dist/client/assets/{infoDiagram-5YYISTIA-s8VJEWX-.js → infoDiagram-5YYISTIA-2Pd6AfIZ.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-Cr3iGWKj.js → ishikawaDiagram-YF4QCWOH-BNKWCuEa.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-DsSeOYHM.js → journeyDiagram-JHISSGLW-DW7F45JQ.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU--hgCxMq5.js → kanban-definition-UN3LZRKU-BP9z6Fz_.js} +1 -1
- package/dist/client/assets/{line-BgzUTU3B.js → line-D5Ou3Ysz.js} +1 -1
- package/dist/client/assets/{linear-Cj1FBal1.js → linear-j-04apkE.js} +1 -1
- package/dist/client/assets/{mermaid-parser.core-oUly7wXy.js → mermaid-parser.core-mbc8J2Wv.js} +2 -2
- package/dist/client/assets/{mermaid.core-QvJGj5O5.js → mermaid.core-BqQLoEhf.js} +3 -3
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-Cwyk4Byp.js → mindmap-definition-RKZ34NQL-D6V6zOcp.js} +1 -1
- package/dist/client/assets/{packet-YPE3B663-C559rspA.js → packet-YPE3B663-DEYhteSK.js} +1 -1
- package/dist/client/assets/{pie-LRSECV5Y-DZyJ170B.js → pie-LRSECV5Y-B5pcI4cb.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-lGuBsE2s.js → pieDiagram-4H26LBE5-Cbhj1myT.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-BCczJuw5.js → quadrantDiagram-W4KKPZXB-BLRF1wH0.js} +1 -1
- package/dist/client/assets/{radar-GUYGQ44K-Ckz6UanW.js → radar-GUYGQ44K-3u8RaujE.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-C4-ojYg3.js → requirementDiagram-4Y6WPE33-CvuvVoeD.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-CFpy-I_l.js → sankeyDiagram-5OEKKPKP-DK6Ak875.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-DmD28UaM.js → sequenceDiagram-3UESZ5HK-BUrpkbLl.js} +1 -1
- package/dist/client/assets/{src-BWoEPgyG.js → src-3oJtdAc0.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-BNaiNMdT.js → stateDiagram-AJRCARHV-rMdhh-BM.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-D57jPzmZ.js +1 -0
- package/dist/client/assets/{timeline-definition-PNZ67QCA-DQyT9Hys.js → timeline-definition-PNZ67QCA-HJrE8OfG.js} +1 -1
- package/dist/client/assets/{treeView-BLDUP644-BDNxHT3u.js → treeView-BLDUP644-DhCldToR.js} +1 -1
- package/dist/client/assets/{treemap-LRROVOQU-mnVB3buf.js → treemap-LRROVOQU-C3ctDtd2.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-BaDh5wWt.js → vennDiagram-CIIHVFJN-BU_h1DHf.js} +1 -1
- package/dist/client/assets/{wardley-L42UT6IY-CZ9sEBPa.js → wardley-L42UT6IY-DzaGiv5e.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-B_afE6fY.js → wardleyDiagram-YWT4CUSO-Dk9C0jMk.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-6Na9BohO.js → xychartDiagram-2RQKCTM6-CD9r_u2H.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/server/file-watcher.js +4 -1
- package/dist/server/server.js +16 -0
- package/dist/server/server.test.js +56 -4
- package/package.json +2 -1
- package/dist/client/assets/architecture-7EHR7CIX-CGrQkVgf.js +0 -1
- package/dist/client/assets/channel-DG8kr4eK.js +0 -1
- package/dist/client/assets/chunk-QZHKN3VN-M1-XSu5b.js +0 -1
- package/dist/client/assets/chunk-WU5MYG2G-BvFjxMiG.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-BtF02SOc.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-BtF02SOc.js +0 -1
- package/dist/client/assets/eventmodeling-FCH6USID-D2pfiIpz.js +0 -1
- package/dist/client/assets/index-BC8r72Kq.js +0 -82
- package/dist/client/assets/index-DxvaSOa7.css +0 -2
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-CkEmqrGj.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -567,6 +567,22 @@ export async function startServer(options) {
|
|
|
567
567
|
res.status(400).json({ error: 'Invalid comment import data' });
|
|
568
568
|
}
|
|
569
569
|
});
|
|
570
|
+
app.delete('/api/comments/:threadId', (req, res) => {
|
|
571
|
+
const selection = getCommentSelectionFromQuery(req.query);
|
|
572
|
+
const session = getOrCreateCommentSession(selection);
|
|
573
|
+
const threadId = req.params.threadId;
|
|
574
|
+
const nextThreads = session.threads.filter((thread) => thread.id !== threadId);
|
|
575
|
+
if (nextThreads.length === session.threads.length) {
|
|
576
|
+
res.status(404).json({ error: `Thread not found: ${threadId}` });
|
|
577
|
+
return;
|
|
578
|
+
}
|
|
579
|
+
updateCommentSession(selection, nextThreads);
|
|
580
|
+
res.json({
|
|
581
|
+
success: true,
|
|
582
|
+
threadId,
|
|
583
|
+
version: session.version,
|
|
584
|
+
});
|
|
585
|
+
});
|
|
570
586
|
app.get('/api/comments-json', (req, res) => {
|
|
571
587
|
const selection = getCommentSelectionFromQuery(req.query);
|
|
572
588
|
const session = getOrCreateCommentSession(selection);
|
|
@@ -191,7 +191,10 @@ describe('Server Integration Tests', () => {
|
|
|
191
191
|
};
|
|
192
192
|
it('merges concurrent agent additions instead of clobbering on a stale push', async () => {
|
|
193
193
|
const port = await getAvailablePort(4966);
|
|
194
|
-
const result = await startServer({
|
|
194
|
+
const result = await startServer({
|
|
195
|
+
preferredPort: port,
|
|
196
|
+
openBrowser: false,
|
|
197
|
+
});
|
|
195
198
|
try {
|
|
196
199
|
// Browser establishes a thread; it now knows version 1.
|
|
197
200
|
await postThreads(result.port, [makeThread('t1', 'src/a.ts', 10, 'human thread')]);
|
|
@@ -234,7 +237,10 @@ describe('Server Integration Tests', () => {
|
|
|
234
237
|
});
|
|
235
238
|
it('replaces (honoring deletions) when the push version matches', async () => {
|
|
236
239
|
const port = await getAvailablePort(4966);
|
|
237
|
-
const result = await startServer({
|
|
240
|
+
const result = await startServer({
|
|
241
|
+
preferredPort: port,
|
|
242
|
+
openBrowser: false,
|
|
243
|
+
});
|
|
238
244
|
try {
|
|
239
245
|
await postThreads(result.port, [makeThread('t1', 'src/a.ts', 10, 'human thread')]);
|
|
240
246
|
const afterFirst = await getSession(result.port);
|
|
@@ -258,7 +264,10 @@ describe('Server Integration Tests', () => {
|
|
|
258
264
|
});
|
|
259
265
|
it('bumps the version when a reply is imported (so the change is broadcast)', async () => {
|
|
260
266
|
const port = await getAvailablePort(4966);
|
|
261
|
-
const result = await startServer({
|
|
267
|
+
const result = await startServer({
|
|
268
|
+
preferredPort: port,
|
|
269
|
+
openBrowser: false,
|
|
270
|
+
});
|
|
262
271
|
try {
|
|
263
272
|
await postThreads(result.port, [makeThread('t1', 'src/a.ts', 10, 'human thread')]);
|
|
264
273
|
const before = await getSession(result.port);
|
|
@@ -792,6 +801,46 @@ describe('Server Integration Tests', () => {
|
|
|
792
801
|
const threads = data.threads.filter((t) => t.filePath === 'src/dedup.ts');
|
|
793
802
|
expect(threads).toHaveLength(1);
|
|
794
803
|
});
|
|
804
|
+
it('DELETE /api/comments/:threadId removes the thread and bumps the version', async () => {
|
|
805
|
+
await fetch(`http://localhost:${port}/api/comment-imports`, {
|
|
806
|
+
method: 'POST',
|
|
807
|
+
headers: { 'Content-Type': 'application/json' },
|
|
808
|
+
body: JSON.stringify([
|
|
809
|
+
{
|
|
810
|
+
type: 'thread',
|
|
811
|
+
id: 'delete-me',
|
|
812
|
+
filePath: 'src/delete-test.ts',
|
|
813
|
+
position: { side: 'new', line: 3 },
|
|
814
|
+
body: 'Thread to delete',
|
|
815
|
+
},
|
|
816
|
+
]),
|
|
817
|
+
});
|
|
818
|
+
const beforeResponse = await fetch(`http://localhost:${port}/api/comments-json`);
|
|
819
|
+
const before = (await beforeResponse.json());
|
|
820
|
+
expect(before.threads.some((t) => t.id === 'delete-me')).toBe(true);
|
|
821
|
+
const deleteResponse = await fetch(`http://localhost:${port}/api/comments/delete-me`, {
|
|
822
|
+
method: 'DELETE',
|
|
823
|
+
});
|
|
824
|
+
const deleteData = (await deleteResponse.json());
|
|
825
|
+
expect(deleteResponse.ok).toBe(true);
|
|
826
|
+
expect(deleteData).toMatchObject({
|
|
827
|
+
success: true,
|
|
828
|
+
threadId: 'delete-me',
|
|
829
|
+
});
|
|
830
|
+
expect(deleteData.version).toBe(before.version + 1);
|
|
831
|
+
const afterResponse = await fetch(`http://localhost:${port}/api/comments-json`);
|
|
832
|
+
const after = (await afterResponse.json());
|
|
833
|
+
expect(after.threads.some((t) => t.id === 'delete-me')).toBe(false);
|
|
834
|
+
});
|
|
835
|
+
it('DELETE /api/comments/:threadId returns 404 for unknown thread', async () => {
|
|
836
|
+
const response = await fetch(`http://localhost:${port}/api/comments/does-not-exist`, {
|
|
837
|
+
method: 'DELETE',
|
|
838
|
+
});
|
|
839
|
+
expect(response.status).toBe(404);
|
|
840
|
+
const data = (await response.json());
|
|
841
|
+
expect(data).toHaveProperty('error');
|
|
842
|
+
expect(data.error).toContain('does-not-exist');
|
|
843
|
+
});
|
|
795
844
|
it('isolates comment sessions between different diff selections', async () => {
|
|
796
845
|
const importServer = await startServer({
|
|
797
846
|
selection: { targetCommitish: 'HEAD', baseCommitish: 'HEAD^' },
|
|
@@ -961,7 +1010,10 @@ describe('Server Integration Tests', () => {
|
|
|
961
1010
|
const data = (await response.json());
|
|
962
1011
|
expect(response.ok).toBe(true);
|
|
963
1012
|
expect(data.specialOptions).toHaveLength(3);
|
|
964
|
-
expect(data.specialOptions).not.toContainEqual({
|
|
1013
|
+
expect(data.specialOptions).not.toContainEqual({
|
|
1014
|
+
value: 'merge-base',
|
|
1015
|
+
label: 'Merge Base',
|
|
1016
|
+
});
|
|
965
1017
|
expect(data.branches).toEqual([{ name: 'main', current: true }]);
|
|
966
1018
|
expect(data.commits).toEqual([
|
|
967
1019
|
{ hash: 'abc1234', shortHash: 'abc1234', message: 'Test commit' },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "difit",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.7",
|
|
4
4
|
"description": "A lightweight command-line tool that spins up a local web server to display Git commit diffs in a GitHub-like Files changed view",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -79,6 +79,7 @@
|
|
|
79
79
|
"react-dom": "^19.1.0",
|
|
80
80
|
"react-hotkeys-hook": "^5.2.4",
|
|
81
81
|
"react-markdown": "^10.1.0",
|
|
82
|
+
"remark-breaks": "^4.0.0",
|
|
82
83
|
"remark-gfm": "^4.0.1",
|
|
83
84
|
"simple-git": "^3.28.0"
|
|
84
85
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-NNHCCRGN-DlpIbxXb.js";import{x as e}from"./mermaid-parser.core-oUly7wXy.js";export{e as createArchitectureServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{at as e,ot as t}from"./chunk-CSCIHK7Q-CaTF_T3W.js";var n=(n,r)=>t.lang.round(e.parse(n)[r]);export{n as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as e}from"./src-BWoEPgyG.js";var t=class{constructor(e){this.init=e,this.records=this.init()}static{e(this,`ImperativeState`)}reset(){this.records=this.init()}};export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as e,p as t}from"./src-BWoEPgyG.js";import{x as n}from"./chunk-CSCIHK7Q-CaTF_T3W.js";var r=e(e=>{let{securityLevel:r}=n(),i=t(`body`);return r===`sandbox`&&(i=t((t(`#i${e}`).node()?.contentDocument??document).body)),i.select(`#${e}`)},`selectSvgElement`);export{r as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as e}from"./src-BWoEPgyG.js";import"./chunk-CSCIHK7Q-CaTF_T3W.js";import"./chunk-5ZQYHXKU-uSJ_ZgCu.js";import"./chunk-O5CBEL6O-BAuwNGEL.js";import"./chunk-FMBD7UC4-D1irlAGU.js";import"./chunk-BSJP7CBP-C15Vti01.js";import"./chunk-L5ZTLDWV-F5Tij0A9.js";import"./chunk-ND2GUHAM-C0rukZcz.js";import"./chunk-55IACEB6-DtWki8a-.js";import"./chunk-2J33WTMH-1DQ-4Bz3.js";import"./chunk-NZK2D7GU-DRm_z6tq.js";import"./chunk-3OPIFGDE-BQmtgKnq.js";import"./chunk-KSCS5N6A-DGAjxObb.js";import"./chunk-LZXEDZCA-BkUKm4Z2.js";import{i as t,n,r,t as i}from"./chunk-727SXJPM-BB6xZgSD.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as e}from"./src-BWoEPgyG.js";import"./chunk-CSCIHK7Q-CaTF_T3W.js";import"./chunk-5ZQYHXKU-uSJ_ZgCu.js";import"./chunk-O5CBEL6O-BAuwNGEL.js";import"./chunk-FMBD7UC4-D1irlAGU.js";import"./chunk-BSJP7CBP-C15Vti01.js";import"./chunk-L5ZTLDWV-F5Tij0A9.js";import"./chunk-ND2GUHAM-C0rukZcz.js";import"./chunk-55IACEB6-DtWki8a-.js";import"./chunk-2J33WTMH-1DQ-4Bz3.js";import"./chunk-NZK2D7GU-DRm_z6tq.js";import"./chunk-3OPIFGDE-BQmtgKnq.js";import"./chunk-KSCS5N6A-DGAjxObb.js";import"./chunk-LZXEDZCA-BkUKm4Z2.js";import{i as t,n,r,t as i}from"./chunk-727SXJPM-BB6xZgSD.js";var a={parser:n,get db(){return new i},renderer:r,styles:t,init:e(e=>{e.class||={},e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},`init`)};export{a as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./chunk-NNHCCRGN-DlpIbxXb.js";import{y as e}from"./mermaid-parser.core-oUly7wXy.js";export{e as createEventModelingServices};
|