Files
T
golem ff61aff5b9 feat: rewrite the options page for first-time users (#23)
Rewrites the options page for first-time users without removing any setting. Customization in a lightweight package is what sets this extension apart. Design: `docs/superpowers/specs/2026-10-18-options-page-for-first-time-users-design.md`.

**User-visible changes**
- **Layout:** the description stays as the first line, followed by a **Usage instructions** section and the **Settings** section. Each section has a heading and a divider.
- **Usage instructions:** one labelled line per way to open ChatGPT, each with a small drawing:
  - **Address bar:** `<Ctrl>+L`, then `gpt`, a space and the question. The drawing shows a ChatGPT label because the address-bar code shipped in Firefox 157.0.1 enters search mode when an engine keyword is followed by a space. I checked that in its `omni.ja`, but it still needs confirming on screen; see the checks below.
  - **Right-click:** a drawing of the menu with Ask ChatGPT highlighted.
  - **Keyboard:** key caps for the user's actual shortcut, held down. The line is hidden when no shortcut is set.
  - **Toolbar:** the hovered button with the pointer, its tooltip, the puzzle-piece Extensions button, and a selected heading.
- **Drawings:** they are HTML/CSS and inline SVG, not screenshots, so they follow light and dark themes, stay sharp, and never go stale. They are centred. The package grows from 52.8 KB to 56.5 KB.
- **Settings:**
  - **Right-click menu** (was "Context menu") and **Open ChatGPT in** stay visible.
  - Choosing **Advanced** reveals a drawing of the Ask ChatGPT submenu (Ask normally, Explain, Summarize, Debug code). It lives in the block that only shows for Advanced, so it needs no script.
  - Prompt template, temporary chat and web search move under **More options**, whose heading names them. It opens by itself on load, or when a sync changes one of them, if one of them isn't at its default.
  - **Restore defaults** is right-aligned and red.
- **Bottom of the page:**
  - The keyword/default-engine and keyboard-shortcut notes become collapsed sections with numbered steps.
  - The project links are centred, and stack on narrow panels.
- **Hotkeys:** written as `<Ctrl>+L` and `<Alt>+<Shift>+G`, including the user's actual shortcut. Mac users see `<Cmd>`, `<Option>` and `<Return>`, detected with `runtime.getPlatformInfo`, which needs no permission.
- **Docs:**
  - Keyword wording is corrected in the options page and README: Firefox adds a custom keyword alongside `gpt` instead of replacing it.
  - README and AGENTS.md use the new setting names.
  - AGENTS.md records the keep-every-setting rule, the hotkey format and the "filled in, never sent" copy rule.

These still match the original options design spec: the temporary-chat and web-search wording, and the rule that copy never says the question is sent.

No permission, search URL, privacy or packaging changes.

**Checks**
- `npm test`: lint 0 errors / 0 warnings, 61/61 unit tests, build OK.
- New tests:
  - the key formatter, including the Mac names Firefox stores (Command, MacCtrl, Alt)
  - the page's written hotkeys match the formatter
  - the keyboard drawing's key caps follow the live shortcut
- Rendered in headless Firefox 157 with the extension APIs stubbed:
  - light and dark themes
  - 680 px and 360 px wide
  - Mac key names
  - More options opening for a customised prompt template
  - both bottom sections expanded

**Manual Firefox checks (`npm run dev` → about:addons → Preferences)**
- [x] Typing `gpt` and a space shows a ChatGPT label in the address bar, as drawn. If it doesn't, the drawing drops the label and shows plain `gpt how do magnets work?`
- [x] Light and dark themes, and a narrow about:addons width
- [x] Expanding More options and the two bottom sections grows the inline panel without clipping or scrolling
- [x] The Keyboard line and its key caps disappear when the shortcut is removed, and come back showing the new keys when one is set
- [x] More options opens by itself after changing the prompt template and reopening the page
- [x] Choosing Advanced shows the submenu drawing; Simple and Off hide it
- [x] Settings still save, and Restore defaults still works

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: https://git.zavage.net/Zavage-Software/search-with-chatgpt-powered-by-openai-extension/pulls/23
Co-authored-by: golem <golem@zavage.net>
2026-10-18 22:53:27 -06:00

9.1 KiB
Raw Permalink Blame History

Search with ChatGPT Powered by OpenAI Firefox Extension

This extension adds ChatGPT as a configurable Firefox search provider. Type gpt <query> in the address bar to open the query in a new ChatGPT session. It uses no API key, custom server, or intermediary handler.

ChatGPT may require you to sign in. If your prompt is not sent automatically, press Enter or click Send in ChatGPT.

This is an unofficial extension provided by Zavage Software Inc.

See LICENSE.txt for licensing terms.

Ask about selected text

Highlight text on a webpage, right-click it, and choose Ask ChatGPT. ChatGPT opens with your selection. Try selecting a paragraph you want explained or translated.

You can also press Alt+Shift+G to use the current selection. With nothing selected, the shortcut opens a blank chat. Change the shortcut under Manage Extension Shortcuts in the about:addons gear menu.

Click the extension’s Ask ChatGPT toolbar button to use selected text or, with nothing selected, open a blank chat. On pages Firefox does not allow extensions to read, the button opens a blank chat. You can pin the button to the toolbar from Firefox’s extensions menu. It uses your saved prompt and tab/window preferences, and works even when the right-click menu is Off.

The options panel's collapsed Change the keyboard shortcut section shows your currently configured shortcut and refreshes when it changes or you return to the panel. If you remove it, the panel shows “No keyboard shortcut assigned”. Its Change keyboard shortcut button opens Firefox’s shortcut editor when supported; otherwise follow the menu path above. Restore defaults does not change your keyboard shortcut.

To customize the prompt, open More options and set Prompt template to something like Explain simply: {query} or Translate into Spanish: {query}. The Simple menu action, Ask normally, toolbar button, and shortcut use your template. Other advanced actions use their own dedicated prompts.

Search keyword and default engine

Open Firefox’s Settings → Search, or paste about:preferences#search into the address bar. Under Search Shortcuts, edit ChatGPT’s keyword to add your own prefix; gpt keeps working alongside it. Under Default Search Engine, choose ChatGPT to search without a prefix, or choose your previous engine to switch back. See Firefox’s search settings guide for illustrated instructions.

These are Firefox settings; the extension’s Restore defaults button does not change them.

Options

Open about:addons, select this extension, and choose the Options tab (Preferences on macOS and Linux). Available settings:

  • Right-click menu — Simple (default) keeps the direct selection action; Advanced offers contextual presets; Off hides the menu. The toolbar button and keyboard shortcut work in every mode. Existing enabled/disabled preferences migrate to Simple/Off. Changes apply without restarting Firefox.
  • Show Translate in the Advanced menu — off by default. When enabled, choose Ask each time for a language dialog, or enter a Preferred language to translate directly. An empty or invalid preferred language falls back to asking. Enter continues; Escape or Cancel opens nothing.
  • Open ChatGPT in — a new tab, a new background tab, or a new window.

Under More options, which opens by itself once you have changed one of them:

  • Prompt template — wraps your text, for example Explain simply: {query}. Up to 1,000 characters.
  • Request a temporary chat — asks ChatGPT not to save the conversation. ChatGPT may not honour this; check its own indicator before relying on it.
  • Ask ChatGPT to use web search — a hint to ChatGPT's interface, not a guarantee.

Restore defaults resets extension preferences to Simple mode with translation hidden; it does not change Firefox's search engine or shortcut settings.

In Advanced mode, selected text offers Ask normally, Explain, Summarize, and Debug code. Translate appears only when enabled. The extension does not try to detect code. A selected link uses selection actions; without a selection, a link offers Ask about this link and Review link safety. Page background offers Ask about this page and Summarize this page. Link/page actions send only the URL. ChatGPT may be unable to access its content, and a link review is not a guarantee of safety.

Long selections require confirmation before sending shortened text. Link URLs are never shortened: unsupported schemes, embedded login credentials, and URLs that cannot fit are rejected. The extension does not simulate submission; ChatGPT controls whether a URL prompt is sent automatically or waits in the composer.

These settings apply to selecting text and choosing Ask ChatGPT from the right-click menu, clicking the toolbar button, or pressing Alt+Shift+G. Rebind the shortcut under Manage Extension Shortcuts in the Add-ons gear menu.

The gpt <query> address-bar search is unchanged and does not read these settings.

The options panel, toolbar button, right-click item, and keyboard shortcut require Firefox 112 or newer. On older versions the extension still installs and the gpt <query> address-bar search still works; only these newer features are inactive.

Sending your prompt

The extension opens ChatGPT with the prompt in the URL. ChatGPT controls what happens next: it may send the prompt automatically or leave it in the composer. You may need to sign in before continuing. If your prompt is not sent automatically, press Enter or click Send in ChatGPT.

If ChatGPT shows a verification error, try signing in and opening the prompt again. Signing in has helped in testing, but does not guarantee automatic submission.

The extension does not click Send, simulate Enter, or call ChatGPT's internal conversation API. This behavior can vary with changes to ChatGPT itself.

Browser Support

Firefox Desktop is the current development and release target. Chrome, Brave, other Chromium browsers, and additional WebExtension platforms may be evaluated after the Firefox feature set is more substantial; they are not current targets.

Development

Install Node.js 22 or newer, Firefox, and the locked development dependencies:

npm ci

Available commands:

  • npm run dev launches the extension in a temporary Firefox profile and reloads it when files change.
  • npm run lint validates the extension and treats warnings as errors.
  • npm run test:unit runs the node:test unit tests over test/.
  • npm run build creates web-ext-artifacts/search-with-chatgpt-firefox-<version>.zip.
  • npm test runs the same lint, unit test, and build checks used by Gitea Actions.

The generated ZIP is unsigned. Use npm run dev for local testing; signing and submission to Mozilla Add-ons remain a separate release step.

Before submitting a change, confirm that gpt <query> opens https://chatgpt.com?q=<query>, the provider remains non-default, and it can be configured in Firefox search settings.

Privacy Policy

This extension has no server, no API key, and no intermediary. Nothing is reported to Zavage Software.

  • Your settings are stored in your own browser profile. If you use Firefox Sync with Add-ons enabled, they sync end-to-end encrypted through your own Mozilla account.
  • Selection actions, the toolbar button, and the shortcut place your selected text in the ChatGPT URL. Advanced link/page actions instead place the chosen link or current page URL in the prompt. URLs may include private query parameters or fragments; use those actions only for URLs you want to share with ChatGPT.
  • The extension reads the selected text or relevant URL only when you invoke the action. It does not extract full page text, read page titles, or open a link itself for a safety check.
  • Language and confirmation dialogs hold pending content in memory only, not in settings sync or persistent storage. Canceling sends no prompt to ChatGPT. Closing or restarting Firefox discards pending actions.

Model selection

Model selection is not currently supported. We tested model URL hints while signed in and signed out, but could not make them change the selected model. Signed-out testing used Luna; signed-in testing stayed on GPT-5.6 Sol with medium effort regardless of the requested model. We removed the model setting rather than offer a control that did not work. Choose your model and thinking effort in ChatGPT itself where available. Previously saved extension model values are ignored.

Temporary chat did work in manual testing. Check ChatGPT's temporary-chat indicator before sending; web-search hints remain unverified.