From f5e65b8c5c15c046fa1ec99f402217a1966c0856 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Fri, 19 Dec 2025 15:02:29 +0900 Subject: [PATCH] feat(auto-update-checker): add local development mode toast notification MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with assistance of [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode) --- src/hooks/auto-update-checker/index.ts | 54 +++++++++++++++++++------- 1 file changed, 39 insertions(+), 15 deletions(-) diff --git a/src/hooks/auto-update-checker/index.ts b/src/hooks/auto-update-checker/index.ts index 0ef3244..062ac82 100644 --- a/src/hooks/auto-update-checker/index.ts +++ b/src/hooks/auto-update-checker/index.ts @@ -23,7 +23,7 @@ export function createAutoUpdateCheckerHook(ctx: PluginInput, options: AutoUpdat let hasChecked = false return { - event: async ({ event }: { event: { type: string; properties?: unknown } }) => { + event: ({ event }: { event: { type: string; properties?: unknown } }) => { if (event.type !== "session.created") return if (hasChecked) return @@ -32,23 +32,29 @@ export function createAutoUpdateCheckerHook(ctx: PluginInput, options: AutoUpdat hasChecked = true - const cachedVersion = getCachedVersion() - const localDevVersion = getLocalDevVersion(ctx.directory) - const displayVersion = localDevVersion ?? cachedVersion + setTimeout(() => { + const cachedVersion = getCachedVersion() + const localDevVersion = getLocalDevVersion(ctx.directory) + const displayVersion = localDevVersion ?? cachedVersion - if (showStartupToast) { - showVersionToast(ctx, displayVersion, getToastMessage(false)).catch(() => {}) - } - showConfigErrorsIfAny(ctx).catch(() => {}) + showConfigErrorsIfAny(ctx).catch(() => {}) - if (localDevVersion) { - log("[auto-update-checker] Skipped: local development mode") - return - } + if (localDevVersion) { + if (showStartupToast) { + showLocalDevToast(ctx, displayVersion, isSisyphusEnabled).catch(() => {}) + } + log("[auto-update-checker] Local development mode") + return + } - runBackgroundUpdateCheck(ctx, autoUpdate, getToastMessage).catch(err => { - log("[auto-update-checker] Background update check failed:", err) - }) + if (showStartupToast) { + showVersionToast(ctx, displayVersion, getToastMessage(false)).catch(() => {}) + } + + runBackgroundUpdateCheck(ctx, autoUpdate, getToastMessage).catch(err => { + log("[auto-update-checker] Background update check failed:", err) + }) + }, 0) }, } } @@ -172,6 +178,24 @@ async function showAutoUpdatedToast(ctx: PluginInput, oldVersion: string, newVer log(`[auto-update-checker] Auto-updated toast shown: v${oldVersion} → v${newVersion}`) } +async function showLocalDevToast(ctx: PluginInput, version: string | null, isSisyphusEnabled: boolean): Promise { + const displayVersion = version ?? "dev" + const message = isSisyphusEnabled + ? "Sisyphus running in local development mode." + : "Running in local development mode. oMoMoMo..." + await ctx.client.tui + .showToast({ + body: { + title: `OhMyOpenCode ${displayVersion} (dev)`, + message, + variant: "warning" as const, + duration: 5000, + }, + }) + .catch(() => {}) + log(`[auto-update-checker] Local dev toast shown: v${displayVersion}`) +} + export type { UpdateCheckResult, AutoUpdateCheckerOptions } from "./types" export { checkForUpdate } from "./checker" export { invalidatePackage, invalidateCache } from "./cache"