Repository navigation
Specification revision 0.4: re-derived from abap2UI5 1.148.0, hosts on node-runtime 1.148.0 and cap2UI5 0.5.0 - #12
Open
oblomov-dev wants to merge 4 commits into
Open
oblomov-dev wants to merge 4 commits into
oblomov-dev wants to merge 4 commits into
Conversation
….5.0 - @abap2ui5/node-runtime 1.146.0 -> 1.148.0, @abaplint/transpiler-cli 2.13.93 -> 2.14.5 (the transpiler the package names), @cap2ui5/cds-plugin 0.4.0 -> 0.5.0 (which pins the runtime 1.147.0); both lockfiles - node-runtime host: the package's new recipe for a host's own classes - one transpile of the framework and the conformance apps by abap2ui5-transpile, served through the output's host.mjs; loading apps/index.mjs next to the package's output is deprecated in 1.148.0 - node-runtime host: the suite runs and the recorder start it with allowedHosts "*" - from 1.147.0 on serve() answers a foreign Origin with a 403 of its own before the framework's CSRF gate sees the request, so transport.csrf-origin no longer tested the framework; the CLI keeps the guard - error.no-reflection passes on both hosts (abap2UI5 strips the request URL in the 500 body since 1.147.0): unpinned, test/lib/expected.mjs pins nothing - traffic recorded again from both hosts, with the UI5 frontend of the 1.148.0 release commit and the vendored agent client: node-runtime 76 passed, cap2ui5 75 passed and one SHOULD warning - CI: the two git libraries of the transpile are cached under node_modules/.cache, the frontend job pins abap2UI5 610d9ae (Release 1.148.0) Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014YZFmCjdbLvb757NWCFVeA
- spec/navigation.md: #/z2ui5-xapp-state=<DRAFT> names the app as well - a request with the hash and no class restores that draft, and ends on the start app with a toast when the draft is gone (abap2UI5 from 1.147.0 on, [H] main_begin, [ACT] factory_first_start; up to 1.146.0 the start app answered and the saved state was dropped) - new backend check route.app-state-names-no-app (SHOULD, core) - 77 checks; both reference hosts pass - check list regenerated, traffic recorded again Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014YZFmCjdbLvb757NWCFVeA
- [HF] is abap2UI5/headless-frontend src/z2ui5_cl_frontend_sim.clas.abap (z2ui5_cl_frontend_simulator was renamed in its 8f37e54); the headless adapter stub names the class the same way - profiles/ui5.md: [EV] escape_js_string and [HTTP] _check_etag_match no longer exist - abap2UI5 1.148.0 moved both into z2ui5_cl_ui5_util_context; the statements cite the methods of the named files that call them ([EV] get_t_arg, [HTTP] _http_get, _get_etag) Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014YZFmCjdbLvb757NWCFVeA
What moved on the wire between abap2UI5 1.146.0 (b812079) and the release
commit of 1.148.0 (610d9ae), each confirmed in the release's source or in
the recorded traffic. Protocol 2 stays; the schemas and the portable
profile are unchanged.
- request: S_UI5 travels alone with the first request that finds it loaded
and the backend merges it; numbers of the session block the backend
cannot hold are read as absent; a binding context and the UI5 event are
marshalled to plain data; an embedded frontend whose host handed the URL
back sends HASH
- errors: the request URL in the 500 body is stripped to an allow-list
([H] context_info_url_safe) - open question 3 is fixed in the reference
- actions: the UI5 frontend resolves a ${/PATH} argument of a queued
follow-up action against the model - recorded, not required; open
question 11
- transport, response, UI5 profile: the host guard of serve(), the
devtools bundle (GET ?z2ui5-bundle=devtools), control characters escaped
in the response text, a raw wire argument with unbalanced braces quoted
- frontend check request.config-cadence flags only a static block the
backend already has - a block that goes out late for the first time is
no repeat
- README, RESULTS and CHANGELOG: the results measured on 2026-11-15 -
node-runtime 77 of 77, cap2ui5 76 of 77 and one SHOULD warning, the UI5
SPA of 1.148.0 77 pass and 4 skip; what is not in 1.148.0 (windowed
tables, set_app_full_width, cross_app_nav_get_links, the removal of the
invisible custom controls) is named as unreleased
Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014YZFmCjdbLvb757NWCFVeA
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.
What
The specification was derived from abap2UI5 1.146.0 and
conformance/RESULTS.mdrecorded the cap2UI5 host at plugin 0.4.0. Four commits:@abap2ui5/node-runtime1.148.0 and@cap2ui5/cds-plugin0.5.0; traffic re-recorded. The node-runtime host is rebuilt on the package's own recipe (abap2ui5-transpile, importinghost.mjs), because 1.148.0 deprecates loadingapps/index.mjs; the transpiler pin moves to 2.14.5 as the package requires.route.app-state-names-no-app(77 checks now): an app-state hash without?app_start=restores its draft — a new SHOULD inspec/navigation.md.z2ui5_cl_frontend_sim, and two method citations that moved intoz2ui5_cl_ui5_util_context.What changed on the wire, 1.146.0 → 1.148.0
All of it landed in 1.147.0;
c_protocolstays 2, the schemas, the portable profile and the action vocabulary are unchanged.error.no-reflectionpasses on both hosts now, so its pin is removed (test/lib/expected.mjspins nothing).S_UI5may arrive alone and is merged, not replaced.{PATH, OBJECT},$eventas{ID, SOURCE, PARAMETERS}.${/PATH}arguments against the model — recorded as description only, with open question 11 on whether it becomes a rule for every frontend.ownsPage), the devtools bundle GET, the host guard ofserve().Not in the spec, deliberately: windowed tables,
set_app_full_width,cross_app_nav_get_linksand the removal of the invisible custom controls are on abap2UI5mainbut not in 1.148.0; the CHANGELOG names them as unreleased.Decisions worth a look
allowedHosts: "*": with the host's own guard on, a foreign-Origin POST gets the host's 403 before the framework's CSRF gate, sotransport.csrf-originwould no longer test the framework.npm run serve:node-runtimekeeps the guard.request.config-cadenceflagged a static block sent for the first time; it now flags only blocks the backend already has.Verified
npm run lint:abapPROTOCOL_REQUIRE_BROWSER=1 npm test(both backends, UI5 SPA in Chromium)npm run generate && git diff --exit-codeerror.details, the known SHOULD)Not verified
${/PATH}resolution,ownsPage, event marshalling, lateS_UI5) are confirmed in the 1.148.0 source only; no recorded scenario exercises them.a4d9f07whilevendor/mcp-server/source.jsonsays82b75d8.Generated by Claude Code