From 0e9b169f10d4bcf4457093caf4d13cae0cc5d64d Mon Sep 17 00:00:00 2001 From: Todd Riley Date: Tue, 16 Sep 2025 16:33:10 -0400 Subject: [PATCH 1/2] Handle textareas being initialized after initial page load. --- browser-extension/src/lib/registries.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/browser-extension/src/lib/registries.ts b/browser-extension/src/lib/registries.ts index d6cf1aa..cce6ce9 100644 --- a/browser-extension/src/lib/registries.ts +++ b/browser-extension/src/lib/registries.ts @@ -69,6 +69,7 @@ export class EnhancerRegistry { this.preparedEnhancers.add(enhancer) } const overtype = enhancer.enhance(textarea, spot) + this.handleDelayedValueInjection(overtype) return { enhancer, overtype, spot, textarea } } } catch (error) { @@ -78,6 +79,24 @@ export class EnhancerRegistry { return null } + private handleDelayedValueInjection(overtype: OverTypeInstance): void { + // GitHub sometimes injects textarea content after a delay + // We need to trigger OverType to update its preview after such injections + // https://github.com/diffplug/gitcasso/issues/46 + setTimeout(() => { + overtype.updatePreview() + }, 100) + setTimeout(() => { + overtype.updatePreview() + }, 200) + setTimeout(() => { + overtype.updatePreview() + }, 400) + setTimeout(() => { + overtype.updatePreview() + }, 8000) + } + getEnhancerCount(): number { return this.enhancers.size } From 4dc0403e8cb214cf89e8432261ac1d12c2c77a82 Mon Sep 17 00:00:00 2001 From: Todd Riley Date: Tue, 16 Sep 2025 16:49:33 -0400 Subject: [PATCH 2/2] Add updatePreview to mock. --- browser-extension/tests/har-fixture.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/browser-extension/tests/har-fixture.ts b/browser-extension/tests/har-fixture.ts index 60e7e90..befcdf9 100644 --- a/browser-extension/tests/har-fixture.ts +++ b/browser-extension/tests/har-fixture.ts @@ -18,6 +18,7 @@ vi.mock('overtype', () => { preview: document.createElement('div'), setValue: vi.fn(), textarea: document.createElement('textarea'), + updatePreview: vi.fn(), wrapper: document.createElement('div'), }, ])