diff --git a/internal/landing-preconditions.mjs b/internal/landing-preconditions.mjs index 3bfeb5a3f..8f0752037 100644 --- a/internal/landing-preconditions.mjs +++ b/internal/landing-preconditions.mjs @@ -117,7 +117,22 @@ if (process.env.DOXA_SKIP_FRESHNESS === '1') { const deps = (ref) => { try { const j = JSON.parse(run('git', ['show', `${ref}:package.json`]).stdout); return JSON.stringify([j.dependencies, j.devDependencies]) } catch { return '' } } return deps(base) !== deps('HEAD') } - const everything = !base || pkgDepsChanged() || changed.some((f) => /^(vite\.config\.js$|bun\.lockb?$|vite\.doxa-maps-build-config\.json$)/.test(f)) + // The build config reaches every bundle only through a key the BUILD reads. dropin (where sync-dropin copies + // to) and the "//" comment keys build nothing: a dropin.dest fix verified every bundle, ~10 min, for nothing. + const buildCfgChanged = () => { + const CFG = 'vite.doxa-maps-build-config.json' + if (!changed.includes(CFG) || !base) return false + const keys = (ref) => { + try { + const j = JSON.parse(run('git', ['show', `${ref}:${CFG}`]).stdout) + for (const k of Object.keys(j)) if (k === 'dropin' || k.startsWith('//')) delete j[k] + return JSON.stringify(j) + } catch { return null } + } + const a = keys(base), b = keys('HEAD') + return a === null || b === null || a !== b + } + const everything = !base || pkgDepsChanged() || buildCfgChanged() || changed.some((f) => /^(vite\.config\.js$|bun\.lockb?$)/.test(f)) const libChanged = changed.filter((f) => f.startsWith('library/')) const shared = everything || libChanged.length > 0 const own = new Set(changed.map((f) => (f.match(/^plugin-designs\/([^/]+)\//) || [])[1]).filter(Boolean))