summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-10-28 06:20:43 -0500
committerAdam <[email protected]>2025-10-28 15:29:15 -0500
commit1da24f6adb7fce37af79678dd053090831fda2f2 (patch)
treea0e23d30d4a4f9534ea9af0413b0b3055b2fb311
parente29dd27632da70d6e716fbca8a909b8361e8187f (diff)
downloadopencode-1da24f6adb7fce37af79678dd053090831fda2f2.tar.gz
opencode-1da24f6adb7fce37af79678dd053090831fda2f2.zip
wip: desktop work
-rw-r--r--packages/desktop/index.html2
-rw-r--r--packages/desktop/src/components/assistant-message.tsx14
-rw-r--r--packages/desktop/src/components/prompt-input.tsx2
-rw-r--r--packages/desktop/src/pages/index.tsx6
-rw-r--r--packages/desktop/src/utils/path.ts6
5 files changed, 17 insertions, 13 deletions
diff --git a/packages/desktop/index.html b/packages/desktop/index.html
index c591cb46c..9209acfc7 100644
--- a/packages/desktop/index.html
+++ b/packages/desktop/index.html
@@ -7,7 +7,7 @@
<link rel="shortcut icon" type="image/ico" href="/src/assets/favicon.svg" />
<title>OpenCode</title>
</head>
- <body class="overscroll-none select-none text-12-regular">
+ <body class="antialiased overscroll-none select-none text-12-regular">
<!-- <script> -->
<!-- ;(function () { -->
<!-- const savedTheme = localStorage.getItem("theme") || "opencode" -->
diff --git a/packages/desktop/src/components/assistant-message.tsx b/packages/desktop/src/components/assistant-message.tsx
index 38c06bbe5..7b4cfc71d 100644
--- a/packages/desktop/src/components/assistant-message.tsx
+++ b/packages/desktop/src/components/assistant-message.tsx
@@ -1,11 +1,11 @@
import type { Part, AssistantMessage, ReasoningPart, TextPart, ToolPart } from "@opencode-ai/sdk"
-import type { Tool } from "opencode/tool/tool"
-import type { ReadTool } from "opencode/tool/read"
import { children, Component, createMemo, For, Match, Show, Switch, type JSX } from "solid-js"
import { Dynamic } from "solid-js/web"
import { Markdown } from "./markdown"
import { Collapsible, Icon, IconProps } from "@opencode-ai/ui"
import { getDirectory, getFilename } from "@/utils"
+import type { Tool } from "opencode/tool/tool"
+import type { ReadTool } from "opencode/tool/read"
import type { ListTool } from "opencode/tool/ls"
import type { GlobTool } from "opencode/tool/glob"
import type { GrepTool } from "opencode/tool/grep"
@@ -188,7 +188,7 @@ ToolRegistry.register<typeof ListTool>({
name: "list",
render(props) {
return (
- <BasicTool icon="bullet-list" trigger={{ title: props.tool, subtitle: props.input.path || "/" }}>
+ <BasicTool icon="bullet-list" trigger={{ title: props.tool, subtitle: getDirectory(props.input.path || "/") }}>
<Show when={false && props.output}>
<div class="whitespace-pre">{props.output}</div>
</Show>
@@ -205,7 +205,7 @@ ToolRegistry.register<typeof GlobTool>({
icon="magnifying-glass-menu"
trigger={{
title: props.tool,
- subtitle: props.input.path || "/",
+ subtitle: getDirectory(props.input.path || "/"),
args: props.input.pattern ? ["pattern=" + props.input.pattern] : [],
}}
>
@@ -228,7 +228,7 @@ ToolRegistry.register<typeof GrepTool>({
icon="magnifying-glass-menu"
trigger={{
title: props.tool,
- subtitle: props.input.path || "/",
+ subtitle: getDirectory(props.input.path || "/"),
args,
}}
>
@@ -315,7 +315,7 @@ ToolRegistry.register<typeof EditTool>({
<div class="text-12-medium text-text-base capitalize">Edit</div>
<div class="flex">
<Show when={props.input.filePath?.includes("/")}>
- <span class="text-text-weak">{getDirectory(props.input.filePath!)}/</span>
+ <span class="text-text-weak">{getDirectory(props.input.filePath!)}</span>
</Show>
<span class="text-text-strong">{getFilename(props.input.filePath ?? "")}</span>
</div>
@@ -344,7 +344,7 @@ ToolRegistry.register<typeof WriteTool>({
<div class="text-12-medium text-text-base capitalize">Write</div>
<div class="flex">
<Show when={props.input.filePath?.includes("/")}>
- <span class="text-text-weak">{getDirectory(props.input.filePath!)}/</span>
+ <span class="text-text-weak">{getDirectory(props.input.filePath!)}</span>
</Show>
<span class="text-text-strong">{getFilename(props.input.filePath ?? "")}</span>
</div>
diff --git a/packages/desktop/src/components/prompt-input.tsx b/packages/desktop/src/components/prompt-input.tsx
index 3838d19ba..dd549a045 100644
--- a/packages/desktop/src/components/prompt-input.tsx
+++ b/packages/desktop/src/components/prompt-input.tsx
@@ -289,7 +289,7 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
<FileIcon node={{ path: i, type: "file" }} class="shrink-0 size-4" />
<div class="flex items-center text-14-regular">
<span class="text-text-weak whitespace-nowrap overflow-hidden overflow-ellipsis truncate min-w-0">
- {getDirectory(i)}/
+ {getDirectory(i)}
</span>
<span class="text-text-strong whitespace-nowrap">{getFilename(i)}</span>
</div>
diff --git a/packages/desktop/src/pages/index.tsx b/packages/desktop/src/pages/index.tsx
index 15da87bd6..7da925459 100644
--- a/packages/desktop/src/pages/index.tsx
+++ b/packages/desktop/src/pages/index.tsx
@@ -521,7 +521,7 @@ export default function Page() {
<div class="flex justify-center items-center gap-3">
<Icon name="folder" size="small" />
<div class="text-12-medium text-text-weak">
- {getDirectory(sync.data.path.directory)}/
+ {getDirectory(sync.data.path.directory)}
<span class="text-text-strong">{getFilename(sync.data.path.directory)}</span>
</div>
</div>
@@ -705,7 +705,7 @@ export default function Page() {
<div class="flex">
<Show when={diff.file.includes("/")}>
<span class="text-text-base">
- {getDirectory(diff.file)}/
+ {getDirectory(diff.file)}
</span>
</Show>
<span class="text-text-strong">
@@ -858,7 +858,7 @@ export default function Page() {
<FileIcon node={{ path: i, type: "file" }} class="shrink-0 size-4" />
<div class="flex items-center text-14-regular">
<span class="text-text-weak whitespace-nowrap overflow-hidden overflow-ellipsis truncate min-w-0">
- {getDirectory(i)}/
+ {getDirectory(i)}
</span>
<span class="text-text-strong whitespace-nowrap">{getFilename(i)}</span>
</div>
diff --git a/packages/desktop/src/utils/path.ts b/packages/desktop/src/utils/path.ts
index 3ae48cdb3..d23568ae6 100644
--- a/packages/desktop/src/utils/path.ts
+++ b/packages/desktop/src/utils/path.ts
@@ -1,3 +1,5 @@
+import { useSync } from "@/context/sync"
+
export function getFilename(path: string) {
if (!path) return ""
const trimmed = path.replace(/[\/]+$/, "")
@@ -6,8 +8,10 @@ export function getFilename(path: string) {
}
export function getDirectory(path: string) {
+ const sync = useSync()
const parts = path.split("/")
- return parts.slice(0, parts.length - 1).join("/")
+ const dir = parts.slice(0, parts.length - 1).join("/")
+ return dir ? sync.sanitize(dir + "/") : ""
}
export function getFileExtension(path: string) {