Skip to content

Changelog

What shipped on getfolio.dev. New features, improvements, and fixes.

Your edits now stay in a draft until you publish

  • Edits stay in your draft until you publish: Nothing goes live on its own any more. Edits and Leon fixes land in your draft, the editor header always says where you stand (live, unpublished changes, publishing), and one Publish button ships it. You can discard unpublished changes in a click to return to what is live, and an edit typed while the previous one was still saving is no longer lost.
  • Leon only writes what your profile says: When a number is missing, Leon leaves a placeholder such as [how much?] instead of inventing one, and you cannot publish while a placeholder remains. Your list items stay exactly as you wrote them, only your sentences are rewritten, and every rewritten line is checked against your own text before it reaches your draft. Leon also stops looking cheerful while a critical fix is open.
  • Undo anything Leon changed: Every change Fix all makes can be reverted on its own, or the whole run undone at once. What changed lists the removed and added lines, so you can read exactly what Leon touched before deciding to keep it.
  • Version history on Pro: Every publish is kept and named after what changed. Restoring one loads it into your draft, so your live page stays exactly as it is until you publish again.
  • Onboarding without GitHub: No GitHub account needed. Leon asks three short questions and drafts your portfolio from your answers. With GitHub connected, the draft offers every synced repository with a search field. Each step explains itself, your name is prefilled, you can sign out at any point, and there are no dead ends.
  • Bulk actions in the testimonial inbox: Duplicate submissions are grouped together, and you can approve or decline in bulk. Each choice tells you how many testimonials it affects before you confirm.
  • One plan list, and the badge is yours to hide: Pro can hide the Made with getfolio.dev badge, and on free plans the badge is now a real link back to getfolio.dev. The same plan list appears on the landing page, pricing and the upgrade dialog, and every Pro feature now opens that dialog in place instead of a page that did not exist.
  • Clearer domain status, plus a round of fixes: A custom domain whose status cannot be checked now says so, instead of telling you to remove it. Alongside that: the support form opens for visitors who are not signed in and is no longer hidden behind the cookie banner, dates read the same way whatever your browser language, page titles name the page you are on, and dialogs lost a stray horizontal scrollbar.

Your custom domain now owns your portfolio's SEO

  • Search engines now index your own domain: Your portfolio on a custom domain is no longer treated as a copy of its getfolio.dev page. Your domain is declared as the main address through the canonical link, social previews and structured data, the getfolio.dev page points to it, and your domain serves its own robots.txt, sitemap and RSS feed. Page titles no longer end in getfolio.dev once you are on your own domain.
  • The www address is set up for you: Adding a custom root domain now also sets up its www address, which redirects to your domain. The settings page shows the one optional DNS record to add if you want www covered.
  • Clearer handling when you add a second domain: Adding a second custom domain while one is already connected is now refused until you remove the first. Previously the old domain could stay live in the background, which made it hard to tell which address was actually serving your portfolio.

"Back to profile" now works properly on custom domains

  • Back to profile works on custom domains: If you serve your portfolio on your own domain, the "Back to profile" link on your blog, articles and testimonials pages was dropping visitors onto a page not found. It now takes them back to your portfolio where it should have all along.

A resume per language, new themes, and testimonials you can approve again

  • Testimonials can be approved and declined again: Since May, a testimonial sent to you sat waiting with no way to accept it. The editor now shows how many are pending, opens them in full, and the email link takes you straight there. Approved ones go live at once, and a decline can be undone for a few seconds. Your public page also shows them in the order you set.
  • One resume per language: You can now upload one resume per language, one on the free plan and five on Pro. Visitors still download in one click and get their language when you have it, with a small menu for the others. In the editor each language has its own card with Open, Replace, Make primary and Remove. Replace and Remove work, and the language button now sits flush with the Resume button.
  • New themes: Bento lays your profile out as a mosaic of coloured tiles sized by what matters most. Aero is optimistic daylight, white type on a deep blue sky with glossy panels. Scrapbook is a workbench seen from above, every fact taped to a cutting mat. Chrome pours your name in liquid metal above a quiet spec sheet. The contribution calendar now shows a full 53 weeks in every theme.
  • Publish without waiting on a review: The Publish button now opens on « Review with Leon, then publish », and its menu adds « Publish without review » along with the kind of profile Leon reviews you as. When the day's reviews are used up, publishing directly becomes the default, and quota and cooldown messages say in plain words when you can try again, with a live countdown.
  • A review can be tucked away: Click outside it or press Escape and it shrinks to a notification in the corner of the preview instead of disappearing, then tells you when Leon is done and your score. Only « Cancel review » stops it. While Leon reads, the editor stays locked so the score matches exactly what you publish.
  • Leon now reads your resume: He flags one that is more than a year old, and on Pro a language you list with no resume in it. Both findings clear on their own once you upload the missing file.
  • Reviews stay in sync with your edits: The review tray now tells you when you have edited since the review and offers a one-click re-review, and it names the kind of profile the score was given for. Leon no longer asks what kind of profile you have on every publish, and a score no longer appears next to the previous review's suggestions.

Upload a real PDF resume, plus two new themes

  • Upload a real PDF resume: You can now upload a real PDF resume and let a recruiter download it straight from your portfolio. Drag it in from the editor, replace or remove it in two clicks, and it is live on your public profile with no publish step. The file is checked before it is stored, served from a link that expires, and named after you. The old Resume link, which printed the page you were already looking at, is gone.
  • See your resume downloads: Every plan now shows how many times your resume has been downloaded, the free plan included. A visitor who opens it twice in a day counts once, and your own checks never count. Pro also shows which sites those downloads came from.
  • Two new themes: Catalogue and Acetate: Catalogue sets your work as numbered lots on bone paper, with every fact carrying its own label, so a reader without a technical background never has to guess what they are looking at. Acetate borrows the boxed-software manual, with a stepped tab rail whose steps grow with the length of each section, so a reader sees where the substance is before reading a word.
  • A portfolio now earns its place in search: Your pages stay live and shareable the moment you publish. What waits is the sitemap, /explore and the search-engine robots tag: those hold until you have connected GitHub or filled in a couple of sections, so search results and the explore feed only carry portfolios with something in them.
  • Smaller editor fixes: On a phone, the close button on every field editor is a full-size tap target instead of a small cross. Escape now closes the avatar crop dialog.

Leon now suggests from the full theme library

  • Writing sources save correctly: Saving your writing sources used to revert the fields on screen, which made it look like the change had not stuck. The form now keeps what you entered.
  • Theme polish: The share button no longer draws a white halo on dark portfolios, and the Terminal theme's contribution graph keeps its phosphor green instead of drifting blue.
  • Leon can suggest any theme in the library: Leon was only ever picking from part of the theme library, which meant some good matches never made it into a suggestion. It now considers everything available, so the recommendations you get reflect the full catalogue.
  • A round of accessibility fixes: The skip link now jumps past the navigation instead of stopping in front of it. Collapsed FAQ answers are no longer reachable by keyboard while hidden. Screen readers announce status messages that used to pass silently. Dialog close buttons stay reachable on mobile when content runs long. Faint text and badges now meet contrast standards, including Leon's critical badge and the landing rank pills.
  • Pricing shows the right pinned project limit: The pricing page listed 3 free pinned projects. The free plan has always allowed 6, and the page now says so.

Publishing now updates your public pages instantly

  • Publishing updates your public pages instantly: When you publish your portfolio, your public pages now reflect the changes right away instead of taking a few minutes to catch up. No more refreshing and waiting to see your latest work go live.
  • RSS feeds work for every profile: Public RSS feeds no longer fail for profiles that do not have an avatar or a display name set. Your feed stays available regardless of how complete your profile is.

Two new themes and a more generous Free plan

  • Hearth theme: a warm, cozy card-based light theme for your portfolio
  • Prism theme: a vibrant dark theme with an electric magenta-to-cyan gradient
  • Free plan: now includes 6 pinned projects, up from 3
  • Pro pinned projects: genuinely unlimited now, instead of silently capping at 6
  • Pro upgrades: no more duplicate welcome email or double-counted upgrade when Stripe redelivers an event
  • Contact form: the rate limit now holds across servers instead of resetting whenever a new one starts
  • Brutalist theme: now renders in its intended Space Grotesk typeface instead of falling back to a system font
  • Security: hardened outbound fetching of avatars and profile links

Meet Leon, your AI portfolio reviewer

  • Leon reviews your portfolio, scores it across weighted pillars, and suggests concrete improvements
  • Generate a full portfolio draft from your GitHub profile in one step during onboarding
  • Fix with Leon: one-click AI rewrites for your bio, about, and project descriptions, with a preview before you apply
  • Fix all with Leon: clear every rewritable issue in one pass, then see exactly what Leon changed and what still needs your hand
  • Crop, zoom, and reposition your profile photo right in the editor on any theme, or use your GitHub picture
  • Reviews adapt to your developer role, weighting your score and guidance accordingly
  • Edit every section directly on the live preview with a new inline editor and Edit/Preview toggle
  • Pin GitHub repos or add custom projects, reorder them by drag and drop, and show or hide any section
  • New Brutalist portfolio theme and a dedicated pricing page

Comparison pages and GEO improvements

  • Added comparison pages: getfolio.dev vs GitHub Pages, Read.cv, and Polywork
  • Added /themes page with structured data for all portfolio themes
  • Added HowTo JSON-LD schema on homepage for AI engine extraction
  • Improved brand consistency across all external-facing surfaces
  • Added /what-is-getfolio entity page for AI engine citation

Structured data and SEO foundation

  • Added FAQPage JSON-LD schema with 9 developer-focused questions
  • Added SoftwareApplication JSON-LD with pricing and feature list
  • Added llms.txt and llms-full.txt for AI engine crawlers
  • Enhanced Person JSON-LD on profile pages with sameAs, knowsAbout, and publisher
  • Added dateModified freshness signals on all profile pages

Error handling and monitoring

  • Added Sentry error tracking and reporting
  • Implemented NotFoundScreen component across all not-found pages