The discover API now fetches container names from Docker via the Python
API on port 9876 and matches them to services by UUID. The Dozzle logs
button builds a proper deep link using the Dozzle host ID and container
name, opening directly to that container's log stream.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds a scroll-text icon button between the web link and Coolify link
that opens Dozzle for viewing container logs.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The card body no longer wraps in an <a> tag. Instead, the footer has
explicit icon buttons: external-link for the web URL, settings gear for
Coolify management, with a divider before start/stop/restart controls.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Each discovered service now shows a settings gear icon linking to its
Coolify management page alongside the existing web URL link.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Color-coded left border: green=running, red=stopped, grey=unknown
- Status pill with icon: "Running" (green), "Stopped" (red), etc.
- Stopped cards appear muted (75% opacity), recover on hover
- Running: restart (↻) + stop (⏻) icon buttons, stop needs confirm
- Stopped: prominent green play (▶) button
- Loading state: spinner replaces controls with "Processing..."
- Added coolify.ts lib and config.ts for shared Coolify API access
- No pause support (Coolify API doesn't expose docker pause)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Running services show Restart and Stop buttons. Stopped/unknown show
Start button. Stop requires double-click confirmation (3s timeout).
Card restructured from <a> wrapper to <div> with nested <a> for the
link area, so buttons can coexist without nesting issues.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace static services list with dynamic discovery from Coolify's
server resources API. Services are auto-categorized using a registry
of known service names mapped to icons and categories. Falls back to
static list with health checks when Coolify is unreachable.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add shadow-sm to ServiceCard, BookmarkCard, and Settings card
- Reduce border opacity: slate-100 (light) / stone-700/50 (dark)
- Lighter hover states for a softer look
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 17 internal services with live health status
- 28 external bookmarks organized by category
- Dark/light mode toggle with persistence
- Cmd+K search filtering
- Health API polling every 30 seconds
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>