'0.9.58', // 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. Defaults to the PUBLIC repo (safe to ship — it is public). install.sh overrides // it via CLUSEV_REPOSITORY, derived from the clone origin: dev points at Gitea, staging at the // GitHub-private mirror, public users at the public repo. 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', 'https://github.com/clusev/clusev'), // Dev-only release controls (the dashboard "Release" page + host git-push bridge). OFF by default // so customer/staging installs never expose release controls. Set true ONLY in the dev .env. 'release_controls' => env('CLUSEV_RELEASE_CONTROLS', false), 'license' => 'AGPL-3.0', ];