From da952135cabba2926698298797cd301e7adaf48c Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Thu, 12 Feb 2026 11:26:19 -0600 Subject: chore(app): refactor for better solidjs hygiene (#13344) --- .../src/components/session/session-context-tab.tsx | 53 ++++++++++------------ .../app/src/components/session/session-header.tsx | 38 ++++++++-------- 2 files changed, 44 insertions(+), 47 deletions(-) (limited to 'packages/app/src/components/session') diff --git a/packages/app/src/components/session/session-context-tab.tsx b/packages/app/src/components/session/session-context-tab.tsx index eb5b4197d..81220b3ad 100644 --- a/packages/app/src/components/session/session-context-tab.tsx +++ b/packages/app/src/components/session/session-context-tab.tsx @@ -168,34 +168,27 @@ export function SessionContextTab(props: SessionContextTabProps) { return language.t("context.breakdown.other") } - const stats = createMemo(() => { - const c = ctx() - const count = counts() - return [ - { label: language.t("context.stats.session"), value: props.info()?.title ?? params.id ?? "—" }, - { label: language.t("context.stats.messages"), value: count.all.toLocaleString(language.locale()) }, - { label: language.t("context.stats.provider"), value: providerLabel() }, - { label: language.t("context.stats.model"), value: modelLabel() }, - { label: language.t("context.stats.limit"), value: formatter().number(c?.limit) }, - { label: language.t("context.stats.totalTokens"), value: formatter().number(c?.total) }, - { label: language.t("context.stats.usage"), value: formatter().percent(c?.usage) }, - { label: language.t("context.stats.inputTokens"), value: formatter().number(c?.input) }, - { label: language.t("context.stats.outputTokens"), value: formatter().number(c?.output) }, - { label: language.t("context.stats.reasoningTokens"), value: formatter().number(c?.reasoning) }, - { - label: language.t("context.stats.cacheTokens"), - value: `${formatter().number(c?.cacheRead)} / ${formatter().number(c?.cacheWrite)}`, - }, - { label: language.t("context.stats.userMessages"), value: count.user.toLocaleString(language.locale()) }, - { - label: language.t("context.stats.assistantMessages"), - value: count.assistant.toLocaleString(language.locale()), - }, - { label: language.t("context.stats.totalCost"), value: cost() }, - { label: language.t("context.stats.sessionCreated"), value: formatter().time(props.info()?.time.created) }, - { label: language.t("context.stats.lastActivity"), value: formatter().time(c?.message.time.created) }, - ] satisfies { label: string; value: JSX.Element }[] - }) + const stats = [ + { label: "context.stats.session", value: () => props.info()?.title ?? params.id ?? "—" }, + { label: "context.stats.messages", value: () => counts().all.toLocaleString(language.locale()) }, + { label: "context.stats.provider", value: providerLabel }, + { label: "context.stats.model", value: modelLabel }, + { label: "context.stats.limit", value: () => formatter().number(ctx()?.limit) }, + { label: "context.stats.totalTokens", value: () => formatter().number(ctx()?.total) }, + { label: "context.stats.usage", value: () => formatter().percent(ctx()?.usage) }, + { label: "context.stats.inputTokens", value: () => formatter().number(ctx()?.input) }, + { label: "context.stats.outputTokens", value: () => formatter().number(ctx()?.output) }, + { label: "context.stats.reasoningTokens", value: () => formatter().number(ctx()?.reasoning) }, + { + label: "context.stats.cacheTokens", + value: () => `${formatter().number(ctx()?.cacheRead)} / ${formatter().number(ctx()?.cacheWrite)}`, + }, + { label: "context.stats.userMessages", value: () => counts().user.toLocaleString(language.locale()) }, + { label: "context.stats.assistantMessages", value: () => counts().assistant.toLocaleString(language.locale()) }, + { label: "context.stats.totalCost", value: cost }, + { label: "context.stats.sessionCreated", value: () => formatter().time(props.info()?.time.created) }, + { label: "context.stats.lastActivity", value: () => formatter().time(ctx()?.message.time.created) }, + ] satisfies { label: string; value: () => JSX.Element }[] let scroll: HTMLDivElement | undefined let frame: number | undefined @@ -257,7 +250,9 @@ export function SessionContextTab(props: SessionContextTabProps) { >
- {(stat) => } + + {(stat) => [0])} value={stat.value()} />} +
0}> diff --git a/packages/app/src/components/session/session-header.tsx b/packages/app/src/components/session/session-header.tsx index c1468ce37..274398ee0 100644 --- a/packages/app/src/components/session/session-header.tsx +++ b/packages/app/src/components/session/session-header.tsx @@ -1,4 +1,4 @@ -import { createEffect, createMemo, onCleanup, Show } from "solid-js" +import { createEffect, createMemo, For, onCleanup, Show } from "solid-js" import { createStore } from "solid-js/store" import { Portal } from "solid-js/web" import { useParams } from "@solidjs/router" @@ -404,23 +404,25 @@ export function SessionHeader() { setPrefs("app", value as OpenApp) }} > - {options().map((o) => ( - { - setMenu("open", false) - openDir(o.id) - }} - > -
- -
- {o.label} - - - -
- ))} + + {(o) => ( + { + setMenu("open", false) + openDir(o.id) + }} + > +
+ +
+ {o.label} + + + +
+ )} +
-- cgit v1.2.3