From 4cc0ff2bed27455422204d6300b741a949151cd8 Mon Sep 17 00:00:00 2001 From: Chris Wanstrath Date: Thu, 19 Mar 2026 11:29:17 -0700 Subject: [PATCH] Inline PerfState interface and move subscriptions before routes The PerfState interface was only used twice, so inline it. Move onChange/onHostLog subscriptions above the route definitions to keep side-effects grouped. Skip perf.now() in proxy when timing is off. --- src/cli/commands/perf.ts | 10 +++------- src/server/api/system.ts | 12 ++++++------ src/server/proxy.ts | 2 +- 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/cli/commands/perf.ts b/src/cli/commands/perf.ts index 581158b..ae6d99a 100644 --- a/src/cli/commands/perf.ts +++ b/src/cli/commands/perf.ts @@ -1,20 +1,16 @@ import color from 'ansis' import { get, handleError, post } from '../http' -interface PerfState { - perfTiming: boolean -} - export async function perfToggle(onOff?: string) { try { if (onOff && !['on', 'off', 'status'].includes(onOff)) { console.error('Usage: toes perf [on|off|status]') process.exit(1) } - const body = onOff === 'on' ? { on: true } : onOff === 'off' ? { on: false } : undefined const res = onOff === 'status' - ? await get('/api/system/perf') - : await post('/api/system/perf', body ?? {}) + ? await get<{ perfTiming: boolean }>('/api/system/perf') + : await post<{ perfTiming: boolean }>('/api/system/perf', + onOff === 'on' ? { on: true } : onOff === 'off' ? { on: false } : {}) if (res) { const label = res.perfTiming ? color.green('on') : color.red('off') console.log(`Perf timing ${onOff === 'status' ? 'is ' : ''}${label}`) diff --git a/src/server/api/system.ts b/src/server/api/system.ts index ba0844e..32b4a8f 100644 --- a/src/server/api/system.ts +++ b/src/server/api/system.ts @@ -278,6 +278,12 @@ function pushHostLog(text: string) { for (const listener of unifiedLogListeners) listener(line) } +// Subscribe to app changes to collect logs +onChange(collectLogs) + +// Subscribe to host-level log messages +onHostLog(pushHostLog) + // Perf timing toggle router.get('/perf', c => c.json({ perfTiming: perf.timing })) router.post('/perf', async c => { @@ -288,12 +294,6 @@ router.post('/perf', async c => { return c.json({ perfTiming: on }) }) -// Subscribe to app changes to collect logs -onChange(collectLogs) - -// Subscribe to host-level log messages -onHostLog(pushHostLog) - // Restart server (systemd brings it back) router.post('/restart', c => { setTimeout(() => process.exit(0), 100) diff --git a/src/server/proxy.ts b/src/server/proxy.ts index 1c373a7..09d292e 100644 --- a/src/server/proxy.ts +++ b/src/server/proxy.ts @@ -55,7 +55,7 @@ export async function proxySubdomain(subdomain: string, req: Request): Promise