- Redesign widget/app/integration select modal cards: icon left of name,
description tooltip on hover, "Add to board" button revealed on hover,
reduced card height from 180 to 140
- Add client-side font-size slider (10-24px) to server logs terminal,
persisted in localStorage
- Merge Docker discovery into integration grid with "Detected via Docker"
badges, remove separate DockerDiscoveryIndicator panel
- Make base URL input more prominent (orange alert, auto-focused) in
onboarding with stronger hint text
- Add disableAutoFocus prop to SelectGridLayout
Add automatic Docker container discovery during onboarding to pre-select
and pre-fill integrations. Introduce base URL templating with subdomain/port
modes, API key settings path links, and a curated onboarding list that
hides niche integrations (GitHub, npm, Docker Hub, etc.). Prevent duplicate
widget seeding and remove the timetable widget from defaults.
Both IntegrationMultiSelectGrid and IntegrationSelectGrid had
duplicated logic for building widget-by-integration maps, category
labels, sorting, and filtering. Extract shared code into
integration-grid-shared.ts using objectEntries and IntegrationKind
typing. Use i18n keys for category badges and widget counts instead
of hardcoded strings. Remove useEffect for onSelectionChange in
multi-select grid — call it directly in the toggle callback.
- Fix TypeScript error: InitIntegrations returning null by transitioning
to done phase instead
- Fix TypeScript error: Object.fromEntries cast in integration grids by
typing the array elements
- Update E2E onboarding tests to process the new integrations step
(skip for now) and increase finish assertion timeout for async mutation
Create IntegrationSelectGrid (single-select) and
IntegrationMultiSelectGrid (multi-select) components with search,
category badges, widget count tooltips, and featured integration
sorting. Use SimpleGrid to prevent horizontal overflow. Add stepper
modal for creating integrations from the dashboard.