adamdotdevin 7 месяцев назад
Родитель
Сommit
f7dd48e60d

+ 1 - 1
packages/tui/internal/commands/command.go

@@ -336,7 +336,7 @@ func LoadFromConfig(config *opencode.Config) CommandRegistry {
 			Name:        AppExitCommand,
 			Description: "exit the app",
 			Keybindings: parseBindings("ctrl+c", "<leader>q"),
-			Trigger:     []string{"exit", "quit"},
+			Trigger:     []string{"exit", "quit", "q"},
 		},
 	}
 	registry := make(CommandRegistry)

+ 0 - 5
packages/tui/internal/completions/commands.go

@@ -77,7 +77,6 @@ func (c *CommandCompletionProvider) GetChildEntries(
 		return items, nil
 	}
 
-	// Use fuzzy matching for commands
 	var commandNames []string
 	commandMap := make(map[string]CompletionSuggestion)
 
@@ -86,17 +85,13 @@ func (c *CommandCompletionProvider) GetChildEntries(
 			continue
 		}
 		space := space - lipgloss.Width(cmd.PrimaryTrigger())
-		// Add all triggers as searchable options
 		for _, trigger := range cmd.Trigger {
 			commandNames = append(commandNames, trigger)
 			commandMap[trigger] = c.getCommandCompletionItem(cmd, space)
 		}
 	}
 
-	// Find fuzzy matches
 	matches := fuzzy.RankFindFold(query, commandNames)
-
-	// Sort by score (best matches first)
 	sort.Sort(matches)
 
 	// Convert matches to completion items, deduplicating by command name

+ 6 - 0
packages/tui/internal/components/chat/editor.go

@@ -344,6 +344,12 @@ func (m *editorComponent) Submit() (tea.Model, tea.Cmd) {
 	if value == "" {
 		return m, nil
 	}
+
+	switch value {
+	case "exit", "quit", "q", ":q":
+		return m, tea.Quit
+	}
+
 	if len(value) > 0 && value[len(value)-1] == '\\' {
 		// If the last character is a backslash, remove it and add a newline
 		m.textarea.ReplaceRange(len(value)-1, len(value), "")

+ 1 - 4
packages/tui/internal/components/dialog/complete.go

@@ -85,7 +85,7 @@ func (c *completionDialogComponent) getAllCompletions(query string) tea.Cmd {
 		}
 
 		// If there's a query, use fuzzy ranking to sort results
-		if query != "" && len(allItems) > 0 {
+		if query != "" && len(allItems) > 0 && len(c.providers) > 1 {
 			t := theme.CurrentTheme()
 			baseStyle := styles.NewStyle().Background(t.BackgroundElement())
 			// Create a slice of display values for fuzzy matching
@@ -94,10 +94,7 @@ func (c *completionDialogComponent) getAllCompletions(query string) tea.Cmd {
 				displayValues[i] = item.Display(baseStyle)
 			}
 
-			// Get fuzzy matches with ranking
 			matches := fuzzy.RankFindFold(query, displayValues)
-
-			// Sort by score (best matches first)
 			sort.Sort(matches)
 
 			// Reorder items based on fuzzy ranking