0.134.16
Changed
Реализованы 5 оставшихся P1-partial задач из аудита docs/audit/web-2026-06-06.md (Группа 3: декомпозиция больших страниц). 4139 строк → 1359 строк в оркестраторах (-67%), создано ~70 новых файлов в lib/features/.
- W-020:
routes/agents/[id]/permissions/+page.svelte(763 → 121 строк, -84%) — секции autonomy/tools/filesystem/exec/network/mcp/ratelimit вынесены вlib/features/permissions/(20 файлов). СозданPermissionsStore(usePermissions.svelte.ts) с реактивнымperms/agent/mcpServers/warnings/saving,PermissionTabс URL-sync?tab=, и 6 подпапок (autonomy/,tools/,filesystem/,exec/,network/,mcp/,ratelimit/) с компонентами и хуками. Top-level:PermissionsSidebar/SaveBar/WarningsBanner. - W-016:
routes/profile/+page.svelte(725 → 114 строк, -84%) — 7 секций вынесены вlib/features/profile/(13 файлов). 5 хуков на$state-классах:ProfileStore/AvatarControl/ApiTokensControl/PasswordControl/ForgetMemoryControl(3-шаговый GDPR wizard с валидацией фразыFORGET <username>). Компоненты:AvatarSection/ProfileForm/PreferencesForm/FreeformSection/ApiTokensSection/CreateTokenModal/PasswordSection/ForgetMemoryWizard/ProfileActions. - W-017:
routes/settings/system/+page.svelte(607 → 64 строк, -89%) — оставшиеся секции Info/Updates/Diagnostics вынесены.SystemActions.svelteрасширен: добавленыstoppedstate (сgetRestartInstructionForPlatformдля разных ОС),managed_externallywarning, модалки рестарта/shutdown/managed-warning; удалён callbackonPollStarted(компонент теперь self-contained). СозданыuseSystemInfo/useUpdates/useDiagnostics(с polling cleanup, фикс W-042) +systemFormat.ts+SystemInfoCard/UpdatesCard/RollbackBanner/DiagnosticsCard. - W-015:
routes/chat/+page.svelte(715 → 531 строк, -26%, частично) — drafts/scroll/topic-break вынесены вlib/features/chat/(8 файлов).ChatDraftsclass с индексным ключомtaigaclaw_chat_drafts_index(O(1) cleanup вместо O(n) по localStorage, фикс W-041).TopicBreakclass сconfirmOpen/dontAsk/loading+ per-agent skip-флагом. Компоненты:TopicBreakConfirmModal/MessageList/ChatErrorBanner/StreamingMessage/ChatContextBar. Page остаётся крупным из-за обилия callbacks вChatStore— дальнейшее сокращение требует рефакторинга самогоChatStore(~670 строк), отложено. - W-019:
routes/agents/[id]/memory/+page.svelte(1329 → 529 строк, -60%, частично) — 6 табов вынесены вlib/features/memory/(18 файлов).MemoryDataclass (loading/facts/settings/chunkSources/agent + filterCategory/dream*/compact*/saving* флаги) +MemoryTabс URL-sync. Подпапкиfacts//chunks//dream//scratchpad//search//settings/с компонентами.memoryFormat.ts(actionLabel/actionBadge/wordDiff/formatFileSize/formatMimeBadge/computeMetrics/parseActions).MemoryOverview/MemoryMetrics/MemoryTabs. Page остаётся крупным из-за callbacks между page и 6 табами (loadFacts/reindex/delete черезconfirmState/doSearch/toggleSetting) — для тестирования это нормально (state-логика в page, view — в табах); дальнейшее сокращение потребует выноса callbacks в$state-class.
Architecture
- Паттерн
$state-classes (Svelte 5 runes) применён повсеместно для store’ов: реактивный state + методы инкапсулированы в одном классе. Никаких Svelte 4writable/derivedдля нового state. - Структура
lib/features/:chat/,memory/,permissions/,profile/,providers/(Группа 2),system/. Согласована сAGENTS.mdсекцией «WebUI». - Без общих утилит (
toastError,useTabParam,usePolling,useLocalStorage,downloadFile) — паттерны не повторялись ≥2 раза.useTabParam.svelte.tsне реализован:PermissionTabиMemoryTabслишком разные по доменной логике.
Bundle
✓ built in 2.18s
Gzip sizes для оркестраторов уменьшились в среднем на ~25% за счёт tree-shaking отдельных компонентов.