From 187c9264a44ce29b4366c4473061bf8a11be80e2 Mon Sep 17 00:00:00 2001 From: mdroidian Date: Fri, 9 Oct 2026 16:36:42 -0600 Subject: [PATCH 1/3] Reduce default startup delay to three seconds --- CHANGELOG.md | 6 ++++++ e2e/roam-proof.mjs | 12 ++++++------ src/index.ts | 2 +- src/utils/settings.ts | 7 +++++-- tests/settings.test.ts | 16 ++++++++++++++-- 5 files changed, 32 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d35a134..61b054d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Changed + +- Reduce the default startup delay from five seconds to three seconds. Saved delays are preserved. + ## [1.0.0] - 2026-10-09 ### Added diff --git a/e2e/roam-proof.mjs b/e2e/roam-proof.mjs index b2d513d..779e450 100644 --- a/e2e/roam-proof.mjs +++ b/e2e/roam-proof.mjs @@ -37,8 +37,8 @@ export default { async run({ page, outDir }) { await tab(page).click(); assert.equal( - await page.getByPlaceholder("5", { exact: true }).inputValue(), - "5", + await page.getByPlaceholder("3", { exact: true }).inputValue(), + "3", ); assert.equal( await page.getByText("Delay (milliseconds)", { exact: true }).count(), @@ -57,8 +57,8 @@ export default { const defaults = await waitForReload(page); assert.equal(defaults.calls.length, 1); assert( - defaults.calls[0].started - defaults.loads[0] >= 4900, - "default waits five seconds", + defaults.calls[0].started - defaults.loads[0] >= 2900, + "default waits three seconds", ); const defaultToast = toast(page, "Developer extensions reloaded."); await defaultToast.waitFor(); @@ -74,7 +74,7 @@ export default { ); await tab(page).click(); - await page.getByPlaceholder("5", { exact: true }).fill("1.25"); + await page.getByPlaceholder("3", { exact: true }).fill("1.25"); await page .getByPlaceholder("Developer extensions reloaded.", { exact: true }) .fill("Custom developer reload complete"); @@ -104,7 +104,7 @@ export default { await tab(page).click(); assert.equal( - await page.getByPlaceholder("5", { exact: true }).inputValue(), + await page.getByPlaceholder("3", { exact: true }).inputValue(), "1.25", "seconds persist after reload", ); diff --git a/src/index.ts b/src/index.ts index 92a2a6b..b731a79 100644 --- a/src/index.ts +++ b/src/index.ts @@ -22,7 +22,7 @@ export default runExtension(async ({ extensionAPI }) => { id: "delay-seconds", name: "Delay (seconds)", description: "Seconds to wait after this extension loads.", - action: { type: "input", placeholder: "5" }, + action: { type: "input", placeholder: DEFAULTS["delay-seconds"] }, }, { id: "show-toast", diff --git a/src/utils/settings.ts b/src/utils/settings.ts index 2308440..b2214ea 100644 --- a/src/utils/settings.ts +++ b/src/utils/settings.ts @@ -7,7 +7,7 @@ export const TOAST_INTENTS = [ ] as const; export type ToastIntent = (typeof TOAST_INTENTS)[number]; export const DEFAULTS = { - "delay-seconds": "5", + "delay-seconds": "3", "show-toast": true, "toast-intent": "success", "toast-message": "Developer extensions reloaded.", @@ -41,7 +41,10 @@ export const getConfig = (get: (key: string) => unknown): ReloadConfig => { return { // Browser timers overflow above this limit and otherwise fire immediately. delayMs: Math.min( - Math.round(parseDelay(get("delay-seconds"), 5) * 1000), + Math.round( + parseDelay(get("delay-seconds"), Number(DEFAULTS["delay-seconds"])) * + 1000, + ), 2_147_483_647, ), showToast: get("show-toast") !== false, diff --git a/tests/settings.test.ts b/tests/settings.test.ts index 828f00d..6e2cb62 100644 --- a/tests/settings.test.ts +++ b/tests/settings.test.ts @@ -21,6 +21,7 @@ describe("settings", () => { }, }); expect(stored).toEqual(DEFAULTS); + expect(stored["delay-seconds"]).toBe("3"); }, ); it("preserves saved values, including false and zero", async () => { @@ -43,12 +44,23 @@ describe("settings", () => { }); it("uses safe defaults for missing settings", () => { expect(config()).toEqual({ - delayMs: 5000, + delayMs: 3000, showToast: true, toastIntent: "success", toastMessage: DEFAULTS["toast-message"], }); }); + it("preserves an existing five-second delay", async () => { + const stored: Record = { "delay-seconds": "5" }; + await initializeSettings({ + get: (key) => stored[key], + set: async (key, value) => { + stored[key] = value; + }, + }); + expect(stored["delay-seconds"]).toBe("5"); + expect(config(stored).delayMs).toBe(5000); + }); it.each([ ["2", 2000], ["2.5", 2500], @@ -82,7 +94,7 @@ describe("settings", () => { {}, "9".repeat(400), ])("falls back for invalid delay %j", (value) => { - expect(config({ "delay-seconds": value }).delayMs).toBe(5000); + expect(config({ "delay-seconds": value }).delayMs).toBe(3000); }); it("caps large delays instead of overflowing the browser timer", () => { expect( From 41abf4ccf8880324b03cd8d74c637ec08f20985b Mon Sep 17 00:00:00 2001 From: mdroidian Date: Fri, 9 Oct 2026 16:37:29 -0600 Subject: [PATCH 2/3] Remove pre-release migration assumptions --- CHANGELOG.md | 2 +- tests/settings.test.ts | 17 ----------------- 2 files changed, 1 insertion(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61b054d..c3601d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Reduce the default startup delay from five seconds to three seconds. Saved delays are preserved. +- Reduce the default startup delay from five seconds to three seconds. ## [1.0.0] - 2026-10-09 diff --git a/tests/settings.test.ts b/tests/settings.test.ts index 6e2cb62..4e156b8 100644 --- a/tests/settings.test.ts +++ b/tests/settings.test.ts @@ -50,17 +50,6 @@ describe("settings", () => { toastMessage: DEFAULTS["toast-message"], }); }); - it("preserves an existing five-second delay", async () => { - const stored: Record = { "delay-seconds": "5" }; - await initializeSettings({ - get: (key) => stored[key], - set: async (key, value) => { - stored[key] = value; - }, - }); - expect(stored["delay-seconds"]).toBe("5"); - expect(config(stored).delayMs).toBe(5000); - }); it.each([ ["2", 2000], ["2.5", 2500], @@ -74,12 +63,6 @@ describe("settings", () => { ])("converts seconds %j to %i milliseconds", (value, expected) => { expect(config({ "delay-seconds": value }).delayMs).toBe(expected); }); - it("ignores the removed milliseconds setting", () => { - expect( - config({ "delay-seconds": "2.5", "delay-milliseconds": "500" }).delayMs, - ).toBe(2500); - expect(DEFAULTS).not.toHaveProperty("delay-milliseconds"); - }); it.each([ "", "-1", From b6ddf200aedcbe1000154742599178b1cf965ce8 Mon Sep 17 00:00:00 2001 From: mdroidian Date: Fri, 9 Oct 2026 16:37:47 -0600 Subject: [PATCH 3/3] Remove default-delay changelog entry --- CHANGELOG.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c3601d8..d35a134 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,12 +5,6 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] - -### Changed - -- Reduce the default startup delay from five seconds to three seconds. - ## [1.0.0] - 2026-10-09 ### Added