From 288acbf0c8570c9bc1634a89d01919219ac7e6df Mon Sep 17 00:00:00 2001 From: Dokril Date: Wed, 8 Jul 2026 09:01:10 +0300 Subject: [PATCH] Refactor proxy handling and update related UI flows --- apps/windows-client/src-tauri/src/commands.rs | 56 +- apps/windows-client/src-tauri/src/main.rs | 1 + .../src-tauri/tests/command_tests.rs | 19 + apps/windows-client/src/api/tauriCommands.ts | 6 + apps/windows-client/src/app/App.tsx | 1594 ++++++++++++----- apps/windows-client/src/styles/app.css | 1011 ++++++++++- .../windows-client-three-panel-ui/EVIDENCE.md | 85 + .../windows-client-three-panel-ui/GOAL.md | 12 + .../windows-client-three-panel-ui/PLAN.md | 423 +++++ .../narrow-proxifyre-panel.png | Bin 0 -> 43299 bytes .../proxifyre-panel.png | Bin 0 -> 59776 bytes .../summary-panel.png | Bin 0 -> 82626 bytes .../vpn-proxy-external-panel.png | Bin 0 -> 76059 bytes .../vpn-proxy-local-panel.png | Bin 0 -> 88733 bytes 14 files changed, 2655 insertions(+), 552 deletions(-) create mode 100644 docs/goals/windows-client-three-panel-ui/EVIDENCE.md create mode 100644 docs/goals/windows-client-three-panel-ui/GOAL.md create mode 100644 docs/goals/windows-client-three-panel-ui/PLAN.md create mode 100644 docs/goals/windows-client-three-panel-ui/narrow-proxifyre-panel.png create mode 100644 docs/goals/windows-client-three-panel-ui/proxifyre-panel.png create mode 100644 docs/goals/windows-client-three-panel-ui/summary-panel.png create mode 100644 docs/goals/windows-client-three-panel-ui/vpn-proxy-external-panel.png create mode 100644 docs/goals/windows-client-three-panel-ui/vpn-proxy-local-panel.png diff --git a/apps/windows-client/src-tauri/src/commands.rs b/apps/windows-client/src-tauri/src/commands.rs index ab21240..cafabfd 100644 --- a/apps/windows-client/src-tauri/src/commands.rs +++ b/apps/windows-client/src-tauri/src/commands.rs @@ -219,6 +219,13 @@ pub struct PingSingBoxServerInputDto { pub tag: String, } +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct PingProxyTargetInputDto { + pub host: String, + pub port: u16, +} + #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct PingServerResponse { @@ -619,6 +626,11 @@ pub fn ping_all_singbox_servers( ping_all_singbox_servers_in_storage(&state.storage()) } +#[tauri::command] +pub fn ping_proxy_target(input: PingProxyTargetInputDto) -> Result { + ping_proxy_target_endpoint(input) +} + #[tauri::command] pub fn generate_singbox_config( state: tauri::State<'_, CommandState>, @@ -1115,6 +1127,20 @@ pub fn ping_all_singbox_servers_in_storage( Ok(cache.servers.iter().map(ping_subscription_server).collect()) } +pub fn ping_proxy_target_endpoint( + input: PingProxyTargetInputDto, +) -> Result { + let host = input.host.trim(); + if host.is_empty() { + return Err(CommandError::new( + "proxy_target_host_missing", + "Хост внешнего прокси не указан.", + )); + } + + Ok(ping_endpoint("external-proxy", host, input.port)) +} + pub fn generate_singbox_config_with_services( storage: &JsonStorage, adapter: &SingBoxAdapter, @@ -1196,14 +1222,18 @@ fn validate_subscription_url(subscription_url: &str) -> Result<(), CommandError> } fn ping_subscription_server(server: &SubscriptionServer) -> PingServerResponse { + ping_endpoint(&server.tag, &server.server, server.server_port) +} + +fn ping_endpoint(tag: &str, server: &str, server_port: u16) -> PingServerResponse { let started = Instant::now(); - let addresses = match (server.server.as_str(), server.server_port).to_socket_addrs() { + let addresses = match (server, server_port).to_socket_addrs() { Ok(addresses) => addresses.collect::>(), Err(error) => { return PingServerResponse { - tag: server.tag.clone(), - server: server.server.clone(), - server_port: server.server_port, + tag: tag.to_string(), + server: server.to_string(), + server_port, ok: false, latency: None, error: Some(format!("DNS/адрес недоступен: {error}")), @@ -1213,9 +1243,9 @@ fn ping_subscription_server(server: &SubscriptionServer) -> PingServerResponse { if addresses.is_empty() { return PingServerResponse { - tag: server.tag.clone(), - server: server.server.clone(), - server_port: server.server_port, + tag: tag.to_string(), + server: server.to_string(), + server_port, ok: false, latency: None, error: Some("DNS не вернул адреса".to_string()), @@ -1228,9 +1258,9 @@ fn ping_subscription_server(server: &SubscriptionServer) -> PingServerResponse { match TcpStream::connect_timeout(&address, timeout) { Ok(_) => { return PingServerResponse { - tag: server.tag.clone(), - server: server.server.clone(), - server_port: server.server_port, + tag: tag.to_string(), + server: server.to_string(), + server_port, ok: true, latency: Some(started.elapsed().as_millis()), error: None, @@ -1241,9 +1271,9 @@ fn ping_subscription_server(server: &SubscriptionServer) -> PingServerResponse { } PingServerResponse { - tag: server.tag.clone(), - server: server.server.clone(), - server_port: server.server_port, + tag: tag.to_string(), + server: server.to_string(), + server_port, ok: false, latency: None, error: last_error, diff --git a/apps/windows-client/src-tauri/src/main.rs b/apps/windows-client/src-tauri/src/main.rs index b7a834a..ae5dec6 100644 --- a/apps/windows-client/src-tauri/src/main.rs +++ b/apps/windows-client/src-tauri/src/main.rs @@ -52,6 +52,7 @@ fn main() { commands::select_singbox_server, commands::ping_singbox_server, commands::ping_all_singbox_servers, + commands::ping_proxy_target, commands::generate_singbox_config, commands::apply_profiles, commands::get_logs, diff --git a/apps/windows-client/src-tauri/tests/command_tests.rs b/apps/windows-client/src-tauri/tests/command_tests.rs index 60ae4b8..0362c6a 100644 --- a/apps/windows-client/src-tauri/tests/command_tests.rs +++ b/apps/windows-client/src-tauri/tests/command_tests.rs @@ -37,6 +37,7 @@ use models::{ use proxifyre::ProxiFyreAdapter; use std::collections::HashSet; use std::fs; +use std::net::TcpListener; use std::path::{Path, PathBuf}; #[cfg(windows)] use std::process::Command as ProcessCommand; @@ -127,6 +128,24 @@ fn resolve_preview_returns_structured_apps_without_filesystem_scan() { .any(|warning| warning.contains("Сканирование папок отложено"))); } +#[test] +fn ping_proxy_target_reports_open_tcp_endpoint() { + let listener = TcpListener::bind("127.0.0.1:0").expect("bind local listener"); + let port = listener.local_addr().expect("read local addr").port(); + + let result = commands::ping_proxy_target_endpoint(commands::PingProxyTargetInputDto { + host: "127.0.0.1".to_string(), + port, + }) + .expect("ping should return response"); + + assert_eq!(result.tag, "external-proxy"); + assert_eq!(result.server, "127.0.0.1"); + assert_eq!(result.server_port, port); + assert!(result.ok); + assert!(result.latency.is_some()); +} + #[test] #[cfg(windows)] fn proxifyre_install_script_parses_as_powershell() { diff --git a/apps/windows-client/src/api/tauriCommands.ts b/apps/windows-client/src/api/tauriCommands.ts index ff4a036..ab2bf7b 100644 --- a/apps/windows-client/src/api/tauriCommands.ts +++ b/apps/windows-client/src/api/tauriCommands.ts @@ -184,6 +184,12 @@ export function pingAllSingBoxServers(): Promise { return invoke('ping_all_singbox_servers'); } +export function pingProxyTarget(host: string, port: number): Promise { + return invoke('ping_proxy_target', { + input: { host, port }, + }); +} + export function generateSingBoxConfig(): Promise { return invoke('generate_singbox_config'); } diff --git a/apps/windows-client/src/app/App.tsx b/apps/windows-client/src/app/App.tsx index 88d1d0e..54039dd 100644 --- a/apps/windows-client/src/app/App.tsx +++ b/apps/windows-client/src/app/App.tsx @@ -15,6 +15,8 @@ import { installSingBox, openConfigLocation, pingAllSingBoxServers, + pingProxyTarget, + pingSingBoxServer, saveProfile, saveSingBoxSubscription, saveTarget, @@ -38,6 +40,9 @@ type ProxiFyreAction = 'start' | 'stop' | 'install' | 'uninstall'; type SingBoxAction = 'start' | 'stop' | 'install' | 'uninstall' | 'fetch' | 'forget' | 'generate' | 'ping'; type RouteMode = 'external' | 'local-singbox'; type ServiceVisualState = 'active' | 'settling' | null; +type PanelId = 'summary' | 'proxifyre' | 'proxy'; +type StatusTone = 'ok' | 'warning' | 'error' | 'checking' | 'muted'; +type TabTransitionDirection = 'left' | 'right'; interface DraftItem { id: string; @@ -56,10 +61,23 @@ interface LogEntry extends Notice { at: number; } +interface ConfigSnapshotItem { + type: DraftItemType; + value: string; +} + +interface ConfigSnapshot { + routeMode: RouteMode; + proxy: string; + selectedServerTag: string; + items: ConfigSnapshotItem[]; +} + const MAIN_TARGET_ID = 'main-proxy'; const MAIN_PROFILE_ID = 'main-profile'; const LOCAL_SINGBOX_TARGET_ID = 'local-singbox'; const LOG_VISIBLE_MS = 6500; +const PANEL_ORDER: PanelId[] = ['summary', 'proxifyre', 'proxy']; const fallbackComponents: ComponentStatus[] = [ { @@ -83,12 +101,14 @@ const fallbackComponents: ComponentStatus[] = [ ]; export function App() { + const [activePanel, setActivePanel] = useState('summary'); + const [tabTransitionDirection, setTabTransitionDirection] = useState('right'); const [proxyInput, setProxyInput] = useState(''); const [routeMode, setRouteMode] = useState('external'); const [profileId, setProfileId] = useState(MAIN_PROFILE_ID); const [targetId, setTargetId] = useState(MAIN_TARGET_ID); const [items, setItems] = useState([]); - const [hasUnappliedChanges, setHasUnappliedChanges] = useState(false); + const [appliedSnapshot, setAppliedSnapshot] = useState(null); const [loadedProfiles, setLoadedProfiles] = useState([]); const [isProcessInputOpen, setIsProcessInputOpen] = useState(false); const [processInput, setProcessInput] = useState(''); @@ -99,7 +119,7 @@ export function App() { const [singBoxSetupStatus, setSingBoxSetupStatus] = useState(null); const [subscriptionInput, setSubscriptionInput] = useState(''); const [serverPings, setServerPings] = useState>({}); - const [isSetupOpen, setIsSetupOpen] = useState(false); + const [proxyPing, setProxyPing] = useState(null); const [isSingBoxSetupOpen, setIsSingBoxSetupOpen] = useState(false); const [isSingBoxInfoOpen, setIsSingBoxInfoOpen] = useState(false); const [generatedConfigPath, setGeneratedConfigPath] = useState(''); @@ -110,12 +130,15 @@ export function App() { const [isDetectingComponents, setIsDetectingComponents] = useState(true); const [isApplying, setIsApplying] = useState(false); const [isOpeningConfig, setIsOpeningConfig] = useState(false); + const [isProxyChecking, setIsProxyChecking] = useState(false); + const [serverPingTag, setServerPingTag] = useState(null); const [serviceAction, setServiceAction] = useState(null); const [singBoxAction, setSingBoxAction] = useState(null); const [isServiceMenuOpen, setIsServiceMenuOpen] = useState(false); const [isSingBoxMenuOpen, setIsSingBoxMenuOpen] = useState(false); const [serviceVisualState, setServiceVisualState] = useState(null); const serviceVisualTimerRef = useRef(null); + const appsSectionRef = useRef(null); const proxyfier = useMemo( () => components.find((component) => component.id === 'proxyfier'), @@ -135,6 +158,24 @@ export function App() { const isSingBoxInstalled = Boolean(singbox?.installed); const singBoxStateClass = isDetectingComponents ? 'checking' : singbox?.installed ? 'found' : 'missing'; const singBoxVisualClass = singBoxAction ? 'working' : ''; + const selectedServerTag = singBoxStatus?.config.selectedServerTag; + const currentSnapshot = useMemo( + () => configSnapshotFromUi(routeMode, proxyInput, items, selectedServerTag), + [items, proxyInput, routeMode, selectedServerTag], + ); + const hasUnappliedChanges = appliedSnapshot + ? !sameConfigSnapshot(currentSnapshot, appliedSnapshot) + : false; + const systemSummary = systemSummaryState({ + isLoading, + isDetectingComponents, + proxyfier, + singbox, + routeMode, + singBoxStatus, + proxyPing, + hasUnappliedChanges, + }); useEffect(() => { void refresh(); @@ -189,6 +230,13 @@ export function App() { setSetupStatus(detectedSetupStatus); setSingBoxStatus(detectedSingBoxStatus); setSingBoxSetupStatus(detectedSingBoxSetupStatus); + setAppliedSnapshot((current) => { + if (!current || current.routeMode !== 'local-singbox' || current.selectedServerTag) return current; + return { + ...current, + selectedServerTag: normalizeServerTag(detectedSingBoxStatus.config.selectedServerTag), + }; + }); } catch (error) { showNotice({ kind: 'error', @@ -200,26 +248,39 @@ export function App() { } } - function applySavedState(profiles: Profile[], targets: Target[], generatedPath: string) { + function applySavedState( + profiles: Profile[], + targets: Target[], + generatedPath: string, + singBoxStatusForSnapshot = singBoxStatus, + ) { const activeProfiles = profiles.filter((profile) => profile.enabled); const mainProfile = profiles.find((profile) => profile.id === MAIN_PROFILE_ID); const activeProfile = mainProfile ?? activeProfiles[0]; const activeTarget = targetForUi(targets, activeProfile); const externalTarget = targetForExternalProxy(targets); const editableProfiles = mainProfile ? [mainProfile] : activeProfiles; + const savedProxyInput = externalTarget ? formatProxy(externalTarget) : ''; + const savedItems = itemsForProfiles(editableProfiles); + const savedRouteMode = + activeTarget?.id === LOCAL_SINGBOX_TARGET_ID || activeProfile?.targetId === LOCAL_SINGBOX_TARGET_ID + ? 'local-singbox' + : 'external'; - if (externalTarget) setProxyInput(formatProxy(externalTarget)); - setItems(itemsForProfiles(editableProfiles)); + setProxyInput(savedProxyInput); + setProxyPing(null); + setItems(savedItems); setLoadedProfiles(profiles); setProfileId(mainProfile?.id ?? MAIN_PROFILE_ID); setTargetId(externalTarget?.id ?? MAIN_TARGET_ID); - setRouteMode( - activeTarget?.id === LOCAL_SINGBOX_TARGET_ID || activeProfile?.targetId === LOCAL_SINGBOX_TARGET_ID - ? 'local-singbox' - : 'external', - ); + setRouteMode(savedRouteMode); setGeneratedConfigPath(generatedPath); - setHasUnappliedChanges(false); + setAppliedSnapshot(configSnapshotFromUi( + savedRouteMode, + savedProxyInput, + savedItems, + singBoxStatusForSnapshot?.config.selectedServerTag, + )); } function addItem(type: DraftItemType, rawValue: string) { @@ -250,7 +311,6 @@ export function App() { value, }, ]); - setHasUnappliedChanges(true); return true; } @@ -263,19 +323,31 @@ export function App() { function removeItem(id: string) { setItems((current) => current.filter((item) => item.id !== id)); - setHasUnappliedChanges(true); } function changeRouteMode(nextMode: RouteMode) { - setRouteMode((current) => { - if (current !== nextMode) setHasUnappliedChanges(true); - return nextMode; - }); + setRouteMode(nextMode); } function changeProxyInput(nextValue: string) { setProxyInput(nextValue); - setHasUnappliedChanges(true); + setProxyPing(null); + } + + function openAppsPanel() { + switchPanel('proxifyre'); + window.setTimeout(() => { + appsSectionRef.current?.scrollIntoView({ block: 'start' }); + }, 0); + } + + function switchPanel(nextPanel: PanelId) { + if (activePanel === nextPanel) return; + + const currentIndex = PANEL_ORDER.indexOf(activePanel); + const nextIndex = PANEL_ORDER.indexOf(nextPanel); + setTabTransitionDirection(nextIndex > currentIndex ? 'right' : 'left'); + setActivePanel(nextPanel); } async function pickAndAddItem(type: Extract) { @@ -363,7 +435,6 @@ export function App() { setSetupStatus(detectedSetupStatus); setSingBoxStatus(detectedSingBoxStatus); setSingBoxSetupStatus(detectedSingBoxSetupStatus); - setHasUnappliedChanges(false); showNotice(routeMode === 'local-singbox' ? noticeFromLocalApply(result, singBoxGeneratedPath) : noticeFromApply(result)); } catch (error) { showNotice({ @@ -619,7 +690,6 @@ export function App() { setComponents((current) => upsertComponent(current, status.component)); setSubscriptionInput(''); setServerPings({}); - setHasUnappliedChanges(true); showNotice({ kind: 'success', title: 'Подписка обновлена', @@ -644,7 +714,6 @@ export function App() { setSingBoxStatus(status); setComponents((current) => upsertComponent(current, status.component)); setServerPings({}); - setHasUnappliedChanges(true); showNotice({ kind: 'info', title: 'Подписка очищена', @@ -666,7 +735,6 @@ export function App() { const status = await selectSingBoxServer(server); setSingBoxStatus(status); setComponents((current) => upsertComponent(current, status.component)); - setHasUnappliedChanges(true); } catch (error) { showNotice({ kind: 'error', @@ -697,6 +765,63 @@ export function App() { } } + async function pingSingleSingBoxServer(server: SubscriptionServer) { + setServerPingTag(server.tag); + try { + const result = await pingSingBoxServer(server.tag); + setServerPings((current) => ({ + ...current, + [result.tag]: result, + })); + showNotice({ + kind: result.ok ? 'success' : 'error', + title: result.ok ? 'Сервер отвечает' : 'Сервер не ответил', + text: serverTooltip(server, result), + }); + } catch (error) { + showNotice({ + kind: 'error', + title: 'Ping не выполнен', + text: errorMessage(error), + }); + } finally { + setServerPingTag(null); + } + } + + async function pingExternalProxy() { + let parsed: ParsedProxy; + try { + parsed = parseProxy(proxyInput); + } catch (error) { + showNotice({ + kind: 'error', + title: 'Прокси не проверен', + text: errorMessage(error), + }); + return; + } + + setIsProxyChecking(true); + try { + const result = await pingProxyTarget(parsed.host, parsed.port); + setProxyPing(result); + showNotice({ + kind: result.ok ? 'success' : 'error', + title: result.ok ? 'Внешний прокси отвечает' : 'Внешний прокси не ответил', + text: pingResultText(result), + }); + } catch (error) { + showNotice({ + kind: 'error', + title: 'Прокси не проверен', + text: errorMessage(error), + }); + } finally { + setIsProxyChecking(false); + } + } + async function generateSingBoxNow() { setSingBoxAction('generate'); try { @@ -750,118 +875,657 @@ export function App() { setActiveLogId(entry.id); } - return ( -
-
-
+ function renderTabs() { + const tabs: Array<{ id: PanelId; label: string }> = [ + { id: 'summary', label: 'Сводка' }, + { id: 'proxifyre', label: 'ProxiFyre' }, + { id: 'proxy', label: 'VPN / Прокси' }, + ]; + + return ( +
+ {tabs.map((tab) => ( + + ))} +
+ ); + } + + function renderSummaryPanel() { + const appliedRouteMode = appliedSnapshot?.routeMode ?? routeMode; + const draftHasLocalServer = currentSnapshot.routeMode === 'local-singbox' && currentSnapshot.selectedServerTag; + + return ( +
+
+
+ +
+
+
+ Применено сейчас + {appliedSnapshot ? routeModeLabel(appliedRouteMode) : 'Состояние загружается'} +
+ + {hasUnappliedChanges ? 'Есть черновик' : 'Совпадает'} + +
+
+
+
ProxiFyre
+
{proxyfierTitle(proxyfier, isDetectingComponents)}
+
+
+
Маршрут
+
{snapshotRouteLine(appliedSnapshot, singBoxStatus)}
+
+
+
VPN сервер
+
{snapshotServerText(appliedSnapshot)}
+
+
+
Приложения
+
{snapshotItemsText(appliedSnapshot)}
+
+
+
Конфиг
+
{generatedConfigPath || 'Примененный config еще не создан.'}
+
+
+
+ +
+
+ Черновик интерфейса + {hasUnappliedChanges ? 'Есть реальные изменения' : 'Изменений нет'} +

+ {hasUnappliedChanges + ? 'Текущие настройки отличаются от примененного состояния. Если вернуть значения назад, предупреждение исчезнет.' + : 'То, что выбрано в интерфейсе, совпадает с примененной конфигурацией.'} +

+
+ {hasUnappliedChanges ? ( +
+
+
Будет маршрут
+
{snapshotRouteLine(currentSnapshot, singBoxStatus)}
+
+
+
VPN сервер
+
{draftHasLocalServer ? displayServerTag(currentSnapshot.selectedServerTag) : snapshotServerText(currentSnapshot)}
+
+
+
Приложения
+
{snapshotItemsText(currentSnapshot)}
+
+
+ ) : null} +
+ +
+ + +
+
+ ); + } + + function renderProxiFyreCard() { + return ( +
+
+ ); + } + + function renderProxiFyreSetupStrip() { + const stripItems = setupStatus?.items ?? proxifyreSetupPlaceholders(); + + return ( +
+ Состав +
+ {stripItems.map((item) => ( +
+
+ ))} +
+
+ ); + } + + function renderAppsSection() { + return ( +
+
+
+

Приложения

+ {items.length} +
+
+ {renderApplyActions('proxifyre', { showConfigPath: false })} +
+
+ + {isProcessInputOpen ? ( +
+ setProcessInput(event.target.value)} + onKeyDown={(event) => { + if (event.key === 'Enter') addProcess(); + if (event.key === 'Escape') { + setProcessInput(''); + setIsProcessInputOpen(false); + } + }} + placeholder="Discord" + spellCheck={false} + autoFocus + /> + + +
+ ) : ( +
+
+ +
+ Новое приложение + Добавь процесс, EXE-файл или папку +
+
+
+ + + +
+
+ )} + +
+ {isLoading ? ( +
+ + +
+ ) : items.length ? ( + items.map((item) => ( +
+
+ +
+ {item.value} + {itemTypeLabel(item.type)} +
+
+ +
+ )) + ) : ( +
Список пуст. Добавь первое приложение сверху.
+ )} +
+
+ ); + } + + function renderApplyActions( + context: 'proxifyre' | 'proxy', + options: { showConfigPath?: boolean } = {}, + ) { + const showConfigPath = options.showConfigPath ?? true; + + return ( + <> + {hasUnappliedChanges ? ( +
+ Изменения еще не применены в ProxiFyre + {applyStateText(routeMode, isSingBoxInstalled, Boolean(singbox?.running))} +
+ ) : null} + +
+ + +
+ + {showConfigPath && generatedConfigPath ?

{generatedConfigPath}

: null} + + ); + } + + function renderProxiFyrePanel() { + return ( +
+ {renderProxiFyreCard()} + {renderProxiFyreSetupStrip()} + {renderAppsSection()} +
+ ); + } + + function renderExternalProxyControls() { + const proxyValidation = proxyInput.trim() ? safeProxyError(proxyInput) : null; + + return ( +
+ +
+
+ {proxyPing ? pingResultTitle(proxyPing) : proxyValidation ? 'Проверь формат' : 'Проверка не запускалась'} + {proxyPing ? pingResultText(proxyPing) : proxyValidation ?? 'TCP check покажет, доступен ли host:port.'}
-
+ + + ); + } -
-
- {routeMode === 'local-singbox' ? ( -
-
- ) : null} - -
-
-

Приложения

- {items.length} -
- - {isProcessInputOpen ? ( -
- setProcessInput(event.target.value)} - onKeyDown={(event) => { - if (event.key === 'Enter') addProcess(); - if (event.key === 'Escape') { - setProcessInput(''); - setIsProcessInputOpen(false); - } - }} - placeholder="Discord" - spellCheck={false} - autoFocus - /> - - -
- ) : ( -
- - - -
- )} - -
- {isLoading ? ( -
- - -
- ) : items.length ? ( - items.map((item) => ( -
-
- -
- {item.value} - {itemTypeLabel(item.type)} -
-
- -
- )) - ) : ( -
Добавь процесс, папку или путь к EXE-файлу.
- )} -
-
- - {hasUnappliedChanges ? ( -
- Изменения еще не применены в ProxiFyre - {applyStateText(routeMode, isSingBoxInstalled, Boolean(singbox?.running))} -
- ) : null} - -
- - +
+ Маршрут + {routePreviewText(routeMode, proxyInput, singBoxStatus)}
- {generatedConfigPath ?

{generatedConfigPath}

: null} + {renderApplyActions('proxy')} + + ); + } + + function renderActivePanel() { + if (activePanel === 'proxifyre') return renderProxiFyrePanel(); + if (activePanel === 'proxy') return renderProxyPanel(); + return renderSummaryPanel(); + } + + return ( +
+
+
+
+

Proxy для приложений

+
+ +
+ + {renderTabs()} +
+ {renderActivePanel()} +
- {logEntries.length ? ( - - ) : null} + )) + ) : ( +
+ +
+ Журнал пуст + События появятся после проверок или применения конфигурации. +
+
+ )} +
+ ) : null} +
); } @@ -1279,6 +1639,250 @@ interface ParsedProxy { port: number; } +interface SummaryStateInput { + isLoading: boolean; + isDetectingComponents: boolean; + proxyfier: ComponentStatus | undefined; + singbox: ComponentStatus | undefined; + routeMode: RouteMode; + singBoxStatus: LocalSingBoxStatusResponse | null; + proxyPing: PingServerResponse | null; + hasUnappliedChanges: boolean; +} + +interface SummaryState { + tone: StatusTone; + title: string; + text: string; +} + +function configSnapshotFromUi( + routeMode: RouteMode, + proxyInput: string, + items: Array>, + selectedServerTag?: string, +): ConfigSnapshot { + return { + routeMode, + proxy: routeMode === 'external' ? normalizeProxySnapshot(proxyInput) : '', + selectedServerTag: routeMode === 'local-singbox' ? normalizeServerTag(selectedServerTag) : '', + items: normalizeSnapshotItems(items), + }; +} + +function normalizeProxySnapshot(value: string) { + try { + const parsed = parseProxy(value); + return `${parsed.protocol}://${parsed.host.trim().toLowerCase()}:${parsed.port}`; + } catch { + return value.trim().toLowerCase(); + } +} + +function normalizeServerTag(tag: string | undefined) { + return tag?.trim() ?? ''; +} + +function normalizeSnapshotItems(items: Array>): ConfigSnapshotItem[] { + return items + .map((item) => ({ + type: item.type, + value: normalizeItemValue(item.value, item.type).toLowerCase(), + })) + .filter((item) => item.value) + .sort((left, right) => `${left.type}:${left.value}`.localeCompare(`${right.type}:${right.value}`)); +} + +function sameConfigSnapshot(left: ConfigSnapshot, right: ConfigSnapshot) { + if (left.routeMode !== right.routeMode) return false; + if (left.proxy !== right.proxy) return false; + if (left.selectedServerTag !== right.selectedServerTag) return false; + if (left.items.length !== right.items.length) return false; + + return left.items.every((item, index) => { + const other = right.items[index]; + return item.type === other.type && item.value === other.value; + }); +} + +function routeModeLabel(routeMode: RouteMode) { + return routeMode === 'local-singbox' ? 'Локальный прокси' : 'Внешний прокси'; +} + +function snapshotRouteLine(snapshot: ConfigSnapshot | null, status: LocalSingBoxStatusResponse | null) { + if (!snapshot) return 'Сохраненное состояние еще не загружено.'; + + if (snapshot.routeMode === 'local-singbox') { + const server = snapshot.selectedServerTag ? displayServerTag(snapshot.selectedServerTag) : 'сервер не выбран'; + return `Выбранные приложения -> ProxiFyre -> Local sing-box ${localSingBoxAddress(status)} -> ${server}`; + } + + return `Выбранные приложения -> ProxiFyre -> внешний прокси ${displaySnapshotProxy(snapshot.proxy)}`; +} + +function snapshotServerText(snapshot: ConfigSnapshot | null) { + if (!snapshot) return 'Сохраненное состояние еще не загружено.'; + if (snapshot.routeMode === 'external') return 'Не используется: применен внешний прокси.'; + return snapshot.selectedServerTag ? displayServerTag(snapshot.selectedServerTag) : 'Сервер не выбран.'; +} + +function snapshotItemsText(snapshot: ConfigSnapshot | null) { + if (!snapshot) return 'Сохраненное состояние еще не загружено.'; + return snapshot.items.length ? appCountText(snapshot.items.length) : 'Приложения не настроены.'; +} + +function displaySnapshotProxy(proxy: string) { + return proxy.replace(/^socks5:\/\//, '') || 'не указан'; +} + +function systemSummaryState(input: SummaryStateInput): SummaryState { + if (input.isLoading || input.isDetectingComponents) { + return { + tone: 'checking', + title: 'Проверяю', + text: 'Обновляю сохраненный маршрут, компоненты и локальный proxy path.', + }; + } + + if (!input.proxyfier?.installed) { + return { + tone: 'error', + title: 'Не настроено', + text: 'ProxiFyre не найден. Перейди в настройки ProxiFyre и установи компонент.', + }; + } + + if (!input.proxyfier.running) { + return { + tone: 'warning', + title: 'Требует внимания', + text: 'ProxiFyre установлен, но служба сейчас остановлена.', + }; + } + + if (input.routeMode === 'local-singbox') { + if (!input.singbox?.installed) { + return { + tone: 'warning', + title: 'Локальный прокси не готов', + text: 'Для локального маршрута нужно установить Local sing-box.', + }; + } + if (!input.singbox.running) { + return { + tone: 'warning', + title: 'Локальный прокси остановлен', + text: 'Local sing-box установлен, но служба не запущена.', + }; + } + if (!input.singBoxStatus?.config.selectedServerTag) { + return { + tone: 'warning', + title: 'Сервер не выбран', + text: 'Выбери сервер Local sing-box на вкладке VPN / Прокси.', + }; + } + } + + if (input.routeMode === 'external' && input.proxyPing && !input.proxyPing.ok) { + return { + tone: 'warning', + title: 'Прокси не ответил', + text: pingResultText(input.proxyPing), + }; + } + + if (input.hasUnappliedChanges) { + return { + tone: 'warning', + title: 'Есть непримененные изменения', + text: 'Настройки изменены, но ProxiFyre еще не обновлен.', + }; + } + + return { + tone: 'ok', + title: 'Работает', + text: 'Сохраненная конфигурация выглядит готовой к маршрутизации выбранных приложений.', + }; +} + +function routeEndpointLabel( + routeMode: RouteMode, + proxyInput: string, + status: LocalSingBoxStatusResponse | null, +) { + if (routeMode === 'local-singbox') { + const lan = lanSingBoxAddress(status); + return lan ? `${localSingBoxAddress(status)} · LAN: ${lan}` : localSingBoxAddress(status); + } + + try { + const parsed = parseProxy(proxyInput); + return formatHostPort(parsed.host, parsed.port); + } catch { + return proxyInput.trim() || 'не указан'; + } +} + +function appCountText(count: number) { + if (count === 1) return '1 приложение маршрутизируется через профиль.'; + if (count > 1 && count < 5) return `${count} приложения маршрутизируются через профиль.`; + return `${count} приложений маршрутизируются через профиль.`; +} + +function safeProxyError(value: string) { + try { + parseProxy(value); + return null; + } catch (error) { + return errorMessage(error); + } +} + +function pingTone(ping: PingServerResponse): StatusTone { + return ping.ok ? 'ok' : 'error'; +} + +function pingResultTitle(ping: PingServerResponse) { + return ping.ok ? 'Доступен' : 'Недоступен'; +} + +function pingResultText(ping: PingServerResponse) { + if (ping.ok) return `${ping.server}:${ping.serverPort} ответил за ${ping.latency ?? 0} ms.`; + return `${ping.server}:${ping.serverPort}: ${ping.error ?? 'нет ответа'}`; +} + +function routePreviewText( + routeMode: RouteMode, + proxyInput: string, + status: LocalSingBoxStatusResponse | null, +) { + if (routeMode === 'local-singbox') { + const server = status?.config.selectedServerTag + ? displayServerTag(status.config.selectedServerTag) + : 'сервер не выбран'; + return `Выбранные приложения -> ProxiFyre -> Local sing-box ${localSingBoxAddress(status)} -> ${server}`; + } + + return `Выбранные приложения -> ProxiFyre -> внешний прокси ${routeEndpointLabel('external', proxyInput, status)}`; +} + +function applyButtonLabel( + context: 'proxifyre' | 'proxy', + isApplying: boolean, + hasUnappliedChanges: boolean, + singBoxAction: SingBoxAction | null, +) { + if (isApplying) { + if (singBoxAction === 'start') return 'Запускаю sing-box...'; + if (singBoxAction === 'stop') return 'Перезапускаю sing-box...'; + return 'Применяю...'; + } + if (hasUnappliedChanges) return context === 'proxy' ? 'Применить маршрут' : 'Применить в ProxiFyre'; + return context === 'proxy' ? 'Обновить маршрут' : 'Обновить конфиг'; +} + function parseProxy(rawValue: string): ParsedProxy { const value = rawValue.trim(); if (!value) throw new Error('Введи адрес прокси.'); @@ -1416,6 +2020,28 @@ function setupItemDetails(installed: boolean, version: string | undefined, detai return details; } +function proxifyreSetupPlaceholders(): ProxiFyreSetupStatus['items'] { + return [ + { id: 'vc-runtime', name: 'Среда запуска', installed: false, details: 'Проверяю' }, + { id: 'packet-filter', name: 'Сетевой драйвер', installed: false, details: 'Проверяю' }, + { id: 'proxifyre', name: 'Клиент ProxiFyre', installed: false, details: 'Проверяю' }, + ]; +} + +function setupItemUserName(id: string, fallbackName: string) { + if (id === 'vc-runtime') return 'Среда запуска'; + if (id === 'packet-filter') return 'Сетевой драйвер'; + if (id === 'proxifyre') return 'Клиент ProxiFyre'; + return fallbackName; +} + +function setupItemShortStatus(item: ProxiFyreSetupStatus['items'][number]) { + if (item.details === 'Проверяю') return 'проверяю'; + if (!item.installed) return 'нужно установить'; + if (item.id === 'proxifyre') return item.version?.includes('не запущена') ? 'остановлен' : 'запущен'; + return 'готово'; +} + function profileInputFromProfile(profile: Profile, enabled: boolean) { return { id: profile.id, diff --git a/apps/windows-client/src/styles/app.css b/apps/windows-client/src/styles/app.css index cf6a914..bf01762 100644 --- a/apps/windows-client/src/styles/app.css +++ b/apps/windows-client/src/styles/app.css @@ -1,24 +1,63 @@ :root { + --app-footer-height: 54px; + --app-header-row-height: 50px; + --app-tab-height: 46px; + --app-header-height: calc(var(--app-header-row-height) + var(--app-tab-height)); font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color: #e5e7eb; background: #101216; font-synthesis: none; + height: 100%; + overflow: hidden; + scrollbar-color: #4b5568 #101216; + scrollbar-gutter: stable; + scrollbar-width: thin; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } +::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +::-webkit-scrollbar-button { + display: none; + width: 0; + height: 0; +} + +::-webkit-scrollbar-track { + background: #101216; +} + +::-webkit-scrollbar-thumb { + min-height: 36px; + border: 2px solid #101216; + border-radius: 999px; + background: #4b5568; +} + +::-webkit-scrollbar-thumb:hover { + background: #64748b; +} + +::-webkit-scrollbar-corner { + background: #101216; +} + * { box-sizing: border-box; } body { margin: 0; - min-height: 100vh; + height: 100vh; background: #101216; - overflow-x: hidden; + overflow: hidden; } button, @@ -37,21 +76,26 @@ button:disabled { .simple-shell { display: block; - min-height: 100vh; + height: 100vh; + overflow: hidden; background: #101216; - padding: 0; + padding: var(--app-header-height) 0 var(--app-footer-height); } .simple-panel { display: grid; align-content: start; - min-height: 100vh; + min-height: 0; + height: calc(100vh - var(--app-header-height) - var(--app-footer-height)); width: 100%; border: 0; border-radius: 0; background: #101216; box-shadow: none; - padding: 18px 18px 96px; + overflow-x: hidden; + overflow-y: scroll; + scrollbar-gutter: stable; + padding: 14px 18px 20px; } .simple-header, @@ -61,6 +105,7 @@ button:disabled { .app-row, .route-switch, .singbox-info-actions, +.panel-tabs, .server-row { display: flex; align-items: center; @@ -69,10 +114,15 @@ button:disabled { } .simple-header { - margin: -18px -18px 16px; - border-bottom: 1px solid #2a2f3a; + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 40; + min-height: var(--app-header-row-height); + margin: 0; background: #181b22; - padding: 14px 18px; + padding: 7px 14px; } .simple-header small, @@ -90,16 +140,406 @@ button:disabled { } .simple-header h1 { - margin-top: 4px; - font-size: 22px; + margin-top: 0; + font-size: 18px; line-height: 1.1; font-weight: 650; } +.simple-header .ghost-button { + min-height: 32px; + padding: 6px 10px; + font-size: 13px; +} + .section-head h2 { font-size: 16px; } +.panel-tabs { + position: fixed; + top: var(--app-header-row-height); + right: 0; + left: 0; + z-index: 40; + display: flex; + align-items: stretch; + gap: 0; + min-height: var(--app-tab-height); + overflow-x: auto; + border-top: 1px solid #242a35; + border-bottom: 1px solid #2b3342; + background: #181b22; + scrollbar-width: none; + margin: 0; + padding: 0 18px; +} + +.panel-tabs::-webkit-scrollbar { + display: none; +} + +.panel-tabs button { + appearance: none; + position: relative; + flex: 1 1 0; + min-width: 0; + min-height: var(--app-tab-height); + border: 0; + border-radius: 0; + background: transparent; + color: #9aa8bd; + font-weight: 750; + cursor: pointer; + margin: 0; + padding: 10px 12px 12px; + white-space: nowrap; +} + +.panel-tabs button:hover { + background: #1c212b; + color: #eef2ff; +} + +.panel-tabs button.active { + background: #181b22; + color: #eff6ff; + box-shadow: none; +} + +.panel-tabs button.active::after { + position: absolute; + right: 12px; + bottom: 0; + left: 12px; + height: 3px; + border-radius: 999px 999px 0 0; + background: #3b82f6; + box-shadow: 0 -6px 18px rgba(59, 130, 246, 0.34); + content: ""; +} + +.tab-panel-frame { + min-width: 0; + will-change: opacity, transform; +} + +.tab-panel-frame.swipe-right { + animation: panel-swipe-right 0.24s cubic-bezier(0.22, 0.72, 0.18, 1); +} + +.tab-panel-frame.swipe-left { + animation: panel-swipe-left 0.24s cubic-bezier(0.22, 0.72, 0.18, 1); +} + +.tab-panel { + display: grid; + gap: 10px; +} + +.panel-section-head { + display: flex; + align-items: end; + justify-content: space-between; + gap: 12px; + min-height: 48px; + border: 1px solid #2b3342; + border-radius: 4px; + background: #131720; + padding: 11px 12px; +} + +.panel-section-head span { + display: block; + color: #8d99ae; + font-size: 12px; +} + +.panel-section-head h2 { + margin: 2px 0 0; + color: #eef2ff; + font-size: 17px; + letter-spacing: 0; +} + +.panel-section-head > strong { + min-width: 0; + color: #bfdbfe; + font-size: 13px; + overflow-wrap: anywhere; + text-align: right; +} + +.summary-panel { + gap: 12px; +} + +.summary-hero { + display: grid; + grid-template-columns: auto minmax(0, 1fr); + gap: 12px; + align-items: start; + border: 1px solid #2b3342; + border-radius: 4px; + background: #151923; + padding: 14px; +} + +.summary-hero.ok { + border-color: rgba(34, 197, 94, 0.44); +} + +.summary-hero.warning { + border-color: rgba(245, 158, 11, 0.48); +} + +.summary-hero.error { + border-color: rgba(239, 68, 68, 0.52); +} + +.summary-hero.checking { + border-color: rgba(59, 130, 246, 0.54); +} + +.summary-status-dot { + width: 14px; + height: 14px; + border-radius: 999px; + background: #64748b; + margin-top: 5px; +} + +.summary-status-dot.ok { + background: #22c55e; + box-shadow: 0 0 0 4px rgba(34, 197, 94, 0.12); +} + +.summary-status-dot.warning { + background: #f59e0b; + box-shadow: 0 0 0 4px rgba(245, 158, 11, 0.12); +} + +.summary-status-dot.error { + background: #ef4444; + box-shadow: 0 0 0 4px rgba(239, 68, 68, 0.12); +} + +.summary-status-dot.checking { + border: 2px solid #3b82f6; + border-top-color: transparent; + background: transparent; + animation: spin 0.75s linear infinite; +} + +.summary-hero span, +.summary-card-label { + color: #8d99ae; + font-size: 12px; + font-weight: 700; +} + +.summary-hero strong { + display: block; + color: #f8fafc; + font-size: 22px; + line-height: 1.15; + margin-top: 2px; +} + +.summary-hero p { + color: #b6c2d4; + margin: 5px 0 0; + overflow-wrap: anywhere; +} + +.summary-readout, +.summary-draft { + border: 1px solid #2b3342; + border-radius: 4px; + background: #131720; + padding: 13px 14px; +} + +.summary-readout-head { + display: flex; + align-items: start; + justify-content: space-between; + gap: 12px; +} + +.summary-readout-head span, +.summary-draft span { + display: block; + color: #8d99ae; + font-size: 12px; + font-weight: 700; +} + +.summary-readout-head strong, +.summary-draft strong { + display: block; + color: #f8fafc; + font-size: 18px; + line-height: 1.2; + margin-top: 2px; +} + +.summary-pill { + flex: 0 0 auto; + border: 1px solid #2b3342; + border-radius: 999px; + background: #1a202b; + padding: 5px 9px; +} + +.summary-pill.ok { + border-color: rgba(34, 197, 94, 0.38); + color: #86efac; +} + +.summary-pill.warning { + border-color: rgba(245, 158, 11, 0.46); + color: #fcd34d; +} + +.summary-lines { + display: grid; + gap: 0; + margin: 12px 0 0; +} + +.summary-lines.compact { + margin-top: 10px; +} + +.summary-lines div { + display: grid; + grid-template-columns: 132px minmax(0, 1fr); + gap: 12px; + border-top: 1px solid #242b38; + padding: 9px 0; +} + +.summary-lines dt, +.summary-lines dd { + margin: 0; +} + +.summary-lines dt { + color: #8d99ae; + font-size: 12px; + font-weight: 750; +} + +.summary-lines dd { + color: #dbe4f0; + overflow-wrap: anywhere; +} + +.summary-draft { + display: grid; + gap: 8px; +} + +.summary-draft.ok { + border-color: rgba(34, 197, 94, 0.34); +} + +.summary-draft.warning { + border-color: rgba(245, 158, 11, 0.48); + background: rgba(120, 53, 15, 0.16); +} + +.summary-draft p { + color: #b6c2d4; + margin: 5px 0 0; + overflow-wrap: anywhere; +} + +.summary-actions { + display: flex; + gap: 8px; + align-items: center; +} + +.summary-actions button { + min-height: 34px; + border: 1px solid #343b49; + border-radius: 4px; + background: #242a35; + color: #eef2ff; + padding: 7px 10px; + cursor: pointer; +} + +.summary-actions button:hover { + background: #2d3543; +} + +.summary-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 9px; +} + +.summary-card { + display: grid; + gap: 5px; + align-content: start; + min-height: 104px; + border: 1px solid #2b3342; + border-radius: 4px; + background: #131720; + color: #dbeafe; + padding: 11px 12px; + text-align: left; +} + +button.summary-card { + cursor: pointer; +} + +button.summary-card:hover { + border-color: #3b82f6; + background: #172033; +} + +.summary-card.ok { + border-color: rgba(34, 197, 94, 0.36); +} + +.summary-card.warning { + border-color: rgba(245, 158, 11, 0.42); +} + +.summary-card.error { + border-color: rgba(239, 68, 68, 0.42); +} + +.summary-card.checking { + border-color: rgba(59, 130, 246, 0.42); +} + +.summary-card strong, +.summary-card span { + overflow-wrap: anywhere; +} + +.summary-card strong { + color: #f8fafc; + font-size: 15px; + line-height: 1.25; +} + +.summary-card > span:not(.summary-card-label) { + color: #9aa8bd; + font-size: 13px; +} + +.summary-card.readout { + cursor: default; +} + .ghost-button, .add-toolbar button, .process-add-line button, @@ -314,6 +754,69 @@ button:disabled { font-weight: 700; } +.setup-strip { + display: grid; + grid-template-columns: auto minmax(0, 1fr); + gap: 10px; + align-items: center; + min-height: 42px; + border: 1px solid #2b3342; + border-radius: 4px; + background: #111720; + padding: 7px 10px; +} + +.setup-strip-title { + color: #8d99ae; + font-size: 12px; + font-weight: 800; +} + +.setup-strip-items { + display: flex; + gap: 7px; + min-width: 0; + overflow-x: auto; + scrollbar-width: thin; +} + +.setup-strip-item { + display: inline-flex; + flex: 0 0 auto; + gap: 7px; + align-items: center; + min-height: 28px; + border: 1px solid #2b3342; + border-radius: 999px; + background: #151b25; + color: #dbeafe; + padding: 5px 9px; +} + +.setup-strip-dot { + width: 8px; + height: 8px; + border-radius: 999px; + background: #f59e0b; + box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.11); +} + +.setup-strip-item.installed .setup-strip-dot { + background: #22c55e; + box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.11); +} + +.setup-strip-item strong { + font-size: 12px; + white-space: nowrap; +} + +.setup-strip-item span:not(.setup-strip-dot) { + color: #9aa8bd; + font-size: 12px; + white-space: nowrap; +} + .setup-details { display: grid; grid-column: 2 / -1; @@ -442,6 +945,57 @@ button:disabled { padding: 10px; } +.external-proxy-card { + display: grid; + gap: 9px; +} + +.proxy-check-line { + display: grid; + grid-template-columns: minmax(0, 1fr) 132px; + gap: 8px; + align-items: stretch; +} + +.proxy-check-state, +.route-preview { + display: grid; + gap: 3px; + min-height: 46px; + border: 1px solid #2b3342; + border-radius: 4px; + background: #111720; + padding: 9px 11px; +} + +.proxy-check-state.ok { + border-color: rgba(34, 197, 94, 0.42); +} + +.proxy-check-state.warning { + border-color: rgba(245, 158, 11, 0.42); +} + +.proxy-check-state.error { + border-color: rgba(239, 68, 68, 0.42); +} + +.proxy-check-state strong, +.route-preview strong { + color: #eef2ff; + overflow-wrap: anywhere; +} + +.proxy-check-state span, +.route-preview span { + color: #8d99ae; + overflow-wrap: anywhere; +} + +.route-preview { + margin-top: 2px; +} + .simple-field { display: grid; gap: 7px; @@ -620,7 +1174,10 @@ button:disabled { } .server-row { - justify-content: flex-start; + display: grid; + grid-template-columns: minmax(0, 1fr) 34px; + align-items: center; + justify-content: stretch; gap: 7px; width: 100%; min-width: 0; @@ -634,6 +1191,45 @@ button:disabled { background: #17213a; } +.server-row.ok { + border-color: rgba(34, 197, 94, 0.42); +} + +.server-row.error { + border-color: rgba(239, 68, 68, 0.42); +} + +.server-select-button, +.server-ping-button { + border: 0; + background: transparent; + color: inherit; + cursor: pointer; + padding: 0; +} + +.server-select-button { + display: flex; + align-items: center; + gap: 7px; + min-width: 0; + text-align: left; +} + +.server-ping-button { + display: grid; + place-items: center; + width: 30px; + height: 28px; + border: 1px solid #263040; + border-radius: 4px; + color: #bfdbfe; +} + +.server-ping-button:hover { + background: #1d2735; +} + .server-select-dot { width: 10px; height: 10px; @@ -657,6 +1253,16 @@ button:disabled { white-space: nowrap; } +.server-ping-badge { + flex: 0 0 auto; + border: 1px solid #263040; + border-radius: 4px; + color: #bfdbfe; + padding: 2px 5px; + font-size: 11px; + font-weight: 800; +} + .singbox-install-note { display: grid; grid-column: 1 / -1; @@ -689,40 +1295,93 @@ button:disabled { .apps-section { display: grid; - gap: 10px; + gap: 9px; margin-top: 8px; + border: 1px solid #2b3342; + border-radius: 4px; + background: #10141c; + padding: 12px; +} + +.apps-header { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(340px, 520px); + gap: 12px; + align-items: center; + min-height: 48px; +} + +.apps-title { + min-height: 48px; + align-items: center; + justify-content: flex-start; +} + +.apps-config-actions { + display: grid; + gap: 8px; + align-items: center; +} + +.apps-config-actions .apply-state { + margin: 0; +} + +.apps-config-actions .command-row { + grid-template-columns: minmax(0, 1fr) 118px; + margin-top: 0; +} + +.apps-config-actions .apply-button, +.apps-config-actions .open-config-button { + height: 48px; + min-height: 48px; +} + +.apps-config-actions .config-path { + margin: 0; + color: #8d99ae; } .section-head span { min-width: 28px; + height: 30px; border: 1px solid #343b49; border-radius: 4px; background: #1b202b; color: #dbeafe; - padding: 3px 9px; + padding: 0 9px; text-align: center; font-size: 12px; font-weight: 700; + line-height: 28px; } .add-toolbar { - justify-content: center; - padding: 4px 0; + justify-content: flex-end; + padding: 0; } .add-tile { - display: grid; - place-items: center; - width: 74px; - height: 48px; + display: inline-flex; + align-items: center; + justify-content: center; + position: relative; + width: 44px; + height: 38px; border-color: #2b3342; - background: #131720; + background: #202633; color: #dbeafe; + line-height: 0; padding: 0; } .add-tile svg { + width: 20px; + height: 20px; display: block; + flex: 0 0 auto; + transform: translate(0.5px, 0.5px); } .add-tile:hover { @@ -730,6 +1389,61 @@ button:disabled { background: #182033; } +.add-tile[data-tooltip]::before, +.add-tile[data-tooltip]::after { + position: absolute; + left: 50%; + z-index: 30; + pointer-events: none; + opacity: 0; + transition: opacity 90ms ease, transform 120ms ease; + transition-delay: 55ms; +} + +.add-tile[data-tooltip]::before { + bottom: calc(100% + 3px); + width: 8px; + height: 8px; + background: #0d1118; + border-right: 1px solid #334155; + border-bottom: 1px solid #334155; + content: ""; + transform: translate(-50%, 2px) rotate(45deg); +} + +.add-tile[data-tooltip]::after { + bottom: calc(100% + 8px); + border: 1px solid #334155; + border-radius: 4px; + background: #0d1118; + box-shadow: 0 10px 24px rgba(0, 0, 0, 0.34); + color: #e5e7eb; + content: attr(data-tooltip); + font-size: 12px; + font-weight: 750; + line-height: 1; + padding: 7px 8px; + transform: translate(-50%, 4px); + white-space: nowrap; +} + +.add-tile[data-tooltip]:hover::before, +.add-tile[data-tooltip]:hover::after, +.add-tile[data-tooltip]:focus-visible::before, +.add-tile[data-tooltip]:focus-visible::after { + opacity: 1; +} + +.add-tile[data-tooltip]:hover::before, +.add-tile[data-tooltip]:focus-visible::before { + transform: translate(-50%, 0) rotate(45deg); +} + +.add-tile[data-tooltip]:hover::after, +.add-tile[data-tooltip]:focus-visible::after { + transform: translate(-50%, 0); +} + .add-tile[aria-pressed="true"] { border-color: #3b82f6; background: #1e3a8a; @@ -741,6 +1455,43 @@ button:disabled { animation: pulse 1s ease-in-out infinite; } +.app-add-skeleton { + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + gap: 12px; + align-items: center; + min-height: 58px; + border: 1px dashed #334155; + border-radius: 4px; + background: + linear-gradient(90deg, transparent, rgba(148, 163, 184, 0.08), transparent), + #121722; + background-size: 220% 100%; + color: #94a3b8; + padding: 9px 12px; +} + +.app-add-main { + display: flex; + gap: 10px; + align-items: center; + min-width: 0; +} + +.app-add-main strong, +.app-add-main span { + display: block; +} + +.app-add-main strong { + color: #cbd5e1; +} + +.app-add-main span { + color: #7d8aa0; + font-size: 13px; +} + .process-add-line { display: grid; grid-template-columns: minmax(0, 1fr) 72px 88px; @@ -769,7 +1520,8 @@ button:disabled { .app-list { display: grid; - gap: 8px; + gap: 6px; + margin-top: 1px; } .app-row-main { @@ -778,11 +1530,13 @@ button:disabled { gap: 10px; } -.app-row .item-icon { - display: grid; +.app-row .item-icon, +.app-add-main .item-icon { + display: inline-flex; + align-items: center; + justify-content: center; flex: 0 0 auto; align-self: center; - place-items: center; width: 34px; height: 34px; border: 1px solid #2b3342; @@ -792,8 +1546,16 @@ button:disabled { line-height: 0; } -.app-row .item-icon svg { +.app-add-main .app-add-icon { + color: #64748b; +} + +.app-row .item-icon svg, +.app-add-main .item-icon svg { + width: 20px; + height: 20px; display: block; + flex: 0 0 auto; } .app-row, @@ -876,32 +1638,32 @@ button:disabled { .log-dock { position: fixed; - right: 10px; - bottom: 10px; - left: 10px; - z-index: 30; + right: 0; + bottom: 0; + left: 0; + z-index: 40; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: center; - min-height: 48px; - border: 1px solid #2b3342; - border-radius: 4px; - background: rgba(19, 23, 32, 0.98); - box-shadow: 0 12px 32px rgba(0, 0, 0, 0.34); - padding: 7px; + min-height: var(--app-footer-height); + border-top: 1px solid #2b3342; + background: #151923; + box-shadow: none; + margin: 0; + padding: 8px 14px; } .log-dock.error { - border-color: rgba(239, 68, 68, 0.58); + border-top-color: rgba(239, 68, 68, 0.58); } .log-dock.success { - border-color: rgba(34, 197, 94, 0.58); + border-top-color: rgba(34, 197, 94, 0.58); } .log-dock.info { - border-color: rgba(59, 130, 246, 0.58); + border-top-color: rgba(59, 130, 246, 0.58); } .log-current { @@ -930,7 +1692,8 @@ button:disabled { } .log-current strong { - flex: 0 0 auto; + flex: 0 1 auto; + min-width: 0; } .log-current span { @@ -945,12 +1708,12 @@ button:disabled { display: inline-flex; gap: 8px; align-items: center; - min-height: 34px; + min-height: 32px; border: 1px solid #343b49; border-radius: 4px; background: #242a35; color: #eef2ff; - padding: 7px 10px; + padding: 6px 10px; cursor: pointer; } @@ -970,13 +1733,19 @@ button:disabled { } .log-history { + position: absolute; + right: 0; + bottom: 100%; + left: 0; display: grid; grid-column: 1 / -1; gap: 6px; max-height: 230px; overflow: auto; - border-top: 1px solid #2b3342; - padding-top: 7px; + border: 1px solid #2b3342; + border-bottom: 0; + background: #151923; + padding: 7px 14px; } .log-history-row { @@ -1113,23 +1882,145 @@ button:disabled { } } +@keyframes panel-swipe-right { + from { + opacity: 0; + transform: translateX(34px); + } + + to { + opacity: 1; + transform: translateX(0); + } +} + +@keyframes panel-swipe-left { + from { + opacity: 0; + transform: translateX(-34px); + } + + to { + opacity: 1; + transform: translateX(0); + } +} + +@media (prefers-reduced-motion: reduce) { + .tab-panel-frame, + .tab-panel, + .finder-card .finder-border-glow, + .finder-border-glow-segment, + .status-light, + .summary-status-dot.checking, + .list-skeleton span, + .tile-loading { + animation: none; + transition: none; + } +} + @media (max-width: 680px) { .simple-shell { - padding: 0; + padding: var(--app-header-height) 0 var(--app-footer-height); } .simple-panel { - padding: 14px 14px 100px; + height: calc(100vh - var(--app-header-height) - var(--app-footer-height)); + padding: 12px 12px 16px; } - .simple-header, .app-row { align-items: stretch; flex-direction: column; } .simple-header { - margin: -14px -14px 16px; + align-items: center; + flex-direction: row; + gap: 10px; + margin: 0; + padding: 7px 10px; + } + + .simple-header h1 { + font-size: 16px; + } + + .simple-header .ghost-button { + min-height: 30px; + padding: 5px 8px; + font-size: 12px; + } + + .panel-tabs { + gap: 1px; + padding: 0 10px; + } + + .panel-tabs button { + flex: 1 0 110px; + min-height: var(--app-tab-height); + padding: 8px 10px 9px; + font-size: 13px; + } + + .panel-section-head { + align-items: stretch; + flex-direction: column; + } + + .panel-section-head > strong { + text-align: left; + } + + .summary-grid { + grid-template-columns: 1fr; + } + + .summary-readout-head { + align-items: stretch; + flex-direction: column; + } + + .summary-pill { + width: fit-content; + } + + .summary-lines div { + grid-template-columns: 1fr; + gap: 4px; + } + + .summary-actions { + display: grid; + grid-template-columns: 1fr; + } + + .setup-strip { + grid-template-columns: 1fr; + align-items: stretch; + } + + .apps-header { + grid-template-columns: 1fr; + min-height: 0; + } + + .apps-title { + min-height: 34px; + } + + .apps-config-actions .command-row { + grid-template-columns: 1fr; + } + + .app-add-skeleton { + grid-template-columns: 1fr; + } + + .proxy-check-line { + grid-template-columns: 1fr; } .add-toolbar { @@ -1195,20 +2086,30 @@ button:disabled { } .log-dock { - right: 8px; - left: 8px; - grid-template-columns: 1fr; + position: fixed; + right: 0; + bottom: 0; + left: 0; + grid-template-columns: minmax(0, 1fr) auto; + margin: 0; + padding: 7px 10px; } .log-current { - align-items: flex-start; - flex-direction: column; - gap: 2px; + align-items: baseline; + flex-direction: row; + gap: 8px; + padding: 0 4px; } .log-current strong, .log-current span { - white-space: normal; + white-space: nowrap; + } + + .log-history { + max-height: 220px; + padding: 7px 10px; } .log-history-row { diff --git a/docs/goals/windows-client-three-panel-ui/EVIDENCE.md b/docs/goals/windows-client-three-panel-ui/EVIDENCE.md new file mode 100644 index 0000000..e3beac5 --- /dev/null +++ b/docs/goals/windows-client-three-panel-ui/EVIDENCE.md @@ -0,0 +1,85 @@ +# Доказательства трехпанельного интерфейса Windows Client + +## Приемочные доказательства + +Записать реальный артефакт, который доказывает результат с точки зрения пользователя. + +Обязательные доказательства: +- `summary-panel.png`: read-only `Сводка` показывает статус системы, ProxiFyre, подключение, маршрут, активный сервер, количество приложений, config path state, dirty state и последнее событие. +- Browser state для `Сводка`: `summaryInputs = 0`, `summaryForbiddenButtons = []`, активная вкладка `panel-summary`. +- `proxifyre-panel.png`: панель `ProxiFyre` показывает статус компонента, setup action, service install action, список приложений, add controls, dirty/apply command row. +- `vpn-proxy-external-panel.png`: панель `VPN / Прокси` в режиме внешнего прокси показывает route switch, SOCKS5 input, TCP check state, route preview и apply/open actions. +- `vpn-proxy-local-panel.png`: панель `VPN / Прокси` в режиме локального прокси показывает Local sing-box empty/install state, route preview и dirty/apply state. +- `narrow-proxifyre-panel.png`: узкий viewport показывает tab bar, ProxiFyre card, app list controls и command area без overlap с log dock. +- Browser overlap state после фикса: desktop `commandBottom = 705.1875`, `logTop = 815.1875`, `overlaps = false`; narrow `appListBottom = 701.1875`, `logTop = 1072.1875`, `overlaps = false`. +- Root `src/web` и `src/server` не менялись. + +Сервисные действия install/start/stop/uninstall проверены на уровне существующих handlers и сборки UI. Реальный elevated Windows service lane для ProxiFyre/Local sing-box в этой сессии не запускался: `implemented but unproven`. + +## Проверка + +Записать сфокусированные проверки, которые прошли, включая команды и важный вывод. + +Ожидаемые команды: + +```powershell +cd apps/windows-client +npm run build +``` + +Результат: + +```text +tsc && vite build +1789 modules transformed +dist/index.html +dist/assets/index-Oqrmqzau.css +dist/assets/index-CJqhju7q.js +built in 1.31s +``` + +Если менялись Rust/Tauri commands: + +```powershell +cd apps/windows-client/src-tauri +cargo test +``` + +Результат: + +```text +command_tests: 10 passed, including ping_proxy_target_reports_open_tcp_endpoint +component_detection_tests: 7 passed +domain_tests: 5 passed +helper_tests: 6 passed +proxifyre_adapter_tests: 6 passed +singbox_adapter_tests: 6 passed +singbox_command_tests: 8 passed +singbox_service_tests: 7 passed +storage_tests: 8 passed +subscription_tests: 7 passed +doc-tests: 0 passed +overall: passed, warnings only for existing dead-code/test module duplication +``` + +Browser preview: + +```text +Opened http://127.0.0.1:5174/ +Tabs detected: Сводка, ProxiFyre, VPN / Прокси +Summary activePanel: panel-summary +ProxiFyre activePanel: panel-proxifyre +VPN/Proxy activePanel: panel-proxy +External route aria-pressed=true in external mode +Local route aria-pressed=true in local mode +``` + +## Заметки review + +Записать PRE review, reviewer, maintainer или verifier findings, если они изменили результат. + +- PRE review: aligned. No blockers. Main risk was weak UI evidence; resolved by browser screenshots and DOM state checks. +- POST plan review: aligned. The displaced monolithic screen path is removed from the active render path and replaced by three panels. +- Correctness review: summary has no mutating controls; ProxiFyre actions remain in ProxiFyre panel; route/proxy actions remain in VPN/Proxy panel; new `ping_proxy_target` is read-only and tested with a local TCP listener. +- Maintainability review: backend source of truth unchanged; no direct generated config writes from React; no root `src/web` or `src/server` edits. +- Residual risk: real elevated service actions were not manually executed in native Tauri/elevated Windows mode during this UI pass. diff --git a/docs/goals/windows-client-three-panel-ui/GOAL.md b/docs/goals/windows-client-three-panel-ui/GOAL.md new file mode 100644 index 0000000..6a47950 --- /dev/null +++ b/docs/goals/windows-client-three-panel-ui/GOAL.md @@ -0,0 +1,12 @@ +# Goal: Трехпанельный интерфейс Windows Client + +Use Krypton Execution to execute `docs/goals/windows-client-three-panel-ui/PLAN.md`. + +Core rules: +- Treat `PLAN.md` as the source plan. +- Preserve intent, ownership, contract, cutover, evidence, and kill criteria. +- Summary panel must remain read-only: no apply, install, start, stop, delete, input, subscription, or route mutations there. +- Keep Rust/Tauri storage and commands as the source of truth; React may hold only UI state and derived display models. +- Do not add a new dominant path without deleting, redirecting, demoting, or shimming the displaced monolithic screen path. +- Capture acceptance evidence from the target perspective and record it in `EVIDENCE.md`. +- Say `implemented but unproven` if target-perspective or Windows service evidence cannot be captured. diff --git a/docs/goals/windows-client-three-panel-ui/PLAN.md b/docs/goals/windows-client-three-panel-ui/PLAN.md new file mode 100644 index 0000000..ee9d418 --- /dev/null +++ b/docs/goals/windows-client-three-panel-ui/PLAN.md @@ -0,0 +1,423 @@ +# План реализации трехпанельного интерфейса Windows Client + +**Intent:** Перестроить текущий монолитный экран Windows-клиента в три переключаемые панели: read-only сводка, настройки ProxiFyre и настройки VPN/прокси. +**Current Behavior:** Сейчас `apps/windows-client/src/app/App.tsx` смешивает статус ProxiFyre, выбор маршрута, Local sing-box, список приложений, применение конфига и журнал событий на одном экране. Пользователь сразу видит все управляющие элементы, поэтому главная страница не отделяет состояние системы от действий. +**Expected Outcome:** Пользователь открывает приложение и сначала видит чистую сводку без редактирования. Управление ProxiFyre, список приложений и диагностика компонента находятся во второй панели. Выбор локального или внешнего прокси, подписка, серверы, ping и генерация VPN/proxy-конфига находятся в третьей панели. +**Target-Perspective Output:** Пользователь может за 5-10 секунд понять, работает ли система, запущен ли ProxiFyre, какой маршрут применен, локальный он или внешний, и какой файл конфига активен. Затем пользователь переключается во вкладку ProxiFyre для сервисных действий и списка приложений либо во вкладку VPN/Прокси для выбора маршрута и проверки соединения. +**Truth Owner:** Rust/Tauri команды и JSON-файлы под `C:\ProgramData\VpnProxy` остаются источником правды. React хранит только состояние текущей вкладки, черновики полей, loading/error/success состояния и производные view model для отображения. +**Contract Boundary:** UI вызывает существующие typed Tauri commands из `apps/windows-client/src/api/tauriCommands.ts`. Rust владеет профилями, targets, компонентами, local-singbox config/cache, generated config и применением ProxiFyre. Новые UI-панели не должны писать напрямую в derived/generated артефакты. +**Cutover:** Текущий единый экран в `App.tsx` заменяется shell-layout с тремя вкладками. Существующие функции загрузки, установки, запуска, выбора сервера, ping, apply и notifications переиспользуются, но раскладываются по панелям. +**Displaced Path:** Убирается доминирующий путь "все настройки на одной странице". Сводка не дублирует формы и кнопки apply; она только отображает состояние и ведет пользователя к нужной панели. +**Value Density:** Самый ценный срез: верхняя навигация по трем панелям плюс read-only сводка, которая корректно собирает текущее состояние из уже загружаемых данных. После этого переносим существующие настройки без изменения backend-контракта. +**Evidence Gate:** Приемка требует не только `npm run build`, но и доказательство глазами пользователя: скриншоты/состояния всех трех панелей, read-only поведение сводки, dirty/apply состояние на вкладках настроек, responsive-проверка. +**Acceptance Evidence:** `npm run build` проходит; при необходимости Rust tests проходят для нового ping/target DTO; в `EVIDENCE.md` записаны скриншоты или browser/Tauri state для трех панелей, а также проверка, что сводка не содержит изменяющих controls. +**Evidence Lane:** Доказательства исполнения будут фиксироваться в `docs/goals/windows-client-three-panel-ui/EVIDENCE.md`. +**Kill Criteria:** Нет input/button apply на сводке; нет второго источника состояния маршрута; нет скрытой установки компонентов при открытии вкладок; нет изменения root `src/web` или root `src/server`; нет расхождения терминов ProxiFyre / Local sing-box / внешний прокси. +**Architecture Slice:** Изменения сосредоточены в `apps/windows-client/src/app/App.tsx`, `apps/windows-client/src/styles/app.css`, при необходимости `apps/windows-client/src/api/tauriCommands.ts`, `apps/windows-client/src/domain/types.ts`, `apps/windows-client/src-tauri/src/commands.rs` и связанных tests для проверки внешнего target ping. +**Plan Review Gate:** Требуется PRE review перед исполнением. + +## Краткий дизайн-brief + +Продукт: Windows desktop utility для маршрутизации выбранных приложений через ProxiFyre и внешний или локальный proxy path. + +Визуальный источник: текущий темный utilitarian-стиль `apps/windows-client/src/styles/app.css`: компактные панели, 4px radius, статусные точки, lucide icons, сдержанные borders, без landing/hero. + +Интерактивность: полная. Вкладки, меню, установка/запуск/остановка, добавление приложений, выбор маршрута, подписка, выбор сервера, ping, генерация и apply должны работать через реальные текущие команды. + +## Архитектурный срез + +Файлы для создания: +- `docs/goals/windows-client-three-panel-ui/PLAN.md` +- `docs/goals/windows-client-three-panel-ui/GOAL.md` +- `docs/goals/windows-client-three-panel-ui/EVIDENCE.md` + +Файлы для изменения: +- `apps/windows-client/src/app/App.tsx` +- `apps/windows-client/src/styles/app.css` +- `apps/windows-client/src/api/tauriCommands.ts`, только если понадобится новый внешний proxy ping command. +- `apps/windows-client/src/domain/types.ts`, только если понадобится новый DTO для внешнего proxy ping. +- `apps/windows-client/src-tauri/src/commands.rs`, только если понадобится новый внешний proxy ping command. +- `apps/windows-client/src-tauri/src/main.rs`, только для регистрации нового command. +- `apps/windows-client/src-tauri/tests/*`, только для нового command или сохранения существующих контрактов. +- `docs/goals/windows-client-three-panel-ui/EVIDENCE.md`, при исполнении. + +Файлы, которых не касаться: +- `src/web/*` +- `src/server/*` +- Docker/compose/entrypoint файлы. +- Installer scripts, если UI-разрез не требует изменения install boundary. +- Старые goal packages, кроме ссылок в evidence при необходимости. + +Источник правды: +- `C:\ProgramData\VpnProxy\config\profiles.json` +- `C:\ProgramData\VpnProxy\config\targets.json` +- `C:\ProgramData\VpnProxy\config\components.json` +- `C:\ProgramData\VpnProxy\config\local-singbox.json` +- `C:\ProgramData\VpnProxy\state\singbox-subscription-cache.json` +- `C:\ProgramData\VpnProxy\state\activity.json` + +Производные артефакты: +- `C:\ProgramData\VpnProxy\generated\proxifyre-app-config.json` +- `C:\ProgramData\VpnProxy\generated\sing-box-config.json` + +Путь чтения: +- React вызывает `get_saved_state`, `get_components`, `get_proxifyre_setup_status`, `get_singbox_status`, `get_singbox_setup_status`. +- Summary panel строит производную view model из уже загруженных `profiles`, `targets`, `components`, `setupStatus`, `singBoxStatus`, `generatedConfigPath`, `serverPings` и `hasUnappliedChanges`. +- ProxiFyre panel читает `proxyfier`, `setupStatus`, `items`, `loadedProfiles`, `generatedConfigPath`. +- VPN/Proxy panel читает `routeMode`, `proxyInput`, `singBoxStatus`, `singBoxSetupStatus`, `serverPings`, selected server и target. + +Путь записи: +- ProxiFyre panel пишет только через существующие handlers: install/start/stop/uninstall ProxiFyre, add/remove app items, `updateConfig`. +- VPN/Proxy panel пишет только через route/subscription/server/config handlers: `changeRouteMode`, `changeProxyInput`, `saveSingBoxSubscription`, `fetchSingBoxSubscription`, `forgetSingBoxSubscription`, `selectSingBoxServer`, `ping*`, `generateSingBoxConfig`, service actions, `updateConfig`. +- Summary panel не пишет ничего, кроме глобального non-mutating refresh, если refresh остается в header. + +Граница контракта: +- `App.tsx` отвечает за orchestration и view composition. +- Typed Tauri command wrappers отвечают за API shape. +- Rust commands отвечают за validation, persistence, service/check actions и generated config. +- CSS отвечает за layout, tab transitions, loading skeletons, menu/popover transitions и responsive behavior. + +Точки интеграции: +- `routeMode === 'external'` показывает внешний/глобальный proxy target. +- `routeMode === 'local-singbox'` показывает Local sing-box path. +- `hasUnappliedChanges` остается общим индикатором для вкладок настроек. +- `log-dock` остается глобальным и не привязывается к одной вкладке. + +Миграция и переключение: +- Сначала добавить `activePanel` и shell-вкладки без изменения бизнес-логики. +- Затем перенести JSX блоки в три render-функции или локальные компоненты в том же файле. +- После стабилизации можно вынести панели в отдельные файлы, но только если это уменьшит размер `App.tsx` без изменения контрактов. + +Гейт приемочных доказательств: +- Доказательство должно показать каждую панель отдельно. +- Должно быть видно, что summary read-only. +- Должно быть видно, что actions доступны на вкладках настроек. +- Должно быть видно, что mobile layout не ломает tab bar, app list, server list и bottom log dock. + +## Детальное описание интерфейса + +### Общая оболочка + +Верхняя часть экрана остается компактной, но становится навигационной: +- слева: `VPN Proxy` и заголовок `Прокси для приложений`; +- справа: кнопка `Обновить`, которая запускает текущий `refresh`; +- под заголовком: segmented tabs из трех пунктов: `Сводка`, `ProxiFyre`, `VPN / Прокси`. + +Поведение вкладок: +- активная вкладка имеет более яркий border/background и status underline; +- при клике меняется только `activePanel`, данные не перезагружаются автоматически; +- переход между панелями: fade + легкий slide по Y на 6-8px, длительность 140-180ms; +- при `prefers-reduced-motion: reduce` transition отключается; +- keyboard support: tabs работают как buttons с `aria-pressed` или `role="tablist"`/`role="tab"`/`role="tabpanel`. + +Глобальные состояния: +- `isLoading` показывает skeleton в содержимом активной панели; +- `isDetectingComponents` показывает проверку компонентов без блокировки переключения вкладок; +- `log-dock` остается закрепленным снизу и продолжает показывать success/error/info; +- dirty/apply bar появляется только на вкладках `ProxiFyre` и `VPN / Прокси`, не на read-only сводке. + +### Панель 1: `Сводка` + +Назначение: главная read-only страница, которая отвечает на вопрос "что сейчас происходит с системой". + +Содержимое: +- `Статус системы`: одно агрегированное состояние `Работает`, `Требует внимания`, `Не настроено`, `Проверяю`. +- `ProxiFyre`: установлен/не установлен, запущен/остановлен, путь или первая проблема. +- `Подключение`: корректность текущего маршрута: ProxiFyre running, выбран target, для Local sing-box выбран сервер и служба запущена, для внешнего proxy валиден host/port и есть последний результат ping/check, если он уже запускался. +- `Маршрут`: `Локальный прокси` или `Внешний прокси`; рядом человекочитаемый endpoint: `127.0.0.1:1080`, LAN адрес Local sing-box или внешний `host:port`. +- `Активный сервер`: selected Local sing-box server tag, если применим; иначе `не используется`. +- `Приложения в профиле`: количество настроенных process/folder/exe items. +- `Примененный конфиг`: путь `generatedConfigPath` для ProxiFyre и, если есть, `singBoxStatus.generatedConfigPath`. +- `Состояние изменений`: `Все применено` или `Есть непримененные изменения`, но без кнопки apply. +- `Последнее событие`: последний элемент `logEntries` или activity, если он уже доступен на клиенте. + +Визуально: +- это не форма, а read-only dashboard; +- вместо input используются value rows: label слева, value справа, status dot рядом; +- важные значения не спрятаны в tooltip; +- длинные пути переносятся через `overflow-wrap: anywhere`; +- при широкой ширине блоки идут сеткой 2-3 колонки, на узком экране складываются в один столбец. + +Действия при нажатии: +- клик по строке `ProxiFyre` переключает на вкладку `ProxiFyre`; +- клик по строке `Маршрут` или `Активный сервер` переключает на вкладку `VPN / Прокси`; +- клик по `Приложения в профиле` переключает на вкладку `ProxiFyre` и фокусирует список приложений; +- никаких input, add/remove, install/start/stop, apply или clear на этой панели нет. + +Анимации: +- при refresh status rows показывают мягкий shimmer/skeleton; +- status dot для `Проверяю` использует текущий spinner pattern; +- при смене агрегированного статуса value row подсвечивается на 400-600ms через background flash; +- предупреждение `Есть непримененные изменения` может слегка проявляться fade-in, но без кнопки. + +### Панель 2: `ProxiFyre` + +Назначение: диагностика и настройка того, что относится именно к ProxiFyre и маршрутизируемым приложениям. + +Содержимое: +- главный статус ProxiFyre: найден/не найден, запущен/остановлен, path/problem; +- setup/modules list из `setupStatus.items`: binary/service/install folder/config capability и все, что возвращает backend; +- service controls: install, start, stop, uninstall через меню `MoreHorizontal`; +- `Список приложений`: настроенные process/folder/exe items, сгруппированные или помеченные типом; +- счетчик приложений и отдельные пустые состояния для "ничего не настроено"; +- generated ProxiFyre config path; +- dirty/apply state для изменений списка приложений. + +Визуально: +- верхний status block сохраняет текущий `finder-card` pattern, status-light и animated border glow; +- modules list разворачивается внутри панели через `Состав ProxiFyre` / `Что будет установлено`; +- список приложений становится основной частью панели, а не хвостом общей страницы; +- app rows имеют icon по типу: process, exe, folder; +- add-toolbar остается с icon buttons: process, exe, folder, с tooltip/title. + +Действия при нажатии: +- `Установить`: вызывает текущий `installProxiFyrePackage`, показывает loading на кнопке и animated border; +- `Запустить`/`Остановить`: вызывает `setProxiFyreServiceRunning`, блокирует повторный клик на время action; +- `Еще` открывает popover с `Удалить ProxiFyre`; uninstall сохраняет текущий confirm boundary; +- `Состав ProxiFyre`: раскрывает/скрывает setup details; +- `Добавить процесс`: открывает inline input, Enter добавляет, Escape закрывает; +- `Добавить EXE`: открывает file picker через Tauri dialog; +- `Добавить папку`: открывает directory picker; +- `Удалить` у app row удаляет item и выставляет `hasUnappliedChanges`; +- `Применить в ProxiFyre`: валидирует items и текущий route, затем вызывает `updateConfig`; +- `Открыть конфиг`: открывает generated config location, если эта кнопка остается в ProxiFyre panel. + +Анимации: +- поиск/установка/запуск используют существующий moving border glow; +- раскрытие modules list: height/opacity transition 160-220ms; +- добавление app row: fade/slide-in; +- удаление app row: быстрый opacity collapse, если реализация не усложнит state; +- dirty bar появляется slide-up/fade-in над command row; +- меню `Еще`: fade + scale 0.98 -> 1. + +### Панель 3: `VPN / Прокси` + +Назначение: выбор маршрута и настройка самого proxy/VPN path. + +Содержимое: +- segmented control `Внешний прокси` / `Локальный прокси`; +- для `Внешний прокси`: input адреса `socks5://host:port` или `host:port`, validation hint, кнопка проверки доступности; +- для `Локальный прокси`: Local sing-box status, install/start/stop/uninstall, setup details, локальный и LAN endpoint, selected server, generated sing-box config path; +- subscription input: paste URL/link, load/update, clear; +- server list из `singBoxStatus.cache.servers`; +- ping controls: `Ping все`, per-server ping action, отображение latency/error рядом с server row; +- generate sing-box config action; +- route preview: `Выбранные приложения -> ProxiFyre -> внешний proxy` или `Выбранные приложения -> ProxiFyre -> Local sing-box -> selected server`; +- dirty/apply state для route/proxy/subscription/server changes. + +Визуально: +- mode switch остается заметным вверху панели; +- внешний proxy block не должен выглядеть менее важным, потому что это полноценный route path; +- Local sing-box block визуально похож на ProxiFyre status block, но расположен только в VPN/Proxy panel; +- server list может оставаться grid, но row должен показывать selected dot, server name и ping badge; +- для плохого ping row получает amber/red border, для хорошего ping зеленый badge; +- route preview оформляется как read-only line/flow, без декоративной схемы. + +Действия при нажатии: +- `Внешний прокси`: меняет `routeMode` на `external`, выставляет dirty state; +- ввод адреса proxy: обновляет `proxyInput`, выставляет dirty state, frontend validation показывает ошибки до apply; +- `Проверить`: парсит внешний proxy и вызывает новый или переиспользованный backend TCP connect check; результат сохраняется в UI state и отображается на этой панели и в summary; +- `Локальный прокси`: меняет `routeMode` на `local-singbox`, выставляет dirty state; +- `Установить Local sing-box`: вызывает текущий install handler; +- `Запустить`/`Остановить`: вызывает текущий service handler; +- `Состав Local sing-box`: раскрывает setup details; +- `Подробности`: показывает локальный endpoint, LAN, server, binary path, config path; +- `Загрузить`/`Обновить` подписку: вызывает текущий subscription flow; +- `Очистить`: вызывает forget flow, очищает server pings и selected server; +- click по server row: вызывает `selectSingBoxServer`, выставляет dirty state; +- `Ping все`: вызывает `pingAllSingBoxServers`; +- per-server ping: вызывает существующий `pingSingBoxServer(tag)`, если добавляем кнопку/иконку в row; +- `Конфиг`: вызывает `generateSingBoxConfig`; +- `Применить маршрут`: вызывает общий `updateConfig`. + +Анимации: +- mode switch меняет активный segment без скачка высоты; +- при смене mode panel content cross-fade; +- ping badge показывает loading spinner только на проверяемых row; +- server row после ping обновляет latency с короткой подсветкой; +- subscription/server empty state появляется fade-in; +- generated config success подсвечивает config path на 400-600ms. + +## Задачи исполнения + +### Задача 1: Ввести shell вкладок и производные view models + +Разрешенные файлы: +- `apps/windows-client/src/app/App.tsx` +- `apps/windows-client/src/styles/app.css` + +Ожидаемый результат: +- `activePanel: 'summary' | 'proxifyre' | 'proxy'`. +- Общий header с tab control. +- Производные функции для summary: system status, route label, endpoint label, config labels, app count, issue list. +- Старые JSX-блоки временно остаются, но render path начинает разделяться. + +Проверка: +- `cd apps/windows-client && npm run build` + +Приемочные доказательства: +- Screenshot/state показывает три tab buttons и корректную активную вкладку. + +Параллельное выполнение: нет, общий `App.tsx`. + +### Задача 2: Реализовать read-only панель `Сводка` + +Разрешенные файлы: +- `apps/windows-client/src/app/App.tsx` +- `apps/windows-client/src/styles/app.css` + +Ожидаемый результат: +- Summary panel без input/apply/install/start/stop/delete. +- Статус системы, ProxiFyre, подключение, маршрут, активный server, apps count, config paths, dirty state. +- Навигационные клики по read-only строкам переводят на соответствующие вкладки. + +Проверка: +- `cd apps/windows-client && npm run build` +- Manual DOM/visual check: на summary нет изменяющих controls. + +Приемочные доказательства: +- Screenshot summary panel. +- Запись в evidence: какие элементы read-only и куда ведут navigation clicks. + +Параллельное выполнение: нет. + +### Задача 3: Перенести ProxiFyre и список приложений во вторую панель + +Разрешенные файлы: +- `apps/windows-client/src/app/App.tsx` +- `apps/windows-client/src/styles/app.css` + +Ожидаемый результат: +- ProxiFyre panel содержит status card, setup details, service actions, app add/remove, generated config path и apply/open config actions. +- Существующие handlers переиспользованы без изменения backend ownership. +- `hasUnappliedChanges` продолжает работать после add/remove. + +Проверка: +- `cd apps/windows-client && npm run build` + +Приемочные доказательства: +- Screenshot ProxiFyre panel с service status и apps list. +- Проверка add/remove вызывает dirty state. + +Параллельное выполнение: нет. + +### Задача 4: Перенести VPN/Proxy route settings в третью панель + +Разрешенные файлы: +- `apps/windows-client/src/app/App.tsx` +- `apps/windows-client/src/styles/app.css` +- `apps/windows-client/src/api/tauriCommands.ts`, если нужен внешний target ping. +- `apps/windows-client/src/domain/types.ts`, если нужен внешний target ping DTO. + +Ожидаемый результат: +- VPN/Proxy panel содержит route mode switch, external proxy editor, Local sing-box controls, subscription, server selection, ping, generate config, route preview и apply. +- Внешний proxy path не зависит от Local sing-box. +- Local sing-box UI не показывается на summary и не смешивается с ProxiFyre panel. + +Проверка: +- `cd apps/windows-client && npm run build` + +Приемочные доказательства: +- Screenshot external proxy mode. +- Screenshot local proxy mode с server list или empty state. + +Параллельное выполнение: нет. + +### Задача 5: Добавить или переиспользовать проверку доступности внешнего proxy target + +Разрешенные файлы: +- `apps/windows-client/src-tauri/src/commands.rs` +- `apps/windows-client/src-tauri/src/main.rs` +- `apps/windows-client/src/api/tauriCommands.ts` +- `apps/windows-client/src/domain/types.ts` +- `apps/windows-client/src-tauri/tests/command_tests.rs` или отдельный focused test. + +Ожидаемый результат: +- Если существующих данных недостаточно для "все ли окей с подключением" во внешнем proxy mode, добавить typed command наподобие `ping_proxy_target`. +- Command делает TCP connect check к host/port с timeout, возвращает `{ ok, latency, error }`. +- UI отображает результат в VPN/Proxy panel и summary. +- Это не заменяет apply и не пишет source config. + +Проверка: +- `cd apps/windows-client/src-tauri && cargo test command` +- `cd apps/windows-client && npm run build` + +Приемочные доказательства: +- Test или manual state показывает успешный/ошибочный result shape. + +Параллельное выполнение: частично, если UI DTO names согласованы заранее; интеграция не parallel-safe. + +### Задача 6: Привести CSS, анимации и responsive behavior + +Разрешенные файлы: +- `apps/windows-client/src/styles/app.css` +- `apps/windows-client/src/app/App.tsx`, только className/ARIA adjustments. + +Ожидаемый результат: +- Tab bar, panel transitions, setup expand/collapse, ping badges, dirty/apply bar и responsive grids. +- Нет перекрытия текста, длинные paths/servers переносятся. +- Mobile layout: tabs не ломаются, server list минимум 2 колонки или 1 колонка на очень узком экране, command row складывается. +- `prefers-reduced-motion` отключает декоративные transitions. + +Проверка: +- `cd apps/windows-client && npm run build` +- Browser/Tauri visual check на desktop и узком viewport. + +Приемочные доказательства: +- Screenshots desktop + narrow viewport. + +Параллельное выполнение: нет, потому что зависит от финальной разметки. + +### Задача 7: Финальная проверка и evidence + +Разрешенные файлы: +- `docs/goals/windows-client-three-panel-ui/EVIDENCE.md` +- При необходимости `apps/windows-client/README.md`, если нужно зафиксировать новую навигацию. + +Ожидаемый результат: +- Evidence содержит commands, результаты build/tests, screenshots/state checks и список остаточных рисков. +- Если Tauri service actions не проверялись на реальной Windows elevated среде, это явно помечено как `implemented but unproven` только для service lane. + +Проверка: +- `git status --short` +- `cd apps/windows-client && npm run build` +- `cd apps/windows-client/src-tauri && cargo test`, если Rust command менялся. + +Приемочные доказательства: +- Summary read-only verified. +- ProxiFyre actions verified. +- VPN/Proxy route switch and ping states verified. +- No root web/server changes. + +Параллельное выполнение: нет. + +## Prompt для PRE review + +Использовать `C:\Users\PC\.agents\skills\krypton-planning\plan-reviewer-prompt.md` со следующими данными: + +Файл плана: +- `docs/goals/windows-client-three-panel-ui/PLAN.md` + +Исходный запрос: +- Разбить Windows client UI на три переключаемые панели: общая read-only сводка, настройки ProxiFyre, настройки VPN/proxy; подробно описать внешний вид, анимации и действия. + +Контракт результата: +- Пользователь сначала видит статус системы и примененный route/config без изменения данных, затем переходит в нужную панель для ProxiFyre или VPN/proxy действий. + +Архитектурный срез: +- Основной scope: `apps/windows-client/src/app/App.tsx` и `apps/windows-client/src/styles/app.css`; backend только для внешнего target ping, если текущих команд недостаточно. + +Требование к приемочным доказательствам: +- Build/tests плюс screenshots/state proof трех панелей и read-only summary. + +Известные non-goals: +- Не менять root `src/web`/`src/server`. +- Не переписывать Tauri backend без нужды. +- Не добавлять скрытую установку компонентов. +- Не делать summary редактируемой. + +Опасные пути или слои: +- Дублирование source of truth в React. +- Изменение generated config напрямую. +- Смешивание Local sing-box controls обратно в ProxiFyre panel. +- Потеря external proxy path как полноценного режима. diff --git a/docs/goals/windows-client-three-panel-ui/narrow-proxifyre-panel.png b/docs/goals/windows-client-three-panel-ui/narrow-proxifyre-panel.png new file mode 100644 index 0000000000000000000000000000000000000000..5087612c2384a6aacb38941237ceee815a75f86b GIT binary patch literal 43299 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 literal 0 HcmV?d00001 diff --git a/docs/goals/windows-client-three-panel-ui/summary-panel.png b/docs/goals/windows-client-three-panel-ui/summary-panel.png new file mode 100644 index 0000000000000000000000000000000000000000..983382669fafc5fdf276f7a329c307352017005f GIT binary patch literal 82626 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 jYZ_TWTTzj+`plpa62mn?9qX-c(bsuINDsa$M5 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 literal 0 HcmV?d00001 diff --git a/docs/goals/windows-client-three-panel-ui/vpn-proxy-external-panel.png b/docs/goals/windows-client-three-panel-ui/vpn-proxy-external-panel.png new file mode 100644 index 0000000000000000000000000000000000000000..c8085b04b46ef7dd3274b292b5e4efcd64612212 GIT binary patch literal 76059 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 literal 0 HcmV?d00001