Repository navigation
release v1.41.4 DEV to main promotion - #2929
Merged
Merged
Conversation
Root cause of the recurring prod+QA content-rebuild freeze: since #2896 (ac6b7e3) sap-fundamental.css is generated-from-source and NOT committed. It is the one fingerprinted stylesheet NOT Hugo-minified (head.html:73 is a bare `| fingerprint`), so its /css/<hash>.css URL == sha256 of the on-disk bytes. Post-#1659 a content rebuild publishes HANA-only and never ships CSS to the approuter (static changes only on a full MTA deploy). So building sap-fundamental.css from HEAD source on the rebuild path made the baked HTML reference a hash the DEPLOYED approuter does not serve whenever CSS source changed since the last deploy -> the approuter-asset guard blocked publish, freezing ALL content publishing until the next deploy. Fix: on the REBUILD path, fetch the sap-fundamental.css bytes the deployed approuter CURRENTLY serves (scripts/sync-approuter-css.cjs) so Hugo fingerprints to the SAME hash -> guard always passes, pages always styled, regardless of deploy lag. The DEPLOY path (build:all -> build:css from source) is unchanged and still rotates the hash on deploy; content-publish now follows it. Fail-open: a fresh env with nothing deployed falls back to build:css. fundamental-styles-icon.css stays a source build (Hugo `| minify`s it, so it self-heals). Every other fingerprinted stylesheet is committed and cannot drift. Also fixes the QA half of #2920: the QA workflow read secrets.APPROUTER_URL_QA (never created) when the value lives in the repo VARIABLE vars.APPROUTER_URL_QA (= DEV approuter, which serves QA content). That secrets-vs-vars typo made every QA rebuild die on `missing --approuter-url` since 2026-10-24. Both the sync step and the asset guard now read vars.APPROUTER_URL_QA; the prod workflow's own qa) branch in "Set approuter URL" is corrected to vars too. Verified end-to-end against both live approuters: sync -> Hugo -> the real check-approuter-assets guard reports "all 15 referenced /css assets served" on prod and dev (today it 404s on sap-fundamental). static-guards 17/17 and hugo-css-fingerprint + icon-subset tests (14) pass.
…css-guard fix(#2920): rebuild CSS follows deployed approuter (durable fix for content-publish freeze)
The asset-retention smoke gate flapped on 5 island CSS bundles (nav-dropdown/mini-navigator/app-space/event-display/navigator) that 404 on the approuter. Root cause: old Vite layouts emitted island CSS as separate assets/<name>-<hash>.css files; the current pipeline injects island CSS via JS (vite-plugin-css-injected-by-js) and emits NO assets/-prefixed bundles. Such a prior-manifest entry can never match a current file, and its carry-forward download (/css/assets/... or /js/assets/...) always 404s, so it lingered forever as an 'immediately-prior build' entry that mergeRetention re-carried every build. mergeRetention now drops any prior entry whose file starts with 'assets/' — the current build references nothing under that prefix. The generated _retained-assets.json is gitignored and regenerated on the next content rebuild / deploy, so this clears the stale entries without a manual JSON edit. No user impact (island CSS is JS-injected; nothing fetched those URLs) — this just stops the post-deploy smoke gate flapping on a healthy deploy. Adds a mergeRetention regression test.
…-prune fix(ci): prune legacy assets/-prefixed entries from asset retention
Commit 971622d (#2920) accidentally added a second bare `env:` above the existing one on the QA asset-guard step. Two env mappings on one step is invalid Actions YAML, so GitHub rejected the whole workflow file before any job ran -> run 40201211187 failed as a "workflow file issue" with no job logs, freezing QA content rebuilds. Fix: drop the extra empty env: line (one-line deletion).
fix(ci): remove duplicate env: key in QA rebuild workflow
…orials/ The clickable tag and experience chips on the tutorial object page (and the Overview meta tags) deep-linked to /tutorials/?tag=<slug> and /tutorials/?level=, but there is no listing route at /tutorials/ — the AppRouter forwards /tutorials/* to CAP /content/tutorials/:slug, so an empty slug returned 'Cannot GET /content/tutorials/'. Point the chips at /tutorial-navigator/, which reads ?tag= and ?level= as issue #161 deep-link entry params (hugo-apps/src/navigator/ url-params.ts). Update the clickable-chips smoke test, which was asserting the broken /tutorials/ target. Verified with an isolated Hugo render of the chip blocks.
fix(tutorials): tag/level chips link to /tutorial-navigator/ not /tutorials/
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release 1.41.4 — DEV → main promotion
Patch release promoting four fixes merged to
DEVsince 1.41.3 tomain.Version bumps
tutorials-ims).deploy/mta.yamltutorials-mcp)mta-mcp.yamlPatch: CI and UI fixes, no runtime schema change.
Changes in this window
/tutorial-navigator/(were 404ing at/tutorials/).env:key in the QA rebuild workflow that blocked QA content rebuilds entirely.assets/-prefixed CSS entries from the asset-retention list, stopping post-deploy smoke gate flaps.What's New
hugo/data/whats_new.jsonupdated with 5 new entries covering this window.Deploy
Merging does not auto-redeploy. Run a full MTA deploy after merge to ship #2928 (tag-chip fix) to PROD. #2924/#2926/#2927 are CI-only and take effect on the next GitHub Actions run off
main.🤖 Generated with Claude Code