Skip to content

Claude/sweet hugle 14f9cb - #353

Open
bachngb wants to merge 52 commits into
bchiang7:mainfrom
bachngb:claude/sweet-hugle-14f9cb
Open

Claude/sweet hugle 14f9cb#353
bachngb wants to merge 52 commits into
bchiang7:mainfrom
bachngb:claude/sweet-hugle-14f9cb

Conversation

@bachngb

@bachngb bachngb commented Apr 20, 2026

Copy link
Copy Markdown

No description provided.

bachngb added 30 commits April 13, 2026 23:13
… focus on security engineering, as well as my journey and skills in the field.
…and updating some details about my background and current pursuits. Also made a minor tweak to the "Hero" section for better clarity.
    src/components/footer.js
    src/components/sections/about.js
    src/components/sections/hero.js
bachngb and others added 19 commits April 18, 2026 23:48
…and update the footer to reflect my personal brand more accurately. Additionally, I will refine the language in the hero and about sections to better convey my focus on building secure systems and my background in the field.
- Add rel="noopener noreferrer" + target="_blank" to all external links in about, featured, hero, and projects sections to prevent tabnabbing
- Add HTTP security headers (X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy) via static/_headers for Netlify
- Validate post slugs in gatsby-node.js to guard against path traversal
- Move GA tracking ID to GATSBY_GA_TRACKING_ID env var with fallback
- Serve only woff2 fonts (drop woff), change font-display to swap to eliminate FOIT and 8 redundant font requests
- Scope querySelectorAll to #content to avoid full-document DOM scan on every page load
- Add will-change: filter to image wrappers in about and featured sections for GPU compositing
- Wrap onKeyDown (jobs), projectInner (projects), and items array (hero) in useCallback/useMemo

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove the Featured and Projects sections and replace them with a new
Writing section that showcases Substack posts and links to
https://substack.com/@bachng.

- Add src/components/sections/writing.js: 3-column post card grid with
  bookmark icon, date, title, excerpt, tags, and external link per card;
  includes Show More/Less toggle and a "read all on substack" link
- Add content/writing/: three sample post markdown files the user can
  replace with real Substack post URLs and content
- Update src/pages/index.js: swap <Featured /> + <Projects /> for <Writing />
- Update src/components/index.js: export Writing instead of Featured/Projects
- Update src/config.js: rename nav link "Work" -> "Writing" pointing to /#writing

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Delete src/components/sections/featured.js and projects.js (dead files)
- Delete content/featured/ and content/projects/ (old template content)
- Replace gatsby-source-filesystem 'projects' with 'writing' in gatsby-config.js
- Rewrite archive.js to list content/writing/ posts with Year/Title/Topics/Link columns
- Add 'view the archive' link to Writing section alongside Substack link
- Add Link import to writing.js for internal archive navigation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- New Community section with upcoming/past event cards and Netlify Forms subscribe CTA
- Netlify CMS (Decap) at /admin for managing events and writing posts
- Sample community event content (2 upcoming, 2 past)
- static/images/uploads/ for CMS-managed event photos
- Wire up: index.js, components/index.js, config.js, gatsby-config.js

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…scribe

- Add api/auth.js + api/callback.js: Vercel serverless functions that
  handle GitHub OAuth flow so Decap CMS works without Netlify
- Update config.yml backend to use base_url + auth_endpoint pointing
  to the new API routes; MFA comes from GitHub account settings
- Replace data-netlify form with Formspree action (Netlify Forms
  does not work on Vercel)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace basic HTML form with @formspree/react useForm hook (mkokzdva).
Adds success state, submitting disabled state, and field-level
validation errors — no page reload on submit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@netlify

netlify Bot commented Apr 20, 2026

Copy link
Copy Markdown

Deploy Preview for brittanychiang-v4 ready!

Name Link
🔨 Latest commit 946efd4
🔍 Latest deploy log https://app.netlify.com/projects/brittanychiang-v4/deploys/69e6638dcd08ca0008ef3c52
😎 Deploy Preview https://deploy-preview-353--brittanychiang-v4.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

bachngb and others added 3 commits April 21, 2026 02:33
The /gatsby subpath does not exist on @vercel/analytics v1; /react is
the correct subpath for any React app including Gatsby. Also bump the
dependency to ^1.3.1 which is the current stable.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Previous deploys registered a Gatsby service worker that cached a 404
for /admin/config.yml. Two changes:

- static/admin/index.html: on load, unregister any existing service
  worker and clear its caches, then reload once so Decap CMS fetches
  config.yml fresh.
- gatsby-config.js: exclude /admin/** from workbox precache and mark
  /admin + /api as navigation fallback denylist so the SW never
  intercepts those routes again.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
gatsby-plugin-offline@3 bundles Workbox v4, which uses the older
Blacklist/Denylist naming. The v6 name (navigateFallbackDenylist) and
the globIgnores key are rejected by joi validation, failing the build.

Drop the unsupported keys; the SW unregister script in admin/index.html
is what actually prevents the stale cache from serving a 404 anyway.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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.

1 participant