feat(34-01): register chatFileRoutes + nexusSettingsRoutes in app.ts, add voiceEnabled to nexus-settings

- Add chatFileRoutes(db, storageService) after assistantHandoffRoutes (inside boardMutationGuard)
- Add nexusSettingsRoutes() after chatFileRoutes
- Extend nexusSettingsSchema with voiceEnabled: z.boolean().default(false)
- Update default return values in nexusSettingsService.get() to include voiceEnabled: false
- Add voiceEnabled?: boolean to NexusSettings client interface in hardware.ts
This commit is contained in:
Nexus Dev 2026-04-03 22:33:43 +00:00
parent af77ef6da8
commit 0d318a31d3
3 changed files with 8 additions and 2 deletions

View file

@ -30,6 +30,8 @@ import { assetRoutes } from "./routes/assets.js";
import { accessRoutes } from "./routes/access.js";
import { assistantMemoryRoutes } from "./routes/assistant-memory.js";
import { assistantHandoffRoutes } from "./routes/assistant-handoff.js";
import { chatFileRoutes } from "./routes/chat-files.js";
import { nexusSettingsRoutes } from "./routes/nexus-settings.js";
import { pluginRoutes } from "./routes/plugins.js";
import { pluginUiStaticRoutes } from "./routes/plugin-ui-static.js";
import { applyUiBranding } from "./ui-branding.js";
@ -159,6 +161,8 @@ export async function createApp(
api.use(instanceSettingsRoutes(db));
api.use(assistantMemoryRoutes());
api.use(assistantHandoffRoutes(db));
api.use(chatFileRoutes(db, opts.storageService));
api.use(nexusSettingsRoutes());
const hostServicesDisposers = new Map<string, () => void>();
const workerManager = createPluginWorkerManager();
const pluginRegistry = pluginRegistryService(db);

View file

@ -8,6 +8,7 @@ export type NexusMode = (typeof NEXUS_MODES)[number];
const nexusSettingsSchema = z.object({
mode: z.enum(NEXUS_MODES).default("both"),
voiceEnabled: z.boolean().default(false),
});
type NexusSettings = z.infer<typeof nexusSettingsSchema>;
@ -25,9 +26,9 @@ export function nexusSettingsService() {
if (parsed.success) {
return parsed.data;
}
return { mode: "both" };
return { mode: "both", voiceEnabled: false };
} catch {
return { mode: "both" };
return { mode: "both", voiceEnabled: false };
}
}

View file

@ -19,6 +19,7 @@ export type NexusMode = "personal_ai" | "project_builder" | "both";
export interface NexusSettings {
mode: NexusMode;
voiceEnabled?: boolean;
}
export function fetchHardwareInfo(): Promise<HardwareInfo> {