Q15: conversion-first home, role history and visible contactQ15: конверсионная главная, история роли и видимый контакт

StatusСтатус
completeзавершён
ServiceСервис
portfolio
IssueIssue
#98
Pull requestPull request
#99
ReleaseРелиз
0.1.28
Lead time (h)Время цикла (ч)
2.4

What this cycle decidedЧто решил этот цикл

The home page rendered a name, a thesis and four metric tiles but answered none of the three questions a recruiter or a hiring CTO actually arrives with: who is this person, what can he do, and what has he built -- there was no role, no seniority, no employment history, no capability statement, and the only contact route was hidden inside a closed-by-default disclosure. This cycle adds a fixed eyebrow line above the hero name stating role and seniority, a Who I am section carrying nine years of history across two employers plus the current open-build phase, a What I do section naming three capability areas, and a visible Get in touch section with four contact links (email, LinkedIn, GitHub, Telegram) -- all of it readable without interaction, in both languages, with every fact traceable to real work rather than an invented number. The ctaColophon CTA and the detailsContactSummary disclosure it duplicated are removed from the rendered page (both keys stay in src/i18n/ui.ts, unused, since nothing asks for their deletion); the .ctas nav keeps its markup but its primary slot now points at #contact, and the CTAs were moved up to sit directly after the subline rather than after the stats grid, so a 390x844 first screen still shows the eyebrow, name, thesis and both CTAs together. Person and WebSite JSON-LD now render from src/lib/seo.ts on the home route only, wired through Base.astro's existing jsonLd prop so the journal and ADR routes' own BreadcrumbList is untouched and the CSP inline-script hash does not move. test/ui.test.ts's array-parity walk was generalised to accept an array of { term, body } or { label, href, text } objects, not only strings, so capabilityItems and contactItems can live in the one ui dictionary instead of a side export. On /work/, the mctl-loyalty service link now points at its own brand host, https://rewards.mctl.ai, instead of a labs-prefixed host; scripts/check-links.mjs proves LinkedIn, GitHub and Telegram are off-origin hrefs it deliberately never fetches, reported in its counted skipped set rather than passed over in silence.Главная страница показывала имя, тезис и четыре метрики, но не отвечала ни на один из трёх вопросов, с которыми на неё действительно приходит рекрутёр или CTO: кто этот человек, что он умеет и что он построил -- не было ни роли, ни уровня, ни истории занятости, ни описания компетенций, а единственный способ связи был скрыт в закрытом по умолчанию дисклоуже. Этот цикл добавляет фиксированную строку-эпиграф над именем в хиро с ролью и уровнем, секцию «Кто я» с девятью годами истории на двух работодателях плюс текущей фазой открытой разработки, секцию «Что я умею» с тремя областями компетенций и видимую секцию «Связаться» с четырьмя контактными ссылками (почта, LinkedIn, GitHub, Telegram) -- всё это читается без взаимодействия, на обоих языках, и каждый факт прослеживается до реальной работы, а не выдуман. CTA ctaColophon и дублировавший его дисклоуз detailsContactSummary убраны с отрисованной страницы (оба ключа остаются в src/i18n/ui.ts неиспользуемыми, поскольку их удаление не требуется); навигация .ctas сохраняет разметку, но её основной слот теперь ведёт на #contact, а сами CTA перенесены выше — сразу после подстрочника, а не после блока статистики, — чтобы первый экран 390x844 всё ещё показывал эпиграф, имя, тезис и оба CTA вместе. Person и WebSite JSON-LD теперь рендерятся из src/lib/seo.ts только на маршруте главной страницы через существующий проп jsonLd в Base.astro, поэтому BreadcrumbList страниц журнала и ADR не тронут, а хеш инлайн-скрипта CSP не меняется. Обход парности массивов в test/ui.test.ts обобщён, чтобы принимать массив объектов { term, body } или { label, href, text }, а не только строки, поэтому capabilityItems и contactItems могут жить в одном словаре ui, а не в отдельном экспорте. На /work/ ссылка сервиса mctl-loyalty теперь ведёт на собственный брендовый хост https://rewards.mctl.ai вместо хоста с префиксом labs; scripts/check-links.mjs доказывает, что ссылки на LinkedIn, GitHub и Telegram — это чужие хосты, которые он сознательно никогда не запрашивает, и они отражаются в его учитываемом наборе skipped, а не пропускаются молча.

TimelineХронология

  1. Issue openedIssue открыт:
  2. MergedСмержено: +2 h 18 min+2 ч 18 мин
  3. ReleasedРелиз выпущен: +3 min+3 мин

Manual interventionsРучные вмешательства

No manual intervention was recorded for this cycle.Ручных вмешательств в этом цикле не зафиксировано.

Back to the colophonНазад к колофону