- @-mention autocomplete: Type
@in the compose window to trigger a dropdown with matching contacts - Multiple contact sources: Searches address books, current recipients, and custom contacts
- Custom contacts: Add your own contacts that appear alongside address book results
- Blocklist: Exclude specific contacts from appearing in suggestions
- Configurable trigger: Change the trigger character from
@to any character - Auto-add to recipients: Mentioned contacts are automatically added to the To field
- Smart recipient handling: If a contact is in CC/BCC, they're moved to To when mentioned
- Theme-aware: Dropdown and settings automatically adapt to light and dark themes
- Keyboard navigation: Use arrow keys to navigate, Enter/Tab to select, Escape to close
- Thunderbird 128 or later (Manifest V3)
- HTML compose mode (plain text mode not supported)
- Download the latest
.xpifile from Releases - In Thunderbird, go to
ToolsβAdd-ons and Themes - Click the gear icon β
Install Add-on From File - Select the downloaded
.xpifile
- Clone or download this repository
- Open Thunderbird
- Go to
ToolsβAdd-ons and Themes - Click the gear icon β
Debug Add-ons - Click
Load Temporary Add-on - Select
src/manifest.jsonfrom this repository
- Open a new compose window or reply to an email
- In the email body, type
@followed by a name or email - A dropdown will appear with matching contacts
- Use arrow keys or mouse to select a contact
- Press Enter/Tab or click to insert the mention
- The contact will be added to the To field if not already a recipient
Access settings by right-clicking the extension in Add-ons Manager and selecting "Options", or via Tools β Add-ons and Themes β Whorl β Options.
- Trigger character: The character that activates the dropdown (default:
@) - Maximum results: Number of contacts shown in dropdown (default: 10)
- Auto-add to recipients: Automatically add mentioned contacts to the To field
- Contact sources: Toggle searching address books, current recipients, and custom contacts
- Custom contacts: Add name/email pairs that appear in suggestions
- Blocklist: Patterns to exclude from suggestions (matches name or email)
When your cursor is immediately after a mention:
- First backspace: Removes the last word (e.g., "@John Smith" β "@John")
- Second backspace: Removes the entire mention
whorl/
βββ src/ # Extension source code
β βββ manifest.json # Extension manifest (Manifest V3)
β βββ background.js # Contact API & recipient management
β βββ compose-script.js # Autocomplete & mention logic
β βββ compose-styles.css # Dropdown & mention styling
β βββ options.html # Settings page
β βββ options.js # Settings page logic
β βββ options.css # Settings page styling
β βββ icon-48.png # Extension icon (48x48)
β βββ icon-96.png # Extension icon (96x96)
βββ scripts/
β βββ package.sh # Linux/macOS packaging script
β βββ package.ps1 # Windows packaging script
β βββ release.sh # Linux/macOS release script
β βββ release.ps1 # Windows release script
βββ dist/ # Built XPI files (generated)
βββ README.md
βββ CONTRIBUTING.md
βββ CLAUDE.md # Development guidelines
This extension requires the following permissions:
compose: Access to compose window details and recipient managementaddressBooks: Access to search contacts in address booksscripting: Ability to inject scripts into compose windowsstorage: Persist extension settings
Package the extension as an XPI file:
# Linux/macOS
./scripts/package.sh
# Windows
.\scripts\package.ps1The XPI file will be created in the dist/ folder.
Releases are automated via GitHub Actions. Use the release script to create a new release:
# Linux/macOS
./scripts/release.sh 1.0.0
# Windows
.\scripts\release.ps1 1.0.0The script will:
- Validate the version format
- Update
src/manifest.jsonwith the new version - Commit the change
- Create and push the tag
- Trigger GitHub Actions to build and publish the release
MIT License
Contributions are welcome! Please read the Contributing Guidelines before submitting pull requests.
Created by Den Delimarsky