Files
LazyBearWorks/LazyBear.MCP/TUI/Components/ToolButtonList.razor
Shahovalov MIkhail 9b27cd7dc2 fix: исправить навигацию клавиатуры в TUI через GlobalKeyboardService
- Добавить GlobalKeyboardService — выделенный поток с блокирующим
  Console.ReadKey, единственный источник клавишных событий для TUI
- Убрать FocusManager из App.razor: перехватывал Tab до компонентов
- Удалить @onkeydown с <Select>: RazorConsole не пробрасывает Tab/стрелки
  через этот механизм
- Использовать FocusedValue вместо Value в Select для корректной подсветки
- Обновить CLAUDE.md и AGENTS.md: архитектура TUI, RazorConsole gotchas
- Добавить docs/tui_log.md: разбор проблемы и справочник по RazorConsole

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 23:31:53 +03:00

22 lines
850 B
Plaintext

@using LazyBear.MCP.Services.ToolRegistry
@inject ToolRegistryService Registry
@foreach (var (tool, idx) in Module.ToolNames.Select((t, i) => (t, i)))
{
var toolEnabled = Registry.IsToolEnabled(Module.ModuleName, tool);
var toolName = tool;
var moduleName = Module.ModuleName;
var fo = StartFocusIdx + idx;
<TextButton Content="@(toolEnabled ? $"✓ {toolName}" : $"✗ {toolName}")"
OnClick="@(() => Registry.ToggleTool(moduleName, toolName))"
BackgroundColor="@(toolEnabled ? Spectre.Console.Color.DarkGreen : Spectre.Console.Color.Grey11)"
FocusedColor="@Spectre.Console.Color.Yellow"
FocusOrder="@fo" />
}
@code {
[Parameter, EditorRequired] public IToolModule Module { get; set; } = null!;
[Parameter] public int StartFocusIdx { get; set; } = 100;
}