• v2.2 bf28fec087

    Version 2.2 Stable

    SluberskiHomeLab released this 2025-10-03 08:03:14 -05:00 | 14 commits to main since this release

    Version 2.2 Changelog

    Added

    • Multiple Pages Support: Dashboard now supports multiple pages with individual configurations

      • Collapsible navigation menu (hamburger menu) in top left corner
      • Each page can have its own set of groups and services
      • Clean URL routing (/page/1, /page/2, etc.)
      • Auto-redirect from root URL to first available page
    • Enhanced Navigation:

      • "Edit config" button added to dashboard (top right)
      • "Return to dashboard" button added to configuration page (top right)
      • Navigation menu shows all available pages with proper theming
    • Database Schema Updates:

      • New pages table with title and display order
      • Added page_id foreign key to groups table
      • Migration scripts for seamless upgrades
      • Default "Home" page created automatically
    • Configuration Management:

      • New "Pages" tab in configuration interface
      • Full CRUD operations for pages (Create, Read, Update, Delete)
      • Page assignment for groups with visual indicators
      • Validation to prevent deletion of pages with associated groups
    • Comprehensive Widgets System: Added dedicated support for widgets to display information from specific services

      • Weather Widget: Displays current weather conditions, temperature, humidity, and wind speed
        • Configurable API key, location, units (metric/imperial), and update intervals
        • Real-time weather data from OpenWeatherMap API
        • Weather icons and detailed conditions display
      • Sun Position Widget: Shows sunrise, sunset times and daylight duration
        • Configurable latitude/longitude coordinates
        • Real-time daylight progress tracking with visual progress bar
        • Automatic day/night status detection
      • Date/Time Widget: Displays current time and date with customizable formatting
        • Horizontal layout with time prominently displayed first, then date
        • Configurable timezone, 12/24-hour format, date formats
        • Optional greeting messages and timezone display
        • Real-time updates every second
    • Widget Management Interface:

      • New "Widgets" tab in configuration page
      • Full CRUD operations for widgets (Create, Read, Update, Delete)
      • JSON configuration editor with real-time validation
      • Widget type selection dropdown (datetime, weather, sun_position)
      • Display order and enable/disable toggles
      • Page assignment for widgets
    • Database Schema:

      • New widgets table with JSONB configuration support
      • Migration script 004_add_widgets.sql for seamless upgrades
      • Support for flexible widget configurations

    Changed

    • Service Configuration: IP address and port fields are now optional

      • Updated database constraints to allow NULL values
      • Enhanced form validation and error handling
      • Improved user experience for services without IP/port
    • API Enhancements:

      • Added comprehensive error handling and logging
      • Better validation for required fields
      • Specific error messages for different failure types
      • New endpoints for pages management (/api/pages)
    • Frontend Improvements:

      • Enhanced error handling with detailed console logging
      • Better form field handling for optional values
      • Improved conditional rendering for IP:port display
      • Updated service cards to handle optional fields gracefully
    • Widget Layout and Display:

      • DateTime widgets displayed prominently below page title at full size
      • Other widgets (weather, sun position) displayed at 50% size below search area
      • Improved visual hierarchy with clean separation of widget types
      • All widgets now use compact 12pt font sizes for better space utilization
      • Responsive scaling with appropriate sizing for both full and small display modes
    • Enhanced JSON Configuration Editor:

      • Fixed JSON editing functionality to allow proper text input during editing
      • Real-time validation with visual error indicators (red border for invalid JSON)
      • Improved state management to handle temporary invalid JSON states
      • Prevention of saving widgets with invalid JSON configurations
      • Better user experience with immediate feedback during editing
    • Widget Component Architecture:

      • Extensible widget system designed for easy addition of new widget types
      • Consistent theming across all widgets using dashboard color schemes
      • Responsive design with proper scaling for different display contexts
      • Error handling and loading states for all API-dependent widgets

    Fixed

    • Database constraint violations when saving services without IP/port
    • Form validation issues in configuration interface
    • Navigation and routing edge cases
    • Service display inconsistencies

    Technical Details

    • New API Endpoints:

      • GET /api/pages - List all pages
      • POST /api/pages - Create new page
      • PUT /api/pages/:id - Update page
      • DELETE /api/pages/:id - Delete page
      • GET /api/widgets - List all widgets
      • POST /api/widgets - Create new widget
      • PUT /api/widgets/:id - Update widget
      • DELETE /api/widgets/:id - Delete widget
    • Database Migrations:

      • 002_optional_ip_port.sql - Made IP and port optional
      • 003_add_pages.sql - Added pages functionality
    • New Components:

      • NavigationMenu.js - Collapsible navigation drawer
      • RootRedirect.js - Handles root URL redirection
      • WidgetContainer.js - Main widget display controller with selective rendering
      • DateTimeWidget.js - Real-time clock and date display
      • WeatherWidget.js - Weather conditions and forecast
      • SunPositionWidget.js - Solar position and daylight tracking
    • Widget Configuration Examples:

      • Weather: {"apiKey": "your-key", "location": "City,Country", "units": "metric"}
      • Sun Position: {"latitude": 40.7128, "longitude": -74.0060}
      • DateTime: {"timezone": "America/New_York", "format12Hour": true, "showSeconds": false}

    Documentation

    • WIDGETS.md: Comprehensive widget documentation including:
      • Configuration guide for all widget types
      • API key setup instructions
      • Troubleshooting guide
      • Usage examples and best practices

    Docker Images

    • Published to Docker Hub as sluberskihomelab/ditdashdot-dashboard:2.2
    • Published to Docker Hub as sluberskihomelab/ditdashdot-api:2.2
    • Also available with :latest tag
    Downloads