Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
12de8108a5 | ||
|
|
459c53ae86 | ||
|
|
3413e20601 | ||
|
|
71fa5ddbc8 | ||
|
|
ac734aa3db |
@@ -2,3 +2,5 @@
|
||||
node_modules/
|
||||
web-ext-artifacts/
|
||||
npm-debug.log*
|
||||
# Listing images are generated; see docs/amo/README.md.
|
||||
docs/amo/screenshots/
|
||||
|
||||
@@ -2,13 +2,6 @@
|
||||
|
||||
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version).
|
||||
|
||||
## Unreleased
|
||||
|
||||
- Replace the license with the Zavage Software Freeware License 1.0, written in
|
||||
plain English. Anyone may install and use the extension free of charge, for
|
||||
any purpose, and the new terms also cover earlier versions. Republishing it,
|
||||
sharing changed versions or reusing its code still needs permission.
|
||||
|
||||
## [1.3.0] (2026-10-18)
|
||||
|
||||
- Use the extension's bundled icon for the ChatGPT search engine.
|
||||
|
||||
+53
-42
@@ -1,70 +1,81 @@
|
||||
Zavage Software Freeware License 1.0
|
||||
1. Grant of License
|
||||
|
||||
Copyright (c) 2024-2026 Mathew Guest <mat@zavage.net> (https://zavage-software.com), who publishes as Zavage Software ("Zavage Software").
|
||||
This Zavage Software inc. License Agreement (the "Agreement") is a legal agreement between
|
||||
you (either an individual or a single entity) and Zavage Software inc. ("Licensor") for the
|
||||
use of the software product identified above, which includes computer software and may include
|
||||
associated media, printed materials, and "online" or electronic documentation (the "Software").
|
||||
|
||||
Anyone may install and use this extension free of charge, for any purpose. That permission lasts forever for every version this license covers. Without permission, nobody may republish, sell or give away copies of it, changed or not, or reuse its code, text or images elsewhere. You may read its source code, but this isn't an open source license. The full terms follow.
|
||||
By installing, copying, or otherwise using the Software,
|
||||
you agree to be bound by the terms of this Agreement. If
|
||||
you do not agree to the terms of this Agreement, do not
|
||||
install or use the Software.
|
||||
|
||||
This license covers the browser extension Search with ChatGPT powered by OpenAI! (the "Software"): every version Zavage Software made before this license or publishes with it, under any name and for any browser, together with their source code, icons, images, documentation and store listings. On addons.mozilla.org its add-on ID is {24644f0c-bfcb-4ebd-a16b-bc8a7d154288}. Anything in the Software or its repository history that belongs to someone else, such as another company's logo, isn't covered by this license and stays with its owner. In this license, "you" means the person or organization using the Software.
|
||||
|
||||
Section 1: What you may do
|
||||
2. License
|
||||
|
||||
You may install and use the Software for any purpose, personal or commercial, on any number of devices, free of charge. You may install it for others too, on devices you manage, such as your family's or your organization's. You may also:
|
||||
The Software is licensed, not sold. Subject to the terms of this Agreement,
|
||||
Licensor grants you a limited, non-exclusive, non-transferable,
|
||||
non-sublicensable license to use the Software solely for your
|
||||
internal business purposes.
|
||||
|
||||
- make the copies you need to install, run, sync and back up the Software, including a copy on an internal server or network share for installing it on devices you manage;
|
||||
- read, study and test its source code, including to check its security and privacy, and make the copies you need for that, such as a clone of the official repository; and
|
||||
- change your own copy, and use, copy and share the changed version only within your own household or organization.
|
||||
3. Restrictions
|
||||
|
||||
These permissions are worldwide, permanent and irrevocable: as long as you follow section 2, Zavage Software can't take them back. Section 5 explains what happens if you don't.
|
||||
You may not:
|
||||
|
||||
Section 2: What you may not do
|
||||
Copy, modify, or create derivative works of the Software.
|
||||
Distribute, sell, sublicense, lease, rent, or otherwise transfer the Software to any third party.
|
||||
Reverse engineer, decompile, disassemble, or otherwise attempt to derive the source code of the Software,
|
||||
except to the extent expressly permitted by applicable law.
|
||||
Use the Software in any manner that could damage, disable, overburden, or impair the
|
||||
Software or interfere with any other party's use of the Software.
|
||||
|
||||
Except as this license allows, and unless Zavage Software gives you written permission (an email is enough), you may not:
|
||||
4. Ownership
|
||||
|
||||
- publish, distribute, sell, rent or give the Software, or a version made from it (a fork), to anyone else, whether or not you charge for it, including by listing it on an add-on store (such as addons.mozilla.org, the Chrome Web Store or Microsoft Edge Add-ons) or posting it on a public website or in a public code repository. A fork includes a changed copy, a version for another browser, a userscript, and a translation of its code or text, whether made by hand, with AI or with other tools;
|
||||
- copy or adapt any part of its code, text, icons or images for anything else, such as another add-on, app, script, website, service or store listing; or
|
||||
- remove or change its copyright and license notices.
|
||||
All right, title, and interest in and to the Software, including all intellectual
|
||||
property rights, are and will remain the sole property of Licensor. This Agreement does
|
||||
not grant you any rights in or to the Software other than the limited license granted above.
|
||||
|
||||
Sharing a link to the official listing or repository is always fine, and so is naming the Software, quoting short parts of it, or showing its icon and screenshots or videos of it in use, in a review, an article, a tutorial, a class, a security report or a support request. Nothing in this license limits rights the law gives you anyway, such as fair use or fair dealing. Zavage Software keeps every right this license doesn't give you.
|
||||
|
||||
Section 3: Names and logos
|
||||
5. Termination
|
||||
|
||||
You may use the Zavage Software name and the Software's name and icon to refer to the Software, but not to brand anything else or to suggest that Zavage Software made or endorsed something it didn't. ChatGPT and OpenAI are trademarks of OpenAI. The Software is unofficial and isn't affiliated with or endorsed by OpenAI.
|
||||
This Agreement is effective until terminated. Licensor may terminate this Agreement
|
||||
immediately if you breach any term of this Agreement. Upon termination, you must cease
|
||||
all use of the Software and destroy all copies of the Software in your possession or control.
|
||||
|
||||
Section 4: ChatGPT is a separate service
|
||||
|
||||
The Software opens chatgpt.com in your browser with your text filled in. OpenAI runs ChatGPT under its own terms and privacy policy. Zavage Software doesn't control ChatGPT and isn't responsible for its availability or its answers, or for how OpenAI handles text that reaches ChatGPT through the Software.
|
||||
6. Disclaimer of Warranties
|
||||
|
||||
Section 5: If you break section 2
|
||||
The Software is provided "AS IS" and "AS AVAILABLE," without warranty of any kind.
|
||||
Licensor disclaims all warranties, whether express, implied, statutory, or
|
||||
otherwise, including but not limited to the implied warranties of merchantability,
|
||||
fitness for a particular purpose, title, and non-infringement.
|
||||
|
||||
If you break section 2, Zavage Software may tell you so in writing (an email is enough). If, within 30 days of that notice, you stop and undo what you can, such as taking down copies you published, you keep your permissions under this license, though that doesn't excuse the breach. If you don't, or if you break section 2 again after a notice, your permissions under this license end: stop using the Software and delete your copies. Sections 6 to 10 still apply after that.
|
||||
|
||||
Section 6: No warranty
|
||||
7. Limitation of Liability
|
||||
|
||||
Because the Software is free, it comes without a warranty:
|
||||
To the maximum extent permitted by applicable law, in no event will Licensor be liable
|
||||
for any indirect, incidental, special, consequential, or punitive damages, or any loss of
|
||||
profits or revenues, whether incurred directly or indirectly, or any loss of data, use,
|
||||
goodwill, or other intangible losses, resulting from (a) your use of or inability to use
|
||||
the Software; (b) any unauthorized access to or use of the Software; or (c) any other
|
||||
matter relating to the Software.
|
||||
|
||||
TO THE EXTENT THE LAW ALLOWS, THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT.
|
||||
|
||||
Section 7: Limit of liability
|
||||
8. Governing Law
|
||||
|
||||
TO THE EXTENT THE LAW ALLOWS, FOR ANY CLAIM ARISING FROM THE SOFTWARE OR THIS LICENSE, ZAVAGE SOFTWARE IS NOT LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR PUNITIVE DAMAGES, OR FOR LOST DATA, PROFITS OR GOODWILL, AND ITS TOTAL LIABILITY FOR ALL SUCH CLAIMS WILL NOT EXCEED US$50.
|
||||
This Agreement will be governed by and construed in accordance with the laws of Denver, CO and the United States,
|
||||
without regard to its conflict of law principles.
|
||||
|
||||
Sections 6 and 7 don't limit liability for death or personal injury caused by negligence, for fraud, for harm caused deliberately, recklessly or through gross negligence, or under product liability laws. They also don't limit any other liability, or take away any consumer right, that the law doesn't allow to be limited or taken away.
|
||||
|
||||
Section 8: Law
|
||||
9. Entire Agreement
|
||||
|
||||
Colorado law and United States federal law govern this license. If you use the Software as a consumer, outside your trade, business or profession, you also keep the protections of the law where you live that an agreement can't take away.
|
||||
This Agreement constitutes the entire agreement between you and Licensor regarding the use of the
|
||||
Software and supersedes all prior and contemporaneous understandings, agreements, representations,
|
||||
and warranties, both written and oral.
|
||||
|
||||
Section 9: Earlier and later versions
|
||||
10. Contact Information
|
||||
|
||||
This license replaces any other terms that came with the versions it covers. A later version may come with different terms, but they can't take back what this license gives you for the versions it covers.
|
||||
If you have any questions about this Agreement, please contact Zavage Software Inc. at:
|
||||
|
||||
Section 10: General
|
||||
|
||||
- If a court won't enforce part of this license, the rest still applies.
|
||||
- If the Software passes to someone else, such as a company, this license keeps applying and they take Zavage Software's place in it.
|
||||
|
||||
Section 11: Contact
|
||||
|
||||
Official listing: https://addons.mozilla.org/firefox/addon/search-with-chatgpt/
|
||||
Official repository: https://git-repos.zavage.net/zavage-software/search-with-chatgpt-powered-by-openai-extension
|
||||
Questions, permission requests or security reports: mat@zavage.net, https://zavage-software.com
|
||||
* mat@zavage.net (email)
|
||||
* https://zavage-software.com (website)
|
||||
|
||||
@@ -7,7 +7,7 @@ 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 by Zavage Software.
|
||||
This is an unofficial extension provided by Zavage Software Inc.
|
||||
|
||||
- [Firefox Add-ons listing](https://addons.mozilla.org/en-US/firefox/addon/search-with-chatgpt/)
|
||||
- [Project website](https://zavage-software.com/portfolio/search-with-ChatGPT)
|
||||
@@ -15,9 +15,7 @@ This is an unofficial extension by Zavage Software.
|
||||
- [Feedback or report a bug](https://zavage-software.com/contact-us)
|
||||
- [Zavage Software](https://zavage-software.com)
|
||||
|
||||
Anyone may use the extension free of charge, for any purpose. Republishing it,
|
||||
sharing changed versions or reusing its code needs permission. You may read the
|
||||
source, but it isn't open source. See `LICENSE.txt` for the full terms.
|
||||
See `LICENSE.txt` for licensing terms.
|
||||
|
||||
## Ask about selected text
|
||||
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
# Add-ons listing
|
||||
|
||||
Paste-ready text and images for the
|
||||
[addons.mozilla.org listing](https://addons.mozilla.org/en-US/firefox/addon/search-with-chatgpt/).
|
||||
Edit them in the AMO Developer Hub under the add-on's listing details.
|
||||
|
||||
Listing copy follows the copy rule in the
|
||||
[options design](../superpowers/specs/2026-07-29-extension-options-design.md):
|
||||
ChatGPT opens with the text *filled in*. Never say the text is sent, searched,
|
||||
or asked. Keep "private", "incognito", and "secure" away from temporary chat,
|
||||
and call temporary chat and web search hints.
|
||||
|
||||
## Branding
|
||||
|
||||
The name's "powered by OpenAI" and the extension's own icon follow OpenAI's
|
||||
brand guidelines on purpose:
|
||||
- OpenAI's logo would make unofficial software look official, so it isn't
|
||||
used.
|
||||
- "Powered by OpenAI" is one of the phrases the guidelines allow.
|
||||
|
||||
Keep both, along with the description's "unofficial" line.
|
||||
|
||||
## Summary
|
||||
|
||||
Plain text, 250 characters at most. The summary isn't Markdown, and AMO escapes
|
||||
`<` and `>` in it, so `<Alt>` would show as `<Alt>`. The summary is the one
|
||||
place that writes the shortcut without angle brackets:
|
||||
|
||||
```text
|
||||
Ask ChatGPT from anywhere in Firefox. Type gpt in the address bar, right-click selected text, press Alt+Shift+G, or click the toolbar button. ChatGPT opens with your text filled in. Tiny, fast, no API key.
|
||||
```
|
||||
|
||||
## Description
|
||||
|
||||
Since March 2025, AMO formats descriptions as
|
||||
[Markdown](https://blog.mozilla.org/addons/2025/03/03/markdown/) and shows any
|
||||
HTML as plain text. Plain `<Ctrl>` therefore shows as typed. Check the preview
|
||||
after saving.
|
||||
|
||||
```markdown
|
||||
Ask ChatGPT from anywhere in Firefox.
|
||||
|
||||
**Four ways to use it**
|
||||
|
||||
- **Address bar:** press <Ctrl>+L, type `gpt` and your question, like `gpt why does my cat knock things over?`, and press <Enter>.
|
||||
- **Right-click:** select text on any page and choose Ask ChatGPT.
|
||||
- **Keyboard:** select text and press <Alt>+<Shift>+G. With nothing selected, it opens a blank chat.
|
||||
- **Toolbar:** click the Ask ChatGPT button.
|
||||
|
||||
ChatGPT opens with your text filled in. You may need to sign in to ChatGPT.
|
||||
|
||||
**Small on purpose**
|
||||
|
||||
The whole extension is about 56 KB, with no libraries, no server, no API key and no intermediary, and nothing is reported to us. Firefox opens chatgpt.com directly, and it never makes ChatGPT your default search engine unless you choose to.
|
||||
|
||||
**Make it yours**
|
||||
|
||||
- A simple right-click menu, or an advanced one with Explain, Summarize, Debug code and Translate.
|
||||
- Your own prompt template, like `Explain simply: {query}`.
|
||||
- Open ChatGPT in a new tab, a background tab or a new window.
|
||||
- Ask for a temporary chat or a web search. These are hints, and ChatGPT decides whether to honour them.
|
||||
- Add your own search keyword or change the shortcut in Firefox's settings.
|
||||
|
||||
Search with ChatGPT is an unofficial extension by Zavage Software and isn't affiliated with OpenAI.
|
||||
|
||||
[Source code](https://git-repos.zavage.net/zavage-software/search-with-chatgpt-powered-by-openai-extension) · [Project website](https://zavage-software.com/portfolio/search-with-ChatGPT) · [Feedback or report a bug](https://zavage-software.com/contact-us)
|
||||
```
|
||||
|
||||
Update "about 56 KB" when the package size changes noticeably. `npm run build`
|
||||
prints the ZIP's path.
|
||||
|
||||
## Screenshots
|
||||
|
||||
Upload in this order, with these captions. Each image is 1280×800, the size AMO
|
||||
recommends, and carries no added text, as Mozilla's listing guide advises.
|
||||
|
||||
The images are not committed. Generate them as described under
|
||||
[Regenerating the images](#regenerating-the-images); they land in
|
||||
`docs/amo/screenshots/`, which git ignores, so the links below work once you
|
||||
have.
|
||||
|
||||
| Image | Caption |
|
||||
|---|---|
|
||||
| [1-address-bar.png](screenshots/1-address-bar.png) | Type gpt and your question in the address bar. ChatGPT opens with it filled in. |
|
||||
| [2-right-click.png](screenshots/2-right-click.png) | Select text on any page, right-click, and choose Ask ChatGPT. |
|
||||
| [3-keyboard.png](screenshots/3-keyboard.png) | Or select text and press <Alt>+<Shift>+G. |
|
||||
| [4-toolbar.png](screenshots/4-toolbar.png) | Or click the Ask ChatGPT button in the toolbar. |
|
||||
| [5-advanced-menu.png](screenshots/5-advanced-menu.png) | Switch to the Advanced menu for Explain, Summarize, Debug code and Translate. |
|
||||
|
||||
A real screenshot of the options page in `about:addons` makes a good sixth
|
||||
image: one genuine screenshot next to the drawings helps people trust them.
|
||||
Suggested caption: "Every setting on one simple page."
|
||||
|
||||
## Regenerating the images
|
||||
|
||||
The images are the options page's drawings, enlarged by
|
||||
[`screenshots.html`](screenshots.html), which reuses `options/options.css`. They
|
||||
are generated rather than committed, like the build ZIP. When a drawing in
|
||||
`options/options.html` changes, copy the change into `screenshots.html`. Then,
|
||||
to produce the images, run these from the repository root:
|
||||
|
||||
```sh
|
||||
python3 -m http.server 8766 --bind 127.0.0.1 &
|
||||
profile=$(mktemp -d)
|
||||
echo 'user_pref("layout.css.prefers-color-scheme.content-override", 1);' > "$profile/user.js"
|
||||
for shot in 1-address-bar 2-right-click 3-keyboard 4-toolbar 5-advanced-menu; do
|
||||
firefox --headless -no-remote -profile "$profile" --window-size=1280,800 \
|
||||
--screenshot "$PWD/docs/amo/screenshots/$shot.png" \
|
||||
"http://127.0.0.1:8766/docs/amo/screenshots.html#$shot"
|
||||
done
|
||||
kill %1
|
||||
```
|
||||
|
||||
The output path must be absolute. The throwaway profile forces the light theme,
|
||||
and a fresh one avoids Firefox serving an old copy of the page from its cache.
|
||||
Opening `screenshots.html` without a `#fragment` shows every image in order.
|
||||
@@ -0,0 +1,130 @@
|
||||
<!doctype html>
|
||||
<!-- Renders the options page drawings as 1280x800 images for the
|
||||
addons.mozilla.org listing. Open with a #fragment (#1-address-bar) to
|
||||
show one image; without one, every image is shown in order.
|
||||
README.md in this folder explains how to regenerate them. Keep the
|
||||
markup in step with the drawings in options/options.html. -->
|
||||
<meta charset="utf-8" />
|
||||
<title>Add-ons listing images</title>
|
||||
<link rel="stylesheet" href="../../options/options.css" />
|
||||
<style>
|
||||
body {
|
||||
max-width: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.shot {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 1280px;
|
||||
height: 800px;
|
||||
}
|
||||
|
||||
body:has(.shot:target) .shot:not(:target) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* zoom re-lays the drawing out at the larger size, so text stays sharp. */
|
||||
.stage {
|
||||
width: 24rem;
|
||||
zoom: 2.6;
|
||||
}
|
||||
|
||||
.stage-wide {
|
||||
width: 26rem;
|
||||
zoom: 2.4;
|
||||
}
|
||||
|
||||
.stage .drawing {
|
||||
margin: 0;
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
.stage .drawing-keycaps {
|
||||
padding-top: 0.5rem;
|
||||
}
|
||||
</style>
|
||||
|
||||
<section class="shot" id="1-address-bar">
|
||||
<div class="stage stage-wide">
|
||||
<div class="drawing">
|
||||
<div class="drawing-urlbar">
|
||||
<span class="drawing-chip"><img src="../../icons/powered-by-openai-icon-128x128.png" alt="" />ChatGPT</span>
|
||||
<span class="drawing-typed">why does my cat knock things over?</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="shot" id="2-right-click">
|
||||
<div class="stage">
|
||||
<div class="drawing">
|
||||
<p class="drawing-page">Nobody knows <mark>why cats knock things over</mark>…</p>
|
||||
<div class="drawing-menu">
|
||||
<div>Copy</div>
|
||||
<div>Select All</div>
|
||||
<hr />
|
||||
<div class="drawing-menu-active"><img src="../../icons/powered-by-openai-icon-128x128.png" alt="" />Ask ChatGPT</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="shot" id="3-keyboard">
|
||||
<div class="stage">
|
||||
<div class="drawing">
|
||||
<p class="drawing-page">Cats sleep for <mark>sixteen hours a day</mark>.</p>
|
||||
<div class="drawing-keycaps">
|
||||
<kbd class="drawing-key">Alt</kbd>+<kbd class="drawing-key">Shift</kbd>+<kbd class="drawing-key">G</kbd>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="shot" id="4-toolbar">
|
||||
<div class="stage">
|
||||
<div class="drawing">
|
||||
<div class="drawing-toolbar">
|
||||
<span class="drawing-address">example.com</span>
|
||||
<span class="drawing-button">
|
||||
<svg viewBox="0 0 16 16"><path d="M2 5.5h3a2 2 0 1 1 3.2 0h3.3v2.8a2 2 0 1 1 0 3.2v3H2z" /></svg>
|
||||
</span>
|
||||
<span class="drawing-button drawing-button-hover">
|
||||
<img src="../../icons/powered-by-openai-icon-128x128.png" alt="" />
|
||||
<svg class="drawing-pointer" viewBox="0 0 12 18"><path d="M1 1v14.5l3.6-3.4 2.6 5.6 2.2-1-2.6-5.5H11z" /></svg>
|
||||
</span>
|
||||
<span class="drawing-button">
|
||||
<svg viewBox="0 0 16 16"><path d="M3 4.5h10M3 8h10M3 11.5h10" /></svg>
|
||||
</span>
|
||||
<span class="drawing-tooltip">Ask ChatGPT</span>
|
||||
</div>
|
||||
<p class="drawing-content"><mark>Why cats sit in every box</mark></p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="shot" id="5-advanced-menu">
|
||||
<div class="stage">
|
||||
<div class="drawing">
|
||||
<div class="drawing-menus">
|
||||
<div class="drawing-menu">
|
||||
<div>Copy</div>
|
||||
<div>Select All</div>
|
||||
<hr />
|
||||
<div class="drawing-menu-active"><img src="../../icons/powered-by-openai-icon-128x128.png" alt="" />Ask ChatGPT<span class="drawing-submenu-arrow">›</span></div>
|
||||
</div>
|
||||
<div class="drawing-menu drawing-submenu">
|
||||
<div>Ask normally</div>
|
||||
<hr />
|
||||
<div class="drawing-menu-active">Explain</div>
|
||||
<div>Summarize</div>
|
||||
<div>Debug code</div>
|
||||
<div>Translate…</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -0,0 +1,59 @@
|
||||
# Add-ons listing for 1.3
|
||||
|
||||
Status: implemented on `docs/24-amo-listing-add-screenshots-and-a` (#24). The
|
||||
paste-ready text and captions are in [`docs/amo/`](../../amo/README.md), along
|
||||
with the page that renders the images.
|
||||
|
||||
## Problem
|
||||
|
||||
The AMO listing had no screenshots, and its description covered only the `gpt`
|
||||
keyword. It never mentioned right-click, the keyboard shortcut, or the toolbar
|
||||
button. The listing is where newcomers decide to install and first learn how to
|
||||
use the extension.
|
||||
|
||||
## Decisions
|
||||
|
||||
- **Tone: clear, with one joke.** The copy gives plain steps for newcomers. A
|
||||
general cat joke ("gpt why does my cat knock things over?") replaces the old
|
||||
programmer joke ("sudo make me a sammich"), and the images share the cat
|
||||
theme.
|
||||
- **Say it is small.** Customization without bloat is what sets this extension
|
||||
apart, so the description has a "Small on purpose" section: about 56 KB, no
|
||||
libraries, no server, no API key, no intermediary, and nothing reported to
|
||||
us. These are the README's privacy claims; nothing new is claimed.
|
||||
- **Drawings as screenshots.** The images are the options page's drawings,
|
||||
enlarged and rendered by headless Firefox:
|
||||
- They are part of the extension's own UI.
|
||||
- They stay sharp and on brand.
|
||||
- They can be regenerated after UI changes.
|
||||
|
||||
Real screenshots would show OS-specific menus and go stale. A real
|
||||
screenshot of the options page is suggested as a sixth image, taken by the
|
||||
maintainer, because one genuine screenshot builds trust in the rest.
|
||||
- **AMO's guidance.** Images are 1280×800, the size AMO recommends and its
|
||||
largest display size, and carry no added text. Explanations go in each image's
|
||||
caption.
|
||||
- **The copy rule holds.** ChatGPT opens with the text filled in; it is never
|
||||
sent, searched, or asked. Temporary chat and web search are described as
|
||||
hints, and "private", "incognito", and "secure" appear nowhere near temporary
|
||||
chat.
|
||||
- **Branding stays.** The name's "powered by OpenAI" and the extension's own
|
||||
icon follow OpenAI's brand guidelines: no OpenAI logo on unofficial software,
|
||||
and only the phrases the guidelines allow. The description's "unofficial"
|
||||
line complements them.
|
||||
- **Correction from the draft.** The description does not say ChatGPT opens "in
|
||||
a new tab": `gpt` searches open in the current tab, and the other ways follow
|
||||
the Open ChatGPT in setting.
|
||||
|
||||
## Files
|
||||
|
||||
- `docs/amo/README.md`: summary, description (Markdown, which AMO has used
|
||||
instead of HTML since March 2025), captions in
|
||||
upload order, and how to regenerate the images.
|
||||
- `docs/amo/screenshots.html`: the drawing markup at 1280×800, one image per
|
||||
`#fragment`, styled by `options/options.css`.
|
||||
- `docs/amo/screenshots/*.png`: the five rendered images. They are generated
|
||||
and git-ignored rather than committed, so the repository carries no binaries
|
||||
and needs no Git LFS. The command to produce them is in the README.
|
||||
|
||||
`docs/` is excluded from the extension package, so none of this ships to users.
|
||||
@@ -1,119 +0,0 @@
|
||||
# Replace the license
|
||||
|
||||
Status: implemented on `docs/replace-license`. Researched and reviewed, but not
|
||||
legal advice; no lawyer has read it.
|
||||
|
||||
## Problem
|
||||
|
||||
The old `LICENSE.txt` was a stock business EULA, unchanged since June 2024. It:
|
||||
|
||||
- allowed use only "for your internal business purposes", which leaves out
|
||||
people using the extension at home;
|
||||
- banned copying and reverse engineering, although the source is public and the
|
||||
listing links to it;
|
||||
- named "Zavage Software inc." as licensor, though the code is Mathew's;
|
||||
- said users agreed by installing, which binds no one who installs from AMO.
|
||||
|
||||
## Goals
|
||||
|
||||
1. Anyone may use the extension for free, for any purpose, forever.
|
||||
2. Nobody may fork it, republish it, or build or sell anything from it.
|
||||
3. Everything else is reserved.
|
||||
|
||||
The text must not scare ordinary users away.
|
||||
|
||||
## How it was reviewed
|
||||
|
||||
Three multi-agent passes on 2026-10-19. Each finding was checked against primary
|
||||
sources by a separate skeptic.
|
||||
|
||||
1. Seven lenses: US law, international law, platforms, comparable licenses, a
|
||||
would-be cloner, ordinary users and drafting. A completeness critic followed.
|
||||
This pass produced 92 findings.
|
||||
2. A four-lens adversarial review of the revision, which produced 29 findings.
|
||||
3. A final consistency check and cold read.
|
||||
|
||||
## Decisions
|
||||
|
||||
- **Custom text.** No standard license fits all three goals:
|
||||
- PolyForm Strict allows noncommercial use only.
|
||||
- PolyForm Internal Use covers business use only.
|
||||
- PolyForm Perimeter, Shield and Noncommercial, Elastic, BSL and FSL all allow
|
||||
redistribution.
|
||||
- CC BY-NC-ND allows sharing unchanged copies.
|
||||
- **A permission, not an agreement.** Copyright already forbids forks without
|
||||
anyone agreeing to anything. "By installing you agree" doesn't bind people who
|
||||
install from a store (Specht v. Netscape, 2d Cir. 2002).
|
||||
- **Licensor: Mathew Guest, publishing as Zavage Software.** Colorado lists a
|
||||
Zavage Software Inc. LLC, but the code was never assigned to it. Section 10
|
||||
keeps the license in force if the code later passes to a company.
|
||||
- **Earlier versions are covered.** On AMO, versions 1.0, 1.2 and 1.3 share one
|
||||
license record (9155), and their signed packages bundle the old EULA. Section 9
|
||||
replaces those terms.
|
||||
- **Each version stays free forever.** A later version may carry different
|
||||
terms, but it can't take back what this license gives. The owner chose this
|
||||
over promising that every future version stays free.
|
||||
- **Changed copies stay within your household or organization.** There is no
|
||||
route for having Mozilla sign a changed copy. Submitting to AMO makes the
|
||||
submitter warrant worldwide distribution rights (Firefox Add-on Distribution
|
||||
Agreement §5(c)), which this license withholds. Changed copies still run as
|
||||
temporary add-ons, or in Developer Edition, Nightly and ESR.
|
||||
- **Reviews are welcome.** Reviews, tutorials, classes and security reports may
|
||||
name the extension, quote short parts, and show its icon and screenshots of it
|
||||
in use.
|
||||
- **Liability is capped at US$50**, for claims about the Software only. The cap
|
||||
has explicit exceptions (injury, fraud, deliberate or reckless harm, gross
|
||||
negligence, product liability). A bare "to the extent the law allows" doesn't
|
||||
save a cap in Germany, the UK or the EU.
|
||||
- **Clauses left out:**
|
||||
- A courts clause, which binds no forker and is unfair to EU and UK consumers.
|
||||
- A noncompete or a ban on similar extensions. Ideas aren't protected, and
|
||||
such a clause risks copyright misuse.
|
||||
- Clauses on AI training and on outside contributions.
|
||||
- **The name is "Freeware", not "Free Use".** "Free Use" has a slang meaning, and
|
||||
"free" alone suggests free software.
|
||||
- **The layout is plain text.** AMO shows license text as plain text: every line
|
||||
break shows, and there's no Markdown. So each paragraph sits on one line, and
|
||||
headings read "Section N:".
|
||||
|
||||
## Publishing on AMO (untested, 2026-10-19)
|
||||
|
||||
1. In the Developer Hub, open the add-on's **Manage Authors & License** page.
|
||||
2. Set "What is your license's name?" to `Zavage Software Freeware License 1.0`.
|
||||
The listing's License link and each version's "Source code released under …"
|
||||
line show this name, not the text's first line.
|
||||
3. Paste `LICENSE.txt` unchanged, and leave the End-User License Agreement box
|
||||
unticked.
|
||||
4. Save. Saving edits the shared record, so 1.0, 1.2 and 1.3 all show the new
|
||||
text, and the next upload inherits it.
|
||||
5. Check every version:
|
||||
|
||||
```sh
|
||||
curl -s https://addons.mozilla.org/api/v5/addons/addon/search-with-chatgpt/versions/ \
|
||||
| jq '.results[] | {version, license: .license.name}'
|
||||
```
|
||||
|
||||
AMO turns the email address into a link to its own home page. It looks odd but
|
||||
does no harm.
|
||||
|
||||
## Outside the license
|
||||
|
||||
- **Register the copyright** with the US Copyright Office (Standard Application,
|
||||
US$65), and exclude AI-generated material that is more than trivial.
|
||||
Registration is needed to sue and to keep a takedown in place after a
|
||||
counter-notice. Statutory damages and fees also depend on registering within
|
||||
three months of first publication.
|
||||
- 1.2 and 1.3 reached AMO on 18 and 19 October 2026, so their window runs to
|
||||
about 18 January 2027.
|
||||
- The 1.1 code was pushed to the public Gitea in July and August 2026. If
|
||||
those pushes count as publication, its window closes around 29 October to
|
||||
1 November 2026. The old license's copy ban suggests they didn't, but that
|
||||
reading is low confidence.
|
||||
- So file by late October 2026 to be safe, and have an IP attorney confirm.
|
||||
- **Replace the Chrome repository's `LICENSE.txt`.** It still carries the old
|
||||
EULA and the public@zavage.net contact.
|
||||
- **Report clones** through Mozilla's infringement form or
|
||||
dmcanotice@mozilla.com. On AMO, Mozilla's own fork rule is a second route. Use
|
||||
the Chrome Web Store's and Microsoft's DMCA forms for those stores.
|
||||
- **Don't mirror the repository publicly on GitHub.** GitHub's terms let any
|
||||
GitHub user fork a public repository there.
|
||||
Generated
-1
@@ -7,7 +7,6 @@
|
||||
"": {
|
||||
"name": "search-with-chatgpt-powered-by-openai-extension",
|
||||
"version": "1.3.0",
|
||||
"license": "SEE LICENSE IN LICENSE.txt",
|
||||
"devDependencies": {
|
||||
"web-ext": "10.5.0"
|
||||
},
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"description": "Development tooling for the Search with ChatGPT Firefox extension.",
|
||||
"license": "SEE LICENSE IN LICENSE.txt",
|
||||
"engines": {
|
||||
"node": ">=22"
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user