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