- 계획 승인 기본 흐름을 transcript inline 우선 구조로 더 정리하고, 계획 버튼은 저장된 계획을 여는 상세 보기 성격으로 분리했습니다. - OperationalStatusPresentationState를 확장해 runtime badge, compact strip, quick strip의 문구·강조색·노출 여부를 한 번에 계산하도록 통합했습니다. - ChatWindow 상태선/quick strip/status token 로직을 StatusPresentation partial로 분리해 메인 창 코드의 직접 분기와 렌더 책임을 줄였습니다. - 문서 이력(README, DEVELOPMENT)을 2026-04-06 01:37 KST 기준으로 갱신했습니다. - 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
This commit is contained in:
@@ -167,6 +167,20 @@ public sealed class AppStateService
|
||||
public bool ShowCompactStrip { get; init; }
|
||||
public string StripKind { get; init; } = "none";
|
||||
public string StripText { get; init; } = "";
|
||||
public string StripBackgroundHex { get; init; } = "";
|
||||
public string StripBorderHex { get; init; } = "";
|
||||
public string StripForegroundHex { get; init; } = "";
|
||||
public bool ShowQuickStrip { get; init; }
|
||||
public string QuickRunningText { get; init; } = "";
|
||||
public string QuickHotText { get; init; } = "";
|
||||
public bool QuickRunningActive { get; init; }
|
||||
public bool QuickHotActive { get; init; }
|
||||
public string QuickRunningBackgroundHex { get; init; } = "#F8FAFC";
|
||||
public string QuickRunningBorderHex { get; init; } = "#E5E7EB";
|
||||
public string QuickRunningForegroundHex { get; init; } = "#6B7280";
|
||||
public string QuickHotBackgroundHex { get; init; } = "#F8FAFC";
|
||||
public string QuickHotBorderHex { get; init; } = "#E5E7EB";
|
||||
public string QuickHotForegroundHex { get; init; } = "#6B7280";
|
||||
}
|
||||
|
||||
public ChatSessionStateService? ChatSession { get; private set; }
|
||||
@@ -631,7 +645,13 @@ public sealed class AppStateService
|
||||
};
|
||||
}
|
||||
|
||||
public OperationalStatusPresentationState GetOperationalStatusPresentation(string tab, bool hasLiveRuntimeActivity)
|
||||
public OperationalStatusPresentationState GetOperationalStatusPresentation(
|
||||
string tab,
|
||||
bool hasLiveRuntimeActivity,
|
||||
int runningConversationCount,
|
||||
int spotlightConversationCount,
|
||||
bool runningOnlyFilter,
|
||||
bool sortConversationsByRecent)
|
||||
{
|
||||
var status = GetOperationalStatus(tab);
|
||||
var showCompactStrip = !string.Equals(tab, "Chat", StringComparison.OrdinalIgnoreCase)
|
||||
@@ -639,6 +659,31 @@ public sealed class AppStateService
|
||||
|| string.Equals(status.StripKind, "failed_run", StringComparison.OrdinalIgnoreCase)
|
||||
|| string.Equals(status.StripKind, "permission_denied", StringComparison.OrdinalIgnoreCase));
|
||||
|
||||
var stripBackgroundHex = "";
|
||||
var stripBorderHex = "";
|
||||
var stripForegroundHex = "";
|
||||
if (showCompactStrip)
|
||||
{
|
||||
if (string.Equals(status.StripKind, "permission_waiting", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
stripBackgroundHex = "#FFF7ED";
|
||||
stripBorderHex = "#FDBA74";
|
||||
stripForegroundHex = "#C2410C";
|
||||
}
|
||||
else if (string.Equals(status.StripKind, "failed_run", StringComparison.OrdinalIgnoreCase)
|
||||
|| string.Equals(status.StripKind, "permission_denied", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
stripBackgroundHex = "#FEF2F2";
|
||||
stripBorderHex = "#FECACA";
|
||||
stripForegroundHex = "#991B1B";
|
||||
}
|
||||
}
|
||||
|
||||
var allowQuickStrip = !string.Equals(tab, "Chat", StringComparison.OrdinalIgnoreCase);
|
||||
var quickRunningActive = runningOnlyFilter && runningConversationCount > 0;
|
||||
var quickHotActive = !sortConversationsByRecent && spotlightConversationCount > 0;
|
||||
var showQuickStrip = allowQuickStrip && (quickRunningActive || quickHotActive);
|
||||
|
||||
return new OperationalStatusPresentationState
|
||||
{
|
||||
ShowRuntimeBadge = status.ShowRuntimeBadge && hasLiveRuntimeActivity,
|
||||
@@ -648,6 +693,20 @@ public sealed class AppStateService
|
||||
ShowCompactStrip = showCompactStrip,
|
||||
StripKind = showCompactStrip ? status.StripKind : "none",
|
||||
StripText = showCompactStrip ? status.StripText : "",
|
||||
StripBackgroundHex = stripBackgroundHex,
|
||||
StripBorderHex = stripBorderHex,
|
||||
StripForegroundHex = stripForegroundHex,
|
||||
ShowQuickStrip = showQuickStrip,
|
||||
QuickRunningText = runningConversationCount > 0 ? $"진행 {runningConversationCount}" : "진행",
|
||||
QuickHotText = spotlightConversationCount > 0 ? $"활동 {spotlightConversationCount}" : "활동",
|
||||
QuickRunningActive = quickRunningActive,
|
||||
QuickHotActive = quickHotActive,
|
||||
QuickRunningBackgroundHex = quickRunningActive ? "#DBEAFE" : "#F8FAFC",
|
||||
QuickRunningBorderHex = quickRunningActive ? "#93C5FD" : "#E5E7EB",
|
||||
QuickRunningForegroundHex = quickRunningActive ? "#1D4ED8" : "#6B7280",
|
||||
QuickHotBackgroundHex = quickHotActive ? "#F5F3FF" : "#F8FAFC",
|
||||
QuickHotBorderHex = quickHotActive ? "#C4B5FD" : "#E5E7EB",
|
||||
QuickHotForegroundHex = quickHotActive ? "#6D28D9" : "#6B7280",
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user