Deploy: migrate k3s → Docker; search logic → master-agents-svc

- deploy/k3s удалён, deploy/docker добавлен (Caddyfile, docker-compose, searxng)
- chat-svc: agents/models/prompts удалены, использует llm-svc (LLMClient, EmbeddingClient)
- master-agents-svc: SearchOrchestrator, classifier, researcher, actions, widgets
- web-svc: ChatModelSelector, Optimization, Sources удалены; InputBarPlus; UnregisterSW
- geo-device-svc, localization-svc: Dockerfiles
- docs: 02-k3s-services-spec.md, RUNBOOK/TELEMETRY/WORKING удалены

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
home
2026-02-23 22:14:00 +03:00
parent cd6b7857ba
commit 328d968f3f
180 changed files with 3022 additions and 9798 deletions

View File

@@ -737,7 +737,7 @@ const Sidebar = ({ children }: { children: React.ReactNode }) => {
</div>
</div>
<div className="fixed bottom-0 w-full z-50 flex flex-row items-center gap-x-6 bg-light-secondary dark:bg-dark-secondary px-4 py-4 shadow-sm lg:hidden">
<div className="fixed bottom-0 w-full z-50 flex flex-row items-center justify-around gap-x-1 bg-light-secondary dark:bg-dark-secondary px-2 py-2 shadow-sm lg:hidden">
{topMainIds.map((id) => {
const link = linkMap[id];
if (!link) return null;
@@ -746,43 +746,43 @@ const Sidebar = ({ children }: { children: React.ReactNode }) => {
href={link.href}
key={id}
className={cn(
'relative flex flex-col items-center space-y-1 text-center w-full',
'relative flex flex-col items-center gap-0.5 text-center flex-1 min-w-0',
link.active
? 'text-black dark:text-white'
: 'text-black dark:text-white/70',
)}
>
{link.active && (
<div className="absolute top-0 -mt-4 h-1 w-full rounded-b-lg bg-black dark:bg-white" />
<div className="absolute top-0 -mt-2 h-0.5 w-full rounded-b bg-black dark:bg-white" />
)}
<link.icon />
<p className="text-xs text-fade min-w-0">{link.label}</p>
<link.icon size={18} />
<p className="text-[10px] leading-tight text-fade min-w-0 truncate">{link.label}</p>
</Link>
) : (
<span
key={id}
className="relative flex flex-col items-center space-y-1 text-center w-full text-black/50 dark:text-white/50 cursor-default"
className="relative flex flex-col items-center gap-0.5 text-center flex-1 min-w-0 text-black/50 dark:text-white/50 cursor-default"
>
<link.icon />
<p className="text-xs text-fade min-w-0">{link.label}</p>
<link.icon size={18} />
<p className="text-[10px] leading-tight text-fade min-w-0 truncate">{link.label}</p>
</span>
);
})}
<button
type="button"
onClick={() => setMoreOpen(true)}
className="relative flex flex-col items-center space-y-1 text-center shrink-0 text-black/70 dark:text-white/70"
className="relative flex flex-col items-center gap-0.5 text-center shrink-0 text-black/70 dark:text-white/70"
title={t('nav.more')}
aria-label={t('nav.more')}
>
<MoreHorizontal size={20} />
<p className="text-xs text-fade">{t('nav.more')}</p>
<MoreHorizontal size={18} />
<p className="text-[10px] leading-tight text-fade">{t('nav.more')}</p>
</button>
{showProfile && (
<Link
href={profileLink.href}
className={cn(
'relative flex flex-col items-center space-y-1 text-center shrink-0',
'relative flex flex-col items-center gap-0.5 text-center shrink-0',
profileLink.active
? 'text-black dark:text-white'
: 'text-black dark:text-white/70',
@@ -790,10 +790,10 @@ const Sidebar = ({ children }: { children: React.ReactNode }) => {
title={profileLink.label}
>
{profileLink.active && (
<div className="absolute top-0 -mt-4 h-1 w-full rounded-b-lg bg-black dark:bg-white" />
<div className="absolute top-0 -mt-2 h-0.5 w-full rounded-b bg-black dark:bg-white" />
)}
<profileLink.icon size={20} />
<p className="text-xs text-fade min-w-0">{profileLink.label}</p>
<profileLink.icon size={18} />
<p className="text-[10px] leading-tight text-fade min-w-0 truncate">{profileLink.label}</p>
</Link>
)}
</div>