From c21a9ffc71603b5a3f9ea6ec1b55f6df19fd8946 Mon Sep 17 00:00:00 2001 From: Noah Date: Fri, 30 Oct 2026 07:42:03 +0100 Subject: [PATCH] [chuchi] end domReady of a replaced request too When a newer request replaced one during its data step, openReq returned without releasing the DOM barrier, so a listener that awaited domReady of the replaced request waited forever. zipp's studio did that after a redirect and its page loader never finished. domReady now resolves with true there, like dataReady. Co-Authored-By: Claude Opus 5.5 --- chuchi/src/routing/Router.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/chuchi/src/routing/Router.ts b/chuchi/src/routing/Router.ts index 7e6e88b..4d37a4c 100644 --- a/chuchi/src/routing/Router.ts +++ b/chuchi/src/routing/Router.ts @@ -254,8 +254,12 @@ export default class Router { this.newRequest.set(req); // if version changed - if (await dataBarrier2.ready(hasVersionChange())) + if (await dataBarrier2.ready(hasVersionChange())) { + // a listener may still wait for domReady: it ends too, with true + // like dataReady, instead of never + domBarrier2.ready(true); return console.log('request overriden, version changed'); + } // a pending scroll update belongs to the previous request, the scroll // position gets stored below