difit 4.0.7 → 5.0.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.
Files changed (137) hide show
  1. package/README.ja.md +1 -3
  2. package/README.ko.md +1 -3
  3. package/README.md +6 -3
  4. package/README.zh.md +1 -3
  5. package/dist/cli/index.js +0 -39
  6. package/dist/cli/index.test.js +0 -374
  7. package/dist/cli/utils.d.ts +0 -2
  8. package/dist/cli/utils.js +1 -18
  9. package/dist/cli/utils.test.js +0 -16
  10. package/dist/client/assets/{arc-DX2p9X2Y.js → arc-47JvE2o4.js} +1 -1
  11. package/dist/client/assets/architecture-YZFGNWBL-CAofxL11.js +1 -0
  12. package/dist/client/assets/{architectureDiagram-Q4EWVU46-FixTWViB.js → architectureDiagram-Q4EWVU46-PEhI9x48.js} +1 -1
  13. package/dist/client/assets/{blockDiagram-DXYQGD6D-CUAMgGr9.js → blockDiagram-DXYQGD6D-SUrPMV8E.js} +1 -1
  14. package/dist/client/assets/{c4Diagram-AHTNJAMY-BM_HNNZe.js → c4Diagram-AHTNJAMY-BJ9pq9B3.js} +1 -1
  15. package/dist/client/assets/channel-DXpjokeU.js +1 -0
  16. package/dist/client/assets/{chunk-2KRD3SAO-DeT59g2K.js → chunk-2KRD3SAO-2O6hV_yw.js} +1 -1
  17. package/dist/client/assets/{chunk-336JU56O-CaGvJA86.js → chunk-336JU56O-C0NxME-U.js} +2 -2
  18. package/dist/client/assets/chunk-426QAEUC-DO73G5YJ.js +1 -0
  19. package/dist/client/assets/{chunk-4BX2VUAB-D9mNDl5f.js → chunk-4BX2VUAB-PjGa5t5G.js} +1 -1
  20. package/dist/client/assets/{chunk-4TB4RGXK-Df3b4HEG.js → chunk-4TB4RGXK-DKCtDLTf.js} +1 -1
  21. package/dist/client/assets/{chunk-55IACEB6-dCWLe_n4.js → chunk-55IACEB6-BUBhWZ5_.js} +1 -1
  22. package/dist/client/assets/{chunk-5FUZZQ4R-EScvXcSN.js → chunk-5FUZZQ4R-D52DoV-0.js} +1 -1
  23. package/dist/client/assets/{chunk-5PVQY5BW-ail-oj89.js → chunk-5PVQY5BW-Cpp0JjTq.js} +1 -1
  24. package/dist/client/assets/{chunk-67CJDMHE-CHeCIL1u.js → chunk-67CJDMHE-DFAAAXYj.js} +1 -1
  25. package/dist/client/assets/{chunk-7N4EOEYR-P0tNRVMZ.js → chunk-7N4EOEYR-DeLrWd_x.js} +1 -1
  26. package/dist/client/assets/{chunk-AA7GKIK3-DloBHWSo.js → chunk-AA7GKIK3-Pb9IU0o9.js} +1 -1
  27. package/dist/client/assets/{chunk-BSJP7CBP-CGLThsR8.js → chunk-BSJP7CBP-DvFe6BQg.js} +1 -1
  28. package/dist/client/assets/{chunk-CIAEETIT-rCt2IEMp.js → chunk-CIAEETIT-AytpwHlv.js} +1 -1
  29. package/dist/client/assets/{chunk-EDXVE4YY-DIJEIKIq.js → chunk-EDXVE4YY-DSprT5LQ.js} +1 -1
  30. package/dist/client/assets/{chunk-ENJZ2VHE-CdrdxFfV.js → chunk-ENJZ2VHE-DsQnPoSa.js} +1 -1
  31. package/dist/client/assets/{chunk-FMBD7UC4-BH_GgR9u.js → chunk-FMBD7UC4-CRzu5RUs.js} +1 -1
  32. package/dist/client/assets/{chunk-FOC6F5B3-D71VljSN.js → chunk-FOC6F5B3-GWMv90go.js} +1 -1
  33. package/dist/client/assets/{chunk-ICPOFSXX-2vcQKuhB.js → chunk-ICPOFSXX-LaB5P0SR.js} +1 -1
  34. package/dist/client/assets/{chunk-K5T4RW27-BWIFd7pZ.js → chunk-K5T4RW27-S036x5p5.js} +1 -1
  35. package/dist/client/assets/{chunk-KGLVRYIC-Ck8I8tdt.js → chunk-KGLVRYIC-DDzbiNrj.js} +1 -1
  36. package/dist/client/assets/{chunk-LIHQZDEY-Cc7TtI-w.js → chunk-LIHQZDEY-BoUwuY9Y.js} +1 -1
  37. package/dist/client/assets/{chunk-ORNJ4GCN-BMSqiphc.js → chunk-ORNJ4GCN-CopGHq93.js} +1 -1
  38. package/dist/client/assets/{chunk-OYMX7WX6-B5faFb53.js → chunk-OYMX7WX6-Do8-v0_P.js} +1 -1
  39. package/dist/client/assets/chunk-QZHKN3VN-BdzTLtlM.js +1 -0
  40. package/dist/client/assets/{chunk-U2HBQHQK-BILTfRyq.js → chunk-U2HBQHQK-CuugOH8t.js} +1 -1
  41. package/dist/client/assets/{chunk-X2U36JSP-D4-56gWx.js → chunk-X2U36JSP-ZX9AmJVa.js} +1 -1
  42. package/dist/client/assets/{chunk-XPW4576I-SxB401Zg.js → chunk-XPW4576I-DwqcIpF8.js} +1 -1
  43. package/dist/client/assets/{chunk-YZCP3GAM-CWXUVxFj.js → chunk-YZCP3GAM-w3hvGtGQ.js} +1 -1
  44. package/dist/client/assets/{chunk-ZZ45TVLE-CXjZua4f.js → chunk-ZZ45TVLE-CX35ksjr.js} +1 -1
  45. package/dist/client/assets/classDiagram-6PBFFD2Q-C9JPZQtl.js +1 -0
  46. package/dist/client/assets/classDiagram-v2-HSJHXN6E-BgDR8rt-.js +1 -0
  47. package/dist/client/assets/clone-BygUtDF6.js +1 -0
  48. package/dist/client/assets/{cose-bilkent-S5V4N54A-YToNpueF.js → cose-bilkent-S5V4N54A-DXfb_bs_.js} +1 -1
  49. package/dist/client/assets/{dagre-tvaMpP4D.js → dagre-BYBAH6EF.js} +1 -1
  50. package/dist/client/assets/{dagre-KV5264BT-QFYoTa0z.js → dagre-KV5264BT-Bj9WMi27.js} +1 -1
  51. package/dist/client/assets/{diagram-5BDNPKRD-DM0NNmEN.js → diagram-5BDNPKRD-DHnS0s39.js} +1 -1
  52. package/dist/client/assets/{diagram-G4DWMVQ6-TiLkMmwt.js → diagram-G4DWMVQ6-DdKcPnFw.js} +1 -1
  53. package/dist/client/assets/{diagram-MMDJMWI5-DM1ykqrB.js → diagram-MMDJMWI5-DfdNeC0p.js} +1 -1
  54. package/dist/client/assets/{diagram-TYMM5635-BEOLX1wr.js → diagram-TYMM5635-DwieVXZu.js} +1 -1
  55. package/dist/client/assets/{dist-CCBhd9az.js → dist-COv0rtkK.js} +1 -1
  56. package/dist/client/assets/{erDiagram-SMLLAGMA-DZcjZq6z.js → erDiagram-SMLLAGMA--nNfIX9m.js} +1 -1
  57. package/dist/client/assets/{flowDiagram-DWJPFMVM-B1AVT9es.js → flowDiagram-DWJPFMVM-BFk7GDSn.js} +1 -1
  58. package/dist/client/assets/{ganttDiagram-T4ZO3ILL-BCEXws9V.js → ganttDiagram-T4ZO3ILL-DlVKHIi_.js} +1 -1
  59. package/dist/client/assets/gitGraph-7Q5UKJZL-4fOTOOzG.js +1 -0
  60. package/dist/client/assets/{gitGraphDiagram-UUTBAWPF-CVznBDOl.js → gitGraphDiagram-UUTBAWPF-ww35jb2y.js} +1 -1
  61. package/dist/client/assets/{graphlib-C4fWcyt1.js → graphlib-cvGsNSEN.js} +1 -1
  62. package/dist/client/assets/index-CrvsDrrA.js +79 -0
  63. package/dist/client/assets/{index-C16wNcPQ.css → index-v-PY_jQI.css} +1 -1
  64. package/dist/client/assets/info-OMHHGYJF-BcwRhjJb.js +1 -0
  65. package/dist/client/assets/{infoDiagram-42DDH7IO-D8Oxr-KJ.js → infoDiagram-42DDH7IO-CbZg29-f.js} +1 -1
  66. package/dist/client/assets/{ishikawaDiagram-UXIWVN3A-BE9KniVE.js → ishikawaDiagram-UXIWVN3A-DbmLYe6W.js} +1 -1
  67. package/dist/client/assets/{journeyDiagram-VCZTEJTY-B3lGcz06.js → journeyDiagram-VCZTEJTY-m6lofB3D.js} +1 -1
  68. package/dist/client/assets/{kanban-definition-6JOO6SKY-Bs1QdB0j.js → kanban-definition-6JOO6SKY-zNyvW0z9.js} +1 -1
  69. package/dist/client/assets/{line-CO4-KhEq.js → line-DYCPrtIt.js} +1 -1
  70. package/dist/client/assets/{linear-CnaJKs0I.js → linear-BAKLx75z.js} +1 -1
  71. package/dist/client/assets/{mermaid-parser.core-CravK6bS.js → mermaid-parser.core-BGGMv1j6.js} +2 -2
  72. package/dist/client/assets/{mermaid.core-DTh9KJvF.js → mermaid.core-CMGQEZKx.js} +3 -3
  73. package/dist/client/assets/{mindmap-definition-QFDTVHPH-D2xU2hfX.js → mindmap-definition-QFDTVHPH-4Qsf3Hkp.js} +1 -1
  74. package/dist/client/assets/packet-4T2RLAQJ-LdDEUu30.js +1 -0
  75. package/dist/client/assets/pie-ZZUOXDRM-B-ezG4xa.js +1 -0
  76. package/dist/client/assets/{pieDiagram-DEJITSTG-CRX6y4IQ.js → pieDiagram-DEJITSTG-Cnlop37j.js} +1 -1
  77. package/dist/client/assets/{quadrantDiagram-34T5L4WZ-K2HFp8O8.js → quadrantDiagram-34T5L4WZ-CLFb7OC8.js} +1 -1
  78. package/dist/client/assets/radar-PYXPWWZC-D66LzHfH.js +1 -0
  79. package/dist/client/assets/{requirementDiagram-MS252O5E-C-8AW0uI.js → requirementDiagram-MS252O5E-CFMEftHL.js} +1 -1
  80. package/dist/client/assets/{sankeyDiagram-XADWPNL6-Bv-_ZFS5.js → sankeyDiagram-XADWPNL6-Bz_Rsg7k.js} +1 -1
  81. package/dist/client/assets/{sequenceDiagram-FGHM5R23-Bk4QYIPk.js → sequenceDiagram-FGHM5R23-C_UnEheO.js} +1 -1
  82. package/dist/client/assets/{src-XMuEuFcU.js → src-D4dXpp2L.js} +1 -1
  83. package/dist/client/assets/{stateDiagram-FHFEXIEX-CI1G7zGC.js → stateDiagram-FHFEXIEX-D5jyXLVB.js} +1 -1
  84. package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-CTyQGCYc.js +1 -0
  85. package/dist/client/assets/{timeline-definition-GMOUNBTQ-CnXv8xHg.js → timeline-definition-GMOUNBTQ-BtgnceD7.js} +1 -1
  86. package/dist/client/assets/treeView-SZITEDCU-BsI_6Qwy.js +1 -0
  87. package/dist/client/assets/treemap-W4RFUUIX-CzaM5y4Y.js +1 -0
  88. package/dist/client/assets/{vennDiagram-DHZGUBPP-M5x471Ar.js → vennDiagram-DHZGUBPP-DWtzk4wH.js} +1 -1
  89. package/dist/client/assets/wardley-RL74JXVD-C1IHEcDw.js +1 -0
  90. package/dist/client/assets/{wardleyDiagram-NUSXRM2D-BG99uPNN.js → wardleyDiagram-NUSXRM2D-D88r6BkP.js} +1 -1
  91. package/dist/client/assets/{xychartDiagram-5P7HB3ND-DO7Upr9G.js → xychartDiagram-5P7HB3ND-DkXj8P_J.js} +1 -1
  92. package/dist/client/index.html +2 -2
  93. package/dist/server/server.d.ts +0 -1
  94. package/dist/server/server.js +0 -3
  95. package/dist/server/server.test.js +0 -37
  96. package/dist/types/diff.d.ts +0 -12
  97. package/dist/utils/commentFormatting.test.js +0 -52
  98. package/package.json +4 -5
  99. package/dist/cli/tuiDeprecation.d.ts +0 -3
  100. package/dist/cli/tuiDeprecation.js +0 -16
  101. package/dist/cli/tuiDeprecation.test.d.ts +0 -1
  102. package/dist/cli/tuiDeprecation.test.js +0 -16
  103. package/dist/client/assets/architecture-YZFGNWBL-2zVtKbnG.js +0 -1
  104. package/dist/client/assets/channel-B_ddQhpW.js +0 -1
  105. package/dist/client/assets/chunk-426QAEUC-CMTCMPn4.js +0 -1
  106. package/dist/client/assets/chunk-QZHKN3VN-B-G9G-FB.js +0 -1
  107. package/dist/client/assets/classDiagram-6PBFFD2Q-DnUQ2iGN.js +0 -1
  108. package/dist/client/assets/classDiagram-v2-HSJHXN6E-Dwp5vuOB.js +0 -1
  109. package/dist/client/assets/clone-aWrl-obY.js +0 -1
  110. package/dist/client/assets/gitGraph-7Q5UKJZL-BE3Mcr-v.js +0 -1
  111. package/dist/client/assets/index-6LShOAAb.js +0 -79
  112. package/dist/client/assets/info-OMHHGYJF-CBpXVhw-.js +0 -1
  113. package/dist/client/assets/packet-4T2RLAQJ-abaJ3V5T.js +0 -1
  114. package/dist/client/assets/pie-ZZUOXDRM-B12dpA7V.js +0 -1
  115. package/dist/client/assets/radar-PYXPWWZC-BbBaJJN8.js +0 -1
  116. package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-DQ0U-oto.js +0 -1
  117. package/dist/client/assets/treeView-SZITEDCU-CM0rCBUc.js +0 -1
  118. package/dist/client/assets/treemap-W4RFUUIX-CXoNE_rL.js +0 -1
  119. package/dist/client/assets/wardley-RL74JXVD-B_EtnvOk.js +0 -1
  120. package/dist/server/git-diff-tui.d.ts +0 -2
  121. package/dist/server/git-diff-tui.js +0 -100
  122. package/dist/server/git-diff-tui.test.d.ts +0 -1
  123. package/dist/server/git-diff-tui.test.js +0 -76
  124. package/dist/tui/App.d.ts +0 -10
  125. package/dist/tui/App.js +0 -92
  126. package/dist/tui/components/DiffViewer.d.ts +0 -8
  127. package/dist/tui/components/DiffViewer.js +0 -88
  128. package/dist/tui/components/FileList.d.ts +0 -8
  129. package/dist/tui/components/FileList.js +0 -48
  130. package/dist/tui/components/SideBySideDiffViewer.d.ts +0 -9
  131. package/dist/tui/components/SideBySideDiffViewer.js +0 -240
  132. package/dist/tui/components/StatusBar.d.ts +0 -8
  133. package/dist/tui/components/StatusBar.js +0 -19
  134. package/dist/tui/utils/parseDiff.d.ts +0 -2
  135. package/dist/tui/utils/parseDiff.js +0 -67
  136. package/dist/utils/createId.test.d.ts +0 -1
  137. package/dist/utils/createId.test.js +0 -48
@@ -1,8 +1,6 @@
1
1
  import { Command } from 'commander';
2
- import React from 'react';
3
2
  import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
4
3
  import { DiffMode } from '../types/watch.js';
5
- import { DEFAULT_DIFF_VIEW_MODE, normalizeDiffViewMode } from '../utils/diffMode.js';
6
4
  import pkg from '../../package.json' with { type: 'json' };
7
5
  // Mock all external dependencies
8
6
  vi.mock('simple-git');
@@ -128,9 +126,7 @@ describe('CLI index.ts', () => {
128
126
  .option('--port <port>', 'port', parseInt)
129
127
  .option('--host <host>', 'host', '')
130
128
  .option('--no-open', 'no-open')
131
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
132
129
  .option('--merge-base', 'merge-base')
133
- .option('--tui', 'tui')
134
130
  .option('--pr <url>', 'pr')
135
131
  .action(async (commitish, _compareWith, options) => {
136
132
  // Simulate the logic from index.ts
@@ -162,7 +158,6 @@ describe('CLI index.ts', () => {
162
158
  preferredPort: options.port,
163
159
  host: options.host,
164
160
  openBrowser: options.open,
165
- mode: options.mode,
166
161
  });
167
162
  });
168
163
  await program.parseAsync([...args], { from: 'user' });
@@ -171,7 +166,6 @@ describe('CLI index.ts', () => {
171
166
  preferredPort: undefined,
172
167
  host: '',
173
168
  openBrowser: true,
174
- mode: 'split',
175
169
  });
176
170
  });
177
171
  });
@@ -192,21 +186,6 @@ describe('CLI index.ts', () => {
192
186
  args: ['--no-open'],
193
187
  expectedOptions: { open: false },
194
188
  },
195
- {
196
- name: '--mode option',
197
- args: ['--mode', 'unified'],
198
- expectedOptions: { mode: 'unified' },
199
- },
200
- {
201
- name: '--mode option (legacy inline)',
202
- args: ['--mode', 'inline'],
203
- expectedOptions: { mode: 'unified' },
204
- },
205
- {
206
- name: '--mode option (legacy side-by-side)',
207
- args: ['--mode', 'side-by-side'],
208
- expectedOptions: { mode: 'split' },
209
- },
210
189
  {
211
190
  name: '--clean option',
212
191
  args: ['--clean'],
@@ -236,8 +215,6 @@ describe('CLI index.ts', () => {
236
215
  .option('--port <port>', 'port', parseInt)
237
216
  .option('--host <host>', 'host', '')
238
217
  .option('--no-open', 'no-open')
239
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
240
- .option('--tui', 'tui')
241
218
  .option('--pr <url>', 'pr')
242
219
  .option('--merge-base', 'merge-base')
243
220
  .option('--clean', 'start with a clean slate by clearing all existing comments')
@@ -253,7 +230,6 @@ describe('CLI index.ts', () => {
253
230
  preferredPort: options.port,
254
231
  host: options.host,
255
232
  openBrowser: options.open,
256
- mode: options.mode,
257
233
  clearComments: options.clean,
258
234
  keepAlive: options.keepAlive,
259
235
  contextLines: options.context,
@@ -267,7 +243,6 @@ describe('CLI index.ts', () => {
267
243
  preferredPort: expectedOptions.port,
268
244
  host: expectedOptions.host || '',
269
245
  openBrowser: expectedOptions.open !== false,
270
- mode: expectedOptions.mode || 'split',
271
246
  clearComments: expectedOptions.clean,
272
247
  keepAlive: expectedOptions.keepAlive,
273
248
  contextLines: expectedOptions.context,
@@ -330,13 +305,11 @@ describe('CLI index.ts', () => {
330
305
  .argument('[commit-ish]', 'commit-ish', 'HEAD')
331
306
  .argument('[compare-with]', 'compare-with')
332
307
  .option('--context <lines>', 'context', parseInt)
333
- .option('--tui', 'tui')
334
308
  .action(async (commitish, _compareWith, options) => {
335
309
  const readFromStdin = shouldReadStdin({
336
310
  commitish,
337
311
  hasPositionalArgs: program.args.length > 0,
338
312
  hasPrOption: false,
339
- hasTuiOption: Boolean(options.tui),
340
313
  });
341
314
  if (readFromStdin && options.context !== undefined) {
342
315
  console.error('Error: --context option cannot be used with stdin diff');
@@ -385,13 +358,11 @@ describe('CLI index.ts', () => {
385
358
  .argument('[commit-ish]', 'commit-ish', 'HEAD')
386
359
  .argument('[compare-with]', 'compare-with')
387
360
  .option('--merge-base', 'merge-base')
388
- .option('--tui', 'tui')
389
361
  .action(async (commitish, _compareWith, options) => {
390
362
  const readFromStdin = shouldReadStdin({
391
363
  commitish,
392
364
  hasPositionalArgs: program.args.length > 0,
393
365
  hasPrOption: false,
394
- hasTuiOption: Boolean(options.tui),
395
366
  });
396
367
  if (readFromStdin && options.mergeBase) {
397
368
  console.error('Error: --merge-base option cannot be used with stdin diff');
@@ -487,8 +458,6 @@ describe('CLI index.ts', () => {
487
458
  .option('--port <port>', 'port', parseInt)
488
459
  .option('--host <host>', 'host', '')
489
460
  .option('--no-open', 'no-open')
490
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
491
- .option('--tui', 'tui')
492
461
  .option('--pr <url>', 'pr')
493
462
  .action(async (commitish, _compareWith, options) => {
494
463
  if (commitish === 'working' || commitish === '.') {
@@ -501,7 +470,6 @@ describe('CLI index.ts', () => {
501
470
  preferredPort: options.port,
502
471
  host: options.host,
503
472
  openBrowser: options.open,
504
- mode: options.mode,
505
473
  });
506
474
  });
507
475
  await program.parseAsync(['working'], { from: 'user' });
@@ -517,8 +485,6 @@ describe('CLI index.ts', () => {
517
485
  .option('--port <port>', 'port', parseInt)
518
486
  .option('--host <host>', 'host', '')
519
487
  .option('--no-open', 'no-open')
520
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
521
- .option('--tui', 'tui')
522
488
  .option('--pr <url>', 'pr')
523
489
  .action(async (commitish, _compareWith, options) => {
524
490
  if (commitish === 'working' || commitish === '.') {
@@ -530,7 +496,6 @@ describe('CLI index.ts', () => {
530
496
  preferredPort: options.port,
531
497
  host: options.host,
532
498
  openBrowser: options.open,
533
- mode: options.mode,
534
499
  });
535
500
  });
536
501
  await program.parseAsync(['HEAD'], { from: 'user' });
@@ -547,8 +512,6 @@ describe('CLI index.ts', () => {
547
512
  .option('--port <port>', 'port', parseInt)
548
513
  .option('--host <host>', 'host', '')
549
514
  .option('--no-open', 'no-open')
550
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
551
- .option('--tui', 'tui')
552
515
  .option('--pr <url>', 'pr')
553
516
  .option('--include-untracked', 'include untracked')
554
517
  .action(async (commitish, _compareWith, options) => {
@@ -564,7 +527,6 @@ describe('CLI index.ts', () => {
564
527
  preferredPort: options.port,
565
528
  host: options.host,
566
529
  openBrowser: options.open,
567
- mode: options.mode,
568
530
  });
569
531
  });
570
532
  await program.parseAsync(['.', '--include-untracked'], { from: 'user' });
@@ -582,8 +544,6 @@ describe('CLI index.ts', () => {
582
544
  .option('--port <port>', 'port', parseInt)
583
545
  .option('--host <host>', 'host', '')
584
546
  .option('--no-open', 'no-open')
585
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
586
- .option('--tui', 'tui')
587
547
  .option('--pr <url>', 'pr')
588
548
  .option('--include-untracked', 'include untracked')
589
549
  .action(async (commitish, _compareWith, options) => {
@@ -600,7 +560,6 @@ describe('CLI index.ts', () => {
600
560
  preferredPort: options.port,
601
561
  host: options.host,
602
562
  openBrowser: options.open,
603
- mode: options.mode,
604
563
  });
605
564
  });
606
565
  await program.parseAsync(['.'], { from: 'user' });
@@ -644,8 +603,6 @@ describe('CLI index.ts', () => {
644
603
  .option('--port <port>', 'port', parseInt)
645
604
  .option('--host <host>', 'host', '')
646
605
  .option('--no-open', 'no-open')
647
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
648
- .option('--tui', 'tui')
649
606
  .option('--pr <url>', 'pr')
650
607
  .action(async (commitish, _compareWith, options) => {
651
608
  const manualCommentImports = actualParseCommentOptions(options.comment);
@@ -663,7 +620,6 @@ describe('CLI index.ts', () => {
663
620
  preferredPort: options.port,
664
621
  host: options.host,
665
622
  openBrowser: options.open,
666
- mode: options.mode,
667
623
  commentImports,
668
624
  });
669
625
  });
@@ -680,7 +636,6 @@ describe('CLI index.ts', () => {
680
636
  preferredPort: undefined,
681
637
  host: '',
682
638
  openBrowser: true,
683
- mode: 'split',
684
639
  commentImports: [
685
640
  ...prCommentImports,
686
641
  {
@@ -710,8 +665,6 @@ describe('CLI index.ts', () => {
710
665
  .option('--port <port>', 'port', parseInt)
711
666
  .option('--host <host>', 'host', '')
712
667
  .option('--no-open', 'no-open')
713
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
714
- .option('--tui', 'tui')
715
668
  .option('--pr <url>', 'pr')
716
669
  .action(async (commitish, _compareWith, options) => {
717
670
  const manualCommentImports = actualParseCommentOptions(options.comment);
@@ -734,7 +687,6 @@ describe('CLI index.ts', () => {
734
687
  preferredPort: options.port,
735
688
  host: options.host,
736
689
  openBrowser: options.open,
737
- mode: options.mode,
738
690
  ...(commentImports.length > 0 ? { commentImports } : {}),
739
691
  });
740
692
  });
@@ -745,7 +697,6 @@ describe('CLI index.ts', () => {
745
697
  preferredPort: undefined,
746
698
  host: '',
747
699
  openBrowser: true,
748
- mode: 'split',
749
700
  });
750
701
  });
751
702
  it('rejects PR option with positional arguments', async () => {
@@ -756,8 +707,6 @@ describe('CLI index.ts', () => {
756
707
  .option('--port <port>', 'port', parseInt)
757
708
  .option('--host <host>', 'host', '')
758
709
  .option('--no-open', 'no-open')
759
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
760
- .option('--tui', 'tui')
761
710
  .option('--pr <url>', 'pr')
762
711
  .action(async (commitish, _compareWith, options) => {
763
712
  if (options.pr) {
@@ -773,35 +722,6 @@ describe('CLI index.ts', () => {
773
722
  expect(console.error).toHaveBeenCalledWith('Error: --pr option cannot be used with positional arguments');
774
723
  expect(process.exit).toHaveBeenCalledWith(1);
775
724
  });
776
- it('rejects PR option with --tui', async () => {
777
- const prUrl = 'https://github.com/owner/repo/pull/123';
778
- const program = new Command();
779
- program
780
- .argument('[commit-ish]', 'commit-ish', 'HEAD')
781
- .argument('[compare-with]', 'compare-with')
782
- .option('--port <port>', 'port', parseInt)
783
- .option('--host <host>', 'host', '')
784
- .option('--no-open', 'no-open')
785
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
786
- .option('--tui', 'tui')
787
- .option('--pr <url>', 'pr')
788
- .action(async (commitish, _compareWith, options) => {
789
- if (options.pr) {
790
- if (commitish !== 'HEAD' || _compareWith) {
791
- console.error('Error: --pr option cannot be used with positional arguments');
792
- process.exit(1);
793
- }
794
- if (options.tui) {
795
- console.error('Error: --pr option cannot be used with --tui');
796
- process.exit(1);
797
- }
798
- }
799
- });
800
- await program.parseAsync(['--pr', prUrl, '--tui'], { from: 'user' });
801
- expect(console.error).toHaveBeenCalledWith('Error: --pr option cannot be used with --tui');
802
- expect(process.exit).toHaveBeenCalledWith(1);
803
- expect(mockStartServer).not.toHaveBeenCalled();
804
- });
805
725
  });
806
726
  describe('--comment option', () => {
807
727
  it('passes parsed comment imports to startServer', async () => {
@@ -812,7 +732,6 @@ describe('CLI index.ts', () => {
812
732
  .option('--port <port>', 'port', parseInt)
813
733
  .option('--host <host>', 'host', '')
814
734
  .option('--no-open', 'no-open')
815
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
816
735
  .action(async (commitish, options) => {
817
736
  const commentImports = actualParseCommentOptions(options.comment);
818
737
  await startServer({
@@ -820,7 +739,6 @@ describe('CLI index.ts', () => {
820
739
  preferredPort: options.port,
821
740
  host: options.host,
822
741
  openBrowser: options.open,
823
- mode: options.mode,
824
742
  commentImports,
825
743
  });
826
744
  });
@@ -833,7 +751,6 @@ describe('CLI index.ts', () => {
833
751
  preferredPort: undefined,
834
752
  host: '',
835
753
  openBrowser: true,
836
- mode: 'split',
837
754
  commentImports: [
838
755
  {
839
756
  type: 'thread',
@@ -849,27 +766,6 @@ describe('CLI index.ts', () => {
849
766
  ],
850
767
  });
851
768
  });
852
- it('rejects --comment with --tui', async () => {
853
- const program = new Command();
854
- program
855
- .argument('[commit-ish]', 'commit-ish', 'HEAD')
856
- .option('--comment <json>', 'comment', (value, previous) => [...previous, value], [])
857
- .option('--tui', 'tui')
858
- .action(async (_commitish, options) => {
859
- const commentImports = actualParseCommentOptions(options.comment);
860
- if (options.tui && commentImports.length > 0) {
861
- console.error('Error: --comment option cannot be used with --tui');
862
- process.exit(1);
863
- }
864
- });
865
- await program.parseAsync([
866
- '--tui',
867
- '--comment',
868
- '{"type":"thread","filePath":"src/example.ts","position":{"side":"new","line":10},"body":"Imported comment"}',
869
- ], { from: 'user' });
870
- expect(console.error).toHaveBeenCalledWith('Error: --comment option cannot be used with --tui');
871
- expect(process.exit).toHaveBeenCalledWith(1);
872
- });
873
769
  it('reports invalid comment json before starting the server', async () => {
874
770
  const program = new Command();
875
771
  program
@@ -905,8 +801,6 @@ describe('CLI index.ts', () => {
905
801
  .option('--port <port>', 'port', parseInt)
906
802
  .option('--host <host>', 'host', '')
907
803
  .option('--no-open', 'no-open')
908
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
909
- .option('--tui', 'tui')
910
804
  .option('--pr <url>', 'pr')
911
805
  .option('--clean', 'start with a clean slate by clearing all existing comments')
912
806
  .action(async (commitish, _compareWith, options) => {
@@ -915,7 +809,6 @@ describe('CLI index.ts', () => {
915
809
  preferredPort: options.port,
916
810
  host: options.host,
917
811
  openBrowser: options.open,
918
- mode: options.mode,
919
812
  clearComments: options.clean,
920
813
  });
921
814
  console.log(`\n🚀 difit server started on ${url}`);
@@ -944,8 +837,6 @@ describe('CLI index.ts', () => {
944
837
  .option('--port <port>', 'port', parseInt)
945
838
  .option('--host <host>', 'host', '')
946
839
  .option('--no-open', 'no-open')
947
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
948
- .option('--tui', 'tui')
949
840
  .option('--pr <url>', 'pr')
950
841
  .option('--clean', 'start with a clean slate by clearing all existing comments')
951
842
  .action(async (commitish, _compareWith, options) => {
@@ -954,7 +845,6 @@ describe('CLI index.ts', () => {
954
845
  preferredPort: options.port,
955
846
  host: options.host,
956
847
  openBrowser: options.open,
957
- mode: options.mode,
958
848
  clearComments: options.clean,
959
849
  });
960
850
  console.log(`\n🚀 difit server started on ${url}`);
@@ -985,8 +875,6 @@ describe('CLI index.ts', () => {
985
875
  .option('--port <port>', 'port', parseInt)
986
876
  .option('--host <host>', 'host', '')
987
877
  .option('--no-open', 'no-open')
988
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
989
- .option('--tui', 'tui')
990
878
  .option('--pr <url>', 'pr')
991
879
  .option('--clean', 'start with a clean slate by clearing all existing comments')
992
880
  .option('--keep-alive', 'keep server running even after browser disconnects')
@@ -996,7 +884,6 @@ describe('CLI index.ts', () => {
996
884
  preferredPort: options.port,
997
885
  host: options.host,
998
886
  openBrowser: options.open,
999
- mode: options.mode,
1000
887
  clearComments: options.clean,
1001
888
  keepAlive: options.keepAlive,
1002
889
  });
@@ -1026,8 +913,6 @@ describe('CLI index.ts', () => {
1026
913
  .option('--port <port>', 'port', parseInt)
1027
914
  .option('--host <host>', 'host', '')
1028
915
  .option('--no-open', 'no-open')
1029
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
1030
- .option('--tui', 'tui')
1031
916
  .option('--pr <url>', 'pr')
1032
917
  .option('--clean', 'start with a clean slate by clearing all existing comments')
1033
918
  .option('--keep-alive', 'keep server running even after browser disconnects')
@@ -1037,7 +922,6 @@ describe('CLI index.ts', () => {
1037
922
  preferredPort: options.port,
1038
923
  host: options.host,
1039
924
  openBrowser: options.open,
1040
- mode: options.mode,
1041
925
  clearComments: options.clean,
1042
926
  keepAlive: options.keepAlive,
1043
927
  });
@@ -1069,8 +953,6 @@ describe('CLI index.ts', () => {
1069
953
  .option('--port <port>', 'port', parseInt)
1070
954
  .option('--host <host>', 'host', '')
1071
955
  .option('--no-open', 'no-open')
1072
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
1073
- .option('--tui', 'tui')
1074
956
  .option('--pr <url>', 'pr')
1075
957
  .action(async (commitish, _compareWith, options) => {
1076
958
  const { url, isEmpty } = await startServer({
@@ -1078,7 +960,6 @@ describe('CLI index.ts', () => {
1078
960
  preferredPort: options.port,
1079
961
  host: options.host,
1080
962
  openBrowser: options.open,
1081
- mode: options.mode,
1082
963
  });
1083
964
  console.log(`\n🚀 difit server started on ${url}`);
1084
965
  console.log(`📋 Reviewing: ${commitish}`);
@@ -1111,8 +992,6 @@ describe('CLI index.ts', () => {
1111
992
  .option('--port <port>', 'port', parseInt)
1112
993
  .option('--host <host>', 'host', '')
1113
994
  .option('--no-open', 'no-open')
1114
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
1115
- .option('--tui', 'tui')
1116
995
  .option('--pr <url>', 'pr')
1117
996
  .action(async (commitish, _compareWith, options) => {
1118
997
  const { url, isEmpty } = await startServer({
@@ -1120,7 +999,6 @@ describe('CLI index.ts', () => {
1120
999
  preferredPort: options.port,
1121
1000
  host: options.host,
1122
1001
  openBrowser: options.open,
1123
- mode: options.mode,
1124
1002
  });
1125
1003
  console.log(`\n🚀 difit server started on ${url}`);
1126
1004
  console.log(`📋 Reviewing: ${commitish}`);
@@ -1134,249 +1012,6 @@ describe('CLI index.ts', () => {
1134
1012
  expect(console.log).toHaveBeenCalledWith(' Server is running at http://localhost:4966 if you want to check manually.\n');
1135
1013
  });
1136
1014
  });
1137
- describe('Server mode option handling', () => {
1138
- it('passes mode option to startServer', async () => {
1139
- mockFindUntrackedFiles.mockResolvedValue([]);
1140
- const program = new Command();
1141
- program
1142
- .argument('[commit-ish]', 'commit-ish', 'HEAD')
1143
- .argument('[compare-with]', 'compare-with')
1144
- .option('--port <port>', 'port', parseInt)
1145
- .option('--host <host>', 'host', '')
1146
- .option('--no-open', 'no-open')
1147
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
1148
- .option('--tui', 'tui')
1149
- .option('--pr <url>', 'pr')
1150
- .action(async (commitish, _compareWith, options) => {
1151
- await startServer({
1152
- selection: { targetCommitish: commitish, baseCommitish: commitish + '^' },
1153
- preferredPort: options.port,
1154
- host: options.host,
1155
- openBrowser: options.open,
1156
- mode: options.mode,
1157
- });
1158
- });
1159
- await program.parseAsync(['--mode', 'unified'], { from: 'user' });
1160
- expect(mockStartServer).toHaveBeenCalledWith(expect.objectContaining({
1161
- mode: 'unified',
1162
- }));
1163
- });
1164
- it('uses default mode when not specified', async () => {
1165
- mockFindUntrackedFiles.mockResolvedValue([]);
1166
- const program = new Command();
1167
- program
1168
- .argument('[commit-ish]', 'commit-ish', 'HEAD')
1169
- .argument('[compare-with]', 'compare-with')
1170
- .option('--port <port>', 'port', parseInt)
1171
- .option('--host <host>', 'host', '')
1172
- .option('--no-open', 'no-open')
1173
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
1174
- .option('--tui', 'tui')
1175
- .option('--pr <url>', 'pr')
1176
- .action(async (commitish, _compareWith, options) => {
1177
- await startServer({
1178
- selection: { targetCommitish: commitish, baseCommitish: commitish + '^' },
1179
- preferredPort: options.port,
1180
- host: options.host,
1181
- openBrowser: options.open,
1182
- mode: options.mode,
1183
- });
1184
- });
1185
- await program.parseAsync([], { from: 'user' });
1186
- expect(mockStartServer).toHaveBeenCalledWith(expect.objectContaining({
1187
- mode: 'split',
1188
- }));
1189
- });
1190
- });
1191
- describe('TUI mode', () => {
1192
- let mockRender;
1193
- let mockTuiApp;
1194
- const expectRenderedTuiProps = (props) => {
1195
- expect(mockRender).toHaveBeenCalledTimes(1);
1196
- expect(mockRender).toHaveBeenCalledWith({
1197
- component: mockTuiApp,
1198
- props,
1199
- });
1200
- };
1201
- beforeEach(() => {
1202
- mockRender = vi.fn();
1203
- mockTuiApp = vi.fn();
1204
- // Mock React.createElement for testing
1205
- vi.spyOn(React, 'createElement').mockImplementation((component, props) => ({ component, props }));
1206
- // Mock process.stdin.isTTY
1207
- Object.defineProperty(process.stdin, 'isTTY', {
1208
- value: true,
1209
- configurable: true,
1210
- });
1211
- });
1212
- afterEach(() => {
1213
- vi.restoreAllMocks();
1214
- });
1215
- it('passes arguments to TUI app correctly', async () => {
1216
- mockFindUntrackedFiles.mockResolvedValue([]);
1217
- const program = new Command();
1218
- program
1219
- .argument('[commit-ish]', 'commit-ish', 'HEAD')
1220
- .argument('[compare-with]', 'compare-with')
1221
- .option('--port <port>', 'port', parseInt)
1222
- .option('--host <host>', 'host', '')
1223
- .option('--no-open', 'no-open')
1224
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
1225
- .option('--tui', 'tui')
1226
- .option('--pr <url>', 'pr')
1227
- .action(async (commitish, _compareWith, options) => {
1228
- if (options.tui) {
1229
- if (!process.stdin.isTTY) {
1230
- console.error('Error: TUI mode requires an interactive terminal (TTY).');
1231
- process.exit(1);
1232
- }
1233
- const render = mockRender;
1234
- const TuiApp = mockTuiApp;
1235
- render(React.createElement(TuiApp, {
1236
- selection: { targetCommitish: commitish, baseCommitish: commitish + '^' },
1237
- mode: options.mode,
1238
- }));
1239
- }
1240
- });
1241
- await program.parseAsync(['main', '--tui'], { from: 'user' });
1242
- expectRenderedTuiProps({
1243
- selection: { targetCommitish: 'main', baseCommitish: 'main^' },
1244
- mode: 'split',
1245
- });
1246
- });
1247
- it('passes context option to TUI app', async () => {
1248
- mockFindUntrackedFiles.mockResolvedValue([]);
1249
- const program = new Command();
1250
- program
1251
- .argument('[commit-ish]', 'commit-ish', 'HEAD')
1252
- .argument('[compare-with]', 'compare-with')
1253
- .option('--port <port>', 'port', parseInt)
1254
- .option('--host <host>', 'host', '')
1255
- .option('--no-open', 'no-open')
1256
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
1257
- .option('--context <lines>', 'context', parseInt)
1258
- .option('--tui', 'tui')
1259
- .option('--pr <url>', 'pr')
1260
- .action(async (commitish, _compareWith, options) => {
1261
- if (options.tui) {
1262
- const render = mockRender;
1263
- const TuiApp = mockTuiApp;
1264
- render(React.createElement(TuiApp, {
1265
- selection: { targetCommitish: commitish, baseCommitish: commitish + '^' },
1266
- mode: options.mode,
1267
- contextLines: options.context,
1268
- }));
1269
- }
1270
- });
1271
- await program.parseAsync(['--tui', '--context', '2'], { from: 'user' });
1272
- expectRenderedTuiProps({
1273
- selection: { targetCommitish: 'HEAD', baseCommitish: 'HEAD^' },
1274
- mode: 'split',
1275
- contextLines: 2,
1276
- });
1277
- });
1278
- it('passes mode option to TUI app', async () => {
1279
- mockFindUntrackedFiles.mockResolvedValue([]);
1280
- const program = new Command();
1281
- program
1282
- .argument('[commit-ish]', 'commit-ish', 'HEAD')
1283
- .argument('[compare-with]', 'compare-with')
1284
- .option('--port <port>', 'port', parseInt)
1285
- .option('--host <host>', 'host', '')
1286
- .option('--no-open', 'no-open')
1287
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
1288
- .option('--tui', 'tui')
1289
- .option('--pr <url>', 'pr')
1290
- .action(async (commitish, _compareWith, options) => {
1291
- if (options.tui) {
1292
- if (!process.stdin.isTTY) {
1293
- console.error('Error: TUI mode requires an interactive terminal (TTY).');
1294
- process.exit(1);
1295
- }
1296
- const render = mockRender;
1297
- const TuiApp = mockTuiApp;
1298
- render(React.createElement(TuiApp, {
1299
- selection: { targetCommitish: commitish, baseCommitish: commitish + '^' },
1300
- mode: options.mode,
1301
- }));
1302
- }
1303
- });
1304
- await program.parseAsync(['--tui', '--mode', 'unified'], { from: 'user' });
1305
- expectRenderedTuiProps({
1306
- selection: { targetCommitish: 'HEAD', baseCommitish: 'HEAD^' },
1307
- mode: 'unified',
1308
- });
1309
- });
1310
- it('handles special arguments with TUI mode', async () => {
1311
- mockFindUntrackedFiles.mockResolvedValue([]);
1312
- const program = new Command();
1313
- program
1314
- .argument('[commit-ish]', 'commit-ish', 'HEAD')
1315
- .argument('[compare-with]', 'compare-with')
1316
- .option('--port <port>', 'port', parseInt)
1317
- .option('--host <host>', 'host', '')
1318
- .option('--no-open', 'no-open')
1319
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
1320
- .option('--tui', 'tui')
1321
- .option('--pr <url>', 'pr')
1322
- .action(async (commitish, _compareWith, options) => {
1323
- if (options.tui) {
1324
- const render = mockRender;
1325
- const TuiApp = mockTuiApp;
1326
- let targetCommitish = commitish;
1327
- let baseCommitish;
1328
- if (commitish === 'working') {
1329
- baseCommitish = 'staged';
1330
- }
1331
- else if (commitish === 'staged' || commitish === '.') {
1332
- baseCommitish = 'HEAD';
1333
- }
1334
- else {
1335
- baseCommitish = commitish + '^';
1336
- }
1337
- render(React.createElement(TuiApp, {
1338
- selection: { targetCommitish, baseCommitish },
1339
- mode: options.mode,
1340
- }));
1341
- }
1342
- });
1343
- await program.parseAsync(['working', '--tui', '--mode', 'unified'], { from: 'user' });
1344
- expectRenderedTuiProps({
1345
- selection: { targetCommitish: 'working', baseCommitish: 'staged' },
1346
- mode: 'unified',
1347
- });
1348
- });
1349
- it('rejects TUI mode in non-TTY environment', async () => {
1350
- // Mock non-TTY environment
1351
- Object.defineProperty(process.stdin, 'isTTY', {
1352
- value: false,
1353
- configurable: true,
1354
- });
1355
- const program = new Command();
1356
- program
1357
- .argument('[commit-ish]', 'commit-ish', 'HEAD')
1358
- .argument('[compare-with]', 'compare-with')
1359
- .option('--port <port>', 'port', parseInt)
1360
- .option('--host <host>', 'host', '')
1361
- .option('--no-open', 'no-open')
1362
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
1363
- .option('--tui', 'tui')
1364
- .option('--pr <url>', 'pr')
1365
- .action(async (_commitish, _compareWith, options) => {
1366
- if (options.tui) {
1367
- if (!process.stdin.isTTY) {
1368
- console.error('Error: TUI mode requires an interactive terminal (TTY).');
1369
- console.error('Try running the command directly in your terminal without piping.');
1370
- process.exit(1);
1371
- }
1372
- }
1373
- });
1374
- await program.parseAsync(['--tui'], { from: 'user' });
1375
- expect(console.error).toHaveBeenCalledWith('Error: TUI mode requires an interactive terminal (TTY).');
1376
- expect(console.error).toHaveBeenCalledWith('Try running the command directly in your terminal without piping.');
1377
- expect(process.exit).toHaveBeenCalledWith(1);
1378
- });
1379
- });
1380
1015
  describe('Diff mode determination', () => {
1381
1016
  const testCases = [
1382
1017
  {
@@ -1420,8 +1055,6 @@ describe('CLI index.ts', () => {
1420
1055
  .option('--port <port>', 'port', parseInt)
1421
1056
  .option('--host <host>', 'host', '')
1422
1057
  .option('--no-open', 'no-open')
1423
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
1424
- .option('--tui', 'tui')
1425
1058
  .option('--pr <url>', 'pr')
1426
1059
  .action(async (commitish, compareWith, options) => {
1427
1060
  // Simulate determineDiffMode function behavior
@@ -1449,7 +1082,6 @@ describe('CLI index.ts', () => {
1449
1082
  preferredPort: options.port,
1450
1083
  host: options.host,
1451
1084
  openBrowser: options.open,
1452
- mode: options.mode,
1453
1085
  diffMode,
1454
1086
  });
1455
1087
  });
@@ -1468,8 +1100,6 @@ describe('CLI index.ts', () => {
1468
1100
  .option('--port <port>', 'port', parseInt)
1469
1101
  .option('--host <host>', 'host', '')
1470
1102
  .option('--no-open', 'no-open')
1471
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
1472
- .option('--tui', 'tui')
1473
1103
  .option('--pr <url>', 'pr')
1474
1104
  .action(async (commitish, compareWith, options) => {
1475
1105
  // Simulate determineDiffMode function behavior
@@ -1497,7 +1127,6 @@ describe('CLI index.ts', () => {
1497
1127
  preferredPort: options.port,
1498
1128
  host: options.host,
1499
1129
  openBrowser: options.open,
1500
- mode: options.mode,
1501
1130
  diffMode,
1502
1131
  });
1503
1132
  });
@@ -1516,8 +1145,6 @@ describe('CLI index.ts', () => {
1516
1145
  .option('--port <port>', 'port', parseInt)
1517
1146
  .option('--host <host>', 'host', '')
1518
1147
  .option('--no-open', 'no-open')
1519
- .option('--mode <mode>', 'mode', normalizeDiffViewMode, DEFAULT_DIFF_VIEW_MODE)
1520
- .option('--tui', 'tui')
1521
1148
  .option('--pr <url>', 'pr')
1522
1149
  .action(async (commitish, compareWith, options) => {
1523
1150
  // Simulate determineDiffMode function behavior with the fix
@@ -1545,7 +1172,6 @@ describe('CLI index.ts', () => {
1545
1172
  preferredPort: options.port,
1546
1173
  host: options.host,
1547
1174
  openBrowser: options.open,
1548
- mode: options.mode,
1549
1175
  diffMode,
1550
1176
  });
1551
1177
  });