diff --git a/packages/extension/public/_locales/de/messages.json b/packages/extension/public/_locales/de/messages.json index c61b37ec..bfdd4ca7 100644 --- a/packages/extension/public/_locales/de/messages.json +++ b/packages/extension/public/_locales/de/messages.json @@ -899,6 +899,12 @@ "Option_openMode_window_desc": { "message": "In neuem Fenster öffnen." }, + "Option_openMode_fullscreen": { + "message": "Vollbild" + }, + "Option_openMode_fullscreen_desc": { + "message": "Im Vollbildmodus öffnen." + }, "Option_openMode_tab_desc": { "message": "Tab anzeigen und aktivieren.Rechts vom aktuellen Tab anzeigen." }, @@ -1097,4 +1103,4 @@ "prompthistory_banner_description": { "message": "Ein neues Tool zum Wiederverwenden von Prompts für ChatGPT und mehr✨" } -} +} \ No newline at end of file diff --git a/packages/extension/public/_locales/en/messages.json b/packages/extension/public/_locales/en/messages.json index 077388d3..3dcbde35 100644 --- a/packages/extension/public/_locales/en/messages.json +++ b/packages/extension/public/_locales/en/messages.json @@ -947,6 +947,12 @@ "Option_openMode_window_desc": { "message": "Open in new window." }, + "Option_openMode_fullscreen": { + "message": "Fullscreen" + }, + "Option_openMode_fullscreen_desc": { + "message": "Open in fullscreen mode." + }, "Option_openMode_tab_desc": { "message": "Display tab and make it active.Show to the right of current tab." }, diff --git a/packages/extension/public/_locales/es/messages.json b/packages/extension/public/_locales/es/messages.json index 086be0b4..04ba0615 100644 --- a/packages/extension/public/_locales/es/messages.json +++ b/packages/extension/public/_locales/es/messages.json @@ -899,6 +899,12 @@ "Option_openMode_window_desc": { "message": "Abrir en nueva ventana." }, + "Option_openMode_fullscreen": { + "message": "Pantalla completa" + }, + "Option_openMode_fullscreen_desc": { + "message": "Abrir en modo de pantalla completa." + }, "Option_openMode_tab_desc": { "message": "Mostrar pestaña y activarla.Mostrar a la derecha de la pestaña actual." }, @@ -1097,4 +1103,4 @@ "prompthistory_banner_description": { "message": "Una nueva herramienta para reutilizar prompts en ChatGPT y más✨" } -} +} \ No newline at end of file diff --git a/packages/extension/public/_locales/fr/messages.json b/packages/extension/public/_locales/fr/messages.json index b0345b71..d76a2eb5 100644 --- a/packages/extension/public/_locales/fr/messages.json +++ b/packages/extension/public/_locales/fr/messages.json @@ -899,6 +899,12 @@ "Option_openMode_window_desc": { "message": "Ouvrir dans une nouvelle fenêtre." }, + "Option_openMode_fullscreen": { + "message": "Plein écran" + }, + "Option_openMode_fullscreen_desc": { + "message": "Ouvrir en mode plein écran." + }, "Option_openMode_tab_desc": { "message": "Afficher l'onglet et l'activer.Afficher à droite de l'onglet actuel." }, @@ -1097,4 +1103,4 @@ "prompthistory_banner_description": { "message": "Un nouvel outil pour réutiliser les prompts pour ChatGPT et plus✨" } -} +} \ No newline at end of file diff --git a/packages/extension/public/_locales/hi/messages.json b/packages/extension/public/_locales/hi/messages.json index ec4a58c2..07a0ff08 100644 --- a/packages/extension/public/_locales/hi/messages.json +++ b/packages/extension/public/_locales/hi/messages.json @@ -899,6 +899,12 @@ "Option_openMode_window_desc": { "message": "नई विंडो में खोलें।" }, + "Option_openMode_fullscreen": { + "message": "पूर्ण स्क्रीन" + }, + "Option_openMode_fullscreen_desc": { + "message": "पूर्ण स्क्रीन मोड में खोलें।" + }, "Option_openMode_tab_desc": { "message": "टैब दिखाएँ और सक्रिय करें।वर्तमान टैब के दाईं ओर दिखाएँ।" }, @@ -1097,4 +1103,4 @@ "prompthistory_banner_description": { "message": "ChatGPT और अधिक के लिए प्रॉम्प्ट का पुन: उपयोग करने के लिए एक नया उपकरण।✨" } -} +} \ No newline at end of file diff --git a/packages/extension/public/_locales/id/messages.json b/packages/extension/public/_locales/id/messages.json index ad3b4398..a82d0ce2 100644 --- a/packages/extension/public/_locales/id/messages.json +++ b/packages/extension/public/_locales/id/messages.json @@ -902,6 +902,12 @@ "Option_openMode_window_desc": { "message": "Buka di jendela baru." }, + "Option_openMode_fullscreen": { + "message": "Layar penuh" + }, + "Option_openMode_fullscreen_desc": { + "message": "Buka dalam mode layar penuh." + }, "Option_openMode_tab_desc": { "message": "Tampilkan tab dan aktifkan.Tampilkan di sebelah kanan tab saat ini." }, @@ -1100,4 +1106,4 @@ "prompthistory_banner_description": { "message": "Alat baru untuk menggunakan kembali prompt untuk ChatGPT dan lainnya✨" } -} +} \ No newline at end of file diff --git a/packages/extension/public/_locales/it/messages.json b/packages/extension/public/_locales/it/messages.json index a1740851..964d5a58 100644 --- a/packages/extension/public/_locales/it/messages.json +++ b/packages/extension/public/_locales/it/messages.json @@ -899,6 +899,12 @@ "Option_openMode_window_desc": { "message": "Apri in nuova finestra." }, + "Option_openMode_fullscreen": { + "message": "Schermo intero" + }, + "Option_openMode_fullscreen_desc": { + "message": "Apri in modalità schermo intero." + }, "Option_openMode_tab_desc": { "message": "Mostra scheda e attivala.Mostra a destra della scheda corrente." }, @@ -1130,4 +1136,4 @@ "prompthistory_banner_description": { "message": "Un nuovo strumento per riutilizzare i prompt per ChatGPT e altro✨" } -} +} \ No newline at end of file diff --git a/packages/extension/public/_locales/ja/messages.json b/packages/extension/public/_locales/ja/messages.json index 5d956f30..8669d0e4 100644 --- a/packages/extension/public/_locales/ja/messages.json +++ b/packages/extension/public/_locales/ja/messages.json @@ -311,6 +311,12 @@ "Option_openMode_window_desc": { "message": "新しいウィンドウを開く。" }, + "Option_openMode_fullscreen": { + "message": "フルスクリーン" + }, + "Option_openMode_fullscreen_desc": { + "message": "フルスクリーンで開く。" + }, "Option_openMode_tab_desc": { "message": "タブを表示してアクティブにする。表示中タブの右側に表示する。" }, diff --git a/packages/extension/public/_locales/ko/messages.json b/packages/extension/public/_locales/ko/messages.json index f245eef4..ba802faa 100644 --- a/packages/extension/public/_locales/ko/messages.json +++ b/packages/extension/public/_locales/ko/messages.json @@ -899,6 +899,12 @@ "Option_openMode_window_desc": { "message": "새 창에서 열기." }, + "Option_openMode_fullscreen": { + "message": "전체 화면" + }, + "Option_openMode_fullscreen_desc": { + "message": "전체 화면 모드로 열기." + }, "Option_openMode_tab_desc": { "message": "탭을 표시하고 활성화.현재 탭 오른쪽에 표시합니다." }, @@ -1130,4 +1136,4 @@ "prompthistory_banner_description": { "message": "ChatGPT 등에서 프롬프트를 재사용할 수 있는 새로운 도구✨" } -} +} \ No newline at end of file diff --git a/packages/extension/public/_locales/ms/messages.json b/packages/extension/public/_locales/ms/messages.json index 07b20f43..1dcbfc0e 100644 --- a/packages/extension/public/_locales/ms/messages.json +++ b/packages/extension/public/_locales/ms/messages.json @@ -902,6 +902,12 @@ "Option_openMode_window_desc": { "message": "Buka dalam tetingkap baru." }, + "Option_openMode_fullscreen": { + "message": "Skrin penuh" + }, + "Option_openMode_fullscreen_desc": { + "message": "Buka dalam mod skrin penuh." + }, "Option_openMode_tab_desc": { "message": "Papar tab dan aktifkan.Papar di sebelah kanan tab semasa." }, @@ -1133,4 +1139,4 @@ "prompthistory_banner_description": { "message": "Alat baharu untuk menggunakan semula gesaan untuk ChatGPT dan lain-lain✨" } -} +} \ No newline at end of file diff --git a/packages/extension/public/_locales/pt_BR/messages.json b/packages/extension/public/_locales/pt_BR/messages.json index 698cefef..1ff2c367 100644 --- a/packages/extension/public/_locales/pt_BR/messages.json +++ b/packages/extension/public/_locales/pt_BR/messages.json @@ -902,6 +902,12 @@ "Option_openMode_window_desc": { "message": "Abrir em nova janela." }, + "Option_openMode_fullscreen": { + "message": "Tela cheia" + }, + "Option_openMode_fullscreen_desc": { + "message": "Abrir em modo de tela cheia." + }, "Option_openMode_tab_desc": { "message": "Exibir aba e ativá-la.Exibir à direita da aba atual." }, @@ -1133,4 +1139,4 @@ "prompthistory_banner_description": { "message": "Uma nova ferramenta para reutilizar prompts no ChatGPT e mais✨" } -} +} \ No newline at end of file diff --git a/packages/extension/public/_locales/pt_PT/messages.json b/packages/extension/public/_locales/pt_PT/messages.json index adaf6a58..c9e82acc 100644 --- a/packages/extension/public/_locales/pt_PT/messages.json +++ b/packages/extension/public/_locales/pt_PT/messages.json @@ -902,6 +902,12 @@ "Option_openMode_window_desc": { "message": "Abrir em nova janela." }, + "Option_openMode_fullscreen": { + "message": "Ecrã inteiro" + }, + "Option_openMode_fullscreen_desc": { + "message": "Abrir em modo de ecrã inteiro." + }, "Option_openMode_tab_desc": { "message": "Exibir separador e activá-lo.Exibir à direita do separador actual." }, @@ -1133,4 +1139,4 @@ "prompthistory_banner_description": { "message": "Uma nova ferramenta para reutilizar prompts no ChatGPT e mais✨" } -} +} \ No newline at end of file diff --git a/packages/extension/public/_locales/ru/messages.json b/packages/extension/public/_locales/ru/messages.json index a62190b5..7a5467d7 100644 --- a/packages/extension/public/_locales/ru/messages.json +++ b/packages/extension/public/_locales/ru/messages.json @@ -899,6 +899,12 @@ "Option_openMode_window_desc": { "message": "Открыть в новом окне." }, + "Option_openMode_fullscreen": { + "message": "Полноэкранный" + }, + "Option_openMode_fullscreen_desc": { + "message": "Открыть в полноэкранном режиме." + }, "Option_openMode_tab_desc": { "message": "Показать вкладку и активировать.Показать справа от текущей вкладки." }, @@ -1130,4 +1136,4 @@ "prompthistory_banner_description": { "message": "Новый инструмент для повторного использования подсказок для ChatGPT и других✨" } -} +} \ No newline at end of file diff --git a/packages/extension/public/_locales/zh_CN/messages.json b/packages/extension/public/_locales/zh_CN/messages.json index d346cf1e..e49cdec0 100644 --- a/packages/extension/public/_locales/zh_CN/messages.json +++ b/packages/extension/public/_locales/zh_CN/messages.json @@ -899,6 +899,12 @@ "Option_openMode_window_desc": { "message": "在新窗口中打开。" }, + "Option_openMode_fullscreen": { + "message": "全屏" + }, + "Option_openMode_fullscreen_desc": { + "message": "以全屏模式打开。" + }, "Option_openMode_tab_desc": { "message": "显示标签页并激活。显示在当前标签页的右侧。" }, @@ -1130,4 +1136,4 @@ "prompthistory_banner_description": { "message": "用于在 ChatGPT 等中重用提示的新工具✨" } -} +} \ No newline at end of file diff --git a/packages/extension/public/setting/open_mode/fullscreen.png b/packages/extension/public/setting/open_mode/fullscreen.png new file mode 100644 index 00000000..b7af5c1f Binary files /dev/null and b/packages/extension/public/setting/open_mode/fullscreen.png differ diff --git a/packages/extension/src/components/option/field/OpenModeToggleField.tsx b/packages/extension/src/components/option/field/OpenModeToggleField.tsx index c462dd43..68f64635 100644 --- a/packages/extension/src/components/option/field/OpenModeToggleField.tsx +++ b/packages/extension/src/components/option/field/OpenModeToggleField.tsx @@ -32,6 +32,9 @@ const getIconForMode = (mode: string) => { if (mode === OPEN_MODE.WINDOW || mode === PAGE_ACTION_OPEN_MODE.WINDOW) { return "/setting/open_mode/window.png" } + if (mode === PAGE_ACTION_OPEN_MODE.FULLSCREEN) { + return "/setting/open_mode/fullscreen.png" + } return "/setting/open_mode/popup.png" } @@ -46,6 +49,7 @@ const SEARCH_MODES = [ const PAGE_ACTION_MODES = [ PAGE_ACTION_OPEN_MODE.POPUP, PAGE_ACTION_OPEN_MODE.WINDOW, + PAGE_ACTION_OPEN_MODE.FULLSCREEN, PAGE_ACTION_OPEN_MODE.TAB, PAGE_ACTION_OPEN_MODE.BACKGROUND_TAB, ] as const @@ -66,6 +70,7 @@ export const OpenModeToggleField = ({ type, }: OpenModeToggleFieldProps) => { const modes = type === "search" ? SEARCH_MODES : PAGE_ACTION_MODES + const gridCols = modes.length === 4 ? "grid-cols-4" : "grid-cols-5" return ( { if (val) field.onChange(val) }} - className="grid grid-cols-4 gap-2 py-1" + className={`grid ${gridCols} gap-2 py-1`} > {modes.map((mode) => { const iconSrc = getIconForMode(mode) diff --git a/packages/extension/src/services/chrome.ts b/packages/extension/src/services/chrome.ts index 62818434..116b589c 100644 --- a/packages/extension/src/services/chrome.ts +++ b/packages/extension/src/services/chrome.ts @@ -355,16 +355,22 @@ const readClipboardContent = async ( const openWindowAndReadClipboard = async ( param: ReadClipboardParam, ): Promise => { - const w = await chrome.windows.create({ + const createParams: chrome.windows.CreateData = { url: chrome.runtime.getURL("src/clipboard.html"), focused: true, type: param.type, - width: param.width, - height: param.height, - left: param.left, - top: param.top, incognito: param.incognito, - }) + } + + // Only set dimensions for non-fullscreen windows; fullscreen state is applied after creation + if (param.type === POPUP_TYPE.NORMAL) { + createParams.width = param.width + createParams.height = param.height + createParams.left = param.left + createParams.top = param.top + } + + const w = await chrome.windows.create(createParams) const result = await readClipboardContent(w.tabs?.[0].id as number) diff --git a/packages/extension/src/services/pageAction/background.ts b/packages/extension/src/services/pageAction/background.ts index 6ca1364e..3b67022b 100644 --- a/packages/extension/src/services/pageAction/background.ts +++ b/packages/extension/src/services/pageAction/background.ts @@ -340,16 +340,25 @@ export const openAndRun = ( tabId = ret.tabId clipboardText = ret.clipboardText } else { - // Popup and Window modes + // Popup, Window, and Fullscreen modes const ret = await openPopupWindow({ ...param, type: - param.openMode === PAGE_ACTION_OPEN_MODE.WINDOW + param.openMode === PAGE_ACTION_OPEN_MODE.WINDOW || + param.openMode === PAGE_ACTION_OPEN_MODE.FULLSCREEN ? POPUP_TYPE.NORMAL : POPUP_TYPE.POPUP, }) tabId = ret.tabId clipboardText = ret.clipboardText + + // Set window to fullscreen if requested + if (param.openMode === PAGE_ACTION_OPEN_MODE.FULLSCREEN && ret.tabId) { + const tab = await chrome.tabs.get(ret.tabId) + if (tab.windowId) { + await chrome.windows.update(tab.windowId, { state: "fullscreen" }) + } + } } if (tabId == null) { @@ -607,6 +616,27 @@ export const openRecorder = ( } else { console.error("Failed to open the recorder.") } + } else if ( + openMode === PAGE_ACTION_OPEN_MODE.WINDOW || + openMode === PAGE_ACTION_OPEN_MODE.FULLSCREEN + ) { + const w = await chrome.windows.create({ + url: startUrl, + width: size.width, + height: size.height, + top: t, + left: l, + type: POPUP_TYPE.NORMAL, + }) + if (w.tabs) { + await setRecordingTabId(w.tabs[0].id) + // Set window to fullscreen if requested + if (openMode === PAGE_ACTION_OPEN_MODE.FULLSCREEN && w.id) { + await chrome.windows.update(w.id, { state: "fullscreen" }) + } + } else { + console.error("Failed to open the recorder.") + } } else { const tab = sender.tab || (await getCurrentTab()) const recorderTab = await chrome.tabs.create({ diff --git a/packages/shared/src/constants/open-mode.ts b/packages/shared/src/constants/open-mode.ts index 81d0b89a..b6401b47 100644 --- a/packages/shared/src/constants/open-mode.ts +++ b/packages/shared/src/constants/open-mode.ts @@ -26,4 +26,5 @@ export enum PAGE_ACTION_OPEN_MODE { TAB = OPEN_MODE.TAB, BACKGROUND_TAB = OPEN_MODE.BACKGROUND_TAB, WINDOW = OPEN_MODE.WINDOW, + FULLSCREEN = "fullscreen", }