Skip to content

Publish the article series as pages under Advanced Topics - #204

Merged
oblomov-dev merged 1 commit into
mainfrom
claude/abap2ui5-blog-series-1ug3ep
Sep 2, 2026
Merged

Publish the article series as pages under Advanced Topics#204
oblomov-dev merged 1 commit into
mainfrom
claude/abap2ui5-blog-series-1ug3ep

Conversation

@oblomov-dev

Copy link
Copy Markdown
Member

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/*.mddocs/advanced/insights/, 25 pages.
  • A Technical Insights group as the last entry under Advanced Topics — last on purpose: 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.
  • Diagrams move to 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.
  • The LinkedIn teaser posts are not documentation — "Plain text, LinkedIn renders no markdown" is publishing material. They are collected in 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 on dx.md.
  • check:playground — article 2's EML class needed a marker saying why it cannot run. It is also in check:examples' documented NEEDS_A_SYSTEM skip.
  • check:examples flagged 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 why z2ui5_cl_ajson is 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:samples fails, and not because of this branch — it fails identically on untouched origin/main against the same sibling abap2UI5/samples checkout, which is from 24 August. All of its findings name cookbook pages this branch does not touch, and CI checks out samples@main explicitly.

🤖 Generated with Claude Code

https://claude.ai/code/session_01N5aUUqLaxN6kxKxsHhuicp


Generated by Claude Code

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
Copilot AI lite review requested due to automatic review settings September 2, 2026 11:22
@oblomov-dev
oblomov-dev merged commit 7431a53 into main Sep 2, 2026
2 checks passed
@oblomov-dev
oblomov-dev deleted the claude/abap2ui5-blog-series-1ug3ep branch September 2, 2026 11:23

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 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 so generate-llms.mjs’s raw-markdown copies resolve assets correctly.
  • Updates scripts/check-examples.mjs fragment 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. */
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants