You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Featured Missions Description is blank on Tutorial Navigator Page #1941
Commit 0d202e3f (2026-08-16, the /browse/ CLS perf fix) changed the shared card partials browse/_partials/card-{mission,group,tutorial}.html to expect a { item, categories }dict context. The /browse/ call sites were updated, but hugo/layouts/tutorial-navigator/list.html kept passing the bare card object.
Inside the partial, {{ $item := .item }} then resolved to nil, so every field — href, title, description, level, time, tag — rendered empty. The reporter noticed the blank description, but the whole card was blank (empty title/link too, "0 min." meta).
Why it was visible on the live site: /build/featured returns [] on both DEV and PROD, so the client featured-rail.js upgrade fail-silently keeps the SSR markup. That SSR markup was the broken bare-$item path → empty MISSION cards on /tutorial-navigator/.
Fix
Build a $categoriesMap (slug→label) from browse.categories, mirroring browse/list.html.
Wrap both partial-call sites (the SSR preview grid and the Featured rail) in (dict "item" $item "categories" $categoriesMap).
Verified with a manual Hugo build (cards now render title, description, level, time, tutorial count, tag, and category chip) and a new render assertion in test/unit/hugo-homepage-partials.test.ts that was red before the fix, green after.
Follow-up note
hugo/layouts/partials/homepage/tutorials-teaser.html has the same latent bare-$item bug but is not included by any layout (dead partial), so it was left untouched. Worth fixing or deleting if it's ever revived.
Activity
fix(navigator): render curated Featured cards non-blank (#1941)
Merge pull request #1945 from sap-tutorials/worktree-fix-1941-feature…
jung-thomas commentedon Aug 20, 2026
Fixed in #1945 (merged to DEV).
Root cause
Commit
0d202e3f(2026-08-16, the /browse/ CLS perf fix) changed the shared card partialsbrowse/_partials/card-{mission,group,tutorial}.htmlto expect a{ item, categories }dict context. The/browse/call sites were updated, buthugo/layouts/tutorial-navigator/list.htmlkept passing the bare card object.Inside the partial,
{{ $item := .item }}then resolved to nil, so every field —href, title, description, level, time, tag — rendered empty. The reporter noticed the blank description, but the whole card was blank (empty title/link too, "0 min." meta).Why it was visible on the live site:
/build/featuredreturns[]on both DEV and PROD, so the clientfeatured-rail.jsupgrade fail-silently keeps the SSR markup. That SSR markup was the broken bare-$itempath → empty MISSION cards on/tutorial-navigator/.Fix
$categoriesMap(slug→label) frombrowse.categories, mirroringbrowse/list.html.(dict "item" $item "categories" $categoriesMap).Verified with a manual Hugo build (cards now render title, description, level, time, tutorial count, tag, and category chip) and a new render assertion in
test/unit/hugo-homepage-partials.test.tsthat was red before the fix, green after.Follow-up note
hugo/layouts/partials/homepage/tutorials-teaser.htmlhas the same latent bare-$itembug but is not included by any layout (dead partial), so it was left untouched. Worth fixing or deleting if it's ever revived.Release 1.18.1 → main (#1958)