mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-01-26 10:59:53 +00:00
feat: add isNightly build flag for nightly-only features (#8149)
## Summary Adds a compile-time `__IS_NIGHTLY__` constant that detects whether the build is from the main branch (nightly) or a core/* branch (RC/stable). The detection logic in vite.config.mts auto-detects based on `GITHUB_REF_NAME === 'main'` in CI, with explicit override support via `IS_NIGHTLY` environment variable. Exports `isNightly` from `src/platform/distribution/types.ts` for use throughout the codebase. Includes unit tests for the detection logic. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-8149-feat-add-isNightly-build-flag-for-nightly-only-features-2ec6d73d365081c09930edec1c6644f5) by [Unito](https://www.unito.io)
This commit is contained in:
@@ -12,6 +12,7 @@ declare global {
|
|||||||
const __ALGOLIA_API_KEY__: string
|
const __ALGOLIA_API_KEY__: string
|
||||||
const __USE_PROD_CONFIG__: boolean
|
const __USE_PROD_CONFIG__: boolean
|
||||||
const __DISTRIBUTION__: 'desktop' | 'localhost' | 'cloud'
|
const __DISTRIBUTION__: 'desktop' | 'localhost' | 'cloud'
|
||||||
|
const __IS_NIGHTLY__: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
type GlobalWithDefines = typeof globalThis & {
|
type GlobalWithDefines = typeof globalThis & {
|
||||||
@@ -22,6 +23,7 @@ type GlobalWithDefines = typeof globalThis & {
|
|||||||
__ALGOLIA_API_KEY__: string
|
__ALGOLIA_API_KEY__: string
|
||||||
__USE_PROD_CONFIG__: boolean
|
__USE_PROD_CONFIG__: boolean
|
||||||
__DISTRIBUTION__: 'desktop' | 'localhost' | 'cloud'
|
__DISTRIBUTION__: 'desktop' | 'localhost' | 'cloud'
|
||||||
|
__IS_NIGHTLY__: boolean
|
||||||
window?: Record<string, unknown>
|
window?: Record<string, unknown>
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -36,6 +38,7 @@ globalWithDefines.__ALGOLIA_APP_ID__ = ''
|
|||||||
globalWithDefines.__ALGOLIA_API_KEY__ = ''
|
globalWithDefines.__ALGOLIA_API_KEY__ = ''
|
||||||
globalWithDefines.__USE_PROD_CONFIG__ = false
|
globalWithDefines.__USE_PROD_CONFIG__ = false
|
||||||
globalWithDefines.__DISTRIBUTION__ = 'localhost'
|
globalWithDefines.__DISTRIBUTION__ = 'localhost'
|
||||||
|
globalWithDefines.__IS_NIGHTLY__ = false
|
||||||
|
|
||||||
// Provide a minimal window shim for Node environment
|
// Provide a minimal window shim for Node environment
|
||||||
// This is needed for code that checks window existence during imports
|
// This is needed for code that checks window existence during imports
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ type Distribution = 'desktop' | 'localhost' | 'cloud'
|
|||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
const __DISTRIBUTION__: Distribution
|
const __DISTRIBUTION__: Distribution
|
||||||
|
const __IS_NIGHTLY__: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Current distribution - replaced at compile time */
|
/** Current distribution - replaced at compile time */
|
||||||
@@ -18,3 +19,10 @@ const DISTRIBUTION: Distribution = __DISTRIBUTION__
|
|||||||
export const isDesktop = DISTRIBUTION === 'desktop' || isElectron() // TODO: replace with build var
|
export const isDesktop = DISTRIBUTION === 'desktop' || isElectron() // TODO: replace with build var
|
||||||
export const isCloud = DISTRIBUTION === 'cloud'
|
export const isCloud = DISTRIBUTION === 'cloud'
|
||||||
// export const isLocalhost = DISTRIBUTION === 'localhost' || (!isDesktop && !isCloud)
|
// export const isLocalhost = DISTRIBUTION === 'localhost' || (!isDesktop && !isCloud)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether this is a nightly build (from main branch).
|
||||||
|
* Nightly builds may show experimental features and surveys.
|
||||||
|
* @public
|
||||||
|
*/
|
||||||
|
export const isNightly = __IS_NIGHTLY__
|
||||||
|
|||||||
@@ -51,6 +51,14 @@ const DISTRIBUTION: 'desktop' | 'localhost' | 'cloud' =
|
|||||||
? 'cloud'
|
? 'cloud'
|
||||||
: 'localhost'
|
: 'localhost'
|
||||||
|
|
||||||
|
// Nightly builds are from main branch; RC/stable builds are from core/* branches
|
||||||
|
// Can be overridden via IS_NIGHTLY env var for testing
|
||||||
|
const IS_NIGHTLY =
|
||||||
|
process.env.IS_NIGHTLY === 'true' ||
|
||||||
|
(process.env.IS_NIGHTLY !== 'false' &&
|
||||||
|
process.env.CI === 'true' &&
|
||||||
|
process.env.GITHUB_REF_NAME === 'main')
|
||||||
|
|
||||||
// Disable Vue DevTools for production cloud distribution
|
// Disable Vue DevTools for production cloud distribution
|
||||||
const DISABLE_VUE_PLUGINS =
|
const DISABLE_VUE_PLUGINS =
|
||||||
process.env.DISABLE_VUE_PLUGINS === 'true' ||
|
process.env.DISABLE_VUE_PLUGINS === 'true' ||
|
||||||
@@ -502,7 +510,8 @@ export default defineConfig({
|
|||||||
__ALGOLIA_APP_ID__: JSON.stringify(process.env.ALGOLIA_APP_ID || ''),
|
__ALGOLIA_APP_ID__: JSON.stringify(process.env.ALGOLIA_APP_ID || ''),
|
||||||
__ALGOLIA_API_KEY__: JSON.stringify(process.env.ALGOLIA_API_KEY || ''),
|
__ALGOLIA_API_KEY__: JSON.stringify(process.env.ALGOLIA_API_KEY || ''),
|
||||||
__USE_PROD_CONFIG__: process.env.USE_PROD_CONFIG === 'true',
|
__USE_PROD_CONFIG__: process.env.USE_PROD_CONFIG === 'true',
|
||||||
__DISTRIBUTION__: JSON.stringify(DISTRIBUTION)
|
__DISTRIBUTION__: JSON.stringify(DISTRIBUTION),
|
||||||
|
__IS_NIGHTLY__: JSON.stringify(IS_NIGHTLY)
|
||||||
},
|
},
|
||||||
|
|
||||||
resolve: {
|
resolve: {
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ globalThis.__ALGOLIA_APP_ID__ = ''
|
|||||||
globalThis.__ALGOLIA_API_KEY__ = ''
|
globalThis.__ALGOLIA_API_KEY__ = ''
|
||||||
globalThis.__USE_PROD_CONFIG__ = false
|
globalThis.__USE_PROD_CONFIG__ = false
|
||||||
globalThis.__DISTRIBUTION__ = 'localhost'
|
globalThis.__DISTRIBUTION__ = 'localhost'
|
||||||
|
globalThis.__IS_NIGHTLY__ = false
|
||||||
|
|
||||||
// Define runtime config for tests
|
// Define runtime config for tests
|
||||||
window.__CONFIG__ = {
|
window.__CONFIG__ = {
|
||||||
|
|||||||
Reference in New Issue
Block a user