Commit Graph

261 Commits

Author SHA1 Message Date
Paul Payne
c8c60fb11b Nav state. 2026-05-27 07:03:04 +00:00
Paul Payne
c1ddf46f44 Restore strategies. 2026-05-25 23:09:39 +00:00
Paul Payne
a533082388 Improve Directory pages. 2026-05-25 22:29:47 +00:00
Paul Payne
658c7ab24c Re-org nav. 2026-05-25 22:01:55 +00:00
Paul Payne
288b448e48 Remove expensive asset-hashing operation. 2026-05-25 22:01:43 +00:00
Paul Payne
ce5ca426d6 Normalize talos and kubeconfig paths. 2026-05-25 22:01:20 +00:00
Paul Payne
fa59b5d8ad Fix flaky test. 2026-05-25 21:59:24 +00:00
Paul Payne
60fc76e9a4 Clean up docs. 2026-05-25 21:58:39 +00:00
Paul Payne
d38ed94d12 Node addition improvements. Global and instance config merging. Gomplate IPC. 2026-05-25 20:55:07 +00:00
Paul Payne
e2144412ce SSE node discovery. Node reset. Node apply fix. 2026-05-25 18:37:30 +00:00
Paul Payne
e93a14aa92 More informative error logs. 2026-05-25 18:35:05 +00:00
Paul Payne
374bcb3bd0 Node UI breakout. 2026-05-25 07:52:41 +00:00
Paul Payne
e82c92b72e Node health monitoring. 2026-05-25 07:35:53 +00:00
Paul Payne
270fbeabef Adds node reboot. 2026-05-25 07:26:29 +00:00
Paul Payne
fdab9484a6 feat: Add cluster config backup and move schedules to per-app backup pages
Cluster config backup archives kubeconfig, talosconfig, config.yaml,
secrets.yaml, and Talos node configs for disaster recovery. Appears as
"Cluster Config" row on the backups page with its own detail page.

Backup schedules are now shown on each app's individual backup page
instead of the main backups overview, with active operations visible
per-app for real-time feedback during backup/restore.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-24 21:54:46 +00:00
Paul Payne
322492a85f fix: Resolve SSE test race condition by making client registration synchronous
RegisterClient was async (channel-based), so Broadcast could be processed
before the client was registered in the map, causing flaky test failures.
Register directly under the mutex instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-24 21:54:13 +00:00
Paul Payne
3f97dce86a docs: Update all guides to reflect current CLI, API, and web app
Rewrote backup/restore guides to document current system (native
pg_dump/Longhorn/tar.gz tools, blue-green restore, scheduling) and
remove outdated restic references. Rewrote monitoring guide to replace
K3s/Helm/Velero placeholders with actual capabilities. Filled in all
four upgrade guides (Talos, Kubernetes, applications, Wild Cloud) that
were previously TBD stubs. Expanded troubleshooting guides with correct
namespaces, Wild Cloud CLI commands, and Talos-specific diagnostics.
Added verification commands to cluster networking health checklist.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-24 21:54:11 +00:00
Paul Payne
11c875a513 fix: Resolve all golangci-lint errors across API codebase
Handle unchecked errors (errcheck), fix nil-deref false positives (SA5011),
suppress deprecated-but-functional API warnings (SA1019), remove unused code,
and use fmt.Fprintf over WriteString(fmt.Sprintf(...)).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-24 21:52:59 +00:00
Paul Payne
e051e80601 fix: Resolve eslint errors across web UI
Remove unused imports (Clock, Database) and dead code (formatUptime),
replace `any` types with proper types (BackupResourceInfo, QueryClient,
Record<string, unknown>), fix DeployedApp/App type incompatibility, and
use const for module-level collections in SSE hook.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-24 21:32:06 +00:00
Paul Payne
fd58c7b694 Linting. 2026-05-24 21:24:40 +00:00
Paul Payne
3e9aa153e2 Go format. 2026-05-24 20:54:13 +00:00
Paul Payne
7cad37db07 More logging. 2026-05-24 20:40:02 +00:00
Paul Payne
eff5246144 Add more resiliency to backups and operations. Use Longhorn CRDs instead of a janky tunnel. 2026-05-24 20:35:51 +00:00
Paul Payne
81604879dc slog integration 2026-05-24 20:29:22 +00:00
Paul Payne
44c7cb6f72 Bakup UX. 2026-05-24 20:03:27 +00:00
Paul Payne
7a3ef65683 Refactor upgrade plan computation to support new app.yaml structure
- Updated `checkSourceDrift` to read version from app.yaml and corresponding slot manifest.
- Introduced `computeUpgradePlanFromMeta` to handle upgrade plans using centralized routing rules from app.yaml.
- Enhanced `ComputeUpgradePlan` to fallback to old-style manifest.yaml if app.yaml is not present.
- Added tests for both new and old upgrade plan computation methods, ensuring backward compatibility.
- Improved handling of upgrade paths, including waypoint resolution and circular dependency detection.
2026-05-24 18:30:00 +00:00
Paul Payne
9ac643a50f First version of app upgrade. 2026-05-24 03:59:36 +00:00
Paul Payne
8e55a589fb fix: handle nil manifest in resolveDeploymentResource function 2026-05-23 20:42:23 +00:00
Paul Payne
5e591b62d1 feat: add payne-cloud config audit migration documentation 2026-05-23 20:42:15 +00:00
Paul Payne
7c1821a2f8 feat: implement alert dialogs for delete confirmations across multiple components 2026-05-23 20:16:40 +00:00
Paul Payne
cd31e6a365 Better app state drift convergence. 2026-05-23 20:05:25 +00:00
Paul Payne
d15ce9fcbe refactor: enhance AppDetailPanel layout and action button organization for improved usability 2026-05-23 19:35:49 +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
164a44192a refactor: adjust button alignment in AppDetailPage for improved layout 2026-05-23 13:11:14 +00:00
Paul Payne
92364fbe96 feat: add comprehensive App Installation Design document outlining installation processes and configuration management 2026-05-23 13:06:21 +00:00
Paul Payne
a0dcd91857 refactor: add min-width styling to SidebarInset for improved layout consistency 2026-05-23 13:06:08 +00:00
Paul Payne
313f788134 refactor: simplify AppDetailPanel layout by removing redundant fields and adjusting overflow behavior 2026-05-23 12:45:24 +00:00
Paul Payne
771cabad1c refactor: remove unused dialog components to streamline application structure 2026-05-23 12:40:36 +00:00
Paul Payne
c51536eed1 refactor: update layout and styling in AppDetailPanel and AppsComponent for improved responsiveness 2026-05-23 12:27:12 +00:00
Paul Payne
fad3946f6d feat: add AppDetailPage component and integrate with routing; enhance AppsComponent for improved app detail navigation 2026-05-23 11:57:44 +00:00
Paul Payne
569044d8f9 feat: implement script execution with real-time output display in AppDetailPanel 2026-05-23 11:26:01 +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
f93bb6ae47 fix: Swap control/worker node colors and make status badge compact in node dialog
Swap the tint colors for controlplane and worker nodes on the cluster page.
Replace the large NodeStatusBadge block with a compact inline badge as the
first row in the node info grid.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-22 23:35:51 +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