diff --git a/launcher/package.json b/launcher/package.json index 30d00bb98..4533eb89c 100644 --- a/launcher/package.json +++ b/launcher/package.json @@ -1,6 +1,6 @@ { "name": "codex-web-gpt-launcher", - "version": "3.0.3", + "version": "3.0.4", "private": true, "description": "Desktop control center for Codex ChatGPT Web", "author": "miuuyy", diff --git a/package.json b/package.json index 83ee9d636..ba56ed262 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "codex-chatgpt-web", - "version": "3.0.3", + "version": "3.0.4", "private": true, "description": "A focused local Responses bridge that runs Codex tasks through a user-authenticated ChatGPT web session.", "repository": { diff --git a/scripts/install.sh b/scripts/install.sh index 990eed67b..49ed8a530 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -2,7 +2,7 @@ set -eu REPOSITORY="${CODEX_CHATGPT_WEB_REPOSITORY:-miuuyy/codex-chatgpt-web}" -VERSION="${CODEX_CHATGPT_WEB_VERSION:-3.0.3}" +VERSION="${CODEX_CHATGPT_WEB_VERSION:-3.0.4}" BIN_DIR="${CODEX_CHATGPT_WEB_BIN_DIR:-$HOME/.local/bin}" LIB_DIR="${CODEX_CHATGPT_WEB_LIB_DIR:-$HOME/.local/lib/codex-chatgpt-web}" DOC_DIR="${CODEX_CHATGPT_WEB_DOC_DIR:-$HOME/.local/share/doc/codex-chatgpt-web}" diff --git a/src/chatgpt-session.ts b/src/chatgpt-session.ts index 885ee82f4..b43901141 100644 --- a/src/chatgpt-session.ts +++ b/src/chatgpt-session.ts @@ -10,7 +10,6 @@ export const CHATGPT_COMPOSER_SELECTOR = [ ].join(", "); export const CHATGPT_EFFORT_CONTROL_SELECTOR = [ 'button[aria-haspopup="menu"][data-tone="neutral"]:has([data-animated-slider-trigger="true"])', - 'button[aria-haspopup="menu"][data-tone="neutral"]', 'button[data-testid="model-switcher-dropdown-button"][aria-haspopup="menu"]', ].join(", "); export const CHATGPT_EFFORT_MENU_SELECTOR = [ diff --git a/src/version.ts b/src/version.ts index 9350c15e0..74b1b9336 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = "3.0.3"; +export const VERSION = "3.0.4"; diff --git a/tests/chatgpt-session.test.ts b/tests/chatgpt-session.test.ts index 5cc312fe9..a1a397d39 100644 --- a/tests/chatgpt-session.test.ts +++ b/tests/chatgpt-session.test.ts @@ -31,12 +31,15 @@ test("login keeps the established turn composer contract", () => { }); test("the effort selector identifies the model slider instead of any composer menu button", () => { - expect(CHATGPT_EFFORT_CONTROL_SELECTOR).toContain('[data-animated-slider-trigger="true"]'); - expect(CHATGPT_EFFORT_CONTROL_SELECTOR).toContain( - 'button[aria-haspopup="menu"][data-tone="neutral"]', + const selectors = CHATGPT_EFFORT_CONTROL_SELECTOR.split(",").map(selector => selector.trim()); + expect(selectors).toContain( + 'button[aria-haspopup="menu"][data-tone="neutral"]:has([data-animated-slider-trigger="true"])', ); - expect(CHATGPT_EFFORT_CONTROL_SELECTOR).toContain('[data-testid="model-switcher-dropdown-button"]'); - expect(CHATGPT_EFFORT_CONTROL_SELECTOR).not.toBe('button[aria-haspopup="menu"]'); + expect(selectors).toContain( + 'button[data-testid="model-switcher-dropdown-button"][aria-haspopup="menu"]', + ); + expect(selectors).not.toContain('button[aria-haspopup="menu"][data-tone="neutral"]'); + expect(selectors).not.toContain('button[aria-haspopup="menu"]'); }); test("a complete authenticated composer with no effort selector is Luna-only", async () => {