Introduces a new 'migrate_db' command to the CLI that checks for and adds missing columns to the 'applications' table. This helps keep the database schema up to date without requiring manual intervention or full migrations.
Removed glow effects and active dot highlights from the metrics graph for a cleaner look. Updated dashboard header to display the actual hostname instead of a static label and removed the host detail line. Adjusted styles to remove unused badge and apply monospace font to the server identity.
Revamps the dashboard page with a new pro layout, including updated metric tiles, a new chart panel, and a spec panel for hardware info and quick actions. The MetricsGraph component now uses CPU, Memory, and Network (replacing Disk) with updated colors and filter legend. Sidebar user profile is restyled, and related LESS styles are updated for the new design.
Updated STATE.md to mark the Log Viewer UI phase as 'Planning Complete' and added a detailed execution plan in phases/23-log-viewer-ui/PLAN.md. The plan outlines architecture, tasks, component structure, and success criteria for implementing a real-time container log viewer with ANSI color support and streaming controls.
- Add compose_up() call to start containers after creating docker files
- Update app status to 'running' on successful container start
- Pass database password (DB_PASSWORD) to app environment variables
- Store credentials in created_resources for proper propagation
- Return warning if containers fail to start (app still created)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add subscribe_container_logs event for real-time log streaming
- Add unsubscribe_container_logs event to stop streaming
- Stream logs via docker logs --follow subprocess
- Parse log lines with timestamp and level detection
- Emit container_log events to room logs_{app_id}
- Handle container_log_ended when container stops
- Clean up processes on disconnect or unsubscribe
- Support service selection for compose apps
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add GET /apps/{id}/container-logs with tail, since, timestamps, format params
- Add GET /apps/{id}/containers to list containers for compose apps
- Support 'raw' and 'json' output formats
- Include container state and available services in response
- Cap log lines at 10000 for performance
- Handle service selection for multi-container compose apps
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add stream_container_logs() for real-time log streaming via subprocess
- Add get_app_container_id() to resolve container ID from app model
- Add get_all_app_containers() for compose apps with multiple containers
- Add parse_log_line() to extract timestamp and detect log level
- Add parse_logs_to_lines() for batch parsing
- Add get_container_state() to check if container is running
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Introduces backend API endpoints and service methods for retrieving and setting server time and timezone (admin only). Updates the dashboard to display current server time and timezone, and adds a timezone selector to the settings page for admins. Includes supporting API methods and frontend styles for the new UI components.
Added a 'Live' badge to each system metric card (CPU, Memory, Disk, Network) for clarity. Updated percentage values to display with one decimal place and corrected CPU core count to use 'count_logical'.
Introduces clickable filter buttons to toggle CPU, memory, and disk metrics in MetricsGraph, replacing the static legend. Refines app name validation in both backend and frontend for template installation, allowing 2+ character names and improving error handling. WorkflowBuilder now handles missing workflow data gracefully and supports a fullscreen layout. Updates related styles for new filter legend and fullscreen workflow view.
Switches from LineChart to AreaChart for main metrics graph, adds animated gradients and glow effects, and updates legend styling. Tooltip UI is improved with clearer layout, colored dots, and value formatting. Chart colors now use explicit hex values for better SVG compatibility, and LESS styles are updated for improved appearance and interactivity.
- GET /workflows - List all workflows for user
- GET /workflows/<id> - Get single workflow
- POST /workflows - Create new workflow
- PUT /workflows/<id> - Update workflow
- DELETE /workflows/<id> - Delete workflow
- JWT authentication and access control
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- SQLAlchemy model with name, description, nodes, edges, viewport
- JSON string storage for React Flow state
- to_dict() method with node/edge counts
- User relationship and timestamps
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Register ConnectionEdge as custom edge type
- Track selectedEdge state
- onEdgeClick handler
- Delete key/Backspace handler for edge deletion
- Pass onDelete to edge data for delete button
- Store connection metadata (sourceType, targetType)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Extends smoothstep edge with labels
- Shows connection type label (Routes to, Uses DB, etc.)
- Color-coded by connection type
- Selected state with glow effect
- Delete button on selection
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Import connection validation utility
- Add isValidConnection callback using rules
- Add onConnectStart/onConnectEnd for error tracking
- Show connection error toast when invalid
- Auto-clear error after 3 seconds
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>