ux(polish) autocomplete in the input prompt (#18181)

This commit is contained in:
Jacob Richman
2026-02-05 12:38:29 -08:00
committed by GitHub
parent 9ca7300c90
commit 8efae719ee
11 changed files with 927 additions and 210 deletions
@@ -114,6 +114,7 @@ describe('useCommandCompletion', () => {
initialText: string,
cursorOffset?: number,
shellModeActive = false,
active = true,
) => {
let hookResult: ReturnType<typeof useCommandCompletion> & {
textBuffer: ReturnType<typeof useTextBuffer>;
@@ -121,15 +122,16 @@ describe('useCommandCompletion', () => {
function TestComponent() {
const textBuffer = useTextBufferForTest(initialText, cursorOffset);
const completion = useCommandCompletion(
textBuffer,
testRootDir,
[],
mockCommandContext,
false,
const completion = useCommandCompletion({
buffer: textBuffer,
cwd: testRootDir,
slashCommands: [],
commandContext: mockCommandContext,
reverseSearchActive: false,
shellModeActive,
mockConfig,
);
config: mockConfig,
active,
});
hookResult = { ...completion, textBuffer };
return null;
}
@@ -197,7 +199,6 @@ describe('useCommandCompletion', () => {
act(() => {
result.current.setActiveSuggestionIndex(5);
result.current.setShowSuggestions(true);
});
act(() => {
@@ -509,22 +510,25 @@ describe('useCommandCompletion', () => {
function TestComponent() {
const textBuffer = useTextBufferForTest('// This is a line comment');
const completion = useCommandCompletion(
textBuffer,
testRootDir,
[],
mockCommandContext,
false,
false,
mockConfig,
);
const completion = useCommandCompletion({
buffer: textBuffer,
cwd: testRootDir,
slashCommands: [],
commandContext: mockCommandContext,
reverseSearchActive: false,
shellModeActive: false,
config: mockConfig,
active: true,
});
hookResult = { ...completion, textBuffer };
return null;
}
renderWithProviders(<TestComponent />);
// Should not trigger prompt completion for comments
expect(hookResult!.suggestions.length).toBe(0);
await waitFor(() => {
expect(hookResult!.suggestions.length).toBe(0);
});
});
it('should not trigger prompt completion for block comments', async () => {
@@ -541,22 +545,25 @@ describe('useCommandCompletion', () => {
const textBuffer = useTextBufferForTest(
'/* This is a block comment */',
);
const completion = useCommandCompletion(
textBuffer,
testRootDir,
[],
mockCommandContext,
false,
false,
mockConfig,
);
const completion = useCommandCompletion({
buffer: textBuffer,
cwd: testRootDir,
slashCommands: [],
commandContext: mockCommandContext,
reverseSearchActive: false,
shellModeActive: false,
config: mockConfig,
active: true,
});
hookResult = { ...completion, textBuffer };
return null;
}
renderWithProviders(<TestComponent />);
// Should not trigger prompt completion for comments
expect(hookResult!.suggestions.length).toBe(0);
await waitFor(() => {
expect(hookResult!.suggestions.length).toBe(0);
});
});
it('should trigger prompt completion for regular text when enabled', async () => {
@@ -573,24 +580,27 @@ describe('useCommandCompletion', () => {
const textBuffer = useTextBufferForTest(
'This is regular text that should trigger completion',
);
const completion = useCommandCompletion(
textBuffer,
testRootDir,
[],
mockCommandContext,
false,
false,
mockConfig,
);
const completion = useCommandCompletion({
buffer: textBuffer,
cwd: testRootDir,
slashCommands: [],
commandContext: mockCommandContext,
reverseSearchActive: false,
shellModeActive: false,
config: mockConfig,
active: true,
});
hookResult = { ...completion, textBuffer };
return null;
}
renderWithProviders(<TestComponent />);
// This test verifies that comments are filtered out while regular text is not
expect(hookResult!.textBuffer.text).toBe(
'This is regular text that should trigger completion',
);
await waitFor(() => {
expect(hookResult!.textBuffer.text).toBe(
'This is regular text that should trigger completion',
);
});
});
});