Commit Graph
36 Commits
Author SHA1 Message Date
root daa623fe73 feat(mesh-bg): fade-in шейдера фона + modulepreload графа
- canvas стартует с opacity:0 и плавно проявляется (0.9s) при .is-ready
- initPageMeshShader ставит is-ready после первого кадра
- modulepreload page-mesh-shader.js для параллельной загрузки с main.js
- пересборка страниц (build:pages)
2026-09-24 21:37:40 +02:00
root b6161c92cd feat(seo): robots.txt, ai.txt, sitemap.xml, canonical/hreflang, OG/Twitter, JSON-LD, og-image, noindex служебных 2026-09-22 11:09:26 +02:00
root f947305a09 content(activity): drop trailing periods from card descriptions 2026-09-18 13:02:25 +02:00
root 8caeb3147c content(activity): apply user-edited compact-card descriptions (ru/en) 2026-09-18 12:57:08 +02:00
root b9d98a72df content(activity): rephrase compact-card descriptions to avoid repeating tag words 2026-09-18 12:30:55 +02:00
root 5bb8dc8ad2 feat(mp-card): deterministic pastel tag colors (distinct per content), padding 0.35rem 0.7rem, dark-theme aware 2026-09-18 11:14:46 +02:00
root 6d66e4cf12 feat(mp-card): color portfolio card tags with deterministic pastel palette (constant per content) 2026-09-17 22:37:22 +02:00
root 588e3a2b9d fix(mp-card): apply stack-bottom variant to portfolio section, revert activity section 2026-09-17 21:30:13 +02:00
root f1f1ead1f8 feat(mp-card): add mp-card--stack-bottom variant (text top, image bottom) and apply to mini-projects-grid 2026-09-17 20:42:13 +02:00
root 0c172aecfe fix(anchors): rename #projects → #portfolio and #mini-projects → #activity (links + targets + css) 2026-09-17 18:38:13 +02:00
root e29a0619b2 feat(lang-switch): footer shows single word — 'English' on RU pages, 'Русский' on EN; keep path-aware href 2026-09-17 18:13:30 +02:00
root 97ea48bc6f feat: per-theme accent + Activity WhatsApp(en)/GitHub cards, softer icon borders
- theme: store accent separately for light/dark (theme-core/controls)
- en contacts: WhatsApp card instead of VK (wa.me link)
- Activity: add GitHub card (logo webp) in both locales
- mp-card__image border uses --line to match card (less contrast)
2026-09-16 14:46:08 +02:00
root fe9248c212 fix(contacts): remove Yandex card from contacts block
- drop contact-card--brand-ya (yandex chat) from contact-section ru/en
- update cookie-policy contacts enumeration to drop Yandex (ru/en)
- rebuild public/
2026-09-16 12:50:10 +02:00
root 4b52cec00d feat(i18n): translate all case studies and resume to English
- add .en.html overrides for 16 case pages + resume via apinex translator
- translate remaining partials (projects-related, mini-projects-*, fab-stack-home-contact,
  fab-stack-resume, content-edit-fab-stack, cookie-notice)
- enhance translate.mjs to protect <script>/<style> from translation
- second pass: translate attribute values (aria-label/alt/title/placeholder/content/
  data-hint-default) and visible text DeepL skipped in html mode
- make logo language-aware (NM / НМ) via i18n
2026-09-15 23:18:01 +02:00
root 20ee81bfaf feat(i18n): move language switcher into footer, restyle laconic
- remove {{> lang-switch}} from header-home/case/minimal
- add {{> lang-switch}} to footer
- restyle .lang-switch as compact text group 'RU / EN' (active = accent),
  drop pill borders/background for a minimal look
2026-09-15 23:02:53 +02:00
root e02ce1c629 fix(i18n): keep en navigation within /en/ via pagePrefix
- build-pages.mjs: add pagePrefix (locale-root-relative, no en offset)
- use pagePrefix for nav links: logo, back-home, footer design-system/
  cookie-policy/, FAB #contact, cookie-notice link, cookie-policy body
  link, case-page #skills/#projects anchors (assetPrefix pointed to site
  root and leaked en pages to ru)
- docs/translation.md: document assetPrefix vs pagePrefix
2026-09-15 23:00:32 +02:00
root a0dda98b83 i18n: build-time ru/en localization + EN homepage & cookie-policy
- build-pages.mjs: per-locale page/partial overrides (*.en.html), i18n token
  resolution with ru fallback, <html lang> + assetPrefix per locale
- UI dictionaries src/i18n/{ru,en}.json; lang-switch partial
- headers/footer/partials converted to {{i18n:…}} tokens
- root-absolute static asset refs so /en/ subpath loads css/js/vendor
- EN content: homepage (index.en.html + partials) and cookie-policy.en.html
  (cookie-policy body translated via apinex.bond /v1/tools/translator)
2026-09-15 22:27:51 +02:00
root 4212579c5a fix: внутренние ссылки без .html (clean URL) в партиалах, cases, cookie-policy, resume 2026-09-11 13:43:53 +02:00
root 9b91ed165f fix: карточки «Смотрите также» встают в ряд на ширине ~1278px
data-mp-cells-sm=2 для карточек related — в диапазоне 4 колонок
(≈1080–1355px вьюпорта) карточки занимают по 2 колонки и парятся,
устраняя пустую колонку справа. В десктопном 6-колоночном диапазоне
сохраняется data-mp-cells=3.
2026-09-08 19:04:42 +02:00
Local Build 8f62dec556 feat: компонент sep, сепараторы в резюме, соцсети, посещённые ссылки 2026-08-15 22:48:19 +02:00
Local Build 8ce691eee7 Чистый URL для cookie-policy: cookie-policy/ вместо cookie-policy.html 2026-08-15 20:06:12 +02:00
Local Build c4bfe5c9ee Чистые URL для кейсов: cases/slug/ вместо cases/slug.html, исправлены пути к ассетам 2026-08-15 16:37:54 +02:00
Local Build c66b9b856f Hero: marquee, блок 'Смотрите также', заголовки кейсов, меню, шапка кейсов 2026-08-15 14:11:51 +02:00
Local Build a09e3e671e Hero: текст + marquee, блок 'Смотрите также' на страницах кейсов, masonry fix для hidden 2026-08-15 13:49:19 +02:00
Local Build 97e56b48bf PDF резюме: Puppeteer-скрипт, кнопка скачивания, имя файла Mamadaev_Nik__CV__Product_Designer_UX-UI 2026-08-14 10:05:17 +02:00
Local Build 77af88449f fix(fab): remove glass-neutral from primary button
Primary FAB in original design does not have glass-neutral class.
Only secondary buttons use glass-neutral.
2026-08-13 21:27:54 +02:00
Local Build 4dfb483a34 fix(fab): follow original FAB stack structure
- Secondary button wrapped in theme-panel-fab-wrap (above primary)
- Primary button outside wrap (below secondary)
- Added glass-neutral class to both buttons
- Matches the pattern from fab-stack-home-contact.html
2026-08-13 21:26:59 +02:00
Local Build e44a72f559 feat(pdf): add print FAB + fix color-mix via clean clone approach
- Added secondary FAB button 'Печать' with printer icon (window.print)
- Created printer.svg icon for the print button
- Added .fab-secondary__ico--print CSS class
- Fixed html2pdf color-mix() issue: buildCleanClone() creates a deep clone
  with all computed styles inlined, all stylesheets removed, and
  pseudo-elements converted to real DOM elements before passing to html2pdf
- Two separate handlers: pdfBtn for download, printBtn for print dialog
2026-08-13 21:20:27 +02:00
Local Build 632e54ce4e fix: compute --on-accent in inline head script for all pages
--on-accent was only set by deferred theme-core.js module, causing
all fab--primary and btn--primary elements to have wrong text/icon
color on first paint. Now computed from HSL values in the synchronous
theme-init-script partial, matching theme-core.js logic exactly.

Remove hardcoded fallback from fab--label CSS.
2026-08-13 20:46:50 +02:00
Local Build e02291fffd fix(resume): use fab fab--primary pattern with text label
- fab fab--primary fab--label (same base as contact FAB)
- fab-primary__ico--pdf with cv.svg mask
- fab__label for text
- fab__spinner for loading state
- fab--label overrides fixed width from fab--primary
2026-08-13 20:27:13 +02:00
Local Build d7e717e2e7 fix(resume): use design-system .btn component for PDF button
- Use btn btn--primary btn--flat btn--resume (existing pattern)
- btn__icon with cv.svg mask already defined in design system
- Remove all custom fab--primary overrides
- Keep only btn__spinner and loading state CSS
2026-08-13 20:23:03 +02:00
Local Build f173efd339 feat(resume): add label text to PDF download button
- Button now shows icon + 'Скачать в PDF' text
- Add fab--label modifier for auto-width with padding
- Add fab-primary__label for text styling
2026-08-13 20:18:17 +02:00
Local Build 1ab72e533a refactor(resume): use design-system fab--primary pattern for PDF button
- Use fab-primary__ico with mask-image (cv.svg) instead of inline SVG
- Follow same pattern as contact FAB
- Add fab-primary__spinner for loading state
- Remove custom fab--pdf styles
2026-08-13 20:14:43 +02:00
Local Build e39c07f544 fix(resume): remove glass-neutral from PDF FAB to fix background override 2026-08-13 20:13:02 +02:00
Local Build 1a1648c5e2 feat(resume): add PDF download FAB button with lazy-loaded html2pdf.js
- New partial fab-stack-resume.html with PDF download button
- Button shows spinner during PDF generation
- Photo converted to dataURL before rendering
- html2pdf.js loaded from CDN on first click only
- CSS for fab--pdf button and loading spinner
2026-08-13 19:54:30 +02:00
root 5f18505943 sync: full site from notebook (source of truth) + missing media 2026-07-24 20:20:51 +02:00