diff --git a/.claude/settings.local.json b/.claude/settings.local.json
index 01d678e8..615c0003 100644
--- a/.claude/settings.local.json
+++ b/.claude/settings.local.json
@@ -161,7 +161,8 @@
"Bash(curl -s http://localhost:8916/users/)",
"Bash(pkill -9 -f \"uvicorn.*backend.main\" sleep 2 /data/programare_AI/tfm_ainventory/venv/bin/python3 -m uvicorn backend.main:app --host 0.0.0.0 --port 8916)",
"Bash(curl -s http://localhost:8916/users/auth-mode)",
- "Bash(pkill -9 -f \"next-server|node.*next\" sleep 2 python3 scripts/run_standalone.py restart)"
+ "Bash(pkill -9 -f \"next-server|node.*next\" sleep 2 python3 scripts/run_standalone.py restart)",
+ "WebSearch"
]
}
}
diff --git a/frontend/app/page.tsx b/frontend/app/page.tsx
index a3cfd001..2a3944f5 100644
--- a/frontend/app/page.tsx
+++ b/frontend/app/page.tsx
@@ -271,7 +271,7 @@ export default function Home() {
TFM aInventory
-
Industrial Asset Management
+
IT/DC Asset Management
@@ -397,7 +397,7 @@ export default function Home() {
)}
- Powered by TFM Group Software
+ Powered by TFM Group Software S.R.L.
v{versionData.version} • {versionData.last_build} • BUILD: {versionData.commit}
diff --git a/frontend/components/admin/AiManager.tsx b/frontend/components/admin/AiManager.tsx
index 8677dfe5..cb2f27d4 100644
--- a/frontend/components/admin/AiManager.tsx
+++ b/frontend/components/admin/AiManager.tsx
@@ -1,6 +1,8 @@
import React from 'react';
-import { Brain, Cpu, Zap, Lock, RotateCcw, Wifi, FileText, Shield } from 'lucide-react';
+import { Brain, Lock, RotateCcw, Wifi, FileText, Shield } from 'lucide-react';
import { cn } from '@/lib/utils';
+import { GeminiLogo } from '@/components/icons/GeminiLogo';
+import { ClaudeLogo } from '@/components/icons/ClaudeLogo';
interface AiManagerProps {
aiConfig: any;
@@ -49,7 +51,7 @@ export default function AiManager({
data-testid="provider-option"
onClick={() => handleUpdateAiProvider(p.id)}
className={cn(
- "p-4 lg:p-5 xl:p-6 lg:p-8 xl:p-10 border transition-all text-left flex items-center justify-between group",
+ "p-4 lg:p-4 xl:p-5 lg:p-4 xl:p-5 border transition-all text-left flex items-center justify-between group",
p.active
? "bg-primary border-primary"
: "level-0 border-border hover:border-primary/40"
@@ -60,23 +62,23 @@ export default function AiManager({
"w-8 h-8 flex items-center justify-center transition-colors",
p.active ? "bg-surface-container-lowest/20 text-black" : "bg-primary/10 text-primary group-hover:bg-primary/20"
)}>
- {p.id === 'gemini' ? : }
+ {p.id === 'gemini' ? : }
-
{p.name}
+
{p.name}
- {p.configured ? "● Key Configured" : "○ Missing Api Key"}
+ {p.configured ? "✓ Key Configured" : "✗ Missing Api Key"}
{p.active && (
-
- Active
+
+ Active
)}
@@ -110,13 +112,13 @@ export default function AiManager({
value={aiKeys.gemini}
onChange={(e) => setAiKeys({...aiKeys, gemini: e.target.value})}
placeholder={aiConfig?.providers?.find((p: any) => p.id === 'gemini')?.masked_key || "Enter Gemini Key..."}
- className="input-field flex-1 text-xs"
+ className="input-field flex-1 text-sm"
/>
onTestAiKey('gemini')}
disabled={isTestingKeys.gemini}
className={cn(
- "px-3 py-1.5 text-xs font-normal tracking-tight transition-all border flex items-center gap-1.5",
+ "px-3 py-1.5 text-sm font-normal tracking-tight transition-all border flex items-center gap-1.5",
isTestingKeys.gemini
? "bg-surface-bright border-border text-muted cursor-wait"
: "btn-primary"
@@ -136,13 +138,13 @@ export default function AiManager({
value={aiKeys.claude}
onChange={(e) => setAiKeys({...aiKeys, claude: e.target.value})}
placeholder={aiConfig?.providers?.find((p: any) => p.id === 'claude')?.masked_key || "Enter Claude Key..."}
- className="input-field flex-1 text-xs"
+ className="input-field flex-1 text-sm"
/>
onTestAiKey('claude')}
disabled={isTestingKeys.claude}
className={cn(
- "px-3 py-1.5 text-xs font-normal tracking-tight transition-all border flex items-center gap-1.5",
+ "px-3 py-1.5 text-sm font-normal tracking-tight transition-all border flex items-center gap-1.5",
isTestingKeys.claude
? "bg-surface-bright border-border text-muted cursor-wait"
: "btn-primary"
@@ -172,12 +174,12 @@ export default function AiManager({
-
+
This prompt instructs the Vision AI core on label interpretation. Ensure it defines explicit mapping for technical attributes like Item , Type , and Part Number to avoid extraction null-pointers and ensure inventory data integrity.
diff --git a/frontend/components/admin/LdapManager.tsx b/frontend/components/admin/LdapManager.tsx
index a9bb98a8..b0e218ae 100644
--- a/frontend/components/admin/LdapManager.tsx
+++ b/frontend/components/admin/LdapManager.tsx
@@ -113,7 +113,7 @@ export default function LdapManager({
diff --git a/frontend/components/icons/ClaudeLogo.tsx b/frontend/components/icons/ClaudeLogo.tsx
new file mode 100644
index 00000000..1c82bcc4
--- /dev/null
+++ b/frontend/components/icons/ClaudeLogo.tsx
@@ -0,0 +1,23 @@
+import React from 'react';
+
+interface ClaudeLogoProps {
+ size?: number;
+ className?: string;
+}
+
+export function ClaudeLogo({ size = 16, className = '' }: ClaudeLogoProps) {
+ return (
+
+ Claude
+
+
+ );
+}
diff --git a/frontend/components/icons/GeminiLogo.tsx b/frontend/components/icons/GeminiLogo.tsx
new file mode 100644
index 00000000..6f0af381
--- /dev/null
+++ b/frontend/components/icons/GeminiLogo.tsx
@@ -0,0 +1,23 @@
+import React from 'react';
+
+interface GeminiLogoProps {
+ size?: number;
+ className?: string;
+}
+
+export function GeminiLogo({ size = 16, className = '' }: GeminiLogoProps) {
+ return (
+
+ Gemini
+
+
+ );
+}