From 644dfe7ea232df4ffed93f8178db4f4cf16a3648 Mon Sep 17 00:00:00 2001 From: Thomas Jung Date: Wed, 9 Sep 2026 08:11:35 -0700 Subject: [PATCH 1/4] fix(puzzles): assign legacyId to admin-authored puzzles (#2185) Admin-created puzzles were saved with a NULL legacyId because Puzzles was missing from both legacyId assigners in admin-service.js and from getNextLegacyId's VALID_ENTITIES, and no PUZZLES sequence existed. Their PUZZLE TaskRecords were then written with taskLegacyId=NULL and silently dropped from My Completions (srv/lib/user-progress.js) and the Devtoberfest points path (same read path, keyed off slug). Fix mirrors the #436 draft-lifecycle self-heal: - add Puzzles to VALID_ENTITIES (srv/lib/legacy-id.js) - add Puzzles to the CREATE assigner and the NEW/PATCH/SAVE draft self-heal loop (srv/admin-service.js) - add COM_SAP_DEVELOPERS_IMS_PUZZLES_SEQ.hdbsequence - cover Puzzles in the HANA-sequence hybrid test Adds test/puzzle-legacyid.test.js (draft NEW -> draftActivate assigns a non-null numeric legacyId) and scripts/backfill-puzzle-legacyids.mjs, an idempotent dry-run-by-default backfill for the existing orphaned PROD records (assign legacyId, relink NULL-taskLegacyId PUZZLE records by titleSnapshot; skips ambiguous/no-match). --- ...SAP_DEVELOPERS_IMS_PUZZLES_SEQ.hdbsequence | 4 + scripts/backfill-puzzle-legacyids.mjs | 114 ++++++++++++++++++ srv/admin-service.js | 10 +- srv/lib/legacy-id.js | 2 +- test/hybrid/hana-sequences.test.js | 2 +- test/puzzle-legacyid.test.js | 53 ++++++++ 6 files changed, 181 insertions(+), 4 deletions(-) create mode 100644 db/src/COM_SAP_DEVELOPERS_IMS_PUZZLES_SEQ.hdbsequence create mode 100644 scripts/backfill-puzzle-legacyids.mjs create mode 100644 test/puzzle-legacyid.test.js diff --git a/db/src/COM_SAP_DEVELOPERS_IMS_PUZZLES_SEQ.hdbsequence b/db/src/COM_SAP_DEVELOPERS_IMS_PUZZLES_SEQ.hdbsequence new file mode 100644 index 000000000..c7097750c --- /dev/null +++ b/db/src/COM_SAP_DEVELOPERS_IMS_PUZZLES_SEQ.hdbsequence @@ -0,0 +1,4 @@ +SEQUENCE "COM_SAP_DEVELOPERS_IMS_PUZZLES_SEQ" + START WITH 10000001 + INCREMENT BY 1 + NO CYCLE diff --git a/scripts/backfill-puzzle-legacyids.mjs b/scripts/backfill-puzzle-legacyids.mjs new file mode 100644 index 000000000..a4830d91a --- /dev/null +++ b/scripts/backfill-puzzle-legacyids.mjs @@ -0,0 +1,114 @@ +// scripts/backfill-puzzle-legacyids.mjs +// +// One-time (idempotent) backfill for issue #2185. +// +// Admin-authored puzzles were created with a NULL legacyId (the #436 +// draft-lifecycle bug, never extended to Puzzles). Their PUZZLE TaskRecords +// were therefore written with taskLegacyId=NULL and are silently dropped from +// My Completions (srv/lib/user-progress.js) and the Devtoberfest points path. +// +// This script, run AFTER the code fix is deployed (so the PUZZLES sequence +// exists in HANA): +// 1. Assigns a legacyId (from COM_SAP_DEVELOPERS_IMS_PUZZLES_SEQ) to every +// Puzzles row whose legacyId IS NULL. +// 2. Relinks orphaned PUZZLE TaskRecords (taskLegacyId IS NULL) to the newly +// assigned puzzle legacyId by matching titleSnapshot === puzzle.title. +// +// Safe to re-run: puzzles that already have a legacyId are skipped, and only +// TaskRecords still carrying NULL taskLegacyId are touched. If a titleSnapshot +// maps to zero or more-than-one NULL-legacyId puzzle, those records are left +// untouched and reported (no ambiguous guesses). +// +// Usage (against a bound HANA): +// cds bind --exec -- node scripts/backfill-puzzle-legacyids.mjs # dry run (default) +// cds bind --exec -- node scripts/backfill-puzzle-legacyids.mjs --apply # perform writes +// cds bind --exec --profile hybrid-prod -- node scripts/backfill-puzzle-legacyids.mjs --apply +// +// NOTE: does NOT recompute parent mission/group rollups. The affected puzzles +// are standalone (not mission items). If a backfilled puzzle is later found to +// be a mission item, re-run the completion rollup separately. + +import cds from '@sap/cds'; +import { getNextLegacyId } from '../srv/lib/legacy-id.js'; + +const APPLY = process.argv.includes('--apply'); + +async function main() { + const db = await cds.connect.to('db'); + + // Robust entity resolution across booted-server and standalone + // `cds bind --exec` contexts (same gotcha as seed-poc-puzzle.js). + let Puzzles, TaskRecords; + if (typeof cds.entities === 'function' && cds.model) { + ({ Puzzles, TaskRecords } = cds.entities('com.sap.developers.ims')); + } else { + const linked = cds.linked(await cds.load('*')); + ({ Puzzles, TaskRecords } = linked.entities('com.sap.developers.ims')); + } + + const mode = APPLY ? 'APPLY' : 'DRY RUN'; + console.log(`\n=== Puzzle legacyId backfill (${mode}) ===\n`); + + // 1) Puzzles missing a legacyId. + const nullPuzzles = await SELECT.from(Puzzles) + .columns('ID', 'slug', 'title', 'legacyId') + .where({ legacyId: null }); + + if (nullPuzzles.length === 0) { + console.log('No puzzles with NULL legacyId — nothing to assign.'); + } + + // title -> count, to detect ambiguous titleSnapshot matches. + const titleCounts = nullPuzzles.reduce((m, p) => { + m.set(p.title, (m.get(p.title) || 0) + 1); + return m; + }, new Map()); + + const assigned = []; // { slug, title, legacyId } + for (const p of nullPuzzles) { + const newId = APPLY ? await getNextLegacyId('Puzzles', db) : '(next-seq)'; + if (APPLY) { + await UPDATE(Puzzles).set({ legacyId: newId }).where({ ID: p.ID }); + } + assigned.push({ slug: p.slug, title: p.title, legacyId: newId }); + console.log(` puzzle "${p.slug}" (title="${p.title}") -> legacyId ${newId}`); + } + + // 2) Relink orphaned PUZZLE TaskRecords by titleSnapshot === puzzle.title. + console.log('\n--- Orphaned PUZZLE TaskRecords (taskLegacyId IS NULL) ---'); + const orphans = await SELECT.from(TaskRecords) + .columns('ID', 'titleSnapshot', 'status', 'completionDate') + .where({ taskType: 'PUZZLE', taskLegacyId: null }); + + console.log(` found ${orphans.length} orphaned PUZZLE records`); + + let relinked = 0; + const skipped = []; + for (const r of orphans) { + const matches = assigned.filter(a => a.title === r.titleSnapshot); + if (matches.length !== 1 || titleCounts.get(r.titleSnapshot) !== 1) { + skipped.push({ ID: r.ID, titleSnapshot: r.titleSnapshot, reason: matches.length === 0 ? 'no matching puzzle' : 'ambiguous title' }); + continue; + } + const target = matches[0]; + if (APPLY) { + await UPDATE(TaskRecords).set({ taskLegacyId: target.legacyId }).where({ ID: r.ID }); + } + relinked++; + console.log(` record ${r.ID} (${r.status}, "${r.titleSnapshot}") -> taskLegacyId ${target.legacyId}`); + } + + if (skipped.length) { + console.log('\n SKIPPED (left untouched):'); + for (const s of skipped) console.log(` ${s.ID} "${s.titleSnapshot}" — ${s.reason}`); + } + + console.log(`\n=== Summary (${mode}) ===`); + console.log(` puzzles assigned legacyId : ${assigned.length}`); + console.log(` TaskRecords relinked : ${relinked}`); + console.log(` TaskRecords skipped : ${skipped.length}`); + if (!APPLY) console.log('\n (dry run — re-run with --apply to perform writes)'); + console.log(''); +} + +main().then(() => process.exit(0)).catch(e => { console.error(e); process.exit(1); }); diff --git a/srv/admin-service.js b/srv/admin-service.js index 9f0662e0e..918dcd112 100644 --- a/srv/admin-service.js +++ b/srv/admin-service.js @@ -1016,7 +1016,7 @@ export default class AdminService extends cds.ApplicationService { 'PrizeRecords', 'TutorialMeta', 'TutorialContributors', 'TutorialRepositories', 'FeaturedTasks', 'PrimaryAccounts', 'SecondaryAccounts', 'PrivacyProtectionActions', 'CompletionPaths', 'CompletionPathItems', - 'GroupPathItems', 'EventRegistrations' + 'GroupPathItems', 'EventRegistrations', 'Puzzles' ]; for (const entity of legacyKeyedEntities) { this.before('CREATE', entity, async (req) => { @@ -1233,6 +1233,12 @@ export default class AdminService extends cds.ApplicationService { // - Does NOT register for CREATE (already handled by the line 71 loop) // - Self-heals UPDATE/PATCH/SAVE on existing rows whose legacyId is NULL // - Skips when the row already has legacyId (idempotent across draft lifecycle) + // + // [#2185] Puzzles is also @odata.draft.enabled and authored via the same + // NEW→PATCH→draftActivate flow, so it hit the identical NULL-legacyId bug: + // admin-created puzzles had no legacyId, so their PUZZLE TaskRecords were + // written with taskLegacyId=NULL and silently dropped from My Completions + // (and the Devtoberfest points path). Added to the loop below to fix it. const initLegacyIdForEntity = (entityName) => async (req) => { if (req.data.legacyId != null) return; // Self-heal path: only do the prior-row lookup when the row exists. NEW @@ -1245,7 +1251,7 @@ export default class AdminService extends cds.ApplicationService { req.data.legacyId = await getNextLegacyId(entityName, db); }; - for (const entityName of ['Missions', 'Groups', 'CompletionPaths']) { + for (const entityName of ['Missions', 'Groups', 'CompletionPaths', 'Puzzles']) { const handler = initLegacyIdForEntity(entityName); this.before('NEW', `${entityName}.drafts`, handler); this.before('PATCH', `${entityName}.drafts`, handler); diff --git a/srv/lib/legacy-id.js b/srv/lib/legacy-id.js index 131b01087..e2064bb4e 100644 --- a/srv/lib/legacy-id.js +++ b/srv/lib/legacy-id.js @@ -7,7 +7,7 @@ const VALID_ENTITIES = new Set([ 'Events', 'Prizes', 'PrizeRecords', 'Tags', 'Accomplishments', 'AccomplishmentRecords', 'CompletionPaths', 'CompletionPathItems', - 'GroupPathItems', + 'GroupPathItems', 'Puzzles', 'TutorialMeta', 'TutorialContributors', 'TutorialRepositories', 'StepFailures', 'NGDSFailedMessages', 'ImsConfig', 'PrimaryAccounts', 'SecondaryAccounts', diff --git a/test/hybrid/hana-sequences.test.js b/test/hybrid/hana-sequences.test.js index 1a69b9ae7..f1b506eef 100644 --- a/test/hybrid/hana-sequences.test.js +++ b/test/hybrid/hana-sequences.test.js @@ -16,7 +16,7 @@ describe('HANA sequences (legacyId generation)', () => { 'StepFailures', 'NGDSFailedMessages', 'ImsConfig', 'PrimaryAccounts', 'SecondaryAccounts', 'PrivacyProtectionActions', 'FeaturedTasks', - 'EventRegistrations' + 'EventRegistrations', 'Puzzles' ]; it('getNextLegacyId is importable', async () => { diff --git a/test/puzzle-legacyid.test.js b/test/puzzle-legacyid.test.js new file mode 100644 index 000000000..f29567c63 --- /dev/null +++ b/test/puzzle-legacyid.test.js @@ -0,0 +1,53 @@ +// test/puzzle-legacyid.test.js +// +// Regression for issue #2185: puzzles authored via the admin draft flow were +// created with a NULL legacyId (Puzzles was missing from both legacyId +// assigners in admin-service.js). Their PUZZLE TaskRecords were then written +// with taskLegacyId=NULL and silently dropped from My Completions and the +// Devtoberfest points path. Every admin-authored puzzle must now get a +// legacyId, exactly like Missions/Groups/CompletionPaths (the #436 fix). +import { describe, it, expect, afterAll } from 'vitest'; +import cds from '@sap/cds'; + +const project = cds.test('serve', '--project', '.', '--in-memory'); +const adminAuth = { auth: { username: 'admin', password: 'admin' } }; +const lenient = { ...adminAuth, headers: { Prefer: 'handling=lenient' } }; + +describe('Puzzle legacyId assignment (#2185)', () => { + const cleanup = []; + afterAll(async () => { + for (const url of cleanup) await project.delete(url, adminAuth).catch(() => {}); + }); + + it('getNextLegacyId accepts "Puzzles"', async () => { + const { getNextLegacyId } = await import('../srv/lib/legacy-id.js'); + const db = await cds.connect.to('db'); + const id = await getNextLegacyId('Puzzles', db); + expect(typeof id).toBe('number'); + }); + + it('assigns a legacyId to a puzzle created + activated via the admin draft flow', async () => { + // NEW draft (metadata-only — no layout/solution, so the validator is skipped). + const { status, data: draft } = await project.post('/admin/Puzzles', { + title: '__TEST__ Puzzle 2185', + slug: 'test-puzzle-2185' + }, lenient); + expect(status).toBe(201); + expect(draft.IsActiveEntity).toBe(false); + + // Activate the draft — the #436-style self-heal fires on SAVE. + const { status: actStatus } = await project.post( + `/admin/Puzzles(ID=${draft.ID},IsActiveEntity=false)/AdminService.draftActivate`, + {}, adminAuth + ); + expect([200, 201]).toContain(actStatus); + cleanup.push(`/admin/Puzzles(ID=${draft.ID},IsActiveEntity=true)`); + + // The active row must carry a non-null legacyId. + const { Puzzles } = cds.entities('com.sap.developers.ims'); + const row = await SELECT.one.from(Puzzles).columns('legacyId').where({ ID: draft.ID }); + expect(row).toBeTruthy(); + expect(typeof row.legacyId).toBe('number'); + expect(row.legacyId).toBeGreaterThan(0); + }); +}); From f50a987394916f3fede0d7f94b629d924b9b60b5 Mon Sep 17 00:00:00 2001 From: Thomas Jung Date: Wed, 9 Sep 2026 08:13:39 -0700 Subject: [PATCH 2/4] feat(skills): add provision-tutorial-repo skill + script MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reusable procedure + parameterized gh script to stand up a new sap-tutorials tutorial repo pair (public source + private -Contribution), the four org teams (admin/maintain grants), and the content-rebuild notify workflows — matching the org convention. Templates supply base CI (tutorial-ci callers); script adds the notify workflow the templates omit. Platform auto-discovers the new source repo (no tutorials-ims change). --- .../skills/provision-tutorial-repo/SKILL.md | 102 ++++++++++ .../provision-tutorial-repo/provision.sh | 188 ++++++++++++++++++ 2 files changed, 290 insertions(+) create mode 100644 .claude/skills/provision-tutorial-repo/SKILL.md create mode 100644 .claude/skills/provision-tutorial-repo/provision.sh diff --git a/.claude/skills/provision-tutorial-repo/SKILL.md b/.claude/skills/provision-tutorial-repo/SKILL.md new file mode 100644 index 000000000..0dfd099eb --- /dev/null +++ b/.claude/skills/provision-tutorial-repo/SKILL.md @@ -0,0 +1,102 @@ +--- +name: provision-tutorial-repo +description: Provision a new sap-tutorials tutorial repo pair (public source + private -Contribution), their four org teams, and the content-rebuild CI/notify workflows — matching the org convention used by every existing product repo. Use when asked to set up / create a new tutorial repository, repo pair, or product area in the sap-tutorials org. +--- + +# Provision a new tutorial repo pair + +Sets up a new product area in the `sap-tutorials` org exactly like the existing +ones: a **public source repo** ``, a **private QA repo** +`-Contribution`, four org teams, base CI, and the content-rebuild notify +workflow that wires the repo into the `tutorials-ims` platform. + +## When to use + +Asked to "set up a new repo in sap-tutorials", "create the main and +-Contribution repos like the others", or stand up a new product/topic area. + +## Prerequisites + +- `gh` authenticated to **github.com** as a `sap-tutorials` **org owner**, or + with an active **just-in-time (20-minute) admin elevation**. A plain org + member cannot create repos or teams — `provision.sh` fails its preflight. + Ask the requester to elevate right before you run the mutating steps. +- Node/`gh` `workflow` scope (needed to commit workflow files via the API). + +## Key facts (why this works) + +- **Templates carry the base CI.** `tutorial-repo-template` and + `tutorial-repo-Contribution-template` are real GitHub template repos that + already ship `community-requester-id.yaml`, `label-issues.yml`, and the two + `tutorial-ci` caller workflows (`tutorial-pr-checks.yml` + `tutorial-pr-comment.yml`, + pinned `@v1`). **No `tutorial-ci` rollout is required** — CI comes with the + template. +- **Templates omit the notify workflow.** The per-repo rebuild-dispatch workflow + is added separately: `notify-tutorials-ims.yml` on the source repo, + `notify-qa.yml` on the Contribution repo. Both are repo-agnostic + (`${{ github.repository }}`) — copy verbatim from any current repo + (`btp-adai` / `btp-adai-Contribution` are the canonical source). +- **No tutorials-ims code change.** The platform auto-discovers any org repo + that has a `tutorials/` folder (`scripts/parsers/github.ts` → + `discoverAllTutorials`, skipping archived/fork/`EXCLUDED_REPOS`). A new source + repo is picked up automatically once it has content; `-Contribution` repos are + private and excluded by naming, like all the others. +- **Notify auth is org-level.** The notify workflow fires only when + `vars.USE_GITHUB_APP == 'true'` and the `sap-tutorials-builder` App is + installed on the repo (org secrets `TUTORIALS_APP_ID` / `TUTORIALS_APP_PRIVATE_KEY` + are org-wide, visibility all). App installation is UI-only and org-owner-gated. + +## Team convention + +For product `` (mirrors `ai-core`): + +| Team | Repo | Grant | +|------|------|-------| +| `-admin` | `` | admin | +| `-team` | `` | maintain | +| `-contribution-admin` | `-Contribution` | admin | +| `-contribution-team` | `-Contribution` | maintain | + +Admin grant tries the org JIT custom role `admin-ondemand` first, falling back +to plain `admin`. Admin-team membership usually mirrors between the source and +contribution admin teams; likewise for the maintain teams. + +## Steps + +1. **Confirm inputs** with the requester: product `` (prefer a neutral + name over a marketing product name), repo description, admin logins, team + member logins. Confirm the 4-team layout (some ask for only 2). +2. **Dry-run first** to review every mutation: + ```bash + .claude/skills/provision-tutorial-repo/provision.sh \ + --name integration \ + --description "Developer Tutorials for SAP integration" \ + --admins "ajmaradiaga,jung-thomas" \ + --members "ajmaradiaga,PalakGarg7,manouxnam,shyam-corpworks" \ + --dry-run + ``` +3. **Ask the requester to elevate** (org-owner / 20-min JIT) — say so explicitly; + creation fails without it. +4. **Run for real** (drop `--dry-run`). The script creates both repos, copies the + notify workflows, sets `USE_GITHUB_APP=true`, creates the four teams, adds + members, and applies the repo grants. It is re-runnable — existing teams are + skipped. +5. **Complete the org-owner-only follow-ups** the script prints: + - Install `sap-tutorials-builder` on both new repos (Contents:write on + `tutorials-ims`). + - Confirm the org `TUTORIALS_APP_*` secrets reach the new repos. + - (Optional) mark `tutorial-pr-checks` Required in branch protection to make + the structural checks blocking. +6. **Verify**: `gh repo view /`, list `.github/workflows` on both + repos (5 workflows: 4 base + 1 notify), and `gh api orgs//teams//repos` + shows the grants. A first tutorial push to `main` should trigger the notify + workflow and a `tutorial-updated` rebuild in `tutorials-ims`. + +## Gotchas + +- Both templates default to `main`; keep it — the notify workflows trigger on + `[master, main]` so `main` is correct and `master`-default repos still work. +- `-Contribution` MUST be **private**; source MUST be **public** (fork PRs get no + secrets, and the public `tutorial-ci` must be checkout-able by every consumer). +- Team **slug == name** (all lowercase here), so membership/grant API calls use + the name directly. diff --git a/.claude/skills/provision-tutorial-repo/provision.sh b/.claude/skills/provision-tutorial-repo/provision.sh new file mode 100644 index 000000000..5a07d3de1 --- /dev/null +++ b/.claude/skills/provision-tutorial-repo/provision.sh @@ -0,0 +1,188 @@ +#!/usr/bin/env bash +# +# provision.sh — provision a new sap-tutorials tutorial repo pair. +# +# Creates, for a product : +# - (public source repo, from tutorial-repo-template) +# - -Contribution (private QA repo, from tutorial-repo-Contribution-template) +# - the content-rebuild notify workflows on each repo +# - four org teams with the standard admin/maintain grants +# +# The templates already ship the base CI (community-requester-id, label-issues, +# and the two tutorial-ci caller workflows tutorial-pr-checks / tutorial-pr-comment +# pinned @v1) — no tutorial-ci rollout is needed. This script only adds the +# per-repo notify workflow that the templates deliberately omit. +# +# REQUIRES: `gh` authenticated to github.com as a sap-tutorials ORG OWNER, or +# with an active just-in-time (20-minute) admin elevation. A plain org member +# CANNOT create repos or teams; the preflight fails fast in that case. +# +# It does NOT (cannot, without extra org config) do the following — see the +# reminders printed at the end: +# - install the `sap-tutorials-builder` GitHub App on the new repos +# - guarantee the org actions secrets TUTORIALS_APP_ID / _PRIVATE_KEY reach them +# +set -euo pipefail + +ORG="sap-tutorials" +TEMPLATE_SOURCE="tutorial-repo-template" +TEMPLATE_CONTRIB="tutorial-repo-Contribution-template" +# Canonical repos to copy the (repo-agnostic) notify workflows from. +REF_SOURCE="btp-adai" +REF_CONTRIB="btp-adai-Contribution" +# Admin grant: the org uses a just-in-time custom role first, plain admin as fallback. +ADMIN_ROLE_PRIMARY="admin-ondemand" +ADMIN_ROLE_FALLBACK="admin" +TEAM_ROLE="maintain" + +NAME="" +DESCRIPTION="" +ADMINS="" +MEMBERS="" +DRY_RUN=0 + +usage() { + cat <<'EOF' +Usage: provision.sh --name --description "" \ + --admins "user1,user2" --members "user1,user2,user3" [--dry-run] + + --name product name, e.g. "integration" (avoid marketing product names) + --description repo description, applied to BOTH repos + --admins comma-separated logins for the *-admin teams (admin grant) + --members comma-separated logins for the *-team teams (maintain grant) + --dry-run print the gh commands instead of running them +EOF +} + +while [ $# -gt 0 ]; do + case "$1" in + --name) NAME="$2"; shift 2 ;; + --description) DESCRIPTION="$2"; shift 2 ;; + --admins) ADMINS="$2"; shift 2 ;; + --members) MEMBERS="$2"; shift 2 ;; + --dry-run) DRY_RUN=1; shift ;; + -h|--help) usage; exit 0 ;; + *) echo "Unknown argument: $1" >&2; usage; exit 2 ;; + esac +done + +[ -n "$NAME" ] || { echo "ERROR: --name is required" >&2; usage; exit 2; } +[ -n "$ADMINS" ] || echo "WARN: no --admins given; admin teams will be created empty" >&2 +[ -n "$MEMBERS" ] || echo "WARN: no --members given; team teams will be created empty" >&2 + +run() { + if [ "$DRY_RUN" -eq 1 ]; then + printf 'DRY-RUN:'; printf ' %q' "$@"; printf '\n' + else + "$@" + fi +} + +CONTRIB="${NAME}-Contribution" + +# --- Preflight: must be an org admin/owner --------------------------------- +SELF="$(gh api user --jq '.login')" +ROLE="$(gh api "orgs/${ORG}/memberships/${SELF}" --jq '.role' 2>/dev/null || echo "unknown")" +if [ "$ROLE" != "admin" ]; then + echo "ERROR: '${SELF}' is org role '${ROLE}', not 'admin'." >&2 + echo " Repo/team creation needs org-owner rights (or active JIT elevation)." >&2 + [ "$DRY_RUN" -eq 1 ] || exit 1 +fi + +echo "==> Provisioning '${NAME}' (+ '${CONTRIB}') as ${SELF} [role=${ROLE}]" + +# --- 1. Repos from templates ----------------------------------------------- +echo "==> Creating repos from templates" +run gh repo create "${ORG}/${NAME}" --template "${ORG}/${TEMPLATE_SOURCE}" \ + --public --description "${DESCRIPTION}" +run gh repo create "${ORG}/${CONTRIB}" --template "${ORG}/${TEMPLATE_CONTRIB}" \ + --private --description "${DESCRIPTION}" + +# --- 2. Notify workflows (copied verbatim from the reference repos) --------- +# Both notify workflows are repo-agnostic (they use ${{ github.repository }}), +# so no editing is required — copy the current canonical version straight over. +copy_workflow() { + local ref_repo="$1" wf_path="$2" dst_repo="$3" + local content + content="$(gh api "repos/${ORG}/${ref_repo}/contents/${wf_path}" --jq '.content' | tr -d '\n')" + run gh api --method PUT "repos/${ORG}/${dst_repo}/contents/${wf_path}" \ + -f message="chore(ci): add ${wf_path##*/} rebuild-notify workflow" \ + -f content="${content}" +} +echo "==> Adding notify workflows" +copy_workflow "${REF_SOURCE}" ".github/workflows/notify-tutorials-ims.yml" "${NAME}" +copy_workflow "${REF_CONTRIB}" ".github/workflows/notify-qa.yml" "${CONTRIB}" + +# --- 3. USE_GITHUB_APP repo variable (belt-and-suspenders vs the org var) --- +echo "==> Setting USE_GITHUB_APP=true repo variable" +run gh variable set USE_GITHUB_APP --body "true" --repo "${ORG}/${NAME}" +run gh variable set USE_GITHUB_APP --body "true" --repo "${ORG}/${CONTRIB}" + +# --- 4. Teams -------------------------------------------------------------- +# Naming follows the ai-core convention: +# -admin / -team -> source repo +# -contribution-admin / -team -> Contribution repo +T_ADMIN="${NAME}-admin" +T_TEAM="${NAME}-team" +T_CADMIN="${NAME}-contribution-admin" +T_CTEAM="${NAME}-contribution-team" + +create_team() { + local team="$1" + echo "==> Creating team ${team}" + run gh api --method POST "orgs/${ORG}/teams" -f name="${team}" -f privacy="closed" \ + >/dev/null 2>&1 || echo " (team ${team} may already exist)" +} +for t in "$T_ADMIN" "$T_TEAM" "$T_CADMIN" "$T_CTEAM"; do create_team "$t"; done + +add_members() { + local team="$1" csv="$2" + [ -n "$csv" ] || return 0 + local IFS=',' + for user in $csv; do + user="$(echo "$user" | tr -d '[:space:]')" + [ -n "$user" ] || continue + echo "==> Adding ${user} to ${team}" + run gh api --method PUT "orgs/${ORG}/teams/${team}/memberships/${user}" -f role="member" \ + >/dev/null + done +} +add_members "$T_ADMIN" "$ADMINS" +add_members "$T_CADMIN" "$ADMINS" +add_members "$T_TEAM" "$MEMBERS" +add_members "$T_CTEAM" "$MEMBERS" + +# --- 5. Team -> repo grants ------------------------------------------------ +grant() { + local team="$1" repo="$2" role="$3" + echo "==> Granting ${team} '${role}' on ${repo}" + if [ "$DRY_RUN" -eq 1 ]; then + run gh api --method PUT "orgs/${ORG}/teams/${team}/repos/${ORG}/${repo}" -f permission="${role}" + return 0 + fi + if ! gh api --method PUT "orgs/${ORG}/teams/${team}/repos/${ORG}/${repo}" \ + -f permission="${role}" >/dev/null 2>&1; then + echo " custom role '${role}' rejected; retrying with '${ADMIN_ROLE_FALLBACK}'" + gh api --method PUT "orgs/${ORG}/teams/${team}/repos/${ORG}/${repo}" \ + -f permission="${ADMIN_ROLE_FALLBACK}" >/dev/null + fi +} +grant "$T_ADMIN" "$NAME" "$ADMIN_ROLE_PRIMARY" +grant "$T_TEAM" "$NAME" "$TEAM_ROLE" +grant "$T_CADMIN" "$CONTRIB" "$ADMIN_ROLE_PRIMARY" +grant "$T_CTEAM" "$CONTRIB" "$TEAM_ROLE" + +# --- Post-provision reminders ---------------------------------------------- +cat < Done. Manual follow-ups that need org-owner UI / App admin: + 1. Install the 'sap-tutorials-builder' GitHub App on ${ORG}/${NAME} and + ${ORG}/${CONTRIB} (Contents:write on ${ORG}/tutorials-ims). Without it the + notify workflow's App-token step is skipped and dispatch fails. + 2. Confirm org actions secrets TUTORIALS_APP_ID / TUTORIALS_APP_PRIVATE_KEY are + visible to the new repos (they are org-wide, visibility=all). + 3. Add real tutorials under tutorials// on ${ORG}/${NAME}; the platform + auto-discovers the repo (no tutorials-ims code change needed). + 4. Optionally mark the tutorial-pr-checks status as Required in branch + protection if you want the structural checks to block merges. +EOF From d98c6c1c3e62207a2fb827d91068e981d0d878d7 Mon Sep 17 00:00:00 2001 From: Thomas Jung Date: Wed, 9 Sep 2026 08:20:08 -0700 Subject: [PATCH 3/4] fix(deploy): guard prepare git-hooks install so CF staging doesn't fail The prepare hook (added in 8febee66) runs 'sh scripts/install-git-hooks.sh' on every npm install, including the CF buildpack compile phase. cds build carries the prepare/setup:git-hooks scripts into gen/srv/package.json but does NOT copy scripts/install-git-hooks.sh, so staging aborts with 'cannot open scripts/install-git-hooks.sh: No such file' -> BuildpackCompileFailed. This broke both last night's PROD deploy and today's DEV deploy. Guard setup:git-hooks to no-op when the dev-only script is absent (CF artifact), while preserving local behavior when it's present. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 12a6229c5..196c7723a 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "check:ui5-single-copy": "node scripts/check-ui5-single-copy.cjs", "retain:assets": "node scripts/retain-asset-bundles.cjs --js-dir hugo/public/js --css-dir hugo/public/css --manifest-out hugo/public/_retained-assets.json", "prepare": "npm run setup:git-hooks", - "setup:git-hooks": "sh scripts/install-git-hooks.sh", + "setup:git-hooks": "sh -c 'if [ -f scripts/install-git-hooks.sh ]; then sh scripts/install-git-hooks.sh; fi'", "static-guards": "tsx scripts/run-static-guards.ts", "postbuild:apps": "npm run static-guards", "build:explore-manifest": "tsx scripts/build-explore-manifest.ts", From 45c0677c86d454c2b617e6cbda7e4b0051ba0034 Mon Sep 17 00:00:00 2001 From: Thomas Jung Date: Wed, 9 Sep 2026 10:11:07 -0700 Subject: [PATCH 4/4] chore(release): update What's New digest + bump MTA version to 1.24.0 --- .deploy/mta.yaml | 2 +- hugo/data/whats_new.json | 11334 +++++++++++++++++++------------------ 2 files changed, 5720 insertions(+), 5616 deletions(-) diff --git a/.deploy/mta.yaml b/.deploy/mta.yaml index e3a39afe4..715c1d50a 100644 --- a/.deploy/mta.yaml +++ b/.deploy/mta.yaml @@ -10,7 +10,7 @@ ID: tutorials-ims # Bump this on each release you deploy — it's the version shown by `cf mtas` # and in the mtar filename (tutorials-ims_.mtar). Deploy is manual: # `cd .deploy && mbt build && cf deploy mta_archives/tutorials-ims_.mtar -e ../deploy/.mtaext -f`. -version: 1.23.0 +version: 1.24.0 # Top-level parameters (overridable per-env via deploy/.mtaext). parameters: diff --git a/hugo/data/whats_new.json b/hugo/data/whats_new.json index e06914156..fc237673d 100644 --- a/hugo/data/whats_new.json +++ b/hugo/data/whats_new.json @@ -1,5615 +1,5719 @@ -{ - "generatedAt": "2026-09-08T21:34:34.100Z", - "repos": [ - { - "key": "tutorials-ims", - "slug": "sap-tutorials/tutorials-ims", - "label": "Developer Portal" - } - ], - "entries": [ - { - "id": "tutorials-ims#2211", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2211, - "title": "feat(mcp): add search_channels curated tool (#2205)", - "summary": "MCP clients can now discover the external-channels catalog through a new anonymous search_channels tool, searchable by name, category, and platform.", - "category": "Feature", - "mergedAt": "2026-09-08T21:22:33Z", - "week": "2026-W37", - "weekStart": "2026-09-07", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2211" - }, - { - "id": "tutorials-ims#2210", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2210, - "title": "docs(skills): add sap-developers-mcp skill for the hosted MCP server", - "summary": "A published guide explains how to connect any MCP client — Claude, Joule, Cursor, and others — to the SAP Developers hosted MCP server across anonymous, PAT, and OAuth access.", - "category": "Docs", - "mergedAt": "2026-09-08T21:21:59Z", - "week": "2026-W37", - "weekStart": "2026-09-07", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2210" - }, - { - "id": "tutorials-ims#2208", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2208, - "title": "fix(feedback-digest): mark pre-canonicalized slug lookup (fix DEV unit tests)", - "summary": "Tidied an internal slug lookup in the feedback digest so it passes the build's static checks; no behavior change.", - "category": "Maintenance", - "mergedAt": "2026-09-08T21:04:45Z", - "week": "2026-W37", - "weekStart": "2026-09-07", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2208" - }, - { - "id": "tutorials-ims#2207", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2207, - "title": "fix(admin-shell): restore dropped _loadNotificationConfig header (#2199)", - "summary": "Restored a controller method in the Tutorial Health dashboard that had been accidentally broken, so admin builds and notifications work again.", - "category": "Fix", - "mergedAt": "2026-09-08T20:51:25Z", - "week": "2026-W37", - "weekStart": "2026-09-07", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2207" - }, - { - "id": "tutorials-ims#2204", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2204, - "title": "feat(#2199): personal watch list in Tutorial Health dashboard", - "summary": "Authors can now build a personal watch list to monitor tutorials they don't own, with the health report scoped to owned, watched, or both.", - "category": "Feature", - "mergedAt": "2026-09-08T20:22:54Z", - "week": "2026-W37", - "weekStart": "2026-09-07", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2204" - }, - { - "id": "tutorials-ims#2203", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2203, - "title": "fix(users): backfill email from token subject when JWT email claim is absent (#2199)", - "summary": "An author's email is now backfilled from their sign-in identity when the login token omits it, so their ownership and monitoring dashboards report tutorials correctly.", - "category": "Fix", - "mergedAt": "2026-09-08T20:20:34Z", - "week": "2026-W37", - "weekStart": "2026-09-07", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2203" - }, - { - "id": "tutorials-ims#2202", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2202, - "title": "test: fix stale lockstep counts for #2184 semaphore sync (flag + job)", - "summary": "Updated internal test counts to match the newly added taxonomy-sync flag and job.", - "category": "Maintenance", - "mergedAt": "2026-09-08T19:56:03Z", - "week": "2026-W37", - "weekStart": "2026-09-07", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2202" - }, - { - "id": "tutorials-ims#2201", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2201, - "title": "feat(channels): alert on new channel submissions awaiting approval (#2198)", - "summary": "DevRel now receives an alert whenever a new external-channel submission is waiting in the moderation queue, so proposals don't sit unnoticed.", - "category": "Feature", - "mergedAt": "2026-09-08T18:18:10Z", - "week": "2026-W37", - "weekStart": "2026-09-07", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2201" - }, - { - "id": "tutorials-ims#2200", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2200, - "title": "test(smoke): make the deploy smoke gate a reliable green set", - "summary": "Made the deploy smoke checks a reliably green set by fixing test-only defects, so a red run once again signals a real problem.", - "category": "Maintenance", - "mergedAt": "2026-09-08T18:01:51Z", - "week": "2026-W37", - "weekStart": "2026-09-07", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2200" - }, - { - "id": "tutorials-ims#2197", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2197, - "title": "feat(tags): automate Semaphore taxonomy sync (#2184)", - "summary": "A weekly automated sync keeps the tag taxonomy aligned with the central Semaphore model, updating renamed terms in place instead of duplicating them.", - "category": "Feature", - "mergedAt": "2026-09-08T13:56:44Z", - "week": "2026-W37", - "weekStart": "2026-09-07", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2197" - }, - { - "id": "tutorials-ims#2196", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2196, - "title": "test: fix two stale unit tests failing CI", - "summary": "Refreshed two stale tests to match earlier source changes.", - "category": "Maintenance", - "mergedAt": "2026-09-08T13:30:49Z", - "week": "2026-W37", - "weekStart": "2026-09-07", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2196" - }, - { - "id": "tutorials-ims#2195", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2195, - "title": "fix(scavenger-hunt): correct Shilpa clue string", - "summary": "Corrected the API-docs scavenger hunt clue so it matches the current site snippet.", - "category": "Fix", - "mergedAt": "2026-09-08T12:57:16Z", - "week": "2026-W37", - "weekStart": "2026-09-07", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2195" - }, - { - "id": "tutorials-ims#2191", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2191, - "title": "test(sm-tech-ids): env-gate tutorial-page sm_tech_ids smoke assertion", - "summary": "Made a tutorial product-ID smoke check opt-in via configuration so it no longer fails on environments lacking that data.", - "category": "Maintenance", - "mergedAt": "2026-09-08T04:00:49Z", - "week": "2026-W37", - "weekStart": "2026-09-07", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2191" - }, - { - "id": "tutorials-ims#2190", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2190, - "title": "feat(feedback): email tutorial owners new commented feedback (#2188)", - "summary": "Tutorial owners now receive a daily email digest of new commented feedback on their tutorials.", - "category": "Feature", - "mergedAt": "2026-09-08T03:51:16Z", - "week": "2026-W37", - "weekStart": "2026-09-07", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2190" - }, - { - "id": "tutorials-ims#2189", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2189, - "title": "fix(attachments): base64url-encode source URLs to dodge Akamai WAF 403 (#1931 follow-up)", - "summary": "Tutorial attachment downloads work again by encoding source URLs so they no longer trip a content-delivery security block.", - "category": "Fix", - "mergedAt": "2026-09-08T03:23:22Z", - "week": "2026-W37", - "weekStart": "2026-09-07", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2189" - }, - { - "id": "tutorials-ims#2187", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2187, - "title": "Restore sm_tech_ids product-ID meta tags across content pages", - "summary": "Content pages once again emit product-ID meta tags so the site search crawler can filter migrated documents by product.", - "category": "Feature", - "mergedAt": "2026-09-08T02:38:08Z", - "week": "2026-W37", - "weekStart": "2026-09-07", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2187" - }, - { - "id": "tutorials-ims#2186", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2186, - "title": "fix(puzzles): wire Submit button as the completion finalizer (#2185)", - "summary": "The puzzle solver's Submit button now works as the completion step, so solving and submitting a puzzle records it correctly.", - "category": "Fix", - "mergedAt": "2026-09-07T23:00:30Z", - "week": "2026-W37", - "weekStart": "2026-09-07", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2186" - }, - { - "id": "tutorials-ims#2183", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2183, - "title": "fix(tutorial-author): relabel 'Created by' to 'Created on' (#2177)", - "summary": "Relabeled a tutorial's date line from 'Created by' to 'Created on' since it shows only a date, not a person.", - "category": "Fix", - "mergedAt": "2026-09-07T11:12:56Z", - "week": "2026-W37", - "weekStart": "2026-09-07", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2183" - }, - { - "id": "tutorials-ims#2182", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2182, - "title": "fix(author): stop mixing named authors with last-changed-by identity (#2181)", - "summary": "Fixed tutorial bylines so a named author is no longer paired with a different person's photo and profile link when the author profile is missing.", - "category": "Fix", - "mergedAt": "2026-09-07T11:07:34Z", - "week": "2026-W37", - "weekStart": "2026-09-07", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2182" - }, - { - "id": "tutorials-ims#2176", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2176, - "title": "Release 1.22.0 — What's New refresh + version bump", - "summary": "Promoted the accumulated DEV changes to production as release 1.22.0, refreshing the What's New digest and version.", - "category": "Maintenance", - "mergedAt": "2026-09-06T19:08:20Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2176" - }, - { - "id": "tutorials-ims#2175", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2175, - "title": "fix(channel-atlas): dark-mode theming — legible text + visible filter selection", - "summary": "The Channel Atlas now reads correctly in dark mode, with legible text and clearly highlighted filter selections.", - "category": "Fix", - "mergedAt": "2026-09-06T17:44:52Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2175" - }, - { - "id": "tutorials-ims#2174", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2174, - "title": "fix(channel-atlas): recover from double-encoded inline payload (blank Atlas)", - "summary": "Fixed a bug that left the Channel Atlas showing a blank page, so the channel ecosystem graph now loads reliably.", - "category": "Fix", - "mergedAt": "2026-09-06T16:53:00Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2174" - }, - { - "id": "tutorials-ims#2173", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2173, - "title": "fix(channels): hub UX — crosswalk 404, media-diet layout, health enrichment", - "summary": "Polished the Channels hub — removed a dead link, gave the Build-Your-Media-Diet page a clearer two-column layout with a live match count, and made the Ecosystem Health view easier to read at a glance.", - "category": "Fix", - "mergedAt": "2026-09-06T15:25:17Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2173" - }, - { - "id": "tutorials-ims#2172", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2172, - "title": "fix(ci): mark pre-canonicalized slug lookup in build-channel-detail", - "summary": "Internal build-guard adjustment for the channels publishing pipeline.", - "category": "Maintenance", - "mergedAt": "2026-09-06T15:25:02Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2172" - }, - { - "id": "tutorials-ims#2171", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2171, - "title": "fix(channels): chunk ChannelTopicMap AI seed to avoid token-cap zero-result", - "summary": "Channels are now reliably tagged with the topics they cover, so topic pages surface the right related channels.", - "category": "Fix", - "mergedAt": "2026-09-06T14:44:43Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2171" - }, - { - "id": "tutorials-ims#2170", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2170, - "title": "fix(ci): allowlist GET /content/channel-detail/:slug (route-drift guard)", - "summary": "Internal route-parity guard update for the channels content service.", - "category": "Maintenance", - "mergedAt": "2026-09-06T13:46:35Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2170" - }, - { - "id": "tutorials-ims#2169", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2169, - "title": "feat(channels): Phase 3 — Channel Atlas SPA (/channels/atlas/)", - "summary": "New interactive Channel Atlas maps the SAP developer channel ecosystem as a visual graph you can explore and filter by owner type.", - "category": "Feature", - "mergedAt": "2026-09-06T12:04:55Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2169" - }, - { - "id": "tutorials-ims#2168", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2168, - "title": "feat(channels-hub): Phase 2 — crosswalk Direction 2, media-diet signed-in + export", - "summary": "Added per-channel detail pages, a Learn-to-Follow crosswalk between topics and channels, and the ability to build and export a personalized media diet of channels.", - "category": "Feature", - "mergedAt": "2026-09-06T11:59:20Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2168" - }, - { - "id": "tutorials-ims#2167", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2167, - "title": "fix(channels): health page baked empty stats — data-key filename mismatch", - "summary": "Fixed the Channels Ecosystem Health page that was showing zero channels; it now displays the real totals.", - "category": "Fix", - "mergedAt": "2026-09-06T00:40:48Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2167" - }, - { - "id": "tutorials-ims#2166", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2166, - "title": "feat(channels): Channels Hub Phase 1 — hub band + ecosystem-health + media-diet", - "summary": "Turned the Channels page into a hub with an Ecosystem Health view and a Build-Your-Media-Diet tool for discovering channels by focus area.", - "category": "Feature", - "mergedAt": "2026-09-05T22:37:58Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2166" - }, - { - "id": "tutorials-ims#2165", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2165, - "title": "feat(channels): Phase 0 foundation — slug+feedUrl schema, migration, ingest", - "summary": "Behind-the-scenes foundation for the Channels hub, adding stable channel permalinks and feed links.", - "category": "Maintenance", - "mergedAt": "2026-09-05T21:01:10Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2165" - }, - { - "id": "tutorials-ims#2164", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2164, - "title": "fix(admin-ui): restore FE list→object navigation in headless shell (unblocks Channels Edit)", - "summary": "Fixed the admin console so clicking a list row opens its detail page for editing across the Channels and other management screens.", - "category": "Fix", - "mergedAt": "2026-09-05T18:03:50Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2164" - }, - { - "id": "tutorials-ims#2163", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2163, - "title": "fix(admin): enable Edit — Channels list rows now navigate to object page", - "summary": "Enabled editing of Channels, Channel Collections, and Channel Topic Maps in the admin console by wiring list rows to their detail pages.", - "category": "Fix", - "mergedAt": "2026-09-05T16:41:30Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2163" - }, - { - "id": "tutorials-ims#2162", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2162, - "title": "fix(nav): remember open folder, Tutorial Navigator first, fix palette + channels", - "summary": "Navigation improvements — the menu now remembers your open section, the command palette and Channels page are fixed, and Tutorial Navigator is listed first.", - "category": "Fix", - "mergedAt": "2026-09-05T14:25:45Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2162" - }, - { - "id": "tutorials-ims#2161", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2161, - "title": "feat(nav): restore 'About the Knowledge Graph' (/explore/about/) menu item", - "summary": "Restored the 'About the Knowledge Graph' entry in the navigation menu alongside the interactive Explorer.", - "category": "Feature", - "mergedAt": "2026-09-05T12:39:10Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2161" - }, - { - "id": "tutorials-ims#2160", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2160, - "title": "feat(nav+channels): shared nav data + two-level menu, palette wiring, channels admin + suggest-form", - "summary": "Unified the top navigation and command palette from a single source so Channels, Topics, Browse, What's New, and more appear consistently in a cleaner two-level menu.", - "category": "Feature", - "mergedAt": "2026-09-05T12:29:36Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2160" - }, - { - "id": "tutorials-ims#2159", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2159, - "title": "fix(channels): make seed runnable + widen platform (unblocks DEV channel data load)", - "summary": "Internal reliability fixes to the channels data-loading pipeline so the full channel dataset loads cleanly.", - "category": "Maintenance", - "mergedAt": "2026-09-05T08:20:16Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2159" - }, - { - "id": "tutorials-ims#2158", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2158, - "title": "polish(channels): tighten P4 submit-service contract (405 READ + EDIT/REMOVE target guard)", - "summary": "Hardening of the community channel-submission service for more predictable behavior.", - "category": "Maintenance", - "mergedAt": "2026-09-04T23:03:51Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2158" - }, - { - "id": "tutorials-ims#2157", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2157, - "title": "feat(channels): P4 community submission loop", - "summary": "Community members can now suggest adding, editing, or removing channels, with an admin moderation queue to review each submission.", - "category": "Feature", - "mergedAt": "2026-09-04T22:52:55Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2157" - }, - { - "id": "tutorials-ims#2156", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2156, - "title": "fix(#2138): report filter value help + labels, legible survey charts", - "summary": "Report filters for Mission and Group now show proper labels and value help, and the Survey report charts are legible.", - "category": "Fix", - "mergedAt": "2026-09-04T21:49:24Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2156" - }, - { - "id": "tutorials-ims#2155", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2155, - "title": "fix(devtoberfest): unblock promo video (CSP host) + side-by-side layout (#2144)", - "summary": "Fixed the Devtoberfest promo video that was blocked from playing and corrected its side-by-side layout.", - "category": "Fix", - "mergedAt": "2026-09-04T21:30:33Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2155" - }, - { - "id": "tutorials-ims#2154", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2154, - "title": "fix(homepage): Joule purple→pink brand gradient on Devtoberfest banner (#2131)", - "summary": "Updated the homepage Devtoberfest banner to the Joule purple-to-pink brand gradient with accessible contrast.", - "category": "Fix", - "mergedAt": "2026-09-04T21:27:31Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2154" - }, - { - "id": "tutorials-ims#2153", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2153, - "title": "feat(channels): Surface C — related-channels band on /topics/* (P3)", - "summary": "Topic pages now show a 'Related channels' band linking out to relevant SAP developer channels.", - "category": "Feature", - "mergedAt": "2026-09-04T21:00:55Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2153" - }, - { - "id": "tutorials-ims#2152", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2152, - "title": "fix(channels): unbreak unit-tests slug-lookup guard after PR #2151", - "summary": "Internal build-guard fix for the channel collections pipeline.", - "category": "Maintenance", - "mergedAt": "2026-09-04T20:17:55Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2152" - }, - { - "id": "tutorials-ims#2151", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2151, - "title": "feat(channels): P2 — clustering & editorial collections", - "summary": "Added curated editorial collections that group related channels and lead the Channels directory.", - "category": "Feature", - "mergedAt": "2026-09-04T19:37:24Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2151" - }, - { - "id": "tutorials-ims#2150", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2150, - "title": "feat(#2138) standard reports in Admin UI Reporting folder", - "summary": "New standard reports in the admin Reporting folder — Tutorial Engagement, Tutorial Completions, and a Tutorial Survey view — replacing the retired Power BI dashboard.", - "category": "Feature", - "mergedAt": "2026-09-04T19:36:43Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2150" - }, - { - "id": "tutorials-ims#2149", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2149, - "title": "docs(mcp): add Joule Work Desktop MCP connection instructions", - "summary": "Added instructions for connecting to the platform's MCP server from Joule Work Desktop.", - "category": "Docs", - "mergedAt": "2026-09-04T18:56:00Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2149" - }, - { - "id": "tutorials-ims#2148", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2148, - "title": "feat(me): show partial completions in Recent Activity (#2146)", - "summary": "Your Recent Activity on the My Completions page now shows in-progress tutorials so you can pick up where you left off.", - "category": "Feature", - "mergedAt": "2026-09-04T18:23:03Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2148" - }, - { - "id": "tutorials-ims#2147", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2147, - "title": "External channels P1 follow-ups: facets, owner badges, feed hardening", - "summary": "Enhanced the Channels directory with more filters (focus area and status), clearer owner badges, and related links on each channel.", - "category": "Feature", - "mergedAt": "2026-09-04T18:07:22Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2147" - }, - { - "id": "tutorials-ims#2145", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2145, - "title": "feat(devtoberfest): embed promo video in content gap (#2144)", - "summary": "Added the Devtoberfest promo video to the event home page.", - "category": "Feature", - "mergedAt": "2026-09-04T18:06:10Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2145" - }, - { - "id": "tutorials-ims#2143", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2143, - "title": "fix(docs): register channels reference page in sidebar", - "summary": "Registered the External Channels reference page in the documentation sidebar.", - "category": "Docs", - "mergedAt": "2026-09-04T17:53:15Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2143" - }, - { - "id": "tutorials-ims#2142", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2142, - "title": "feat: external SAP channels P1 foundation", - "summary": "Introduced the external SAP channels directory at /channels, bringing hundreds of curated developer channels into the site with search, filters, and admin management.", - "category": "Feature", - "mergedAt": "2026-09-04T17:42:09Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2142" - }, - { - "id": "tutorials-ims#2141", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2141, - "title": "fix(puzzles): sort admin clue lists by number, not grid position (#2140)", - "summary": "Fixed the crossword puzzle builder so Down clues are listed in numeric order.", - "category": "Fix", - "mergedAt": "2026-09-04T15:51:32Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2141" - }, - { - "id": "tutorials-ims#2136", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2136, - "title": "docs(mcp): fix OAuth quickstart to use prod client_id", - "summary": "Corrected the MCP OAuth quickstart to use the production client ID.", - "category": "Docs", - "mergedAt": "2026-09-04T13:27:00Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2136" - }, - { - "id": "tutorials-ims#2137", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2137, - "title": "fix(mcp-oauth): advertise approuter as authorization server (self-issuer)", - "summary": "Fixed the MCP server OAuth sign-in flow so the token exchange completes correctly.", - "category": "Fix", - "mergedAt": "2026-09-04T08:14:40Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2137" - }, - { - "id": "tutorials-ims#2135", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2135, - "title": "feat(events): per-event name, description & logo on event-display + app-space (#2133)", - "summary": "Event display and App Space pages now show each event's real name, description, and logo instead of a hardcoded label.", - "category": "Feature", - "mergedAt": "2026-09-04T07:42:07Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2135" - }, - { - "id": "tutorials-ims#2134", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2134, - "title": "feat(homepage): Devtoberfest banner with live countdown (#2131)", - "summary": "Added a homepage Devtoberfest banner with a live countdown to the event.", - "category": "Feature", - "mergedAt": "2026-09-04T06:40:22Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2134" - }, - { - "id": "tutorials-ims#2132", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2132, - "title": "Update Devtoberfest scavenger hunt clue captions (#2130)", - "summary": "Updated the Devtoberfest scavenger hunt clue captions.", - "category": "Maintenance", - "mergedAt": "2026-09-04T06:17:42Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2132" - }, - { - "id": "tutorials-ims#2129", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2129, - "title": "fix(api-docs): sap-devs CLI install no longer on npm (#2123)", - "summary": "Updated the API Docs page with current install instructions for the sap-devs CLI (Homebrew, Scoop, and GitHub Releases) now that it's no longer on npm.", - "category": "Fix", - "mergedAt": "2026-09-03T18:00:37Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2129" - }, - { - "id": "tutorials-ims#2128", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2128, - "title": "fix(tutorials): support no-step + commented-out-step validation tutorials (#2127)", - "summary": "Fixed rendering of Devtoberfest validation tutorials that intentionally ship with no steps or commented-out steps yet.", - "category": "Fix", - "mergedAt": "2026-09-03T17:40:43Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2128" - }, - { - "id": "tutorials-ims#2126", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2126, - "title": "fix(sitemap): guard catalog-only rebuilds from wiping /tutorials/ URLs", - "summary": "Fixed an issue where catalog-only content rebuilds could strip tutorial URLs from the sitemap, restoring full search-crawler coverage.", - "category": "Fix", - "mergedAt": "2026-09-03T15:15:59Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2126" - }, - { - "id": "tutorials-ims#2122", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2122, - "title": "promote: rebuild-content phantom-step fix (#2121) to main", - "summary": "Promoted a content-rebuild pipeline fix to production.", - "category": "Maintenance", - "mergedAt": "2026-09-03T02:49:28Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2122" - }, - { - "id": "tutorials-ims#2121", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2121, - "title": "fix(rebuild-content): drop phantom 'Fetch topics gallery' step (breaks all full rebuilds)", - "summary": "Fixed the content rebuild pipeline that was failing on a missing step, restoring full content publishes.", - "category": "Maintenance", - "mergedAt": "2026-09-03T02:47:30Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2121" - }, - { - "id": "tutorials-ims#2119", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2119, - "title": "Release 1.21.0 → PROD", - "summary": "Release 1.21.0 promotion to production.", - "category": "Maintenance", - "mergedAt": "2026-09-03T01:33:17Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2119" - }, - { - "id": "tutorials-ims#2118", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2118, - "title": "chore(release): bump MTA 1.20.1 → 1.21.0 + refresh What's New digest", - "summary": "Version bump and What's New digest refresh for the 1.21.0 release.", - "category": "Maintenance", - "mergedAt": "2026-09-03T01:31:30Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2118" - }, - { - "id": "tutorials-ims#2117", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2117, - "title": "fix(topics): nest /topics/ tree by parsing real titlePath separators", - "summary": "The Topics browser now nests into proper drill-in folders instead of showing every tag as a single flat entry.", - "category": "Fix", - "mergedAt": "2026-09-02T16:47:28Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2117" - }, - { - "id": "tutorials-ims#2116", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2116, - "title": "feat(devtoberfest): Live vs Prerecorded session tag + format filter (#2110)", - "summary": "Devtoberfest sessions now carry a Live vs Prerecorded badge, with a new Format filter across the grid, calendar, and schedule views.", - "category": "Feature", - "mergedAt": "2026-09-02T16:30:44Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2116" - }, - { - "id": "tutorials-ims#2115", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2115, - "title": "fix(tutorial): make Overview tags clickable (#2112)", - "summary": "Tags in a tutorial's Overview section are now clickable links to browse related tutorials, matching the header chips.", - "category": "Fix", - "mergedAt": "2026-09-02T16:26:08Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2115" - }, - { - "id": "tutorials-ims#2114", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2114, - "title": "fix(admin): stop prompting non-SuperAdmin for publish rights on description edits (#2111)", - "summary": "Authors and admins can again save a group's description or title edit without hitting a false 'SuperAdmin only' publish-rights error.", - "category": "Fix", - "mergedAt": "2026-09-02T16:09:53Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2114" - }, - { - "id": "tutorials-ims#2109", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2109, - "title": "feat(cross-container): ADVOCATE_VALUE_HELP_V1 view for planner Session.host (#2102)", - "summary": "The active SAP Developer Advocate roster is now shared as an authoritative value-help source, letting the Devtoberfest planner pick session hosts from the real list.", - "category": "Feature", - "mergedAt": "2026-09-02T12:15:09Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2109" - }, - { - "id": "tutorials-ims#2108", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2108, - "title": "fix(ci): allowlist /content/topics* in srv-qa route-drift guard", - "summary": "Build-guard update so the new Topics content routes pass continuous integration.", - "category": "Maintenance", - "mergedAt": "2026-09-02T11:41:19Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2108" - }, - { - "id": "tutorials-ims#2107", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2107, - "title": "feat(devtoberfest): schedule-consistency check across planner + external assets (#2103)", - "summary": "A new admin check flags Devtoberfest sessions whose planner time disagrees with their YouTube livestream or community-event schedule.", - "category": "Feature", - "mergedAt": "2026-09-02T11:23:34Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2107" - }, - { - "id": "tutorials-ims#2106", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2106, - "title": "fix(topics): URL-safe topic slugs so /topics/ serves (#2099 follow-up)", - "summary": "Topic detail pages now resolve correctly — topic slugs are made URL-safe so /topics/ no longer returns 404.", - "category": "Fix", - "mergedAt": "2026-09-02T11:09:44Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2106" - }, - { - "id": "tutorials-ims#2100", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2100, - "title": "fix(approuter): /search 301 via middleware — unblock DEV approuter boot", - "summary": "Restored the site frontend after a bad redirect setting; the /search shortcut now redirects reliably.", - "category": "Fix", - "mergedAt": "2026-09-02T00:43:35Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2100" - }, - { - "id": "tutorials-ims#2099", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2099, - "title": "feat(topics): tag-tree topics — CAP-served index + detail, concept enrichment, search fix", - "summary": "Rebuilt the Topics area with a browsable tag tree, per-topic detail pages enriched with related concepts, and a smarter search redirect.", - "category": "Feature", - "mergedAt": "2026-09-01T22:02:12Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2099" - }, - { - "id": "tutorials-ims#2098", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2098, - "title": "fix(#2097): scope QA notify workflow to default branch", - "summary": "The QA content-rebuild automation no longer misfires when work is pushed to non-default branches.", - "category": "Maintenance", - "mergedAt": "2026-09-01T20:10:29Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2098" - }, - { - "id": "tutorials-ims#2096", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2096, - "title": "feat(admin-ui): make Tutorials OP facets readable (concepts/community/images)", - "summary": "The admin Tutorials page now shows readable concept names, community descriptions, and image links instead of raw IDs.", - "category": "Feature", - "mergedAt": "2026-09-01T18:39:29Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2096" - }, - { - "id": "tutorials-ims#2095", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2095, - "title": "fix(categories): resolve namespaced entities for HANA backfill + seed classifier descriptions", - "summary": "Fixed the Categories facet staying empty by resolving entities correctly against SAP HANA and seeding classifier descriptions.", - "category": "Fix", - "mergedAt": "2026-09-01T18:39:11Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2095" - }, - { - "id": "tutorials-ims#2093", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2093, - "title": "fix(publish): gate category self-heal to avoid OOM on bulk publishes", - "summary": "Full content publishes no longer risk exhausting backend memory while auto-categorizing tutorials.", - "category": "Fix", - "mergedAt": "2026-09-01T15:15:27Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2093" - }, - { - "id": "tutorials-ims#2092", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2092, - "title": "fix(srv-qa): lazy-import category-classifier-llm to unbreak srv-qa boot", - "summary": "Deploy-stability fix so the QA content container boots reliably.", - "category": "Maintenance", - "mergedAt": "2026-08-31T21:29:34Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2092" - }, - { - "id": "tutorials-ims#2091", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2091, - "title": "fix(ci): allowlist srv-only publish-contributors + publish-validation-rules routes", - "summary": "Build-guard update covering the new contributor and validation-rule publish routes.", - "category": "Maintenance", - "mergedAt": "2026-08-31T21:29:22Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2091" - }, - { - "id": "tutorials-ims#2090", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2090, - "title": "Admin OP Phase 3: Knowledge-Graph facet", - "summary": "The admin Tutorials page gains a Knowledge-Graph facet surfacing the graph relationships computed nightly.", - "category": "Feature", - "mergedAt": "2026-08-31T20:30:02Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2090" - }, - { - "id": "tutorials-ims#2089", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2089, - "title": "Admin OP Phase 2: Media facet + Freshness report header", - "summary": "The admin Tutorials page adds a Media facet with object-store visibility plus a freshness run-history header.", - "category": "Feature", - "mergedAt": "2026-08-31T19:49:05Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2089" - }, - { - "id": "tutorials-ims#2088", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2088, - "title": "Admin OP Phase 1: fix empty Categories / Contributors / Validation facets", - "summary": "Fixed three empty facets — Categories, Contributors, and Validation — on the admin Tutorials page.", - "category": "Fix", - "mergedAt": "2026-08-31T19:08:22Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2088" - }, - { - "id": "tutorials-ims#2087", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2087, - "title": "fix(docs): unbreak VitePress build — backtick bare in gotchas.md", - "summary": "Fixed the developer documentation site build.", - "category": "Docs", - "mergedAt": "2026-08-31T15:29:27Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2087" - }, - { - "id": "tutorials-ims#2086", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2086, - "title": "docs: slim CLAUDE.md Top Gotchas (relocate detail to gotchas.md)", - "summary": "Streamlined the internal contributor guidance for faster, leaner tooling sessions.", - "category": "Maintenance", - "mergedAt": "2026-08-31T15:19:34Z", - "week": "2026-W36", - "weekStart": "2026-08-31", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2086" - }, - { - "id": "tutorials-ims#2084", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2084, - "title": "chore: sync main into DEV (reconcile hotfixes #2081 + #2083)", - "summary": "Reconciled two production hotfixes back into the development branch to keep branches in sync.", - "category": "Maintenance", - "mergedAt": "2026-08-29T06:56:28Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2084" - }, - { - "id": "tutorials-ims#2083", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2083, - "title": "fix(admin): Feature Flags Enable/Disable buttons (Unknown action import)", - "summary": "The Enable/Disable buttons on the admin Feature Flags page work again.", - "category": "Fix", - "mergedAt": "2026-08-29T06:45:56Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2083" - }, - { - "id": "tutorials-ims#2081", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2081, - "title": "fix(rebuild-content): fetch topic-clusters/featured-topics/topics-gallery/tags so homepage bands bake fresh", - "summary": "The homepage Explore 'topic clusters' band now shows fresh, curated topic data instead of falling back to a tutorials-only list.", - "category": "Fix", - "mergedAt": "2026-08-28T23:23:27Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2081" - }, - { - "id": "tutorials-ims#2080", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2080, - "title": "Release 1.20.1 → PROD", - "summary": "Shipped release 1.20.1 to production.", - "category": "Maintenance", - "mergedAt": "2026-08-28T21:07:50Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2080" - }, - { - "id": "tutorials-ims#2078", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2078, - "title": "chore(release): bump MTA 1.20.0 → 1.20.1 + refresh What's New digest", - "summary": "Release 1.20.1 preparation and What's New digest refresh.", - "category": "Maintenance", - "mergedAt": "2026-08-28T20:52:20Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2078" - }, - { - "id": "tutorials-ims#2079", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2079, - "title": "fix(homepage): boot-seed HomepageShelves; retire seed CSV + manual seed:thirdparty", - "summary": "Curated homepage shelf links (Prior Labs, Dremio, Hugging Face, and others) no longer disappear after a deployment.", - "category": "Fix", - "mergedAt": "2026-08-28T20:52:09Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2079" - }, - { - "id": "tutorials-ims#2076", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2076, - "title": "docs: register akamai-well-known-forward in sidebar (fix docs:build)", - "summary": "Corrected the developer-docs sidebar so a new operations runbook page publishes correctly.", - "category": "Docs", - "mergedAt": "2026-08-28T17:58:23Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2076" - }, - { - "id": "tutorials-ims#2075", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2075, - "title": "feat(approuter): complete .well-known MCP discovery surface (openid-config, mcp.json, WWW-Authenticate pointer)", - "summary": "External MCP clients such as the Claude and ChatGPT connectors can now auto-discover the platform's OAuth endpoints through a complete set of .well-known discovery documents.", - "category": "Feature", - "mergedAt": "2026-08-28T17:47:32Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2075" - }, - { - "id": "tutorials-ims#2074", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2074, - "title": "fix(freshness): calibrate prompt by severity so Check Freshness surfaces findings again", - "summary": "The admin Check Freshness tool once again surfaces potentially outdated API references instead of returning an empty report.", - "category": "Fix", - "mergedAt": "2026-08-28T16:15:34Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2074" - }, - { - "id": "tutorials-ims#2073", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2073, - "title": "fix(feature-flags): don't connect to db before model is loaded (fixes #2066 unit regression + latent boot bug)", - "summary": "Fixed a startup issue in the feature-flag system that could cause service errors before the data model finished loading.", - "category": "Fix", - "mergedAt": "2026-08-28T16:00:02Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2073" - }, - { - "id": "tutorials-ims#2072", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2072, - "title": "fix(me): AllCompletions/RecentActivity sign-in gate must check /auth/user JSON, not resp.ok", - "summary": "My Completions and Recent Activity now prompt you to sign in when your session has expired, instead of silently failing to load.", - "category": "Fix", - "mergedAt": "2026-08-28T14:41:55Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2072" - }, - { - "id": "tutorials-ims#2071", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2071, - "title": "fix(tokens): /me/tokens sign-in gate must check /auth/user JSON, not resp.ok", - "summary": "The personal access tokens page now shows a sign-in prompt when your session lapses, rather than a generic load error.", - "category": "Fix", - "mergedAt": "2026-08-28T14:34:04Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2071" - }, - { - "id": "tutorials-ims#2070", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2070, - "title": "fix(test): repair unit-suite fallout from flag→DB migration (WIP)", - "summary": "Internal test-suite repairs following the feature-flag configuration migration.", - "category": "Maintenance", - "mergedAt": "2026-08-28T13:47:42Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2070" - }, - { - "id": "tutorials-ims#2069", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2069, - "title": "fix(qa): slug-scope QA content publish + resilient commit + lock release", - "summary": "Made QA content republishing more reliable by scoping it to changed tutorials and hardening the publish step.", - "category": "Fix", - "mergedAt": "2026-08-28T13:47:08Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2069" - }, - { - "id": "tutorials-ims#2068", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2068, - "title": "fix(content): skip Option-B delta flag boot-seed under vitest", - "summary": "Test-environment fix so content fast-path defaults do not leak into the automated test suite.", - "category": "Maintenance", - "mergedAt": "2026-08-28T12:46:37Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2068" - }, - { - "id": "tutorials-ims#2066", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2066, - "title": "feat(feature-flags): migrate remaining 14 env flags to DB config (#2060)", - "summary": "Moved the remaining runtime feature flags to database-backed configuration so they are editable in admin and survive deployments.", - "category": "Maintenance", - "mergedAt": "2026-08-28T12:06:08Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2066" - }, - { - "id": "tutorials-ims#2064", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2064, - "title": "feat(content): default Option-B fast-path flags ON (seed ImsConfig if absent)", - "summary": "Content fast-path optimizations now default on and persist across deployments, keeping tutorial content updates fast.", - "category": "Performance", - "mergedAt": "2026-08-28T10:38:23Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2064" - }, - { - "id": "tutorials-ims#2062", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2062, - "title": "ci(rebuild-qa): add force-publish input to re-seed Option B ContentCurrent (QA)", - "summary": "Added a force-republish option to the QA content rebuild workflow.", - "category": "Maintenance", - "mergedAt": "2026-08-28T10:28:07Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2062" - }, - { - "id": "tutorials-ims#2061", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2061, - "title": "fix(content): move Option-B fast-path flags from env vars to DB config (ImsConfig)", - "summary": "Moved content fast-path settings to durable database configuration so they are no longer reset on deployment.", - "category": "Maintenance", - "mergedAt": "2026-08-28T10:27:42Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2061" - }, - { - "id": "tutorials-ims#2058", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2058, - "title": "Release 1.20.0 → PROD", - "summary": "Promoted the 1.20.0 release to production.", - "category": "Maintenance", - "mergedAt": "2026-08-27T20:41:46Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2058" - }, - { - "id": "tutorials-ims#2059", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2059, - "title": "chore: sync main into DEV (reconcile for 1.20.0 release)", - "summary": "Release housekeeping to keep the DEV and main branches in sync ahead of a release.", - "category": "Maintenance", - "mergedAt": "2026-08-27T20:41:22Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2059" - }, - { - "id": "tutorials-ims#2057", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2057, - "title": "perf(qa): reuse cached non-target content on QA slug-targeted rebuilds despite feed drift", - "summary": "QA single-tutorial content rebuilds are much faster now that untouched tutorials reuse cached content.", - "category": "Performance", - "mergedAt": "2026-08-27T19:30:20Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2057" - }, - { - "id": "tutorials-ims#2056", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2056, - "title": "fix(parsers): comment-aware section/intro extraction", - "summary": "Tutorials that disable a section with an HTML comment now render all their steps correctly, with no stray characters left on the page.", - "category": "Fix", - "mergedAt": "2026-08-27T19:12:29Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2056" - }, - { - "id": "tutorials-ims#2055", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2055, - "title": "chore(release): bump MTA 1.19.0 → 1.20.0 + refresh What's New digest", - "summary": "Release version bump and What's New digest refresh.", - "category": "Maintenance", - "mergedAt": "2026-08-27T18:10:53Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2055" - }, - { - "id": "tutorials-ims#2054", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2054, - "title": "fix(admin): readable Devtoberfest Signups report — week axis, labeled total, breakdowns (#2047)", - "summary": "Polished the Devtoberfest Signups report by hiding internal week indices, labeling the total, and correcting the week axis.", - "category": "Fix", - "mergedAt": "2026-08-27T17:47:13Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2054" - }, - { - "id": "tutorials-ims#2053", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2053, - "title": "fix(build/tags): emit mdFormat (category>value) slugs instead of display names", - "summary": "Fixed the tag feed to emit canonical category-value slugs instead of display names so CI tag validation works.", - "category": "Fix", - "mergedAt": "2026-08-27T17:23:59Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2053" - }, - { - "id": "tutorials-ims#2052", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2052, - "title": "feat(devtoberfest): rename \"Hit the Cat\" → \"Tag the Cat\" (#2042)", - "summary": "Renamed the Devtoberfest mini-game from 'Hit the Cat' to the friendlier 'Tag the Cat'.", - "category": "Feature", - "mergedAt": "2026-08-27T17:06:20Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2052" - }, - { - "id": "tutorials-ims#2051", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2051, - "title": "feat: add /build/tags tag-taxonomy feed for CI frontmatter validation", - "summary": "Added a build-time tag-taxonomy feed so downstream CI can validate tutorial frontmatter tags against the canonical list.", - "category": "Feature", - "mergedAt": "2026-08-27T14:17:59Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2051" - }, - { - "id": "tutorials-ims#2049", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2049, - "title": "feat(devtoberfest): Hit the Cat mini-game + gameboard task-type/bonus fixes (#2042)", - "summary": "Added a hidden Chrome-dino-style cat mini-game to the Devtoberfest home page that awards gameboard points to signed-in players.", - "category": "Feature", - "mergedAt": "2026-08-27T14:08:29Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2049" - }, - { - "id": "tutorials-ims#2050", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2050, - "title": "Devtoberfest Signups report: readable week axis, total KPI, region breakdown (#2047)", - "summary": "Made the Devtoberfest Signups admin report readable with a real week-date axis, a labeled total, and region/edition/role breakdowns.", - "category": "Feature", - "mergedAt": "2026-08-27T14:07:25Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2050" - }, - { - "id": "tutorials-ims#2048", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2048, - "title": "fix(devtoberfest-calendar): month grid fits at normal resolution (#2046)", - "summary": "Fixed the Devtoberfest month calendar overflowing the screen at normal resolution.", - "category": "Fix", - "mergedAt": "2026-08-27T13:57:08Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2048" - }, - { - "id": "tutorials-ims#2044", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2044, - "title": "Turn generated-content fast path ON by default (cherry-pick to main)", - "summary": "Cherry-picked the rebuild fast-path default to production ahead of the release train.", - "category": "Maintenance", - "mergedAt": "2026-08-26T22:19:47Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2044" - }, - { - "id": "tutorials-ims#2039", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2039, - "title": "Turn generated-content fast path ON by default (Workstream C follow-up)", - "summary": "Made the faster generated-content rebuild path the default, cutting warm rebuilds from about 56 seconds to 11.", - "category": "Performance", - "mergedAt": "2026-08-26T21:58:36Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2039" - }, - { - "id": "tutorials-ims#2043", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2043, - "title": "feat(admin-shell): page-search command palette (#2041)", - "summary": "Added a Ctrl/Cmd+K command palette to the admin console for jumping to any of its 50-plus pages.", - "category": "Feature", - "mergedAt": "2026-08-26T21:54:46Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2043" - }, - { - "id": "tutorials-ims#2038", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2038, - "title": "Release 1.19.0 → PROD (Option B content migration + bundled features)", - "summary": "Production release of the new content-model migration and bundled features, shipped safely behind flags.", - "category": "Maintenance", - "mergedAt": "2026-08-25T21:31:23Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2038" - }, - { - "id": "tutorials-ims#2037", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2037, - "title": "chore(release): bump MTA version to 1.19.0 for PROD release", - "summary": "Version bump for the production release carrying the content-model migration.", - "category": "Maintenance", - "mergedAt": "2026-08-25T21:10:14Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2037" - }, - { - "id": "tutorials-ims#2036", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2036, - "title": "fix(guard): mark Option B ContentCurrent slug lookups (fixes check-slug-lookups CI failure)", - "summary": "Fixed a slug-lookup build guard for the new content read paths.", - "category": "Maintenance", - "mergedAt": "2026-08-25T19:08:48Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2036" - }, - { - "id": "tutorials-ims#2033", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2033, - "title": "docs(CLAUDE): Option B content-model gotcha + rollout order", - "summary": "Documented the new content model, its feature flags, and the rollout order.", - "category": "Docs", - "mergedAt": "2026-08-25T18:25:49Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2033" - }, - { - "id": "tutorials-ims#2035", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2035, - "title": "fix(deploy): build + copy display-app into approuter static (/display-app/ 404)", - "summary": "Fixed /display-app/ returning 404 by building and shipping it alongside the approuter.", - "category": "Fix", - "mergedAt": "2026-08-25T18:25:26Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2035" - }, - { - "id": "tutorials-ims#2032", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2032, - "title": "feat: Option B reader sweep + carry-forward removal + rollback replay (Workstream D 6.2-6.5, 8.4)", - "summary": "Completed the new content model migration: all readers use the mutable current table and single-tutorial publishes become proportional to what changed, cutting publish time from minutes to under a second.", - "category": "Feature", - "mergedAt": "2026-08-25T16:03:37Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2032" - }, - { - "id": "tutorials-ims#2031", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2031, - "title": "feat(devtoberfest): deep-link URLs for sessions grid filters/search (#2030)", - "summary": "The Devtoberfest sessions page now supports shareable deep-link URLs for search, filters, and an open session panel.", - "category": "Feature", - "mergedAt": "2026-08-25T14:53:12Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2031" - }, - { - "id": "tutorials-ims#2028", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2028, - "title": "feat(serve): Option B read cutover + rollback replay (Workstream D, flag-gated, draft)", - "summary": "Flag-gated read cutover to the new content model, with rollback that replays history.", - "category": "Feature", - "mergedAt": "2026-08-25T12:59:08Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2028" - }, - { - "id": "tutorials-ims#2025", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2025, - "title": "fix(notify): dispatch source-repo rebuilds on both master and main", - "summary": "Fixed change notifications not firing for source repositories that default to the master branch, which had been quietly leaving content stale.", - "category": "Fix", - "mergedAt": "2026-08-25T11:52:08Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2025" - }, - { - "id": "tutorials-ims#2024", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2024, - "title": "fix(#2023): stop Hugo coercing yes/no quiz options to true/false", - "summary": "Fixed yes/no quiz options being silently turned into true/false by the frontmatter serializer.", - "category": "Fix", - "mergedAt": "2026-08-25T11:25:07Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2024" - }, - { - "id": "tutorials-ims#2021", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2021, - "title": "feat(db): Option B schema — ContentCurrent + ContentHistory (Workstream D, draft)", - "summary": "Added the new content data model (a mutable current table plus append-only history) as the foundation for much faster publishing.", - "category": "Feature", - "mergedAt": "2026-08-25T10:30:09Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2021" - }, - { - "id": "tutorials-ims#2020", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2020, - "title": "feat(rebuild): generated-content fast path — Workstream C wiring (flag-gated, draft)", - "summary": "Wired the rebuild fast path so single-tutorial rebuilds reuse cached content for the thousands of unchanged tutorials.", - "category": "Feature", - "mergedAt": "2026-08-25T10:29:55Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2020" - }, - { - "id": "tutorials-ims#2019", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2019, - "title": "feat(rebuild): generated-content cache — Workstream C (foundation, draft)", - "summary": "Foundation helpers for a fast rebuild path that reuses cached generated content.", - "category": "Feature", - "mergedAt": "2026-08-25T01:15:51Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2019" - }, - { - "id": "tutorials-ims#2018", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2018, - "title": "fix(fetch): unmask GraphQL discovery errors + loud REST fallback", - "summary": "Fixed a silent fallback to a slow tutorial-discovery path by surfacing GraphQL errors loudly.", - "category": "Fix", - "mergedAt": "2026-08-24T23:51:54Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2018" - }, - { - "id": "tutorials-ims#2017", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2017, - "title": "Design: slug-targeted delta rebuild (O(changed) end-to-end)", - "summary": "Design proposal to make single-tutorial rebuilds scale with the changed content instead of the whole corpus.", - "category": "Docs", - "mergedAt": "2026-08-24T23:44:33Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2017" - }, - { - "id": "tutorials-ims#2016", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2016, - "title": "perf(rebuild): cache node_modules to skip ~48s npm ci on unchanged lockfiles", - "summary": "Content rebuilds skip roughly 48 seconds of dependency install by caching node_modules when lockfiles are unchanged.", - "category": "Performance", - "mergedAt": "2026-08-24T23:44:21Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2016" - }, - { - "id": "tutorials-ims#2012", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2012, - "title": "freshness: feed tutorial context + SAP-aware rules to the scan", - "summary": "Improved the freshness scanner's advice by feeding it surrounding tutorial prose, frontmatter, and SAP/CAP-aware rules.", - "category": "Fix", - "mergedAt": "2026-08-24T21:03:46Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2012" - }, - { - "id": "tutorials-ims#2014", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2014, - "title": "Release 1.18.3 → main", - "summary": "Production release promoting DEV changes.", - "category": "Maintenance", - "mergedAt": "2026-08-24T20:34:03Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2014" - }, - { - "id": "tutorials-ims#2013", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2013, - "title": "chore(release): bump MTA version to 1.18.3", - "summary": "Version bump ahead of a production release.", - "category": "Maintenance", - "mergedAt": "2026-08-24T20:32:04Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2013" - }, - { - "id": "tutorials-ims#2011", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2011, - "title": "fix(rebuild): stop slug-targeted rebuilds from wiping verb/shelf pages", - "summary": "Fixed single-tutorial rebuilds from wiping the shelves on hub pages like /build/ and /learn/.", - "category": "Fix", - "mergedAt": "2026-08-24T19:07:16Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2011" - }, - { - "id": "tutorials-ims#2010", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2010, - "title": "docs: legacy Semaphore→IMS/AEM tag import process", - "summary": "Documented the legacy Semaphore-to-IMS/AEM tag import process for authors.", - "category": "Docs", - "mergedAt": "2026-08-24T17:54:11Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2010" - }, - { - "id": "tutorials-ims#2009", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2009, - "title": "feat(devtoberfest): deep-link URLs for calendar sessions/dates (#2006)", - "summary": "The Devtoberfest calendar now has shareable, restorable deep-link URLs for sessions, dates, ranges, and filters.", - "category": "Feature", - "mergedAt": "2026-08-24T14:27:21Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2009" - }, - { - "id": "tutorials-ims#2008", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2008, - "title": "feat(devtoberfest): show speakers on calendar session items (#2007)", - "summary": "Speaker names now appear directly on Devtoberfest calendar session items, not just in the detail popup.", - "category": "Feature", - "mergedAt": "2026-08-24T14:15:36Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2008" - }, - { - "id": "tutorials-ims#2003", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2003, - "title": "feat(devtoberfest): Markdown support in session abstract (calendar item details)", - "summary": "Devtoberfest session details now render Markdown formatting in the session abstract.", - "category": "Feature", - "mergedAt": "2026-08-24T11:25:40Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2003" - }, - { - "id": "tutorials-ims#2002", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2002, - "title": "fix(notifications): digest emails render 'N tutorials', not 'N s'", - "summary": "Fixed author-reminder digest emails that read 'N s' instead of 'N tutorials'.", - "category": "Fix", - "mergedAt": "2026-08-24T11:25:00Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2002" - }, - { - "id": "tutorials-ims#2001", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 2001, - "title": "fix(freshness): pass resolved embedding model to embed() (fixes ScheduledJobFailed)", - "summary": "Fixed a scheduled-job failure in the tutorial freshness embedding pipeline.", - "category": "Fix", - "mergedAt": "2026-08-24T11:24:36Z", - "week": "2026-W35", - "weekStart": "2026-08-24", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2001" - }, - { - "id": "tutorials-ims#1997", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1997, - "title": "Release 1.18.2 → main (PROD promotion)", - "summary": "Production release promoting DEV changes.", - "category": "Maintenance", - "mergedAt": "2026-08-23T19:09:46Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1997" - }, - { - "id": "tutorials-ims#1996", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1996, - "title": "chore(release): bump MTA version to 1.18.2 for PROD release", - "summary": "Version bump ahead of a production release.", - "category": "Maintenance", - "mergedAt": "2026-08-23T19:08:46Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1996" - }, - { - "id": "tutorials-ims#1995", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1995, - "title": "a11y: neutralize animations in scan + ratchet baseline to 0 critical/serious", - "summary": "Made the accessibility scan measure the settled page state and re-baselined to zero critical and serious issues.", - "category": "Maintenance", - "mergedAt": "2026-08-23T17:55:26Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1995" - }, - { - "id": "tutorials-ims#1994", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1994, - "title": "a11y: fix tutorial duplicate-banner regression + lengthen scan settle", - "summary": "Accessibility fix for a duplicate banner landmark on tutorial pages.", - "category": "Fix", - "mergedAt": "2026-08-23T16:46:07Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1994" - }, - { - "id": "tutorials-ims#1993", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1993, - "title": "feat(selfie): add 13 advocate frames + thumbnails", - "summary": "Added 13 new advocate cut-out frames to the Devtoberfest selfie photo booth.", - "category": "Feature", - "mergedAt": "2026-08-23T15:31:55Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1993" - }, - { - "id": "tutorials-ims#1992", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1992, - "title": "fix(prefs): guard size/width segmented-button emit on mount (#1980)", - "summary": "Minor fix so tutorial-preference controls don't redundantly re-apply their value on load.", - "category": "Fix", - "mergedAt": "2026-08-23T14:50:02Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1992" - }, - { - "id": "tutorials-ims#1991", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1991, - "title": "fix(tutorial-prefs): hand gestures navigate steps + calibrated head-pitch eye scroll (up/down)", - "summary": "Fixed the experimental camera controls so hand swipes move between steps and head-pitch scrolls both up and down.", - "category": "Fix", - "mergedAt": "2026-08-23T14:28:35Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1991" - }, - { - "id": "tutorials-ims#1990", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1990, - "title": "feat(prefs): add Super wide reading-width option (#1966)", - "summary": "Added a Super-wide reading-width option to tutorial preferences for people who want full-viewport content.", - "category": "Feature", - "mergedAt": "2026-08-23T14:17:11Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1990" - }, - { - "id": "tutorials-ims#1989", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1989, - "title": "a11y: duplicate-main + browse banner + figcaption contrast + concepts landmark", - "summary": "Accessibility fixes for duplicate page landmarks and caption contrast across the browse and concepts pages.", - "category": "Fix", - "mergedAt": "2026-08-23T14:00:07Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1989" - }, - { - "id": "tutorials-ims#1988", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1988, - "title": "a11y: ratchet baseline down after advocates/nav-progress fixes deployed", - "summary": "Tightened the accessibility baseline after the landmark fixes were deployed.", - "category": "Maintenance", - "mergedAt": "2026-08-23T13:59:57Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1988" - }, - { - "id": "tutorials-ims#1986", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1986, - "title": "feat(freshness): AI tutorial freshness detector (v1, reviewer-assist)", - "summary": "New AI-assisted freshness detector that flags stale code and dependencies in tutorials to authors, grounded against real SAP documentation.", - "category": "Feature", - "mergedAt": "2026-08-22T22:03:57Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1986" - }, - { - "id": "tutorials-ims#1985", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1985, - "title": "Camera input: accuracy fixes + per-user calibration (eye + hand)", - "summary": "Improved the accuracy of the experimental webcam eye-tracking and hand-gesture tutorial navigation, adding per-user calibration.", - "category": "Fix", - "mergedAt": "2026-08-22T21:36:22Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1985" - }, - { - "id": "tutorials-ims#1984", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1984, - "title": "a11y: fix advocate flip card (serious) + video-band redundant alt", - "summary": "Accessibility fixes to the developer-advocate flip cards and homepage video captions, including a latent keyboard-focus bug.", - "category": "Fix", - "mergedAt": "2026-08-22T17:50:28Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1984" - }, - { - "id": "tutorials-ims#1983", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1983, - "title": "a11y: exclude TrustArc banner from scan + make nav-progress decorative", - "summary": "Accessibility: excluded a third-party consent banner from the scan and marked the top loading bar as decorative.", - "category": "Fix", - "mergedAt": "2026-08-22T17:37:23Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1983" - }, - { - "id": "tutorials-ims#1982", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1982, - "title": "perf(prefs): subset OpenDyslexic web font ~115KB→~31KB (#1979)", - "summary": "Shrank the dyslexia-friendly web font by around 73% for faster loading.", - "category": "Performance", - "mergedAt": "2026-08-22T17:28:03Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1982" - }, - { - "id": "tutorials-ims#1978", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1978, - "title": "feat(prefs): tutorial reading preferences batch 2 (#1966)", - "summary": "Added a second batch of reading preferences to tutorials: text size and width, code size/wrap/copy-without-prompt, screenshot sizing, reduce-motion, and a dyslexia-friendly font.", - "category": "Feature", - "mergedAt": "2026-08-22T17:12:00Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1978" - }, - { - "id": "tutorials-ims#1981", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1981, - "title": "test(a11y): turn post-deploy axe scan into a regression gate", - "summary": "Turned the post-deploy accessibility scan into a real regression gate and fixed defects that made it collect no data.", - "category": "Maintenance", - "mergedAt": "2026-08-22T17:11:24Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1981" - }, - { - "id": "tutorials-ims#1977", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1977, - "title": "fix(tutorial-prefs): remove direct @ui5 SegmentedButton imports from island entry", - "summary": "Fixed a dark-mode island bug by removing a duplicate UI5 component import.", - "category": "Fix", - "mergedAt": "2026-08-22T15:55:22Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1977" - }, - { - "id": "tutorials-ims#1976", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1976, - "title": "Expand homepage topic clusters to KG multi-source content", - "summary": "Homepage topic clusters now surface all knowledge-graph content types — missions, learning journeys, blogs, videos, and events — not just tutorials.", - "category": "Feature", - "mergedAt": "2026-08-22T15:45:45Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1976" - }, - { - "id": "tutorials-ims#1975", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1975, - "title": "feat(mcp): Tier 2 hosted MCP tools — search_events + get_news_detail", - "summary": "Added two public MCP tools — event search and news detail — to the developers.sap.com hosted MCP surface.", - "category": "Feature", - "mergedAt": "2026-08-22T14:35:59Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1975" - }, - { - "id": "tutorials-ims#1974", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1974, - "title": "perf(navigator): SSR the chrome to kill the mount flash on /tutorial-navigator", - "summary": "Removed the layout jump on the tutorial navigator by server-rendering the full page chrome up front.", - "category": "Performance", - "mergedAt": "2026-08-22T14:25:24Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1974" - }, - { - "id": "tutorials-ims#1973", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1973, - "title": "fix(tutorial-prefs): reflect stored Header pref on popover (re)open (#1966)", - "summary": "Fixed the tutorial preferences dialog not showing the saved header setting when reopened.", - "category": "Fix", - "mergedAt": "2026-08-22T14:13:23Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1973" - }, - { - "id": "tutorials-ims#1971", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1971, - "title": "fix(ui5): heal dark-mode boot-order race (DEV dark mode unreadable)", - "summary": "Fixed dark mode rendering with light colors on the first page load.", - "category": "Fix", - "mergedAt": "2026-08-21T22:08:20Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1971" - }, - { - "id": "tutorials-ims#1970", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1970, - "title": "fix(tutorials): force-load lazy images before print (#1943)", - "summary": "Fixed the new Print feature printing blank images by loading lazy images before the print dialog opens.", - "category": "Fix", - "mergedAt": "2026-08-21T21:37:57Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1970" - }, - { - "id": "tutorials-ims#1969", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1969, - "title": "feat(display-prefs): tutorial-page display preferences (#1966)", - "summary": "Added a Display section to tutorial preferences for controlling header and footer chrome, with a compact treatment auto-applied on short screens.", - "category": "Feature", - "mergedAt": "2026-08-21T20:17:24Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1969" - }, - { - "id": "tutorials-ims#1967", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1967, - "title": "Attachment object-store pipeline: serve tutorial repo attachments like images (#1931)", - "summary": "Tutorial file attachments (.txt, .zip, .pdf, and more) are now served through the platform instead of returning 404s.", - "category": "Feature", - "mergedAt": "2026-08-21T19:31:26Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1967" - }, - { - "id": "tutorials-ims#1965", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1965, - "title": "feat(scanner): source-markdown scanner + fixer (#1963)", - "summary": "New tool that fixes malformed tutorial markdown at the source and opens a PR per repo, letting the render-time patches eventually be retired.", - "category": "Feature", - "mergedAt": "2026-08-21T19:06:55Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1965" - }, - { - "id": "tutorials-ims#1964", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1964, - "title": "feat(tutorials): Print / Save-as-PDF button (#1943)", - "summary": "Added a Print / Save-as-PDF button to tutorial pages so readers can save any tutorial as a PDF.", - "category": "Feature", - "mergedAt": "2026-08-21T17:21:03Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1964" - }, - { - "id": "tutorials-ims#1962", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1962, - "title": "fix(selfie): align background tests with renamed scene ids", - "summary": "Fixed tests after the selfie photo-booth backgrounds were renamed.", - "category": "Maintenance", - "mergedAt": "2026-08-21T15:59:58Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1962" - }, - { - "id": "tutorials-ims#1961", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1961, - "title": "fix(#1960): reclassify contentless tutorials to DELETED (datasphere & other legacy phantoms)", - "summary": "Removed phantom tutorials from search that had no published content and returned 404s when clicked.", - "category": "Fix", - "mergedAt": "2026-08-21T15:31:48Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1961" - }, - { - "id": "tutorials-ims#1958", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1958, - "title": "Release 1.18.1 → main", - "summary": "Production release promoting DEV changes.", - "category": "Maintenance", - "mergedAt": "2026-08-20T22:55:47Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1958" - }, - { - "id": "tutorials-ims#1959", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1959, - "title": "chore: sync main into DEV (reconcile selfie/csrf/puzzle) + 1.18.1", - "summary": "Synced the main branch back into DEV to keep the release merge conflict-free.", - "category": "Maintenance", - "mergedAt": "2026-08-20T22:55:21Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1959" - }, - { - "id": "tutorials-ims#1957", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1957, - "title": "chore(release): bump MTA version to 1.18.1", - "summary": "Version bump ahead of a release.", - "category": "Maintenance", - "mergedAt": "2026-08-20T22:43:49Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1957" - }, - { - "id": "tutorials-ims#1956", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1956, - "title": "docs(whats-new): weekly digest refresh (2026-08-14 → 08-20)", - "summary": "Refreshed the public What's New weekly digest.", - "category": "Docs", - "mergedAt": "2026-08-20T21:33:22Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1956" - }, - { - "id": "tutorials-ims#1955", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1955, - "title": "Rescue tutorial prose and screenshots trapped inside code blocks", - "summary": "Fixes tutorials where explanatory text and screenshots that followed a code sample inside a numbered step were mistakenly rendered as raw code, so those steps now read the way the author intended.", - "category": "Fix", - "mergedAt": "2026-08-20T21:21:30Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1955" - }, - { - "id": "tutorials-ims#1954", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1954, - "title": "Refresh the Devtoberfest Selfie backgrounds, stickers, and frames", - "summary": "Gives the Devtoberfest Selfie tool a fresh set of backgrounds, stickers, and advocate frames so your event selfies look current.", - "category": "Feature", - "mergedAt": "2026-08-20T19:53:08Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1954" - }, - { - "id": "tutorials-ims#1953", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1953, - "title": "docs: Devtoberfest selfie art update runbook", - "summary": "Adds an internal runbook explaining where the Devtoberfest Selfie art lives and how to swap in new backgrounds, stickers, and frames.", - "category": "Docs", - "mergedAt": "2026-08-20T19:52:57Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1953" - }, - { - "id": "tutorials-ims#1952", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1952, - "title": "docs: register ai-skills-catalog page in sidebar", - "summary": "Registers the new AI Skills Catalog page in the documentation sidebar so it is easy to find.", - "category": "Docs", - "mergedAt": "2026-08-20T16:10:03Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1952" - }, - { - "id": "tutorials-ims#1950", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1950, - "title": "docs: AI Skills Catalog (internal AI capabilities reference)", - "summary": "Adds an internal reference page cataloguing every AI capability across the tutorials platform, from Joule chat tools to the knowledge-graph jobs.", - "category": "Docs", - "mergedAt": "2026-08-20T15:38:06Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1950" - }, - { - "id": "tutorials-ims#1951", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1951, - "title": "Restore group and mission completion tracking", - "summary": "Restores automatic credit for completing tutorial groups and missions, so finishing all the tutorials in a learning path once again marks the whole path complete.", - "category": "Fix", - "mergedAt": "2026-08-20T15:37:26Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1951" - }, - { - "id": "tutorials-ims#1949", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1949, - "title": "Grade submitted code against the stated goal, not the sample answer", - "summary": "Makes the AI code-check grader judge your answer against what the exercise actually asks for rather than nitpicking details of the reference solution, so correct submissions are no longer rejected over unrequested specifics.", - "category": "Fix", - "mergedAt": "2026-08-20T15:26:33Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1949" - }, - { - "id": "tutorials-ims#1947", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1947, - "title": "Refresh cached puzzle answers instead of trusting stale copies", - "summary": "Fixes puzzle tutorials where edited answers were ignored, so updated puzzle solutions now validate correctly on the live site.", - "category": "Fix", - "mergedAt": "2026-08-20T15:16:10Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1947" - }, - { - "id": "tutorials-ims#1948", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1948, - "title": "Enable search in the QA tutorial preview site", - "summary": "Makes tutorial search work again on the QA author-preview channel so authors can find and open the tutorial they are searching for.", - "category": "Fix", - "mergedAt": "2026-08-20T15:14:34Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1948" - }, - { - "id": "tutorials-ims#1946", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1946, - "title": "Redirect QA group and mission pages to production", - "summary": "Replaces a raw error on QA-preview group and mission pages with a graceful redirect to the live page, and shows a friendly error page when a catalog page can't render.", - "category": "Fix", - "mergedAt": "2026-08-20T15:03:19Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1946" - }, - { - "id": "tutorials-ims#1945", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1945, - "title": "Show titles and links on Featured Missions cards", - "summary": "Fixes the Featured Missions cards on the Tutorial Navigator that were rendering blank, so they once again show their title, description, and link.", - "category": "Fix", - "mergedAt": "2026-08-20T14:52:37Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1945" - }, - { - "id": "tutorials-ims#1944", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1944, - "title": "Show correct acronym casing on group and mission tag chips", - "summary": "Fixes tag chips on group and mission pages so acronyms like 'SAP BTP Cockpit' display with proper capitalization instead of 'Sap Btp Cockpit'.", - "category": "Fix", - "mergedAt": "2026-08-20T14:48:07Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1944" - }, - { - "id": "tutorials-ims#1936", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1936, - "title": "Render deeply-indented code blocks with syntax highlighting", - "summary": "Fixes hundreds of tutorials where code blocks indented inside list steps showed their raw backtick fences instead of a proper highlighted code window.", - "category": "Fix", - "mergedAt": "2026-08-20T12:51:44Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1936" - }, - { - "id": "tutorials-ims#1935", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1935, - "title": "Let puzzle designers toggle grid squares back to white", - "summary": "Fixes the admin crossword puzzle designer so clicking a black grid square turns it white again, unblocking puzzle layout work.", - "category": "Fix", - "mergedAt": "2026-08-20T12:38:20Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1935" - }, - { - "id": "tutorials-ims#1933", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1933, - "title": "Stop treating edge errors as expired sessions on photo upload", - "summary": "Fixes Petoberfest photo uploads behind the CDN that were reloading the page instead of surfacing the real error, so upload failures now report a meaningful message.", - "category": "Fix", - "mergedAt": "2026-08-20T12:25:51Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1933" - }, - { - "id": "tutorials-ims#1934", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1934, - "title": "Bound memory use during content publishing", - "summary": "Stops content rebuilds from crashing on out-of-memory by no longer loading the entire catalog's content into memory during publish, making large publishes reliable.", - "category": "Fix", - "mergedAt": "2026-08-20T12:07:20Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1934" - }, - { - "id": "tutorials-ims#1929", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1929, - "title": "Release 1.18.0 to production", - "summary": "Ships the 1.18.0 production release, bundling the self-service token page, Devtoberfest and Petoberfest features, and a batch of fixes to developers.sap.com.", - "category": "Maintenance", - "mergedAt": "2026-08-19T21:33:49Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1929" - }, - { - "id": "tutorials-ims#1928", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1928, - "title": "Bump release version to 1.18.0", - "summary": "Bumps the project version to 1.18.0 ahead of the production promotion.", - "category": "Maintenance", - "mergedAt": "2026-08-19T21:30:36Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1928" - }, - { - "id": "tutorials-ims#1927", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1927, - "title": "Unblock the documentation build", - "summary": "Fixes the documentation build that was failing on a link pointing to a live app route rather than a doc page.", - "category": "Maintenance", - "mergedAt": "2026-08-19T20:41:02Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1927" - }, - { - "id": "tutorials-ims#1926", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1926, - "title": "Make scavenger-hunt clue captions readable", - "summary": "Gives the floating Devtoberfest scavenger-hunt clue captions a solid background so the clue text is readable against the page behind it.", - "category": "Fix", - "mergedAt": "2026-08-19T20:30:06Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1926" - }, - { - "id": "tutorials-ims#1925", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1925, - "title": "Show authored tutorials in the SAGE 'My Tutorials' panel", - "summary": "Fixes the 'My Tutorials' panel so tutorials you authored show up, not just ones where you match on email or name.", - "category": "Fix", - "mergedAt": "2026-08-19T20:28:03Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1925" - }, - { - "id": "tutorials-ims#1924", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1924, - "title": "Allowlist puzzle routes in the QA route-drift guard", - "summary": "Registers the new puzzle content routes with the internal build guard that keeps the QA preview site in sync, turning the build green again.", - "category": "Maintenance", - "mergedAt": "2026-08-19T18:54:02Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1924" - }, - { - "id": "tutorials-ims#1922", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1922, - "title": "Fix advocate photo uploads behind the CDN", - "summary": "Switches advocate photo uploads to a CDN-friendly format so they succeed on developers.sap.com and report clear errors when something goes wrong.", - "category": "Fix", - "mergedAt": "2026-08-19T18:23:43Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1922" - }, - { - "id": "tutorials-ims#1923", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1923, - "title": "Add a /puzzles/ index page and admin link", - "summary": "Adds a proper puzzles landing page listing every puzzle, replacing the 404 that used to appear at /puzzles/.", - "category": "Fix", - "mergedAt": "2026-08-19T18:23:07Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1923" - }, - { - "id": "tutorials-ims#1921", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1921, - "title": "Let authors add intro text to puzzles and Petoberfest", - "summary": "Lets authors add formatted intro text with links to puzzle and Petoberfest pages, so participants get clear instructions on how to take part.", - "category": "Feature", - "mergedAt": "2026-08-19T18:07:20Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1921" - }, - { - "id": "tutorials-ims#1919", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1919, - "title": "Serve puzzle pages dynamically", - "summary": "Fixes newly created puzzles that returned a 404 by serving every puzzle page dynamically from the catalog instead of relying on hand-authored files.", - "category": "Fix", - "mergedAt": "2026-08-19T18:00:16Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1919" - }, - { - "id": "tutorials-ims#1920", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1920, - "title": "Fix Petoberfest photo uploads behind the CDN", - "summary": "Fixes Petoberfest pet-photo uploads that failed silently on developers.sap.com by switching to a CDN-friendly upload format and surfacing errors.", - "category": "Fix", - "mergedAt": "2026-08-19T17:58:11Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1920" - }, - { - "id": "tutorials-ims#1918", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1918, - "title": "Let users withdraw their own Petoberfest photo", - "summary": "Lets Petoberfest participants withdraw a photo they uploaded so it no longer appears, even after it was approved.", - "category": "Feature", - "mergedAt": "2026-08-19T17:53:11Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1918" - }, - { - "id": "tutorials-ims#1917", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1917, - "title": "Hide the Petoberfest upload form from logged-out visitors", - "summary": "Fixes the Petoberfest page so anonymous visitors see a sign-in prompt instead of the upload form.", - "category": "Fix", - "mergedAt": "2026-08-19T17:51:02Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1917" - }, - { - "id": "tutorials-ims#1916", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1916, - "title": "Randomize the Petoberfest slideshow order", - "summary": "Shuffles the Petoberfest photo slideshow on each visit so it's no longer always the newest uploads first.", - "category": "Feature", - "mergedAt": "2026-08-19T17:27:27Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1916" - }, - { - "id": "tutorials-ims#1915", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1915, - "title": "Repair puzzle JSON import in the admin builder", - "summary": "Fixes the admin puzzle builder so importing a puzzle JSON file after creating a new puzzle actually loads it.", - "category": "Fix", - "mergedAt": "2026-08-19T17:07:00Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1915" - }, - { - "id": "tutorials-ims#1913", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1913, - "title": "Add Devtoberfest scavenger-hunt clues", - "summary": "Adds three hidden Devtoberfest scavenger-hunt clues, one each on the home, AI, and API docs pages, featuring SAP developer advocates.", - "category": "Feature", - "mergedAt": "2026-08-19T16:46:05Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1913" - }, - { - "id": "tutorials-ims#1907", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1907, - "title": "Prompt re-login when a session has expired", - "summary": "Fixes the tutorial step 'Done' button so that in an expired session it prompts you to sign in again instead of silently failing to record your progress.", - "category": "Fix", - "mergedAt": "2026-08-19T15:49:07Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1907" - }, - { - "id": "tutorials-ims#1906", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1906, - "title": "Keep the quiz verdict badge round", - "summary": "Fixes the per-question pass/fail badge in tutorial quizzes so it stays a neat circle next to long questions instead of squishing into an oval.", - "category": "Fix", - "mergedAt": "2026-08-19T15:16:51Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1906" - }, - { - "id": "tutorials-ims#1903", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1903, - "title": "Release 1.17.0 to production", - "summary": "Ships the 1.17.0 production release, bringing the self-service token page, image persistence, and a batch of fixes to developers.sap.com.", - "category": "Maintenance", - "mergedAt": "2026-08-18T22:01:43Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1903" - }, - { - "id": "tutorials-ims#1902", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1902, - "title": "chore(release): bump MTA version to 1.17.0 for PROD release", - "summary": "Prepares the platform's next release version so the latest batch of improvements can roll out to production.", - "category": "Maintenance", - "mergedAt": "2026-08-18T22:01:24Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1902" - }, - { - "id": "tutorials-ims#1901", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1901, - "title": "Fix build check for the new token page", - "summary": "Fixes an internal build check so the new personal access token page builds and ships cleanly.", - "category": "Maintenance", - "mergedAt": "2026-08-18T20:40:52Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1901" - }, - { - "id": "tutorials-ims#1900", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1900, - "title": "Publish skills to the SAP AI Skills Library", - "summary": "Publishes the platform's AI skills (like the knowledge-graph builder and the What's New generator) so you can discover and install them into tools like Claude Code, Cursor, and Codex via the SAP AI Skills Library.", - "category": "Docs", - "mergedAt": "2026-08-18T18:53:31Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1900" - }, - { - "id": "tutorials-ims#1894", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1894, - "title": "fix(deploy): pin tutorials-srv-qa memory to 1536M (#1893)", - "summary": "Gives the QA content service enough memory to finish large content rebuilds without crashing, keeping the QA preview channel dependable.", - "category": "Maintenance", - "mergedAt": "2026-08-18T18:53:15Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1894" - }, - { - "id": "tutorials-ims#1899", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1899, - "title": "Self-service page to create MCP access tokens", - "summary": "Adds a self-service page at /me/tokens where you can create, view, and revoke your own personal access tokens for the hosted MCP server, without needing admin access.", - "category": "Feature", - "mergedAt": "2026-08-18T18:52:57Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1899" - }, - { - "id": "tutorials-ims#1898", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1898, - "title": "Enable desktop MCP sign-in (Joule Desktop)", - "summary": "Lets desktop MCP tools such as Joule Desktop complete sign-in through their local callback, so connecting them to the platform's MCP server works reliably.", - "category": "Fix", - "mergedAt": "2026-08-18T18:14:04Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1898" - }, - { - "id": "tutorials-ims#1896", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1896, - "title": "Keyword search for Devtoberfest sessions", - "summary": "Adds a keyword search box to the Devtoberfest sessions page that matches across session titles, abstracts, and speaker details, and fixes the Join banner so you can find the right session faster.", - "category": "Feature", - "mergedAt": "2026-08-18T14:51:31Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1896" - }, - { - "id": "tutorials-ims#1892", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1892, - "title": "Fix the tutorial feedback form", - "summary": "Repairs the tutorial feedback form so the detailed-feedback popup opens and submissions go through, letting you share feedback on tutorials again.", - "category": "Fix", - "mergedAt": "2026-08-18T11:07:23Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1892" - }, - { - "id": "tutorials-ims#1891", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1891, - "title": "Tutorial images self-populate the image store", - "summary": "Makes the platform automatically save tutorial images to its own store the first time they're requested, so images keep loading even when the original source is unavailable.", - "category": "Feature", - "mergedAt": "2026-08-18T11:06:17Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1891" - }, - { - "id": "tutorials-ims#1887", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1887, - "title": "fix(ci): allowlist dark-launched image routes in srv-qa route-drift guard", - "summary": "Updates an internal build check to recognize the new image-serving routes so continuous integration passes.", - "category": "Maintenance", - "mergedAt": "2026-08-18T03:42:45Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1887" - }, - { - "id": "tutorials-ims#1886", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1886, - "title": "Release 1.16.0 — DEV → main (PROD promotion)", - "summary": "Promotes a batch of features and fixes, including durable tutorial-image storage and Joule's What's New support, to production.", - "category": "Maintenance", - "mergedAt": "2026-08-18T02:32:11Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1886" - }, - { - "id": "tutorials-ims#1885", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1885, - "title": "chore(release): bump MTA version to 1.16.0 for PROD release", - "summary": "Prepares the release version ahead of a production rollout that adds durable tutorial-image storage.", - "category": "Maintenance", - "mergedAt": "2026-08-18T02:13:53Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1885" - }, - { - "id": "tutorials-ims#1884", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1884, - "title": "Heal broken tutorial images in the store", - "summary": "Adds a way to force-refresh tutorial images that were saved incompletely, cleaning up broken entries so those images display correctly.", - "category": "Fix", - "mergedAt": "2026-08-18T01:41:45Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1884" - }, - { - "id": "tutorials-ims#1883", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1883, - "title": "Fix tutorial image uploads to storage", - "summary": "Fixes a startup configuration gap that was causing tutorial-image uploads to storage to fail, so images now persist as intended.", - "category": "Fix", - "mergedAt": "2026-08-18T01:32:46Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1883" - }, - { - "id": "tutorials-ims#1881", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1881, - "title": "Store tutorial images independently of GitHub", - "summary": "Lets the platform ingest and store tutorial images directly, plus a backfill for existing ones, so tutorial screenshots no longer depend on fetching from GitHub at page-load time.", - "category": "Feature", - "mergedAt": "2026-08-18T00:31:16Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1881" - }, - { - "id": "tutorials-ims#1880", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1880, - "title": "Fix empty Featured Missions carousel on the homepage", - "summary": "Fixes the homepage Featured Missions carousel that had stopped showing any cards, so featured missions appear again.", - "category": "Fix", - "mergedAt": "2026-08-17T22:36:46Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1880" - }, - { - "id": "tutorials-ims#1879", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1879, - "title": "Fix empty tutorial image store", - "summary": "Fixes an issue that prevented tutorial images from ever being written to storage, so the image store now populates correctly.", - "category": "Fix", - "mergedAt": "2026-08-17T22:36:36Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1879" - }, - { - "id": "tutorials-ims#1878", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1878, - "title": "Store tutorial images in Object Store and fix boot crash", - "summary": "Moves tutorial-image storage to BTP Object Store and fixes a startup crash, so the service boots reliably and images are stored in the right place.", - "category": "Fix", - "mergedAt": "2026-08-17T21:00:00Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1878" - }, - { - "id": "tutorials-ims#1877", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1877, - "title": "Persist tutorial images with GitHub fallback", - "summary": "Stores tutorial images durably and serves them from the platform's own store, falling back to GitHub only when needed, so tutorial screenshots stay available even during GitHub outages or rate limits.", - "category": "Feature", - "mergedAt": "2026-08-17T19:30:41Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1877" - }, - { - "id": "tutorials-ims#1876", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1876, - "title": "Fix product tag filtering in the Tutorial Navigator", - "summary": "Fixes product-tag deep links in the Tutorial Navigator so clicking a product now shows all of that product's tutorials instead of just a subset.", - "category": "Fix", - "mergedAt": "2026-08-17T17:29:18Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1876" - }, - { - "id": "tutorials-ims#1873", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1873, - "title": "fix(#1859): register ChatSettings.whatsNewEnabled feature flag (DEV CI green)", - "summary": "Registers the What's New chat setting in the internal feature-flag registry to keep configuration consistent and tests passing.", - "category": "Maintenance", - "mergedAt": "2026-08-17T16:58:53Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1873" - }, - { - "id": "tutorials-ims#1872", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1872, - "title": "Collapsible 'More from author' section", - "summary": "Makes the 'More from author' section on tutorial pages collapsible and closed by default, giving you a cleaner reading view while keeping the related tutorials one click away.", - "category": "Feature", - "mergedAt": "2026-08-17T16:58:30Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1872" - }, - { - "id": "tutorials-ims#1874", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1874, - "title": "Reduce layout shift on the Browse page", - "summary": "Eliminates the remaining layout shift on the Browse page by loading card styling up front, so cards no longer jump around as the page loads.", - "category": "Performance", - "mergedAt": "2026-08-17T16:58:07Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1874" - }, - { - "id": "tutorials-ims#1875", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1875, - "title": "Restore the Mission crumb in tutorial breadcrumbs", - "summary": "Restores the missing Mission entry in tutorial breadcrumbs, so you can navigate back up to the mission when you reached a tutorial through one.", - "category": "Fix", - "mergedAt": "2026-08-17T16:57:39Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1875" - }, - { - "id": "tutorials-ims#1871", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1871, - "title": "Fix breadcrumb separator on cross-linked tutorials", - "summary": "Fixes a missing separator in the breadcrumb when you open a tutorial from a group or mission link, so the trail reads clearly.", - "category": "Fix", - "mergedAt": "2026-08-17T16:56:38Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1871" - }, - { - "id": "tutorials-ims#1870", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1870, - "title": "docs(spec): persist tutorial images in Object Store (decouple from GitHub)", - "summary": "Documents the design for storing tutorial images in Object Store so they no longer depend on GitHub at request time.", - "category": "Docs", - "mergedAt": "2026-08-17T16:24:49Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1870" - }, - { - "id": "tutorials-ims#1868", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1868, - "title": "Fix tutorial images failing to load on mobile", - "summary": "Fixes tutorial images that were failing to load on mobile devices due to rate-limiting on mobile-sized image variants, so screenshots now render on phones and tablets.", - "category": "Fix", - "mergedAt": "2026-08-17T16:24:37Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1868" - }, - { - "id": "tutorials-ims#1867", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1867, - "title": "test(#1614): fix DEV CI — resolve provisioned user by sapId not uuid", - "summary": "Fixes an internal test to look up users the correct way, keeping the test suite green.", - "category": "Maintenance", - "mergedAt": "2026-08-17T16:24:10Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1867" - }, - { - "id": "tutorials-ims#1863", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1863, - "title": "Ask Joule what's new", - "summary": "Adds a Joule capability so you can ask what's new and get the latest platform updates from the What's New digest instead of a refusal.", - "category": "Feature", - "mergedAt": "2026-08-17T13:25:01Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1863" - }, - { - "id": "tutorials-ims#1862", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1862, - "title": "Add tooltips to header toolbar icons", - "summary": "Adds hover tooltips to all the icons in the top-right header bar, so it's clear what each button does.", - "category": "Fix", - "mergedAt": "2026-08-17T12:33:11Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1862" - }, - { - "id": "tutorials-ims#1861", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1861, - "title": "Fix account-linking save error for new users", - "summary": "Fixes an error that stopped some new users from saving their community profile link on first sign-in, so account linking now works for everyone.", - "category": "Fix", - "mergedAt": "2026-08-17T12:32:02Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1861" - }, - { - "id": "tutorials-ims#1860", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1860, - "title": "Redirect legacy sitemap URLs", - "summary": "Redirects old sitemap URLs left over from the previous platform to the current sitemap, so search engines can crawl and index tutorials again.", - "category": "Fix", - "mergedAt": "2026-08-17T10:51:41Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1860" - }, - { - "id": "tutorials-ims#1856", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1856, - "title": "Fix broken images in the 'You will learn' section", - "summary": "Fixes broken images in the 'You will learn' section of tutorials so those screenshots display instead of returning 404s.", - "category": "Fix", - "mergedAt": "2026-08-17T10:30:36Z", - "week": "2026-W34", - "weekStart": "2026-08-17", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1856" - }, - { - "id": "tutorials-ims#1855", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1855, - "title": "Release with performance, accessibility, and SEO improvements", - "summary": "Ships a batch of performance, accessibility, and SEO improvements to production, including much faster tutorial page loads, a lighter startup bundle, and better search-engine visibility.", - "category": "Maintenance", - "mergedAt": "2026-08-16T20:23:11Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1855" - }, - { - "id": "tutorials-ims#1853", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1853, - "title": "docs(sidebar): register author-admin-access page (fix Deploy Docs CI)", - "summary": "Adds a missing documentation page to the docs sidebar so it's reachable in the developer docs.", - "category": "Docs", - "mergedAt": "2026-08-16T20:22:57Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1853" - }, - { - "id": "tutorials-ims#1852", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1852, - "title": "Steadier layout on the Browse page", - "summary": "Category chips on the Browse page cards no longer cause the page to jump around as it loads, giving you a smoother, more stable browsing experience.", - "category": "Performance", - "mergedAt": "2026-08-16T19:16:17Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1852" - }, - { - "id": "tutorials-ims#1851", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1851, - "title": "Reliable cache-busting for the nav dropdown and concepts filter", - "summary": "The navigation dropdown and concepts filter now refresh reliably after updates, so you always see the latest version instead of a stale cached one.", - "category": "Fix", - "mergedAt": "2026-08-16T19:15:53Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1851" - }, - { - "id": "tutorials-ims#1850", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1850, - "title": "Restore stable tutorial navigator layout", - "summary": "The tutorial navigator page now loads with a steady layout again, reversing an earlier experiment that had caused the content to shift as it appeared.", - "category": "Performance", - "mergedAt": "2026-08-16T17:41:15Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1850" - }, - { - "id": "tutorials-ims#1849", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1849, - "title": "Correct asset fingerprint detection in deploy checks", - "summary": "Fixed an internal deploy safety check so that correctly versioned page assets are no longer mistakenly flagged, keeping deployments smooth and dependable.", - "category": "Fix", - "mergedAt": "2026-08-16T17:40:19Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1849" - }, - { - "id": "tutorials-ims#1848", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1848, - "title": "Eliminate layout shift on the tutorial navigator", - "summary": "The tutorial navigator cards now reserve their space up front, so the page no longer visibly reflows while loading.", - "category": "Performance", - "mergedAt": "2026-08-16T16:36:21Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1848" - }, - { - "id": "tutorials-ims#1847", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1847, - "title": "Lighter page load by trimming unused UI themes", - "summary": "Removed about 1.4 MB of unused theme data from the page bundle, so tutorial and browse pages load noticeably faster.", - "category": "Performance", - "mergedAt": "2026-08-16T15:22:10Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1847" - }, - { - "id": "tutorials-ims#1846", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1846, - "title": "Load the picture-in-picture player only when needed", - "summary": "The picture-in-picture tutorial player (~1.2 MB) now loads only when you actually open it, making every tutorial page load faster by default.", - "category": "Performance", - "mergedAt": "2026-08-16T15:21:48Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1846" - }, - { - "id": "tutorials-ims#1845", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1845, - "title": "Accessibility improvements across pages", - "summary": "Resolved several accessibility issues around progress indicators, image alt text, and control labels so the site works better with screen readers and assistive tech.", - "category": "Fix", - "mergedAt": "2026-08-16T14:55:13Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1845" - }, - { - "id": "tutorials-ims#1844", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1844, - "title": "Improve link text and crawlable links for SEO", - "summary": "Fixed shared links so search engines can crawl them properly and read meaningful link text, improving how tutorial pages surface in search results.", - "category": "Fix", - "mergedAt": "2026-08-16T14:51:24Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1844" - }, - { - "id": "tutorials-ims#1841", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1841, - "title": "Faster loading of non-critical styles and third-party scripts", - "summary": "Optimized how the consent banner and non-essential stylesheets load, shaving render-blocking delays off page loads.", - "category": "Performance", - "mergedAt": "2026-08-16T14:50:26Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1841" - }, - { - "id": "tutorials-ims#1842", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1842, - "title": "Stop the Browse page from jumping while it loads", - "summary": "Front-loaded the Browse page styling so the layout settles immediately instead of shifting as content appears, for a much steadier first view.", - "category": "Performance", - "mergedAt": "2026-08-16T14:50:07Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1842" - }, - { - "id": "tutorials-ims#1843", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1843, - "title": "Defer non-essential scripts to speed up first interaction", - "summary": "The tutorial navigator and picture-in-picture button now initialize after the page is interactive, reducing the time before you can start using the page.", - "category": "Performance", - "mergedAt": "2026-08-16T14:49:37Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1843" - }, - { - "id": "tutorials-ims#1840", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1840, - "title": "Correct group shown in tutorial breadcrumbs", - "summary": "Tutorials that also belong to a special event mission now show their real learning group in the breadcrumb and navigation, so you can find your way around a series correctly.", - "category": "Fix", - "mergedAt": "2026-08-16T13:17:38Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1840" - }, - { - "id": "tutorials-ims#1839", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1839, - "title": "Exclude specific accounts when granting author admin access", - "summary": "Added an option to skip specific accounts (like shared group mailboxes) when bulk-granting admin access to tutorial authors, giving admins finer control.", - "category": "Feature", - "mergedAt": "2026-08-16T13:05:34Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1839" - }, - { - "id": "tutorials-ims#1838", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1838, - "title": "Explain the author console 403 as a role assignment gap", - "summary": "Documented that authors seeing a 403 on the Author Console need the Admin role collection assigned, and provided a helper to grant it.", - "category": "Docs", - "mergedAt": "2026-08-16T12:45:11Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1838" - }, - { - "id": "tutorials-ims#1835", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1835, - "title": "Fix puzzle builder save and import", - "summary": "The admin puzzle builder now saves reliably when grid dimensions are entered and its Import button works again, so authors can build puzzles without hitting validation errors.", - "category": "Fix", - "mergedAt": "2026-08-16T12:09:25Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1835" - }, - { - "id": "tutorials-ims#1832", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1832, - "title": "Remove dead references to the retired rebuild push", - "summary": "Cleaned up leftover configuration referencing a retired internal content-push mechanism, keeping the deployment setup tidy and consistent.", - "category": "Maintenance", - "mergedAt": "2026-08-16T11:47:11Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1832" - }, - { - "id": "tutorials-ims#1831", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1831, - "title": "Serve /llms.txt dynamically from the database", - "summary": "The /llms.txt file is now served from the content store like its companion pages, making it easier to keep up to date.", - "category": "Maintenance", - "mergedAt": "2026-08-16T11:47:00Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1831" - }, - { - "id": "tutorials-ims#1830", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1830, - "title": "Update tests for the database-only content rebuild", - "summary": "Updated internal tests to match the new content-rebuild process that renders pages against already-deployed assets.", - "category": "Maintenance", - "mergedAt": "2026-08-16T11:46:33Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1830" - }, - { - "id": "tutorials-ims#1829", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1829, - "title": "Content rebuilds go database-only and stop clobbering deployed assets", - "summary": "Reworked content rebuilds so admin edits and refreshes update the database only, ending the recurring problem where a rebuild could overwrite freshly deployed site assets.", - "category": "Maintenance", - "mergedAt": "2026-08-16T01:21:59Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1829" - }, - { - "id": "tutorials-ims#1827", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1827, - "title": "Restore the developer advocate detail route", - "summary": "Fixed an internal routing gap so per-advocate detail pages are served correctly after the content-serving migration.", - "category": "Fix", - "mergedAt": "2026-08-15T22:08:25Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1827" - }, - { - "id": "tutorials-ims#1826", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1826, - "title": "Groundwork for decoupling assets from content rebuilds", - "summary": "Added the plumbing to let content rebuilds render pages against the currently deployed assets, a preparatory step with no visible change yet.", - "category": "Maintenance", - "mergedAt": "2026-08-15T21:27:37Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1826" - }, - { - "id": "tutorials-ims#1825", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1825, - "title": "Serve advocate detail pages dynamically from the database", - "summary": "Per-advocate detail pages now come from the dynamic content store, so admin edits to advocate profiles show up reliably.", - "category": "Maintenance", - "mergedAt": "2026-08-15T21:17:13Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1825" - }, - { - "id": "tutorials-ims#1824", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1824, - "title": "Fix routing drift for homepage and author pages", - "summary": "Resolved an internal routing mismatch introduced when the homepage and author pages moved to dynamic serving, keeping the build checks green.", - "category": "Fix", - "mergedAt": "2026-08-15T21:17:03Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1824" - }, - { - "id": "tutorials-ims#1823", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1823, - "title": "Serve author pages dynamically from the database", - "summary": "The roughly 150 per-author pages now come from the dynamic content store, so author profile updates stay fresh and reliable.", - "category": "Maintenance", - "mergedAt": "2026-08-15T20:54:15Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1823" - }, - { - "id": "tutorials-ims#1822", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1822, - "title": "Serve the homepage from the database and drop the restart workaround", - "summary": "The homepage is now served dynamically from the content store, eliminating the post-deploy restart that had been needed to avoid stale content.", - "category": "Maintenance", - "mergedAt": "2026-08-15T20:25:04Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1822" - }, - { - "id": "tutorials-ims#1821", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1821, - "title": "Fix crawlable links and link text on shared popovers", - "summary": "Fixed the glossary and preferences popover links so search engines can crawl them and their text is meaningful, improving SEO across pages.", - "category": "Fix", - "mergedAt": "2026-08-15T18:47:45Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1821" - }, - { - "id": "tutorials-ims#1820", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1820, - "title": "Guard against stale site assets after deploy", - "summary": "Added a safeguard and automated check that catch stale or missing page assets after a deploy, preventing the broken, unstyled pages that could otherwise slip through.", - "category": "Feature", - "mergedAt": "2026-08-15T18:47:34Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1820" - }, - { - "id": "tutorials-ims#1819", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1819, - "title": "Point accessibility scans at stable live pages", - "summary": "Repointed the automated accessibility scans to reliable live pages so they properly test real content instead of erroring on missing URLs.", - "category": "Fix", - "mergedAt": "2026-08-15T18:47:26Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1819" - }, - { - "id": "tutorials-ims#1818", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1818, - "title": "Design note for fixing homepage layout shift", - "summary": "Documented the root cause and design for reducing homepage layout shift, where placeholder bands resize once real content loads.", - "category": "Docs", - "mergedAt": "2026-08-15T18:47:16Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1818" - }, - { - "id": "tutorials-ims#1817", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1817, - "title": "Update a homepage topic-clusters test", - "summary": "Updated an internal test to match a recent change in how homepage topic-cluster links render, keeping the test suite accurate.", - "category": "Maintenance", - "mergedAt": "2026-08-15T18:47:07Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1817" - }, - { - "id": "tutorials-ims#1815", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1815, - "title": "Cleaner SEO metadata on group and mission pages", - "summary": "Fixed breadcrumb structured data and added meaningful descriptions to group and mission pages, and cleaned up leftover placeholder text, improving how these pages appear in search.", - "category": "Fix", - "mergedAt": "2026-08-15T16:00:32Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1815" - }, - { - "id": "tutorials-ims#1814", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1814, - "title": "Fix unstyled image lightbox on tutorials", - "summary": "The tutorial image lightbox now displays properly with a single focused image and its styling, instead of dumping all images stacked and unstyled.", - "category": "Fix", - "mergedAt": "2026-08-15T15:18:09Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1814" - }, - { - "id": "tutorials-ims#1813", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1813, - "title": "Fix a build check for shared UI code", - "summary": "Adjusted an internal build guard so shared UI5 code splitting no longer trips a false failure, keeping the build pipeline healthy.", - "category": "Fix", - "mergedAt": "2026-08-15T13:31:02Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1813" - }, - { - "id": "tutorials-ims#1812", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1812, - "title": "Fix mobile overflow and button overlap on tutorials", - "summary": "Fixed tutorial pages on mobile so content no longer overflows horizontally and the Steps button no longer overlaps, for a cleaner reading experience on phones.", - "category": "Fix", - "mergedAt": "2026-08-15T13:07:42Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1812" - }, - { - "id": "tutorials-ims#1810", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1810, - "title": "Slimmer homepage icon styles and right-sized images", - "summary": "The homepage now ships only the handful of icon styles it actually uses and requests appropriately sized images, trimming roughly 150 KB of render-blocking CSS plus oversized thumbnails for faster page loads.", - "category": "Performance", - "mergedAt": "2026-08-15T13:07:20Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1810" - }, - { - "id": "tutorials-ims#1809", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1809, - "title": "Homepage accessibility fixes", - "summary": "Fixed several homepage accessibility issues around color contrast, keyboard focus, link labels, and ARIA attributes so the page works better with screen readers and meets WCAG AA.", - "category": "Fix", - "mergedAt": "2026-08-15T13:06:59Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1809" - }, - { - "id": "tutorials-ims#1808", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1808, - "title": "Concept and catalog pages now have proper SEO metadata", - "summary": "Concept, group, and mission pages now emit their own title, description, canonical URL, and social-preview tags instead of inheriting placeholder metadata, so they're properly indexed by search engines and share cleanly on social media.", - "category": "Fix", - "mergedAt": "2026-08-15T13:06:39Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1808" - }, - { - "id": "tutorials-ims#1807", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1807, - "title": "Alert call-to-action button now appears", - "summary": "The call-to-action button on notification alerts now renders correctly in the popover, so links surfaced in announcements are actually clickable.", - "category": "Fix", - "mergedAt": "2026-08-15T13:06:16Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1807" - }, - { - "id": "tutorials-ims#1811", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1811, - "title": "Tutorial tag chips now filter the navigator correctly", - "summary": "Clicking an experience-level tag like \"Beginner\" on a tutorial now sets the Experience filter in the navigator instead of quietly breaking the Software Product filter, so browsing by product returns the results you expect.", - "category": "Fix", - "mergedAt": "2026-08-15T13:05:48Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1811" - }, - { - "id": "tutorials-ims#1806", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1806, - "title": "Cookie banner no longer shifts the homepage on first visit", - "summary": "The consent banner is now pinned as a fixed overlay so it no longer pushes homepage content around on a first visit, giving new visitors a stable, jank-free first impression.", - "category": "Fix", - "mergedAt": "2026-08-15T12:35:33Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1806" - }, - { - "id": "tutorials-ims#1801", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1801, - "title": "test(scheduler): bump lockstep to 46 jobs for top-tutorials (#1782)", - "summary": "Updated an internal scheduler test to account for the new nightly Top Tutorials job, keeping the build green.", - "category": "Maintenance", - "mergedAt": "2026-08-15T12:01:26Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1801" - }, - { - "id": "tutorials-ims#1799", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1799, - "title": "Richer image lightbox with keyboard support, thumbnails, and swipe", - "summary": "The tutorial image viewer now supports opening with the keyboard, a thumbnail filmstrip, swipe navigation, double-tap zoom, an image counter with caption, and a loading spinner, making screenshots easier and more accessible to browse.", - "category": "Feature", - "mergedAt": "2026-08-15T00:06:08Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1799" - }, - { - "id": "tutorials-ims#1800", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1800, - "title": "Badge tracking resend reliability improvements", - "summary": "Made the badge-tracking resend process more reliable and correctly scoped to the right completion window, so recent tutorial completions get their badges assigned as expected.", - "category": "Fix", - "mergedAt": "2026-08-15T00:02:21Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1800" - }, - { - "id": "tutorials-ims#1797", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1797, - "title": "Per-page code-splitting of UI5 components", - "summary": "Each page now loads only the UI5 web components it actually needs rather than one monolithic bundle, cutting the homepage's UI5 payload by more than half for noticeably faster loads (rolled out behind a safe toggle).", - "category": "Performance", - "mergedAt": "2026-08-14T22:43:49Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1797" - }, - { - "id": "tutorials-ims#1793", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1793, - "title": "Badge backfill scripts made runnable and date-scoped", - "summary": "Fixed the badge backfill tooling so it runs against live environments and only stamps recent activity, avoiding an unnecessary sweep of the entire historical backlog.", - "category": "Fix", - "mergedAt": "2026-08-14T21:52:49Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1793" - }, - { - "id": "tutorials-ims#1790", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1790, - "title": "Top Tutorials ranking on the homepage carousel", - "summary": "The homepage carousel can now flip between Featured missions and a completions-based Top Tutorials ranking with a 90/180/360-day window selector, helping you discover what the community is actually working through.", - "category": "Feature", - "mergedAt": "2026-08-14T20:38:29Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1790" - }, - { - "id": "tutorials-ims#1791", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1791, - "title": "Devtoberfest sign-in prompt for anonymous visitors", - "summary": "Anonymous visitors clicking \"Join the Fest\" on the Devtoberfest homepage now see a friendly log-in prompt instead of a confusing error.", - "category": "Fix", - "mergedAt": "2026-08-14T20:38:00Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1791" - }, - { - "id": "tutorials-ims#1789", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1789, - "title": "Release 1.14.1 — DEV → PROD", - "summary": "Routine release bump shipping the accumulated development work to production.", - "category": "Maintenance", - "mergedAt": "2026-08-14T20:26:59Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1789" - }, - { - "id": "tutorials-ims#1787", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1787, - "title": "Freshness floor keeps stale tutorials off the homepage carousel", - "summary": "Added a configurable age cutoff so genuinely ancient tutorials no longer get ranked onto the homepage Featured carousel, keeping the recommendations feeling current.", - "category": "Feature", - "mergedAt": "2026-08-14T18:38:24Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1787" - }, - { - "id": "tutorials-ims#1781", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1781, - "title": "Next/Prev now flows continuously across a mission's groups", - "summary": "The Next button no longer disappears at the end of a group within a multi-group mission, so you can now flow straight from one group into the next without hitting a dead end.", - "category": "Fix", - "mergedAt": "2026-08-14T18:13:46Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1781" - }, - { - "id": "tutorials-ims#1780", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1780, - "title": "Multiple-choice quizzes no longer pre-select every answer", - "summary": "Fixed multiple-choice knowledge checks that rendered every option pre-selected and always graded as wrong, so quizzes now start unchecked and grade correctly.", - "category": "Fix", - "mergedAt": "2026-08-14T18:06:11Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1780" - }, - { - "id": "tutorials-ims#1776", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1776, - "title": "Minified CSS and self-hosted icon fonts", - "summary": "Several stylesheets are now minified and the icon CSS is served from our own domain instead of a third-party CDN, speeding up rendering and removing an external dependency that could break icons if it went down.", - "category": "Performance", - "mergedAt": "2026-08-14T18:00:17Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1776" - }, - { - "id": "tutorials-ims#1773", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1773, - "title": "ci(rebuild-content): enable keyless DEV content publishing (DRAFT — needs DEV approuter key seed)", - "summary": "Enabled server-side content publishing for the development environment so routine content refreshes no longer need a manual key pasted in during deploys.", - "category": "Maintenance", - "mergedAt": "2026-08-14T16:31:03Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1773" - }, - { - "id": "tutorials-ims#1772", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1772, - "title": "build(deploy): allow DEV/QA deploys from a fresh worktree; keep PROD strict", - "summary": "Relaxed deploy tooling to allow development and QA deploys from an isolated workspace while keeping production deploys strict.", - "category": "Maintenance", - "mergedAt": "2026-08-14T16:30:50Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1772" - }, - { - "id": "tutorials-ims#1770", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1770, - "title": "Dropped unused locale data from the UI5 bootstrap", - "summary": "Removed unused locale and calendar data from the UI5 bundle that loads on every page, shrinking it by nearly 80% (from 16 MB to 3.5 MB) for a much faster first load.", - "category": "Performance", - "mergedAt": "2026-08-14T14:41:58Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1770" - }, - { - "id": "tutorials-ims#1769", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1769, - "title": "Author pages survive overnight content rebuilds", - "summary": "Author profile pages no longer vanish (404) after nightly catalog rebuilds, so links to an author's page stay reliably available.", - "category": "Fix", - "mergedAt": "2026-08-14T14:20:14Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1769" - }, - { - "id": "tutorials-ims#1767", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1767, - "title": "Shorter edge cache and reduced homepage layout shift", - "summary": "Lowered the CDN cache window so newly published content appears within minutes instead of up to a day, and reserved space for homepage video and community sections to cut layout shift by over 90%.", - "category": "Performance", - "mergedAt": "2026-08-14T13:14:56Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1767" - }, - { - "id": "tutorials-ims#1768", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1768, - "title": "Completion tracking now includes the field badges depend on", - "summary": "Tutorial completions now carry the tracking identifier the badging system needs, plus backfill and resend tooling for past completions, so badges get awarded reliably.", - "category": "Fix", - "mergedAt": "2026-08-14T13:13:36Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1768" - }, - { - "id": "tutorials-ims#1766", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1766, - "title": "Alerts can use free-text call-to-action URLs again", - "summary": "The alert call-to-action URL field in the admin UI now keeps a hand-typed URL instead of discarding anything not in the suggestion list.", - "category": "Fix", - "mergedAt": "2026-08-14T12:39:38Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1766" - }, - { - "id": "tutorials-ims#1765", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1765, - "title": "Hide \"More from author\" rail in embedded tutorials", - "summary": "When a tutorial is embedded in another page, the cross-tutorial \"More from this author\" rail is now hidden so the embed stays focused on its own content.", - "category": "Fix", - "mergedAt": "2026-08-14T10:21:43Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1765" - }, - { - "id": "tutorials-ims#1764", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1764, - "title": "Byline fallback links tutorials to established author pages", - "summary": "Tutorials without explicit author frontmatter now link their byline to an existing author's page when the top contributor already has one, so more tutorials are correctly attributed without wrongly crediting bots or reviewers.", - "category": "Feature", - "mergedAt": "2026-08-14T10:15:30Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1764" - }, - { - "id": "tutorials-ims#1762", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1762, - "title": "Dropdown value help for link-health override in admin", - "summary": "The link-health override field in the admin UI now offers a proper OK/SLOW/BROKEN dropdown instead of a free-text box, making it clear what values are valid.", - "category": "Fix", - "mergedAt": "2026-08-14T06:40:53Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1762" - }, - { - "id": "tutorials-ims#1759", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1759, - "title": "QA navigator no longer wiped by content rebuilds", - "summary": "The QA author-preview navigator is now preserved across content-rebuild swaps, ending the recurring issue where it kept disappearing after a rebuild.", - "category": "Fix", - "mergedAt": "2026-08-14T05:48:49Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1759" - }, - { - "id": "tutorials-ims#1760", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1760, - "title": "Local deploys now build the QA preview navigator", - "summary": "Fixed local deploys so the QA author-preview tutorial navigator is built and shipped rather than serving a broken (404) page, with a guard to catch it if it ever regresses.", - "category": "Fix", - "mergedAt": "2026-08-14T05:48:38Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1760" - }, - { - "id": "tutorials-ims#1761", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1761, - "title": "Author pages exclude unpublished and deleted tutorials", - "summary": "Author pages, the \"more from author\" rail, and bylines now only show published, active tutorials, so unpublished or removed content no longer lingers on author profiles.", - "category": "Fix", - "mergedAt": "2026-08-14T05:48:23Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1761" - }, - { - "id": "tutorials-ims#1757", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1757, - "title": "Release v1.14.0: What's New page, author detail pages, Devtoberfest Signups report", - "summary": "Production release bundling the What's New page, author detail pages, and the Devtoberfest signups report.", - "category": "Maintenance", - "mergedAt": "2026-08-14T01:42:34Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1757" - }, - { - "id": "tutorials-ims#1756", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1756, - "title": "New public What's New page", - "summary": "Added a public What's New page at /whats-new/ that groups recent platform improvements by week in plain language, so you can see at a glance what's changed on developers.sap.com.", - "category": "Feature", - "mergedAt": "2026-08-14T00:22:13Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1756" - }, - { - "id": "tutorials-ims#1755", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1755, - "title": "feat(#1732): other tutorials by this author (rail + author page)", - "summary": "Readers can now discover more tutorials by the same author through an inline rail and a dedicated author page.", - "category": "Feature", - "mergedAt": "2026-08-13T23:56:26Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1755" - }, - { - "id": "tutorials-ims#1754", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1754, - "title": "Devtoberfest signups analytics report", - "summary": "A new analytical report in the admin dashboard shows Devtoberfest signup trends by day and geography, giving content managers instant visibility into registration activity.", - "category": "Feature", - "mergedAt": "2026-08-13T23:19:22Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1754" - }, - { - "id": "tutorials-ims#1753", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1753, - "title": "Admin editor: long-form fields now use a proper text area", - "summary": "Long text fields such as descriptions and markdown content in the admin content editor now render as a properly-sized textarea, making it much more comfortable to write and review multi-paragraph content.", - "category": "Fix", - "mergedAt": "2026-08-13T22:30:12Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1753" - }, - { - "id": "tutorials-ims#1751", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1751, - "title": "No more red error highlighting on unrecognised code tokens", - "summary": "Code blocks no longer show distracting red error styling from the syntax highlighter on tokens it could not parse — those tokens now render as plain text instead of looking like errors.", - "category": "Fix", - "mergedAt": "2026-08-13T22:11:49Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1751" - }, - { - "id": "tutorials-ims#1750", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1750, - "title": "Clearer quiz badge and current-step indicator", - "summary": "The quiz completion badge is now easier to spot, and your current tutorial step is highlighted with a ring and a subtle pulse animation so you can always see where you are at a glance.", - "category": "Fix", - "mergedAt": "2026-08-13T22:11:12Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1750" - }, - { - "id": "tutorials-ims#1749", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1749, - "title": "Devtoberfest session times now shown in your local timezone only", - "summary": "Devtoberfest sessions and activity times now display exclusively in your local timezone, removing the confusing dual-timezone display that showed UTC alongside local time.", - "category": "Fix", - "mergedAt": "2026-08-13T21:56:31Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1749" - }, - { - "id": "tutorials-ims#1748", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1748, - "title": "Author guide: Mission and Group content model explained", - "summary": "Updated author documentation now clarifies how missions map to groups in the new platform and explains how to structure multi-step learning paths as groups — essential reading for contributors building tutorial series.", - "category": "Docs", - "mergedAt": "2026-08-13T21:44:51Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1748" - }, - { - "id": "tutorials-ims#1747", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1747, - "title": "Multi-select quiz answers now validate correctly", - "summary": "Quiz questions that require selecting multiple correct answers (checkboxes) now validate correctly, so tutorials using multi-select questions work as expected instead of falsely rejecting valid answers.", - "category": "Fix", - "mergedAt": "2026-08-13T21:41:01Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1747" - }, - { - "id": "tutorials-ims#1746", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1746, - "title": "Devtoberfest live session recordings show YouTube thumbnails", - "summary": "Recorded Devtoberfest live-stream sessions now display their YouTube thumbnail previews on the sessions page instead of showing a blank placeholder image.", - "category": "Fix", - "mergedAt": "2026-08-13T21:34:23Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1746" - }, - { - "id": "tutorials-ims#1744", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1744, - "title": "AEM-legacy multi-paragraph notes render as a single callout", - "summary": "Tutorial notes and callouts that were originally authored across multiple paragraphs in the old AEM system now render as a single properly-formatted block instead of splitting into bare disconnected text fragments.", - "category": "Fix", - "mergedAt": "2026-08-13T21:31:34Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1744" - }, - { - "id": "tutorials-ims#1739", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1739, - "title": "Joule button works in embedded reader mode", - "summary": "The Joule AI assistant button in the read-only embedded tutorial view now correctly opens the Joule panel when clicked, instead of silently doing nothing.", - "category": "Fix", - "mergedAt": "2026-08-13T21:06:40Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1739" - }, - { - "id": "tutorials-ims#1738", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1738, - "title": "SAP CodeJam events appear in the homepage events band", - "summary": "Upcoming SAP CodeJam events now appear in the homepage events section alongside other community events, so visitors can discover in-person learning opportunities without having to navigate to a separate page.", - "category": "Fix", - "mergedAt": "2026-08-13T21:05:59Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1738" - }, - { - "id": "tutorials-ims#1737", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1737, - "title": "Gamification badge delivery resumes after credential fix", - "summary": "Badge and point awards to the gamification system resume reliably after fixing how the platform reads authentication credentials — completions that were queued will now flush through.", - "category": "Fix", - "mergedAt": "2026-08-13T21:03:57Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1737" - }, - { - "id": "tutorials-ims#1735", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1735, - "title": "docs: build site from DEV + register discovery-center page in sidebar", - "summary": "The documentation site now builds from the leading-edge DEV branch so upcoming features can be previewed before release.", - "category": "Docs", - "mergedAt": "2026-08-13T19:23:16Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1735" - }, - { - "id": "tutorials-ims#1734", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1734, - "title": "Release DEV → main (v1.14.0)", - "summary": "Production release promoting the latest DEV changes.", - "category": "Maintenance", - "mergedAt": "2026-08-13T19:06:29Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1734" - }, - { - "id": "tutorials-ims#1733", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1733, - "title": "Docs: SAP Discovery Center .model.json integration", - "summary": "Developer documentation now covers the `.model.json` endpoint that feeds SAP Discovery Center mission cards, clarifying the contract between the developer portal and the Discovery Center catalog.", - "category": "Docs", - "mergedAt": "2026-08-13T18:08:22Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1733" - }, - { - "id": "tutorials-ims#1731", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1731, - "title": "Badge delivery token flow fixed", - "summary": "Badge and point awards now complete successfully after a server-side credential flow issue that was silently blocking all deliveries has been resolved.", - "category": "Fix", - "mergedAt": "2026-08-13T16:54:48Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1731" - }, - { - "id": "tutorials-ims#1730", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1730, - "title": "More predictable platform releases", - "summary": "Platform releases are now batched behind a stable integration branch, making production updates more predictable and reducing the risk of mid-sprint changes reaching users before they are fully verified.", - "category": "Maintenance", - "mergedAt": "2026-08-13T16:47:04Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1730" - }, - { - "id": "tutorials-ims#1728", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1728, - "title": "Devtoberfest contest window: countdown timer with exact times and timezone", - "summary": "The Devtoberfest contest period now shows a live countdown timer with the exact start and end times in your local timezone, plus a tooltip explaining the contest window rules so you know precisely when your submissions count.", - "category": "Feature", - "mergedAt": "2026-08-13T16:22:27Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1728" - }, - { - "id": "tutorials-ims#1727", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1727, - "title": "Homepage link-health overrides apply correctly at build time", - "summary": "Link health overrides set by content authors in the admin interface are now correctly applied when the page is built, preventing valid links from being incorrectly flagged as broken in the homepage navigation.", - "category": "Fix", - "mergedAt": "2026-08-13T16:21:18Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1727" - }, - { - "id": "tutorials-ims#1724", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1724, - "title": "Embedded tutorials now have step navigation, Joule, and Next controls", - "summary": "Tutorials embedded in third-party apps now include a persistent action bar with step navigation, Joule AI assistant access, and a Next button, making the embedded reading experience as interactive as the full developer portal.", - "category": "Feature", - "mergedAt": "2026-08-13T15:01:45Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1724" - }, - { - "id": "tutorials-ims#1723", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1723, - "title": "New operational alerts for pipeline errors, secrets, broken links, and stuck publishes", - "summary": "Automated alerts now fire when the content rebuild pipeline encounters errors, secrets approach expiry, broken links are detected, or a content publish gets stuck — reducing time-to-detection for platform issues.", - "category": "Feature", - "mergedAt": "2026-08-13T14:48:50Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1723" - }, - { - "id": "tutorials-ims#1721", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1721, - "title": "Devtoberfest: iCal and RSS calendar feeds plus add-to-calendar links", - "summary": "You can now subscribe to the full Devtoberfest session schedule via iCal or RSS, and add individual sessions to your calendar with a single click — making it easy to plan which sessions to attend from your existing calendar app.", - "category": "Feature", - "mergedAt": "2026-08-13T14:43:17Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1721" - }, - { - "id": "tutorials-ims#1722", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1722, - "title": "Security dependency updates (undici, sharp, tar)", - "summary": "Production dependencies undici, sharp, and tar have been updated to resolve known security vulnerabilities.", - "category": "Maintenance", - "mergedAt": "2026-08-13T14:36:19Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1722" - }, - { - "id": "tutorials-ims#1719", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1719, - "title": "Tutorial pages no longer flash unstyled components before load", - "summary": "Tutorial pages no longer briefly flicker with unstyled UI5 browser components before the UI framework finishes initialising — content is now hidden until it is ready, removing the visual flash on page load.", - "category": "Fix", - "mergedAt": "2026-08-13T13:50:49Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1719" - }, - { - "id": "tutorials-ims#1713", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1713, - "title": "Tutorial breadcrumb step-picker respects authored sequence order", - "summary": "The breadcrumb dropdown that lets you jump between tutorial steps now lists them in their correct authored sequence rather than alphabetically, so the picker matches the actual reading order of a mission or group.", - "category": "Fix", - "mergedAt": "2026-08-13T01:53:31Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1713" - }, - { - "id": "tutorials-ims#1712", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1712, - "title": "QA channel navigator: search and filter only (no homepage sections)", - "summary": "The tutorial navigator on the QA content preview channel now shows only the search and filter interface, dropping the promotional homepage sections that were inappropriate for a content review environment.", - "category": "Fix", - "mergedAt": "2026-08-13T01:37:39Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1712" - }, - { - "id": "tutorials-ims#1711", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1711, - "title": "Event-display kiosk WebSocket no longer requires login", - "summary": "The live event display screen used at SAP community events can now establish its real-time WebSocket connection without requiring an authenticated session, fixing the connection errors that were disconnecting kiosk displays.", - "category": "Fix", - "mergedAt": "2026-08-13T00:37:15Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1711" - }, - { - "id": "tutorials-ims#1710", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1710, - "title": "Joule help button no longer overlaps the Next navigation button", - "summary": "The Joule AI help floating button no longer covers the Next navigation button when reading tutorials in a group, so both controls are independently accessible without one obscuring the other.", - "category": "Fix", - "mergedAt": "2026-08-12T22:52:01Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1710" - }, - { - "id": "tutorials-ims#1709", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1709, - "title": "Hotfix content rebuilds now reference current JS assets", - "summary": "Single-tutorial hotfix rebuilds now correctly embed versioned JavaScript asset references in the published HTML, preventing visitors from receiving stale interactive components after a quick content update.", - "category": "Fix", - "mergedAt": "2026-08-12T22:18:36Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1709" - }, - { - "id": "tutorials-ims#1708", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1708, - "title": "First-time visitors are no longer auto-redirected to login", - "summary": "The portal no longer automatically triggers a login redirect for first-time visitors — only returning users who previously authenticated are silently re-signed in, giving new readers a frictionless anonymous experience.", - "category": "Fix", - "mergedAt": "2026-08-12T21:54:47Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1708" - }, - { - "id": "tutorials-ims#1707", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1707, - "title": "Admin change history restored for content records", - "summary": "Edit history logging in the admin interface is working again — changes to tutorials, missions, and configuration now correctly appear in the Change History panel as expected.", - "category": "Fix", - "mergedAt": "2026-08-12T21:48:58Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1707" - }, - { - "id": "tutorials-ims#1706", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1706, - "title": "Tutorial step-timing statistics now persist correctly on HANA", - "summary": "A database compatibility issue that caused tutorial reading-time statistics to fail silently on HANA (while appearing to work locally) has been resolved by switching to the correct SAP CAP query API.", - "category": "Fix", - "mergedAt": "2026-08-12T21:29:18Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1706" - }, - { - "id": "tutorials-ims#1704", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1704, - "title": "Admin shelf and verb-definition reports load data automatically", - "summary": "The homepage shelf configuration and verb definitions list pages in the admin interface now load their data automatically when opened, rather than requiring a manual refresh click.", - "category": "Fix", - "mergedAt": "2026-08-12T21:28:55Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1704" - }, - { - "id": "tutorials-ims#1705", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1705, - "title": "Empty admin notification popup no longer shows blank space", - "summary": "The admin notification popup now displays a clean empty state when there are no pending alerts, instead of showing an awkward layout gap.", - "category": "Fix", - "mergedAt": "2026-08-12T21:28:34Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1705" - }, - { - "id": "tutorials-ims#1703", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1703, - "title": "AEM-legacy blockquoted code samples render inside their code window", - "summary": "Code samples in tutorials originally authored in AEM that were wrapped in blockquotes now render correctly inside the code window instead of appearing as raw text outside it.", - "category": "Fix", - "mergedAt": "2026-08-12T21:27:02Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1703" - }, - { - "id": "tutorials-ims#1702", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1702, - "title": "Content publish: rejected reverts shown correctly, not as failures", - "summary": "When a content publish correctly blocks a rollback to an older version, the outcome is now shown as 'Rejected' rather than misleadingly displayed as a verification failure.", - "category": "Fix", - "mergedAt": "2026-08-12T21:20:40Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1702" - }, - { - "id": "tutorials-ims#1701", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1701, - "title": "Tutorial contributor name no longer shows as 'Unknown'", - "summary": "Tutorial overview pages now correctly display the contributor's display name instead of 'Unknown' for authors whose profile is linked to an SAP Community account.", - "category": "Fix", - "mergedAt": "2026-08-12T21:16:09Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1701" - }, - { - "id": "tutorials-ims#1699", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1699, - "title": "Next/Previous navigation stays within the current group or mission", - "summary": "When reading a tutorial that is part of a group or mission, the Next and Previous buttons now stay within that group's sequence instead of jumping to unrelated tutorials from outside the learning path.", - "category": "Fix", - "mergedAt": "2026-08-12T19:18:13Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1699" - }, - { - "id": "tutorials-ims#1700", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1700, - "title": "fix(ci): mark model-json-handler slug lookups as pre-canonicalized", - "summary": "Fixed a slug-lookup guard for the legacy tutorial-model endpoint.", - "category": "Maintenance", - "mergedAt": "2026-08-12T19:15:49Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1700" - }, - { - "id": "tutorials-ims#1698", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1698, - "title": "New alerts for gamification badge backlog and exhausted retries", - "summary": "Operators now receive automated alerts when the badge and point delivery backlog to the gamification system is growing, or when all retry attempts have been exhausted — enabling faster incident response before developers notice missing rewards.", - "category": "Feature", - "mergedAt": "2026-08-12T19:12:26Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1698" - }, - { - "id": "tutorials-ims#1697", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1697, - "title": "fix(ci): allowlist /content/tutorial-model/*slug as srv-only (route-drift guard)", - "summary": "Fixed a route-consistency guard for the legacy tutorial-model endpoint.", - "category": "Maintenance", - "mergedAt": "2026-08-12T18:46:30Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1697" - }, - { - "id": "tutorials-ims#1695", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1695, - "title": "Badge delivery failures are now visible in metrics and alerts", - "summary": "Badge and point award failures are now accurately reflected in platform metrics and trigger operational alerts, replacing the previous silent failure mode that made badge delivery issues invisible to the team.", - "category": "Feature", - "mergedAt": "2026-08-12T18:19:42Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1695" - }, - { - "id": "tutorials-ims#1696", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1696, - "title": "test(#1673): fix seed-thirdparty test path after HomepageShelves CSV move", - "summary": "Fixed a unit test after a seed data file was relocated.", - "category": "Maintenance", - "mergedAt": "2026-08-12T18:18:15Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1696" - }, - { - "id": "tutorials-ims#1691", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1691, - "title": "Homepage content edits now automatically trigger a rebuild", - "summary": "Editing homepage shelves, featured topics, or other catalog content in the admin interface now automatically triggers a content rebuild, so changes reach visitors without needing a separate manual rebuild step.", - "category": "Fix", - "mergedAt": "2026-08-12T17:38:20Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1691" - }, - { - "id": "tutorials-ims#1690", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1690, - "title": "QA tutorial navigator now accessible at its own URL", - "summary": "The QA preview version of the tutorial navigator is now correctly served at its own path, allowing content reviewers to access it independently from the main navigator.", - "category": "Fix", - "mergedAt": "2026-08-12T17:37:59Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1690" - }, - { - "id": "tutorials-ims#1693", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1693, - "title": "Admin UI edits and deletes now work reliably in production", - "summary": "Admin panel content updates and deletions now work correctly for all users in production, fixing an edge compatibility issue that was causing edit and delete actions to fail silently.", - "category": "Fix", - "mergedAt": "2026-08-12T17:37:05Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1693" - }, - { - "id": "tutorials-ims#1694", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1694, - "title": "Live event display WebSocket connection fixed", - "summary": "The real-time event display used at SAP community events can now establish its WebSocket connection correctly after WebSocket support was explicitly enabled in the app router configuration.", - "category": "Fix", - "mergedAt": "2026-08-12T17:35:13Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1694" - }, - { - "id": "tutorials-ims#1692", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1692, - "title": "Deployments verified before going live to prevent broken pages", - "summary": "New releases now automatically verify that all page assets are in place before the update goes live, catching any missing CSS or JavaScript references before visitors could encounter broken pages.", - "category": "Maintenance", - "mergedAt": "2026-08-12T17:34:03Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1692" - }, - { - "id": "tutorials-ims#1687", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1687, - "title": "Developer Advocate photos update immediately after upload", - "summary": "Developer Advocate profile photos now appear immediately after uploading a new image — the CDN cache is invalidated on save so the updated photo is visible right away instead of being stuck behind a stale cached version.", - "category": "Fix", - "mergedAt": "2026-08-12T16:15:26Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1687" - }, - { - "id": "tutorials-ims#1686", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1686, - "title": "Devtoberfest Sessions page no longer blanks on invalid timezone data", - "summary": "The Devtoberfest Sessions page now fails gracefully if a session has an unrecognised timezone value, rendering the remaining sessions normally instead of going completely blank.", - "category": "Fix", - "mergedAt": "2026-08-12T16:14:12Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1686" - }, - { - "id": "tutorials-ims#1685", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1685, - "title": "SAP Discovery Center mission cards restored", - "summary": "The `.model.json` endpoint that SAP Discovery Center uses to display developer portal missions has been reinstated, restoring the integration that was broken during the migration away from the legacy AEM platform.", - "category": "Fix", - "mergedAt": "2026-08-12T15:48:41Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1685" - }, - { - "id": "tutorials-ims#1677", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1677, - "title": "CSS and JS assets no longer 404 after a fingerprinted deployment", - "summary": "JavaScript and CSS bundles from the previous deployment are now retained during new releases, preventing the brief window where visitors with cached HTML could request a versioned asset that no longer existed on the server.", - "category": "Fix", - "mergedAt": "2026-08-12T14:43:49Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1677" - }, - { - "id": "tutorials-ims#1682", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1682, - "title": "QA channel quiz questions fully rendered (dependency fix)", - "summary": "Quiz questions and interactive step validation now display correctly on the content preview channel, fully resolving the issue that had prevented them from appearing in preview pages.", - "category": "Fix", - "mergedAt": "2026-08-12T12:47:04Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1682" - }, - { - "id": "tutorials-ims#1680", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1680, - "title": "Quiz questions now render on the QA preview channel", - "summary": "Tutorial quiz questions and interactive step validation now display correctly on the QA content preview channel after a missing JS asset reference file was added to the QA build process.", - "category": "Fix", - "mergedAt": "2026-08-12T12:15:47Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1680" - }, - { - "id": "tutorials-ims#1676", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1676, - "title": "User account auto-provisioning works reliably on HANA", - "summary": "Automatic user account creation when a visitor links their SAP Community profile now works correctly in the HANA-backed production environment, fixing a silent insert failure that left users unable to have their progress tracked.", - "category": "Fix", - "mergedAt": "2026-08-12T02:17:37Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1676" - }, - { - "id": "tutorials-ims#1673", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1673, - "title": "Admin-editable configuration no longer overwritten on deployment", - "summary": "Configuration values that admins edit at runtime — homepage shelves, featured topics — are no longer overwritten by seed data during deployment, preventing live edits from being silently wiped on every new release.", - "category": "Fix", - "mergedAt": "2026-08-12T02:12:56Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1673" - }, - { - "id": "tutorials-ims#1674", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1674, - "title": "Tutorial right rail restored after CDS code block layout regression", - "summary": "An unbalanced HTML tag in the CDS syntax highlighter was pushing the tutorial progress sidebar off-screen; the fix restores correct side-by-side layout so the right rail displays normally alongside CDS code samples.", - "category": "Fix", - "mergedAt": "2026-08-12T01:54:53Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1674" - }, - { - "id": "tutorials-ims#1671", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1671, - "title": "fix(#1659 Phase 2): make pages-routes smoke markers minification-safe", - "summary": "Made deploy smoke tests robust to minified HTML so they stop failing on healthy pages.", - "category": "Fix", - "mergedAt": "2026-08-11T23:55:09Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1671" - }, - { - "id": "tutorials-ims#1670", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1670, - "title": "Browse, Topics, and other content pages now served from HANA", - "summary": "The Browse, Topics, Verbs, Sitemap, and other non-tutorial content pages are now served dynamically from the CAP/HANA content store, completing the migration away from static Hugo files and enabling live content updates without a full redeploy.", - "category": "Feature", - "mergedAt": "2026-08-11T23:03:19Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1670" - }, - { - "id": "tutorials-ims#1669", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1669, - "title": "Per-tutorial override for the content publish rollback protection", - "summary": "Content operators can now override the rollback-protection policy on a per-tutorial basis when a genuine revert is needed, avoiding the all-or-nothing configuration change that was previously required.", - "category": "Feature", - "mergedAt": "2026-08-11T22:46:40Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1669" - }, - { - "id": "tutorials-ims#1666", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1666, - "title": "CDS syntax highlighting colours restored in tutorial code blocks", - "summary": "SAP Core Data Services (CDS) code blocks in tutorials now show correct syntax highlighting colours after a CSS mapping regression was identified and fixed.", - "category": "Fix", - "mergedAt": "2026-08-11T21:51:23Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1666" - }, - { - "id": "tutorials-ims#1665", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1665, - "title": "fix(guard): unbreak main CI — move slug-canonical marker adjacent to .where", - "summary": "Fixed a code-quality guard that was failing the build.", - "category": "Maintenance", - "mergedAt": "2026-08-11T21:51:14Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1665" - }, - { - "id": "tutorials-ims#1664", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1664, - "title": "Content pages can now be served from HANA (initial rollout)", - "summary": "The infrastructure for serving non-tutorial content pages from the HANA content store is now in place, initially enabled in a validation mode to allow incremental verification before the full cut-over to dynamic page serving.", - "category": "Feature", - "mergedAt": "2026-08-11T20:20:18Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1664" - }, - { - "id": "tutorials-ims#1663", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1663, - "title": "Puzzle progress survives login, and orphaned drafts are recovered", - "summary": "Progress made on coding puzzles before signing in is now correctly merged with your account when you log in, completed puzzles are properly recognised after a browser refresh, and orphaned draft submissions are automatically recovered.", - "category": "Fix", - "mergedAt": "2026-08-11T18:39:53Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1663" - }, - { - "id": "tutorials-ims#1662", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1662, - "title": "Repository licensed under Apache-2.0 (OSPO compliance)", - "summary": "The developer portal codebase is now explicitly licensed under Apache-2.0 with REUSE-compliant headers, meeting SAP open-source compliance requirements as the repository moves toward public visibility.", - "category": "Maintenance", - "mergedAt": "2026-08-11T18:06:23Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1662" - }, - { - "id": "tutorials-ims#1661", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1661, - "title": "CDS code highlighting restored on HANA-published tutorials", - "summary": "CDS syntax highlighting was missing from published tutorials after a build pipeline regression; the syntax highlighter is now correctly invoked when tutorials are published to the content store.", - "category": "Fix", - "mergedAt": "2026-08-11T17:04:46Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1661" - }, - { - "id": "tutorials-ims#1660", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1660, - "title": "Link-health checker no longer flags internal or auth-gated URLs as broken", - "summary": "The homepage link-health checker no longer incorrectly marks internal portal URLs and login-protected pages as broken — those links are now either skipped or probed with the correct authentication context.", - "category": "Fix", - "mergedAt": "2026-08-11T16:31:21Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1660" - }, - { - "id": "tutorials-ims#1658", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1658, - "title": "Versioned JS and CSS bundles are retained across deployments", - "summary": "Content-hashed JavaScript and CSS assets are now preserved when a new version is deployed, eliminating the brief window where visitors with cached HTML pages could request a bundle that no longer existed on the server.", - "category": "Feature", - "mergedAt": "2026-08-11T15:24:57Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1658" - }, - { - "id": "tutorials-ims#1654", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1654, - "title": "Navigator mission cards link correctly for nested-group missions", - "summary": "Mission cards in the tutorial navigator now link correctly when the mission's tutorials are structured as nested groups, fixing cards that previously led to a dead end.", - "category": "Fix", - "mergedAt": "2026-08-11T15:07:19Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1654" - }, - { - "id": "tutorials-ims#1656", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1656, - "title": "Homepage footer cleaned up: broken links and padlock icon hidden", - "summary": "Broken placeholder links in the homepage directory footer and a stray sign-in padlock icon have been hidden, cleaning up footer content that was inadvertently visible since launch.", - "category": "Fix", - "mergedAt": "2026-08-11T15:03:54Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1656" - }, - { - "id": "tutorials-ims#1655", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1655, - "title": "Mobile navigation menu now opens on tap", - "summary": "On mobile devices, tapping the Navigate button in the site header now correctly opens the navigation popover instead of doing nothing.", - "category": "Fix", - "mergedAt": "2026-08-11T14:59:29Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1655" - }, - { - "id": "tutorials-ims#1653", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1653, - "title": "docs: register approuter-static-serving page in sidebar (fix Pages CI)", - "summary": "Registered a new architecture page in the documentation sidebar.", - "category": "Docs", - "mergedAt": "2026-08-11T14:37:09Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1653" - }, - { - "id": "tutorials-ims#1649", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1649, - "title": "Admin portal no longer reload-loops on authorization errors", - "summary": "The admin portal no longer enters an infinite reload loop when a session lacks the required authorization scope — it now shows a clear access-denied message so the user knows what action to take.", - "category": "Fix", - "mergedAt": "2026-08-11T14:23:46Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1649" - }, - { - "id": "tutorials-ims#1645", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1645, - "title": "spec: HANA/CAP content-page serving + asset-hash retention (durable fix)", - "summary": "Design spec for serving all pages from the database and retaining asset hashes across deploys.", - "category": "Docs", - "mergedAt": "2026-08-11T13:56:37Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1645" - }, - { - "id": "tutorials-ims#1644", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1644, - "title": "App router recovers from transient module load errors on refresh", - "summary": "The application router now retries its module-loading step when a transient import error occurs, preventing a page refresh from leaving the site in a broken state after a brief network hiccup during startup.", - "category": "Fix", - "mergedAt": "2026-08-11T13:56:18Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1644" - }, - { - "id": "tutorials-ims#1647", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1647, - "title": "Devtoberfest App Space missions load correctly", - "summary": "The Devtoberfest App Space now correctly resolves which mission is associated with an event, fixing a lookup direction bug that was preventing mission content from loading on the App Space page.", - "category": "Fix", - "mergedAt": "2026-08-11T13:55:55Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1647" - }, - { - "id": "tutorials-ims#1648", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1648, - "title": "Animated GIFs in tutorials now animate correctly", - "summary": "Animated GIFs embedded in tutorial content now play their animations correctly — they are no longer flattened to static images by the CDN image processor.", - "category": "Fix", - "mergedAt": "2026-08-11T13:54:53Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1648" - }, - { - "id": "tutorials-ims#1646", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1646, - "title": "Images and links inside Prerequisites tables now render correctly", - "summary": "Images and hyperlinks placed inside Prerequisites tables in tutorial content now render as expected instead of showing raw markdown syntax or escaped HTML tags.", - "category": "Fix", - "mergedAt": "2026-08-11T13:12:22Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1646" - }, - { - "id": "tutorials-ims#1643", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1643, - "title": "chore(deploy): bump prod tutorials-srv instances 2->4 for launch load", - "summary": "Scaled the production backend to four instances to absorb launch-day load.", - "category": "Maintenance", - "mergedAt": "2026-08-11T11:30:47Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1643" - }, - { - "id": "tutorials-ims#1642", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1642, - "title": "docs(architecture): design for durable multi-instance approuter static serving", - "summary": "Design document for serving static assets reliably across multiple server instances.", - "category": "Docs", - "mergedAt": "2026-08-11T11:18:47Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1642" - }, - { - "id": "tutorials-ims#1641", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1641, - "title": "ci(rebuild): guard runtime-push path against bare island paths (follow-up #1628)", - "summary": "Added a safeguard so content rebuilds can no longer ship broken JavaScript asset paths.", - "category": "Fix", - "mergedAt": "2026-08-11T11:18:35Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1641" - }, - { - "id": "tutorials-ims#1636", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1636, - "title": "Intermittent blank page on load fixed (bootstrap race condition)", - "summary": "A timing race between the app router's legacy redirect module and its initial page load was causing intermittent blank pages or redirect loops for some visitors — the startup sequence is now deterministic.", - "category": "Fix", - "mergedAt": "2026-08-11T10:44:27Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1636" - }, - { - "id": "tutorials-ims#1635", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1635, - "title": "chore(deploy): bump tutorials-srv disk-quota 1024M->2048M", - "summary": "Raised the backend service's disk allocation to match what production needs.", - "category": "Maintenance", - "mergedAt": "2026-08-11T10:43:45Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1635" - }, - { - "id": "tutorials-ims#1628", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1628, - "title": "Content rebuilds now ship correct versioned JS assets", - "summary": "Single-tutorial hotfix rebuilds triggered via GitHub Actions now correctly generate versioned JavaScript asset references, ensuring published pages load current interactive components rather than stale cached code.", - "category": "Fix", - "mergedAt": "2026-08-11T10:27:46Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1628" - }, - { - "id": "tutorials-ims#1626", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1626, - "title": "fix(ci): drop build:island-manifest from postbuild:apps guard suite", - "summary": "Fixed a build guard that was failing every continuous-integration run.", - "category": "Maintenance", - "mergedAt": "2026-08-11T04:13:07Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1626" - }, - { - "id": "tutorials-ims#1627", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1627, - "title": "chore(release): bump MTA version to 1.13.3 for PROD", - "summary": "Version bump ahead of a production release.", - "category": "Maintenance", - "mergedAt": "2026-08-11T03:42:01Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1627" - }, - { - "id": "tutorials-ims#1625", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1625, - "title": "SAP events display on the correct calendar day", - "summary": "SAP events on the homepage now show on the calendar day they actually occur, rather than being shifted by server-side timezone conversion — community events authored in a non-UTC timezone no longer appear on the wrong date.", - "category": "Fix", - "mergedAt": "2026-08-11T02:27:41Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1625" - }, - { - "id": "tutorials-ims#1624", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1624, - "title": "Hotfix rebuilds blocked when current CSS fingerprints are not yet deployed", - "summary": "A safety guard now prevents single-tutorial hotfix rebuilds from going through if the current build's CSS fingerprints have not been deployed yet, avoiding a state where published tutorial HTML references styles that do not exist on the server.", - "category": "Maintenance", - "mergedAt": "2026-08-11T01:54:33Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1624" - }, - { - "id": "tutorials-ims#1623", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1623, - "title": "Cache invalidations now propagate across all server instances", - "summary": "Content cache and navigator cache invalidations now propagate reliably across all running server instances, preventing visitors from seeing stale content on one instance after a content publish updated another.", - "category": "Fix", - "mergedAt": "2026-08-11T01:48:51Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1623" - }, - { - "id": "tutorials-ims#1620", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1620, - "title": "fix(test): un-break unit CI — match island-src partial in module-load guards", - "summary": "Restored the unit-test suite after a template refactor changed how JavaScript bundles are referenced.", - "category": "Maintenance", - "mergedAt": "2026-08-11T01:06:45Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1620" - }, - { - "id": "tutorials-ims#1619", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1619, - "title": "Community event dates now show the locally authored day", - "summary": "Community events such as CodeJams and workshops now display the date as authored, rather than being shifted by server timezone conversion — events authored as starting on a Monday no longer appear as Sunday in the portal.", - "category": "Fix", - "mergedAt": "2026-08-11T00:30:15Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1619" - }, - { - "id": "tutorials-ims#1618", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1618, - "title": "SAP Community profile linking now accepts a pasted profile URL", - "summary": "Linking your SAP Community profile to your developer account now works when you paste the full profile URL, and automatically creates your account record if it does not yet exist.", - "category": "Fix", - "mergedAt": "2026-08-11T00:25:39Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1618" - }, - { - "id": "tutorials-ims#1617", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1617, - "title": "Raw image attributes no longer appear as text in option-tab blocks", - "summary": "Images inside option-tab blocks in tutorials no longer leak their raw HTML attributes as visible text below the image — the rendered output is now clean.", - "category": "Fix", - "mergedAt": "2026-08-11T00:21:08Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1617" - }, - { - "id": "tutorials-ims#1613", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1613, - "title": "Local builds now reliably reference correct versioned JS assets", - "summary": "The build step that maps Vue component names to their versioned JS filenames is now always run as part of the main build, fixing a long-standing issue where local builds shipped pages with unversioned JS paths that would not match the assets actually on the server.", - "category": "Maintenance", - "mergedAt": "2026-08-10T23:26:07Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1613" - }, - { - "id": "tutorials-ims#1612", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1612, - "title": "Concepts page no longer 404s on hard refresh with a query string", - "summary": "Refreshing or directly navigating to a `/concepts/` URL with a query parameter no longer returns a 404 — the route is now correctly handled server-side.", - "category": "Fix", - "mergedAt": "2026-08-10T22:05:34Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1612" - }, - { - "id": "tutorials-ims#1611", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1611, - "title": "Joule and SAP Fundamental Styles CSS are now cache-busted on update", - "summary": "The Joule AI assistant stylesheet and the SAP Fundamental Styles base CSS are now content-hashed, preventing browsers and CDN edges from serving stale cached versions of these critical stylesheets after a platform update.", - "category": "Fix", - "mergedAt": "2026-08-10T21:42:18Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1611" - }, - { - "id": "tutorials-ims#1610", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1610, - "title": "Topics page concept links now point to published content", - "summary": "Placeholder concept links on the Topics page now point to real published concept pages instead of broken placeholder slugs, so all concept browsing links reach actual content.", - "category": "Fix", - "mergedAt": "2026-08-10T21:36:54Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1610" - }, - { - "id": "tutorials-ims#1609", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1609, - "title": "Interactive JS components are now versioned to prevent stale code", - "summary": "Interactive JavaScript components on portal pages are now content-hashed so CDN edges and browsers always fetch the current version after a deployment, eliminating the stale-JS problem that could leave interactive page elements in a broken state.", - "category": "Fix", - "mergedAt": "2026-08-10T21:14:01Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1609" - }, - { - "id": "tutorials-ims#1608", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1608, - "title": "Developer Advocate profile card flip works correctly on iOS Safari", - "summary": "Developer Advocate profile cards now flip correctly on iOS Safari — the front photo is properly hidden when the card flips to reveal the back, instead of both sides being visible at the same time.", - "category": "Fix", - "mergedAt": "2026-08-10T20:41:25Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1608" - }, - { - "id": "tutorials-ims#1606", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1606, - "title": "Homepage verb tiles always navigate on click, even after hovering", - "summary": "Clicking a learning verb tile on the homepage now reliably navigates to the correct page even after hovering over the card triggered the flip animation — the click target was previously lost after the animation completed.", - "category": "Fix", - "mergedAt": "2026-08-10T20:28:18Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1606" - }, - { - "id": "tutorials-ims#1603", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1603, - "title": "Remaining page-level Hugo CSS files are now cache-busted", - "summary": "The remaining page-level stylesheets not yet covered by content hashing are now versioned, completing full CDN cache-busting coverage for CSS across the platform.", - "category": "Fix", - "mergedAt": "2026-08-10T20:18:48Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1603" - }, - { - "id": "tutorials-ims#1602", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1602, - "title": "Devtoberfest event registrations can now be saved to the database", - "summary": "Devtoberfest event registrations can now be correctly persisted — a missing database sequence for generating registration IDs was causing all registrations to fail silently.", - "category": "Fix", - "mergedAt": "2026-08-10T19:59:31Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1602" - }, - { - "id": "tutorials-ims#1601", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1601, - "title": "Hugo CSS files are content-hashed to prevent stale style delivery", - "summary": "Hugo-managed CSS files are now content-hashed at build time, ensuring CDN edges and browsers always retrieve the latest stylesheets after a new release rather than serving stale cached versions.", - "category": "Fix", - "mergedAt": "2026-08-10T19:54:57Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1601" - }, - { - "id": "tutorials-ims#1598", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1598, - "title": "Navigator Type and Experience filter lists render fully", - "summary": "The Type and Experience filter panels in the tutorial navigator now render all available options instead of being cut off partway through the list.", - "category": "Fix", - "mergedAt": "2026-08-10T19:53:40Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1598" - }, - { - "id": "tutorials-ims#1599", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1599, - "title": "Duplicate product tags in navigator filters are now merged", - "summary": "Duplicate Software Product tags in the tutorial navigator filter — caused by slight label variations across tutorial metadata — are now merged by display label, resulting in cleaner filter lists without repetitions.", - "category": "Fix", - "mergedAt": "2026-08-10T19:53:10Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1599" - }, - { - "id": "tutorials-ims#1597", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1597, - "title": "Option-tab controls in tutorials render as interactive buttons", - "summary": "Option-tab controls in tutorials now render as interactive buttons as intended, rather than showing the raw HTML tag text that was being escaped by the Markdown renderer.", - "category": "Fix", - "mergedAt": "2026-08-10T19:24:40Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1597" - }, - { - "id": "tutorials-ims#1593", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1593, - "title": "Explore page no longer breaks the Hugo build", - "summary": "A special character in the Explore page frontmatter description that was causing Hugo build failures has been escaped, restoring the ability to build the full site with the Explore page included.", - "category": "Fix", - "mergedAt": "2026-08-10T19:02:20Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1593" - }, - { - "id": "tutorials-ims#1589", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1589, - "title": "Homepage learning verb tiles updated", - "summary": "The learning verb tiles on the homepage — the Browse by, Learn how to, and Discover action categories — have been updated with refreshed copy and links.", - "category": "Feature", - "mergedAt": "2026-08-10T18:33:26Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1589" - }, - { - "id": "tutorials-ims#1588", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1588, - "title": "Tutorials can now be embedded in SAP Business AI Platform", - "summary": "Tutorials can now be rendered in a clean read-only mode inside SAP Business AI Platform (BAIP), with portal chrome hidden and only the tutorial content and step navigation exposed — enabling seamless in-context learning from within BAIP.", - "category": "Feature", - "mergedAt": "2026-08-10T18:23:34Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1588" - }, - { - "id": "tutorials-ims#1587", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1587, - "title": "Production app router no longer crash-loops under load", - "summary": "The production app router was running out of memory under real traffic and crash-looping; its memory allocation has been increased to handle the load seen since the platform went live.", - "category": "Fix", - "mergedAt": "2026-08-10T18:03:19Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1587" - }, - { - "id": "tutorials-ims#1586", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1586, - "title": "Devtoberfest Planner admin link resolves to the correct environment", - "summary": "The Devtoberfest Planner link in the admin interface now correctly resolves to the current environment — it was previously always pointing to DEV even when accessed from the PROD admin panel.", - "category": "Fix", - "mergedAt": "2026-08-10T17:27:35Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1586" - }, - { - "id": "tutorials-ims#1585", - "repo": "tutorials-ims", - "label": "Developer Portal", - "number": 1585, - "title": "Topics admin actions work reliably regardless of slug casing", - "summary": "Topic publish and unpublish actions in the admin interface now correctly normalise the topic slug before performing the lookup, fixing a case-sensitivity mismatch that was causing failures on any topic change.", - "category": "Fix", - "mergedAt": "2026-08-10T16:00:49Z", - "week": "2026-W33", - "weekStart": "2026-08-10", - "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1585" - } - ] -} +{ + "generatedAt": "2026-09-09T17:10:35Z", + "repos": [ + { + "key": "tutorials-ims", + "slug": "sap-tutorials/tutorials-ims", + "label": "Developer Portal" + } + ], + "entries": [ + { + "id": "tutorials-ims#2222", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2222, + "title": "fix(deploy): guard prepare hook so CF staging doesn't fail", + "summary": "Deployments to Cloud Foundry no longer fail during staging when an optional developer git-hook script isn't shipped, making releases more reliable.", + "category": "Maintenance", + "mergedAt": "2026-09-09T15:24:54Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2222" + }, + { + "id": "tutorials-ims#2221", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2221, + "title": "feat(skills): provision-tutorial-repo skill + script", + "summary": "A new guided skill and script make it easy to provision a fresh tutorial source repository with the right structure and settings.", + "category": "Feature", + "mergedAt": "2026-09-09T15:15:52Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2221" + }, + { + "id": "tutorials-ims#2220", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2220, + "title": "fix(puzzles): assign legacyId to admin-authored puzzles", + "summary": "Puzzles created in the admin tools now receive a proper identifier, so they track and display consistently alongside imported puzzles.", + "category": "Fix", + "mergedAt": "2026-09-09T15:12:53Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2220" + }, + { + "id": "tutorials-ims#2217", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2217, + "title": "fix(sm_tech_ids): emit semaphoreId for every tag", + "summary": "Product-ID meta tags are now emitted for every tag on a page rather than only primary ones, improving downstream content classification.", + "category": "Fix", + "mergedAt": "2026-09-09T04:10:42Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2217" + }, + { + "id": "tutorials-ims#2216", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2216, + "title": "feat(admin): surface feedback-email digest flag in Feature Flags UI", + "summary": "Admins can now toggle the feedback-email digest directly from the Feature Flags screen instead of changing configuration by hand.", + "category": "Feature", + "mergedAt": "2026-09-09T03:25:09Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2216" + }, + { + "id": "tutorials-ims#2215", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2215, + "title": "docs(a2a): document A2A agent + add quickstart", + "summary": "New documentation and a quickstart on the API docs page explain the agent-to-agent (A2A) integration and how to get started with it.", + "category": "Docs", + "mergedAt": "2026-09-09T02:05:38Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2215" + }, + { + "id": "tutorials-ims#2214", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2214, + "title": "ci: split unit tests from static guards", + "summary": "Continuous-integration now runs unit tests separately from static checks, so build failures are clearer and faster to diagnose.", + "category": "Maintenance", + "mergedAt": "2026-09-09T01:02:57Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2214" + }, + { + "id": "tutorials-ims#2212", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2212, + "title": "fix(admin): categorical week axis for Devtoberfest Signups report", + "summary": "The Devtoberfest Signups admin report now uses a categorical week axis and a trimmed layout for clearer reading.", + "category": "Fix", + "mergedAt": "2026-09-08T21:41:06Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2212" + }, + { + "id": "tutorials-ims#2211", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2211, + "title": "feat(mcp): add search_channels curated tool (#2205)", + "summary": "MCP clients can now discover the external-channels catalog through a new anonymous search_channels tool, searchable by name, category, and platform.", + "category": "Feature", + "mergedAt": "2026-09-08T21:22:33Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2211" + }, + { + "id": "tutorials-ims#2210", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2210, + "title": "docs(skills): add sap-developers-mcp skill for the hosted MCP server", + "summary": "A published guide explains how to connect any MCP client — Claude, Joule, Cursor, and others — to the SAP Developers hosted MCP server across anonymous, PAT, and OAuth access.", + "category": "Docs", + "mergedAt": "2026-09-08T21:21:59Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2210" + }, + { + "id": "tutorials-ims#2208", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2208, + "title": "fix(feedback-digest): mark pre-canonicalized slug lookup (fix DEV unit tests)", + "summary": "Tidied an internal slug lookup in the feedback digest so it passes the build's static checks; no behavior change.", + "category": "Maintenance", + "mergedAt": "2026-09-08T21:04:45Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2208" + }, + { + "id": "tutorials-ims#2207", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2207, + "title": "fix(admin-shell): restore dropped _loadNotificationConfig header (#2199)", + "summary": "Restored a controller method in the Tutorial Health dashboard that had been accidentally broken, so admin builds and notifications work again.", + "category": "Fix", + "mergedAt": "2026-09-08T20:51:25Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2207" + }, + { + "id": "tutorials-ims#2204", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2204, + "title": "feat(#2199): personal watch list in Tutorial Health dashboard", + "summary": "Authors can now build a personal watch list to monitor tutorials they don't own, with the health report scoped to owned, watched, or both.", + "category": "Feature", + "mergedAt": "2026-09-08T20:22:54Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2204" + }, + { + "id": "tutorials-ims#2203", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2203, + "title": "fix(users): backfill email from token subject when JWT email claim is absent (#2199)", + "summary": "An author's email is now backfilled from their sign-in identity when the login token omits it, so their ownership and monitoring dashboards report tutorials correctly.", + "category": "Fix", + "mergedAt": "2026-09-08T20:20:34Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2203" + }, + { + "id": "tutorials-ims#2202", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2202, + "title": "test: fix stale lockstep counts for #2184 semaphore sync (flag + job)", + "summary": "Updated internal test counts to match the newly added taxonomy-sync flag and job.", + "category": "Maintenance", + "mergedAt": "2026-09-08T19:56:03Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2202" + }, + { + "id": "tutorials-ims#2201", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2201, + "title": "feat(channels): alert on new channel submissions awaiting approval (#2198)", + "summary": "DevRel now receives an alert whenever a new external-channel submission is waiting in the moderation queue, so proposals don't sit unnoticed.", + "category": "Feature", + "mergedAt": "2026-09-08T18:18:10Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2201" + }, + { + "id": "tutorials-ims#2200", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2200, + "title": "test(smoke): make the deploy smoke gate a reliable green set", + "summary": "Made the deploy smoke checks a reliably green set by fixing test-only defects, so a red run once again signals a real problem.", + "category": "Maintenance", + "mergedAt": "2026-09-08T18:01:51Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2200" + }, + { + "id": "tutorials-ims#2197", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2197, + "title": "feat(tags): automate Semaphore taxonomy sync (#2184)", + "summary": "A weekly automated sync keeps the tag taxonomy aligned with the central Semaphore model, updating renamed terms in place instead of duplicating them.", + "category": "Feature", + "mergedAt": "2026-09-08T13:56:44Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2197" + }, + { + "id": "tutorials-ims#2196", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2196, + "title": "test: fix two stale unit tests failing CI", + "summary": "Refreshed two stale tests to match earlier source changes.", + "category": "Maintenance", + "mergedAt": "2026-09-08T13:30:49Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2196" + }, + { + "id": "tutorials-ims#2195", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2195, + "title": "fix(scavenger-hunt): correct Shilpa clue string", + "summary": "Corrected the API-docs scavenger hunt clue so it matches the current site snippet.", + "category": "Fix", + "mergedAt": "2026-09-08T12:57:16Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2195" + }, + { + "id": "tutorials-ims#2191", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2191, + "title": "test(sm-tech-ids): env-gate tutorial-page sm_tech_ids smoke assertion", + "summary": "Made a tutorial product-ID smoke check opt-in via configuration so it no longer fails on environments lacking that data.", + "category": "Maintenance", + "mergedAt": "2026-09-08T04:00:49Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2191" + }, + { + "id": "tutorials-ims#2190", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2190, + "title": "feat(feedback): email tutorial owners new commented feedback (#2188)", + "summary": "Tutorial owners now receive a daily email digest of new commented feedback on their tutorials.", + "category": "Feature", + "mergedAt": "2026-09-08T03:51:16Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2190" + }, + { + "id": "tutorials-ims#2189", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2189, + "title": "fix(attachments): base64url-encode source URLs to dodge Akamai WAF 403 (#1931 follow-up)", + "summary": "Tutorial attachment downloads work again by encoding source URLs so they no longer trip a content-delivery security block.", + "category": "Fix", + "mergedAt": "2026-09-08T03:23:22Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2189" + }, + { + "id": "tutorials-ims#2187", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2187, + "title": "Restore sm_tech_ids product-ID meta tags across content pages", + "summary": "Content pages once again emit product-ID meta tags so the site search crawler can filter migrated documents by product.", + "category": "Feature", + "mergedAt": "2026-09-08T02:38:08Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2187" + }, + { + "id": "tutorials-ims#2186", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2186, + "title": "fix(puzzles): wire Submit button as the completion finalizer (#2185)", + "summary": "The puzzle solver's Submit button now works as the completion step, so solving and submitting a puzzle records it correctly.", + "category": "Fix", + "mergedAt": "2026-09-07T23:00:30Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2186" + }, + { + "id": "tutorials-ims#2183", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2183, + "title": "fix(tutorial-author): relabel 'Created by' to 'Created on' (#2177)", + "summary": "Relabeled a tutorial's date line from 'Created by' to 'Created on' since it shows only a date, not a person.", + "category": "Fix", + "mergedAt": "2026-09-07T11:12:56Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2183" + }, + { + "id": "tutorials-ims#2182", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2182, + "title": "fix(author): stop mixing named authors with last-changed-by identity (#2181)", + "summary": "Fixed tutorial bylines so a named author is no longer paired with a different person's photo and profile link when the author profile is missing.", + "category": "Fix", + "mergedAt": "2026-09-07T11:07:34Z", + "week": "2026-W37", + "weekStart": "2026-09-07", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2182" + }, + { + "id": "tutorials-ims#2176", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2176, + "title": "Release 1.22.0 — What's New refresh + version bump", + "summary": "Promoted the accumulated DEV changes to production as release 1.22.0, refreshing the What's New digest and version.", + "category": "Maintenance", + "mergedAt": "2026-09-06T19:08:20Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2176" + }, + { + "id": "tutorials-ims#2175", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2175, + "title": "fix(channel-atlas): dark-mode theming — legible text + visible filter selection", + "summary": "The Channel Atlas now reads correctly in dark mode, with legible text and clearly highlighted filter selections.", + "category": "Fix", + "mergedAt": "2026-09-06T17:44:52Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2175" + }, + { + "id": "tutorials-ims#2174", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2174, + "title": "fix(channel-atlas): recover from double-encoded inline payload (blank Atlas)", + "summary": "Fixed a bug that left the Channel Atlas showing a blank page, so the channel ecosystem graph now loads reliably.", + "category": "Fix", + "mergedAt": "2026-09-06T16:53:00Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2174" + }, + { + "id": "tutorials-ims#2173", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2173, + "title": "fix(channels): hub UX — crosswalk 404, media-diet layout, health enrichment", + "summary": "Polished the Channels hub — removed a dead link, gave the Build-Your-Media-Diet page a clearer two-column layout with a live match count, and made the Ecosystem Health view easier to read at a glance.", + "category": "Fix", + "mergedAt": "2026-09-06T15:25:17Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2173" + }, + { + "id": "tutorials-ims#2172", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2172, + "title": "fix(ci): mark pre-canonicalized slug lookup in build-channel-detail", + "summary": "Internal build-guard adjustment for the channels publishing pipeline.", + "category": "Maintenance", + "mergedAt": "2026-09-06T15:25:02Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2172" + }, + { + "id": "tutorials-ims#2171", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2171, + "title": "fix(channels): chunk ChannelTopicMap AI seed to avoid token-cap zero-result", + "summary": "Channels are now reliably tagged with the topics they cover, so topic pages surface the right related channels.", + "category": "Fix", + "mergedAt": "2026-09-06T14:44:43Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2171" + }, + { + "id": "tutorials-ims#2170", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2170, + "title": "fix(ci): allowlist GET /content/channel-detail/:slug (route-drift guard)", + "summary": "Internal route-parity guard update for the channels content service.", + "category": "Maintenance", + "mergedAt": "2026-09-06T13:46:35Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2170" + }, + { + "id": "tutorials-ims#2169", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2169, + "title": "feat(channels): Phase 3 — Channel Atlas SPA (/channels/atlas/)", + "summary": "New interactive Channel Atlas maps the SAP developer channel ecosystem as a visual graph you can explore and filter by owner type.", + "category": "Feature", + "mergedAt": "2026-09-06T12:04:55Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2169" + }, + { + "id": "tutorials-ims#2168", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2168, + "title": "feat(channels-hub): Phase 2 — crosswalk Direction 2, media-diet signed-in + export", + "summary": "Added per-channel detail pages, a Learn-to-Follow crosswalk between topics and channels, and the ability to build and export a personalized media diet of channels.", + "category": "Feature", + "mergedAt": "2026-09-06T11:59:20Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2168" + }, + { + "id": "tutorials-ims#2167", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2167, + "title": "fix(channels): health page baked empty stats — data-key filename mismatch", + "summary": "Fixed the Channels Ecosystem Health page that was showing zero channels; it now displays the real totals.", + "category": "Fix", + "mergedAt": "2026-09-06T00:40:48Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2167" + }, + { + "id": "tutorials-ims#2166", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2166, + "title": "feat(channels): Channels Hub Phase 1 — hub band + ecosystem-health + media-diet", + "summary": "Turned the Channels page into a hub with an Ecosystem Health view and a Build-Your-Media-Diet tool for discovering channels by focus area.", + "category": "Feature", + "mergedAt": "2026-09-05T22:37:58Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2166" + }, + { + "id": "tutorials-ims#2165", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2165, + "title": "feat(channels): Phase 0 foundation — slug+feedUrl schema, migration, ingest", + "summary": "Behind-the-scenes foundation for the Channels hub, adding stable channel permalinks and feed links.", + "category": "Maintenance", + "mergedAt": "2026-09-05T21:01:10Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2165" + }, + { + "id": "tutorials-ims#2164", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2164, + "title": "fix(admin-ui): restore FE list→object navigation in headless shell (unblocks Channels Edit)", + "summary": "Fixed the admin console so clicking a list row opens its detail page for editing across the Channels and other management screens.", + "category": "Fix", + "mergedAt": "2026-09-05T18:03:50Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2164" + }, + { + "id": "tutorials-ims#2163", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2163, + "title": "fix(admin): enable Edit — Channels list rows now navigate to object page", + "summary": "Enabled editing of Channels, Channel Collections, and Channel Topic Maps in the admin console by wiring list rows to their detail pages.", + "category": "Fix", + "mergedAt": "2026-09-05T16:41:30Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2163" + }, + { + "id": "tutorials-ims#2162", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2162, + "title": "fix(nav): remember open folder, Tutorial Navigator first, fix palette + channels", + "summary": "Navigation improvements — the menu now remembers your open section, the command palette and Channels page are fixed, and Tutorial Navigator is listed first.", + "category": "Fix", + "mergedAt": "2026-09-05T14:25:45Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2162" + }, + { + "id": "tutorials-ims#2161", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2161, + "title": "feat(nav): restore 'About the Knowledge Graph' (/explore/about/) menu item", + "summary": "Restored the 'About the Knowledge Graph' entry in the navigation menu alongside the interactive Explorer.", + "category": "Feature", + "mergedAt": "2026-09-05T12:39:10Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2161" + }, + { + "id": "tutorials-ims#2160", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2160, + "title": "feat(nav+channels): shared nav data + two-level menu, palette wiring, channels admin + suggest-form", + "summary": "Unified the top navigation and command palette from a single source so Channels, Topics, Browse, What's New, and more appear consistently in a cleaner two-level menu.", + "category": "Feature", + "mergedAt": "2026-09-05T12:29:36Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2160" + }, + { + "id": "tutorials-ims#2159", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2159, + "title": "fix(channels): make seed runnable + widen platform (unblocks DEV channel data load)", + "summary": "Internal reliability fixes to the channels data-loading pipeline so the full channel dataset loads cleanly.", + "category": "Maintenance", + "mergedAt": "2026-09-05T08:20:16Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2159" + }, + { + "id": "tutorials-ims#2158", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2158, + "title": "polish(channels): tighten P4 submit-service contract (405 READ + EDIT/REMOVE target guard)", + "summary": "Hardening of the community channel-submission service for more predictable behavior.", + "category": "Maintenance", + "mergedAt": "2026-09-04T23:03:51Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2158" + }, + { + "id": "tutorials-ims#2157", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2157, + "title": "feat(channels): P4 community submission loop", + "summary": "Community members can now suggest adding, editing, or removing channels, with an admin moderation queue to review each submission.", + "category": "Feature", + "mergedAt": "2026-09-04T22:52:55Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2157" + }, + { + "id": "tutorials-ims#2156", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2156, + "title": "fix(#2138): report filter value help + labels, legible survey charts", + "summary": "Report filters for Mission and Group now show proper labels and value help, and the Survey report charts are legible.", + "category": "Fix", + "mergedAt": "2026-09-04T21:49:24Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2156" + }, + { + "id": "tutorials-ims#2155", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2155, + "title": "fix(devtoberfest): unblock promo video (CSP host) + side-by-side layout (#2144)", + "summary": "Fixed the Devtoberfest promo video that was blocked from playing and corrected its side-by-side layout.", + "category": "Fix", + "mergedAt": "2026-09-04T21:30:33Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2155" + }, + { + "id": "tutorials-ims#2154", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2154, + "title": "fix(homepage): Joule purple→pink brand gradient on Devtoberfest banner (#2131)", + "summary": "Updated the homepage Devtoberfest banner to the Joule purple-to-pink brand gradient with accessible contrast.", + "category": "Fix", + "mergedAt": "2026-09-04T21:27:31Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2154" + }, + { + "id": "tutorials-ims#2153", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2153, + "title": "feat(channels): Surface C — related-channels band on /topics/* (P3)", + "summary": "Topic pages now show a 'Related channels' band linking out to relevant SAP developer channels.", + "category": "Feature", + "mergedAt": "2026-09-04T21:00:55Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2153" + }, + { + "id": "tutorials-ims#2152", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2152, + "title": "fix(channels): unbreak unit-tests slug-lookup guard after PR #2151", + "summary": "Internal build-guard fix for the channel collections pipeline.", + "category": "Maintenance", + "mergedAt": "2026-09-04T20:17:55Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2152" + }, + { + "id": "tutorials-ims#2151", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2151, + "title": "feat(channels): P2 — clustering & editorial collections", + "summary": "Added curated editorial collections that group related channels and lead the Channels directory.", + "category": "Feature", + "mergedAt": "2026-09-04T19:37:24Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2151" + }, + { + "id": "tutorials-ims#2150", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2150, + "title": "feat(#2138) standard reports in Admin UI Reporting folder", + "summary": "New standard reports in the admin Reporting folder — Tutorial Engagement, Tutorial Completions, and a Tutorial Survey view — replacing the retired Power BI dashboard.", + "category": "Feature", + "mergedAt": "2026-09-04T19:36:43Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2150" + }, + { + "id": "tutorials-ims#2149", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2149, + "title": "docs(mcp): add Joule Work Desktop MCP connection instructions", + "summary": "Added instructions for connecting to the platform's MCP server from Joule Work Desktop.", + "category": "Docs", + "mergedAt": "2026-09-04T18:56:00Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2149" + }, + { + "id": "tutorials-ims#2148", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2148, + "title": "feat(me): show partial completions in Recent Activity (#2146)", + "summary": "Your Recent Activity on the My Completions page now shows in-progress tutorials so you can pick up where you left off.", + "category": "Feature", + "mergedAt": "2026-09-04T18:23:03Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2148" + }, + { + "id": "tutorials-ims#2147", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2147, + "title": "External channels P1 follow-ups: facets, owner badges, feed hardening", + "summary": "Enhanced the Channels directory with more filters (focus area and status), clearer owner badges, and related links on each channel.", + "category": "Feature", + "mergedAt": "2026-09-04T18:07:22Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2147" + }, + { + "id": "tutorials-ims#2145", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2145, + "title": "feat(devtoberfest): embed promo video in content gap (#2144)", + "summary": "Added the Devtoberfest promo video to the event home page.", + "category": "Feature", + "mergedAt": "2026-09-04T18:06:10Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2145" + }, + { + "id": "tutorials-ims#2143", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2143, + "title": "fix(docs): register channels reference page in sidebar", + "summary": "Registered the External Channels reference page in the documentation sidebar.", + "category": "Docs", + "mergedAt": "2026-09-04T17:53:15Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2143" + }, + { + "id": "tutorials-ims#2142", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2142, + "title": "feat: external SAP channels P1 foundation", + "summary": "Introduced the external SAP channels directory at /channels, bringing hundreds of curated developer channels into the site with search, filters, and admin management.", + "category": "Feature", + "mergedAt": "2026-09-04T17:42:09Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2142" + }, + { + "id": "tutorials-ims#2141", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2141, + "title": "fix(puzzles): sort admin clue lists by number, not grid position (#2140)", + "summary": "Fixed the crossword puzzle builder so Down clues are listed in numeric order.", + "category": "Fix", + "mergedAt": "2026-09-04T15:51:32Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2141" + }, + { + "id": "tutorials-ims#2136", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2136, + "title": "docs(mcp): fix OAuth quickstart to use prod client_id", + "summary": "Corrected the MCP OAuth quickstart to use the production client ID.", + "category": "Docs", + "mergedAt": "2026-09-04T13:27:00Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2136" + }, + { + "id": "tutorials-ims#2137", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2137, + "title": "fix(mcp-oauth): advertise approuter as authorization server (self-issuer)", + "summary": "Fixed the MCP server OAuth sign-in flow so the token exchange completes correctly.", + "category": "Fix", + "mergedAt": "2026-09-04T08:14:40Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2137" + }, + { + "id": "tutorials-ims#2135", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2135, + "title": "feat(events): per-event name, description & logo on event-display + app-space (#2133)", + "summary": "Event display and App Space pages now show each event's real name, description, and logo instead of a hardcoded label.", + "category": "Feature", + "mergedAt": "2026-09-04T07:42:07Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2135" + }, + { + "id": "tutorials-ims#2134", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2134, + "title": "feat(homepage): Devtoberfest banner with live countdown (#2131)", + "summary": "Added a homepage Devtoberfest banner with a live countdown to the event.", + "category": "Feature", + "mergedAt": "2026-09-04T06:40:22Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2134" + }, + { + "id": "tutorials-ims#2132", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2132, + "title": "Update Devtoberfest scavenger hunt clue captions (#2130)", + "summary": "Updated the Devtoberfest scavenger hunt clue captions.", + "category": "Maintenance", + "mergedAt": "2026-09-04T06:17:42Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2132" + }, + { + "id": "tutorials-ims#2129", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2129, + "title": "fix(api-docs): sap-devs CLI install no longer on npm (#2123)", + "summary": "Updated the API Docs page with current install instructions for the sap-devs CLI (Homebrew, Scoop, and GitHub Releases) now that it's no longer on npm.", + "category": "Fix", + "mergedAt": "2026-09-03T18:00:37Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2129" + }, + { + "id": "tutorials-ims#2128", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2128, + "title": "fix(tutorials): support no-step + commented-out-step validation tutorials (#2127)", + "summary": "Fixed rendering of Devtoberfest validation tutorials that intentionally ship with no steps or commented-out steps yet.", + "category": "Fix", + "mergedAt": "2026-09-03T17:40:43Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2128" + }, + { + "id": "tutorials-ims#2126", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2126, + "title": "fix(sitemap): guard catalog-only rebuilds from wiping /tutorials/ URLs", + "summary": "Fixed an issue where catalog-only content rebuilds could strip tutorial URLs from the sitemap, restoring full search-crawler coverage.", + "category": "Fix", + "mergedAt": "2026-09-03T15:15:59Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2126" + }, + { + "id": "tutorials-ims#2122", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2122, + "title": "promote: rebuild-content phantom-step fix (#2121) to main", + "summary": "Promoted a content-rebuild pipeline fix to production.", + "category": "Maintenance", + "mergedAt": "2026-09-03T02:49:28Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2122" + }, + { + "id": "tutorials-ims#2121", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2121, + "title": "fix(rebuild-content): drop phantom 'Fetch topics gallery' step (breaks all full rebuilds)", + "summary": "Fixed the content rebuild pipeline that was failing on a missing step, restoring full content publishes.", + "category": "Maintenance", + "mergedAt": "2026-09-03T02:47:30Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2121" + }, + { + "id": "tutorials-ims#2119", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2119, + "title": "Release 1.21.0 → PROD", + "summary": "Release 1.21.0 promotion to production.", + "category": "Maintenance", + "mergedAt": "2026-09-03T01:33:17Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2119" + }, + { + "id": "tutorials-ims#2118", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2118, + "title": "chore(release): bump MTA 1.20.1 → 1.21.0 + refresh What's New digest", + "summary": "Version bump and What's New digest refresh for the 1.21.0 release.", + "category": "Maintenance", + "mergedAt": "2026-09-03T01:31:30Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2118" + }, + { + "id": "tutorials-ims#2117", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2117, + "title": "fix(topics): nest /topics/ tree by parsing real titlePath separators", + "summary": "The Topics browser now nests into proper drill-in folders instead of showing every tag as a single flat entry.", + "category": "Fix", + "mergedAt": "2026-09-02T16:47:28Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2117" + }, + { + "id": "tutorials-ims#2116", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2116, + "title": "feat(devtoberfest): Live vs Prerecorded session tag + format filter (#2110)", + "summary": "Devtoberfest sessions now carry a Live vs Prerecorded badge, with a new Format filter across the grid, calendar, and schedule views.", + "category": "Feature", + "mergedAt": "2026-09-02T16:30:44Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2116" + }, + { + "id": "tutorials-ims#2115", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2115, + "title": "fix(tutorial): make Overview tags clickable (#2112)", + "summary": "Tags in a tutorial's Overview section are now clickable links to browse related tutorials, matching the header chips.", + "category": "Fix", + "mergedAt": "2026-09-02T16:26:08Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2115" + }, + { + "id": "tutorials-ims#2114", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2114, + "title": "fix(admin): stop prompting non-SuperAdmin for publish rights on description edits (#2111)", + "summary": "Authors and admins can again save a group's description or title edit without hitting a false 'SuperAdmin only' publish-rights error.", + "category": "Fix", + "mergedAt": "2026-09-02T16:09:53Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2114" + }, + { + "id": "tutorials-ims#2109", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2109, + "title": "feat(cross-container): ADVOCATE_VALUE_HELP_V1 view for planner Session.host (#2102)", + "summary": "The active SAP Developer Advocate roster is now shared as an authoritative value-help source, letting the Devtoberfest planner pick session hosts from the real list.", + "category": "Feature", + "mergedAt": "2026-09-02T12:15:09Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2109" + }, + { + "id": "tutorials-ims#2108", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2108, + "title": "fix(ci): allowlist /content/topics* in srv-qa route-drift guard", + "summary": "Build-guard update so the new Topics content routes pass continuous integration.", + "category": "Maintenance", + "mergedAt": "2026-09-02T11:41:19Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2108" + }, + { + "id": "tutorials-ims#2107", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2107, + "title": "feat(devtoberfest): schedule-consistency check across planner + external assets (#2103)", + "summary": "A new admin check flags Devtoberfest sessions whose planner time disagrees with their YouTube livestream or community-event schedule.", + "category": "Feature", + "mergedAt": "2026-09-02T11:23:34Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2107" + }, + { + "id": "tutorials-ims#2106", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2106, + "title": "fix(topics): URL-safe topic slugs so /topics/ serves (#2099 follow-up)", + "summary": "Topic detail pages now resolve correctly — topic slugs are made URL-safe so /topics/ no longer returns 404.", + "category": "Fix", + "mergedAt": "2026-09-02T11:09:44Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2106" + }, + { + "id": "tutorials-ims#2100", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2100, + "title": "fix(approuter): /search 301 via middleware — unblock DEV approuter boot", + "summary": "Restored the site frontend after a bad redirect setting; the /search shortcut now redirects reliably.", + "category": "Fix", + "mergedAt": "2026-09-02T00:43:35Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2100" + }, + { + "id": "tutorials-ims#2099", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2099, + "title": "feat(topics): tag-tree topics — CAP-served index + detail, concept enrichment, search fix", + "summary": "Rebuilt the Topics area with a browsable tag tree, per-topic detail pages enriched with related concepts, and a smarter search redirect.", + "category": "Feature", + "mergedAt": "2026-09-01T22:02:12Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2099" + }, + { + "id": "tutorials-ims#2098", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2098, + "title": "fix(#2097): scope QA notify workflow to default branch", + "summary": "The QA content-rebuild automation no longer misfires when work is pushed to non-default branches.", + "category": "Maintenance", + "mergedAt": "2026-09-01T20:10:29Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2098" + }, + { + "id": "tutorials-ims#2096", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2096, + "title": "feat(admin-ui): make Tutorials OP facets readable (concepts/community/images)", + "summary": "The admin Tutorials page now shows readable concept names, community descriptions, and image links instead of raw IDs.", + "category": "Feature", + "mergedAt": "2026-09-01T18:39:29Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2096" + }, + { + "id": "tutorials-ims#2095", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2095, + "title": "fix(categories): resolve namespaced entities for HANA backfill + seed classifier descriptions", + "summary": "Fixed the Categories facet staying empty by resolving entities correctly against SAP HANA and seeding classifier descriptions.", + "category": "Fix", + "mergedAt": "2026-09-01T18:39:11Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2095" + }, + { + "id": "tutorials-ims#2093", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2093, + "title": "fix(publish): gate category self-heal to avoid OOM on bulk publishes", + "summary": "Full content publishes no longer risk exhausting backend memory while auto-categorizing tutorials.", + "category": "Fix", + "mergedAt": "2026-09-01T15:15:27Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2093" + }, + { + "id": "tutorials-ims#2092", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2092, + "title": "fix(srv-qa): lazy-import category-classifier-llm to unbreak srv-qa boot", + "summary": "Deploy-stability fix so the QA content container boots reliably.", + "category": "Maintenance", + "mergedAt": "2026-08-31T21:29:34Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2092" + }, + { + "id": "tutorials-ims#2091", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2091, + "title": "fix(ci): allowlist srv-only publish-contributors + publish-validation-rules routes", + "summary": "Build-guard update covering the new contributor and validation-rule publish routes.", + "category": "Maintenance", + "mergedAt": "2026-08-31T21:29:22Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2091" + }, + { + "id": "tutorials-ims#2090", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2090, + "title": "Admin OP Phase 3: Knowledge-Graph facet", + "summary": "The admin Tutorials page gains a Knowledge-Graph facet surfacing the graph relationships computed nightly.", + "category": "Feature", + "mergedAt": "2026-08-31T20:30:02Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2090" + }, + { + "id": "tutorials-ims#2089", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2089, + "title": "Admin OP Phase 2: Media facet + Freshness report header", + "summary": "The admin Tutorials page adds a Media facet with object-store visibility plus a freshness run-history header.", + "category": "Feature", + "mergedAt": "2026-08-31T19:49:05Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2089" + }, + { + "id": "tutorials-ims#2088", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2088, + "title": "Admin OP Phase 1: fix empty Categories / Contributors / Validation facets", + "summary": "Fixed three empty facets — Categories, Contributors, and Validation — on the admin Tutorials page.", + "category": "Fix", + "mergedAt": "2026-08-31T19:08:22Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2088" + }, + { + "id": "tutorials-ims#2087", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2087, + "title": "fix(docs): unbreak VitePress build — backtick bare in gotchas.md", + "summary": "Fixed the developer documentation site build.", + "category": "Docs", + "mergedAt": "2026-08-31T15:29:27Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2087" + }, + { + "id": "tutorials-ims#2086", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2086, + "title": "docs: slim CLAUDE.md Top Gotchas (relocate detail to gotchas.md)", + "summary": "Streamlined the internal contributor guidance for faster, leaner tooling sessions.", + "category": "Maintenance", + "mergedAt": "2026-08-31T15:19:34Z", + "week": "2026-W36", + "weekStart": "2026-08-31", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2086" + }, + { + "id": "tutorials-ims#2084", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2084, + "title": "chore: sync main into DEV (reconcile hotfixes #2081 + #2083)", + "summary": "Reconciled two production hotfixes back into the development branch to keep branches in sync.", + "category": "Maintenance", + "mergedAt": "2026-08-29T06:56:28Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2084" + }, + { + "id": "tutorials-ims#2083", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2083, + "title": "fix(admin): Feature Flags Enable/Disable buttons (Unknown action import)", + "summary": "The Enable/Disable buttons on the admin Feature Flags page work again.", + "category": "Fix", + "mergedAt": "2026-08-29T06:45:56Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2083" + }, + { + "id": "tutorials-ims#2081", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2081, + "title": "fix(rebuild-content): fetch topic-clusters/featured-topics/topics-gallery/tags so homepage bands bake fresh", + "summary": "The homepage Explore 'topic clusters' band now shows fresh, curated topic data instead of falling back to a tutorials-only list.", + "category": "Fix", + "mergedAt": "2026-08-28T23:23:27Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2081" + }, + { + "id": "tutorials-ims#2080", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2080, + "title": "Release 1.20.1 → PROD", + "summary": "Shipped release 1.20.1 to production.", + "category": "Maintenance", + "mergedAt": "2026-08-28T21:07:50Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2080" + }, + { + "id": "tutorials-ims#2078", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2078, + "title": "chore(release): bump MTA 1.20.0 → 1.20.1 + refresh What's New digest", + "summary": "Release 1.20.1 preparation and What's New digest refresh.", + "category": "Maintenance", + "mergedAt": "2026-08-28T20:52:20Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2078" + }, + { + "id": "tutorials-ims#2079", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2079, + "title": "fix(homepage): boot-seed HomepageShelves; retire seed CSV + manual seed:thirdparty", + "summary": "Curated homepage shelf links (Prior Labs, Dremio, Hugging Face, and others) no longer disappear after a deployment.", + "category": "Fix", + "mergedAt": "2026-08-28T20:52:09Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2079" + }, + { + "id": "tutorials-ims#2076", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2076, + "title": "docs: register akamai-well-known-forward in sidebar (fix docs:build)", + "summary": "Corrected the developer-docs sidebar so a new operations runbook page publishes correctly.", + "category": "Docs", + "mergedAt": "2026-08-28T17:58:23Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2076" + }, + { + "id": "tutorials-ims#2075", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2075, + "title": "feat(approuter): complete .well-known MCP discovery surface (openid-config, mcp.json, WWW-Authenticate pointer)", + "summary": "External MCP clients such as the Claude and ChatGPT connectors can now auto-discover the platform's OAuth endpoints through a complete set of .well-known discovery documents.", + "category": "Feature", + "mergedAt": "2026-08-28T17:47:32Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2075" + }, + { + "id": "tutorials-ims#2074", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2074, + "title": "fix(freshness): calibrate prompt by severity so Check Freshness surfaces findings again", + "summary": "The admin Check Freshness tool once again surfaces potentially outdated API references instead of returning an empty report.", + "category": "Fix", + "mergedAt": "2026-08-28T16:15:34Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2074" + }, + { + "id": "tutorials-ims#2073", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2073, + "title": "fix(feature-flags): don't connect to db before model is loaded (fixes #2066 unit regression + latent boot bug)", + "summary": "Fixed a startup issue in the feature-flag system that could cause service errors before the data model finished loading.", + "category": "Fix", + "mergedAt": "2026-08-28T16:00:02Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2073" + }, + { + "id": "tutorials-ims#2072", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2072, + "title": "fix(me): AllCompletions/RecentActivity sign-in gate must check /auth/user JSON, not resp.ok", + "summary": "My Completions and Recent Activity now prompt you to sign in when your session has expired, instead of silently failing to load.", + "category": "Fix", + "mergedAt": "2026-08-28T14:41:55Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2072" + }, + { + "id": "tutorials-ims#2071", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2071, + "title": "fix(tokens): /me/tokens sign-in gate must check /auth/user JSON, not resp.ok", + "summary": "The personal access tokens page now shows a sign-in prompt when your session lapses, rather than a generic load error.", + "category": "Fix", + "mergedAt": "2026-08-28T14:34:04Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2071" + }, + { + "id": "tutorials-ims#2070", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2070, + "title": "fix(test): repair unit-suite fallout from flag→DB migration (WIP)", + "summary": "Internal test-suite repairs following the feature-flag configuration migration.", + "category": "Maintenance", + "mergedAt": "2026-08-28T13:47:42Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2070" + }, + { + "id": "tutorials-ims#2069", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2069, + "title": "fix(qa): slug-scope QA content publish + resilient commit + lock release", + "summary": "Made QA content republishing more reliable by scoping it to changed tutorials and hardening the publish step.", + "category": "Fix", + "mergedAt": "2026-08-28T13:47:08Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2069" + }, + { + "id": "tutorials-ims#2068", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2068, + "title": "fix(content): skip Option-B delta flag boot-seed under vitest", + "summary": "Test-environment fix so content fast-path defaults do not leak into the automated test suite.", + "category": "Maintenance", + "mergedAt": "2026-08-28T12:46:37Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2068" + }, + { + "id": "tutorials-ims#2066", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2066, + "title": "feat(feature-flags): migrate remaining 14 env flags to DB config (#2060)", + "summary": "Moved the remaining runtime feature flags to database-backed configuration so they are editable in admin and survive deployments.", + "category": "Maintenance", + "mergedAt": "2026-08-28T12:06:08Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2066" + }, + { + "id": "tutorials-ims#2064", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2064, + "title": "feat(content): default Option-B fast-path flags ON (seed ImsConfig if absent)", + "summary": "Content fast-path optimizations now default on and persist across deployments, keeping tutorial content updates fast.", + "category": "Performance", + "mergedAt": "2026-08-28T10:38:23Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2064" + }, + { + "id": "tutorials-ims#2062", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2062, + "title": "ci(rebuild-qa): add force-publish input to re-seed Option B ContentCurrent (QA)", + "summary": "Added a force-republish option to the QA content rebuild workflow.", + "category": "Maintenance", + "mergedAt": "2026-08-28T10:28:07Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2062" + }, + { + "id": "tutorials-ims#2061", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2061, + "title": "fix(content): move Option-B fast-path flags from env vars to DB config (ImsConfig)", + "summary": "Moved content fast-path settings to durable database configuration so they are no longer reset on deployment.", + "category": "Maintenance", + "mergedAt": "2026-08-28T10:27:42Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2061" + }, + { + "id": "tutorials-ims#2058", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2058, + "title": "Release 1.20.0 → PROD", + "summary": "Promoted the 1.20.0 release to production.", + "category": "Maintenance", + "mergedAt": "2026-08-27T20:41:46Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2058" + }, + { + "id": "tutorials-ims#2059", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2059, + "title": "chore: sync main into DEV (reconcile for 1.20.0 release)", + "summary": "Release housekeeping to keep the DEV and main branches in sync ahead of a release.", + "category": "Maintenance", + "mergedAt": "2026-08-27T20:41:22Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2059" + }, + { + "id": "tutorials-ims#2057", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2057, + "title": "perf(qa): reuse cached non-target content on QA slug-targeted rebuilds despite feed drift", + "summary": "QA single-tutorial content rebuilds are much faster now that untouched tutorials reuse cached content.", + "category": "Performance", + "mergedAt": "2026-08-27T19:30:20Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2057" + }, + { + "id": "tutorials-ims#2056", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2056, + "title": "fix(parsers): comment-aware section/intro extraction", + "summary": "Tutorials that disable a section with an HTML comment now render all their steps correctly, with no stray characters left on the page.", + "category": "Fix", + "mergedAt": "2026-08-27T19:12:29Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2056" + }, + { + "id": "tutorials-ims#2055", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2055, + "title": "chore(release): bump MTA 1.19.0 → 1.20.0 + refresh What's New digest", + "summary": "Release version bump and What's New digest refresh.", + "category": "Maintenance", + "mergedAt": "2026-08-27T18:10:53Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2055" + }, + { + "id": "tutorials-ims#2054", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2054, + "title": "fix(admin): readable Devtoberfest Signups report — week axis, labeled total, breakdowns (#2047)", + "summary": "Polished the Devtoberfest Signups report by hiding internal week indices, labeling the total, and correcting the week axis.", + "category": "Fix", + "mergedAt": "2026-08-27T17:47:13Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2054" + }, + { + "id": "tutorials-ims#2053", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2053, + "title": "fix(build/tags): emit mdFormat (category>value) slugs instead of display names", + "summary": "Fixed the tag feed to emit canonical category-value slugs instead of display names so CI tag validation works.", + "category": "Fix", + "mergedAt": "2026-08-27T17:23:59Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2053" + }, + { + "id": "tutorials-ims#2052", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2052, + "title": "feat(devtoberfest): rename \"Hit the Cat\" → \"Tag the Cat\" (#2042)", + "summary": "Renamed the Devtoberfest mini-game from 'Hit the Cat' to the friendlier 'Tag the Cat'.", + "category": "Feature", + "mergedAt": "2026-08-27T17:06:20Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2052" + }, + { + "id": "tutorials-ims#2051", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2051, + "title": "feat: add /build/tags tag-taxonomy feed for CI frontmatter validation", + "summary": "Added a build-time tag-taxonomy feed so downstream CI can validate tutorial frontmatter tags against the canonical list.", + "category": "Feature", + "mergedAt": "2026-08-27T14:17:59Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2051" + }, + { + "id": "tutorials-ims#2049", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2049, + "title": "feat(devtoberfest): Hit the Cat mini-game + gameboard task-type/bonus fixes (#2042)", + "summary": "Added a hidden Chrome-dino-style cat mini-game to the Devtoberfest home page that awards gameboard points to signed-in players.", + "category": "Feature", + "mergedAt": "2026-08-27T14:08:29Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2049" + }, + { + "id": "tutorials-ims#2050", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2050, + "title": "Devtoberfest Signups report: readable week axis, total KPI, region breakdown (#2047)", + "summary": "Made the Devtoberfest Signups admin report readable with a real week-date axis, a labeled total, and region/edition/role breakdowns.", + "category": "Feature", + "mergedAt": "2026-08-27T14:07:25Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2050" + }, + { + "id": "tutorials-ims#2048", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2048, + "title": "fix(devtoberfest-calendar): month grid fits at normal resolution (#2046)", + "summary": "Fixed the Devtoberfest month calendar overflowing the screen at normal resolution.", + "category": "Fix", + "mergedAt": "2026-08-27T13:57:08Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2048" + }, + { + "id": "tutorials-ims#2044", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2044, + "title": "Turn generated-content fast path ON by default (cherry-pick to main)", + "summary": "Cherry-picked the rebuild fast-path default to production ahead of the release train.", + "category": "Maintenance", + "mergedAt": "2026-08-26T22:19:47Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2044" + }, + { + "id": "tutorials-ims#2039", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2039, + "title": "Turn generated-content fast path ON by default (Workstream C follow-up)", + "summary": "Made the faster generated-content rebuild path the default, cutting warm rebuilds from about 56 seconds to 11.", + "category": "Performance", + "mergedAt": "2026-08-26T21:58:36Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2039" + }, + { + "id": "tutorials-ims#2043", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2043, + "title": "feat(admin-shell): page-search command palette (#2041)", + "summary": "Added a Ctrl/Cmd+K command palette to the admin console for jumping to any of its 50-plus pages.", + "category": "Feature", + "mergedAt": "2026-08-26T21:54:46Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2043" + }, + { + "id": "tutorials-ims#2038", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2038, + "title": "Release 1.19.0 → PROD (Option B content migration + bundled features)", + "summary": "Production release of the new content-model migration and bundled features, shipped safely behind flags.", + "category": "Maintenance", + "mergedAt": "2026-08-25T21:31:23Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2038" + }, + { + "id": "tutorials-ims#2037", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2037, + "title": "chore(release): bump MTA version to 1.19.0 for PROD release", + "summary": "Version bump for the production release carrying the content-model migration.", + "category": "Maintenance", + "mergedAt": "2026-08-25T21:10:14Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2037" + }, + { + "id": "tutorials-ims#2036", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2036, + "title": "fix(guard): mark Option B ContentCurrent slug lookups (fixes check-slug-lookups CI failure)", + "summary": "Fixed a slug-lookup build guard for the new content read paths.", + "category": "Maintenance", + "mergedAt": "2026-08-25T19:08:48Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2036" + }, + { + "id": "tutorials-ims#2033", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2033, + "title": "docs(CLAUDE): Option B content-model gotcha + rollout order", + "summary": "Documented the new content model, its feature flags, and the rollout order.", + "category": "Docs", + "mergedAt": "2026-08-25T18:25:49Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2033" + }, + { + "id": "tutorials-ims#2035", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2035, + "title": "fix(deploy): build + copy display-app into approuter static (/display-app/ 404)", + "summary": "Fixed /display-app/ returning 404 by building and shipping it alongside the approuter.", + "category": "Fix", + "mergedAt": "2026-08-25T18:25:26Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2035" + }, + { + "id": "tutorials-ims#2032", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2032, + "title": "feat: Option B reader sweep + carry-forward removal + rollback replay (Workstream D 6.2-6.5, 8.4)", + "summary": "Completed the new content model migration: all readers use the mutable current table and single-tutorial publishes become proportional to what changed, cutting publish time from minutes to under a second.", + "category": "Feature", + "mergedAt": "2026-08-25T16:03:37Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2032" + }, + { + "id": "tutorials-ims#2031", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2031, + "title": "feat(devtoberfest): deep-link URLs for sessions grid filters/search (#2030)", + "summary": "The Devtoberfest sessions page now supports shareable deep-link URLs for search, filters, and an open session panel.", + "category": "Feature", + "mergedAt": "2026-08-25T14:53:12Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2031" + }, + { + "id": "tutorials-ims#2028", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2028, + "title": "feat(serve): Option B read cutover + rollback replay (Workstream D, flag-gated, draft)", + "summary": "Flag-gated read cutover to the new content model, with rollback that replays history.", + "category": "Feature", + "mergedAt": "2026-08-25T12:59:08Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2028" + }, + { + "id": "tutorials-ims#2025", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2025, + "title": "fix(notify): dispatch source-repo rebuilds on both master and main", + "summary": "Fixed change notifications not firing for source repositories that default to the master branch, which had been quietly leaving content stale.", + "category": "Fix", + "mergedAt": "2026-08-25T11:52:08Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2025" + }, + { + "id": "tutorials-ims#2024", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2024, + "title": "fix(#2023): stop Hugo coercing yes/no quiz options to true/false", + "summary": "Fixed yes/no quiz options being silently turned into true/false by the frontmatter serializer.", + "category": "Fix", + "mergedAt": "2026-08-25T11:25:07Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2024" + }, + { + "id": "tutorials-ims#2021", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2021, + "title": "feat(db): Option B schema — ContentCurrent + ContentHistory (Workstream D, draft)", + "summary": "Added the new content data model (a mutable current table plus append-only history) as the foundation for much faster publishing.", + "category": "Feature", + "mergedAt": "2026-08-25T10:30:09Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2021" + }, + { + "id": "tutorials-ims#2020", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2020, + "title": "feat(rebuild): generated-content fast path — Workstream C wiring (flag-gated, draft)", + "summary": "Wired the rebuild fast path so single-tutorial rebuilds reuse cached content for the thousands of unchanged tutorials.", + "category": "Feature", + "mergedAt": "2026-08-25T10:29:55Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2020" + }, + { + "id": "tutorials-ims#2019", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2019, + "title": "feat(rebuild): generated-content cache — Workstream C (foundation, draft)", + "summary": "Foundation helpers for a fast rebuild path that reuses cached generated content.", + "category": "Feature", + "mergedAt": "2026-08-25T01:15:51Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2019" + }, + { + "id": "tutorials-ims#2018", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2018, + "title": "fix(fetch): unmask GraphQL discovery errors + loud REST fallback", + "summary": "Fixed a silent fallback to a slow tutorial-discovery path by surfacing GraphQL errors loudly.", + "category": "Fix", + "mergedAt": "2026-08-24T23:51:54Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2018" + }, + { + "id": "tutorials-ims#2017", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2017, + "title": "Design: slug-targeted delta rebuild (O(changed) end-to-end)", + "summary": "Design proposal to make single-tutorial rebuilds scale with the changed content instead of the whole corpus.", + "category": "Docs", + "mergedAt": "2026-08-24T23:44:33Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2017" + }, + { + "id": "tutorials-ims#2016", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2016, + "title": "perf(rebuild): cache node_modules to skip ~48s npm ci on unchanged lockfiles", + "summary": "Content rebuilds skip roughly 48 seconds of dependency install by caching node_modules when lockfiles are unchanged.", + "category": "Performance", + "mergedAt": "2026-08-24T23:44:21Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2016" + }, + { + "id": "tutorials-ims#2012", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2012, + "title": "freshness: feed tutorial context + SAP-aware rules to the scan", + "summary": "Improved the freshness scanner's advice by feeding it surrounding tutorial prose, frontmatter, and SAP/CAP-aware rules.", + "category": "Fix", + "mergedAt": "2026-08-24T21:03:46Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2012" + }, + { + "id": "tutorials-ims#2014", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2014, + "title": "Release 1.18.3 → main", + "summary": "Production release promoting DEV changes.", + "category": "Maintenance", + "mergedAt": "2026-08-24T20:34:03Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2014" + }, + { + "id": "tutorials-ims#2013", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2013, + "title": "chore(release): bump MTA version to 1.18.3", + "summary": "Version bump ahead of a production release.", + "category": "Maintenance", + "mergedAt": "2026-08-24T20:32:04Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2013" + }, + { + "id": "tutorials-ims#2011", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2011, + "title": "fix(rebuild): stop slug-targeted rebuilds from wiping verb/shelf pages", + "summary": "Fixed single-tutorial rebuilds from wiping the shelves on hub pages like /build/ and /learn/.", + "category": "Fix", + "mergedAt": "2026-08-24T19:07:16Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2011" + }, + { + "id": "tutorials-ims#2010", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2010, + "title": "docs: legacy Semaphore→IMS/AEM tag import process", + "summary": "Documented the legacy Semaphore-to-IMS/AEM tag import process for authors.", + "category": "Docs", + "mergedAt": "2026-08-24T17:54:11Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2010" + }, + { + "id": "tutorials-ims#2009", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2009, + "title": "feat(devtoberfest): deep-link URLs for calendar sessions/dates (#2006)", + "summary": "The Devtoberfest calendar now has shareable, restorable deep-link URLs for sessions, dates, ranges, and filters.", + "category": "Feature", + "mergedAt": "2026-08-24T14:27:21Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2009" + }, + { + "id": "tutorials-ims#2008", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2008, + "title": "feat(devtoberfest): show speakers on calendar session items (#2007)", + "summary": "Speaker names now appear directly on Devtoberfest calendar session items, not just in the detail popup.", + "category": "Feature", + "mergedAt": "2026-08-24T14:15:36Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2008" + }, + { + "id": "tutorials-ims#2003", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2003, + "title": "feat(devtoberfest): Markdown support in session abstract (calendar item details)", + "summary": "Devtoberfest session details now render Markdown formatting in the session abstract.", + "category": "Feature", + "mergedAt": "2026-08-24T11:25:40Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2003" + }, + { + "id": "tutorials-ims#2002", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2002, + "title": "fix(notifications): digest emails render 'N tutorials', not 'N s'", + "summary": "Fixed author-reminder digest emails that read 'N s' instead of 'N tutorials'.", + "category": "Fix", + "mergedAt": "2026-08-24T11:25:00Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2002" + }, + { + "id": "tutorials-ims#2001", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 2001, + "title": "fix(freshness): pass resolved embedding model to embed() (fixes ScheduledJobFailed)", + "summary": "Fixed a scheduled-job failure in the tutorial freshness embedding pipeline.", + "category": "Fix", + "mergedAt": "2026-08-24T11:24:36Z", + "week": "2026-W35", + "weekStart": "2026-08-24", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/2001" + }, + { + "id": "tutorials-ims#1997", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1997, + "title": "Release 1.18.2 → main (PROD promotion)", + "summary": "Production release promoting DEV changes.", + "category": "Maintenance", + "mergedAt": "2026-08-23T19:09:46Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1997" + }, + { + "id": "tutorials-ims#1996", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1996, + "title": "chore(release): bump MTA version to 1.18.2 for PROD release", + "summary": "Version bump ahead of a production release.", + "category": "Maintenance", + "mergedAt": "2026-08-23T19:08:46Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1996" + }, + { + "id": "tutorials-ims#1995", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1995, + "title": "a11y: neutralize animations in scan + ratchet baseline to 0 critical/serious", + "summary": "Made the accessibility scan measure the settled page state and re-baselined to zero critical and serious issues.", + "category": "Maintenance", + "mergedAt": "2026-08-23T17:55:26Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1995" + }, + { + "id": "tutorials-ims#1994", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1994, + "title": "a11y: fix tutorial duplicate-banner regression + lengthen scan settle", + "summary": "Accessibility fix for a duplicate banner landmark on tutorial pages.", + "category": "Fix", + "mergedAt": "2026-08-23T16:46:07Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1994" + }, + { + "id": "tutorials-ims#1993", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1993, + "title": "feat(selfie): add 13 advocate frames + thumbnails", + "summary": "Added 13 new advocate cut-out frames to the Devtoberfest selfie photo booth.", + "category": "Feature", + "mergedAt": "2026-08-23T15:31:55Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1993" + }, + { + "id": "tutorials-ims#1992", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1992, + "title": "fix(prefs): guard size/width segmented-button emit on mount (#1980)", + "summary": "Minor fix so tutorial-preference controls don't redundantly re-apply their value on load.", + "category": "Fix", + "mergedAt": "2026-08-23T14:50:02Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1992" + }, + { + "id": "tutorials-ims#1991", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1991, + "title": "fix(tutorial-prefs): hand gestures navigate steps + calibrated head-pitch eye scroll (up/down)", + "summary": "Fixed the experimental camera controls so hand swipes move between steps and head-pitch scrolls both up and down.", + "category": "Fix", + "mergedAt": "2026-08-23T14:28:35Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1991" + }, + { + "id": "tutorials-ims#1990", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1990, + "title": "feat(prefs): add Super wide reading-width option (#1966)", + "summary": "Added a Super-wide reading-width option to tutorial preferences for people who want full-viewport content.", + "category": "Feature", + "mergedAt": "2026-08-23T14:17:11Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1990" + }, + { + "id": "tutorials-ims#1989", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1989, + "title": "a11y: duplicate-main + browse banner + figcaption contrast + concepts landmark", + "summary": "Accessibility fixes for duplicate page landmarks and caption contrast across the browse and concepts pages.", + "category": "Fix", + "mergedAt": "2026-08-23T14:00:07Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1989" + }, + { + "id": "tutorials-ims#1988", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1988, + "title": "a11y: ratchet baseline down after advocates/nav-progress fixes deployed", + "summary": "Tightened the accessibility baseline after the landmark fixes were deployed.", + "category": "Maintenance", + "mergedAt": "2026-08-23T13:59:57Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1988" + }, + { + "id": "tutorials-ims#1986", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1986, + "title": "feat(freshness): AI tutorial freshness detector (v1, reviewer-assist)", + "summary": "New AI-assisted freshness detector that flags stale code and dependencies in tutorials to authors, grounded against real SAP documentation.", + "category": "Feature", + "mergedAt": "2026-08-22T22:03:57Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1986" + }, + { + "id": "tutorials-ims#1985", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1985, + "title": "Camera input: accuracy fixes + per-user calibration (eye + hand)", + "summary": "Improved the accuracy of the experimental webcam eye-tracking and hand-gesture tutorial navigation, adding per-user calibration.", + "category": "Fix", + "mergedAt": "2026-08-22T21:36:22Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1985" + }, + { + "id": "tutorials-ims#1984", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1984, + "title": "a11y: fix advocate flip card (serious) + video-band redundant alt", + "summary": "Accessibility fixes to the developer-advocate flip cards and homepage video captions, including a latent keyboard-focus bug.", + "category": "Fix", + "mergedAt": "2026-08-22T17:50:28Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1984" + }, + { + "id": "tutorials-ims#1983", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1983, + "title": "a11y: exclude TrustArc banner from scan + make nav-progress decorative", + "summary": "Accessibility: excluded a third-party consent banner from the scan and marked the top loading bar as decorative.", + "category": "Fix", + "mergedAt": "2026-08-22T17:37:23Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1983" + }, + { + "id": "tutorials-ims#1982", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1982, + "title": "perf(prefs): subset OpenDyslexic web font ~115KB→~31KB (#1979)", + "summary": "Shrank the dyslexia-friendly web font by around 73% for faster loading.", + "category": "Performance", + "mergedAt": "2026-08-22T17:28:03Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1982" + }, + { + "id": "tutorials-ims#1978", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1978, + "title": "feat(prefs): tutorial reading preferences batch 2 (#1966)", + "summary": "Added a second batch of reading preferences to tutorials: text size and width, code size/wrap/copy-without-prompt, screenshot sizing, reduce-motion, and a dyslexia-friendly font.", + "category": "Feature", + "mergedAt": "2026-08-22T17:12:00Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1978" + }, + { + "id": "tutorials-ims#1981", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1981, + "title": "test(a11y): turn post-deploy axe scan into a regression gate", + "summary": "Turned the post-deploy accessibility scan into a real regression gate and fixed defects that made it collect no data.", + "category": "Maintenance", + "mergedAt": "2026-08-22T17:11:24Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1981" + }, + { + "id": "tutorials-ims#1977", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1977, + "title": "fix(tutorial-prefs): remove direct @ui5 SegmentedButton imports from island entry", + "summary": "Fixed a dark-mode island bug by removing a duplicate UI5 component import.", + "category": "Fix", + "mergedAt": "2026-08-22T15:55:22Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1977" + }, + { + "id": "tutorials-ims#1976", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1976, + "title": "Expand homepage topic clusters to KG multi-source content", + "summary": "Homepage topic clusters now surface all knowledge-graph content types — missions, learning journeys, blogs, videos, and events — not just tutorials.", + "category": "Feature", + "mergedAt": "2026-08-22T15:45:45Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1976" + }, + { + "id": "tutorials-ims#1975", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1975, + "title": "feat(mcp): Tier 2 hosted MCP tools — search_events + get_news_detail", + "summary": "Added two public MCP tools — event search and news detail — to the developers.sap.com hosted MCP surface.", + "category": "Feature", + "mergedAt": "2026-08-22T14:35:59Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1975" + }, + { + "id": "tutorials-ims#1974", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1974, + "title": "perf(navigator): SSR the chrome to kill the mount flash on /tutorial-navigator", + "summary": "Removed the layout jump on the tutorial navigator by server-rendering the full page chrome up front.", + "category": "Performance", + "mergedAt": "2026-08-22T14:25:24Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1974" + }, + { + "id": "tutorials-ims#1973", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1973, + "title": "fix(tutorial-prefs): reflect stored Header pref on popover (re)open (#1966)", + "summary": "Fixed the tutorial preferences dialog not showing the saved header setting when reopened.", + "category": "Fix", + "mergedAt": "2026-08-22T14:13:23Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1973" + }, + { + "id": "tutorials-ims#1971", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1971, + "title": "fix(ui5): heal dark-mode boot-order race (DEV dark mode unreadable)", + "summary": "Fixed dark mode rendering with light colors on the first page load.", + "category": "Fix", + "mergedAt": "2026-08-21T22:08:20Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1971" + }, + { + "id": "tutorials-ims#1970", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1970, + "title": "fix(tutorials): force-load lazy images before print (#1943)", + "summary": "Fixed the new Print feature printing blank images by loading lazy images before the print dialog opens.", + "category": "Fix", + "mergedAt": "2026-08-21T21:37:57Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1970" + }, + { + "id": "tutorials-ims#1969", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1969, + "title": "feat(display-prefs): tutorial-page display preferences (#1966)", + "summary": "Added a Display section to tutorial preferences for controlling header and footer chrome, with a compact treatment auto-applied on short screens.", + "category": "Feature", + "mergedAt": "2026-08-21T20:17:24Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1969" + }, + { + "id": "tutorials-ims#1967", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1967, + "title": "Attachment object-store pipeline: serve tutorial repo attachments like images (#1931)", + "summary": "Tutorial file attachments (.txt, .zip, .pdf, and more) are now served through the platform instead of returning 404s.", + "category": "Feature", + "mergedAt": "2026-08-21T19:31:26Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1967" + }, + { + "id": "tutorials-ims#1965", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1965, + "title": "feat(scanner): source-markdown scanner + fixer (#1963)", + "summary": "New tool that fixes malformed tutorial markdown at the source and opens a PR per repo, letting the render-time patches eventually be retired.", + "category": "Feature", + "mergedAt": "2026-08-21T19:06:55Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1965" + }, + { + "id": "tutorials-ims#1964", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1964, + "title": "feat(tutorials): Print / Save-as-PDF button (#1943)", + "summary": "Added a Print / Save-as-PDF button to tutorial pages so readers can save any tutorial as a PDF.", + "category": "Feature", + "mergedAt": "2026-08-21T17:21:03Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1964" + }, + { + "id": "tutorials-ims#1962", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1962, + "title": "fix(selfie): align background tests with renamed scene ids", + "summary": "Fixed tests after the selfie photo-booth backgrounds were renamed.", + "category": "Maintenance", + "mergedAt": "2026-08-21T15:59:58Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1962" + }, + { + "id": "tutorials-ims#1961", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1961, + "title": "fix(#1960): reclassify contentless tutorials to DELETED (datasphere & other legacy phantoms)", + "summary": "Removed phantom tutorials from search that had no published content and returned 404s when clicked.", + "category": "Fix", + "mergedAt": "2026-08-21T15:31:48Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1961" + }, + { + "id": "tutorials-ims#1958", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1958, + "title": "Release 1.18.1 → main", + "summary": "Production release promoting DEV changes.", + "category": "Maintenance", + "mergedAt": "2026-08-20T22:55:47Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1958" + }, + { + "id": "tutorials-ims#1959", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1959, + "title": "chore: sync main into DEV (reconcile selfie/csrf/puzzle) + 1.18.1", + "summary": "Synced the main branch back into DEV to keep the release merge conflict-free.", + "category": "Maintenance", + "mergedAt": "2026-08-20T22:55:21Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1959" + }, + { + "id": "tutorials-ims#1957", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1957, + "title": "chore(release): bump MTA version to 1.18.1", + "summary": "Version bump ahead of a release.", + "category": "Maintenance", + "mergedAt": "2026-08-20T22:43:49Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1957" + }, + { + "id": "tutorials-ims#1956", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1956, + "title": "docs(whats-new): weekly digest refresh (2026-08-14 → 08-20)", + "summary": "Refreshed the public What's New weekly digest.", + "category": "Docs", + "mergedAt": "2026-08-20T21:33:22Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1956" + }, + { + "id": "tutorials-ims#1955", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1955, + "title": "Rescue tutorial prose and screenshots trapped inside code blocks", + "summary": "Fixes tutorials where explanatory text and screenshots that followed a code sample inside a numbered step were mistakenly rendered as raw code, so those steps now read the way the author intended.", + "category": "Fix", + "mergedAt": "2026-08-20T21:21:30Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1955" + }, + { + "id": "tutorials-ims#1954", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1954, + "title": "Refresh the Devtoberfest Selfie backgrounds, stickers, and frames", + "summary": "Gives the Devtoberfest Selfie tool a fresh set of backgrounds, stickers, and advocate frames so your event selfies look current.", + "category": "Feature", + "mergedAt": "2026-08-20T19:53:08Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1954" + }, + { + "id": "tutorials-ims#1953", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1953, + "title": "docs: Devtoberfest selfie art update runbook", + "summary": "Adds an internal runbook explaining where the Devtoberfest Selfie art lives and how to swap in new backgrounds, stickers, and frames.", + "category": "Docs", + "mergedAt": "2026-08-20T19:52:57Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1953" + }, + { + "id": "tutorials-ims#1952", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1952, + "title": "docs: register ai-skills-catalog page in sidebar", + "summary": "Registers the new AI Skills Catalog page in the documentation sidebar so it is easy to find.", + "category": "Docs", + "mergedAt": "2026-08-20T16:10:03Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1952" + }, + { + "id": "tutorials-ims#1950", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1950, + "title": "docs: AI Skills Catalog (internal AI capabilities reference)", + "summary": "Adds an internal reference page cataloguing every AI capability across the tutorials platform, from Joule chat tools to the knowledge-graph jobs.", + "category": "Docs", + "mergedAt": "2026-08-20T15:38:06Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1950" + }, + { + "id": "tutorials-ims#1951", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1951, + "title": "Restore group and mission completion tracking", + "summary": "Restores automatic credit for completing tutorial groups and missions, so finishing all the tutorials in a learning path once again marks the whole path complete.", + "category": "Fix", + "mergedAt": "2026-08-20T15:37:26Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1951" + }, + { + "id": "tutorials-ims#1949", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1949, + "title": "Grade submitted code against the stated goal, not the sample answer", + "summary": "Makes the AI code-check grader judge your answer against what the exercise actually asks for rather than nitpicking details of the reference solution, so correct submissions are no longer rejected over unrequested specifics.", + "category": "Fix", + "mergedAt": "2026-08-20T15:26:33Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1949" + }, + { + "id": "tutorials-ims#1947", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1947, + "title": "Refresh cached puzzle answers instead of trusting stale copies", + "summary": "Fixes puzzle tutorials where edited answers were ignored, so updated puzzle solutions now validate correctly on the live site.", + "category": "Fix", + "mergedAt": "2026-08-20T15:16:10Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1947" + }, + { + "id": "tutorials-ims#1948", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1948, + "title": "Enable search in the QA tutorial preview site", + "summary": "Makes tutorial search work again on the QA author-preview channel so authors can find and open the tutorial they are searching for.", + "category": "Fix", + "mergedAt": "2026-08-20T15:14:34Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1948" + }, + { + "id": "tutorials-ims#1946", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1946, + "title": "Redirect QA group and mission pages to production", + "summary": "Replaces a raw error on QA-preview group and mission pages with a graceful redirect to the live page, and shows a friendly error page when a catalog page can't render.", + "category": "Fix", + "mergedAt": "2026-08-20T15:03:19Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1946" + }, + { + "id": "tutorials-ims#1945", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1945, + "title": "Show titles and links on Featured Missions cards", + "summary": "Fixes the Featured Missions cards on the Tutorial Navigator that were rendering blank, so they once again show their title, description, and link.", + "category": "Fix", + "mergedAt": "2026-08-20T14:52:37Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1945" + }, + { + "id": "tutorials-ims#1944", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1944, + "title": "Show correct acronym casing on group and mission tag chips", + "summary": "Fixes tag chips on group and mission pages so acronyms like 'SAP BTP Cockpit' display with proper capitalization instead of 'Sap Btp Cockpit'.", + "category": "Fix", + "mergedAt": "2026-08-20T14:48:07Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1944" + }, + { + "id": "tutorials-ims#1936", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1936, + "title": "Render deeply-indented code blocks with syntax highlighting", + "summary": "Fixes hundreds of tutorials where code blocks indented inside list steps showed their raw backtick fences instead of a proper highlighted code window.", + "category": "Fix", + "mergedAt": "2026-08-20T12:51:44Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1936" + }, + { + "id": "tutorials-ims#1935", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1935, + "title": "Let puzzle designers toggle grid squares back to white", + "summary": "Fixes the admin crossword puzzle designer so clicking a black grid square turns it white again, unblocking puzzle layout work.", + "category": "Fix", + "mergedAt": "2026-08-20T12:38:20Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1935" + }, + { + "id": "tutorials-ims#1933", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1933, + "title": "Stop treating edge errors as expired sessions on photo upload", + "summary": "Fixes Petoberfest photo uploads behind the CDN that were reloading the page instead of surfacing the real error, so upload failures now report a meaningful message.", + "category": "Fix", + "mergedAt": "2026-08-20T12:25:51Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1933" + }, + { + "id": "tutorials-ims#1934", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1934, + "title": "Bound memory use during content publishing", + "summary": "Stops content rebuilds from crashing on out-of-memory by no longer loading the entire catalog's content into memory during publish, making large publishes reliable.", + "category": "Fix", + "mergedAt": "2026-08-20T12:07:20Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1934" + }, + { + "id": "tutorials-ims#1929", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1929, + "title": "Release 1.18.0 to production", + "summary": "Ships the 1.18.0 production release, bundling the self-service token page, Devtoberfest and Petoberfest features, and a batch of fixes to developers.sap.com.", + "category": "Maintenance", + "mergedAt": "2026-08-19T21:33:49Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1929" + }, + { + "id": "tutorials-ims#1928", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1928, + "title": "Bump release version to 1.18.0", + "summary": "Bumps the project version to 1.18.0 ahead of the production promotion.", + "category": "Maintenance", + "mergedAt": "2026-08-19T21:30:36Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1928" + }, + { + "id": "tutorials-ims#1927", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1927, + "title": "Unblock the documentation build", + "summary": "Fixes the documentation build that was failing on a link pointing to a live app route rather than a doc page.", + "category": "Maintenance", + "mergedAt": "2026-08-19T20:41:02Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1927" + }, + { + "id": "tutorials-ims#1926", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1926, + "title": "Make scavenger-hunt clue captions readable", + "summary": "Gives the floating Devtoberfest scavenger-hunt clue captions a solid background so the clue text is readable against the page behind it.", + "category": "Fix", + "mergedAt": "2026-08-19T20:30:06Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1926" + }, + { + "id": "tutorials-ims#1925", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1925, + "title": "Show authored tutorials in the SAGE 'My Tutorials' panel", + "summary": "Fixes the 'My Tutorials' panel so tutorials you authored show up, not just ones where you match on email or name.", + "category": "Fix", + "mergedAt": "2026-08-19T20:28:03Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1925" + }, + { + "id": "tutorials-ims#1924", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1924, + "title": "Allowlist puzzle routes in the QA route-drift guard", + "summary": "Registers the new puzzle content routes with the internal build guard that keeps the QA preview site in sync, turning the build green again.", + "category": "Maintenance", + "mergedAt": "2026-08-19T18:54:02Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1924" + }, + { + "id": "tutorials-ims#1922", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1922, + "title": "Fix advocate photo uploads behind the CDN", + "summary": "Switches advocate photo uploads to a CDN-friendly format so they succeed on developers.sap.com and report clear errors when something goes wrong.", + "category": "Fix", + "mergedAt": "2026-08-19T18:23:43Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1922" + }, + { + "id": "tutorials-ims#1923", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1923, + "title": "Add a /puzzles/ index page and admin link", + "summary": "Adds a proper puzzles landing page listing every puzzle, replacing the 404 that used to appear at /puzzles/.", + "category": "Fix", + "mergedAt": "2026-08-19T18:23:07Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1923" + }, + { + "id": "tutorials-ims#1921", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1921, + "title": "Let authors add intro text to puzzles and Petoberfest", + "summary": "Lets authors add formatted intro text with links to puzzle and Petoberfest pages, so participants get clear instructions on how to take part.", + "category": "Feature", + "mergedAt": "2026-08-19T18:07:20Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1921" + }, + { + "id": "tutorials-ims#1919", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1919, + "title": "Serve puzzle pages dynamically", + "summary": "Fixes newly created puzzles that returned a 404 by serving every puzzle page dynamically from the catalog instead of relying on hand-authored files.", + "category": "Fix", + "mergedAt": "2026-08-19T18:00:16Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1919" + }, + { + "id": "tutorials-ims#1920", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1920, + "title": "Fix Petoberfest photo uploads behind the CDN", + "summary": "Fixes Petoberfest pet-photo uploads that failed silently on developers.sap.com by switching to a CDN-friendly upload format and surfacing errors.", + "category": "Fix", + "mergedAt": "2026-08-19T17:58:11Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1920" + }, + { + "id": "tutorials-ims#1918", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1918, + "title": "Let users withdraw their own Petoberfest photo", + "summary": "Lets Petoberfest participants withdraw a photo they uploaded so it no longer appears, even after it was approved.", + "category": "Feature", + "mergedAt": "2026-08-19T17:53:11Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1918" + }, + { + "id": "tutorials-ims#1917", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1917, + "title": "Hide the Petoberfest upload form from logged-out visitors", + "summary": "Fixes the Petoberfest page so anonymous visitors see a sign-in prompt instead of the upload form.", + "category": "Fix", + "mergedAt": "2026-08-19T17:51:02Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1917" + }, + { + "id": "tutorials-ims#1916", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1916, + "title": "Randomize the Petoberfest slideshow order", + "summary": "Shuffles the Petoberfest photo slideshow on each visit so it's no longer always the newest uploads first.", + "category": "Feature", + "mergedAt": "2026-08-19T17:27:27Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1916" + }, + { + "id": "tutorials-ims#1915", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1915, + "title": "Repair puzzle JSON import in the admin builder", + "summary": "Fixes the admin puzzle builder so importing a puzzle JSON file after creating a new puzzle actually loads it.", + "category": "Fix", + "mergedAt": "2026-08-19T17:07:00Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1915" + }, + { + "id": "tutorials-ims#1913", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1913, + "title": "Add Devtoberfest scavenger-hunt clues", + "summary": "Adds three hidden Devtoberfest scavenger-hunt clues, one each on the home, AI, and API docs pages, featuring SAP developer advocates.", + "category": "Feature", + "mergedAt": "2026-08-19T16:46:05Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1913" + }, + { + "id": "tutorials-ims#1907", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1907, + "title": "Prompt re-login when a session has expired", + "summary": "Fixes the tutorial step 'Done' button so that in an expired session it prompts you to sign in again instead of silently failing to record your progress.", + "category": "Fix", + "mergedAt": "2026-08-19T15:49:07Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1907" + }, + { + "id": "tutorials-ims#1906", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1906, + "title": "Keep the quiz verdict badge round", + "summary": "Fixes the per-question pass/fail badge in tutorial quizzes so it stays a neat circle next to long questions instead of squishing into an oval.", + "category": "Fix", + "mergedAt": "2026-08-19T15:16:51Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1906" + }, + { + "id": "tutorials-ims#1903", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1903, + "title": "Release 1.17.0 to production", + "summary": "Ships the 1.17.0 production release, bringing the self-service token page, image persistence, and a batch of fixes to developers.sap.com.", + "category": "Maintenance", + "mergedAt": "2026-08-18T22:01:43Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1903" + }, + { + "id": "tutorials-ims#1902", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1902, + "title": "chore(release): bump MTA version to 1.17.0 for PROD release", + "summary": "Prepares the platform's next release version so the latest batch of improvements can roll out to production.", + "category": "Maintenance", + "mergedAt": "2026-08-18T22:01:24Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1902" + }, + { + "id": "tutorials-ims#1901", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1901, + "title": "Fix build check for the new token page", + "summary": "Fixes an internal build check so the new personal access token page builds and ships cleanly.", + "category": "Maintenance", + "mergedAt": "2026-08-18T20:40:52Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1901" + }, + { + "id": "tutorials-ims#1900", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1900, + "title": "Publish skills to the SAP AI Skills Library", + "summary": "Publishes the platform's AI skills (like the knowledge-graph builder and the What's New generator) so you can discover and install them into tools like Claude Code, Cursor, and Codex via the SAP AI Skills Library.", + "category": "Docs", + "mergedAt": "2026-08-18T18:53:31Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1900" + }, + { + "id": "tutorials-ims#1894", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1894, + "title": "fix(deploy): pin tutorials-srv-qa memory to 1536M (#1893)", + "summary": "Gives the QA content service enough memory to finish large content rebuilds without crashing, keeping the QA preview channel dependable.", + "category": "Maintenance", + "mergedAt": "2026-08-18T18:53:15Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1894" + }, + { + "id": "tutorials-ims#1899", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1899, + "title": "Self-service page to create MCP access tokens", + "summary": "Adds a self-service page at /me/tokens where you can create, view, and revoke your own personal access tokens for the hosted MCP server, without needing admin access.", + "category": "Feature", + "mergedAt": "2026-08-18T18:52:57Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1899" + }, + { + "id": "tutorials-ims#1898", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1898, + "title": "Enable desktop MCP sign-in (Joule Desktop)", + "summary": "Lets desktop MCP tools such as Joule Desktop complete sign-in through their local callback, so connecting them to the platform's MCP server works reliably.", + "category": "Fix", + "mergedAt": "2026-08-18T18:14:04Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1898" + }, + { + "id": "tutorials-ims#1896", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1896, + "title": "Keyword search for Devtoberfest sessions", + "summary": "Adds a keyword search box to the Devtoberfest sessions page that matches across session titles, abstracts, and speaker details, and fixes the Join banner so you can find the right session faster.", + "category": "Feature", + "mergedAt": "2026-08-18T14:51:31Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1896" + }, + { + "id": "tutorials-ims#1892", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1892, + "title": "Fix the tutorial feedback form", + "summary": "Repairs the tutorial feedback form so the detailed-feedback popup opens and submissions go through, letting you share feedback on tutorials again.", + "category": "Fix", + "mergedAt": "2026-08-18T11:07:23Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1892" + }, + { + "id": "tutorials-ims#1891", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1891, + "title": "Tutorial images self-populate the image store", + "summary": "Makes the platform automatically save tutorial images to its own store the first time they're requested, so images keep loading even when the original source is unavailable.", + "category": "Feature", + "mergedAt": "2026-08-18T11:06:17Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1891" + }, + { + "id": "tutorials-ims#1887", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1887, + "title": "fix(ci): allowlist dark-launched image routes in srv-qa route-drift guard", + "summary": "Updates an internal build check to recognize the new image-serving routes so continuous integration passes.", + "category": "Maintenance", + "mergedAt": "2026-08-18T03:42:45Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1887" + }, + { + "id": "tutorials-ims#1886", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1886, + "title": "Release 1.16.0 — DEV → main (PROD promotion)", + "summary": "Promotes a batch of features and fixes, including durable tutorial-image storage and Joule's What's New support, to production.", + "category": "Maintenance", + "mergedAt": "2026-08-18T02:32:11Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1886" + }, + { + "id": "tutorials-ims#1885", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1885, + "title": "chore(release): bump MTA version to 1.16.0 for PROD release", + "summary": "Prepares the release version ahead of a production rollout that adds durable tutorial-image storage.", + "category": "Maintenance", + "mergedAt": "2026-08-18T02:13:53Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1885" + }, + { + "id": "tutorials-ims#1884", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1884, + "title": "Heal broken tutorial images in the store", + "summary": "Adds a way to force-refresh tutorial images that were saved incompletely, cleaning up broken entries so those images display correctly.", + "category": "Fix", + "mergedAt": "2026-08-18T01:41:45Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1884" + }, + { + "id": "tutorials-ims#1883", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1883, + "title": "Fix tutorial image uploads to storage", + "summary": "Fixes a startup configuration gap that was causing tutorial-image uploads to storage to fail, so images now persist as intended.", + "category": "Fix", + "mergedAt": "2026-08-18T01:32:46Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1883" + }, + { + "id": "tutorials-ims#1881", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1881, + "title": "Store tutorial images independently of GitHub", + "summary": "Lets the platform ingest and store tutorial images directly, plus a backfill for existing ones, so tutorial screenshots no longer depend on fetching from GitHub at page-load time.", + "category": "Feature", + "mergedAt": "2026-08-18T00:31:16Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1881" + }, + { + "id": "tutorials-ims#1880", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1880, + "title": "Fix empty Featured Missions carousel on the homepage", + "summary": "Fixes the homepage Featured Missions carousel that had stopped showing any cards, so featured missions appear again.", + "category": "Fix", + "mergedAt": "2026-08-17T22:36:46Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1880" + }, + { + "id": "tutorials-ims#1879", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1879, + "title": "Fix empty tutorial image store", + "summary": "Fixes an issue that prevented tutorial images from ever being written to storage, so the image store now populates correctly.", + "category": "Fix", + "mergedAt": "2026-08-17T22:36:36Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1879" + }, + { + "id": "tutorials-ims#1878", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1878, + "title": "Store tutorial images in Object Store and fix boot crash", + "summary": "Moves tutorial-image storage to BTP Object Store and fixes a startup crash, so the service boots reliably and images are stored in the right place.", + "category": "Fix", + "mergedAt": "2026-08-17T21:00:00Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1878" + }, + { + "id": "tutorials-ims#1877", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1877, + "title": "Persist tutorial images with GitHub fallback", + "summary": "Stores tutorial images durably and serves them from the platform's own store, falling back to GitHub only when needed, so tutorial screenshots stay available even during GitHub outages or rate limits.", + "category": "Feature", + "mergedAt": "2026-08-17T19:30:41Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1877" + }, + { + "id": "tutorials-ims#1876", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1876, + "title": "Fix product tag filtering in the Tutorial Navigator", + "summary": "Fixes product-tag deep links in the Tutorial Navigator so clicking a product now shows all of that product's tutorials instead of just a subset.", + "category": "Fix", + "mergedAt": "2026-08-17T17:29:18Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1876" + }, + { + "id": "tutorials-ims#1873", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1873, + "title": "fix(#1859): register ChatSettings.whatsNewEnabled feature flag (DEV CI green)", + "summary": "Registers the What's New chat setting in the internal feature-flag registry to keep configuration consistent and tests passing.", + "category": "Maintenance", + "mergedAt": "2026-08-17T16:58:53Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1873" + }, + { + "id": "tutorials-ims#1872", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1872, + "title": "Collapsible 'More from author' section", + "summary": "Makes the 'More from author' section on tutorial pages collapsible and closed by default, giving you a cleaner reading view while keeping the related tutorials one click away.", + "category": "Feature", + "mergedAt": "2026-08-17T16:58:30Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1872" + }, + { + "id": "tutorials-ims#1874", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1874, + "title": "Reduce layout shift on the Browse page", + "summary": "Eliminates the remaining layout shift on the Browse page by loading card styling up front, so cards no longer jump around as the page loads.", + "category": "Performance", + "mergedAt": "2026-08-17T16:58:07Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1874" + }, + { + "id": "tutorials-ims#1875", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1875, + "title": "Restore the Mission crumb in tutorial breadcrumbs", + "summary": "Restores the missing Mission entry in tutorial breadcrumbs, so you can navigate back up to the mission when you reached a tutorial through one.", + "category": "Fix", + "mergedAt": "2026-08-17T16:57:39Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1875" + }, + { + "id": "tutorials-ims#1871", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1871, + "title": "Fix breadcrumb separator on cross-linked tutorials", + "summary": "Fixes a missing separator in the breadcrumb when you open a tutorial from a group or mission link, so the trail reads clearly.", + "category": "Fix", + "mergedAt": "2026-08-17T16:56:38Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1871" + }, + { + "id": "tutorials-ims#1870", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1870, + "title": "docs(spec): persist tutorial images in Object Store (decouple from GitHub)", + "summary": "Documents the design for storing tutorial images in Object Store so they no longer depend on GitHub at request time.", + "category": "Docs", + "mergedAt": "2026-08-17T16:24:49Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1870" + }, + { + "id": "tutorials-ims#1868", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1868, + "title": "Fix tutorial images failing to load on mobile", + "summary": "Fixes tutorial images that were failing to load on mobile devices due to rate-limiting on mobile-sized image variants, so screenshots now render on phones and tablets.", + "category": "Fix", + "mergedAt": "2026-08-17T16:24:37Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1868" + }, + { + "id": "tutorials-ims#1867", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1867, + "title": "test(#1614): fix DEV CI — resolve provisioned user by sapId not uuid", + "summary": "Fixes an internal test to look up users the correct way, keeping the test suite green.", + "category": "Maintenance", + "mergedAt": "2026-08-17T16:24:10Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1867" + }, + { + "id": "tutorials-ims#1863", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1863, + "title": "Ask Joule what's new", + "summary": "Adds a Joule capability so you can ask what's new and get the latest platform updates from the What's New digest instead of a refusal.", + "category": "Feature", + "mergedAt": "2026-08-17T13:25:01Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1863" + }, + { + "id": "tutorials-ims#1862", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1862, + "title": "Add tooltips to header toolbar icons", + "summary": "Adds hover tooltips to all the icons in the top-right header bar, so it's clear what each button does.", + "category": "Fix", + "mergedAt": "2026-08-17T12:33:11Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1862" + }, + { + "id": "tutorials-ims#1861", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1861, + "title": "Fix account-linking save error for new users", + "summary": "Fixes an error that stopped some new users from saving their community profile link on first sign-in, so account linking now works for everyone.", + "category": "Fix", + "mergedAt": "2026-08-17T12:32:02Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1861" + }, + { + "id": "tutorials-ims#1860", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1860, + "title": "Redirect legacy sitemap URLs", + "summary": "Redirects old sitemap URLs left over from the previous platform to the current sitemap, so search engines can crawl and index tutorials again.", + "category": "Fix", + "mergedAt": "2026-08-17T10:51:41Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1860" + }, + { + "id": "tutorials-ims#1856", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1856, + "title": "Fix broken images in the 'You will learn' section", + "summary": "Fixes broken images in the 'You will learn' section of tutorials so those screenshots display instead of returning 404s.", + "category": "Fix", + "mergedAt": "2026-08-17T10:30:36Z", + "week": "2026-W34", + "weekStart": "2026-08-17", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1856" + }, + { + "id": "tutorials-ims#1855", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1855, + "title": "Release with performance, accessibility, and SEO improvements", + "summary": "Ships a batch of performance, accessibility, and SEO improvements to production, including much faster tutorial page loads, a lighter startup bundle, and better search-engine visibility.", + "category": "Maintenance", + "mergedAt": "2026-08-16T20:23:11Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1855" + }, + { + "id": "tutorials-ims#1853", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1853, + "title": "docs(sidebar): register author-admin-access page (fix Deploy Docs CI)", + "summary": "Adds a missing documentation page to the docs sidebar so it's reachable in the developer docs.", + "category": "Docs", + "mergedAt": "2026-08-16T20:22:57Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1853" + }, + { + "id": "tutorials-ims#1852", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1852, + "title": "Steadier layout on the Browse page", + "summary": "Category chips on the Browse page cards no longer cause the page to jump around as it loads, giving you a smoother, more stable browsing experience.", + "category": "Performance", + "mergedAt": "2026-08-16T19:16:17Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1852" + }, + { + "id": "tutorials-ims#1851", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1851, + "title": "Reliable cache-busting for the nav dropdown and concepts filter", + "summary": "The navigation dropdown and concepts filter now refresh reliably after updates, so you always see the latest version instead of a stale cached one.", + "category": "Fix", + "mergedAt": "2026-08-16T19:15:53Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1851" + }, + { + "id": "tutorials-ims#1850", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1850, + "title": "Restore stable tutorial navigator layout", + "summary": "The tutorial navigator page now loads with a steady layout again, reversing an earlier experiment that had caused the content to shift as it appeared.", + "category": "Performance", + "mergedAt": "2026-08-16T17:41:15Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1850" + }, + { + "id": "tutorials-ims#1849", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1849, + "title": "Correct asset fingerprint detection in deploy checks", + "summary": "Fixed an internal deploy safety check so that correctly versioned page assets are no longer mistakenly flagged, keeping deployments smooth and dependable.", + "category": "Fix", + "mergedAt": "2026-08-16T17:40:19Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1849" + }, + { + "id": "tutorials-ims#1848", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1848, + "title": "Eliminate layout shift on the tutorial navigator", + "summary": "The tutorial navigator cards now reserve their space up front, so the page no longer visibly reflows while loading.", + "category": "Performance", + "mergedAt": "2026-08-16T16:36:21Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1848" + }, + { + "id": "tutorials-ims#1847", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1847, + "title": "Lighter page load by trimming unused UI themes", + "summary": "Removed about 1.4 MB of unused theme data from the page bundle, so tutorial and browse pages load noticeably faster.", + "category": "Performance", + "mergedAt": "2026-08-16T15:22:10Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1847" + }, + { + "id": "tutorials-ims#1846", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1846, + "title": "Load the picture-in-picture player only when needed", + "summary": "The picture-in-picture tutorial player (~1.2 MB) now loads only when you actually open it, making every tutorial page load faster by default.", + "category": "Performance", + "mergedAt": "2026-08-16T15:21:48Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1846" + }, + { + "id": "tutorials-ims#1845", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1845, + "title": "Accessibility improvements across pages", + "summary": "Resolved several accessibility issues around progress indicators, image alt text, and control labels so the site works better with screen readers and assistive tech.", + "category": "Fix", + "mergedAt": "2026-08-16T14:55:13Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1845" + }, + { + "id": "tutorials-ims#1844", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1844, + "title": "Improve link text and crawlable links for SEO", + "summary": "Fixed shared links so search engines can crawl them properly and read meaningful link text, improving how tutorial pages surface in search results.", + "category": "Fix", + "mergedAt": "2026-08-16T14:51:24Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1844" + }, + { + "id": "tutorials-ims#1841", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1841, + "title": "Faster loading of non-critical styles and third-party scripts", + "summary": "Optimized how the consent banner and non-essential stylesheets load, shaving render-blocking delays off page loads.", + "category": "Performance", + "mergedAt": "2026-08-16T14:50:26Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1841" + }, + { + "id": "tutorials-ims#1842", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1842, + "title": "Stop the Browse page from jumping while it loads", + "summary": "Front-loaded the Browse page styling so the layout settles immediately instead of shifting as content appears, for a much steadier first view.", + "category": "Performance", + "mergedAt": "2026-08-16T14:50:07Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1842" + }, + { + "id": "tutorials-ims#1843", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1843, + "title": "Defer non-essential scripts to speed up first interaction", + "summary": "The tutorial navigator and picture-in-picture button now initialize after the page is interactive, reducing the time before you can start using the page.", + "category": "Performance", + "mergedAt": "2026-08-16T14:49:37Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1843" + }, + { + "id": "tutorials-ims#1840", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1840, + "title": "Correct group shown in tutorial breadcrumbs", + "summary": "Tutorials that also belong to a special event mission now show their real learning group in the breadcrumb and navigation, so you can find your way around a series correctly.", + "category": "Fix", + "mergedAt": "2026-08-16T13:17:38Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1840" + }, + { + "id": "tutorials-ims#1839", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1839, + "title": "Exclude specific accounts when granting author admin access", + "summary": "Added an option to skip specific accounts (like shared group mailboxes) when bulk-granting admin access to tutorial authors, giving admins finer control.", + "category": "Feature", + "mergedAt": "2026-08-16T13:05:34Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1839" + }, + { + "id": "tutorials-ims#1838", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1838, + "title": "Explain the author console 403 as a role assignment gap", + "summary": "Documented that authors seeing a 403 on the Author Console need the Admin role collection assigned, and provided a helper to grant it.", + "category": "Docs", + "mergedAt": "2026-08-16T12:45:11Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1838" + }, + { + "id": "tutorials-ims#1835", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1835, + "title": "Fix puzzle builder save and import", + "summary": "The admin puzzle builder now saves reliably when grid dimensions are entered and its Import button works again, so authors can build puzzles without hitting validation errors.", + "category": "Fix", + "mergedAt": "2026-08-16T12:09:25Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1835" + }, + { + "id": "tutorials-ims#1832", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1832, + "title": "Remove dead references to the retired rebuild push", + "summary": "Cleaned up leftover configuration referencing a retired internal content-push mechanism, keeping the deployment setup tidy and consistent.", + "category": "Maintenance", + "mergedAt": "2026-08-16T11:47:11Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1832" + }, + { + "id": "tutorials-ims#1831", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1831, + "title": "Serve /llms.txt dynamically from the database", + "summary": "The /llms.txt file is now served from the content store like its companion pages, making it easier to keep up to date.", + "category": "Maintenance", + "mergedAt": "2026-08-16T11:47:00Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1831" + }, + { + "id": "tutorials-ims#1830", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1830, + "title": "Update tests for the database-only content rebuild", + "summary": "Updated internal tests to match the new content-rebuild process that renders pages against already-deployed assets.", + "category": "Maintenance", + "mergedAt": "2026-08-16T11:46:33Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1830" + }, + { + "id": "tutorials-ims#1829", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1829, + "title": "Content rebuilds go database-only and stop clobbering deployed assets", + "summary": "Reworked content rebuilds so admin edits and refreshes update the database only, ending the recurring problem where a rebuild could overwrite freshly deployed site assets.", + "category": "Maintenance", + "mergedAt": "2026-08-16T01:21:59Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1829" + }, + { + "id": "tutorials-ims#1827", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1827, + "title": "Restore the developer advocate detail route", + "summary": "Fixed an internal routing gap so per-advocate detail pages are served correctly after the content-serving migration.", + "category": "Fix", + "mergedAt": "2026-08-15T22:08:25Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1827" + }, + { + "id": "tutorials-ims#1826", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1826, + "title": "Groundwork for decoupling assets from content rebuilds", + "summary": "Added the plumbing to let content rebuilds render pages against the currently deployed assets, a preparatory step with no visible change yet.", + "category": "Maintenance", + "mergedAt": "2026-08-15T21:27:37Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1826" + }, + { + "id": "tutorials-ims#1825", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1825, + "title": "Serve advocate detail pages dynamically from the database", + "summary": "Per-advocate detail pages now come from the dynamic content store, so admin edits to advocate profiles show up reliably.", + "category": "Maintenance", + "mergedAt": "2026-08-15T21:17:13Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1825" + }, + { + "id": "tutorials-ims#1824", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1824, + "title": "Fix routing drift for homepage and author pages", + "summary": "Resolved an internal routing mismatch introduced when the homepage and author pages moved to dynamic serving, keeping the build checks green.", + "category": "Fix", + "mergedAt": "2026-08-15T21:17:03Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1824" + }, + { + "id": "tutorials-ims#1823", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1823, + "title": "Serve author pages dynamically from the database", + "summary": "The roughly 150 per-author pages now come from the dynamic content store, so author profile updates stay fresh and reliable.", + "category": "Maintenance", + "mergedAt": "2026-08-15T20:54:15Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1823" + }, + { + "id": "tutorials-ims#1822", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1822, + "title": "Serve the homepage from the database and drop the restart workaround", + "summary": "The homepage is now served dynamically from the content store, eliminating the post-deploy restart that had been needed to avoid stale content.", + "category": "Maintenance", + "mergedAt": "2026-08-15T20:25:04Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1822" + }, + { + "id": "tutorials-ims#1821", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1821, + "title": "Fix crawlable links and link text on shared popovers", + "summary": "Fixed the glossary and preferences popover links so search engines can crawl them and their text is meaningful, improving SEO across pages.", + "category": "Fix", + "mergedAt": "2026-08-15T18:47:45Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1821" + }, + { + "id": "tutorials-ims#1820", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1820, + "title": "Guard against stale site assets after deploy", + "summary": "Added a safeguard and automated check that catch stale or missing page assets after a deploy, preventing the broken, unstyled pages that could otherwise slip through.", + "category": "Feature", + "mergedAt": "2026-08-15T18:47:34Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1820" + }, + { + "id": "tutorials-ims#1819", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1819, + "title": "Point accessibility scans at stable live pages", + "summary": "Repointed the automated accessibility scans to reliable live pages so they properly test real content instead of erroring on missing URLs.", + "category": "Fix", + "mergedAt": "2026-08-15T18:47:26Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1819" + }, + { + "id": "tutorials-ims#1818", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1818, + "title": "Design note for fixing homepage layout shift", + "summary": "Documented the root cause and design for reducing homepage layout shift, where placeholder bands resize once real content loads.", + "category": "Docs", + "mergedAt": "2026-08-15T18:47:16Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1818" + }, + { + "id": "tutorials-ims#1817", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1817, + "title": "Update a homepage topic-clusters test", + "summary": "Updated an internal test to match a recent change in how homepage topic-cluster links render, keeping the test suite accurate.", + "category": "Maintenance", + "mergedAt": "2026-08-15T18:47:07Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1817" + }, + { + "id": "tutorials-ims#1815", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1815, + "title": "Cleaner SEO metadata on group and mission pages", + "summary": "Fixed breadcrumb structured data and added meaningful descriptions to group and mission pages, and cleaned up leftover placeholder text, improving how these pages appear in search.", + "category": "Fix", + "mergedAt": "2026-08-15T16:00:32Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1815" + }, + { + "id": "tutorials-ims#1814", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1814, + "title": "Fix unstyled image lightbox on tutorials", + "summary": "The tutorial image lightbox now displays properly with a single focused image and its styling, instead of dumping all images stacked and unstyled.", + "category": "Fix", + "mergedAt": "2026-08-15T15:18:09Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1814" + }, + { + "id": "tutorials-ims#1813", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1813, + "title": "Fix a build check for shared UI code", + "summary": "Adjusted an internal build guard so shared UI5 code splitting no longer trips a false failure, keeping the build pipeline healthy.", + "category": "Fix", + "mergedAt": "2026-08-15T13:31:02Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1813" + }, + { + "id": "tutorials-ims#1812", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1812, + "title": "Fix mobile overflow and button overlap on tutorials", + "summary": "Fixed tutorial pages on mobile so content no longer overflows horizontally and the Steps button no longer overlaps, for a cleaner reading experience on phones.", + "category": "Fix", + "mergedAt": "2026-08-15T13:07:42Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1812" + }, + { + "id": "tutorials-ims#1810", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1810, + "title": "Slimmer homepage icon styles and right-sized images", + "summary": "The homepage now ships only the handful of icon styles it actually uses and requests appropriately sized images, trimming roughly 150 KB of render-blocking CSS plus oversized thumbnails for faster page loads.", + "category": "Performance", + "mergedAt": "2026-08-15T13:07:20Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1810" + }, + { + "id": "tutorials-ims#1809", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1809, + "title": "Homepage accessibility fixes", + "summary": "Fixed several homepage accessibility issues around color contrast, keyboard focus, link labels, and ARIA attributes so the page works better with screen readers and meets WCAG AA.", + "category": "Fix", + "mergedAt": "2026-08-15T13:06:59Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1809" + }, + { + "id": "tutorials-ims#1808", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1808, + "title": "Concept and catalog pages now have proper SEO metadata", + "summary": "Concept, group, and mission pages now emit their own title, description, canonical URL, and social-preview tags instead of inheriting placeholder metadata, so they're properly indexed by search engines and share cleanly on social media.", + "category": "Fix", + "mergedAt": "2026-08-15T13:06:39Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1808" + }, + { + "id": "tutorials-ims#1807", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1807, + "title": "Alert call-to-action button now appears", + "summary": "The call-to-action button on notification alerts now renders correctly in the popover, so links surfaced in announcements are actually clickable.", + "category": "Fix", + "mergedAt": "2026-08-15T13:06:16Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1807" + }, + { + "id": "tutorials-ims#1811", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1811, + "title": "Tutorial tag chips now filter the navigator correctly", + "summary": "Clicking an experience-level tag like \"Beginner\" on a tutorial now sets the Experience filter in the navigator instead of quietly breaking the Software Product filter, so browsing by product returns the results you expect.", + "category": "Fix", + "mergedAt": "2026-08-15T13:05:48Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1811" + }, + { + "id": "tutorials-ims#1806", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1806, + "title": "Cookie banner no longer shifts the homepage on first visit", + "summary": "The consent banner is now pinned as a fixed overlay so it no longer pushes homepage content around on a first visit, giving new visitors a stable, jank-free first impression.", + "category": "Fix", + "mergedAt": "2026-08-15T12:35:33Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1806" + }, + { + "id": "tutorials-ims#1801", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1801, + "title": "test(scheduler): bump lockstep to 46 jobs for top-tutorials (#1782)", + "summary": "Updated an internal scheduler test to account for the new nightly Top Tutorials job, keeping the build green.", + "category": "Maintenance", + "mergedAt": "2026-08-15T12:01:26Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1801" + }, + { + "id": "tutorials-ims#1799", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1799, + "title": "Richer image lightbox with keyboard support, thumbnails, and swipe", + "summary": "The tutorial image viewer now supports opening with the keyboard, a thumbnail filmstrip, swipe navigation, double-tap zoom, an image counter with caption, and a loading spinner, making screenshots easier and more accessible to browse.", + "category": "Feature", + "mergedAt": "2026-08-15T00:06:08Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1799" + }, + { + "id": "tutorials-ims#1800", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1800, + "title": "Badge tracking resend reliability improvements", + "summary": "Made the badge-tracking resend process more reliable and correctly scoped to the right completion window, so recent tutorial completions get their badges assigned as expected.", + "category": "Fix", + "mergedAt": "2026-08-15T00:02:21Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1800" + }, + { + "id": "tutorials-ims#1797", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1797, + "title": "Per-page code-splitting of UI5 components", + "summary": "Each page now loads only the UI5 web components it actually needs rather than one monolithic bundle, cutting the homepage's UI5 payload by more than half for noticeably faster loads (rolled out behind a safe toggle).", + "category": "Performance", + "mergedAt": "2026-08-14T22:43:49Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1797" + }, + { + "id": "tutorials-ims#1793", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1793, + "title": "Badge backfill scripts made runnable and date-scoped", + "summary": "Fixed the badge backfill tooling so it runs against live environments and only stamps recent activity, avoiding an unnecessary sweep of the entire historical backlog.", + "category": "Fix", + "mergedAt": "2026-08-14T21:52:49Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1793" + }, + { + "id": "tutorials-ims#1790", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1790, + "title": "Top Tutorials ranking on the homepage carousel", + "summary": "The homepage carousel can now flip between Featured missions and a completions-based Top Tutorials ranking with a 90/180/360-day window selector, helping you discover what the community is actually working through.", + "category": "Feature", + "mergedAt": "2026-08-14T20:38:29Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1790" + }, + { + "id": "tutorials-ims#1791", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1791, + "title": "Devtoberfest sign-in prompt for anonymous visitors", + "summary": "Anonymous visitors clicking \"Join the Fest\" on the Devtoberfest homepage now see a friendly log-in prompt instead of a confusing error.", + "category": "Fix", + "mergedAt": "2026-08-14T20:38:00Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1791" + }, + { + "id": "tutorials-ims#1789", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1789, + "title": "Release 1.14.1 — DEV → PROD", + "summary": "Routine release bump shipping the accumulated development work to production.", + "category": "Maintenance", + "mergedAt": "2026-08-14T20:26:59Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1789" + }, + { + "id": "tutorials-ims#1787", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1787, + "title": "Freshness floor keeps stale tutorials off the homepage carousel", + "summary": "Added a configurable age cutoff so genuinely ancient tutorials no longer get ranked onto the homepage Featured carousel, keeping the recommendations feeling current.", + "category": "Feature", + "mergedAt": "2026-08-14T18:38:24Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1787" + }, + { + "id": "tutorials-ims#1781", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1781, + "title": "Next/Prev now flows continuously across a mission's groups", + "summary": "The Next button no longer disappears at the end of a group within a multi-group mission, so you can now flow straight from one group into the next without hitting a dead end.", + "category": "Fix", + "mergedAt": "2026-08-14T18:13:46Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1781" + }, + { + "id": "tutorials-ims#1780", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1780, + "title": "Multiple-choice quizzes no longer pre-select every answer", + "summary": "Fixed multiple-choice knowledge checks that rendered every option pre-selected and always graded as wrong, so quizzes now start unchecked and grade correctly.", + "category": "Fix", + "mergedAt": "2026-08-14T18:06:11Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1780" + }, + { + "id": "tutorials-ims#1776", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1776, + "title": "Minified CSS and self-hosted icon fonts", + "summary": "Several stylesheets are now minified and the icon CSS is served from our own domain instead of a third-party CDN, speeding up rendering and removing an external dependency that could break icons if it went down.", + "category": "Performance", + "mergedAt": "2026-08-14T18:00:17Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1776" + }, + { + "id": "tutorials-ims#1773", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1773, + "title": "ci(rebuild-content): enable keyless DEV content publishing (DRAFT — needs DEV approuter key seed)", + "summary": "Enabled server-side content publishing for the development environment so routine content refreshes no longer need a manual key pasted in during deploys.", + "category": "Maintenance", + "mergedAt": "2026-08-14T16:31:03Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1773" + }, + { + "id": "tutorials-ims#1772", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1772, + "title": "build(deploy): allow DEV/QA deploys from a fresh worktree; keep PROD strict", + "summary": "Relaxed deploy tooling to allow development and QA deploys from an isolated workspace while keeping production deploys strict.", + "category": "Maintenance", + "mergedAt": "2026-08-14T16:30:50Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1772" + }, + { + "id": "tutorials-ims#1770", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1770, + "title": "Dropped unused locale data from the UI5 bootstrap", + "summary": "Removed unused locale and calendar data from the UI5 bundle that loads on every page, shrinking it by nearly 80% (from 16 MB to 3.5 MB) for a much faster first load.", + "category": "Performance", + "mergedAt": "2026-08-14T14:41:58Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1770" + }, + { + "id": "tutorials-ims#1769", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1769, + "title": "Author pages survive overnight content rebuilds", + "summary": "Author profile pages no longer vanish (404) after nightly catalog rebuilds, so links to an author's page stay reliably available.", + "category": "Fix", + "mergedAt": "2026-08-14T14:20:14Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1769" + }, + { + "id": "tutorials-ims#1767", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1767, + "title": "Shorter edge cache and reduced homepage layout shift", + "summary": "Lowered the CDN cache window so newly published content appears within minutes instead of up to a day, and reserved space for homepage video and community sections to cut layout shift by over 90%.", + "category": "Performance", + "mergedAt": "2026-08-14T13:14:56Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1767" + }, + { + "id": "tutorials-ims#1768", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1768, + "title": "Completion tracking now includes the field badges depend on", + "summary": "Tutorial completions now carry the tracking identifier the badging system needs, plus backfill and resend tooling for past completions, so badges get awarded reliably.", + "category": "Fix", + "mergedAt": "2026-08-14T13:13:36Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1768" + }, + { + "id": "tutorials-ims#1766", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1766, + "title": "Alerts can use free-text call-to-action URLs again", + "summary": "The alert call-to-action URL field in the admin UI now keeps a hand-typed URL instead of discarding anything not in the suggestion list.", + "category": "Fix", + "mergedAt": "2026-08-14T12:39:38Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1766" + }, + { + "id": "tutorials-ims#1765", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1765, + "title": "Hide \"More from author\" rail in embedded tutorials", + "summary": "When a tutorial is embedded in another page, the cross-tutorial \"More from this author\" rail is now hidden so the embed stays focused on its own content.", + "category": "Fix", + "mergedAt": "2026-08-14T10:21:43Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1765" + }, + { + "id": "tutorials-ims#1764", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1764, + "title": "Byline fallback links tutorials to established author pages", + "summary": "Tutorials without explicit author frontmatter now link their byline to an existing author's page when the top contributor already has one, so more tutorials are correctly attributed without wrongly crediting bots or reviewers.", + "category": "Feature", + "mergedAt": "2026-08-14T10:15:30Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1764" + }, + { + "id": "tutorials-ims#1762", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1762, + "title": "Dropdown value help for link-health override in admin", + "summary": "The link-health override field in the admin UI now offers a proper OK/SLOW/BROKEN dropdown instead of a free-text box, making it clear what values are valid.", + "category": "Fix", + "mergedAt": "2026-08-14T06:40:53Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1762" + }, + { + "id": "tutorials-ims#1759", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1759, + "title": "QA navigator no longer wiped by content rebuilds", + "summary": "The QA author-preview navigator is now preserved across content-rebuild swaps, ending the recurring issue where it kept disappearing after a rebuild.", + "category": "Fix", + "mergedAt": "2026-08-14T05:48:49Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1759" + }, + { + "id": "tutorials-ims#1760", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1760, + "title": "Local deploys now build the QA preview navigator", + "summary": "Fixed local deploys so the QA author-preview tutorial navigator is built and shipped rather than serving a broken (404) page, with a guard to catch it if it ever regresses.", + "category": "Fix", + "mergedAt": "2026-08-14T05:48:38Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1760" + }, + { + "id": "tutorials-ims#1761", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1761, + "title": "Author pages exclude unpublished and deleted tutorials", + "summary": "Author pages, the \"more from author\" rail, and bylines now only show published, active tutorials, so unpublished or removed content no longer lingers on author profiles.", + "category": "Fix", + "mergedAt": "2026-08-14T05:48:23Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1761" + }, + { + "id": "tutorials-ims#1757", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1757, + "title": "Release v1.14.0: What's New page, author detail pages, Devtoberfest Signups report", + "summary": "Production release bundling the What's New page, author detail pages, and the Devtoberfest signups report.", + "category": "Maintenance", + "mergedAt": "2026-08-14T01:42:34Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1757" + }, + { + "id": "tutorials-ims#1756", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1756, + "title": "New public What's New page", + "summary": "Added a public What's New page at /whats-new/ that groups recent platform improvements by week in plain language, so you can see at a glance what's changed on developers.sap.com.", + "category": "Feature", + "mergedAt": "2026-08-14T00:22:13Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1756" + }, + { + "id": "tutorials-ims#1755", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1755, + "title": "feat(#1732): other tutorials by this author (rail + author page)", + "summary": "Readers can now discover more tutorials by the same author through an inline rail and a dedicated author page.", + "category": "Feature", + "mergedAt": "2026-08-13T23:56:26Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1755" + }, + { + "id": "tutorials-ims#1754", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1754, + "title": "Devtoberfest signups analytics report", + "summary": "A new analytical report in the admin dashboard shows Devtoberfest signup trends by day and geography, giving content managers instant visibility into registration activity.", + "category": "Feature", + "mergedAt": "2026-08-13T23:19:22Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1754" + }, + { + "id": "tutorials-ims#1753", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1753, + "title": "Admin editor: long-form fields now use a proper text area", + "summary": "Long text fields such as descriptions and markdown content in the admin content editor now render as a properly-sized textarea, making it much more comfortable to write and review multi-paragraph content.", + "category": "Fix", + "mergedAt": "2026-08-13T22:30:12Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1753" + }, + { + "id": "tutorials-ims#1751", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1751, + "title": "No more red error highlighting on unrecognised code tokens", + "summary": "Code blocks no longer show distracting red error styling from the syntax highlighter on tokens it could not parse — those tokens now render as plain text instead of looking like errors.", + "category": "Fix", + "mergedAt": "2026-08-13T22:11:49Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1751" + }, + { + "id": "tutorials-ims#1750", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1750, + "title": "Clearer quiz badge and current-step indicator", + "summary": "The quiz completion badge is now easier to spot, and your current tutorial step is highlighted with a ring and a subtle pulse animation so you can always see where you are at a glance.", + "category": "Fix", + "mergedAt": "2026-08-13T22:11:12Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1750" + }, + { + "id": "tutorials-ims#1749", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1749, + "title": "Devtoberfest session times now shown in your local timezone only", + "summary": "Devtoberfest sessions and activity times now display exclusively in your local timezone, removing the confusing dual-timezone display that showed UTC alongside local time.", + "category": "Fix", + "mergedAt": "2026-08-13T21:56:31Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1749" + }, + { + "id": "tutorials-ims#1748", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1748, + "title": "Author guide: Mission and Group content model explained", + "summary": "Updated author documentation now clarifies how missions map to groups in the new platform and explains how to structure multi-step learning paths as groups — essential reading for contributors building tutorial series.", + "category": "Docs", + "mergedAt": "2026-08-13T21:44:51Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1748" + }, + { + "id": "tutorials-ims#1747", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1747, + "title": "Multi-select quiz answers now validate correctly", + "summary": "Quiz questions that require selecting multiple correct answers (checkboxes) now validate correctly, so tutorials using multi-select questions work as expected instead of falsely rejecting valid answers.", + "category": "Fix", + "mergedAt": "2026-08-13T21:41:01Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1747" + }, + { + "id": "tutorials-ims#1746", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1746, + "title": "Devtoberfest live session recordings show YouTube thumbnails", + "summary": "Recorded Devtoberfest live-stream sessions now display their YouTube thumbnail previews on the sessions page instead of showing a blank placeholder image.", + "category": "Fix", + "mergedAt": "2026-08-13T21:34:23Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1746" + }, + { + "id": "tutorials-ims#1744", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1744, + "title": "AEM-legacy multi-paragraph notes render as a single callout", + "summary": "Tutorial notes and callouts that were originally authored across multiple paragraphs in the old AEM system now render as a single properly-formatted block instead of splitting into bare disconnected text fragments.", + "category": "Fix", + "mergedAt": "2026-08-13T21:31:34Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1744" + }, + { + "id": "tutorials-ims#1739", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1739, + "title": "Joule button works in embedded reader mode", + "summary": "The Joule AI assistant button in the read-only embedded tutorial view now correctly opens the Joule panel when clicked, instead of silently doing nothing.", + "category": "Fix", + "mergedAt": "2026-08-13T21:06:40Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1739" + }, + { + "id": "tutorials-ims#1738", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1738, + "title": "SAP CodeJam events appear in the homepage events band", + "summary": "Upcoming SAP CodeJam events now appear in the homepage events section alongside other community events, so visitors can discover in-person learning opportunities without having to navigate to a separate page.", + "category": "Fix", + "mergedAt": "2026-08-13T21:05:59Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1738" + }, + { + "id": "tutorials-ims#1737", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1737, + "title": "Gamification badge delivery resumes after credential fix", + "summary": "Badge and point awards to the gamification system resume reliably after fixing how the platform reads authentication credentials — completions that were queued will now flush through.", + "category": "Fix", + "mergedAt": "2026-08-13T21:03:57Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1737" + }, + { + "id": "tutorials-ims#1735", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1735, + "title": "docs: build site from DEV + register discovery-center page in sidebar", + "summary": "The documentation site now builds from the leading-edge DEV branch so upcoming features can be previewed before release.", + "category": "Docs", + "mergedAt": "2026-08-13T19:23:16Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1735" + }, + { + "id": "tutorials-ims#1734", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1734, + "title": "Release DEV → main (v1.14.0)", + "summary": "Production release promoting the latest DEV changes.", + "category": "Maintenance", + "mergedAt": "2026-08-13T19:06:29Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1734" + }, + { + "id": "tutorials-ims#1733", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1733, + "title": "Docs: SAP Discovery Center .model.json integration", + "summary": "Developer documentation now covers the `.model.json` endpoint that feeds SAP Discovery Center mission cards, clarifying the contract between the developer portal and the Discovery Center catalog.", + "category": "Docs", + "mergedAt": "2026-08-13T18:08:22Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1733" + }, + { + "id": "tutorials-ims#1731", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1731, + "title": "Badge delivery token flow fixed", + "summary": "Badge and point awards now complete successfully after a server-side credential flow issue that was silently blocking all deliveries has been resolved.", + "category": "Fix", + "mergedAt": "2026-08-13T16:54:48Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1731" + }, + { + "id": "tutorials-ims#1730", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1730, + "title": "More predictable platform releases", + "summary": "Platform releases are now batched behind a stable integration branch, making production updates more predictable and reducing the risk of mid-sprint changes reaching users before they are fully verified.", + "category": "Maintenance", + "mergedAt": "2026-08-13T16:47:04Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1730" + }, + { + "id": "tutorials-ims#1728", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1728, + "title": "Devtoberfest contest window: countdown timer with exact times and timezone", + "summary": "The Devtoberfest contest period now shows a live countdown timer with the exact start and end times in your local timezone, plus a tooltip explaining the contest window rules so you know precisely when your submissions count.", + "category": "Feature", + "mergedAt": "2026-08-13T16:22:27Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1728" + }, + { + "id": "tutorials-ims#1727", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1727, + "title": "Homepage link-health overrides apply correctly at build time", + "summary": "Link health overrides set by content authors in the admin interface are now correctly applied when the page is built, preventing valid links from being incorrectly flagged as broken in the homepage navigation.", + "category": "Fix", + "mergedAt": "2026-08-13T16:21:18Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1727" + }, + { + "id": "tutorials-ims#1724", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1724, + "title": "Embedded tutorials now have step navigation, Joule, and Next controls", + "summary": "Tutorials embedded in third-party apps now include a persistent action bar with step navigation, Joule AI assistant access, and a Next button, making the embedded reading experience as interactive as the full developer portal.", + "category": "Feature", + "mergedAt": "2026-08-13T15:01:45Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1724" + }, + { + "id": "tutorials-ims#1723", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1723, + "title": "New operational alerts for pipeline errors, secrets, broken links, and stuck publishes", + "summary": "Automated alerts now fire when the content rebuild pipeline encounters errors, secrets approach expiry, broken links are detected, or a content publish gets stuck — reducing time-to-detection for platform issues.", + "category": "Feature", + "mergedAt": "2026-08-13T14:48:50Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1723" + }, + { + "id": "tutorials-ims#1721", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1721, + "title": "Devtoberfest: iCal and RSS calendar feeds plus add-to-calendar links", + "summary": "You can now subscribe to the full Devtoberfest session schedule via iCal or RSS, and add individual sessions to your calendar with a single click — making it easy to plan which sessions to attend from your existing calendar app.", + "category": "Feature", + "mergedAt": "2026-08-13T14:43:17Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1721" + }, + { + "id": "tutorials-ims#1722", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1722, + "title": "Security dependency updates (undici, sharp, tar)", + "summary": "Production dependencies undici, sharp, and tar have been updated to resolve known security vulnerabilities.", + "category": "Maintenance", + "mergedAt": "2026-08-13T14:36:19Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1722" + }, + { + "id": "tutorials-ims#1719", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1719, + "title": "Tutorial pages no longer flash unstyled components before load", + "summary": "Tutorial pages no longer briefly flicker with unstyled UI5 browser components before the UI framework finishes initialising — content is now hidden until it is ready, removing the visual flash on page load.", + "category": "Fix", + "mergedAt": "2026-08-13T13:50:49Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1719" + }, + { + "id": "tutorials-ims#1713", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1713, + "title": "Tutorial breadcrumb step-picker respects authored sequence order", + "summary": "The breadcrumb dropdown that lets you jump between tutorial steps now lists them in their correct authored sequence rather than alphabetically, so the picker matches the actual reading order of a mission or group.", + "category": "Fix", + "mergedAt": "2026-08-13T01:53:31Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1713" + }, + { + "id": "tutorials-ims#1712", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1712, + "title": "QA channel navigator: search and filter only (no homepage sections)", + "summary": "The tutorial navigator on the QA content preview channel now shows only the search and filter interface, dropping the promotional homepage sections that were inappropriate for a content review environment.", + "category": "Fix", + "mergedAt": "2026-08-13T01:37:39Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1712" + }, + { + "id": "tutorials-ims#1711", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1711, + "title": "Event-display kiosk WebSocket no longer requires login", + "summary": "The live event display screen used at SAP community events can now establish its real-time WebSocket connection without requiring an authenticated session, fixing the connection errors that were disconnecting kiosk displays.", + "category": "Fix", + "mergedAt": "2026-08-13T00:37:15Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1711" + }, + { + "id": "tutorials-ims#1710", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1710, + "title": "Joule help button no longer overlaps the Next navigation button", + "summary": "The Joule AI help floating button no longer covers the Next navigation button when reading tutorials in a group, so both controls are independently accessible without one obscuring the other.", + "category": "Fix", + "mergedAt": "2026-08-12T22:52:01Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1710" + }, + { + "id": "tutorials-ims#1709", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1709, + "title": "Hotfix content rebuilds now reference current JS assets", + "summary": "Single-tutorial hotfix rebuilds now correctly embed versioned JavaScript asset references in the published HTML, preventing visitors from receiving stale interactive components after a quick content update.", + "category": "Fix", + "mergedAt": "2026-08-12T22:18:36Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1709" + }, + { + "id": "tutorials-ims#1708", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1708, + "title": "First-time visitors are no longer auto-redirected to login", + "summary": "The portal no longer automatically triggers a login redirect for first-time visitors — only returning users who previously authenticated are silently re-signed in, giving new readers a frictionless anonymous experience.", + "category": "Fix", + "mergedAt": "2026-08-12T21:54:47Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1708" + }, + { + "id": "tutorials-ims#1707", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1707, + "title": "Admin change history restored for content records", + "summary": "Edit history logging in the admin interface is working again — changes to tutorials, missions, and configuration now correctly appear in the Change History panel as expected.", + "category": "Fix", + "mergedAt": "2026-08-12T21:48:58Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1707" + }, + { + "id": "tutorials-ims#1706", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1706, + "title": "Tutorial step-timing statistics now persist correctly on HANA", + "summary": "A database compatibility issue that caused tutorial reading-time statistics to fail silently on HANA (while appearing to work locally) has been resolved by switching to the correct SAP CAP query API.", + "category": "Fix", + "mergedAt": "2026-08-12T21:29:18Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1706" + }, + { + "id": "tutorials-ims#1704", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1704, + "title": "Admin shelf and verb-definition reports load data automatically", + "summary": "The homepage shelf configuration and verb definitions list pages in the admin interface now load their data automatically when opened, rather than requiring a manual refresh click.", + "category": "Fix", + "mergedAt": "2026-08-12T21:28:55Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1704" + }, + { + "id": "tutorials-ims#1705", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1705, + "title": "Empty admin notification popup no longer shows blank space", + "summary": "The admin notification popup now displays a clean empty state when there are no pending alerts, instead of showing an awkward layout gap.", + "category": "Fix", + "mergedAt": "2026-08-12T21:28:34Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1705" + }, + { + "id": "tutorials-ims#1703", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1703, + "title": "AEM-legacy blockquoted code samples render inside their code window", + "summary": "Code samples in tutorials originally authored in AEM that were wrapped in blockquotes now render correctly inside the code window instead of appearing as raw text outside it.", + "category": "Fix", + "mergedAt": "2026-08-12T21:27:02Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1703" + }, + { + "id": "tutorials-ims#1702", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1702, + "title": "Content publish: rejected reverts shown correctly, not as failures", + "summary": "When a content publish correctly blocks a rollback to an older version, the outcome is now shown as 'Rejected' rather than misleadingly displayed as a verification failure.", + "category": "Fix", + "mergedAt": "2026-08-12T21:20:40Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1702" + }, + { + "id": "tutorials-ims#1701", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1701, + "title": "Tutorial contributor name no longer shows as 'Unknown'", + "summary": "Tutorial overview pages now correctly display the contributor's display name instead of 'Unknown' for authors whose profile is linked to an SAP Community account.", + "category": "Fix", + "mergedAt": "2026-08-12T21:16:09Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1701" + }, + { + "id": "tutorials-ims#1699", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1699, + "title": "Next/Previous navigation stays within the current group or mission", + "summary": "When reading a tutorial that is part of a group or mission, the Next and Previous buttons now stay within that group's sequence instead of jumping to unrelated tutorials from outside the learning path.", + "category": "Fix", + "mergedAt": "2026-08-12T19:18:13Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1699" + }, + { + "id": "tutorials-ims#1700", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1700, + "title": "fix(ci): mark model-json-handler slug lookups as pre-canonicalized", + "summary": "Fixed a slug-lookup guard for the legacy tutorial-model endpoint.", + "category": "Maintenance", + "mergedAt": "2026-08-12T19:15:49Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1700" + }, + { + "id": "tutorials-ims#1698", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1698, + "title": "New alerts for gamification badge backlog and exhausted retries", + "summary": "Operators now receive automated alerts when the badge and point delivery backlog to the gamification system is growing, or when all retry attempts have been exhausted — enabling faster incident response before developers notice missing rewards.", + "category": "Feature", + "mergedAt": "2026-08-12T19:12:26Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1698" + }, + { + "id": "tutorials-ims#1697", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1697, + "title": "fix(ci): allowlist /content/tutorial-model/*slug as srv-only (route-drift guard)", + "summary": "Fixed a route-consistency guard for the legacy tutorial-model endpoint.", + "category": "Maintenance", + "mergedAt": "2026-08-12T18:46:30Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1697" + }, + { + "id": "tutorials-ims#1695", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1695, + "title": "Badge delivery failures are now visible in metrics and alerts", + "summary": "Badge and point award failures are now accurately reflected in platform metrics and trigger operational alerts, replacing the previous silent failure mode that made badge delivery issues invisible to the team.", + "category": "Feature", + "mergedAt": "2026-08-12T18:19:42Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1695" + }, + { + "id": "tutorials-ims#1696", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1696, + "title": "test(#1673): fix seed-thirdparty test path after HomepageShelves CSV move", + "summary": "Fixed a unit test after a seed data file was relocated.", + "category": "Maintenance", + "mergedAt": "2026-08-12T18:18:15Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1696" + }, + { + "id": "tutorials-ims#1691", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1691, + "title": "Homepage content edits now automatically trigger a rebuild", + "summary": "Editing homepage shelves, featured topics, or other catalog content in the admin interface now automatically triggers a content rebuild, so changes reach visitors without needing a separate manual rebuild step.", + "category": "Fix", + "mergedAt": "2026-08-12T17:38:20Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1691" + }, + { + "id": "tutorials-ims#1690", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1690, + "title": "QA tutorial navigator now accessible at its own URL", + "summary": "The QA preview version of the tutorial navigator is now correctly served at its own path, allowing content reviewers to access it independently from the main navigator.", + "category": "Fix", + "mergedAt": "2026-08-12T17:37:59Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1690" + }, + { + "id": "tutorials-ims#1693", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1693, + "title": "Admin UI edits and deletes now work reliably in production", + "summary": "Admin panel content updates and deletions now work correctly for all users in production, fixing an edge compatibility issue that was causing edit and delete actions to fail silently.", + "category": "Fix", + "mergedAt": "2026-08-12T17:37:05Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1693" + }, + { + "id": "tutorials-ims#1694", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1694, + "title": "Live event display WebSocket connection fixed", + "summary": "The real-time event display used at SAP community events can now establish its WebSocket connection correctly after WebSocket support was explicitly enabled in the app router configuration.", + "category": "Fix", + "mergedAt": "2026-08-12T17:35:13Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1694" + }, + { + "id": "tutorials-ims#1692", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1692, + "title": "Deployments verified before going live to prevent broken pages", + "summary": "New releases now automatically verify that all page assets are in place before the update goes live, catching any missing CSS or JavaScript references before visitors could encounter broken pages.", + "category": "Maintenance", + "mergedAt": "2026-08-12T17:34:03Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1692" + }, + { + "id": "tutorials-ims#1687", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1687, + "title": "Developer Advocate photos update immediately after upload", + "summary": "Developer Advocate profile photos now appear immediately after uploading a new image — the CDN cache is invalidated on save so the updated photo is visible right away instead of being stuck behind a stale cached version.", + "category": "Fix", + "mergedAt": "2026-08-12T16:15:26Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1687" + }, + { + "id": "tutorials-ims#1686", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1686, + "title": "Devtoberfest Sessions page no longer blanks on invalid timezone data", + "summary": "The Devtoberfest Sessions page now fails gracefully if a session has an unrecognised timezone value, rendering the remaining sessions normally instead of going completely blank.", + "category": "Fix", + "mergedAt": "2026-08-12T16:14:12Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1686" + }, + { + "id": "tutorials-ims#1685", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1685, + "title": "SAP Discovery Center mission cards restored", + "summary": "The `.model.json` endpoint that SAP Discovery Center uses to display developer portal missions has been reinstated, restoring the integration that was broken during the migration away from the legacy AEM platform.", + "category": "Fix", + "mergedAt": "2026-08-12T15:48:41Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1685" + }, + { + "id": "tutorials-ims#1677", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1677, + "title": "CSS and JS assets no longer 404 after a fingerprinted deployment", + "summary": "JavaScript and CSS bundles from the previous deployment are now retained during new releases, preventing the brief window where visitors with cached HTML could request a versioned asset that no longer existed on the server.", + "category": "Fix", + "mergedAt": "2026-08-12T14:43:49Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1677" + }, + { + "id": "tutorials-ims#1682", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1682, + "title": "QA channel quiz questions fully rendered (dependency fix)", + "summary": "Quiz questions and interactive step validation now display correctly on the content preview channel, fully resolving the issue that had prevented them from appearing in preview pages.", + "category": "Fix", + "mergedAt": "2026-08-12T12:47:04Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1682" + }, + { + "id": "tutorials-ims#1680", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1680, + "title": "Quiz questions now render on the QA preview channel", + "summary": "Tutorial quiz questions and interactive step validation now display correctly on the QA content preview channel after a missing JS asset reference file was added to the QA build process.", + "category": "Fix", + "mergedAt": "2026-08-12T12:15:47Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1680" + }, + { + "id": "tutorials-ims#1676", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1676, + "title": "User account auto-provisioning works reliably on HANA", + "summary": "Automatic user account creation when a visitor links their SAP Community profile now works correctly in the HANA-backed production environment, fixing a silent insert failure that left users unable to have their progress tracked.", + "category": "Fix", + "mergedAt": "2026-08-12T02:17:37Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1676" + }, + { + "id": "tutorials-ims#1673", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1673, + "title": "Admin-editable configuration no longer overwritten on deployment", + "summary": "Configuration values that admins edit at runtime — homepage shelves, featured topics — are no longer overwritten by seed data during deployment, preventing live edits from being silently wiped on every new release.", + "category": "Fix", + "mergedAt": "2026-08-12T02:12:56Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1673" + }, + { + "id": "tutorials-ims#1674", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1674, + "title": "Tutorial right rail restored after CDS code block layout regression", + "summary": "An unbalanced HTML tag in the CDS syntax highlighter was pushing the tutorial progress sidebar off-screen; the fix restores correct side-by-side layout so the right rail displays normally alongside CDS code samples.", + "category": "Fix", + "mergedAt": "2026-08-12T01:54:53Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1674" + }, + { + "id": "tutorials-ims#1671", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1671, + "title": "fix(#1659 Phase 2): make pages-routes smoke markers minification-safe", + "summary": "Made deploy smoke tests robust to minified HTML so they stop failing on healthy pages.", + "category": "Fix", + "mergedAt": "2026-08-11T23:55:09Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1671" + }, + { + "id": "tutorials-ims#1670", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1670, + "title": "Browse, Topics, and other content pages now served from HANA", + "summary": "The Browse, Topics, Verbs, Sitemap, and other non-tutorial content pages are now served dynamically from the CAP/HANA content store, completing the migration away from static Hugo files and enabling live content updates without a full redeploy.", + "category": "Feature", + "mergedAt": "2026-08-11T23:03:19Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1670" + }, + { + "id": "tutorials-ims#1669", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1669, + "title": "Per-tutorial override for the content publish rollback protection", + "summary": "Content operators can now override the rollback-protection policy on a per-tutorial basis when a genuine revert is needed, avoiding the all-or-nothing configuration change that was previously required.", + "category": "Feature", + "mergedAt": "2026-08-11T22:46:40Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1669" + }, + { + "id": "tutorials-ims#1666", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1666, + "title": "CDS syntax highlighting colours restored in tutorial code blocks", + "summary": "SAP Core Data Services (CDS) code blocks in tutorials now show correct syntax highlighting colours after a CSS mapping regression was identified and fixed.", + "category": "Fix", + "mergedAt": "2026-08-11T21:51:23Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1666" + }, + { + "id": "tutorials-ims#1665", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1665, + "title": "fix(guard): unbreak main CI — move slug-canonical marker adjacent to .where", + "summary": "Fixed a code-quality guard that was failing the build.", + "category": "Maintenance", + "mergedAt": "2026-08-11T21:51:14Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1665" + }, + { + "id": "tutorials-ims#1664", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1664, + "title": "Content pages can now be served from HANA (initial rollout)", + "summary": "The infrastructure for serving non-tutorial content pages from the HANA content store is now in place, initially enabled in a validation mode to allow incremental verification before the full cut-over to dynamic page serving.", + "category": "Feature", + "mergedAt": "2026-08-11T20:20:18Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1664" + }, + { + "id": "tutorials-ims#1663", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1663, + "title": "Puzzle progress survives login, and orphaned drafts are recovered", + "summary": "Progress made on coding puzzles before signing in is now correctly merged with your account when you log in, completed puzzles are properly recognised after a browser refresh, and orphaned draft submissions are automatically recovered.", + "category": "Fix", + "mergedAt": "2026-08-11T18:39:53Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1663" + }, + { + "id": "tutorials-ims#1662", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1662, + "title": "Repository licensed under Apache-2.0 (OSPO compliance)", + "summary": "The developer portal codebase is now explicitly licensed under Apache-2.0 with REUSE-compliant headers, meeting SAP open-source compliance requirements as the repository moves toward public visibility.", + "category": "Maintenance", + "mergedAt": "2026-08-11T18:06:23Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1662" + }, + { + "id": "tutorials-ims#1661", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1661, + "title": "CDS code highlighting restored on HANA-published tutorials", + "summary": "CDS syntax highlighting was missing from published tutorials after a build pipeline regression; the syntax highlighter is now correctly invoked when tutorials are published to the content store.", + "category": "Fix", + "mergedAt": "2026-08-11T17:04:46Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1661" + }, + { + "id": "tutorials-ims#1660", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1660, + "title": "Link-health checker no longer flags internal or auth-gated URLs as broken", + "summary": "The homepage link-health checker no longer incorrectly marks internal portal URLs and login-protected pages as broken — those links are now either skipped or probed with the correct authentication context.", + "category": "Fix", + "mergedAt": "2026-08-11T16:31:21Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1660" + }, + { + "id": "tutorials-ims#1658", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1658, + "title": "Versioned JS and CSS bundles are retained across deployments", + "summary": "Content-hashed JavaScript and CSS assets are now preserved when a new version is deployed, eliminating the brief window where visitors with cached HTML pages could request a bundle that no longer existed on the server.", + "category": "Feature", + "mergedAt": "2026-08-11T15:24:57Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1658" + }, + { + "id": "tutorials-ims#1654", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1654, + "title": "Navigator mission cards link correctly for nested-group missions", + "summary": "Mission cards in the tutorial navigator now link correctly when the mission's tutorials are structured as nested groups, fixing cards that previously led to a dead end.", + "category": "Fix", + "mergedAt": "2026-08-11T15:07:19Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1654" + }, + { + "id": "tutorials-ims#1656", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1656, + "title": "Homepage footer cleaned up: broken links and padlock icon hidden", + "summary": "Broken placeholder links in the homepage directory footer and a stray sign-in padlock icon have been hidden, cleaning up footer content that was inadvertently visible since launch.", + "category": "Fix", + "mergedAt": "2026-08-11T15:03:54Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1656" + }, + { + "id": "tutorials-ims#1655", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1655, + "title": "Mobile navigation menu now opens on tap", + "summary": "On mobile devices, tapping the Navigate button in the site header now correctly opens the navigation popover instead of doing nothing.", + "category": "Fix", + "mergedAt": "2026-08-11T14:59:29Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1655" + }, + { + "id": "tutorials-ims#1653", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1653, + "title": "docs: register approuter-static-serving page in sidebar (fix Pages CI)", + "summary": "Registered a new architecture page in the documentation sidebar.", + "category": "Docs", + "mergedAt": "2026-08-11T14:37:09Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1653" + }, + { + "id": "tutorials-ims#1649", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1649, + "title": "Admin portal no longer reload-loops on authorization errors", + "summary": "The admin portal no longer enters an infinite reload loop when a session lacks the required authorization scope — it now shows a clear access-denied message so the user knows what action to take.", + "category": "Fix", + "mergedAt": "2026-08-11T14:23:46Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1649" + }, + { + "id": "tutorials-ims#1645", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1645, + "title": "spec: HANA/CAP content-page serving + asset-hash retention (durable fix)", + "summary": "Design spec for serving all pages from the database and retaining asset hashes across deploys.", + "category": "Docs", + "mergedAt": "2026-08-11T13:56:37Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1645" + }, + { + "id": "tutorials-ims#1644", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1644, + "title": "App router recovers from transient module load errors on refresh", + "summary": "The application router now retries its module-loading step when a transient import error occurs, preventing a page refresh from leaving the site in a broken state after a brief network hiccup during startup.", + "category": "Fix", + "mergedAt": "2026-08-11T13:56:18Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1644" + }, + { + "id": "tutorials-ims#1647", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1647, + "title": "Devtoberfest App Space missions load correctly", + "summary": "The Devtoberfest App Space now correctly resolves which mission is associated with an event, fixing a lookup direction bug that was preventing mission content from loading on the App Space page.", + "category": "Fix", + "mergedAt": "2026-08-11T13:55:55Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1647" + }, + { + "id": "tutorials-ims#1648", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1648, + "title": "Animated GIFs in tutorials now animate correctly", + "summary": "Animated GIFs embedded in tutorial content now play their animations correctly — they are no longer flattened to static images by the CDN image processor.", + "category": "Fix", + "mergedAt": "2026-08-11T13:54:53Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1648" + }, + { + "id": "tutorials-ims#1646", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1646, + "title": "Images and links inside Prerequisites tables now render correctly", + "summary": "Images and hyperlinks placed inside Prerequisites tables in tutorial content now render as expected instead of showing raw markdown syntax or escaped HTML tags.", + "category": "Fix", + "mergedAt": "2026-08-11T13:12:22Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1646" + }, + { + "id": "tutorials-ims#1643", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1643, + "title": "chore(deploy): bump prod tutorials-srv instances 2->4 for launch load", + "summary": "Scaled the production backend to four instances to absorb launch-day load.", + "category": "Maintenance", + "mergedAt": "2026-08-11T11:30:47Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1643" + }, + { + "id": "tutorials-ims#1642", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1642, + "title": "docs(architecture): design for durable multi-instance approuter static serving", + "summary": "Design document for serving static assets reliably across multiple server instances.", + "category": "Docs", + "mergedAt": "2026-08-11T11:18:47Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1642" + }, + { + "id": "tutorials-ims#1641", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1641, + "title": "ci(rebuild): guard runtime-push path against bare island paths (follow-up #1628)", + "summary": "Added a safeguard so content rebuilds can no longer ship broken JavaScript asset paths.", + "category": "Fix", + "mergedAt": "2026-08-11T11:18:35Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1641" + }, + { + "id": "tutorials-ims#1636", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1636, + "title": "Intermittent blank page on load fixed (bootstrap race condition)", + "summary": "A timing race between the app router's legacy redirect module and its initial page load was causing intermittent blank pages or redirect loops for some visitors — the startup sequence is now deterministic.", + "category": "Fix", + "mergedAt": "2026-08-11T10:44:27Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1636" + }, + { + "id": "tutorials-ims#1635", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1635, + "title": "chore(deploy): bump tutorials-srv disk-quota 1024M->2048M", + "summary": "Raised the backend service's disk allocation to match what production needs.", + "category": "Maintenance", + "mergedAt": "2026-08-11T10:43:45Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1635" + }, + { + "id": "tutorials-ims#1628", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1628, + "title": "Content rebuilds now ship correct versioned JS assets", + "summary": "Single-tutorial hotfix rebuilds triggered via GitHub Actions now correctly generate versioned JavaScript asset references, ensuring published pages load current interactive components rather than stale cached code.", + "category": "Fix", + "mergedAt": "2026-08-11T10:27:46Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1628" + }, + { + "id": "tutorials-ims#1626", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1626, + "title": "fix(ci): drop build:island-manifest from postbuild:apps guard suite", + "summary": "Fixed a build guard that was failing every continuous-integration run.", + "category": "Maintenance", + "mergedAt": "2026-08-11T04:13:07Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1626" + }, + { + "id": "tutorials-ims#1627", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1627, + "title": "chore(release): bump MTA version to 1.13.3 for PROD", + "summary": "Version bump ahead of a production release.", + "category": "Maintenance", + "mergedAt": "2026-08-11T03:42:01Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1627" + }, + { + "id": "tutorials-ims#1625", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1625, + "title": "SAP events display on the correct calendar day", + "summary": "SAP events on the homepage now show on the calendar day they actually occur, rather than being shifted by server-side timezone conversion — community events authored in a non-UTC timezone no longer appear on the wrong date.", + "category": "Fix", + "mergedAt": "2026-08-11T02:27:41Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1625" + }, + { + "id": "tutorials-ims#1624", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1624, + "title": "Hotfix rebuilds blocked when current CSS fingerprints are not yet deployed", + "summary": "A safety guard now prevents single-tutorial hotfix rebuilds from going through if the current build's CSS fingerprints have not been deployed yet, avoiding a state where published tutorial HTML references styles that do not exist on the server.", + "category": "Maintenance", + "mergedAt": "2026-08-11T01:54:33Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1624" + }, + { + "id": "tutorials-ims#1623", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1623, + "title": "Cache invalidations now propagate across all server instances", + "summary": "Content cache and navigator cache invalidations now propagate reliably across all running server instances, preventing visitors from seeing stale content on one instance after a content publish updated another.", + "category": "Fix", + "mergedAt": "2026-08-11T01:48:51Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1623" + }, + { + "id": "tutorials-ims#1620", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1620, + "title": "fix(test): un-break unit CI — match island-src partial in module-load guards", + "summary": "Restored the unit-test suite after a template refactor changed how JavaScript bundles are referenced.", + "category": "Maintenance", + "mergedAt": "2026-08-11T01:06:45Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1620" + }, + { + "id": "tutorials-ims#1619", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1619, + "title": "Community event dates now show the locally authored day", + "summary": "Community events such as CodeJams and workshops now display the date as authored, rather than being shifted by server timezone conversion — events authored as starting on a Monday no longer appear as Sunday in the portal.", + "category": "Fix", + "mergedAt": "2026-08-11T00:30:15Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1619" + }, + { + "id": "tutorials-ims#1618", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1618, + "title": "SAP Community profile linking now accepts a pasted profile URL", + "summary": "Linking your SAP Community profile to your developer account now works when you paste the full profile URL, and automatically creates your account record if it does not yet exist.", + "category": "Fix", + "mergedAt": "2026-08-11T00:25:39Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1618" + }, + { + "id": "tutorials-ims#1617", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1617, + "title": "Raw image attributes no longer appear as text in option-tab blocks", + "summary": "Images inside option-tab blocks in tutorials no longer leak their raw HTML attributes as visible text below the image — the rendered output is now clean.", + "category": "Fix", + "mergedAt": "2026-08-11T00:21:08Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1617" + }, + { + "id": "tutorials-ims#1613", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1613, + "title": "Local builds now reliably reference correct versioned JS assets", + "summary": "The build step that maps Vue component names to their versioned JS filenames is now always run as part of the main build, fixing a long-standing issue where local builds shipped pages with unversioned JS paths that would not match the assets actually on the server.", + "category": "Maintenance", + "mergedAt": "2026-08-10T23:26:07Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1613" + }, + { + "id": "tutorials-ims#1612", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1612, + "title": "Concepts page no longer 404s on hard refresh with a query string", + "summary": "Refreshing or directly navigating to a `/concepts/` URL with a query parameter no longer returns a 404 — the route is now correctly handled server-side.", + "category": "Fix", + "mergedAt": "2026-08-10T22:05:34Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1612" + }, + { + "id": "tutorials-ims#1611", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1611, + "title": "Joule and SAP Fundamental Styles CSS are now cache-busted on update", + "summary": "The Joule AI assistant stylesheet and the SAP Fundamental Styles base CSS are now content-hashed, preventing browsers and CDN edges from serving stale cached versions of these critical stylesheets after a platform update.", + "category": "Fix", + "mergedAt": "2026-08-10T21:42:18Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1611" + }, + { + "id": "tutorials-ims#1610", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1610, + "title": "Topics page concept links now point to published content", + "summary": "Placeholder concept links on the Topics page now point to real published concept pages instead of broken placeholder slugs, so all concept browsing links reach actual content.", + "category": "Fix", + "mergedAt": "2026-08-10T21:36:54Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1610" + }, + { + "id": "tutorials-ims#1609", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1609, + "title": "Interactive JS components are now versioned to prevent stale code", + "summary": "Interactive JavaScript components on portal pages are now content-hashed so CDN edges and browsers always fetch the current version after a deployment, eliminating the stale-JS problem that could leave interactive page elements in a broken state.", + "category": "Fix", + "mergedAt": "2026-08-10T21:14:01Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1609" + }, + { + "id": "tutorials-ims#1608", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1608, + "title": "Developer Advocate profile card flip works correctly on iOS Safari", + "summary": "Developer Advocate profile cards now flip correctly on iOS Safari — the front photo is properly hidden when the card flips to reveal the back, instead of both sides being visible at the same time.", + "category": "Fix", + "mergedAt": "2026-08-10T20:41:25Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1608" + }, + { + "id": "tutorials-ims#1606", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1606, + "title": "Homepage verb tiles always navigate on click, even after hovering", + "summary": "Clicking a learning verb tile on the homepage now reliably navigates to the correct page even after hovering over the card triggered the flip animation — the click target was previously lost after the animation completed.", + "category": "Fix", + "mergedAt": "2026-08-10T20:28:18Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1606" + }, + { + "id": "tutorials-ims#1603", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1603, + "title": "Remaining page-level Hugo CSS files are now cache-busted", + "summary": "The remaining page-level stylesheets not yet covered by content hashing are now versioned, completing full CDN cache-busting coverage for CSS across the platform.", + "category": "Fix", + "mergedAt": "2026-08-10T20:18:48Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1603" + }, + { + "id": "tutorials-ims#1602", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1602, + "title": "Devtoberfest event registrations can now be saved to the database", + "summary": "Devtoberfest event registrations can now be correctly persisted — a missing database sequence for generating registration IDs was causing all registrations to fail silently.", + "category": "Fix", + "mergedAt": "2026-08-10T19:59:31Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1602" + }, + { + "id": "tutorials-ims#1601", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1601, + "title": "Hugo CSS files are content-hashed to prevent stale style delivery", + "summary": "Hugo-managed CSS files are now content-hashed at build time, ensuring CDN edges and browsers always retrieve the latest stylesheets after a new release rather than serving stale cached versions.", + "category": "Fix", + "mergedAt": "2026-08-10T19:54:57Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1601" + }, + { + "id": "tutorials-ims#1598", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1598, + "title": "Navigator Type and Experience filter lists render fully", + "summary": "The Type and Experience filter panels in the tutorial navigator now render all available options instead of being cut off partway through the list.", + "category": "Fix", + "mergedAt": "2026-08-10T19:53:40Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1598" + }, + { + "id": "tutorials-ims#1599", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1599, + "title": "Duplicate product tags in navigator filters are now merged", + "summary": "Duplicate Software Product tags in the tutorial navigator filter — caused by slight label variations across tutorial metadata — are now merged by display label, resulting in cleaner filter lists without repetitions.", + "category": "Fix", + "mergedAt": "2026-08-10T19:53:10Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1599" + }, + { + "id": "tutorials-ims#1597", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1597, + "title": "Option-tab controls in tutorials render as interactive buttons", + "summary": "Option-tab controls in tutorials now render as interactive buttons as intended, rather than showing the raw HTML tag text that was being escaped by the Markdown renderer.", + "category": "Fix", + "mergedAt": "2026-08-10T19:24:40Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1597" + }, + { + "id": "tutorials-ims#1593", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1593, + "title": "Explore page no longer breaks the Hugo build", + "summary": "A special character in the Explore page frontmatter description that was causing Hugo build failures has been escaped, restoring the ability to build the full site with the Explore page included.", + "category": "Fix", + "mergedAt": "2026-08-10T19:02:20Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1593" + }, + { + "id": "tutorials-ims#1589", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1589, + "title": "Homepage learning verb tiles updated", + "summary": "The learning verb tiles on the homepage — the Browse by, Learn how to, and Discover action categories — have been updated with refreshed copy and links.", + "category": "Feature", + "mergedAt": "2026-08-10T18:33:26Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1589" + }, + { + "id": "tutorials-ims#1588", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1588, + "title": "Tutorials can now be embedded in SAP Business AI Platform", + "summary": "Tutorials can now be rendered in a clean read-only mode inside SAP Business AI Platform (BAIP), with portal chrome hidden and only the tutorial content and step navigation exposed — enabling seamless in-context learning from within BAIP.", + "category": "Feature", + "mergedAt": "2026-08-10T18:23:34Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1588" + }, + { + "id": "tutorials-ims#1587", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1587, + "title": "Production app router no longer crash-loops under load", + "summary": "The production app router was running out of memory under real traffic and crash-looping; its memory allocation has been increased to handle the load seen since the platform went live.", + "category": "Fix", + "mergedAt": "2026-08-10T18:03:19Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1587" + }, + { + "id": "tutorials-ims#1586", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1586, + "title": "Devtoberfest Planner admin link resolves to the correct environment", + "summary": "The Devtoberfest Planner link in the admin interface now correctly resolves to the current environment — it was previously always pointing to DEV even when accessed from the PROD admin panel.", + "category": "Fix", + "mergedAt": "2026-08-10T17:27:35Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1586" + }, + { + "id": "tutorials-ims#1585", + "repo": "tutorials-ims", + "label": "Developer Portal", + "number": 1585, + "title": "Topics admin actions work reliably regardless of slug casing", + "summary": "Topic publish and unpublish actions in the admin interface now correctly normalise the topic slug before performing the lookup, fixing a case-sensitivity mismatch that was causing failures on any topic change.", + "category": "Fix", + "mergedAt": "2026-08-10T16:00:49Z", + "week": "2026-W33", + "weekStart": "2026-08-10", + "url": "https://github.com/sap-tutorials/tutorials-ims/pull/1585" + } + ] +}