Compare commits

..
Author SHA1 Message Date
golemandClaude Opus 5.5 54eaf95096 docs: drop the stale icon history from the privacy spec
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 11:05:45 -06:00
golemandClaude Opus 5.5 b59e46e7e6 docs: design a privacy policy for the extension
Record the approved design: a plain-English policy for the extension only,
describing the current version, published on AMO after the fix to #16.
Each claim is mapped to the code it rests on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 11:05:06 -06:00
7 changed files with 163 additions and 174 deletions
-7
View File
@@ -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
View File
@@ -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)
+2 -4
View File
@@ -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
@@ -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.
@@ -0,0 +1,108 @@
# Add a privacy policy
Status: design approved on 2026-10-21. The policy isn't written yet, and it
will be published after the release that fixes #16. Researched, but not legal
advice.
## Problem
- The AMO listing has no privacy policy. On 2026-10-21 the API reported
`has_privacy_policy: false`.
- The README has a short "Privacy Policy" section. The website's page for the
extension says only "Extension collects zero user information."
- The owner wants a policy that says the extension collects nothing and that
data will never be sold: "basically the most privacy respecting as possible".
## Goals
1. Say in plain English what happens to data, with every claim checkable
against the code.
2. Make clear that Zavage Software receives nothing and will never sell data.
3. Make clear that ChatGPT is a separate service under OpenAI's own privacy
policy.
## Decisions
- **Plain English, organised by where data goes.** A one-line "we collect
nothing" would hide the hand-off to ChatGPT. A formal GDPR-style template is
the legalese Mozilla advises against (Extension Workshop, "Create an appealing
listing").
- **The extension only.** One line says the policy doesn't cover the website or
email, although the options page links to the website and its contact form.
The policy ends with mat@zavage.net for questions. The owner chose this over
also covering messages or the whole website.
- **The current version only.** The policy describes the current version and
says so.
- **#16 is fixed first.** Up to 1.3, a chat started in a private window can open
in a normal window. The owner chose to fix that before publishing rather than
disclose it, so the policy doesn't mention it.
- **Promises.** Nothing is ever sold. Any future collection would be opt-in, and
the policy is updated before any version that changes how data is handled.
- **No "can't".** Nothing in the code sends data to Zavage Software, but that is
a fact about the current code. The policy says so and points to the public
source instead of claiming the extension is unable to send data.
- **No claim that Mozilla agreed.** #17 asks whether the manifest's "no data
collection" declaration covers the hand-off to ChatGPT, and it is still open.
The policy describes what happens and doesn't say Mozilla confirmed anything.
- **`PRIVACY.md` is the only copy.** It is pasted into AMO unchanged. The README
section shrinks to a summary and a link. AGENTS.md names `PRIVACY.md` as the
file every data-handling change must update.
- **Not packaged.** `web-ext-config.mjs` ignores `PRIVACY.md`, so AMO and the
repository hold it.
- **Its own pull request,** separate from the license change in #33.
- **Review.** Three readers: one checks each claim against the code, one checks
Mozilla's policies and privacy law, and one reads it cold for plain English.
## What each claim rests on
| Claim | Evidence |
| --- | --- |
| Zavage Software receives nothing | The code has no `fetch`, `XMLHttpRequest`, `sendBeacon`, `WebSocket` or `EventSource`, and the manifest has no `favicon_url`. |
| Settings stay in Firefox and sync only through Firefox Sync | `lib/settings.js:37-60` uses `storage.sync`, the only storage API in the code. |
| Three permissions, and no host access | `manifest.json:25`: `storage`, `menus` and `activeTab`. |
| The manifest declares no data collection | `manifest.json:18` |
| The selection is read only when the toolbar button or shortcut is used | `background/background.js:41-50`: `activeTab` and `tabs.executeScript`. |
| The right-click menu gets the selection, link or page address from Firefox at the click | `lib/actions.js:16-21` |
| ChatGPT receives the text in the address of the page the extension opens | `lib/build-url.js:11` and `:45-47`; `background/open-chat.js:1-9` |
| Temporary chat and web search are only hints in that address | `lib/build-url.js:32-37` |
| Dialogs hold pending text in memory only | `background/dialogs.js:1` and `:20` |
| The `gpt` search sends nothing until Enter | `manifest.json:58-61` has no `suggest_url`. |
| No remote code | Manifest V2's default content security policy runs only the extension's own scripts. |
| Links to other sites open only when clicked | `options/options.html` |
## AMO's privacy policy field
- Unlike the license field, it renders a restricted Markdown. The field is
`privacy_policy = PurifiedMarkdownField(...)` in addons-server's
`addons/models.py`, as Mozilla's blog post of 3 March 2025 describes.
- The allowed tags are `a`, `abbr`, `acronym`, `b`, `blockquote`, `code`, `em`,
`i`, `li`, `ol`, `strong` and `ul`. Headings are dropped, so section labels
are bold lines.
- Tags are stripped before the Markdown is rendered, so anything in angle
brackets disappears.
- Bare URLs become links through Mozilla's redirector. The email address may
link to AMO's home page, as it does in the license.
## Publishing on AMO (untested, 2026-10-21)
Publish after the release that fixes #16.
1. In the Developer Hub, open the add-on's **Manage Authors & License** page,
where the license is set too.
2. Tick "This add-on has a Privacy Policy" and paste `PRIVACY.md` unchanged.
3. Save, then check:
```sh
curl -s https://addons.mozilla.org/api/v5/addons/addon/search-with-chatgpt/ | jq .has_privacy_policy
curl -s https://addons.mozilla.org/api/v5/addons/addon/search-with-chatgpt/eula_policy/ | jq .privacy_policy
```
The policy then appears at
https://addons.mozilla.org/firefox/addon/search-with-chatgpt/privacy/.
## Outside the policy
- Point the website's "Extension collects zero user information" at the new
policy.
- #17 is still open.
- The Chrome repository has no privacy policy.
-1
View File
@@ -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"
},
-1
View File
@@ -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"
},