Commit: 7a65b26
Branch: main
Status: pushed
resellers/newrise/sales-training/pricing/index.html (modified)
resellers/newrise/sales-training/hrdc-pricing/index.html (new)
resellers/newrise/ sales-training/ index.html done pricing/ index.html done + HRDC CTA added (Build 002) hrdc-pricing/ index.html new (Build 002) hrdc-public-registration/ NEXT BUILD
Inputs needed before build:
Commit: c5c3e53
Status: pushed
Scaffold stub files for owner copy-paste:
Each file contains only its own filename as body text.
Once content is pasted and committed into all three files:
Pending: owner to paste code and commit, then signal ready for link wiring.
Commit: b2cefc8
Status: pushed
Rewired all links in about, faq, articles to circulate within newrise subdomain.
Files touched:
Per file — changes applied:
resellers/newrise/ index.html (not yet created — newrise subdomain home) about/index.html done articles/index.njk done faq/index.html done sales-training/ index.html done pricing/index.html done + HRDC CTA hrdc-pricing/index.html done hrdc-public-registration/ NEXT BUILD
hrdc-public-registration page. Inputs needed:
Status: blocked on owner decisions (listed below)
UX principle: Eliminate every question a prospect has before they reach the form. Uncertainty about cost, process, or next steps kills the submission.
Page structure (top to bottom):
Form fields:
After submit:
Worker sends: proforma invoice + trainer profile + tentative schedule Worker writes to: newrise D1 Telegram notification: on every submission (same pattern as cac-corporate-enquiry)
Urgency mechanisms:
Run date confirmed? YES → countdown timer + hard date in hero NO → waitlist framing ("register interest, hold your place")
Cohort size cap? What is the number, and can it be kept accurate?
Form POST endpoint? Worker URL, or confirm stubbed for now and wired in worker session.
Telegram notification: Same worker as cac-corporate-enquiry, or new worker?
D1 table: Existing table or needs to be created? Table name?
Email sender: Same Cloudflare Email Worker as existing setup, or different?
Commit: 40c67cd
Status: pushed
Newrise logo added to every page on the newrise subdomain.
Logo placement — below the wordmark/subtext in the top-left nav or cover header:
cover-logo-sub in cover headernav-logo anchornav-logo anchornav-logo anchorImplementation: base64 data URI embedded directly. No CDN, no external image dependency. Verified: exactly 1 logo per file across all 6.
Commit: aca06c7
Status: pushed
Nav drawer links in sales-training pages were still pointing to claritysystems.work
instead of the newrise subdomain. About/faq/articles were already clean from Build 004.
sales-training/index.html
https://newrise.claritysystems.work/sales-training/about/https://newrise.claritysystems.work/sales-training/articles/sales-training/pricing/index.html
../enquiry/ → absolute https://newrise.claritysystems.work/sales-training/enquiry/sales-training/hrdc-pricing/index.html
claritysystems.work nav links remaining across all 6 newrise pagesenquiry/ and register/ pages do not yet exist under resellers/newrise.
Nav links point to newrise subdomain URLs for those paths.
These become active once those pages are built.
Commits: d9e80de (fix builds), preceded by d1d75de, 075089d, 08c64c8, 36b14ff, 09d9dc1
New worker — workers/hrdc-grant-public-training/
config.js (not user-submitted)day1_date / day2_date computed from training_date string in configcac-assets), KV, D1, BROWSER bindings as CAC workerTemplates (shared, in R2 cac-assets)
template-proforma.html and template-course-schedule.htmlcac-assets via CF dashboardCAC corporate worker — workers/cac-corporate-enquiry/src/index.js
course_title added to vars object so `` token resolves in templates (was missing)sales-training/config.js
event.title — course name is now single source of truth in config, not scattered in HTMLsales-training/request-hrdc-grant-claim/index.html
CONFIG.event on DOMContentLoadedcourse_title and training_time added to form payload_includes/base.njk
/sales-training/register/ → /sales-training/pricing/Both workers must be built with @cloudflare/puppeteer and all node:* builtins marked external.
CF Workers runtime provides puppeteer via the BROWSER binding — it must NOT be bundled.
Bundling it (via --platform=node) inlines node:buffer imports which CF Workers cannot resolve.
Correct build command (both workers):
npx esbuild src/index.js \
--bundle \
--format=esm \
--platform=browser \
--external:@cloudflare/puppeteer \
--external:node:buffer \
--external:node:stream \
--external:node:util \
--external:node:path \
--external:node:fs \
--external:node:crypto \
--outfile=dist-index.js
Output size should be ~12–17kb. If output is ~800kb, puppeteer was bundled — wrong.
CSS/HTML restructure for register page was interrupted — not yet applied:
Error on src/index.js pasted into CF dashboard:
Uncaught Error: No such module "@cloudflare/puppeteer". imported from "worker.js"
Root cause not yet resolved. The CAC corporate enquiry worker was previously working when pasted as src/index.js directly. Something in the current src/index.js structure is incompatible with CF dashboard's bundler.
What next session must investigate:
src/index.js imported puppeteer — compare with current version@cloudflare/puppeteer automatically IF the BROWSER binding is present and the import is at the top level. Verify bindings are set on both workers in CF dashboard.import puppeteer from '@cloudflare/puppeteer' vs a different import styledist-index.js build — that path is confirmed broken for dashboard deploysrc/index.js before Build 009 changes and compare the puppeteer import lineCommand to check git history:
git log --oneline -- workers/cac-corporate-enquiry/src/index.js
git show <commit>:workers/cac-corporate-enquiry/src/index.js | head -20
Root cause found:
nodejs_compat flag is set in wrangler.toml but does NOT carry over when pasting code into CF dashboard manually. Dashboard deploy needs the flag set separately.
Fix:
For BOTH workers in CF dashboard:
Settings → Compatibility flags → add nodejs_compat → Save → THEN paste src/index.js and deploy.
This is required for @cloudflare/puppeteer to resolve. Without it the dashboard bundler cannot find the module regardless of bindings.