'0.9.56', // Deployed commit + branch. install.sh bakes these into .env from the host's .git (the prod // image ships no .git); the Versions page prefers them and falls back to a live .git read in // dev. Empty in dev (no install.sh run) → the .git fallback fills them in. 'build' => [ 'sha' => env('CLUSEV_BUILD_SHA') ?: null, 'branch' => env('CLUSEV_BUILD_BRANCH') ?: null, ], // Default user channel. Only 'stable' and 'beta' are ever offered to users. 'channel' => 'stable', // Install-time panel domain (APP_DOMAIN). The dashboard Setting overrides it; this // is the fallback so a domain set during install still gets automatic TLS. 'domain' => env('APP_DOMAIN'), // Update source. Empty by default: the PUBLIC repo URL is injected via CLUSEV_REPOSITORY (env), // which install.sh derives from the clone origin. Private (Gitea/GitHub-private) URLs live ONLY in // the gitignored .env — never in tracked files, so the public repo exposes no private URL. 'repository' => env('CLUSEV_REPOSITORY', ''), 'license' => 'AGPL-3.0', ];