Help Runtime
At runtime, the help system serves pre-rendered HTML and a plain JSON search index. There is no Markdown processing on the request path; everything happens at build time.
Endpoints
| Method | Path | Controller | Returns |
|---|---|---|---|
| GET | /ui5/help/{uuid}/{name} | Http\Controllers\HelpController | HTML, images, diagrams |
| GET | /ui5/help/index.json | Http\Controllers\HelpIndexController | Search index (JSON array) |
| GET | /ui5/help/toc.html | Http\Controllers\TocController | Help table of contents |
All three live in routes/ui5-sdk-web.php under Core's /ui5 route prefix. They run a plain ['web', 'auth'] middleware stack, not config('ui5.middleware'): help is global, not scoped to a UI5 artifact, so any signed-in user can read it.
index.json and toc.html return 404 until ui5:help --index and ui5:help --build (or --all) have written them.
How a request resolves
- The frontend asks for
GET /ui5/help/<uuid>/<name>. HelpControllerservesstorage/ui5/help/<uuid>/<name>.htmlif it exists —nameread as a locale.- Otherwise it serves
storage/ui5/help/<uuid>/<name>as an asset. - Otherwise it returns 404.
In practice the LeanShell asks for en.html, not en: it appends the extension itself. So a document resolves through step 3, the asset branch, and both branches end at the same file. Worth knowing before you "fix" either side — a change on one of them has to move the other.
There is no cache lookup and no server-side locale fallback: a locale that was not compiled is a 404. The locale is chosen on the client. When a link carries no locale, the LeanShell uses helpManager.defaultLocale from the shell manifest (ui5.shell.manifest, default en).
Asset resolution
Images and other static assets referenced from a topic are served through the same HelpController endpoint. Put them in the topic folder next to the Markdown and reference them with a relative path. ui5:help --build copies them to storage/ui5/help/<uuid>/ and rewrites the image URL to /ui5/help/<uuid>/<file>.
Search index
index.json is the plain array written by ui5:help --index, one entry per document in the primary locale:
uuidtitledescriptiontagstext: plain text of the body
It is not a prebuilt Lunr index and carries no locale field. The LeanShell fetches it once and builds a Lunr index in the browser. Search is part of the <help-viewer> component; there is no separate search component. Search results open in the default locale. No server-side full-text engine is required.
Performance
The runtime is intentionally trivial:
- HTML responses are pre-rendered files → no Markdown parsing
- the search index is a static JSON file and Lunr runs in the browser → no server-side query engine
This is what makes the help system viable in shells where F1 must respond instantly.
See also
- Concept: what a document is and which UUIDs get compiled
- Authoring: frontmatter, links and assets
- Build Pipeline