Skip to content

fix(pages): add Pages deploy workflow, Turnstile bot protection, and CSS/SEO fixes - #22

Merged
anwar3606 merged 11 commits into
jekyll-migrationfrom
website-revamp-fixes
Sep 8, 2026
Merged

anwar3606 merged 11 commits into
jekyll-migrationfrom
website-revamp-fixes

Conversation

@anwar3606

@anwar3606 anwar3606 commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Why These Changes Are Needed

This update prepares the new Jekyll site for a smooth production launch:

  • Automated Publishing: Configures automated site deployment so changes publish to the live website automatically when merged to main, removing the need for any manual build or upload steps.
  • Spam & Bot Defense: Adds a privacy-friendly Cloudflare Turnstile verification to the contact form so automated spam bots cannot flood our inquiry inbox.
  • Search Engine Visibility (SEO) & Design Consistency: Fixes page heading structures so search engines (like Google) can properly read and index our pages, while cleaning up styling so typography and layouts remain consistent across all screens.
  • Clean & Reliable Builds: Removes temporary generated files and locks Linux build dependencies so GitHub Pages builds the site cleanly and reliably every time.

Technical Summary

  • CI/CD: Adds .github/workflows/deploy.yml configuring automated Jekyll build and GitHub Pages deployment on push to main.
  • Bundler Platform Support: Adds x86_64-linux and x86_64-linux-gnu platforms with native gem checksums to Gemfile.lock to ensure CI runner compatibility.
  • Bot Defense: Integrates Cloudflare Turnstile CAPTCHA widget on the contact form (contact.html) and client submission logic (assets/js/contact.js).
  • Contact API Integration: Pre-configures contact form submission endpoint to https://inbound-inquiries.provenant.net/contact with runtime override via window.CONTACT_API_URL.
  • SEO & Markup: Upgrades contact page hero heading from <h2> to <h1> with matched visual styling (56px) for proper heading hierarchy.
  • CSS Scoping: Eliminates inline styles on vlei-credentials.html and terms-and-conditions.html, resolving descendant selector conflicts in assets/css/vlei.css and assets/css/terms.css.
  • Repository Hygiene: Untracks pre-rendered _site/ build artifacts from version control and aligns _config.yml url with apex CNAME (https://provenant.net).

@anwar3606
anwar3606 marked this pull request as ready for review September 7, 2026 18:37
Copilot AI lite review requested due to automatic review settings September 7, 2026 18:37

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The new contact submission flow should reset Turnstile on failed submissions, and the updated headline CSS selectors should be scoped as intended to avoid style bleed/conflicts.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

This PR prepares the Jekyll site for production launch by adding a GitHub Pages deploy workflow, integrating Cloudflare Turnstile protection + an API-backed contact submission flow, and cleaning up SEO/CSS issues (including removing tracked build artifacts).

Changes:

  • Added GitHub Actions workflow to build and deploy the Jekyll site to GitHub Pages on pushes to main.
  • Added Cloudflare Turnstile widget and updated contact form JS to POST submissions to the configured contact API endpoint.
  • Removed tracked _site/ artifacts and tightened repo/Jekyll hygiene via .gitignore and _config.yml excludes; updated Gemfile.lock platforms/checksums for Linux CI.
File summaries
File Description
.github/workflows/deploy.yml Adds automated Jekyll build + GitHub Pages deployment workflow.
.gitignore Ignores Jekyll build outputs/caches and vendor directory.
_config.yml Updates site URL and excludes build/dependency artifacts from the Jekyll build.
Gemfile.lock Adds Linux platforms/checksums and updates bundled Bundler version metadata.
assets/css/terms.css Removes inline headline styling dependency and adjusts headline selector usage for terms page.
assets/css/vlei.css Removes inline headline styling dependency and adjusts headline selector usage for vLEI page.
assets/js/contact.js Adds Turnstile token enforcement and API submission via fetch().
contact.html Adds Turnstile widget + script and improves heading hierarchy (h2 → h1).
terms-and-conditions.html Removes inline hero headline styles in favor of CSS.
vlei-credentials.html Removes inline hero headline styles in favor of CSS.
_site/index.html Removes previously tracked generated homepage artifact.
_site/contact/index.html Removes previously tracked generated contact page artifact.
_site/terms-and-conditions/index.html Removes previously tracked generated terms page artifact.
_site/vlei-credentials/index.html Removes previously tracked generated vLEI page artifact.
_site/assets/js/main.js Removes previously tracked generated JS artifact.
_site/assets/js/home.js Removes previously tracked generated JS artifact.
_site/assets/js/contact.js Removes previously tracked generated JS artifact.
_site/assets/css/home.css Removes previously tracked generated CSS artifact.
_site/assets/css/contact.css Removes previously tracked generated CSS artifact.
_site/assets/css/terms.css Removes previously tracked generated CSS artifact.
_site/assets/css/vlei.css Removes previously tracked generated CSS artifact.
_site/assets/css/press-room.css Removes previously tracked generated CSS artifact.
_site/assets/img/logo-light.svg Removes previously tracked generated image asset.
_site/assets/img/logo-dark.svg Removes previously tracked generated image asset.
_site/assets/img/favicon.svg Removes previously tracked generated image asset.
Review details
  • Files reviewed: 21/72 changed files
  • Comments generated: 3
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread assets/css/terms.css Outdated
Comment thread assets/css/vlei.css Outdated
Comment thread assets/js/contact.js Outdated
@anwar3606
anwar3606 marked this pull request as draft September 8, 2026 13:23
Copilot AI review requested due to automatic review settings September 8, 2026 13:28

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The Pages workflow should explicitly upload the built _site directory, and the new contact JS introduces modern syntax (optional chaining/async) that may not be compatible with the repo’s otherwise ES5-style browser scripts.

Review details

Suppressed comments (3)

Previously missed (2) — in code that hasn't changed since the last review.

.github/workflows/deploy.yml:33

  • actions/upload-pages-artifact is invoked without specifying the artifact path. The action examples typically set with: path: _site (or your custom destination). Being explicit avoids deploying an empty or wrong directory if defaults change.
    assets/js/contact.js:9
  • The submit handler is declared async and uses await, which introduces a syntax-level compatibility requirement (no transpile step is evident, and other site JS is ES5-style). Consider rewriting this block using Promise chaining (fetch(...).then(...).catch(...).finally(...)) to avoid parse errors in older/embedded browsers.

This issue also appears on line 24 of the same file.

assets/js/contact.js:24

  • Optional chaining (?.) is the only usage in the non-vendored site JS and will cause a hard syntax error in browsers that don’t support it. Since these scripts appear to ship without transpilation, use a null check instead.
  • Files reviewed: 21/72 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI review requested due to automatic review settings September 8, 2026 13:32

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The workflow can deploy from a non-main branch and the updated contact script introduces non-ES5 syntax inconsistent with the repo’s current frontend baseline.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (2)

Previously missed (2) — in code that hasn't changed since the last review.

assets/js/contact.js:9

  • The submit handler is declared as async and uses await, which deviates from the ES5-style convention used by other first-party scripts in assets/js (e.g., assets/js/main.js and assets/js/home.js). Without a transpile step, this can cause runtime syntax errors in older browsers.
    assets/js/contact.js:24
  • Optional chaining (?.) is used here, but the repo’s in-house scripts in assets/js follow an ES5-style baseline; this syntax will break in environments without optional chaining support unless you add a transpile step.
  • Files reviewed: 21/72 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread .github/workflows/deploy.yml

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The deploy workflow configuration appears able to deploy from a non-main branch and uses action version tags that may not exist, risking failed or unintended production deployments.

Review details

Suppressed comments (4)

Previously missed (3) — in code that hasn't changed since the last review.

assets/js/contact.js:9

  • The submit handler is now async and uses await, whereas other first-party scripts (assets/js/main.js, assets/js/home.js) avoid async/await. If the site is intended to remain “no-transpile” / broadly compatible, consider rewriting this handler using Promise chaining instead of async/await.
    assets/js/contact.js:24
  • This uses optional chaining (?.), which is inconsistent with the project’s ES5-style first-party scripts (e.g., assets/js/main.js, assets/js/home.js) and can break on older browsers without transpilation.
    assets/js/contact.js:65
  • turnstile.reset() relies on an implicit global variable; using window.turnstile.reset() avoids a potential ReferenceError in environments where turnstile isn’t bound as a global identifier (even if window.turnstile exists).

.github/workflows/deploy.yml:5

  • The deploy workflow is configured to run on pushes to both main and website-revamp-fixes. Since the PR description says production publishing should happen when changes are merged to main, this extra branch can unintentionally deploy from a non-main branch and overwrite the Pages site.
    branches: ["main", "website-revamp-fixes"]
  • Files reviewed: 21/72 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Copilot AI review requested due to automatic review settings September 8, 2026 13:54

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The Pages workflow deploy trigger includes a non-main branch and the new contact script introduces non-ES5 syntax (async/await and optional chaining) inconsistent with the repo’s existing browser-safe JS style.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (2)

assets/js/contact.js:24

  • Optional chaining (?.) is used here to read the Turnstile token. Like async/await, this can cause a hard parse error in older browsers when served without transpilation. Use a simple null check instead so the script stays ES5-compatible.
    .github/workflows/deploy.yml:6
  • The workflow is configured to deploy on pushes to website-revamp-fixes as well as main. The PR description says automated publishing should happen when changes are merged to main; deploying from a non-default branch can publish unreviewed/temporary changes to production.
  push:
    branches: ["main", "website-revamp-fixes"]
  workflow_dispatch:
  • Files reviewed: 22/73 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread assets/js/contact.js Outdated
Copilot AI review requested due to automatic review settings September 8, 2026 14:12

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The contact form script introduces modern JavaScript syntax inconsistent with existing ES5-style assets, and the deploy workflow trigger does not match the documented/claimed deployment behavior.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (2)

assets/js/contact.js:9

  • The submit handler is now marked async and uses await later in the function. Other site scripts under assets/js are written in ES5-style syntax; without a transpile step this can reduce browser compatibility and diverge from established conventions.
    .github/workflows/deploy.yml:5
  • The PR/README describe deploying on push to main (and optionally release branches), but this workflow also deploys from website-revamp-fixes. If production deploys should only happen from main, this extra branch should be removed (or the docs/PR description should be updated accordingly).
    branches: ["main", "website-revamp-fixes"]
  • Files reviewed: 22/73 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread assets/js/contact.js Outdated
Copilot AI review requested due to automatic review settings September 8, 2026 14:30

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The updated contact form JavaScript introduces trailing commas in object literals (risking hard parse errors in older browsers) and the README’s deploy trigger description is currently inconsistent with the workflow.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (2)

Previously missed (1) — in code that hasn't changed since the last review.

README.md:102

  • README says deploys trigger on main or an “active release branch”, but the workflow currently triggers on main and website-revamp-fixes. This mismatch can confuse operators trying to understand when production deploys happen.

assets/js/contact.js:59

  • The fetch options object also uses a trailing comma after the last property (body). If the goal is maximum ES5-era browser compatibility, this can likewise cause a hard parse error in older engines.
  • Files reviewed: 22/73 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread assets/js/contact.js Outdated
Copilot AI review requested due to automatic review settings September 8, 2026 14:43
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@anwar3606
anwar3606 marked this pull request as ready for review September 8, 2026 14:47

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

There are a few correctness/maintainability documentation issues (README trigger mismatch, new trailing commas in assets/js/contact.js, and leftover unscoped !important headline rules in CSS) that should be addressed before approval.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (4)

Previously missed (2) — in code that hasn't changed since the last review.

assets/css/vlei.css:658

  • Although the headline styles are now scoped under .vlei-wrap, there is still a global .page-headline em { ... !important; } rule later in this file (around line 961). That unscoped !important selector can leak styling to any future .page-headline usage outside the vLEI page and undermines the intent of scoping.
    assets/css/terms.css:658
  • Although the headline styles are now scoped under .terms-wrap, there is still a global .page-headline em { ... !important; } rule later in this file (around line 945). That unscoped !important selector can leak styling to any future .page-headline usage outside the Terms page and undermines the intent of scoping.

assets/js/contact.js:53

  • The payload object literal ends with a trailing comma after the last property. Since this repo is intentionally keeping scripts broadly compatible (ES5-style, no transpile), it’s safer to avoid introducing trailing commas in object literals.
    assets/js/contact.js:59
  • The fetch options object includes a trailing comma after the last property (body). For maximum browser compatibility (and consistency with other scripts in assets/js), avoid trailing commas in object literals.
  • Files reviewed: 22/73 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread README.md Outdated
Copilot AI review requested due to automatic review settings September 8, 2026 14:48

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The changes are cohesive and low-risk overall, with only a small README/workflow trigger mismatch noted for follow-up.

Review details

Suppressed comments (1)

README.md:104

  • README claims the Pages deploy workflow triggers on push to main "or active release branch", but .github/workflows/deploy.yml is currently only configured for pushes to main (plus workflow_dispatch). This makes the CI/CD docs inaccurate; either update the README to match the workflow, or expand the workflow triggers to include release branches.
Deployment is fully automated through GitHub Actions (`.github/workflows/deploy.yml`):

- **Trigger**: Every push to the default branch (`main`) or active release branch.
- **Build**: Compiles Jekyll assets with `bundle exec jekyll build --destination ./_site`.
- **Deploy**: Packages and uploads the `_site/` directory to GitHub Pages using `actions/deploy-pages`.
  • Files reviewed: 22/73 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings September 8, 2026 14:52
@anwar3606
anwar3606 merged commit bbc30f1 into main Sep 8, 2026
1 check passed
@anwar3606
anwar3606 deleted the website-revamp-fixes branch September 8, 2026 14:54

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

There are at least two correctness/compatibility risks in the updated build/client code (lockfile platform mismatch and a JS trailing-comma syntax hazard) that should be addressed before merging.

Review details

Suppressed comments (1)

Previously missed (1) — in code that hasn't changed since the last review.

assets/js/contact.js:59

  • The fetch options object literal has a trailing comma after the last property (body), which can be a hard syntax error in older JS engines. Since the repo otherwise avoids newer syntax for compatibility, it’s safer to remove the trailing comma here.
  • Files reviewed: 22/73 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants