Release: Nuxt 4 and Node 22 Modernization - #385
Closed
fellnerse wants to merge 32 commits into
Closed
Conversation
Establish deterministic frontend checks
Move frontend to Node 22 and final Nuxt 2
- helloworld now also returns the created subscriptionId (additive) - opt-in Playwright suite (pnpm test:e2e:sandbox) boots the Functions emulator + dev server and exercises the real PayPal sandbox; buyer approval stays manual by design - optional GitHub workflow runs it only when PAYPAL_PASSWORD_DEV secret is configured; emulator reads it from gitignored functions/.secret.local - pin TMPDIR=/tmp for the emulator: macOS truncates unix-socket paths at ~104 chars, colliding worker sockets and routing requests to the wrong function - raise CI test timeout to 120s and assertion timeout to 15s (nuxt dev cold-compiles pages; small runners exceeded Playwright's defaults)
The old sandbox plan had total_cycles=1 (PayPal's default when omitted), so every subscription became EXPIRED one second after the first payment. Point the dev config at the new plan P-0KW41015GP654580PNKMT6EY and set total_cycles: 0 explicitly in createPlan. Also documented: the sandbox webhook registration was missing PAYMENT.SALE.COMPLETED (prod subscribes to *); it is now aligned to *.
- pin explicit pwa.workbox.globPatterns: @vite-pwa/nuxt replaces the workbox default when payload extraction is active, which left / out of the precache manifest and crashed every navigation with non-precached-url from createHandlerBoundToURL - restructure the download dialog: a single activator button binds the activator props, pricing cards render outside the overlay. multi-root activator slots dropped the props, so the buttons' own @click handlers never fired - markRaw the pdf worker instance so Vue reactivity cannot wrap it - objectToDictionary converts Date instances to ISO strings; proxied dates cannot be structured-cloned and stalled the worker silently - guard attachment image decoding:InvalidStateError on some WhatsApp jpegs now degrades to text rendering instead of killing the pdf run - guard empty FileReader results and parse errors in zipLoadEndHandler; previously they surfaced as an unhandled jszip rejection ("Can't read the data of 'the loaded zip file'") with no UI feedback - document the findings in docs/modernization-runbook.md
…ard text attachments
…n colors, and German copy
Migrate frontend to Nuxt 4 and Vue 3
|
| GitGuardian id | GitGuardian status | Secret | Commit | Filename | |
|---|---|---|---|---|---|
| 14799759 | Triggered | Generic Private Key | 73e7199 | localhost-key.pem | View secret |
| 14817188 | Triggered | Generic High Entropy Secret | 0e1ea0a | functions/backendClientRegistry.js | View secret |
| 14818802 | Triggered | Generic High Entropy Secret | 0e1ea0a | components/SubscribeBtn.vue | View secret |
🛠 Guidelines to remediate hardcoded secrets
- Understand the implications of revoking this secret by investigating where it is used in your code.
- Replace and store your secrets safely. Learn here the best practices.
- Revoke and rotate these secrets.
- If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.
To avoid such incidents in the future consider
- following these best practices for managing and storing secrets including API keys and other credentials
- install secret detection on pre-commit to catch secret before it leaves your machine and ease remediation.
🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.
Member
Author
|
Closing in favor of direct dev -> main PR #387 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Production release promoting the full modernization sequence to
main:pnpmpackage managerProduction Deployment Checklist & Operational Notes
1. Static Frontend Deployment (Automated)
maintriggers.github/workflows/deployment-live.yml.deployment-live.yml,NUXT_ENV_LOCALis unset, automatically configuring:AUMWxSZrtBOA1RicR_3nGijYb8yYxyq2lxBjiwoQKfVc-8jfdPr5N7X5EFUackMCLb_K7HiKswnDBUJ8)https://www.whatsanalyze.com)dist(withdist/CNAMEpointing towhatsanalyze.com) to thegh-pagesbranch.environment: live.2. Firebase Cloud Functions
checksubscriberstatus,helloworld, andpaypalwebhook) were already deployed and running on Node 22 in Google Cloud Functions (recorded in commitc87e39b).mainaligns the repository source tree with the live deployed functions.PAYPAL_PASSWORD_PROD(andPAYPAL_PASSWORD_DEV).3. Verification
pnpm run format:check- Clean Prettier formattingpnpm run lint- Clean ESLintpnpm run test- Unit tests passpnpm run build- Prerendered 58 routespnpm run test:generated- Verified 9 pages and PWA assets