From 06afc877a35ff431d70d8ce9065c5778d9b6b601 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Thu, 18 Sep 2025 16:21:18 -0700 Subject: [PATCH 1/6] stray 8000 where we meant 800 --- src/lib/registries.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/registries.ts b/src/lib/registries.ts index 39d5ae5..859b453 100644 --- a/src/lib/registries.ts +++ b/src/lib/registries.ts @@ -91,7 +91,7 @@ export class EnhancerRegistry { }, 400) setTimeout(() => { overtype.updatePreview() - }, 8000) + }, 800) } getEnhancerCount(): number { From 4527693b80b98f79905c8e09c9ba89df039483d5 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Thu, 18 Sep 2025 16:21:38 -0700 Subject: [PATCH 2/6] oops, silent errors in the draft pipeline --- src/entrypoints/background.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/entrypoints/background.ts b/src/entrypoints/background.ts index 2e6b753..2eea0f3 100644 --- a/src/entrypoints/background.ts +++ b/src/entrypoints/background.ts @@ -43,7 +43,7 @@ export function handleCommentEvent(message: CommentEvent, sender: any): boolean ) { if (message.type === 'ENHANCED') { const commentState: CommentStorage = { - drafts: [], + drafts: [[Date.now(), message.draft || '']], sentOn: null, spot: message.spot, tab: { From 84e4a9e93f376260915bda2b01d784956825ae87 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Thu, 18 Sep 2025 20:29:44 -0700 Subject: [PATCH 3/6] Add some sustainable logging to the background script. --- src/entrypoints/background.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/entrypoints/background.ts b/src/entrypoints/background.ts index 2eea0f3..a046899 100644 --- a/src/entrypoints/background.ts +++ b/src/entrypoints/background.ts @@ -1,6 +1,8 @@ import type { CommentEvent, CommentSpot } from '@/lib/enhancer' import { type DraftStats, statsFor } from '@/lib/enhancers/draft-stats' +import { logger } from '@/lib/logger' import type { GetTableRowsResponse, ToBackgroundMessage } from '@/lib/messages' + import { CLOSE_MESSAGE_PORT, isContentToBackgroundMessage, @@ -36,6 +38,7 @@ export interface CommentTableRow { export const openSpots = new Map() export function handleCommentEvent(message: CommentEvent, sender: any): boolean { + logger.debug('received comment event', message) if ( (message.type === 'ENHANCED' || message.type === 'DESTROYED') && sender.tab?.id && @@ -68,6 +71,7 @@ export function handlePopupMessage( sendResponse: (response: any) => void, ): typeof CLOSE_MESSAGE_PORT | typeof KEEP_PORT_OPEN { if (isGetOpenSpotsMessage(message)) { + logger.debug('received open spots message', message) const rows: CommentTableRow[] = Array.from(openSpots.values()).map((storage) => { const [time, content] = storage.drafts.at(-1)! const row: CommentTableRow = { @@ -87,6 +91,7 @@ export function handlePopupMessage( sendResponse(response) return KEEP_PORT_OPEN } else if (isSwitchToTabMessage(message)) { + logger.debug('received switch tab message', message) browser.windows .update(message.windowId, { focused: true }) .then(() => { @@ -97,6 +102,7 @@ export function handlePopupMessage( }) return CLOSE_MESSAGE_PORT } else { + logger.error('received unknown message', message) throw new Error(`Unhandled popup message type: ${message?.type || 'unknown'}`) } } From 23d04b2d99f9c13ab9f98fe05a0f68f1ee737a03 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Thu, 18 Sep 2025 21:05:13 -0700 Subject: [PATCH 4/6] remove padding from popup --- src/entrypoints/popup/style.css | 1 - 1 file changed, 1 deletion(-) diff --git a/src/entrypoints/popup/style.css b/src/entrypoints/popup/style.css index d718f6e..86e1bb3 100644 --- a/src/entrypoints/popup/style.css +++ b/src/entrypoints/popup/style.css @@ -9,7 +9,6 @@ body { width: var(--popup-width); height: var(--popup-height); - padding: 15px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; font-size: 14px; line-height: 1.4; From cecf0bad233e8721ac7dd237096eefbc54bfe25f Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 19 Sep 2025 08:23:51 -0700 Subject: [PATCH 5/6] when a tab is closed, remove it from open spots --- src/entrypoints/background.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/entrypoints/background.ts b/src/entrypoints/background.ts index a046899..d005150 100644 --- a/src/entrypoints/background.ts +++ b/src/entrypoints/background.ts @@ -2,7 +2,6 @@ import type { CommentEvent, CommentSpot } from '@/lib/enhancer' import { type DraftStats, statsFor } from '@/lib/enhancers/draft-stats' import { logger } from '@/lib/logger' import type { GetTableRowsResponse, ToBackgroundMessage } from '@/lib/messages' - import { CLOSE_MESSAGE_PORT, isContentToBackgroundMessage, @@ -115,4 +114,16 @@ export default defineBackground(() => { return handlePopupMessage(message, sender, sendResponse) } }) + + browser.tabs.onRemoved.addListener((tabId: number) => { + logger.debug('tab removed', { tabId }) + + // Clean up openSpots entries for the closed tab + for (const [key, value] of openSpots) { + if (tabId === value.tab.tabId) { + openSpots.delete(key) + logger.debug('closed tab which contained spot', value.spot.unique_key) + } + } + }) }) From cdc8a1551972ee30e096bf97316bc251c37bd0e9 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 19 Sep 2025 08:24:01 -0700 Subject: [PATCH 6/6] fix background test --- tests/background.test.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/tests/background.test.ts b/tests/background.test.ts index 2aa8a3d..79c0492 100644 --- a/tests/background.test.ts +++ b/tests/background.test.ts @@ -1,4 +1,4 @@ -import { beforeEach, describe, expect, it } from 'vitest' +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { handleCommentEvent, openSpots } from '../src/entrypoints/background' import type { CommentEvent, CommentSpot } from '../src/lib/enhancer' @@ -14,8 +14,13 @@ const mockSpot = { } describe('Background Event Handler', () => { beforeEach(() => { + vi.useFakeTimers() + vi.setSystemTime(new Date('2025-09-19T10:00:00.000Z')) openSpots.clear() }) + afterEach(() => { + vi.useRealTimers() + }) describe('ENHANCED Event', () => { it('should create new comment state when textarea is enhanced', () => { handleCommentEvent( @@ -30,7 +35,12 @@ describe('Background Event Handler', () => { [ "test-key", { - "drafts": [], + "drafts": [ + [ + 1758276000000, + "", + ], + ], "sentOn": null, "spot": { "type": "TEST_SPOT",