Publish the article series as pages under Advanced Topics - #204
Merged
Conversation
The articles were in blog/, outside the built site, so nothing linked them and nobody could find them. They are pages now: docs/advanced/insights/, with a "Technical Insights" group as the last entry under Advanced Topics — last on purpose, since this is the reading done after the app runs, and a reader opening that section for a how-to should meet the how-tos first. Moving them into docs/ puts them under the nine gates, which took real work: - The diagrams live in docs/public/insights/ and are referenced absolutely. generate-llms.mjs copies every page into docs/public/ as raw markdown, and a relative asset path does not resolve from that copy — the build fails on it. make-diagrams.py now writes there. - Article 14 needed the three class section blocks (check:conventions), the same fix main already applied to the identical example on dx.md. - Article 2's EML class needed a playground marker (check:playground); it is also in check:examples' documented NEEDS_A_SYSTEM skip. - check:examples flagged article 1's RTTS chain as a frozen-builder call. That is a gate gap, not a page defect: CAST cl_abap_tabledescr( … )-> get_table_line_type( ) is )->method( like any view step, and the mid-chain regex cannot see the receiver — exactly why z2ui5_cl_ajson is already skipped by name. Skipping the whole fence would be wrong, since a page that derives a type at runtime usually builds a view from it in the same fence, so the RTTS calls are named instead and the view chain around them stays checked. The LinkedIn teaser posts do not belong on a documentation page — "Plain text, LinkedIn renders no markdown" is publishing material. They are collected in blog/teaser-posts.md, which stays outside the site. Eight of nine gates pass. check:samples fails identically on untouched origin/main against the same sibling checkout, as before. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N5aUUqLaxN6kxKxsHhuicp
There was a problem hiding this comment.
🟢 Approval recommended
The changes are consistent with the stated goals and only a minor in-code comment terminology mismatch was found.
Pull request overview
This PR publishes the previously off-site “Know-How” article series as first-class VitePress pages under Advanced Topics, ensuring they’re discoverable via the sidebar and included in the site build/tooling gates.
Changes:
- Adds a new Technical Insights sidebar group under Advanced Topics pointing to 25 new pages in
docs/advanced/insights/. - Moves/serves diagrams from
docs/public/insights/and updates article image references to absolute/insights/...paths sogenerate-llms.mjs’s raw-markdown copies resolve assets correctly. - Updates
scripts/check-examples.mjsfragment checking to whitelist a small set of RTTS/RTTI method calls that otherwise resemble view-builder fluent calls.
File summaries
| File | Description |
|---|---|
| scripts/check-examples.mjs | Allows specific RTTI/RTTS method calls inside fluent-looking chains without tripping the “frozen builder” fragment gate. |
| docs/.vitepress/config.mjs | Adds “Technical Insights” as the last Advanced Topics entry and wires up the 25-page series in the sidebar. |
| blog/assets/make-diagrams.py | Redirects diagram generation output to docs/public/insights/ to match new absolute asset links. |
| blog/teaser-posts.md | Collects LinkedIn teaser copy outside the built docs site as publishing material. |
| docs/advanced/insights/01-somewhere-on-the-way-to-ui5.md | Converts article to a docs page; updates header image path; removes teaser/draft boilerplate. |
| docs/advanced/insights/02-not-a-programming-model.md | Converts article to a docs page; adds a “no Run button” playground marker; removes teaser/draft boilerplate. |
| docs/advanced/insights/03-the-cost-of-a-screen.md | Converts article to a docs page; removes teaser/draft boilerplate. |
| docs/advanced/insights/04-no-annotation-in-between.md | Converts article to a docs page; removes teaser/draft boilerplate. |
| docs/advanced/insights/05-ui5-over-the-wire.md | Converts article to a docs page; switches diagram link to /insights/...; removes teaser/draft boilerplate. |
| docs/advanced/insights/06-the-frontend-that-does-not-know.md | Converts article to a docs page; switches diagram link to /insights/...; removes teaser/draft boilerplate. |
| docs/advanced/insights/07-one-service-for-every-app.md | Converts article to a docs page; switches diagram link to /insights/...; removes teaser/draft boilerplate. |
| docs/advanced/insights/08-only-the-changed-part.md | Converts article to a docs page; switches diagram link to /insights/...; removes teaser/draft boilerplate. |
| docs/advanced/insights/09-public-means-persisted.md | Converts article to a docs page; switches diagram link to /insights/...; removes teaser/draft boilerplate. |
| docs/advanced/insights/10-swapping-the-view-at-runtime.md | Converts article to a docs page; switches diagram link to /insights/...; removes teaser/draft boilerplate. |
| docs/advanced/insights/11-index-html-lives-in-a-string.md | Converts article to a docs page; switches diagram link to /insights/...; removes teaser/draft boilerplate. |
| docs/advanced/insights/12-where-your-own-javascript-goes.md | Converts article to a docs page; removes teaser/draft boilerplate. |
| docs/advanced/insights/13-four-verbs.md | Converts article to a docs page; switches diagram link to /insights/...; removes teaser/draft boilerplate. |
| docs/advanced/insights/14-the-class-that-runs.md | Converts article to a docs page; updates example class to include required section blocks; removes teaser/draft boilerplate. |
| docs/advanced/insights/15-where-the-selection-screen-went.md | Converts article to a docs page; removes teaser/draft boilerplate. |
| docs/advanced/insights/16-no-cache-no-deploy-any-ide.md | Converts article to a docs page; removes teaser/draft boilerplate. |
| docs/advanced/insights/17-one-codebase-702-to-abap-cloud.md | Converts article to a docs page; switches diagram link to /insights/...; removes teaser/draft boilerplate. |
| docs/advanced/insights/18-2300-lines.md | Converts article to a docs page; switches diagram link to /insights/...; removes teaser/draft boilerplate. |
| docs/advanced/insights/19-where-the-line-is.md | Converts article to a docs page; removes teaser/draft boilerplate. |
| docs/advanced/insights/20-cloud-ready-is-a-property-of-your-app.md | Converts article to a docs page; switches diagram link to /insights/...; removes teaser/draft boilerplate. |
| docs/advanced/insights/21-abap-on-the-web.md | Converts article to a docs page; switches diagram link to /insights/...; removes teaser/draft boilerplate. |
| docs/advanced/insights/22-where-the-view-lives.md | Converts article to a docs page; switches diagram link to /insights/...; removes teaser/draft boilerplate. |
| docs/advanced/insights/23-rap-or-abap2ui5.md | Converts article to a docs page; removes teaser/draft boilerplate. |
| docs/advanced/insights/24-freestyle-or-abap2ui5.md | Converts article to a docs page; removes teaser/draft boilerplate. |
| docs/advanced/insights/25-low-code-or-abap2ui5.md | Converts article to a docs page; removes teaser/draft boilerplate. |
| docs/public/insights/05-two-strings.svg | Adds diagram asset served from /insights/ for article rendering. |
| docs/public/insights/06-mpa-spa-hda.svg | Adds diagram asset served from /insights/ for article rendering. |
| docs/public/insights/07-one-service.svg | Adds diagram asset served from /insights/ for article rendering. |
| docs/public/insights/08-partial-update.svg | Adds diagram asset served from /insights/ for article rendering. |
| docs/public/insights/09-draft.svg | Adds diagram asset served from /insights/ for article rendering. |
| docs/public/insights/10-view-swap.svg | Adds diagram asset served from /insights/ for article rendering. |
| docs/public/insights/11-initial-request.svg | Adds diagram asset served from /insights/ for article rendering. |
| docs/public/insights/13-four-verbs.svg | Adds diagram asset served from /insights/ for article rendering. |
| docs/public/insights/17-bootstrap.svg | Adds diagram asset served from /insights/ for article rendering. |
| docs/public/insights/18-footprint.svg | Adds diagram asset served from /insights/ for article rendering. |
| docs/public/insights/20-vdm.svg | Adds diagram asset served from /insights/ for article rendering. |
| docs/public/insights/21-timeline.svg | Adds diagram asset served from /insights/ for article rendering. |
| docs/public/insights/22-where-the-view-lives.svg | Adds diagram asset served from /insights/ for article rendering. |
Review details
- Files reviewed: 29/43 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+90
to
+97
| /* The THIRD fluent chain in this documentation, after the view builder and | ||
| * z2ui5_cl_ajson: RTTS. `CAST cl_abap_tabledescr( … )->get_table_line_type( )` | ||
| * is `)->method(` like any view step, and the mid-chain regex below cannot see | ||
| * the receiver that would tell it apart — the same reason ajson is skipped by | ||
| * name rather than by receiver. Skipping the whole fence is wrong here: a page | ||
| * that derives a type at runtime usually builds a view from it in the SAME | ||
| * fence, and that view is exactly what this gate is for. So the RTTS calls are | ||
| * named instead, and the view chain around them stays checked. */ |
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.
Follow-up to #202. The articles landed in
blog/, which sits outside the built site, so nothing linked them and they could not be found in the menu. This makes them pages.blog/*.md→docs/advanced/insights/, 25 pages.docs/public/insights/and are referenced absolutely.generate-llms.mjscopies every page intodocs/public/as raw markdown, and a relative asset path does not resolve from that copy — the build fails on it.make-diagrams.pynow writes there.blog/teaser-posts.md, which stays outside the site.What the gates required
Moving into
docs/puts the articles under all nine, and three things had to change:check:conventions— article 14's app class needed the three section blocks, the same fix main already applied to the identical example ondx.md.check:playground— article 2's EML class needed a marker saying why it cannot run. It is also incheck:examples' documentedNEEDS_A_SYSTEMskip.check:examplesflagged a gate gap, not a page defect. It reported article 1's RTTS chain as a call into the frozen builder:CAST cl_abap_tabledescr( … )->get_table_line_type( )is)->method(like any view step, and the mid-chain regex cannot see the receiver that would tell them apart — which is exactly whyz2ui5_cl_ajsonis already skipped there by name. Skipping the whole fence would be wrong, because a page that derives a type at runtime usually builds a view from it in the same fence and that view is what the gate exists for. So the RTTS calls are named in a small set instead, and the view chain around them stays checked.Gates
Eight of nine pass:
test(35/0),check:version,docs:build,check:examples,check:conventions,check:playground,check:api-names,check:api-reference.check:samplesfails, and not because of this branch — it fails identically on untouchedorigin/mainagainst the same siblingabap2UI5/samplescheckout, which is from 24 August. All of its findings name cookbook pages this branch does not touch, and CI checks outsamples@mainexplicitly.🤖 Generated with Claude Code
https://claude.ai/code/session_01N5aUUqLaxN6kxKxsHhuicp
Generated by Claude Code