Commit Graph

66 Commits

Author SHA1 Message Date
Paul Payne
cd31e6a365 Better app state drift convergence. 2026-05-23 20:05:25 +00:00
Paul Payne
d185f9cf10 feat: Refactor app sidebar and apps component for improved clarity and functionality
- Updated AppSidebar to rename "Available Apps" to "App Directory" for better user understanding.
- Refactored AppsComponent to streamline app data handling and improve loading states.
- Introduced AppDirectoryPage to provide a dedicated view for browsing available apps.
- Added AppInfoPage to display detailed information about individual apps, including README and configuration options.
- Implemented useCatalogReadme hook to fetch README content for apps.
- Enhanced API service to include a method for fetching app README files.
- Improved error handling and loading states across components for better user experience.
2026-05-23 13:24:23 +00:00
Paul Payne
b73b7c25e5 refactor: remove service-related components and hooks
- Deleted ServiceLifecycleBadges, ServiceLogViewer, ServiceLogsDialog, ServiceStatusBadge, and ServiceStatusDialog components.
- Removed useServices and useServiceStatus hooks.
- Cleaned up services API by removing servicesApi and related types.
- Updated index files to reflect the removal of service components and hooks.
2026-05-23 11:21:33 +00:00
Paul Payne
b393c29fc9 feat: enhance database name detection logic and add unit tests for environment variable checks 2026-05-22 23:40:27 +00:00
Paul Payne
548f210849 fix: Derive config-only app status from directory contents, suppress false yellow indicators
Config-only apps (e.g., SMTP) have no kustomization.yaml or install.sh — they only
provide configuration for other apps. Previously they showed a permanent yellow dot
because their status was always "added". Now the API detects config-only apps from
directory contents and the frontend suppresses status indicators for them.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-22 23:36:49 +00:00
Paul Payne
3621c92194 refactor: Remove legacy cloud.smtp config, converge on apps.smtp
SMTP is now managed as an infrastructure app (apps.smtp.*), not as a
cloud-level config (cloud.smtp.*). Remove the SMTP struct from the API
config, the SMTP card from the advanced config page, and update tests
and documentation to reference the new location.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-22 23:26:43 +00:00
Paul Payne
8d8bfed515 feat: optimize cluster state retrieval with batch fetching of active namespaces and ingress URLs 2026-05-21 04:23:50 +00:00
Paul Payne
66389eebf3 feat: add support for operation cancellation and enhance backup scheduling features
- Added 'operation:cancelled' event handling in useGlobalSSE and useOperations hooks.
- Implemented useCancelOperation hook for cancelling operations with immediate UI feedback.
- Enhanced useSchedules hook to utilize SSE for schedule updates and improved schedule management.
- Updated BackupsPage to include schedule management UI and display active operations.
- Refactored operations handling to streamline fetching and filtering of operations.
- Improved backup and recovery plan handling with new health summary and recovery plan tracking.
- Updated API services for schedules and operations to align with new backend endpoints.
2026-05-21 04:20:31 +00:00
Paul Payne
fff321b05c fix: Use camelCase JSON tags for ClusterStatus and NodeStatus API responses
The Go structs used snake_case JSON tags (kubernetes_version, control_plane_nodes, etc.)
but the frontend expected camelCase, with no conversion layer. This broke the Kubernetes
version, node counts, and node status display on the dashboard and cluster pages.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-19 04:40:21 +00:00
Paul Payne
bdbc26d892 WIP: Blue-green backup-restore implementation
Continuation of blue-green backup work. Includes recovery plan
generation, active deployment tracking, and strategy updates for
postgres, mysql, longhorn, and config. Incomplete — branched to
make way for services/apps convergence.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-18 04:25:40 +00:00
Paul Payne
0dabb8b824 feat: add script execution functionality in app manifests and enhance manifest handling 2026-05-18 04:24:18 +00:00
Paul Payne
7ddebaa80c feat: add directory copying functionality during app update process 2026-05-18 03:39:31 +00:00
Paul Payne
18259034ea feat: enhance deployment process with CRD handling and refactor node management components 2026-05-18 03:33:05 +00:00
Paul Payne
48f8809587 feat: add node upgrade and rollback commands to CLI
- Implemented `node upgrade <hostname> <version>` command to upgrade a node's Talos version.
- Implemented `node rollback <hostname>` command to rollback a node to its previous Talos version.
- Added corresponding API calls for node upgrade and rollback in the nodes service.
- Enhanced CLI help documentation for new commands.

feat: introduce Talos utilities in CLI

- Added `talos` command group for Talos Image Factory utilities.
- Implemented `talos versions` command to list available Talos versions.
- Implemented `talos validate <schematic-id> <version>` command to validate schematic compatibility.
- Implemented `talos client` command to show talosctl client information and upgrade functionality.

feat: integrate Talos version selection in UI components

- Created `TalosVersionSelect` component for selecting Talos versions.
- Updated `CentralComponent`, `ClusterSettings`, `NodeUpgradeDialog`, and asset pages to use the new version selection component.
- Added validation feedback for schematic compatibility in relevant components.

fix: update entity tile to support version display

- Modified `EntityTile` component to accept React nodes for descriptions, allowing for version display alongside IP addresses.

chore: refactor API hooks for Talos

- Created new hooks for fetching Talos versions, validating schematics, and managing Talos client information and upgrades.
- Updated existing services and components to utilize the new hooks for improved data management and reactivity.
2026-05-18 02:53:54 +00:00
Paul Payne
da7a165447 Enhance namespace resolution and backup functionality
- Implemented ResolveNamespace method to determine the Kubernetes namespace for an app based on priority: config.yaml, manifest, or appName.
- Updated AppsGetLogs and AppsGetEvents handlers to use the resolved namespace.
- Modified backup process to correctly reference the app's namespace when copying secrets.
- Added unit tests for ResolveNamespace and copyDir functions to ensure correct behavior.
2026-05-17 23:24:20 +00:00
Paul Payne
2b8ef8e2b6 Add manifests endpoint and integrate into app detail panel 2026-05-17 22:32:55 +00:00
Paul Payne
b1f0ba07d8 Refactor application and cluster services management
- Removed the ClusterServicesComponent and integrated its functionality into the AppsComponent.
- Updated AppSidebar to reflect the removal of cluster services navigation.
- Adjusted AppsComponent to handle infrastructure services, including fetching, compiling, and deploying.
- Enhanced AppDetailPanel to support infrastructure-specific actions and lifecycle status display.
- Modified routing to redirect cluster-related paths to the apps section, ensuring proper phase checks.
- Updated phase guard logic to accommodate multiple required phases for app management.
- Cleaned up unused ServiceCard component and related imports.
- Adjusted app status types to include category for better categorization of apps.
2026-05-17 22:26:09 +00:00
Paul Payne
f37cb458f8 Add infrastructure setup. 2026-05-17 19:22:56 +00:00
Paul Payne
2dd661118c Consolidate service/app. 2026-05-17 19:11:10 +00:00
Paul Payne
7e017eaec7 Removes unnecessary crowdsec cluster role. 2026-05-16 22:45:53 +00:00
Paul Payne
f1a6a70bf8 Update crowdsec and change deployment to use /var/log on affinity traefik node instead of API (performance improvement and traffic-burst DOS prevention). 2026-05-16 22:45:01 +00:00
Paul Payne
5804c5fdd0 k8s dashboard replaced by headlamp 2026-05-16 22:21:53 +00:00
Paul Payne
42a58d383f Blue-green backup-restore implementation (incomplete). 2026-03-04 17:32:23 +00:00
Paul Payne
773d2e88c8 fix(postgres): Separate drop and create database commands in Restore function 2026-03-02 05:19:37 +00:00
Paul Payne
86cf4443d6 feat(postgres): Enhance database name retrieval from config.yaml for PostgreSQL strategy 2026-03-01 17:56:11 +00:00
Paul Payne
5f305672ac feat(kubectl): Add GetPodsByDeployment and GetPodsByLabel methods for improved pod retrieval
refactor(logs): Enhance pod retrieval logic in GetLogs and StreamLogs methods
refactor(backup): Update JSON unmarshalling to marshal response data before parsing
2026-02-28 21:31:58 +00:00
Paul Payne
26c88decd8 New backup system. 2026-02-28 20:51:46 +00:00
Paul Payne
aa528a2b01 feat(config): Implement config value extraction and tracking for service compilation 2026-02-28 07:58:44 +00:00
Paul Payne
395b740d78 refactor(deployment): Update deployment state terminology from 'needs_redeploy' to 'out_of_sync' 2026-02-28 07:21:43 +00:00
Paul Payne
07bb8f83ef feat(apps): Add restart functionality for deployed apps and update related components 2026-02-28 05:20:06 +00:00
Paul Payne
09171b7d85 refactor(config): Remove dnsmasq configuration from global settings and update related tests and components 2026-02-17 09:21:05 +00:00
Paul Payne
f8e826eade refactor(dns): Remove DNS configuration interface from global settings and clean up related UI components 2026-02-17 08:30:50 +00:00
Paul Payne
591c58a1a5 feat(dns): Implement modular dnsmasq configuration and update instance DNS handling
refactor(tests): Enhance DNS testing functionality and streamline component structure
refactor(ui): Improve loading states and descriptions in service and app detail dialogs
2026-02-17 07:58:15 +00:00
Paul Payne
afa39a9786 refactor(sse): Update event type formatting for Kubernetes resources in watchers and tests 2026-02-17 06:18:02 +00:00
Paul Payne
4f08487abe refactor: Clean up unused functions and improve error handling in tests 2026-02-17 06:11:09 +00:00
Paul Payne
f8ca59f6ef refactor(tests): Rename and enhance resource quantity parsing tests for CPU and memory 2026-02-17 05:56:42 +00:00
Paul Payne
982933e802 feat(sse): Add Server-Sent Events support for real-time updates in web app 2026-02-17 05:56:35 +00:00
Paul Payne
2ed8c94d2a feat: Implement global SSE architecture and remove all polling
- Replaced all polling with Server-Sent Events (SSE) for real-time updates
- Created unified global SSE endpoint at /api/v1/events
- Implemented SSE broadcasting for operations, central status, and dnsmasq events
- Added SSE manager with wildcard subscription support for global events
- Created useGlobalSSE hook with singleton connection management
- Updated all frontend hooks to use SSE instead of polling:
  - useApps: SSE for app deployments and status
  - useSetupStatus: SSE for setup operations
  - useNodes: SSE for node management
  - useDnsmasq: SSE for DNS configuration
  - useCentralStatus: SSE for central daemon status
  - useServices: SSE for service management
  - useOperations: SSE for long-running operations
- Fixed CORS configuration for wild-central.lan access
- Fixed SSE connection loop issues with proper state management
- Added client-side event filtering for instance-specific updates
- Increased React Query staleTime since SSE provides real-time updates
- Added proper cleanup and reconnection logic with timeouts

This eliminates all polling overhead and provides instant UI updates
when cluster state changes occur.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-17 04:53:49 +00:00
Paul Payne
326a6bf2b6 feat(backup): Implement backup resource discovery for apps and enhance app detail panel with backup data display 2026-02-16 22:16:50 +00:00
Paul Payne
d0f03dd644 fix(api): Correct CPU percentage calculation in resource metrics
The CPU percentage was showing incorrect values (e.g., 10,000% instead of 10%)
because the parseResourceQuantity function wasn't properly converting CPU cores
to millicores. CPU values specified as whole numbers (e.g., "1" for 1 core) were
being treated as 1 millicore instead of 1000 millicores.

Split parseResourceQuantity into separate parseCPUQuantity and parseMemoryQuantity
functions to properly handle the different unit conversions:
- CPU values without "m" suffix are now converted from cores to millicores (×1000)
- CPU values with "m" suffix remain in millicores
- Memory parsing remains unchanged

This ensures consistent millicore units for accurate percentage calculations.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-13 06:23:09 +00:00
Paul Payne
6f221978fa Enhance app and node management: update deployment status handling, introduce EntityTile component for UI consistency, and implement live app status fetching 2026-02-13 05:16:38 +00:00
Paul Payne
543967ae81 Refactor CoreDNS and utility installation scripts to use kustomize for applying configurations, and update version in utility manifest 2026-02-11 16:31:46 +00:00
Paul Payne
9e97ec6aa9 Enhance service management: add checks for manifest and kustomization files, improve error handling in Fetch, and implement CleanFiles method to remove service files 2026-02-11 16:30:09 +00:00
Paul Payne
b7da8133e1 Add endpoint to clean compiled and cached service files 2026-02-11 16:29:56 +00:00
Paul Payne
7c8c182a9c Enhance service lifecycle management: add lifecycle status tracking, update UI components for lifecycle actions, and improve service manifest definitions 2026-02-10 09:24:33 +00:00
Paul Payne
96dfaaf07c Add comprehensive documentation for Talos v1.11: architecture, operations, troubleshooting, and CLI essentials 2026-02-10 07:28:58 +00:00
Paul Payne
5d8129dad8 Refactor service management: update SMTP handling to be configuration-only and enhance CloudComponent with SMTP configuration UI 2026-02-10 06:30:35 +00:00
Paul Payne
c054dbff39 Fix type-check problems. 2026-02-10 06:03:57 +00:00
Paul Payne
01bea32b9c Refactor cluster configuration management: streamline instance configuration checks, remove unused cluster settings, and replace NodeFormDrawer with NodeFormDialog for improved node management. 2026-02-01 18:45:36 +00:00
Paul Payne
654fcc94a2 Enhance DNS configuration: add support for commented DNS entries without load balancer IP; update instance count logic to include commented domains; implement dynamic DNS configuration with save functionality and setup instructions. 2026-02-01 13:24:39 +00:00