All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added next-themes for user control of color mode
- Upgrade to Tailwind 4.0 Beta
- Most Tailwind config has moved from
tailwind.config.ts
to CSS files - This change is 100% compatible with existing résumé config, but if you have modified Tailwind config for the project you will need to migrate your custom configurations to v4
- Most Tailwind config has moved from
- Other dependency updates
- Stars display in accent color in both color modes
- Styles for list items in a
<Prose>
component
Migration
- Syncpack for dependency management
- Dependency upgrades
- Including React 19
- Including Next.js 15
- Substantial overhaul of ESLint setup
- Flat config
- eslint-plugin-unicorn for additional strict checks
- Contentlayer schema
- Replace
PreviousTitle
type with a genericProfessionalTitle
type titles
is now a required field onProfessionalExperience
- Replace
- Substantial style updates
- New structure of
titles
fields allows us to create a visual timeline of your experience at a given organization - Overhauled
Button
design
- New structure of
- Yeeted most Vercel (and Twitter) requirements for reasons
- Dependency upgrades
- Switch to the Contentlayer fork per advice from maintainers
- Dependency upgrades
- Use Turbopack by default
- Dependency upgrades
- License file
- Dependency upgrades
- Allows you to include previous titles in a professional listing
- Added by @rachelslurs in #516
- Dependency upgrades
- Switch to using a route handler for PDF rendering
- The
/pages
folder is finally gone 🎉
- The
- Dependency upgrades
- Using Heroicons for general use icons
- Using Simple Icons for branded icons
- This is a breaking change since you'll need to update
edit-me/config/links.ts
with the new icon imports
- This is a breaking change since you'll need to update
- Dependency upgrades
- Use Google fonts CDN to grab font files for the PDF
- Dependency upgrades
- An
.nvmrc
file to default to the latest LTS version of Node.js
- Dependency upgrades
- Dependency upgrades
- Includes Husky 9.0 migration
<Prose />
component improvements- Adds space after paragraphs
- Add
text-balance
to a few headings in case of long titles
- Dependency upgrades
- Includes an upgrade to Next.js 14.1
- Dependency upgrades
- This includes upgrades to React PDF that should internally solve the longstanding issue with copy/paste
- Dependency upgrades
- Dependency upgrades
- Set
slate
as the default neutral color - Updated OG image screenshots for the documentation
- Updated screenshots for the documentation to reflect Radix Color changes
- Re-exported custom fonts
- A copy/paste issue when using fonts hasn't been fixed upstream, but running my font files through a glyph editor and re-exporting seems to fix the issue
- This will at least solve the issue for new users of the résumé builder, and we'll see if the upstream issue gets fixed eventually
- Dependency upgrades
- Updated to Radix Colors 3.0. I'm not considering this a breaking change, but your selected color palette will look different than it used to.
- Dependency upgrades
- Updated to Next.js 14, a few changes related to deprecations
- Removed
opentelemetry
resolutions- The conflict seems to be resolved in Next.js
13.4.19
- The conflict seems to be resolved in Next.js
- With Radix Colors 2.1.0 you can now use
ruby
,iris
, andjade
as your accent color
- Dependency upgrades
- Dependency upgrades
- Export sorted copies of
allProfessionalExperiences
andallAchievements
to match order in the CMS folder
- Use vite-tsconfig-paths to resolve paths from tests automatically
- Dependency upgrades
- WARNING: this upgrades Radix UI Colors to 2.0.x which may change the way your color choices look
- Switched to
"type": "module"
inpackage.json
- Migrated some config files to ESM
- Dependency upgrades
- Prettier 3.0
- Dependency upgrades
- Temporarily added dependency overrides to address the existing issue with Contentlayer
- Dependency upgrades
- Dependency upgrades
- Dependency upgrades
- New unit tests
- Inconsistent TS error due to exports in
layout.tsx
Migration
- Contentlayer integration for typing and reading the Markdown CMS
- Switch from Jest to Vitest
- Renamed
cms
folder tocontent
- Changed
hobbies
file toadditionalInfo
- Added a
title
field to theadditionalInfo
content file
- Added a
- Changed
institution
toorganization
forachievement
type - Switch
clsx
totwMerge
- Use Class Variance Authority for some components
- Use
opengraph-image
named route handler instead of custom API route
resumeConfig.appTheme
property- If set to
ThemeSetting.System
, Tailwind will usemedia
mode to set the color theme - If set to
ThemeSetting.Light
orThemeSetting.Dark
, Tailwind will use theclass
mode to set the color scheme - The app layout applies the
dark
class ifresumeConfig.appTheme
is set toThemeSetting.Dark
- If set to
resumeConfig.pdfTheme
property- Will set the color theme only for a generated PDF
- Can be set independently of the app theme
- Defaults to
Theme.Light
for printing purposes
- All PDF icons use the color helper functions
- Helper functions for getting Radix colors based on a requested shade and your
resumeConfig
settings - Generate app icons using the new image generation and file-based metadata features
- Add a file-based metadata route for generating a sitemap
- Dependency upgrades, including Next.js 13.3
- The
ogImageTheme
setting inresumeConfig.ts
is now calledimageTheme
since it also applies to icon generation- It also uses a
Theme
enum instead of a plain string now
- It also uses a
- Minor styling adjustments
- All manually created static images used for icons and favicons
- Migrated the OG generator from
/pages/api/og.tsx
to a route handler at/app/api/og/route.tsx
- This is a non-breaking change from the perspective of using the API, but if you've already modified your OG generator to customize the styles or content, you'll want to make those changes in the route handler now
- Styles for inline
code
blocks
- Dependency upgrades
- Rewrote Tailwind config in TypeScript (a Tailwind 3.3 feature)
- Use windy-radix-palette to manage colors, with a few personal touches
- Supports automatic dark mode, so I was able to remove most
dark:
prefixes - Supports semantic color names so I am able to keep the
neutral
andaccent
conventions - Adds an
accentContrast
color name to determine the appropriate contrasting color for configured accent color (Radix "bright" colors like "sky" and "mint" require black foreground text)
- Supports automatic dark mode, so I was able to remove most
resumeConfig
is now a TypeScript fileresumeConfig
now uses enums for theaccentColor
andneutralColor
properties- e.g.
accentColor: AccentColors.Blue
- e.g.
- Swap "Roboto Mono" for "JetBrains Mono" as the default monospace font
- Tailwind Typography plugin and
prose
classes- Now uses a few custom styles that are easier to control and match to the rest of the document
- Dependency upgrades
- Bundle analyzer plugin
- Wrap
getCMSIntegration
in a Reactcache
since it doesn't usefetch
internally
- Use the new Metadata API to replace
head.tsx
andDefaultTags.tsx
@next/font
is now removed and replaced with the built-innext/font
- PDF rendering now supports emojis
- Requires connection to Twemoji at runtime
- Loads a monospace font in case you need to support code samples
- Use the
font-mono
Tailwind class anywhere you want monospace
- Use the
- Dependency upgrades
- Default to Albert Sans as the PDF font to match the web look and feel
- Adjust font sizes accordingly
- Don't hyphenate paragraphs in PDF
- Switch to rendering SVG components for PDF icons instead of raster images
- Use the
notFound
function to generate an error if private key doesn't match- Newer version of Next is able to prebuild the page correctly now
- Improved error page for incorrect private key
- Improved rendering of ordered and unordered lists in PDF
- Thanks to justin-hackin for the find and custom renderer function
- Minor flexbox improvements
- Switch to percentage layout of sidebar and main content on PDF instead of basing it on inches
- Text selection colors correctly match the chosen theme
- Dependency upgrades
- Dependency upgrades
- Dependency upgrades
- Image generation generator integration
- Newly designed web layout
- Migrated to Next.js 13 server component layouts
- Migrated to Tailwind CSS
- Renamed "Education" to "Achievements" to cover more general uses
- Dependency updates
- Dependency updates
- Default to
display=swap
for loading Google fonts
- Dependency updates
- Replace
dessert-box
with custom component
- Jest config
- Next work will be to start filling in tests
- Upgrade to React 18
- Dependency updates
/private
now passes thehobbies
,links
, andprivateInformation
fields that are required by child components/private
will now pass the secret key to the PDF link- PDF generator can now receive a
secret
query param to correctly list private fields
- Added
copyfiles
command to commit hook
- Uses Vanilla Extract for styles
- Uses custom Vanilla Extract styles and components based on an early version of the Strum Design System
- Non-PDF styles now support dark mode
- Defaults to a Markdown integration as the CMS
- Files in the project pull data for the résumé
- Requires a code change to edit the résumé
- Uses OG Impact to dynamically generate OG share images
- Contentful and Prismic integrations are no longer supported
- With this project rewrite, we may be adding CMS integrations as extra modules over time
- No longer uses Sass or Sass modules
- No longer uses Bootstrap
- Upgraded to Next.js 12.1
- Use built-in ESLint config
- Use built-in Jest config
- Switched to React-pdf for client-side PDF generation instead of Puppeteer for serverless PDF generation
- Switched to "Source Sans Pro" as the default font
- Upgraded to Next.js 12
1.1.5 - 2021-06-21
- Upgraded to Next.js 11
1.1.4 - 2021-05-14
- Dependency updates
- Set up Husky hooks with lint-staged to work properly with Husky 6.x
1.1.3 - 2021-04-19
- Dependency updates
1.1.2 - 2021-02-22
- Dependency updates
- Updated ESLint config to work with
[email protected]
- Updated ESLint config to work with
- Opt in to
webpack5
option innext.config.js
1.1.1 - 2021-02-19
- Dependency updates
- Switched from
next-offline
tonext-pwa
- Incorrect bundle analyzer config
1.1.0 - 2020-12-21
- Supports new optional
private_information
schema type - Supports new optional environment variable
PRIVATE_KEY
- New pages at
/pages/private/[secret]
and/pages/private/[secret]/pdf
- New pages require a
secret
slug that is compared to thePRIVATE_KEY
value and returns a 401 on mismatch - New pages display
private_information
values from the CMS under "Contact Information" section - Clicking "Download PDF" button from this page also sends the secret via query to the API to validate access
- New pages require a
- Upgraded to Bootstrap 5.x beta
- Reworked many styles after the upgrade, particularly with the PDF layout
- List contact information in columns to maintain equal spacing
- Update
robots.txt
to disallow PDF layout and all private pages - Reduced opacity delta on star ratings
1.0.0 - 2020-12-19
- Test configuration using Jest and Testing Library
- Snapshot tests for the index page using each CMS integration
- Uses a new
NEXT_PUBLIC_CMS_INTEGRATION
env variable to determine selected integration - Change the way that cms functions are exported to support a global integration setting
0.4.2 - 2020-12-18
- Correct configuration for bundle analyzer
- Use correct article adjective for job title
0.4.1 - 2020-12-18
- Missing "Hobbies & Interests" section from PDF export
0.4.0 - 2020-12-18
- Support for Contentful
0.3.1 - 2020-12-17
- CMS links were not being displayed on the main page footer
- Dependency updates
0.3.0 - 2020-12-14
- Generated Open Graph and Twitter Card data in the document
<head>
- The
personal_information
schema can take atwitter_username
to include in Twitter Card data
- Author's personal information from the default
manifest.json
0.2.0 - 2020-12-14
- Extensive documentation for how to use the project
- Revamped the PDF generator to a single-page two-column layout
- Dependency updates
0.1.0 - 2020-12-04
- Initial project publish
- Supports Prismic