The variable was used in metrics-graph and templates styles
but not defined in the variables file, causing build failure.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Lucide icon mappings for all 60+ templates as fallbacks
- Track failed icon loads and gracefully switch to fallbacks
- Persist filters (category, search, sort) in URL params
- Add active filter chips with remove buttons and "Clear All"
- Add featured badge for curated templates (10 featured)
- Enhanced template cards with version styling, link indicators
- Improved modal with requirements section, section icons
- Add search icon to search input with clear button
- Add results count and sort dropdown (A-Z, Z-A, Featured)
- Responsive styles for mobile
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Create execution plan with 8 tasks:
- Add Lucide icon mappings as fallback
- Icon error handling with state
- URL param persistence for filters
- Active filter chips with clear button
- Enhanced template cards
- Improved detail modal
- Search icon styling
- Results count and sort options
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create Phase 6 SUMMARY.md with implementation details
- Update STATE.md marking Phase 6 complete
- Document API response format and file changes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create _metrics-graph.less with chart card styling
- Support for loading, error, and empty states
- Tooltip styling matching design system
- Summary row for averages display
- Legend and responsive breakpoints
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add historical metrics graph component below the real-time metrics
cards on the dashboard for trend visualization.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create MetricsGraph component with LineChart visualization
- Support multiple time periods (1h, 6h, 24h, 7d, 30d)
- Show CPU, Memory, and Disk trends with averages
- Compact and full display modes
- Add API methods for metrics history endpoints
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create metrics API blueprint with history, stats, and collection
control endpoints
- Register blueprint at /api/v1/metrics
- Auto-start background metrics collection on app startup
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
9 tasks covering:
- MetricsHistory model with aggregation levels
- Background collection service
- Historical metrics API
- MetricsGraph React component
- Dashboard integration with period selector
- Created SUMMARY.md with implementation details and commits
- Updated STATE.md to mark phase 5 completed
- Updated ROADMAP.md with success criteria checked
React component for managing private URLs with enable/disable,
custom slug input, regenerate, and copy to clipboard. Includes
API methods and LESS styles.
The compose_ps function now handles:
- NDJSON: One JSON object per line (newer docker versions)
- JSON Array: Single line with array of objects
- Warning messages: Skip lines starting with 'time=' or 'WARN'
- Both dict and list parsed results
This fixes 'str' object has no attribute 'get' error when
docker compose outputs warnings before JSON.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Phase 3 plan for testing PHP app template:
- Verify template exists and is valid
- Install PHP app via API
- Validate Bug 1 fix (container detection)
- Test PHP execution and Nginx routing
- Document results
Includes validation of Phase 2 NDJSON parsing fix.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- SUMMARY.md: Document test results, bugs found and fixed
- STATE.md: Mark Phase 2 complete, update current phase to 3
- ROADMAP.md: Update Phase 2 status to completed
WordPress deployment verified working. Critical NDJSON parsing
bug fixed that affected container detection across the codebase.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
CLI commands failed with "unable to open database file" because
environment variables weren't loaded from .env before create_app().
Now checks multiple .env locations:
- Same directory as cli.py
- Parent directory
- /opt/serverkit/.env (production)
- /opt/serverkit/backend/.env
Add --debug flag to show which env file was loaded.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
docker compose ps --format json outputs NDJSON (one JSON object per
line), not a JSON array. Parse each line separately to correctly
detect running containers.
This fixes container detection in app status and diagnostics.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Phase 2 plan for testing WordPress template end-to-end:
- Verify template exists and is valid
- Install WordPress via API
- Verify container and database status
- Test Nginx routing and domain access
- Access WordPress installation wizard
- Document results and issues
Uses Phase 1 diagnostic tools for troubleshooting.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- SUMMARY.md: Document all changes, commits, and testing checklist
- STATE.md: Mark Phase 1 complete, update current phase to 2
- ROADMAP.md: Update Phase 1 status to completed
Phase 1 delivered diagnostic tools for identifying routing issues
between domains, Nginx, and Docker containers.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Shell script to test the full Docker app routing chain:
- Port accessibility check
- Nginx config existence and enablement
- Nginx syntax validation
- Service status check
- Direct backend HTTP request
- Domain routing via Host header
- Docker container status and port bindings
Provides colored output and actionable hints for failures.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Show port accessibility status in overview
- Add RoutingDiagnosticsCard component for Docker apps
- Run full diagnostics with health checks
- Display Nginx config status, Docker status, issues and recommendations
- Show Nginx config content for debugging
- Add corresponding LESS styles
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
GET /api/v1/apps/{id}/status now returns:
- port: The configured port number
- port_accessible: Boolean indicating if the port is reachable
Helps frontend display real-time routing health status.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Wait for containers to start after docker compose up
- Check if configured port is accessible
- Include port status in installation response
- Log warning if port not accessible (may need more startup time)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Require Docker apps to have a port configured before adding domains
- Check port accessibility and include warning if port not reachable
- Provides actionable error messages with hints for resolution
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
New endpoints for debugging domain/container routing:
- GET /api/v1/domains/debug/diagnose/{app_id}: Full diagnostic report
with app config, domains, nginx status, docker containers, health
assessment and actionable recommendations
- POST /api/v1/domains/debug/test-routing/{app_id}: Active routing
tests to verify traffic flow
Both endpoints require admin access.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add diagnostic methods to NginxService:
- get_site_config(): Get config content, enabled status, parsed info
- diagnose_site(): Full diagnostic with health check and recommendations
- check_site_routing(): Test the complete routing chain
Includes automatic health assessment and actionable recommendations.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add diagnostic methods to DockerService:
- check_port_accessible(): Test if a port has something listening
- get_container_port_bindings(): Get port mappings for a container
- get_container_network_info(): Get full network settings including IPs
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Detailed 8-task plan to fix port mapping and domain routing
- Adds diagnostic methods to DockerService and NginxService
- New debug endpoint for full routing diagnosis
- Frontend diagnostic UI for ApplicationDetail page
- Test script for manual verification
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- PROJECT.md: Define enhancement goals and success criteria
- ROADMAP.md: 10-phase plan covering Docker debugging, template
testing, private URLs, and UI polish
- STATE.md: Track progress across all phases
- Replace strategic roadmap with actionable implementation plan
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>