@google/gemini-cli 0.15.0-nightly.20251111.51f952e7 → 0.15.0-preview.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 (154) hide show
  1. package/dist/google-gemini-cli-0.15.0-preview.0.tgz +0 -0
  2. package/dist/package.json +2 -2
  3. package/dist/src/config/config.d.ts +3 -0
  4. package/dist/src/config/config.js +31 -0
  5. package/dist/src/config/config.js.map +1 -1
  6. package/dist/src/config/config.test.js +20 -0
  7. package/dist/src/config/config.test.js.map +1 -1
  8. package/dist/src/config/extension-manager.js +13 -1
  9. package/dist/src/config/extension-manager.js.map +1 -1
  10. package/dist/src/config/extension.test.js +65 -0
  11. package/dist/src/config/extension.test.js.map +1 -1
  12. package/dist/src/config/settingsSchema.d.ts +10 -1
  13. package/dist/src/config/settingsSchema.js +10 -1
  14. package/dist/src/config/settingsSchema.js.map +1 -1
  15. package/dist/src/gemini.d.ts +2 -2
  16. package/dist/src/gemini.js +35 -4
  17. package/dist/src/gemini.js.map +1 -1
  18. package/dist/src/gemini.test.js +14 -7
  19. package/dist/src/gemini.test.js.map +1 -1
  20. package/dist/src/generated/git-commit.d.ts +2 -2
  21. package/dist/src/generated/git-commit.js +2 -2
  22. package/dist/src/generated/git-commit.js.map +1 -1
  23. package/dist/src/nonInteractiveCli.d.ts +3 -2
  24. package/dist/src/nonInteractiveCli.js +6 -1
  25. package/dist/src/nonInteractiveCli.js.map +1 -1
  26. package/dist/src/nonInteractiveCli.test.js +1 -0
  27. package/dist/src/nonInteractiveCli.test.js.map +1 -1
  28. package/dist/src/test-utils/render.d.ts +2 -1
  29. package/dist/src/test-utils/render.js +13 -3
  30. package/dist/src/test-utils/render.js.map +1 -1
  31. package/dist/src/ui/App.js +9 -1
  32. package/dist/src/ui/App.js.map +1 -1
  33. package/dist/src/ui/App.test.js +25 -1
  34. package/dist/src/ui/App.test.js.map +1 -1
  35. package/dist/src/ui/AppContainer.d.ts +2 -3
  36. package/dist/src/ui/AppContainer.js +22 -7
  37. package/dist/src/ui/AppContainer.js.map +1 -1
  38. package/dist/src/ui/AppContainer.test.js +349 -46
  39. package/dist/src/ui/AppContainer.test.js.map +1 -1
  40. package/dist/src/ui/commands/toolsCommand.js +4 -1
  41. package/dist/src/ui/commands/toolsCommand.js.map +1 -1
  42. package/dist/src/ui/components/AlternateBufferQuittingDisplay.d.ts +6 -0
  43. package/dist/src/ui/components/AlternateBufferQuittingDisplay.js +24 -0
  44. package/dist/src/ui/components/AlternateBufferQuittingDisplay.js.map +1 -0
  45. package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.d.ts +6 -0
  46. package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js +101 -0
  47. package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js.map +1 -0
  48. package/dist/src/ui/components/Composer.js +11 -4
  49. package/dist/src/ui/components/Composer.js.map +1 -1
  50. package/dist/src/ui/components/CopyModeWarning.d.ts +7 -0
  51. package/dist/src/ui/components/CopyModeWarning.js +12 -0
  52. package/dist/src/ui/components/CopyModeWarning.js.map +1 -0
  53. package/dist/src/ui/components/DetailedMessagesDisplay.js +1 -1
  54. package/dist/src/ui/components/Header.js +11 -1
  55. package/dist/src/ui/components/Header.js.map +1 -1
  56. package/dist/src/ui/components/Header.test.js +69 -14
  57. package/dist/src/ui/components/Header.test.js.map +1 -1
  58. package/dist/src/ui/components/HistoryItemDisplay.js +1 -1
  59. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  60. package/dist/src/ui/components/HistoryItemDisplay.test.js +43 -41
  61. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
  62. package/dist/src/ui/components/InputPrompt.d.ts +2 -0
  63. package/dist/src/ui/components/InputPrompt.js +14 -8
  64. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  65. package/dist/src/ui/components/MainContent.js +52 -15
  66. package/dist/src/ui/components/MainContent.js.map +1 -1
  67. package/dist/src/ui/components/ModelDialog.test.js +1 -0
  68. package/dist/src/ui/components/ModelDialog.test.js.map +1 -1
  69. package/dist/src/ui/components/StickyHeader.d.ts +11 -0
  70. package/dist/src/ui/components/StickyHeader.js +5 -0
  71. package/dist/src/ui/components/StickyHeader.js.map +1 -0
  72. package/dist/src/ui/components/StickyHeader.test.d.ts +6 -0
  73. package/dist/src/ui/components/StickyHeader.test.js +17 -0
  74. package/dist/src/ui/components/StickyHeader.test.js.map +1 -0
  75. package/dist/src/ui/components/ThemeDialog.js +11 -3
  76. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  77. package/dist/src/ui/components/messages/DiffRenderer.js +129 -89
  78. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  79. package/dist/src/ui/components/messages/DiffRenderer.test.js +107 -115
  80. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -1
  81. package/dist/src/ui/components/messages/GeminiMessage.js +3 -1
  82. package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
  83. package/dist/src/ui/components/messages/GeminiMessageContent.js +3 -1
  84. package/dist/src/ui/components/messages/GeminiMessageContent.js.map +1 -1
  85. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +152 -121
  86. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  87. package/dist/src/ui/components/messages/ToolGroupMessage.js +5 -7
  88. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  89. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +1 -5
  90. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
  91. package/dist/src/ui/components/messages/ToolMessage.js +39 -16
  92. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  93. package/dist/src/ui/components/messages/ToolMessageRawMarkdown.test.js +33 -4
  94. package/dist/src/ui/components/messages/ToolMessageRawMarkdown.test.js.map +1 -1
  95. package/dist/src/ui/components/messages/UserMessage.d.ts +1 -0
  96. package/dist/src/ui/components/messages/UserMessage.js +2 -2
  97. package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
  98. package/dist/src/ui/components/shared/ScrollableList.test.js +61 -24
  99. package/dist/src/ui/components/shared/ScrollableList.test.js.map +1 -1
  100. package/dist/src/ui/components/shared/VirtualizedList.js +1 -1
  101. package/dist/src/ui/components/shared/VirtualizedList.js.map +1 -1
  102. package/dist/src/ui/constants.d.ts +1 -0
  103. package/dist/src/ui/constants.js +5 -0
  104. package/dist/src/ui/constants.js.map +1 -1
  105. package/dist/src/ui/contexts/UIStateContext.d.ts +1 -0
  106. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  107. package/dist/src/ui/hooks/atCommandProcessor.test.js +1 -1
  108. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
  109. package/dist/src/ui/hooks/useAlternateBuffer.d.ts +6 -0
  110. package/dist/src/ui/hooks/useAlternateBuffer.js +11 -0
  111. package/dist/src/ui/hooks/useAlternateBuffer.js.map +1 -0
  112. package/dist/src/ui/hooks/useGeminiStream.test.js +4 -0
  113. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  114. package/dist/src/ui/hooks/usePromptCompletion.js +2 -9
  115. package/dist/src/ui/hooks/usePromptCompletion.js.map +1 -1
  116. package/dist/src/ui/hooks/useSessionBrowser.d.ts +18 -0
  117. package/dist/src/ui/hooks/useSessionBrowser.js +152 -0
  118. package/dist/src/ui/hooks/useSessionBrowser.js.map +1 -0
  119. package/dist/src/ui/hooks/useSessionBrowser.test.d.ts +6 -0
  120. package/dist/src/ui/hooks/useSessionBrowser.test.js +544 -0
  121. package/dist/src/ui/hooks/useSessionBrowser.test.js.map +1 -0
  122. package/dist/src/ui/hooks/useSessionResume.d.ts +30 -0
  123. package/dist/src/ui/hooks/useSessionResume.js +56 -0
  124. package/dist/src/ui/hooks/useSessionResume.js.map +1 -0
  125. package/dist/src/ui/hooks/useSessionResume.test.d.ts +6 -0
  126. package/dist/src/ui/hooks/useSessionResume.test.js +325 -0
  127. package/dist/src/ui/hooks/useSessionResume.test.js.map +1 -0
  128. package/dist/src/ui/hooks/useToolScheduler.test.js +1 -0
  129. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  130. package/dist/src/ui/layouts/DefaultAppLayout.js +9 -3
  131. package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -1
  132. package/dist/src/ui/utils/CodeColorizer.d.ts +11 -3
  133. package/dist/src/ui/utils/CodeColorizer.js +18 -9
  134. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  135. package/dist/src/ui/utils/MarkdownDisplay.js +32 -6
  136. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  137. package/dist/src/ui/utils/ui-sizing.js +9 -3
  138. package/dist/src/ui/utils/ui-sizing.js.map +1 -1
  139. package/dist/src/utils/cleanup.test.js +1 -1
  140. package/dist/src/utils/cleanup.test.js.map +1 -1
  141. package/dist/src/utils/sessionCleanup.test.js +76 -0
  142. package/dist/src/utils/sessionCleanup.test.js.map +1 -1
  143. package/dist/src/utils/sessionUtils.d.ts +54 -0
  144. package/dist/src/utils/sessionUtils.js +141 -1
  145. package/dist/src/utils/sessionUtils.js.map +1 -1
  146. package/dist/src/utils/sessionUtils.test.d.ts +6 -0
  147. package/dist/src/utils/sessionUtils.test.js +260 -0
  148. package/dist/src/utils/sessionUtils.test.js.map +1 -0
  149. package/dist/src/utils/sessions.d.ts +8 -0
  150. package/dist/src/utils/sessions.js +64 -0
  151. package/dist/src/utils/sessions.js.map +1 -0
  152. package/dist/tsconfig.tsbuildinfo +1 -1
  153. package/package.json +3 -3
  154. package/dist/google-gemini-cli-0.15.0-nightly.20251107.b8eeb553.tgz +0 -0
@@ -5,7 +5,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
5
5
  * SPDX-License-Identifier: Apache-2.0
6
6
  */
7
7
  import { OverflowProvider } from '../../contexts/OverflowContext.js';
8
- import { render } from '../../../test-utils/render.js';
8
+ import { renderWithProviders } from '../../../test-utils/render.js';
9
9
  import { DiffRenderer } from './DiffRenderer.js';
10
10
  import * as CodeColorizer from '../../utils/CodeColorizer.js';
11
11
  import { vi } from 'vitest';
@@ -15,8 +15,9 @@ describe('<OverflowProvider><DiffRenderer /></OverflowProvider>', () => {
15
15
  mockColorizeCode.mockClear();
16
16
  });
17
17
  const sanitizeOutput = (output, terminalWidth) => output?.replace(/GAP_INDICATOR/g, '═'.repeat(terminalWidth));
18
- it('should call colorizeCode with correct language for new file with known extension', () => {
19
- const newFileDiffContent = `
18
+ describe.each([true, false])('with useAlternateBuffer = %s', (useAlternateBuffer) => {
19
+ it('should call colorizeCode with correct language for new file with known extension', () => {
20
+ const newFileDiffContent = `
20
21
  diff --git a/test.py b/test.py
21
22
  new file mode 100644
22
23
  index 0000000..e69de29
@@ -25,11 +26,18 @@ index 0000000..e69de29
25
26
  @@ -0,0 +1 @@
26
27
  +print("hello world")
27
28
  `;
28
- render(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: newFileDiffContent, filename: "test.py", terminalWidth: 80 }) }));
29
- expect(mockColorizeCode).toHaveBeenCalledWith('print("hello world")', 'python', undefined, 80, undefined);
30
- });
31
- it('should call colorizeCode with null language for new file with unknown extension', () => {
32
- const newFileDiffContent = `
29
+ renderWithProviders(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: newFileDiffContent, filename: "test.py", terminalWidth: 80 }) }), { useAlternateBuffer });
30
+ expect(mockColorizeCode).toHaveBeenCalledWith({
31
+ code: 'print("hello world")',
32
+ language: 'python',
33
+ availableHeight: undefined,
34
+ maxWidth: 80,
35
+ theme: undefined,
36
+ settings: expect.anything(),
37
+ });
38
+ });
39
+ it('should call colorizeCode with null language for new file with unknown extension', () => {
40
+ const newFileDiffContent = `
33
41
  diff --git a/test.unknown b/test.unknown
34
42
  new file mode 100644
35
43
  index 0000000..e69de29
@@ -38,11 +46,18 @@ index 0000000..e69de29
38
46
  @@ -0,0 +1 @@
39
47
  +some content
40
48
  `;
41
- render(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: newFileDiffContent, filename: "test.unknown", terminalWidth: 80 }) }));
42
- expect(mockColorizeCode).toHaveBeenCalledWith('some content', null, undefined, 80, undefined);
43
- });
44
- it('should call colorizeCode with null language for new file if no filename is provided', () => {
45
- const newFileDiffContent = `
49
+ renderWithProviders(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: newFileDiffContent, filename: "test.unknown", terminalWidth: 80 }) }), { useAlternateBuffer });
50
+ expect(mockColorizeCode).toHaveBeenCalledWith({
51
+ code: 'some content',
52
+ language: null,
53
+ availableHeight: undefined,
54
+ maxWidth: 80,
55
+ theme: undefined,
56
+ settings: expect.anything(),
57
+ });
58
+ });
59
+ it('should call colorizeCode with null language for new file if no filename is provided', () => {
60
+ const newFileDiffContent = `
46
61
  diff --git a/test.txt b/test.txt
47
62
  new file mode 100644
48
63
  index 0000000..e69de29
@@ -51,11 +66,19 @@ index 0000000..e69de29
51
66
  @@ -0,0 +1 @@
52
67
  +some text content
53
68
  `;
54
- render(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: newFileDiffContent, terminalWidth: 80 }) }));
55
- expect(mockColorizeCode).toHaveBeenCalledWith('some text content', null, undefined, 80, undefined);
56
- });
57
- it('should render diff content for existing file (not calling colorizeCode directly for the whole block)', () => {
58
- const existingFileDiffContent = `
69
+ renderWithProviders(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: newFileDiffContent, terminalWidth: 80 }) }), { useAlternateBuffer });
70
+ expect(mockColorizeCode).toHaveBeenCalledWith({
71
+ code: 'some text content',
72
+ language: null,
73
+ availableHeight: undefined,
74
+ maxWidth: 80,
75
+ theme: undefined,
76
+ settings: expect.anything(),
77
+ });
78
+ });
79
+ it('should render diff content for existing file (not calling colorizeCode directly for the whole block)', () => {
80
+ const existingFileDiffContent = `
81
+
59
82
  diff --git a/test.txt b/test.txt
60
83
  index 0000001..0000002 100644
61
84
  --- a/test.txt
@@ -64,32 +87,34 @@ index 0000001..0000002 100644
64
87
  -old line
65
88
  +new line
66
89
  `;
67
- const { lastFrame } = render(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: existingFileDiffContent, filename: "test.txt", terminalWidth: 80 }) }));
68
- // colorizeCode is used internally by the line-by-line rendering, not for the whole block
69
- expect(mockColorizeCode).not.toHaveBeenCalledWith(expect.stringContaining('old line'), expect.anything());
70
- expect(mockColorizeCode).not.toHaveBeenCalledWith(expect.stringContaining('new line'), expect.anything());
71
- const output = lastFrame();
72
- const lines = output.split('\n');
73
- expect(lines[0]).toBe('1 - old line');
74
- expect(lines[1]).toBe('1 + new line');
75
- });
76
- it('should handle diff with only header and no changes', () => {
77
- const noChangeDiff = `diff --git a/file.txt b/file.txt
90
+ const { lastFrame } = renderWithProviders(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: existingFileDiffContent, filename: "test.txt", terminalWidth: 80 }) }), { useAlternateBuffer });
91
+ // colorizeCode is used internally by the line-by-line rendering, not for the whole block
92
+ expect(mockColorizeCode).not.toHaveBeenCalledWith(expect.objectContaining({
93
+ code: expect.stringContaining('old line'),
94
+ }));
95
+ expect(mockColorizeCode).not.toHaveBeenCalledWith(expect.objectContaining({
96
+ code: expect.stringContaining('new line'),
97
+ }));
98
+ expect(lastFrame()).toMatchSnapshot();
99
+ });
100
+ it('should handle diff with only header and no changes', () => {
101
+ const noChangeDiff = `diff --git a/file.txt b/file.txt
78
102
  index 1234567..1234567 100644
79
103
  --- a/file.txt
80
104
  +++ b/file.txt
81
105
  `;
82
- const { lastFrame } = render(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: noChangeDiff, filename: "file.txt", terminalWidth: 80 }) }));
83
- expect(lastFrame()).toContain('No changes detected');
84
- expect(mockColorizeCode).not.toHaveBeenCalled();
85
- });
86
- it('should handle empty diff content', () => {
87
- const { lastFrame } = render(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: "", terminalWidth: 80 }) }));
88
- expect(lastFrame()).toContain('No diff content');
89
- expect(mockColorizeCode).not.toHaveBeenCalled();
90
- });
91
- it('should render a gap indicator for skipped lines', () => {
92
- const diffWithGap = `
106
+ const { lastFrame } = renderWithProviders(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: noChangeDiff, filename: "file.txt", terminalWidth: 80 }) }), { useAlternateBuffer });
107
+ expect(lastFrame()).toMatchSnapshot();
108
+ expect(mockColorizeCode).not.toHaveBeenCalled();
109
+ });
110
+ it('should handle empty diff content', () => {
111
+ const { lastFrame } = renderWithProviders(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: "", terminalWidth: 80 }) }), { useAlternateBuffer });
112
+ expect(lastFrame()).toMatchSnapshot();
113
+ expect(mockColorizeCode).not.toHaveBeenCalled();
114
+ });
115
+ it('should render a gap indicator for skipped lines', () => {
116
+ const diffWithGap = `
117
+
93
118
  diff --git a/file.txt b/file.txt
94
119
  index 123..456 100644
95
120
  --- a/file.txt
@@ -102,16 +127,12 @@ index 123..456 100644
102
127
  context line 10
103
128
  context line 11
104
129
  `;
105
- const { lastFrame } = render(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: diffWithGap, filename: "file.txt", terminalWidth: 80 }) }));
106
- const output = lastFrame();
107
- expect(output).toContain('═'); // Check for the border character used in the gap
108
- // Verify that lines before and after the gap are rendered
109
- expect(output).toContain('context line 1');
110
- expect(output).toContain('added line');
111
- expect(output).toContain('context line 10');
112
- });
113
- it('should not render a gap indicator for small gaps (<= MAX_CONTEXT_LINES_WITHOUT_GAP)', () => {
114
- const diffWithSmallGap = `
130
+ const { lastFrame } = renderWithProviders(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: diffWithGap, filename: "file.txt", terminalWidth: 80 }) }), { useAlternateBuffer });
131
+ expect(lastFrame()).toMatchSnapshot();
132
+ });
133
+ it('should not render a gap indicator for small gaps (<= MAX_CONTEXT_LINES_WITHOUT_GAP)', () => {
134
+ const diffWithSmallGap = `
135
+
115
136
  diff --git a/file.txt b/file.txt
116
137
  index abc..def 100644
117
138
  --- a/file.txt
@@ -129,15 +150,12 @@ index abc..def 100644
129
150
  context line 14
130
151
  context line 15
131
152
  `;
132
- const { lastFrame } = render(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: diffWithSmallGap, filename: "file.txt", terminalWidth: 80 }) }));
133
- const output = lastFrame();
134
- expect(output).not.toContain('═'); // Ensure no separator is rendered
135
- // Verify that lines before and after the gap are rendered
136
- expect(output).toContain('context line 5');
137
- expect(output).toContain('context line 11');
138
- });
139
- describe('should correctly render a diff with multiple hunks and a gap indicator', () => {
140
- const diffWithMultipleHunks = `
153
+ const { lastFrame } = renderWithProviders(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: diffWithSmallGap, filename: "file.txt", terminalWidth: 80 }) }), { useAlternateBuffer });
154
+ expect(lastFrame()).toMatchSnapshot();
155
+ });
156
+ describe('should correctly render a diff with multiple hunks and a gap indicator', () => {
157
+ const diffWithMultipleHunks = `
158
+
141
159
  diff --git a/multi.js b/multi.js
142
160
  index 123..789 100644
143
161
  --- a/multi.js
@@ -153,48 +171,28 @@ index 123..789 100644
153
171
  +const anotherNew = 'test';
154
172
  console.log('end of second hunk');
155
173
  `;
156
- it.each([
157
- {
158
- terminalWidth: 80,
159
- height: undefined,
160
- expected: ` 1 console.log('first hunk');
161
- 2 - const oldVar = 1;
162
- 2 + const newVar = 1;
163
- 3 console.log('end of first hunk');
164
- ════════════════════════════════════════════════════════════════════════════════
165
- 20 console.log('second hunk');
166
- 21 - const anotherOld = 'test';
167
- 21 + const anotherNew = 'test';
168
- 22 console.log('end of second hunk');`,
169
- },
170
- {
171
- terminalWidth: 80,
172
- height: 6,
173
- expected: `... first 4 lines hidden ...
174
- ════════════════════════════════════════════════════════════════════════════════
175
- 20 console.log('second hunk');
176
- 21 - const anotherOld = 'test';
177
- 21 + const anotherNew = 'test';
178
- 22 console.log('end of second hunk');`,
179
- },
180
- {
181
- terminalWidth: 30,
182
- height: 6,
183
- expected: `... first 10 lines hidden ...
184
- ;
185
- 21 + const anotherNew = 'test'
186
- ;
187
- 22 console.log('end of
188
- second hunk');`,
189
- },
190
- ])('with terminalWidth $terminalWidth and height $height', ({ terminalWidth, height, expected }) => {
191
- const { lastFrame } = render(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: diffWithMultipleHunks, filename: "multi.js", terminalWidth: terminalWidth, availableTerminalHeight: height }) }));
192
- const output = lastFrame();
193
- expect(sanitizeOutput(output, terminalWidth)).toEqual(expected);
174
+ it.each([
175
+ {
176
+ terminalWidth: 80,
177
+ height: undefined,
178
+ },
179
+ {
180
+ terminalWidth: 80,
181
+ height: 6,
182
+ },
183
+ {
184
+ terminalWidth: 30,
185
+ height: 6,
186
+ },
187
+ ])('with terminalWidth $terminalWidth and height $height', ({ terminalWidth, height }) => {
188
+ const { lastFrame } = renderWithProviders(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: diffWithMultipleHunks, filename: "multi.js", terminalWidth: terminalWidth, availableTerminalHeight: height }) }), { useAlternateBuffer });
189
+ const output = lastFrame();
190
+ expect(sanitizeOutput(output, terminalWidth)).toMatchSnapshot();
191
+ });
194
192
  });
195
- });
196
- it('should correctly render a diff with a SVN diff format', () => {
197
- const newFileDiff = `
193
+ it('should correctly render a diff with a SVN diff format', () => {
194
+ const newFileDiff = `
195
+
198
196
  fileDiff Index: file.txt
199
197
  ===================================================================
200
198
  --- a/file.txt Current
@@ -209,16 +207,12 @@ fileDiff Index: file.txt
209
207
  +const anotherNew = 'test';
210
208
  \
211
209
  `;
212
- const { lastFrame } = render(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: newFileDiff, filename: "TEST", terminalWidth: 80 }) }));
213
- const output = lastFrame();
214
- expect(output).toEqual(` 1 - const oldVar = 1;
215
- 1 + const newVar = 1;
216
- ════════════════════════════════════════════════════════════════════════════════
217
- 20 - const anotherOld = 'test';
218
- 20 + const anotherNew = 'test';`);
219
- });
220
- it('should correctly render a new file with no file extension correctly', () => {
221
- const newFileDiff = `
210
+ const { lastFrame } = renderWithProviders(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: newFileDiff, filename: "TEST", terminalWidth: 80 }) }), { useAlternateBuffer });
211
+ expect(lastFrame()).toMatchSnapshot();
212
+ });
213
+ it('should correctly render a new file with no file extension correctly', () => {
214
+ const newFileDiff = `
215
+
222
216
  fileDiff Index: Dockerfile
223
217
  ===================================================================
224
218
  --- Dockerfile Current
@@ -229,11 +223,9 @@ fileDiff Index: Dockerfile
229
223
  +RUN npm run build
230
224
  \
231
225
  `;
232
- const { lastFrame } = render(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: newFileDiff, filename: "Dockerfile", terminalWidth: 80 }) }));
233
- const output = lastFrame();
234
- expect(output).toEqual(`1 FROM node:14
235
- 2 RUN npm install
236
- 3 RUN npm run build`);
226
+ const { lastFrame } = renderWithProviders(_jsx(OverflowProvider, { children: _jsx(DiffRenderer, { diffContent: newFileDiff, filename: "Dockerfile", terminalWidth: 80 }) }), { useAlternateBuffer });
227
+ expect(lastFrame()).toMatchSnapshot();
228
+ });
237
229
  });
238
230
  });
239
231
  //# sourceMappingURL=DiffRenderer.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DiffRenderer.test.js","sourceRoot":"","sources":["../../../../../src/ui/components/messages/DiffRenderer.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DiffRenderer.test.js","sourceRoot":"","sources":["../../../../../src/ui/components/messages/DiffRenderer.test.tsx"],"names":[],"mappings":"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"}
@@ -4,10 +4,12 @@ import { MarkdownDisplay } from '../../utils/MarkdownDisplay.js';
4
4
  import { theme } from '../../semantic-colors.js';
5
5
  import { SCREEN_READER_MODEL_PREFIX } from '../../textConstants.js';
6
6
  import { useUIState } from '../../contexts/UIStateContext.js';
7
+ import { useAlternateBuffer } from '../../hooks/useAlternateBuffer.js';
7
8
  export const GeminiMessage = ({ text, isPending, availableTerminalHeight, terminalWidth, }) => {
8
9
  const { renderMarkdown } = useUIState();
9
10
  const prefix = '✦ ';
10
11
  const prefixWidth = prefix.length;
11
- return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: prefixWidth, children: _jsx(Text, { color: theme.text.accent, "aria-label": SCREEN_READER_MODEL_PREFIX, children: prefix }) }), _jsx(Box, { flexGrow: 1, flexDirection: "column", children: _jsx(MarkdownDisplay, { text: text, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth, renderMarkdown: renderMarkdown }) })] }));
12
+ const isAlternateBuffer = useAlternateBuffer();
13
+ return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: prefixWidth, children: _jsx(Text, { color: theme.text.accent, "aria-label": SCREEN_READER_MODEL_PREFIX, children: prefix }) }), _jsx(Box, { flexGrow: 1, flexDirection: "column", children: _jsx(MarkdownDisplay, { text: text, isPending: isPending, availableTerminalHeight: isAlternateBuffer ? undefined : availableTerminalHeight, terminalWidth: terminalWidth, renderMarkdown: renderMarkdown }) })] }));
12
14
  };
13
15
  //# sourceMappingURL=GeminiMessage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GeminiMessage.js","sourceRoot":"","sources":["../../../../../src/ui/components/messages/GeminiMessage.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAS9D,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAC1D,IAAI,EACJ,SAAS,EACT,uBAAuB,EACvB,aAAa,GACd,EAAE,EAAE;IACH,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IAElC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,aACtB,KAAC,GAAG,IAAC,KAAK,EAAE,WAAW,YACrB,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,gBAAc,0BAA0B,YACnE,MAAM,GACF,GACH,EACN,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,YACtC,KAAC,eAAe,IACd,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,uBAAuB,EAAE,uBAAuB,EAChD,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,GAC9B,GACE,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"GeminiMessage.js","sourceRoot":"","sources":["../../../../../src/ui/components/messages/GeminiMessage.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AASvE,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAC1D,IAAI,EACJ,SAAS,EACT,uBAAuB,EACvB,aAAa,GACd,EAAE,EAAE;IACH,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IAElC,MAAM,iBAAiB,GAAG,kBAAkB,EAAE,CAAC;IAC/C,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,KAAK,aACtB,KAAC,GAAG,IAAC,KAAK,EAAE,WAAW,YACrB,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,gBAAc,0BAA0B,YACnE,MAAM,GACF,GACH,EACN,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,YACtC,KAAC,eAAe,IACd,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,uBAAuB,EACrB,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB,EAEzD,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,GAC9B,GACE,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -2,6 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Box } from 'ink';
3
3
  import { MarkdownDisplay } from '../../utils/MarkdownDisplay.js';
4
4
  import { useUIState } from '../../contexts/UIStateContext.js';
5
+ import { useAlternateBuffer } from '../../hooks/useAlternateBuffer.js';
5
6
  /*
6
7
  * Gemini message content is a semi-hacked component. The intention is to represent a partial
7
8
  * of GeminiMessage and is only used when a response gets too long. In that instance messages
@@ -10,8 +11,9 @@ import { useUIState } from '../../contexts/UIStateContext.js';
10
11
  */
11
12
  export const GeminiMessageContent = ({ text, isPending, availableTerminalHeight, terminalWidth, }) => {
12
13
  const { renderMarkdown } = useUIState();
14
+ const isAlternateBuffer = useAlternateBuffer();
13
15
  const originalPrefix = '✦ ';
14
16
  const prefixWidth = originalPrefix.length;
15
- return (_jsx(Box, { flexDirection: "column", paddingLeft: prefixWidth, children: _jsx(MarkdownDisplay, { text: text, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth, renderMarkdown: renderMarkdown }) }));
17
+ return (_jsx(Box, { flexDirection: "column", paddingLeft: prefixWidth, children: _jsx(MarkdownDisplay, { text: text, isPending: isPending, availableTerminalHeight: isAlternateBuffer ? undefined : availableTerminalHeight, terminalWidth: terminalWidth, renderMarkdown: renderMarkdown }) }));
16
18
  };
17
19
  //# sourceMappingURL=GeminiMessageContent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GeminiMessageContent.js","sourceRoot":"","sources":["../../../../../src/ui/components/messages/GeminiMessageContent.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAS9D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAwC,CAAC,EACxE,IAAI,EACJ,SAAS,EACT,uBAAuB,EACvB,aAAa,GACd,EAAE,EAAE;IACH,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAC;IACxC,MAAM,cAAc,GAAG,IAAI,CAAC;IAC5B,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;IAE1C,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,WAAW,YAClD,KAAC,eAAe,IACd,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,uBAAuB,EAAE,uBAAuB,EAChD,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,GAC9B,GACE,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"GeminiMessageContent.js","sourceRoot":"","sources":["../../../../../src/ui/components/messages/GeminiMessageContent.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AASvE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAwC,CAAC,EACxE,IAAI,EACJ,SAAS,EACT,uBAAuB,EACvB,aAAa,GACd,EAAE,EAAE;IACH,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAC;IACxC,MAAM,iBAAiB,GAAG,kBAAkB,EAAE,CAAC;IAC/C,MAAM,cAAc,GAAG,IAAI,CAAC;IAC5B,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;IAE1C,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,WAAW,YAClD,KAAC,eAAe,IACd,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,uBAAuB,EACrB,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB,EAEzD,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,GAC9B,GACE,CACP,CAAC;AACJ,CAAC,CAAC"}