Next.js image optimizer mkdirs <distDir>/cache/images on first
optimized-image request. In the Nix store that path is read-only, so
every image request throws EACCES unhandledRejection. images.maximumDiskCacheSize=0
plus experimental.isrFlushToDisk=false keep the optimizer in-memory only.
- Added motion effects to Donut, Gauge, Header, NoData, Sparkline components for improved user experience.
- Implemented initial and animate properties for SVG elements to create smooth transitions.
- Introduced new motion primitives for reusable animations across components.
- Updated UI elements like badges and buttons with hover effects and transitions.
- Enhanced skeleton and spinner components for better loading states.
- Created a motion library for consistent animation variants and utility constants.
- Added overrides in biome.json to disable specific linter rules for UI components.
- Reorganized imports and improved code readability in various UI components.
- Refactored components to use fieldset instead of div for better semantics.
- Enhanced accessibility by updating roles and aria attributes in components.
- Fixed minor issues with key props in map functions for better performance.
- Updated focus styles and improved CSS for better visual feedback.
- Moved dashboard components (Donut, Gauge, Sparkline) to their own files for better organization.
- Created a new DashboardHeader component to manage the header state and display service status.
- Introduced a layout component for the dashboard to encapsulate common layout styles.
- Simplified the Dashboard component by utilizing new components and reducing inline logic.
- Added type definitions for dashboard data in a new types.ts file.
- Enhanced the visual representation of data with improved SVG elements and accessibility attributes.
- Removed redundant code and improved overall readability and maintainability.
Replace manual CSS classes with shadcn Card, CardHeader, CardTitle,
CardContent, and Badge components. Remove inline <style> block —
use Tailwind utility classes via shadcn theme tokens. Add Biome
formatting across all components.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Implemented Skeleton component for loading placeholders.
- Created Slider component with customizable properties.
- Added Sonner component for toast notifications with icons.
- Developed Spinner component for loading indicators.
- Introduced Switch component for toggle functionality.
- Built Table component with header, body, footer, and cell subcomponents.
- Added Tabs component with list, trigger, and content subcomponents.
- Created Textarea component for user input.
- Implemented ToggleGroup and Toggle components for grouped toggle functionality.
- Developed Tooltip component with provider, trigger, and content subcomponents.
- Added useIsMobile hook to detect mobile device viewport.
- Created registry.md for shadcn registry authoring and address schemes.
- Added base-vs-radix.md to outline API differences between base and radix components.
- Introduced chat.md for chat and messaging component guidelines.
- Established composition.md for component composition best practices.
- Defined forms.md for forms and input handling rules.
- Created icons.md for icon usage and guidelines.
- Added styling.md for styling and customization best practices.
- Initialized skills-lock.json to track shadcn skill configuration.
- Added new dependencies: @base-ui/react, class-variance-authority, clsx, lucide-react, shadcn, tailwind-merge, and tw-animate-css.
- Updated globals.css to include new styles and color variables using oklch color space.
- Created components.json for shadcn configuration.
- Implemented a Button component using @base-ui/react and class-variance-authority for styling variants.
- Added utility function `cn` for merging class names with tailwind-merge.
- Remove Go dashboard (replaced by Next.js)
- Add API route /api/dashboard: Docker container list, Jaeger
traces, Prometheus metrics, node resources
- Add /dashboard page: React client component with inline SVG
charts (donut, sparkline, gauge), auto-refresh every 15s
- Same dark theme as original Go dashboard
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>