What's new in CVTailor

Every release and what it changed for you. The list is generated from the work that actually shipped — nobody writes it by hand.

Release by release

Newest first. Internal work — tests, tooling, refactoring — is left out, so what is here is what you can notice.

The change descriptions are in English in every language: they come straight from the record of the work that shipped, and nothing translates them without a person in the loop.

Version 2026.09.1

  • Fixed

    Emit JSON-LD string values through tojson, not raw interpolation

  • Fixed

    No in-stock offers when checkout is off; fill FAQ prices

  • New

    Structured data on pricing, templates and breadcrumbs

  • Fixed

    The shared footer is chrome, and dates no page

  • Fixed

    A malformed change list degrades to no updates, never a 500

  • New

    A public /updates page, generated from the releases themselves

  • Fixed

    A template page is published the day its own sentence is written

  • Fixed

    Declare the previews' real pixel size

  • Fixed

    A page's date tracks the copy it borrows, not just its own family

  • Fixed

    The app footer links the guides hub too

  • Fixed

    Reset links always name a locale, "en" included; reset page is noindex and robots-excluded under every prefix

  • Fixed

    Reset links keep the page's locale so the reset page is localized

  • New

    Forms state the password rule and translate Supabase's refusal instead of pre-enforcing it

  • Fixed

    Career-gap guide no longer promises a chronological layout

  • Fixed

    Dutch summary-guide intro says "geen lijst met bijvoeglijke naamwoorden"

  • Fixed

    Russian summary-guide step 4 gets its predicate back; Italian intro drops a stray article

  • Fixed

    Summary-guide intro no longer calls a summary an "objetivo" in pt-br; drop a stray article in pt-br and es

  • New

    Two new guides — CV summary and career gap — in all eight languages

  • Fixed

    A listing entry without a usable name is a listing failure, not a skipped object

  • Fixed

    Dry runs name uninspectable objects and exit 1; malformed listing payloads exit 1 with a diagnostic

  • Fixed

    A reversal that raises must not cost the erasure its response

  • Fixed

    Stop /application-answers 404ing on every /app load

  • Fixed

    Reverse a charge the erasure could not refund

  • Fixed

    Bound the erasure tombstone; report a charge it cannot reverse

  • Fixed

    Retry a refund the erasure sweep could not confirm

  • Fixed

    Do not charge for a job whose result was refused

  • Fixed

    Treat a claim refused mid-erasure as a failed claim

  • Fixed

    Refund the reservation when a job claim fails

  • Fixed

    Erase job records with the account; bound their retention

  • Fixed

    Stop storing executable HTML; deny renderer subresources

  • Fixed

    Reject cross-site writes, gate /status, add response headers

  • Fixed

    URL-encode PostgREST filter values; unify field validation

  • Fixed

    Refuse to boot a deployment with authentication disabled

  • New

    Version Supabase configuration in the repo (config-as-code)

  • New

    Add Russian and Brazilian Portuguese language support

  • Fixed

    Close a signature bypass and bound text extraction by work, not by container

  • New

    Publish the Art. 50 position, sign the marking, and make both reachable

  • New

    EU AI Act Art. 50(2) provenance marking + /verify detection

  • Fixed

    Stop landing page auto-redirect to /app for logged-in users

  • Fixed

    Per-column page fit so the CV sidebar is never clipped

  • New

    Daily operator digest — new signups + inbound support email

  • Fixed

    QA findings — welcome-screen export, template highlight, German cookie register

  • New

    Gthread worker — slow Storage no longer freezes the whole app

  • New

    Contact precedence, 20-file account cap, content dedupe

  • New

    /profile page — contact fields form + document library

  • New

    Structured contact fields API — edit the master profile's personal subset

  • Fixed

    A delete of a missing Storage object is not a failure

  • New

    Add browser tab icon (favicon)

  • New

    Library selection UI — checkboxes, counter, cap, unreadable state, i18n

  • Fixed

    Make account deletion actually erase everything, and report when it cannot

  • Fixed

    Gate /source-material* routes and stop logging personal data

  • New

    Bot protection for signups — Turnstile CAPTCHA + per-IP free-credit cap

  • Fixed

    Fit-report language-mismatch badge never fires on restored history

  • Fixed

    Language switcher invisible on marketing-page navs

  • Fixed

    ATS tooltip clipped by unified-card overflow:hidden

  • New

    Reserve/finalize/refund credit system

  • New

    Sync cv_html to history on template change

  • Fixed

    Restore fit assessment + ATS score on CV reload

  • New

    Save and display ATS score alongside fit score

  • New

    Collapsible lazy-loaded CV preview + QA Group N

  • Fixed

    Reduce iframe height + restore sets cv-name-input

  • New

    Add Open in Editor restore flow + UX improvements

  • New

    Save CV generations and add history page

  • Fixed

    Replace floating cookie btn with footer link on terms/privacy pages

Everything here is already live

Upload your CV and a job description, and you are using the newest version.

Start free