CV Hub

Changelog

Version history of CV Hub — curated highlights. Full technical changelog: CHANGELOG.md · Releases

1.6.02026-08-30
  • ✦ AddedATS-safe PDF resume — a single-column version built for pasting into job-portal upload forms, alongside the polished two-column one
  • ✦ AddedCase-study pages now support YouTube video embeds, code blocks, deep-linkable section anchors, and inline code formatting; showcase cards can use a looping video cover instead of a static image
  • ✦ AddedAuto-generated social preview cards — one per language, built from real CV data instead of a placeholder
  • ✦ Addednpm run init — a one-command reset for a fresh fork, so a new user starts from a blank CV instead of someone else's
  • ✦ AddedCustom domain support
  • ✦ AddedStructured data (JSON-LD), hreflang, and per-page SEO metadata — search engines and social previews now see real, page-specific content instead of one generic string site-wide
  • ✦ AddedPrinting the page (Ctrl+P) now gives a clean document instead of a dark-theme screenshot
  • ✦ AddedDownload buttons are now visually prioritized (PDF first), grouped by audience, and configurable per deployment
  • ✦ AddedOptional "Made with CV Hub" footer credit — on by default, one line in site.yml to remove
  • ✦ Added/quickstart and /get-started — short links to the CV Hub quickstart section
  • ✦ AddedFull English translation of the data/field reference doc (docs/INFO_en.md) — previously Russian-only
  • ✎ ChangedUpgraded to Astro 7 — closes every outstanding dependency advisory (0 vulnerabilities, down from 15); requires Node 24 to build locally
  • ✔ FixedThe 404 page now renders with the site's full layout instead of a broken, doubled document
  • ✔ FixedFavicon was committed but never actually linked — fixed
  • ✔ FixedCase-study images now load faster and no longer shift the page layout while loading
  • ✔ FixedSocial-preview images and canonical links had broken or duplicated URLs across the site — fixed
  • ✔ FixedCI no longer sends a false "build failed" alert when a deploy run gets superseded by a newer push
  • ✖ Removed~5.1 MB of unused media and duplicate files cleaned out of the repository
1.5.52026-08-26
  • ✦ AddedCase-study video block — type: video content block, either a silent autoplay loop (short clips) or poster + controls (longer clips)
  • ✦ AddedCI workflow — pull requests now run the full generation pipeline (merge → DOCX/TXT → PDF → Astro build) and upload the generated resumes and site as downloadable artifacts, so a broken build or malformed YAML is caught before it reaches main
  • ✦ AddedRelease workflow — publishing a GitHub Release regenerates the resume documents and attaches all PDF/DOCX/TXT files to it, making every version a self-contained CV snapshot
  • ✦ AddedDependabot — weekly grouped npm updates and monthly GitHub Actions updates; every update PR is verified by the CI pipeline instead of being merged blind
  • ✦ AddedNode version pinned via .nvmrc and package.json engines (>=24), matching the CI runner
  • ✎ ChangedCI: GitHub Actions runner upgraded to Node 24
  • ✎ Changedpackage.json version synced to the changelog version (was stuck at 0.0.1 while the project shipped 1.5.x)
  • ✎ ChangedCI: the deploy build step split into named per-stage steps (merge / DOCX+TXT / PDF / Astro) — same runner and cost, but the Actions UI now shows per-stage timing and points at the exact stage that failed
  • ✎ ChangedCI: PDF export now drives the runner's preinstalled Google Chrome (channel: chrome) instead of downloading Playwright's chromium — removes the cdn.playwright.dev download that was stalling and hanging deploys; the Playwright browser-cache step was dropped. Local builds still use Playwright's bundled chromium
  • ✎ ChangedResponsive breakpoints consolidated from seven ad-hoc values to two — 768px (desktop/mobile base: header, fonts, paddings, animated background) and 960px (multi-column CV and showcase grids); mobile container side padding tightened
  • ✔ FixedPDF export now HTML-escapes all interpolated CV data (company names, bullets, contacts, skills) — a stray < or & in a field no longer breaks or injects into the generated PDF
  • ✔ FixedMobile header — the Role dropdown button rendered larger than the nav links (16px vs 14px, wider padding) because a later .dropdown__trigger { font: inherit } overrode the mobile rule; the mobile rule's specificity was raised so the button now matches the links
  • ✖ RemovedTwo unused dependencies — hast-util-parse-selector and serve were not imported or referenced by any script
1.5.42026-06-12
  • ✦ AddedClick-to-zoom lightbox for case-study images — clicking any Deep Dive image opens it fullscreen; close via backdrop click, close button or Escape
  • ✦ AddedSEO: sitemap.xml (via @astrojs/sitemap, covers all profile × language routes) and robots.txt pointing to it
  • ✦ Addedmerge.mjs validates the profile slug === spec invariant and fails fast with a clear message, preventing silent desync between a profile's URL and its CV/download files
  • ✎ ChangedTags de-emphasized — removed borders and muted text on Platforms/Stack/Tags pills so the identical-looking groups stop competing for attention and section hierarchy reads clearer
  • ✎ ChangedCI: Telegram notification now passes secrets and context through an env block instead of inline ${{ }} interpolation in the shell script
  • ✔ FixedAnimatedBackground performance — reduced orb blur (80px → 60px), slowed drift cycles to 16–22s and removed scale() from keyframes so the blurred layer is cached instead of re-rasterized every frame; cuts desktop scroll/idle jank
  • ✔ FixedShowcase LCP — first card with an actual image cover now loads eager with fetchpriority=high; remaining covers stay lazy
  • ✔ Fixedi18n: showcase card labels (Platforms/Stack/Tags/Featured) on non-default-language lists no longer fall back to English literals — a stray [lang] index on an already-resolved string was dropping the real translations; now correctly localized and ready for additional languages
  • ✔ FixedRole dropdown accessibility — added aria-haspopup, aria-controls and aria-expanded synced with open state; removed a stray always-true active class on the trigger
  • ✔ FixedRemoved hover-lift from passive cards (Experience and others) — the global .card:hover translate/shadow was a false affordance on non-clickable cards; hover now stays only on interactive showcase project cards
  • ✔ FixedBuild robustness: home page now guards a missing merged CV artifact with a fallback instead of crashing the build (matches the dynamic profile route)
  • ✖ RemovedDead code in the dynamic showcase route — unused featured/regular/archived split, leftover CSS classes and a stray ... token in the card markup
1.5.32026-04-26
  • ✦ AddedPlayStationWaves component — XMB-inspired filled sine-wave canvas background with configurable props, time-of-day hue shift and non-deterministic start position
  • ✦ AddedWaveLines component — XMB-style glowing stroke wave lines canvas background with symmetric line layout and offscreen glow compositing
  • ✦ AddedGitHub Actions Telegram notification — deploy.yml notifies a Telegram bot on deploy success or failure via PIPLINE_BOT_SECRET and CHAT_ID secrets; gracefully skips if secrets are not configured
  • ✎ ChangedTelegram notification now covers build failures — notify_telegram uses needs: [build, deploy] with if: always() so a failed build job also triggers a notification
  • ✎ ChangedTelegram notification message extended with branch name and short commit SHA
  • ✎ ChangedCI: Playwright Chromium now cached by package-lock.json hash — saves ~2 min per deploy on cache hit
  • ✦ AddedLICENSE — MIT license added to repository
  • ✦ AddedARCHITECTURE.md — root-level architecture overview: stack, data pipeline, routing, theming, background components, CI/CD, trade-offs
  • ✦ AddedCHANGELOG.md — root-level changelog in Keep a Changelog format covering full version history
  • ✔ FixedWaveLines glow compositing bug — destination-in mask was applied to full canvas each iteration, destroying background alpha at edges; fixed via per-line offscreen canvas
  • ✔ FixedSticky header now works unconditionally — body height: 100% constrained scroll to html element; changed to min-height: 100%
  • ✔ FixedRole dropdown — replaced CSS :hover toggle with JS click-toggle and click-outside to close; menu no longer closes on accidental cursor exit; added smooth opacity/transform transition
  • ✔ FixedScroll jank — body background-attachment: fixed replaced with a fixed pseudo-element layer; gradients no longer repaint on every scroll frame
  • ✔ FixedRemoved mix-blend-mode: overlay from the scanline noise layer — eliminated a fullscreen compositing pass per frame with no visible difference at 0.06 opacity
1.5.22026-04-05
  • ✔ FixedMobile pages performance — removed unnecessary CSS rules
  • ✔ FixedLanguage switcher on showcase pages now correctly switches between project translations
  • ✦ AddedShare button for case study pages (shareable: true in YAML, added to example_cs)
  • ✎ ChangedProjectCard translation props — simplified from object-based to direct strings
1.5.12026-04-02
  • ✔ FixedLanguage switcher on Showcase list now correctly switches language instead of redirecting to home
  • ✔ FixedLanguage switcher on Case Study pages now correctly switches language of the current project
  • ✔ FixedBack button and Showcase nav link now preserve current language across navigation
  • ✔ FixedProject card links now respect BASE_URL — no more hardcoded /cv_hub/ prefix required in YAML
  • ✔ FixedProjectPage mobile layout — horizontal padding now correctly applied on small screens
  • ✔ FixedShowcase slug setup for other languages was incorrect for projects with flags archived and featured
1.5.02026-03-31
  • ✦ AddedCase Study pages — dedicated per-project pages with flexible content structure
  • ✦ AddedBlock-based content system (image, text, divider, links) for project storytelling
  • ✦ AddedProjects can now include full narratives — architecture, decisions, and outcomes
  • ✦ AddedShowcase extended with deep-dive pages (Notion-like but static and controlled)
  • ✦ AddedPer-project routing for case studies
  • ✎ ChangedShowcase transformed from preview-only to entry point for detailed project pages
1.4.12026-03-29
  • ✎ ChangedShowcase style fixes
  • ✎ ChangedError page 404 works correctly now, fallbacks to main page with default language
  • ✎ ChangedDropdown styles moved from /changelog to global.css
  • ✎ ChangedFixed linking in footer menu in Lyaout
1.4.02026-03-12
  • ✦ AddedMulti-profile system — N profiles × N languages from one YAML source
  • ✦ Addedmerge.mjs — YAML merge pipeline with base + spec delta model
  • ✦ Addedprofiles.yml — profile registry (optional, graceful fallback)
  • ✦ Addedlanguages.yml — language config, dynamic language switcher
  • ✦ Addedi18n system — translations.yaml + makeT() helper with fallback chain
  • ✦ AddedProfile dropdown in header (Role ▾)
  • ✦ Added[...slug].astro — dynamic routing for all profile × language combos
  • ✦ AddedPer-profile PDF/DOCX/TXT generation for all profiles and languages
  • ✎ Changedgenerate-resume.js and resume-export-pdf.mjs now iterate public/cv/ dynamically
  • ✎ ChangedDownload links now point to profile-specific files (resume_en_devops.pdf)
  • ✖ Removedru.astro and showcase/ru.astro — replaced by [...slug].astro
1.3.12026-03-11
  • ✎ ChangedsiteUrl resolved dynamically from GITHUB_REPOSITORY — forks work without config
  • ✎ ChangedDropdown styles moved to global.css
  • ✦ AddedREADME, ENGINEERING.md and INFO.md fully updated to reflect new architecture
1.3.02026-03-06
  • ✦ AddedURL-based theme switching (?theme=peachy)
  • ✦ AddedOG tags and Twitter Card meta
  • ✦ AddedAnimated background
  • ✦ AddedLighthouse badges in README (100/100/96/100)
  • ✦ AddedChangelog page with version history
1.2.02026-03-05
  • ✎ ChangedStyle and structure updates
  • ✎ ChangedDocumentation updated
  • ✦ AddedProjects pin & archive options
  • ✎ ChangedDOM tree and CSS structure refactor
  • ✔ FixedMobile layout fixes
  • ✔ FixedIndex page fix
1.1.02026-03-04
  • ✦ AddedAutomated PDF generation via Playwright
  • ✦ AddedNew theme presets
  • ✦ AddedTheme previews in docs
1.0.02026-03-03
  • ✦ AddedInitial release — YAML-driven CV site
  • ✦ AddedTwo languages (EN/RU)
  • ✦ AddedExport to PDF, DOCX, TXT
  • ✦ AddedGitHub Actions CI/CD deploy