From 6e533f938fbca667844d895959d2deebe2d7e885 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jim=20Liu=20=E5=AE=9D=E7=8E=89?= Date: Fri, 6 Mar 2026 16:03:01 -0600 Subject: [PATCH] refactor: unify Chrome CDP profile path across all skills All skills now share a single Chrome profile at: - macOS: ~/Library/Application Support/baoyu-skills/chrome-profile - Linux: $XDG_DATA_HOME/baoyu-skills/chrome-profile - Env override: BAOYU_CHROME_PROFILE_DIR Fixes baoyu-post-to-weibo incorrectly reusing x-browser-profile. Legacy per-skill env vars retained as fallback. --- .../scripts/gemini-webapi/utils/paths.ts | 6 +++--- skills/baoyu-danger-x-to-markdown/scripts/paths.ts | 6 +++--- skills/baoyu-post-to-wechat/scripts/cdp.ts | 8 ++++++-- skills/baoyu-post-to-wechat/scripts/wechat-browser.ts | 11 +++++++---- skills/baoyu-post-to-weibo/scripts/weibo-utils.ts | 8 +++++--- skills/baoyu-post-to-x/scripts/x-utils.ts | 11 +++++++---- skills/baoyu-url-to-markdown/scripts/paths.ts | 4 ++-- 7 files changed, 33 insertions(+), 21 deletions(-) diff --git a/skills/baoyu-danger-gemini-web/scripts/gemini-webapi/utils/paths.ts b/skills/baoyu-danger-gemini-web/scripts/gemini-webapi/utils/paths.ts index a98ba04..030a8f2 100644 --- a/skills/baoyu-danger-gemini-web/scripts/gemini-webapi/utils/paths.ts +++ b/skills/baoyu-danger-gemini-web/scripts/gemini-webapi/utils/paths.ts @@ -42,11 +42,11 @@ function getWslWindowsHome(): string | null { } export function resolveGeminiWebChromeProfileDir(): string { - const override = process.env.GEMINI_WEB_CHROME_PROFILE_DIR?.trim(); + const override = process.env.BAOYU_CHROME_PROFILE_DIR?.trim() || process.env.GEMINI_WEB_CHROME_PROFILE_DIR?.trim(); if (override) return path.resolve(override); const wslHome = getWslWindowsHome(); - if (wslHome) return path.join(wslHome, '.local', 'share', APP_DATA_DIR, GEMINI_DATA_DIR, PROFILE_DIR_NAME); - return path.join(resolveGeminiWebDataDir(), PROFILE_DIR_NAME); + if (wslHome) return path.join(wslHome, '.local', 'share', APP_DATA_DIR, PROFILE_DIR_NAME); + return path.join(resolveUserDataRoot(), APP_DATA_DIR, PROFILE_DIR_NAME); } export function resolveGeminiWebSessionsDir(): string { diff --git a/skills/baoyu-danger-x-to-markdown/scripts/paths.ts b/skills/baoyu-danger-x-to-markdown/scripts/paths.ts index 2e03892..21cb2b3 100644 --- a/skills/baoyu-danger-x-to-markdown/scripts/paths.ts +++ b/skills/baoyu-danger-x-to-markdown/scripts/paths.ts @@ -43,11 +43,11 @@ function getWslWindowsHome(): string | null { } export function resolveXToMarkdownChromeProfileDir(): string { - const override = process.env.X_CHROME_PROFILE_DIR?.trim(); + const override = process.env.BAOYU_CHROME_PROFILE_DIR?.trim() || process.env.X_CHROME_PROFILE_DIR?.trim(); if (override) return path.resolve(override); const wslHome = getWslWindowsHome(); - if (wslHome) return path.join(wslHome, ".local", "share", APP_DATA_DIR, X_TO_MARKDOWN_DATA_DIR, PROFILE_DIR_NAME); - return path.join(resolveXToMarkdownDataDir(), PROFILE_DIR_NAME); + if (wslHome) return path.join(wslHome, ".local", "share", APP_DATA_DIR, PROFILE_DIR_NAME); + return path.join(resolveUserDataRoot(), APP_DATA_DIR, PROFILE_DIR_NAME); } export function resolveXToMarkdownConsentPath(): string { diff --git a/skills/baoyu-post-to-wechat/scripts/cdp.ts b/skills/baoyu-post-to-wechat/scripts/cdp.ts index 840a75d..9ed7e75 100644 --- a/skills/baoyu-post-to-wechat/scripts/cdp.ts +++ b/skills/baoyu-post-to-wechat/scripts/cdp.ts @@ -61,8 +61,12 @@ export function findChromeExecutable(): string | undefined { } export function getDefaultProfileDir(): string { - const base = process.env.XDG_DATA_HOME || path.join(os.homedir(), '.local', 'share'); - return path.join(base, 'wechat-browser-profile'); + const override = process.env.BAOYU_CHROME_PROFILE_DIR?.trim(); + if (override) return path.resolve(override); + const base = process.platform === 'darwin' + ? path.join(os.homedir(), 'Library', 'Application Support') + : process.env.XDG_DATA_HOME || path.join(os.homedir(), '.local', 'share'); + return path.join(base, 'baoyu-skills', 'chrome-profile'); } async function fetchJson(url: string): Promise { diff --git a/skills/baoyu-post-to-wechat/scripts/wechat-browser.ts b/skills/baoyu-post-to-wechat/scripts/wechat-browser.ts index 6091e8b..597caa6 100644 --- a/skills/baoyu-post-to-wechat/scripts/wechat-browser.ts +++ b/skills/baoyu-post-to-wechat/scripts/wechat-browser.ts @@ -183,11 +183,14 @@ function getWslWindowsHome(): string | null { } function getDefaultProfileDir(): string { - const override = process.env.WECHAT_BROWSER_PROFILE_DIR?.trim(); + const override = process.env.BAOYU_CHROME_PROFILE_DIR?.trim() || process.env.WECHAT_BROWSER_PROFILE_DIR?.trim(); if (override) return path.resolve(override); - const home = getWslWindowsHome() ?? os.homedir(); - const base = process.env.XDG_DATA_HOME || path.join(home, '.local', 'share'); - return path.join(base, 'wechat-browser-profile'); + const wslHome = getWslWindowsHome(); + if (wslHome) return path.join(wslHome, '.local', 'share', 'baoyu-skills', 'chrome-profile'); + const base = process.platform === 'darwin' + ? path.join(os.homedir(), 'Library', 'Application Support') + : process.env.XDG_DATA_HOME || path.join(os.homedir(), '.local', 'share'); + return path.join(base, 'baoyu-skills', 'chrome-profile'); } async function fetchJson(url: string): Promise { diff --git a/skills/baoyu-post-to-weibo/scripts/weibo-utils.ts b/skills/baoyu-post-to-weibo/scripts/weibo-utils.ts index 60c8b33..e17ef6c 100644 --- a/skills/baoyu-post-to-weibo/scripts/weibo-utils.ts +++ b/skills/baoyu-post-to-weibo/scripts/weibo-utils.ts @@ -54,10 +54,12 @@ export function findExistingChromeDebugPort(profileDir: string): number | null { } export function getDefaultProfileDir(): string { - const override = process.env.WEIBO_BROWSER_PROFILE_DIR?.trim(); + const override = process.env.BAOYU_CHROME_PROFILE_DIR?.trim() || process.env.WEIBO_BROWSER_PROFILE_DIR?.trim(); if (override) return path.resolve(override); - const base = process.env.XDG_DATA_HOME || path.join(os.homedir(), '.local', 'share'); - return path.join(base, 'x-browser-profile'); + const base = process.platform === 'darwin' + ? path.join(os.homedir(), 'Library', 'Application Support') + : process.env.XDG_DATA_HOME || path.join(os.homedir(), '.local', 'share'); + return path.join(base, 'baoyu-skills', 'chrome-profile'); } export function sleep(ms: number): Promise { diff --git a/skills/baoyu-post-to-x/scripts/x-utils.ts b/skills/baoyu-post-to-x/scripts/x-utils.ts index b86ae8b..ac60dc5 100644 --- a/skills/baoyu-post-to-x/scripts/x-utils.ts +++ b/skills/baoyu-post-to-x/scripts/x-utils.ts @@ -81,11 +81,14 @@ function getWslWindowsHome(): string | null { } export function getDefaultProfileDir(): string { - const override = process.env.X_BROWSER_PROFILE_DIR?.trim(); + const override = process.env.BAOYU_CHROME_PROFILE_DIR?.trim() || process.env.X_BROWSER_PROFILE_DIR?.trim(); if (override) return path.resolve(override); - const home = getWslWindowsHome() ?? os.homedir(); - const base = process.env.XDG_DATA_HOME || path.join(home, '.local', 'share'); - return path.join(base, 'x-browser-profile'); + const wslHome = getWslWindowsHome(); + if (wslHome) return path.join(wslHome, '.local', 'share', 'baoyu-skills', 'chrome-profile'); + const base = process.platform === 'darwin' + ? path.join(os.homedir(), 'Library', 'Application Support') + : process.env.XDG_DATA_HOME || path.join(os.homedir(), '.local', 'share'); + return path.join(base, 'baoyu-skills', 'chrome-profile'); } export function sleep(ms: number): Promise { diff --git a/skills/baoyu-url-to-markdown/scripts/paths.ts b/skills/baoyu-url-to-markdown/scripts/paths.ts index 453af41..8bcdcad 100644 --- a/skills/baoyu-url-to-markdown/scripts/paths.ts +++ b/skills/baoyu-url-to-markdown/scripts/paths.ts @@ -23,7 +23,7 @@ export function resolveUrlToMarkdownDataDir(): string { } export function resolveUrlToMarkdownChromeProfileDir(): string { - const override = process.env.URL_CHROME_PROFILE_DIR?.trim(); + const override = process.env.BAOYU_CHROME_PROFILE_DIR?.trim() || process.env.URL_CHROME_PROFILE_DIR?.trim(); if (override) return path.resolve(override); - return path.join(resolveUserDataRoot(), APP_DATA_DIR, URL_TO_MARKDOWN_DATA_DIR, PROFILE_DIR_NAME); + return path.join(resolveUserDataRoot(), APP_DATA_DIR, PROFILE_DIR_NAME); }