feat: FTPS, AppError, Site Manager, tests, multi-window, auto-clear, CI/CD, virtual scroll

- FTPS: реализован FtpsClient через suppaftp + async-native-tls
- AppError: кастомный enum с Serialize вместо Result<T, String>
- Site Manager UI: создание/редактирование/удаление сайтов
- Тесты: 53 тестов (domain, storage, transfer, fs, remote)
- Multi-window: новое окно + сохранение геометрии
- Auto-clear: воркер чистит завершённые задачи по таймеру
- CI/CD: 3-ступенчатый пайплайн (lint→build→test) с кэшированием
- Virtual scroll: fileTable с рендером только видимых строк
- UI: исправлены close-кнопки, color-scheme для select, скриншоты в README
This commit is contained in:
loki5512344 2026-07-11 00:04:13 +02:00
parent 545dd4ed0b
commit e188fbef36
Signed by: boba
GPG key ID: 253067914055423B
52 changed files with 5188 additions and 523 deletions

View file

@ -305,8 +305,8 @@
color: var(--text-primary);
}
.tab-close {
width: 16px;
height: 16px;
width: 22px;
height: 22px;
border-radius: 4px;
border: none;
background: transparent;
@ -314,13 +314,15 @@
display: flex;
align-items: center;
justify-content: center;
font-size: 12px;
font-size: 13px;
line-height: 1;
cursor: pointer;
opacity: 0.7;
}
.tab-close:hover {
background: rgba(255, 255, 255, 0.12);
color: var(--text-primary);
opacity: 1;
}
/* localPane.js/remotePane.js render straight into this element (there's no
@ -708,17 +710,17 @@ html[data-platform="linux"] ::-webkit-scrollbar {
}
.pane-split-btn,
.pane-close-btn {
width: 18px;
height: 18px;
width: 24px;
height: 24px;
border: none;
border-radius: 3px;
border-radius: 4px;
background: transparent;
color: var(--text-hint);
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
font-size: 10px;
font-size: 13px;
padding: 0;
}
.pane-split-btn:hover,