Commit Graph
27 Commits
Author SHA1 Message Date
Andras BacsaiandClaude Opus 5.5 5af4ea4458 Merge remote-tracking branch 'origin/next' into v5-progress
Conflict resolutions:
- Danger zone: keep "Remove from Coolify only" for cluster applications
  only; next removed it for services.
- GetLogs: keep next's merged multi-container logs and add the cluster
  (Node) log path before the single-container checks.
- SSH helper: accept Node in next's batch/stdin commands and disabled check.
- Dev QEMU: combine GPU passthrough with Node profiles; keep the profile
  memory when an existing VM restarts.
- Routes: move cluster and node pages into the access.team-wide group.
- Sidebar CSS: take next's newer dark sidebar styles.
- NodeWorkloadPolicy: add viewSensitive, which next's env editor uses.
- Tests: read SSH commands from stdin with remoteProcessScript().

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 19:43:41 +01:00
fe6c73726d chore: merge main into next (#12344)
Co-authored-by: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com>
Co-authored-by: Aditya Tripathi <aditya@climactic.co>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 20:25:53 +01:00
Andras Bacsai 0d2c2a7701 Merge origin/main into v5-progress
Resolve conflicts between main's 4.5 changes and the v5 Node work:
- GetLogs: keep main's browser-side log viewer; read cluster logs from
  Sentinel, with since_unix_seconds for streaming.
- Terminal: keep main's session-failure events and attach mode; keep
  the Node terminal target.
- Dashboard: keep main's layout; add the cluster map as a third servers view.
- Remove the settings sidebar accordion from Node, cluster, and cluster
  application sidebars, as main did for servers.
- Replace removed x-forms.select with x-forms.listbox.
- Node factory creates its SSH key in the node team (main scopes key lookup).
- Add v5 models to the server transfer coverage and app key re-encrypt review.
2026-10-22 08:01:32 +02:00
Andras BacsaiandClaude Opus 5.5 65a7bd5c05 chore: merge main into release/v4.5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 13:37:20 +02:00
Andras BacsaiandClaude Opus 5.5 63153aa8b4 fix(cloud): rework unsubscribed team cleanup and account deletion (#12210)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 17:32:16 +02:00
Andras Bacsai 1562ff2716 fix(dev): prevent tests from corrupting shared caches and SSH keys
Skip optimization during app:init tests and fake SSH key storage across test
suites, including after filesystem swaps. Add cache protection coverage and
correct startup cleanup test fixtures.

Pin the development PHP base image to v4.5.1 to preserve service startup.
2026-10-12 12:12:13 +02:00
Andras Bacsai 8b30b34238 feat(proxy): add custom error pages and resource maintenance mode (#12112) 2026-10-07 13:24:42 +02:00
Andras Bacsai 41ed5b7a69 test: fix stale and flaky tests
- Update tests whose expectations no longer matched intended changes
  (GitHub App redirect, wildcard domains, container IDs, nightly
  install folders, localhost metadata, Sentinel restart on save)
- Seed the instance settings the 2FA profile test needs
- Run the global Pest hooks for all test folders and release the
  Laravel application after each test, so tests do not leak state
- Replace a class alias mock that broke later tests
- Generate factory names that always pass name validation; Faker names
  with apostrophes or short words made form tests fail at random
2026-10-06 13:01:49 +02:00
Andras Bacsai 1f4006ac49 test: remove tests that do not exercise app code
Remove tests that copy app logic into the test, grep PHP source as
text, only check literals, constants, class_exists or PHP built-ins,
duplicate other tests, or are always skipped. Keep source checks that
guard security and authorization rules.

Rename a duplicate Pest helper so the full suite loads, drop the
missing v5/Browser path, and remove the CLAUDE.md symlink in favor of
AGENTS.md. Correct AGENTS.md: Dusk is not installed and the upgrade
script is scripts/upgrade.sh.
2026-09-28 11:55:56 +02:00
Andras BacsaiandClaude Opus 5.5 2063e84d7c fix(dns): release managed records when a domain edit removes a hostname
- Editing a domain (UI application, service and preview domains, the
  General form, API application, preview, service, and service
  application updates) now releases the hostnames that the edit
  removed, like removing a domain does. Records that another live
  resource still uses are kept.
- A per-hostname lock (managed-dns:{team}:{hostname}) now covers the
  release (re-check, Cloudflare delete, row delete) and the create
  paths. A release can no longer delete a record that is being added
  again; a busy lock makes the release retry and the create wait or
  retry, and a create after a release makes the record again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-27 18:06:37 +02:00
Andras Bacsai 67dd34bce7 Merge remote-tracking branch 'origin/next' into reverb-realtime-migration 2026-09-21 21:32:19 +02:00
Aditya Tripathi dd422e6608 fix(traffic-analytics): clear stale chart and cache dashboard 404s
- Dispatch the chart refresh event even when loadData() finds no
  overviews, so a wire:ignore'd chart flips to its no-data state
  instead of keeping stale data.
- Cache dashboard-route absence for 60s in SentinelTrafficClient so
  older Sentinel installs that 404 the dashboard endpoint aren't
  re-probed over SSH on every refresh within the same window.
- Make Pest's loadLazy() throw when no __lazyLoad trigger is found
  instead of silently testing the un-mounted placeholder.
2026-08-22 11:42:41 +00:00
Aditya Tripathi 19752da6af feat(analytics): lazy-load traffic pages and batch Sentinel calls
- Mark Analytics, Dashboard\TrafficAnalytics and Project\Application\Analytics
  Livewire components #[Lazy] with skeleton placeholder() views so pages render
  instantly while Sentinel data loads in a deferred request
- Add SentinelTrafficClient::prefetchServerWide() to warm all server-wide
  endpoints in a single batched docker exec instead of ~14-15 serial SSH
  round-trips, and refactor overview/paths/breakdown URL building into shared
  helpers
- Cap per-app leaderboard overviews fetched via MAX_LEADERBOARD_APPS to bound
  requests on servers with many apps
- Add hasRequestSeries() to detect empty request charts and render a no-data
  state instead of a blank chart
- Gate ServerSetting's automatic Sentinel restart on is_sentinel_enabled so
  tuning geoip/traffic settings no longer silently enables Sentinel
- Add reusable skeleton UI components (skeleton, skeleton/table, skeleton/tiles)
  for the new placeholder views
2026-08-22 11:13:49 +00:00
Andras Bacsai e3ff6bef07 Merge remote-tracking branch 'origin/next' into reverb-realtime-migration 2026-08-18 19:56:33 +02:00
Andras Bacsai 288dc98ca7 fix: enforce remote output size limits 2026-08-18 14:03:33 +02:00
Andras Bacsai 76030a30d4 chore(v5): archive V5 implementation and remove runtime integration
Move V5 source, migrations, UI, scripts, and tests into documentation, then remove V5 routes, models, jobs, configuration, dependencies, and application hooks.
2026-08-15 19:13:30 +02:00
Andras Bacsai 07933640f2 test(browser): expand config coverage and shared helpers
Add BrowserTestHelpers and configuration/deploy browser tests for apps,
databases, services, and Livewire toggles. Refactor existing browser
suites onto shared seed/login helpers, soft-skip onboarding, and null
broadcasting so host-side Pest runs avoid docker DNS.
2026-08-04 11:43:45 +02:00
Andras Bacsai 51ed86fe63 feat(v5): add coold restart action
Add the V5 server endpoint and UI action to restart coold over SSH with
a fresh host token, plus Flux reconnect handling and coverage for the
new backend, browser, and canvas test suites.
2026-07-06 22:30:50 +02:00
Andras Bacsai 6ae45684f9 feat(v5): add server reconciliation and canvas APIs
Split V5 dashboard behavior into domain controllers and policies,
add agent token rotation/revocation, status reconciliation jobs,
ingress firewall syncing, and canvas connection APIs.

Add migrations for V5 status tracking, server capabilities, resource
connection aliases, and revoked agent tokens.
2026-07-06 17:40:37 +02:00
Andras Bacsai 7d65a4b496 Merge remote-tracking branch 'origin/next' into harden-database-import-files 2026-06-29 10:35:35 +02:00
Andras Bacsai 37eac11df3 test(browser): cover resource settings persistence 2026-02-25 19:26:55 +01:00
Andras Bacsai 47a3f2e2cd test: add Pest browser testing with SQLite :memory: schema
Set up end-to-end browser testing using Pest Browser Plugin + Playwright.
New v4 test suite uses SQLite :memory: database with pre-generated schema dump
(database/schema/testing-schema.sql) instead of running migrations, enabling
faster test startup.

- Add pestphp/pest-plugin-browser dependency
- Create GenerateTestingSchema command to export PostgreSQL schema to SQLite
- Add .env.testing configuration for isolated test environment
- Implement v4 test directory structure (Feature, Browser, Unit tests)
- Update Pest skill documentation with browser testing patterns, API reference,
  debugging techniques, and common pitfalls
- Configure phpunit.xml and tests/Pest.php for v4 suite
- Update package.json and docker-compose.dev.yml for testing dependencies
2026-02-11 15:25:47 +01:00
Andras Bacsai 95091e918f fix: optimize queries and caching for projects and environments 2026-01-16 11:51:26 +01:00
Andras Bacsai 27e4882d57 feat(core): You can validate compose files with docker compose config
fix(core): labels are now accepted with both compose styles
refactor: remove lots of ray's
2025-02-27 11:29:04 +01:00
Andras Bacsai 8a0046c571 update packages + fix tests 2024-02-14 09:21:25 +01:00
Andras Bacsai 798d747164 add Docker run command parse test 2024-02-09 13:38:17 +01:00
Joao Patricio d7c7494007 Adds Pest tests. Starts GH Action. 2023-03-20 21:17:28 +00:00