feat(app): add status titlebar icon with health badge

This commit is contained in:
David Hill 2026-03-12 12:13:28 +00:00
commit 648e64082b
4 changed files with 20 additions and 4 deletions

View file

@ -304,7 +304,6 @@ export function SessionHeader() {
{(mount) => (
<Portal mount={mount()}>
<div class="flex items-center gap-2">
<StatusPopover />
<Show when={projectDirectory()}>
<div class="hidden xl:flex items-center">
<Show
@ -421,6 +420,7 @@ export function SessionHeader() {
</div>
</Show>
<div class="flex items-center gap-1">
<StatusPopover />
<TooltipKeybind
title={language.t("command.terminal.toggle")}
keybind={command.keybind("terminal.toggle")}

View file

@ -168,6 +168,8 @@ export function StatusPopover() {
const language = useLanguage()
const navigate = useNavigate()
const [open, setOpen] = createSignal(false)
const fetcher = platform.fetch ?? globalThis.fetch
const servers = createMemo(() => {
const current = server.current
@ -199,18 +201,23 @@ export function StatusPopover() {
return (
<Popover
open={open()}
onOpenChange={setOpen}
triggerAs={Button}
triggerProps={{
variant: "ghost",
class: "titlebar-icon w-6 h-6 p-0 box-border",
class: "titlebar-icon w-8 h-6 p-0 box-border",
"aria-label": language.t("status.popover.trigger"),
style: { scale: 1 },
}}
trigger={
<div class="flex size-4 items-center justify-center">
<div class="relative size-4">
<div class="badge-mask-tight size-4 flex items-center justify-center">
<Icon name={open() ? "status-active" : "status"} size="small" />
</div>
<div
classList={{
"size-1.5 rounded-full": true,
"absolute top-0 -right-px 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,