Repository navigation
fix(tutorials): OS-option & alert rendering in nested substeps (#2703) - #2704
Merged
Merged
Conversation
#2703) Author feedback on the new blockquote alerts + OS option-settings surfaced six rendering bugs on /tutorials-qa/ (hana-clients-*). Root causes: 1. OPTION blocks nested inside numbered substeps emitted their Hugo shortcode flush-left with the panel body still indented. Goldmark then closed the surrounding list AND treated the indented ```fence``` inside the panel as literal indented-code, so substeps after [OPTION END] detached, code blocks showed raw backticks, and images/notes dropped. 2. {{< os-panel >}} is an angle-bracket shortcode, so its .Inner was never markdown-rendered — latent since OS options shipped (#173), exposed by the newly-nested QA tutorials. 3. [!NOTE] and [!IMPORTANT] shared one CSS rule, both rendering blue. 4. The OS picker always showed all four platforms (incl. BAS) regardless of which the tutorial actually provided; the only label was the generic "Steps" section heading. Fixes: - options.ts: emit the shortcode flush-left and dedent each panel/tab body to column 0 (new dedentBlock). The list reopens as <ol start="N">, so substep numbering is preserved, and the dedented body parses as markdown. - os-panel.html: render .Inner via markdownify so fences/images/alerts inside OS panels parse correctly. - sap-fundamental(.src).css: split .alert-note / .alert-important; NOTE stays Information blue, IMPORTANT uses the Horizon emphasis purple. - New osList frontmatter (compose -> render-frontmatter -> fetch-tutorials + srv-qa preview path) drives the picker to render only the OSes the tutorial supports, in canonical order; added a "Platform:" picker label (the "Steps" section heading is unchanged). - os-toggle.ts: activate() returns the effective OS so the picker reflects the panel actually shown when the detected OS has no panel. Verified by building the four cited tutorials through the real Hugo pipeline: substeps after [OPTION END] keep numbering, code blocks/images/ notes render inside panels, picker shows only supported OSes. Two remaining literal-fence cases (fence-inside-blockquote, intentional example fences) are pre-existing and out of scope. Tests: options-hugo, compose (osList), blockquote-alert-css, os-toggle.
This was referenced Oct 9, 2026
jung-thomas
added a commit
that referenced
this pull request
Oct 9, 2026
Resolves the 1.37.0 vs 1.37.1 overlap on the two release-managed files: - .deploy/mta.yaml: keep 1.37.1 (supersedes main's 1.37.0 bump). - hugo/data/whats_new.json: keep the 757-entry digest, which already incorporates main's 752-entry 1.37.0 digest (rebased onto it) plus the 4 new 1.37.1 PRs (#2700/#2701/#2704/#2705). Verified superset: all 1.37.0 entries retained, 4 new entries added, no duplicates.
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.
Fixes the rendering issues reported in #2703 on
/tutorials-qa/(hana-clients-* tutorials), surfaced after the new blockquote-alert + OS option-settings pass.Reported symptoms → root cause
Authors nested
[OPTION BEGIN]…[OPTION END]blocks inside numbered substeps (a shape the pipeline never supported). The parser emitted the shortcode flush-left with the panel body still indented, so Goldmark:[OPTION END]detached / lost numbering (install step 2),```fence```inside the panel as literal indented-code → code blocks showed raw backticks (python step 3), andSeparately,
{{< os-panel >}}is an angle-bracket shortcode whose.Innerwas never markdown-rendered (latent since OS options shipped in #173).And
[!NOTE]/[!IMPORTANT]shared one CSS rule (both blue); the picker always showed all four OSes incl. BAS.Fixes
options.ts— emit the shortcode flush-left and dedent each panel/tab body to column 0. The list reopens as<ol start="N">(numbering preserved); the dedented body parses as markdown.os-panel.html—{{ .Inner | markdownify }}so fences/images/alerts inside OS panels render.sap-fundamental(.src).css— split.alert-note/.alert-important; NOTE stays Information blue, IMPORTANT = Horizon emphasis purple.osListfrontmatter (compose → render-frontmatter → fetch-tutorials + srv-qa preview path) → picker shows only supported OSes, canonical order; added a "Platform:" picker label (the "Steps" section heading is unchanged, per author discussion).os-toggle.ts—activate()returns the effective OS so the picker selection matches the panel actually shown when the detected OS has no panel.Verification
Built the four cited tutorials through the real Hugo pipeline and inspected the rendered HTML: substeps after
[OPTION END]keep numbering, code/images/notes render inside panels, picker shows only Windows/macOS/Linux (no BAS). Two remaining literal-fence cases (fence-inside-blockquote, intentional example fences) are pre-existing on DEV and out of scope.New/updated tests:
options-hugo,compose(osList),blockquote-alert-css,os-toggle. Full suite: the only 3 failures (page-fallback,page-serve-handler,cjs-shim-cf-fallback) are pre-existing on DEV, unrelated to this change (verified by re-running against clean HEAD).Note: not for BAS messaging / author-side option-exclusion syntax — the issue raised those as open questions, not requirements.
🤖 Generated with Claude Code