Skip to content

feat(teched): /teched/ top-level page (Unit 7, #2312) - #2330

Merged
jung-thomas merged 1 commit into
DEVfrom
feat/teched-page-2312
Sep 15, 2026
Merged

jung-thomas merged 1 commit into
DEVfrom
feat/teched-page-2312

Conversation

@jung-thomas

Copy link
Copy Markdown
Contributor

Unit 7 of #2312 — /teched/ page

Creates the SAP TechEd 2026 Sessions top-level page. It mounts the Vue island built separately in Unit 8 (mount id #teched-sessions-grid-mount) and is served through the pages-from-HANA pipeline.

Changes

  • hugo/content/teched/_index.md + hugo/layouts/teched/list.html — page shell: <h1>, separate Berlin and Virtual section headings, per-venue <noscript> fallback lists, a teched-sessions-data JSON payload for the island, and the island loaded via {{ partial "island-src.html" "teched-sessions-grid" }} (content-hashed, never a hardcoded /js path). Uses a <div class="teched-page"> wrapper rather than a nested <main> — baseof.html already emits the sole <main> landmark, so nesting one would trip axe landmark-no-duplicate-main.
  • scripts/fetch-teched.ts — fetch(${CAP_BASE}/build/teched) → hugo/data/teched.json; fails open to {sessions:[],speakers:[],tracks:[]} on error (mirrors fetch-channels.ts). Wired as an explicit build:all step before build:hugo. teched.json added to hugo/data/.gitignore (build artifact, like channels.json).
  • srv/lib/page-key-map.js — adds page-teched (teched/index.html) to IN_SCOPE_PAGES.
  • approuter/xs-app.json — routes ^/teched/?...$ → /content/pages/teched/ (anonymous), grouped with the other top-level page routes.
  • test/smoke/pages-routes.smoke.test.js — adds /teched/ to HTML_ROUTES with marker SAP TechEd (self-skips without SMOKE_BASE_URL).

Verification

  • npm test — green.
  • Live loop: fetch-teched against a running /build/teched wrote teched.json (error:null); fail-open path (no CAP) writes the empty payload.
  • Hugo render (sample data): teched/index.html renders exactly one <main>, the <h1>, both venue headings, the mount <div> with data-berlin-count/data-virtual-count, per-venue <noscript> links, and the island <script>.

Notes

  • The teched-sessions-grid island is Unit 8. Until it lands, island-src.html falls back to the bare /js/teched-sessions-grid.js — expected; this PR ships only the page shell + wiring.

Create the SAP TechEd 2026 Sessions page that mounts the Unit 8 island
(#teched-sessions-grid-mount) and serves via the pages-from-HANA pipeline.

- hugo/content/teched/_index.md + hugo/layouts/teched/list.html: page shell
  with <h1>, separate Berlin/Virtual section headings, per-venue <noscript>
  fallback lists, and the content-hashed island via the island-src.html
  partial. Uses a <div> wrapper (not a nested <main>) since baseof already
  provides the sole <main> landmark — avoids axe landmark-no-duplicate-main.
- scripts/fetch-teched.ts: fetch ${CAP_BASE}/build/teched -> hugo/data/teched.json,
  fail-open to empty {sessions,speakers,tracks} on error (mirrors fetch-channels).
  Wired into build:all before build:hugo; teched.json gitignored (build artifact).
- srv/lib/page-key-map.js: add page-teched (teched/index.html) to IN_SCOPE_PAGES.
- approuter/xs-app.json: route /teched/ -> /content/pages/teched/ (anonymous).
- test/smoke/pages-routes.smoke.test.js: add /teched/ HTML route with marker.

The teched-sessions-grid island itself is Unit 8; until it lands the
island-src partial falls back to the bare /js path (expected).
@jung-thomas
jung-thomas merged commit 7f437b2 into DEV Sep 15, 2026
8 checks passed
@jung-thomas
jung-thomas deleted the feat/teched-page-2312 branch September 15, 2026 21:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant