summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-03-03 07:19:17 -0600
committerAdam <[email protected]>2026-03-03 07:19:24 -0600
commit10c325810b626f1699f4d12de509b6375b7fe78a (patch)
treeeaeb4f7feef9154164aefbf0de84f4ce00c681e9
parentfa45422bf9bfb79acfa5476e951af211d5f4283e (diff)
downloadopencode-10c325810b626f1699f4d12de509b6375b7fe78a.tar.gz
opencode-10c325810b626f1699f4d12de509b6375b7fe78a.zip
fix(app): tighten up header elements
-rw-r--r--packages/app/src/components/session/session-header.tsx19
-rw-r--r--packages/app/src/components/status-popover.tsx27
2 files changed, 22 insertions, 24 deletions
diff --git a/packages/app/src/components/session/session-header.tsx b/packages/app/src/components/session/session-header.tsx
index 94edb8258..bb4d98125 100644
--- a/packages/app/src/components/session/session-header.tsx
+++ b/packages/app/src/components/session/session-header.tsx
@@ -138,12 +138,12 @@ function useSessionShare(args: {
globalSDK: ReturnType<typeof useGlobalSDK>
currentSession: () =>
| {
- id: string
share?: {
url?: string
}
}
| undefined
+ sessionID: () => string | undefined
projectDirectory: () => string
platform: ReturnType<typeof usePlatform>
}) {
@@ -167,11 +167,11 @@ function useSessionShare(args: {
})
const shareSession = () => {
- const session = args.currentSession()
- if (!session || state.share) return
+ const sessionID = args.sessionID()
+ if (!sessionID || state.share) return
setState("share", true)
args.globalSDK.client.session
- .share({ sessionID: session.id, directory: args.projectDirectory() })
+ .share({ sessionID, directory: args.projectDirectory() })
.catch((error) => {
console.error("Failed to share session", error)
})
@@ -181,11 +181,11 @@ function useSessionShare(args: {
}
const unshareSession = () => {
- const session = args.currentSession()
- if (!session || state.unshare) return
+ const sessionID = args.sessionID()
+ if (!sessionID || state.unshare) return
setState("unshare", true)
args.globalSDK.client.session
- .unshare({ sessionID: session.id, directory: args.projectDirectory() })
+ .unshare({ sessionID, directory: args.projectDirectory() })
.catch((error) => {
console.error("Failed to unshare session", error)
})
@@ -243,9 +243,9 @@ export function SessionHeader() {
})
const hotkey = createMemo(() => command.keybind("file.open"))
- const currentSession = createMemo(() => sync.data.session.find((s) => s.id === params.id))
+ const currentSession = createMemo(() => (params.id ? sync.session.get(params.id) : undefined))
const shareEnabled = createMemo(() => sync.data.config.share !== "disabled")
- const showShare = createMemo(() => shareEnabled() && !!currentSession())
+ const showShare = createMemo(() => shareEnabled() && !!params.id)
const sessionKey = createMemo(() => `${params.dir}${params.id ? "/" + params.id : ""}`)
const view = createMemo(() => layout.view(sessionKey))
const os = createMemo(() => detectOS(platform))
@@ -346,6 +346,7 @@ export function SessionHeader() {
const share = useSessionShare({
globalSDK,
currentSession,
+ sessionID: () => params.id,
projectDirectory,
platform,
})
diff --git a/packages/app/src/components/status-popover.tsx b/packages/app/src/components/status-popover.tsx
index b441d1c5e..c61b31958 100644
--- a/packages/app/src/components/status-popover.tsx
+++ b/packages/app/src/components/status-popover.tsx
@@ -202,29 +202,26 @@ export function StatusPopover() {
triggerAs={Button}
triggerProps={{
variant: "ghost",
- class:
- "rounded-md h-[24px] pr-3 pl-0.5 gap-2 border border-border-weak-base bg-surface-panel shadow-none data-[expanded]:bg-surface-base-active",
+ class: "titlebar-icon w-6 h-6 p-0 box-border",
+ "aria-label": language.t("status.popover.trigger"),
style: { scale: 1 },
}}
trigger={
- <div class="flex items-center gap-0.5">
- <div class="size-4 flex items-center justify-center">
- <div
- classList={{
- "size-1.5 rounded-full": true,
- "bg-icon-success-base": overallHealthy(),
- "bg-icon-critical-base": !overallHealthy() && server.healthy() !== undefined,
- "bg-border-weak-base": server.healthy() === undefined,
- }}
- />
- </div>
- <span class="text-12-regular text-text-strong">{language.t("status.popover.trigger")}</span>
+ <div class="flex size-4 items-center justify-center">
+ <div
+ classList={{
+ "size-1.5 rounded-full": true,
+ "bg-icon-success-base": overallHealthy(),
+ "bg-icon-critical-base": !overallHealthy() && server.healthy() !== undefined,
+ "bg-border-weak-base": server.healthy() === undefined,
+ }}
+ />
</div>
}
class="[&_[data-slot=popover-body]]:p-0 w-[360px] max-w-[calc(100vw-40px)] bg-transparent border-0 shadow-none rounded-xl"
gutter={4}
placement="bottom-end"
- shift={-136}
+ shift={-168}
>
<div class="flex items-center gap-1 w-[360px] rounded-xl shadow-[var(--shadow-lg-border-base)]">
<Tabs