|
@@ -92,7 +92,6 @@ const context = createContext<{
|
|
|
conceal: () => boolean
|
|
conceal: () => boolean
|
|
|
showThinking: () => boolean
|
|
showThinking: () => boolean
|
|
|
showTimestamps: () => boolean
|
|
showTimestamps: () => boolean
|
|
|
- usernameVisible: () => boolean
|
|
|
|
|
showDetails: () => boolean
|
|
showDetails: () => boolean
|
|
|
diffWrapMode: () => "word" | "none"
|
|
diffWrapMode: () => "word" | "none"
|
|
|
sync: ReturnType<typeof useSync>
|
|
sync: ReturnType<typeof useSync>
|
|
@@ -141,7 +140,6 @@ export function Session() {
|
|
|
const [conceal, setConceal] = createSignal(true)
|
|
const [conceal, setConceal] = createSignal(true)
|
|
|
const [showThinking, setShowThinking] = createSignal(kv.get("thinking_visibility", true))
|
|
const [showThinking, setShowThinking] = createSignal(kv.get("thinking_visibility", true))
|
|
|
const [showTimestamps, setShowTimestamps] = createSignal(kv.get("timestamps", "hide") === "show")
|
|
const [showTimestamps, setShowTimestamps] = createSignal(kv.get("timestamps", "hide") === "show")
|
|
|
- const [usernameVisible, setUsernameVisible] = createSignal(kv.get("username_visible", true))
|
|
|
|
|
const [showDetails, setShowDetails] = createSignal(kv.get("tool_details_visibility", true))
|
|
const [showDetails, setShowDetails] = createSignal(kv.get("tool_details_visibility", true))
|
|
|
const [showAssistantMetadata, setShowAssistantMetadata] = createSignal(kv.get("assistant_metadata_visibility", true))
|
|
const [showAssistantMetadata, setShowAssistantMetadata] = createSignal(kv.get("assistant_metadata_visibility", true))
|
|
|
const [showScrollbar, setShowScrollbar] = createSignal(kv.get("scrollbar_visible", false))
|
|
const [showScrollbar, setShowScrollbar] = createSignal(kv.get("scrollbar_visible", false))
|
|
@@ -465,20 +463,6 @@ export function Session() {
|
|
|
dialog.clear()
|
|
dialog.clear()
|
|
|
},
|
|
},
|
|
|
},
|
|
},
|
|
|
- {
|
|
|
|
|
- title: usernameVisible() ? "Hide username" : "Show username",
|
|
|
|
|
- value: "session.username_visible.toggle",
|
|
|
|
|
- keybind: "username_toggle",
|
|
|
|
|
- category: "Session",
|
|
|
|
|
- onSelect: (dialog) => {
|
|
|
|
|
- setUsernameVisible((prev) => {
|
|
|
|
|
- const next = !prev
|
|
|
|
|
- kv.set("username_visible", next)
|
|
|
|
|
- return next
|
|
|
|
|
- })
|
|
|
|
|
- dialog.clear()
|
|
|
|
|
- },
|
|
|
|
|
- },
|
|
|
|
|
{
|
|
{
|
|
|
title: "Toggle code concealment",
|
|
title: "Toggle code concealment",
|
|
|
value: "session.toggle.conceal",
|
|
value: "session.toggle.conceal",
|
|
@@ -913,7 +897,6 @@ export function Session() {
|
|
|
conceal,
|
|
conceal,
|
|
|
showThinking,
|
|
showThinking,
|
|
|
showTimestamps,
|
|
showTimestamps,
|
|
|
- usernameVisible,
|
|
|
|
|
showDetails,
|
|
showDetails,
|
|
|
diffWrapMode,
|
|
diffWrapMode,
|
|
|
sync,
|
|
sync,
|
|
@@ -1103,6 +1086,7 @@ function UserMessage(props: {
|
|
|
const [hover, setHover] = createSignal(false)
|
|
const [hover, setHover] = createSignal(false)
|
|
|
const queued = createMemo(() => props.pending && props.message.id > props.pending)
|
|
const queued = createMemo(() => props.pending && props.message.id > props.pending)
|
|
|
const color = createMemo(() => (queued() ? theme.accent : local.agent.color(props.message.agent)))
|
|
const color = createMemo(() => (queued() ? theme.accent : local.agent.color(props.message.agent)))
|
|
|
|
|
+ const metadataVisible = createMemo(() => queued() || ctx.showTimestamps())
|
|
|
|
|
|
|
|
const compaction = createMemo(() => props.parts.find((x) => x.type === "compaction"))
|
|
const compaction = createMemo(() => props.parts.find((x) => x.type === "compaction"))
|
|
|
|
|
|
|
@@ -1132,7 +1116,7 @@ function UserMessage(props: {
|
|
|
>
|
|
>
|
|
|
<text fg={theme.text}>{text()?.text}</text>
|
|
<text fg={theme.text}>{text()?.text}</text>
|
|
|
<Show when={files().length}>
|
|
<Show when={files().length}>
|
|
|
- <box flexDirection="row" paddingBottom={1} paddingTop={1} gap={1} flexWrap="wrap">
|
|
|
|
|
|
|
+ <box flexDirection="row" paddingBottom={metadataVisible() ? 1 : 0} paddingTop={1} gap={1} flexWrap="wrap">
|
|
|
<For each={files()}>
|
|
<For each={files()}>
|
|
|
{(file) => {
|
|
{(file) => {
|
|
|
const bg = createMemo(() => {
|
|
const bg = createMemo(() => {
|
|
@@ -1150,23 +1134,22 @@ function UserMessage(props: {
|
|
|
</For>
|
|
</For>
|
|
|
</box>
|
|
</box>
|
|
|
</Show>
|
|
</Show>
|
|
|
- <text fg={theme.textMuted}>
|
|
|
|
|
- {ctx.usernameVisible() ? `${sync.data.config.username ?? "You "}` : "You "}
|
|
|
|
|
- <Show
|
|
|
|
|
- when={queued()}
|
|
|
|
|
- fallback={
|
|
|
|
|
- <Show when={ctx.showTimestamps()}>
|
|
|
|
|
|
|
+ <Show
|
|
|
|
|
+ when={queued()}
|
|
|
|
|
+ fallback={
|
|
|
|
|
+ <Show when={ctx.showTimestamps()}>
|
|
|
|
|
+ <text fg={theme.textMuted}>
|
|
|
<span style={{ fg: theme.textMuted }}>
|
|
<span style={{ fg: theme.textMuted }}>
|
|
|
- {ctx.usernameVisible() ? " · " : " "}
|
|
|
|
|
{Locale.todayTimeOrDateTime(props.message.time.created)}
|
|
{Locale.todayTimeOrDateTime(props.message.time.created)}
|
|
|
</span>
|
|
</span>
|
|
|
- </Show>
|
|
|
|
|
- }
|
|
|
|
|
- >
|
|
|
|
|
- <span> </span>
|
|
|
|
|
|
|
+ </text>
|
|
|
|
|
+ </Show>
|
|
|
|
|
+ }
|
|
|
|
|
+ >
|
|
|
|
|
+ <text fg={theme.textMuted}>
|
|
|
<span style={{ bg: theme.accent, fg: theme.backgroundPanel, bold: true }}> QUEUED </span>
|
|
<span style={{ bg: theme.accent, fg: theme.backgroundPanel, bold: true }}> QUEUED </span>
|
|
|
- </Show>
|
|
|
|
|
- </text>
|
|
|
|
|
|
|
+ </text>
|
|
|
|
|
+ </Show>
|
|
|
</box>
|
|
</box>
|
|
|
</box>
|
|
</box>
|
|
|
</Show>
|
|
</Show>
|