diff --git a/frontend/src/components/panels/DetailPanel.tsx b/frontend/src/components/panels/DetailPanel.tsx
index 96d8cd4..cddd301 100644
--- a/frontend/src/components/panels/DetailPanel.tsx
+++ b/frontend/src/components/panels/DetailPanel.tsx
@@ -234,7 +234,7 @@ export function DetailPanel({ onEdit }: DetailPanelProps) {
{data.mac && }
{data.os && }
{data.check_method && }
- {data.last_seen && }
+ {data.last_seen && }
{/* Properties section */}
diff --git a/frontend/src/components/panels/__tests__/DetailPanel.test.tsx b/frontend/src/components/panels/__tests__/DetailPanel.test.tsx
index 52c3c5f..1c12e31 100644
--- a/frontend/src/components/panels/__tests__/DetailPanel.test.tsx
+++ b/frontend/src/components/panels/__tests__/DetailPanel.test.tsx
@@ -487,4 +487,27 @@ describe('DetailPanel', () => {
expect(screen.getByText('health').tagName).not.toBe('A')
})
})
+
+ describe('Last Seen formatting', () => {
+ it('renders a valid date when last_seen has +00:00 offset (no Z)', () => {
+ setupStore({ last_seen: '2026-05-10T17:54:38.221403+00:00' })
+ render()
+ const row = screen.getByText('Last Seen').parentElement
+ expect(row?.textContent).not.toMatch(/Invalid Date/)
+ })
+
+ it('renders a valid date when last_seen ends with Z', () => {
+ setupStore({ last_seen: '2026-05-10T17:54:38.221403Z' })
+ render()
+ const row = screen.getByText('Last Seen').parentElement
+ expect(row?.textContent).not.toMatch(/Invalid Date/)
+ })
+
+ it('treats naive ISO strings as UTC', () => {
+ setupStore({ last_seen: '2026-05-10T17:54:38' })
+ render()
+ const row = screen.getByText('Last Seen').parentElement
+ expect(row?.textContent).not.toMatch(/Invalid Date/)
+ })
+ })
})