Conversation
…nd the collab room
…th the retrying fetcher
|
Hello, I'm the AEM Code Sync Bot and I will run some actions to deploy your branch.
|
fetchDaConfigs previously always hit admin.da.live/config/... directly
via the legacy daFetch helper, bypassing the isHlx6-aware routing the
rest of the canvas/edit/browse migration already uses (source, status,
versions, etc). It now calls getNx2Api().config.get({org, site}),
which pings isHlx6 and, once nx2's config route is fully HLX6-aware,
will resolve to the site's real store the same way source.get/save
already do. Behavior for legacy (non-upgraded) sites is unchanged.
Every getNx2Api().config.get call pings isHlx6 first (an extra
HLX_ADMIN/ping/{org}/{site} fetch), which several existing test mocks
didn't account for (some also matched on a shorter config URL pattern
that collided with the ping's own /org/site/ path). Updated those
mocks in aem-assets.test.js, edit/da-assets/config.test.js,
edit/da-content/helpers/index.test.js, browse/da-browse.test.js and
edit/prose/plugins/imageFocalPoint.test.js to answer the ping safely,
and added direct coverage for the new routing in
blocks/shared/utils.test.js.
getPreviewStatus in ew-panel-extensions/helpers.js still hit legacy admin.hlx.page direct via aemAdmin(), no isHlx6 branch. Mirrors the already-fixed sibling in blocks/edit/da-library/helpers/helpers.js: now uses getNx2Api().status.get(path), which resolves to the site's real store (admin.hlx.page or api.aem.live) based on isHlx6. Response shape (json.preview.status) unchanged.
hannessolo
reviewed
Aug 18, 2026
hannessolo
previously approved these changes
Aug 18, 2026
Contributor
|
LGTM as well, as discussed we will need to add the toast for the image upload failures. Otherwise 👍 |
red: the size guard and its toast do not exist yet
the api service 413s above ~4.5mb and that 413 has no cors header, so the browser saw a network error and the fpo sat on loading
da-admin took a 120mb body in the same probe, so the cap is the api service's and a legacy site keeps taking large images
sourceUrlFromEditorCtx only passed ctx.path through; source.test.js already covers what its two tests did
hannessolo
approved these changes
Aug 20, 2026
mhaack
approved these changes
Aug 20, 2026
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.
Description
This pull request prepares EW Canvas for HLX6. Incl. site panels like files, outline, layout editing etc.
Test together with adobe/da-nx#672
before
blocks/browse/da-listandblocks/editalready routed through nx2'sisHlx6.blocks/canvasdid not: it built its source url against da-admin regardless of the site's store. that produced
three outcomes on a source-bus site:
Not permittedexists
prose.js:97named the room${DA_ADMIN}${pathname}now
buildSourceUrlis async now and routes through nx2'sisHlx6.initProsenames the collabroom with that url instead of rebuilding one against da-admin
resolveEditorDocSessiontakes the ctx, not a built url. it confirms sign-in first, so ananonymous visit skips the
isHlx6probedaFetch. da-admin is read with da-live's own fetch, for thelive token read and the 401 retry
sessionErrorFromResponsereports a non-401/403 status with its code andx-error, rather thanfolding it into
Not permittedsource.uploadMediais used across the four upload paths, and the src is taken from theresponse, per fix: upload dropped images via source.uploadMedia #1219 and fix: upload pasted base64 images via source.uploadMedia #1227
mediaBusImagerenders./media_fromgetPreviewOrigin, the origin the canvas fetches itscookie from, per fix(prose): render relative media_ image src from preview origin #1226
getSourceUploadContextreads both url shapesRelated Issue
part of #1141. the media browser half is #1066.
Testing
live on a source-bus site and a legacy site:
HEAD https://api.aem.live/{org}/sites/{site}/source/canvas-test.htmlwas answered with 200, andno
Not permittedwas shown. the collab room was named with that same url and reportedsynced: true./media_src is rendered fromstage-preview.da.live, with the relative path left in thenode attrs. an absolute src is untouched
./media_src is written on drop, paste, toolbar and wysiwyg replace. uploadPOST https://api.aem.live/{org}/sites/{site}/media/.canvas-test/dropped.png200content.da.livein the document,admin.da.live404 for that paththroughout
POST https://admin.da.live/source/{org}/{site}/.canvas-test/legacy-drop.pngon localhost the dropped image is not rendered on a legacy site. the read-back is answered with
401, because
content.da.live/.gimme_cookiefails withnet::ERR_FAILEDfrom a localhost origin,so the FPO placeholder is not replaced. the same happens on origin/main, served on a second port,
so this predates the branch.
Known limitations
the connections'
Authorizationand helix parses one pair, so the write is unauthenticatedisHlx6caches a legacy answer in module memory for the life of the tab (api.js:629). a sitemigrated mid-session is read as legacy until reload
retry a 401.
checkDocuses da-live's own fetcher insteadcanWriteis optimistic on the source bus.status.getwould answer it, at one request peropen
Test: