1.0.34
This commit is contained in:
56 files changed
+9101
-117
No files matched your search
@@ -22,7 +22,8 @@
|
||||
User,
|
||||
ClipboardList,
|
||||
Activity,
|
||||
Timer
|
||||
Timer,
|
||||
LibraryBig
|
||||
} from 'lucide-svelte';
|
||||
import { licenseStore } from '$lib/stores/license';
|
||||
import { authStore, hasAnyAccess } from '$lib/stores/auth';
|
||||
@@ -101,6 +102,7 @@
|
||||
{ href: '/images', Icon: Images, label: 'Images', permission: 'images' },
|
||||
{ href: '/volumes', Icon: HardDrive, label: 'Volumes', permission: 'volumes' },
|
||||
{ href: '/networks', Icon: Network, label: 'Networks', permission: 'networks' },
|
||||
{ href: '/templates', Icon: LibraryBig, label: 'Templates', permission: 'templates' },
|
||||
{ href: '/registry', Icon: Download, label: 'Registry', permission: 'registries' },
|
||||
{ href: '/activity', Icon: Activity, label: 'Activity', permission: 'activity' },
|
||||
{ href: '/schedules', Icon: Timer, label: 'Schedules', permission: 'schedules' },
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<script lang="ts">
|
||||
import { onMount } from 'svelte';
|
||||
import { Cpu, MemoryStick, Box, Globe, ChevronDown, Check, HardDrive, Clock, Wifi, WifiOff, Route, UndoDot, Icon, AlertCircle, Loader2, Search, X } from 'lucide-svelte';
|
||||
import { Cpu, MemoryStick, Box, Globe, ChevronDown, Check, HardDrive, Clock, Wifi, WifiOff, Route, UndoDot, Icon, AlertCircle, Loader2, Search, Server, X } from 'lucide-svelte';
|
||||
import { whale } from '@lucide/lab';
|
||||
import { Button } from '$lib/components/ui/button';
|
||||
import { currentEnvironment, environments, type Environment } from '$lib/stores/environment';
|
||||
@@ -95,6 +95,22 @@
|
||||
}
|
||||
}
|
||||
|
||||
// Display string for the env hostname / IP in the header (#962).
|
||||
// Show both when available; drop only the field that is unknown/empty.
|
||||
// Hide the whole block when neither is meaningful (e.g. hawser-edge
|
||||
// reports 'unknown' for both).
|
||||
const hostLabel = $derived.by(() => {
|
||||
if (!hostInfo) return '';
|
||||
const isMeaningful = (v: string | undefined) => {
|
||||
const t = (v || '').trim();
|
||||
return t && t.toLowerCase() !== 'unknown';
|
||||
};
|
||||
const h = isMeaningful(hostInfo.hostname) ? hostInfo.hostname.trim() : '';
|
||||
const ip = isMeaningful(hostInfo.ipAddress) ? hostInfo.ipAddress.trim() : '';
|
||||
if (h && ip && h !== ip) return `${h} (${ip})`;
|
||||
return h || ip;
|
||||
});
|
||||
|
||||
// Reactive environment list from store
|
||||
let envList = $derived($environments);
|
||||
const showSearch = $derived(envList.length > 8);
|
||||
@@ -449,6 +465,16 @@
|
||||
{#if hostInfo}
|
||||
<span class="text-border">|</span>
|
||||
|
||||
<!-- Hostname / IP (#962) — first info segment after the env dropdown.
|
||||
Hidden on narrow viewports to keep the strip readable. -->
|
||||
{#if hostLabel}
|
||||
<div class="hidden xl:flex items-center gap-1" title="Daemon hostname / IP">
|
||||
<Server class="{iconSizeClass()}" />
|
||||
<span>{hostLabel}</span>
|
||||
</div>
|
||||
<span class="hidden xl:inline text-border">|</span>
|
||||
{/if}
|
||||
|
||||
<!-- Platform/OS -->
|
||||
<span class="hidden md:inline">{hostInfo.platform} {hostInfo.arch}</span>
|
||||
|
||||
|
||||
Reference in new issue
Block a user