Skip to content
Merged
2 changes: 1 addition & 1 deletion QuickShell.Core.Tests/StartupWarmupCoordinatorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -400,7 +400,7 @@ private static QuickShellServices CreateServices(

private static void WaitForCompletion(StartupWarmupCoordinator coordinator, TimeSpan? timeout = null)
{
var deadline = DateTime.UtcNow + (timeout ?? TimeSpan.FromSeconds(5));
var deadline = DateTime.UtcNow + (timeout ?? TimeSpan.FromSeconds(15));
while (!coordinator.IsCompleted && DateTime.UtcNow < deadline)
{
Thread.Sleep(20);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,19 @@
{
public int Order => 100;

public IReadOnlyList<CommandSuggestionPill> GetSuggestions(TaskSuggestionContext context)
{
var usedCommands = context.ExistingLaunches.Select(e => e.Command).Where(c => !string.IsNullOrWhiteSpace(c)).ToHashSet(StringComparer.OrdinalIgnoreCase);
// Bolt: Performance optimization - avoid LINQ iterator allocations for parsing existing launches
var usedCommands = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
foreach (var launch in context.ExistingLaunches)
{
var command = launch.Command;
if (!string.IsNullOrWhiteSpace(command))
{
usedCommands.Add(command!);
}
}
Comment thread
Copilot marked this conversation as resolved.
Outdated

var pills = new List<CommandSuggestionPill>();
foreach (var def in AgentCliCatalog.Definitions)
{
Expand Down
21 changes: 15 additions & 6 deletions QuickShell.Core/Services/TaskTypePickContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,23 @@

public IReadOnlySet<string> UsedCommands { get; init; } = EmptyUsedCommands.Instance;

public static TaskTypePickContext FromCommands(IEnumerable<string?> commands) =>
new()
public static TaskTypePickContext FromCommands(IEnumerable<string?> commands)
{
// Bolt: Performance optimization - avoid LINQ iterator allocations for parsing existing commands
var usedCommands = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
foreach (var command in commands)
{
UsedCommands = commands
.Where(command => !string.IsNullOrWhiteSpace(command))
.Select(command => command!)
.ToHashSet(StringComparer.OrdinalIgnoreCase),
if (!string.IsNullOrWhiteSpace(command))
{
usedCommands.Add(command!);
}
}
Comment thread
Copilot marked this conversation as resolved.

return new TaskTypePickContext
{
UsedCommands = usedCommands,
};
}

private sealed class EmptyUsedCommands : IReadOnlySet<string>
{
Expand Down
Loading