DESKTOP LOCK — FINAL · stamp
desktop-lock-final-2026-08-12·DESKTOP_LOCK.json·docs/DESKTOP_LOCK_FINAL.mdDesktop (≥1025px) for the 9 primaries (
/,/about,/work,/artists,/artist-path,/learn-with-tsc,/films,/resources,/academy) is locked to the Wix clone. Zero tolerance for fonts, colors, logo sizing, navbar redesign, layout, or invented animation styles. Site-wide Wix enter/loop/scrub motion is locked to mirrored Thunderbolt payloads (tsc-wix-motion.js+tsc-wix-authored-motion.js). Allowed only: content/copy, footer link labels/hrefs (keep clone fonts/icons/per-page colors), form wiring, and owner-approved section hides. Mobile work stays inside@media (max-width: 1024px). Rule:.cursor/rules/desktop-lock.mdc.
Static mirror + cleaned local runtime for The Shakti Collective website.
- Full mirrored page payloads in
public/pages/*.html - Pretty-route shell files like
public/about/index.htmlandpublic/work/index.html - Local runtime assets in
public/js,public/css, andpublic/assets - Build/verification scripts for Vercel-ready static deploys
npm install
npm run devnpm run dev starts scripts/serve-mirror.js, serves public/, and resolves clean routes from public/pages/routes.manifest.json.
npm run buildBuild pipeline:
scripts/generate-subpage-shells.jsscripts/repair-runtime-assets.jsscripts/generate-page-asset-manifests.jsscripts/build.jsscripts/optimize-assets.js
scripts/build.js is also guardrail step. It verifies required static output, dynamic Thunderbolt bootstrap, local favicon wiring, mirrored video renditions, worker patches, and per-page runtime payload coverage before deploy.
scripts/mirror-wix-site.jsmirrors Wix source into localpublic/output, rewrites asset URLs, removes Wix telemetry/Sentry hooks, and normalizes clean routes.scripts/serve-mirror.jshandles local route rewrites, disabled telemetry endpoints, Thunderbolt JSON variants, and media fallbacks.public/js/content-replacements.jsapplies post-hydration page polish: brand-aware favicons/logos, mobile header/footer, mobile work + films shells, course mobile cards, Resources blog cards, CTA repairs, and artist-page fixes.vercel.jsonis source of truth for production rewrites, legacy redirects, security headers, and cache policy for mirrored assets.
Footer newsletter forms are rendered by the shared component in public/js/tsc-components.js and submit to api/newsletter.js. The API forwards signups to Taskmaster at TASKMASTER_NEWSLETTER_WEBHOOK_URL or /api/webhooks/newsletter using NEWSLETTER_WEBHOOK_SECRET.
Newsletter destination collection: newslettersubscribers (NewsletterSubscriber model in Taskmaster). No Google Sheets in the submit path.
Full form → API → Taskmaster destination map: docs/FORMS_GUIDE.md.
- Canonical public routes stay flat:
/about,/mba,/kalki,/book-a-call - Full page payloads live in
public/pages/*.html - Pretty route folders are lightweight entry shells that redirect to matching
/pages/*.html - Route manifest lives in
public/pages/routes.manifest.json
npm run dev- local static servernpm run build- generate + verify deployable outputnpm run mirror:subpages- refresh mirrored subpages and runtime manifestsnpm run repair:assets- rewrite existing mirrored assetsnpm run audit:production- production auditnpm run audit:original- compare against original Wix sourcenpm run audit:interactions- interaction checksnpm run audit:navigation- navigation checks
With the mirror server on port 3001:
node artifacts/_verify-motion-all-pages.mjs
node artifacts/_spotcheck-motion-parity.mjsExpect failed:0 / local paused:0. Evidence: artifacts/motion-verify-all-local.json.