From e667ab564e3f5884a847d6f23a0381bda015780b Mon Sep 17 00:00:00 2001 From: ThatGuySam Date: Sat, 4 Apr 2026 15:38:30 -0500 Subject: [PATCH] fix(app-test): restore runtime verbiage fallbacks The app-test page could render blank processor/mac verbiage when pnpm did not supply npm_package_config_verbiage_* in the runtime environment. Fall back to package.json config and the page-level computed value so the subtitle and description stay populated in builds and production. Constraint: Must not change scanner behavior or app-test submission flow Rejected: Patch only the Vue page text | leaves the public runtime config inconsistent for other consumers Confidence: high Scope-risk: narrow Reversibility: clean Directive: Keep publicRuntimeConfig resilient to missing npm_package_config_* env values until the config source is normalized repo-wide Tested: pnpm run typecheck (workspace); node --input-type=module import of publicRuntimeConfig (workspace) Not-tested: Full browser rerun for this exact commit beyond the already-green production smoke suite --- helpers/public-runtime-config.mjs | 15 +++++++++++++-- pages/apple-silicon-app-test.vue | 7 +++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/helpers/public-runtime-config.mjs b/helpers/public-runtime-config.mjs index 7c30770..54189c5 100644 --- a/helpers/public-runtime-config.mjs +++ b/helpers/public-runtime-config.mjs @@ -1,15 +1,26 @@ import dotenv from 'dotenv' +import { createRequire } from 'node:module' dotenv.config() +const require = createRequire( import.meta.url ) +const packageJson = require( '../package.json' ) +const packageVerbiage = packageJson.config?.verbiage || {} +function getRuntimeValue ( envValue, fallbackValue = null ) { + if ( typeof envValue === 'string' && envValue.length > 0 ) { + return envValue + } + + return fallbackValue +} export const publicRuntimeConfig = { allUpdateSubscribe: process.env.ALL_UPDATE_SUBSCRIBE, testResultStore: process.env.TEST_RESULT_STORE, siteUrl: process.env.URL, - macsVerbiage: process.env.npm_package_config_verbiage_macs, - processorsVerbiage: process.env.npm_package_config_verbiage_processors, + macsVerbiage: getRuntimeValue( process.env.npm_package_config_verbiage_macs, packageVerbiage.macs || null ), + processorsVerbiage: getRuntimeValue( process.env.npm_package_config_verbiage_processors, packageVerbiage.processors || null ), } export function makeViteDefinitions () { diff --git a/pages/apple-silicon-app-test.vue b/pages/apple-silicon-app-test.vue index 27ff275..4f34254 100644 --- a/pages/apple-silicon-app-test.vue +++ b/pages/apple-silicon-app-test.vue @@ -206,8 +206,11 @@ export default { } }, computed: { + fallbackMacsVerbiage () { + return 'Apple M4 Max or M3 Ultra Mac' + }, npm_package_config_verbiage_macs () { - return this.config.macsVerbiage //process.env.npm_package_config_verbiage_macs + return this.config?.macsVerbiage || this.$config?.macsVerbiage || this.fallbackMacsVerbiage }, foundFiles () { return this.appsBeingScanned.filter( appScan => { @@ -271,7 +274,7 @@ export default { return `Apple Silicon Compatibility Test Online` }, description () { - return `Check for Apple Silicon compatibility for any of your apps instantly before you buy an ${ this.$config.macsVerbiage }. ` + return `Check for Apple Silicon compatibility for any of your apps instantly before you buy an ${ this.npm_package_config_verbiage_macs }. ` } }, mounted () {