Companion extension — pilot install guide (WING-275)¶
Plain-language version: ../plain/extension-install-pilot.md
Audience: the pilot cohort installing the WorkWingman Companion browser extension from a zip artifact, before any store listing exists. Installs are unpacked / developer-mode (Chromium family) or temporary add-on (Firefox).
Artifacts¶
Each pilot drop ships two zips (built by extension/scripts/package.mjs, or the Extension
GitHub Actions workflow):
| Artifact | Browsers |
|---|---|
workwingman-companion-<version>-chromium.zip |
Chrome, Edge, Brave, Opera |
workwingman-companion-<version>-firefox.zip |
Firefox 115+ (MV3 event page, gecko id companion@workwingman.app) |
Each zip has a sibling .sha256 file. Zips are deterministic (sorted entries, fixed timestamps,
STORE), so the same source always hashes the same. Verify before installing:
Get-FileHash .\workwingman-companion-<version>-chromium.zip -Algorithm SHA256
# compare with the .sha256 file contents
Prepare¶
- Download the zip for your browser from the pilot channel (do not use zips from anywhere else).
- Verify the SHA-256 hash (above).
- Unzip to a folder you will keep — e.g.
C:\WorkWingman\companion\or~/WorkWingman/companion/. Unpacked installs load from this folder every browser start; deleting it breaks the extension.
Chrome¶
- Go to
chrome://extensions. - Toggle Developer mode on (top right).
- Click Load unpacked and select the unzipped folder (the one containing
manifest.json). - Confirm "WorkWingman Companion" appears with version
<version>.
Screenshot still needed:
chrome://extensionswith Developer mode and Load unpacked highlighted.
Edge¶
- Go to
edge://extensions. - Toggle Developer mode on (left sidebar).
- Click Load unpacked, select the unzipped folder.
Screenshot still needed:
edge://extensionswith Developer mode and Load unpacked highlighted.
Brave¶
- Go to
brave://extensions. - Toggle Developer mode on (top right).
- Click Load unpacked, select the unzipped folder.
Screenshot still needed:
brave://extensionswith Developer mode and Load unpacked highlighted.
Opera¶
- Go to
opera://extensions. - Toggle Developer mode on (top right).
- Click Load unpacked, select the unzipped folder.
Screenshot still needed:
opera://extensionswith Developer mode and Load unpacked highlighted.
Firefox (temporary add-on)¶
Firefox does not have a persistent "load unpacked" for regular profiles; unsigned pilot builds load as a temporary add-on, which is removed when Firefox closes and must be reloaded each session.
- Go to
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on….
- Select the zip file itself (or the
manifest.jsoninside the unzipped folder).
Screenshot still needed:
about:debuggingwith Load Temporary Add-on highlighted.
Persistent Firefox installs need a signed .xpi (AMO unlisted signing) — out of scope for the
pilot; track separately.
After install — pair with your cloud tenant¶
- Click the extension's toolbar icon (pin it if hidden).
- In the popup, paste your WorkWingman cloud origin and pairing token from the pilot email.
- Only known WorkWingman origins are accepted (
cloud.workwingman.ai,app.workwingman.ai;localhostfor dev) — this allowlist is compiled in at build time (extension/src/lib/origins.ts) and enforced again by manifest assertions in the build and packaging scripts. Anything else is rejected with an explanatory message.
Permissions you will be asked for¶
storage— the only standing permission.- Host access to the three saved-jobs pages:
www.linkedin.com,myjobs.indeed.com,www.usajobs.gov. - Optional host access to the cloud origins above, requested when you pair.
The build fails if any of these sets drift, so what you approve is what ships.
Updating / uninstalling¶
- Update: unzip the new version over the same folder, then click the reload icon on the extension card (Chromium) or re-load the temporary add-on (Firefox).
- Uninstall: remove the extension from the extensions page; then delete the folder.
Troubleshooting¶
- "Manifest file is missing or unreadable" — you selected the parent folder; pick the folder that
directly contains
manifest.json. - Extension disappeared after browser restart (Firefox) — expected for temporary add-ons; reload it.
- Pairing rejected — check the origin against the allowlist above; typos and non-WorkWingman origins are rejected by design.