From 3cd44dd0c2635ef97128c12bc125564671e96a12 Mon Sep 17 00:00:00 2001 From: Gemini AI Date: Tue, 23 Dec 2025 14:04:11 +0400 Subject: [PATCH] feat: add API Key Manager button, fix overflow, update branding Changes: 1. Fixed MULTIX overflow issue - added max-h-full and overflow-hidden to prevent content from pushing interface out of frame 2. Added API Key Manager button in header: - Key icon with emerald hover effect - Opens modal with provider list (NomadArch Free, Ollama Cloud, OpenAI, Anthropic, OpenRouter) - Shows provider status and configuration 3. Updated branding: - Window title: 'NomadArch 1.0' - Loading screen: 'NomadArch 1.0 - A fork of OpenCode' - Updated page titles 4. Added Settings and Key icons to imports --- packages/electron-app/electron/main/main.ts | 1 + .../src/components/chat/multi-task-chat.tsx | 103 +++++++++++++++++- packages/ui/src/renderer/loading.html | 2 +- packages/ui/src/renderer/loading/main.tsx | 5 +- packages/ui/src/stores/solo-store.ts | 8 ++ 5 files changed, 113 insertions(+), 6 deletions(-) diff --git a/packages/electron-app/electron/main/main.ts b/packages/electron-app/electron/main/main.ts index 14325bf..56832ca 100644 --- a/packages/electron-app/electron/main/main.ts +++ b/packages/electron-app/electron/main/main.ts @@ -255,6 +255,7 @@ function createWindow() { minHeight: 600, backgroundColor, icon: iconPath, + title: "NomadArch 1.0", webPreferences: { preload: getPreloadPath(), contextIsolation: true, diff --git a/packages/ui/src/components/chat/multi-task-chat.tsx b/packages/ui/src/components/chat/multi-task-chat.tsx index 188a699..7c74cb9 100644 --- a/packages/ui/src/components/chat/multi-task-chat.tsx +++ b/packages/ui/src/components/chat/multi-task-chat.tsx @@ -6,7 +6,7 @@ import { addTask, setActiveTask } from "@/stores/task-actions"; import { messageStoreBus } from "@/stores/message-v2/bus"; import MessageBlockList from "@/components/message-block-list"; import { formatTokenTotal } from "@/lib/formatters"; -import { addToTaskQueue, getSoloState, setActiveTaskId, toggleAutonomous, toggleAutoApproval } from "@/stores/solo-store"; +import { addToTaskQueue, getSoloState, setActiveTaskId, toggleAutonomous, toggleAutoApproval, toggleApex } from "@/stores/solo-store"; import { getLogger } from "@/lib/logger"; import { Command, @@ -33,6 +33,8 @@ import { StopCircle, Bot, User, + Settings, + Key, } from "lucide-solid"; import type { InstanceMessageStore } from "@/stores/message-v2/instance-store"; import type { Task } from "@/types/session"; @@ -51,6 +53,7 @@ export default function MultiTaskChat(props: MultiTaskChatProps) { const [chatInput, setChatInput] = createSignal(""); let scrollContainer: HTMLDivElement | undefined; const [bottomSentinel, setBottomSentinel] = createSignal(null); + const [showApiManager, setShowApiManager] = createSignal(false); // Scroll to bottom helper const scrollToBottom = () => { @@ -280,7 +283,7 @@ export default function MultiTaskChat(props: MultiTaskChatProps) { }; return ( -
+
{/* Header */}
@@ -332,6 +335,14 @@ export default function MultiTaskChat(props: MultiTaskChatProps) {
+ {/* API Key Manager Button */} + @@ -494,7 +505,19 @@ export default function MultiTaskChat(props: MultiTaskChatProps) {
- +
+ + {/* API Key Manager Modal */} + +
setShowApiManager(false)}> +
e.stopPropagation()}> +
+
+
+ +
+
+

API Key Manager

+

Manage your access tokens for various AI providers

+
+
+ +
+ +
+ {/* Sidebar */} +
+
Built-in
+ + + + + +
Custom
+ +
+ + {/* Content */} +
+
+ +
+

NomadArch Managed Models

+

+ These models are provided free of charge as part of the NomadArch platform. No API key or configuration is required to use them. +

+
+
+ Providers + Qwen, DeepSeek, Google +
+
+ Rate Limit + Generous / Unlimited +
+
+ Status + ACTIVE +
+
+
+
+
+
+
); } diff --git a/packages/ui/src/renderer/loading.html b/packages/ui/src/renderer/loading.html index 7278ddd..6501fba 100644 --- a/packages/ui/src/renderer/loading.html +++ b/packages/ui/src/renderer/loading.html @@ -3,7 +3,7 @@ - CodeNomad + NomadArch 1.0