feat: Complete AI Chat Agent, Admin Settings (MCP/AI), and Translations
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-12-15 21:52:36 +01:00
parent 71d5c825c5
commit 9736864425
24 changed files with 1679 additions and 401 deletions
@@ -48,7 +48,7 @@ export function McpSettingsCard() {
const copyToClipboard = (text: string) => {
navigator.clipboard.writeText(text);
toast({ title: "Copied!" });
toast({ title: t('settings.mcp.copied', "Copied!") });
}
const { data: settings, isLoading } = useQuery<any>({
@@ -97,19 +97,19 @@ export function McpSettingsCard() {
<CardHeader>
<div className="flex items-center gap-2">
<Server className="h-5 w-5 text-primary" />
<CardTitle>MCP Server Configuration</CardTitle>
<CardTitle>{t('settings.mcp.title')}</CardTitle>
</div>
<CardDescription>
Configure the Model Context Protocol (MCP) server settings.
The MCP server runs on the same port as the application (/api/mcp).
{t('settings.mcp.description')}
<span className="block mt-1 text-xs">{t('settings.mcp.descriptionDetail', "The MCP server runs on the same port as the application (/api/mcp).")}</span>
</CardDescription>
</CardHeader>
<CardContent className="space-y-4">
<div className="flex items-center justify-between">
<Label htmlFor="mcp_enabled" className="flex flex-col gap-1">
<span>Enable MCP Server</span>
<span>{t('settings.mcp.enableLabel')}</span>
<span className="font-normal text-xs text-muted-foreground">
Allow external AI tools to connect via MCP protocol.
{t('settings.mcp.enableDesc')}
</span>
</Label>
<Switch
@@ -169,7 +169,7 @@ export function McpSettingsCard() {
</div>
<div className="grid gap-2">
<Label htmlFor="mcp_port">Port (Informational)</Label>
<Label htmlFor="mcp_port">{t('settings.mcp.portLabel')}</Label>
<Input
id="mcp_port"
value={formData.mcp_port}
@@ -179,7 +179,7 @@ export function McpSettingsCard() {
className="bg-muted"
/>
<p className="text-xs text-muted-foreground">
Currently runs on the main application port. Separate port configuration coming soon.
{t('settings.mcp.portDesc')}
</p>
</div>