docs(state): record the 2026-10-27 hybrid archive and portfolio delivery
Deploy / build (push) Successful in 40s
Deploy / build (push) Successful in 40s
This commit is contained in:
1 parent
09596fe7a5
commit
b6d70a8b80
2 files changed
+61
No files matched your search
@@ -26,6 +26,8 @@ Living list of what's done and what's next for blog.hoelee.com. Work through the
|
||||
- ✅ Author card + `Person`/`ProfilePage` JSON-LD (E-E-A-T), article meta, reading time, related posts
|
||||
- ✅ Full SEO: canonical, Open Graph (+dims), twitter:card, favicon (all sizes), RSS + sitemap
|
||||
- ✅ Category pages (`/categories/`, `/categories/[category]/`)
|
||||
- ✅ `/posts/` hybrid archive + case-study portfolio (2026-10-27): fixed-slug flagship cards,
|
||||
collapse-on-filter, portfolio hero, action links, 44 px tap targets — see §4e
|
||||
- ✅ Locale scheme: English flat in `posts/`, Chinese in `posts/zh/` (lang derived from folder)
|
||||
- ✅ Language switcher in nav — links to the **same post** in the other language (auto-matches by `zh/` prefix)
|
||||
- ✅ Locale-aware nav labels (EN/ZH)
|
||||
@@ -430,6 +432,38 @@ A paid reviewer read `how-i-built-an-automated-music-video-pipeline`, `uploading
|
||||
session's paragraphs rode into the other's commit — content survived, but the history stopped attributing correctly.
|
||||
|
||||
---
|
||||
## 4e. Live re-check — 2026-10-27 (hybrid archive + case-study portfolio)
|
||||
|
||||
Delivered the four work orders in `docs/consultant-review-2026-10-27-posts-and-casestudies-plan.md`.
|
||||
Measured, not assumed — `node scripts/probe-layout.mjs` drives a headless Chrome over CDP and
|
||||
reports **72/72** page×viewport checks with `scrollWidth == clientWidth`, plus the collapse test.
|
||||
|
||||
- **`/posts/` and `/zh/posts/` are hybrid, not paginated.** Three fixed-slug flagship cards
|
||||
(`src/lib/featured.ts`, 3 on the archive, 4 on the home page) sit above the complete
|
||||
year/month archive, which still lists every post and keeps `Ctrl+F` working. Typing in the
|
||||
filter or clicking a category chip collapses the flagship block (`inert`, height 0,
|
||||
`data-collapsed="true"`) and the status line switches from `All 91 posts` to
|
||||
`Showing 27 of 91 posts`; clearing restores it. Verified at 1280 and 390 in both languages.
|
||||
- **`/categories/case-studies/` is a portfolio.** `src/components/PortfolioHero.astro` — copy left,
|
||||
a 21:9 architecture banner right (2400×1029, 33 KB WebP + a 1200 px variant, generated
|
||||
deterministically by `scripts/gen-case-studies-banner.mjs`; pure geometry, no baked text).
|
||||
Ordering comes from `src/lib/portfolio.ts` (`CASE_STUDY_FLAGSHIPS`, narrative order
|
||||
scale → local AI → automation → shipped commercial result), not from `pubDate`, so publishing
|
||||
a new post cannot rewrite the story. Every card carries a measured pill (container counts, VRAM,
|
||||
cron counts — all read from the post body, never invented).
|
||||
- **One shipped narrative.** `lib/featured.ts` and `lib/portfolio.ts` share `pickFeatured()`, so the
|
||||
home page, the archive and the portfolio can never disagree about which write-ups are flagship.
|
||||
- **Listing rows name their action**: `Read article →` / `Read case study →`
|
||||
(`阅读文章 →` / `阅读案例复盘 →`), as a redundant link kept out of the tab order (`tabindex="-1"`,
|
||||
one keyboard stop per card). Mobile title links get a 44 px minimum tap height.
|
||||
- **ZH leak fixed at the source.** `Archive.astro` printed raw category slugs in the row tail and in
|
||||
the category chips; both now go through `categoryLabel(category, lang)` (运维架构 / 工程案例 / …).
|
||||
- **Smaller craft fixes found while reviewing screenshots**: the two chip strips were unlabelled and
|
||||
read as one list with a duplicated `devops` (category 30 vs topic 6) → labelled *Category* / *Topic*,
|
||||
stacked above the chips below 700 px; rows now cap tags at four plus a `+N` chip so card rhythm
|
||||
stops breaking; the nav gained `aria-current="page"` (it had no active state at all).
|
||||
- **Docs:** `scripts/probe-layout.mjs` is committed as the repeatable gate for this class of bug.
|
||||
|
||||
## 5. Conventions (non-negotiable)
|
||||
|
||||
- Push git.hoelee.com first, then GitHub
|
||||
|
||||
Reference in new issue
Block a user