# EdgeEver Web Clipper Chrome, Edge, and Firefox Manifest V3 extension for saving the current webpage or selected text to a user's self-hosted EdgeEver instance. ## Current MVP - Configure an EdgeEver instance URL and API Token. - Test the connection and select a default notebook. - Click the extension action to capture the selected content, or extract the article body with Mozilla Readability when there is no selection. - Convert the extracted article HTML into Markdown with Turndown before uploading it. - Create a searchable EdgeEver memo with the source URL and a `web-clip` tag. The extension does not use a central relay service. The page content is sent directly to the EdgeEver instance configured by the user. ## Localization The extension uses the cross-browser `chrome.i18n` compatibility namespace. English is the fallback locale, and Simplified Chinese is available for browsers whose UI language is Chinese. User-visible strings live in `public/_locales//messages.json`. Add or update every supported locale when changing interface copy. Chrome Web Store listing translations are maintained separately in the developer dashboard; ready-to-paste English and Simplified Chinese copy is available in `STORE_LISTING.md`. ## Development ### Chromium From the repository root: ```sh bun run build:extension ``` Then open `apps/extension/dist` from `chrome://extensions` or `edge://extensions` with Developer mode enabled and choose **Load unpacked**. ### Firefox Firefox uses the same application code with a Firefox-specific generated manifest: ```sh bun run build:extension:firefox bun run lint:extension:firefox ``` Open `about:debugging#/runtime/this-firefox`, choose **Load Temporary Add-on**, and select `apps/extension/dist-firefox/manifest.json`. To create the unsigned AMO submission archive after building and linting: ```sh bun run package:extension:firefox ``` The archive is written to `apps/extension/web-ext-artifacts`. Firefox requires AMO signing for normal installation. The manifest supports Firefox Desktop 140 or later and Firefox for Android 142 or later so Mozilla's built-in data-transmission consent UI is available. ## Firefox data disclosure The Firefox package declares the data types required by its user-triggered clipping function: - `authenticationInfo`: the API token sent directly to the user's EdgeEver instance. - `browsingActivity`: the URL of the page the user chooses to clip. - `websiteContent`: the selected text or extracted article content the user chooses to clip. No data is sent to an EdgeEver-operated relay, analytics service, or advertising service. The next planned step is preserving a single-file HTML archive in R2 while keeping extracted text in the memo for search.