feat: migrate from Vite SPA to Astro with pandoc resume generation#113
Conversation
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 12 minutes and 57 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (3)
📒 Files selected for processing (26)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly refactors the project's frontend architecture by transitioning from a Vite-powered React Single Page Application to a more performant Astro static site. This change enhances build efficiency and leverages Astro's partial hydration capabilities for React components. Concurrently, the resume generation process has been streamlined and improved by adopting Pandoc, providing a more robust and flexible solution for creating DOCX and PDF versions of the resume directly from a dedicated, print-optimized Astro page. Highlights
Changelog
Ignored Files
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
1 similar comment
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
There was a problem hiding this comment.
Code Review
This pull request is a significant and well-executed migration from a Vite-based React SPA to an Astro static site, leveraging Astro's island architecture. The resume generation process has been impressively refactored to use pandoc with a robust, multi-layered fallback system. The changes across the codebase, including configuration, dependencies, application logic, and tests, are clean and consistent with the migration goals. I have a couple of minor suggestions for the new resume generation script to enhance its debuggability by logging errors during the fallback process.
| } catch { | ||
| // Fallback: use pandoc with default LaTeX engine | ||
| console.log('weasyprint not available, trying LaTeX...') |
There was a problem hiding this comment.
The catch block is currently empty. While the script correctly falls back to another PDF generation method, swallowing the error completely can make debugging difficult if weasyprint fails for an unexpected reason (e.g., misconfiguration, not just unavailability). It would be beneficial to log the error to provide more context on why the fallback was necessary.
} catch (error) {
// Fallback: use pandoc with default LaTeX engine
console.log(`weasyprint not available, falling back to LaTeX. Reason: ${error.message}`);| } catch { | ||
| // Final fallback: use Playwright for PDF | ||
| console.log('pandoc PDF failed, falling back to Playwright...') |
There was a problem hiding this comment.
Similar to the previous fallback, this catch block is empty and swallows the error from the pandoc/LaTeX execution. Logging the error here would improve debuggability by showing why the second PDF generation method also failed before falling back to Playwright.
} catch (error) {
// Final fallback: use Playwright for PDF
console.log(`pandoc with LaTeX failed, falling back to Playwright. Reason: ${error.message}`);|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
22 similar comments
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
…work entry Merge signals from HashSphere variant into canonical resume: - Label, summary, and Symbiont highlights now lead with AWS/GCP/Azure parity - Cloud Platforms skill: Azure and GCP expanded to match AWS depth - Programming skill reordered: Python, Go, TypeScript lead - Flipside Fireblocks bullet reframed as cross-cloud AWS->GCP migration - New "Independent" work entry (2026-01-present) covering radioactive-ralph (Go orchestrator) and paranoid-passwd (C/WASM/Zig, SLSA L3, Sigstore) - Flipside entry gains departureContext field noting workforce reduction; resume.astro template renders it as muted italic line - PDF/DOCX regenerated Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Resume PDF and DOCX have been automatically regenerated from updated source files. |
Summary
client:loadfor interactive components)docxnpm package and Playwright-based PDF with pandoc for DOCX generation from a new/resumeroutegap-2, tighten hero padding, fix Instrument Serifleading-tightWhat changed
Build system
index.html+src/main.tsx→src/pages/index.astro+src/layouts/Layout.astrovite.config.ts→astro.config.mjsResume generation
scripts/generate-resume-docx.ts(docx npm) → pandoc HTML→DOCXscripts/generate-resume-pdf.ts(Playwright) → kept as fallback, primary is pandocsrc/pages/resume.astro— print-optimized, zero-JS page that pandoc convertsCI/CD
release.yml:pandoc/actions/setup@mainreplaces Playwright for resume genresume.yml: Same pandoc setup for PR-triggered regenerationci.yml: Removed Playwright install step from build jobDependencies
astro,@astrojs/reactvite,docx,@vitejs/plugin-reactPreserved
Test plan
pnpm lint— cleanpnpm test— 12/12 unit tests passpnpm build— 2 pages built in ~2.3s🤖 Generated with Claude Code