Preview
Open Original
Whorl
A Thunderbird extension that enables @-mentioning contacts.
Features
- @-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 the…
Whorl
A Thunderbird extension that enables @-mentioning contacts.
Features
- @-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
Requirements
- Thunderbird 128 or later (Manifest V3)
- HTML compose mode (plain text mode not supported)
Installation
From XPI Package
- 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
From Source (Development)
- 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
Usage
- 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
Settings
Access settings by right-clicking the extension in Add-ons Manager and selecting "Options", or via Tools → Add-ons and Themes → Whorl → Options.
Available Settings
- 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)
Backspace Behavior
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
File Structure
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
Permissions
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
Building
Package the extension as an XPI file:
# Linux/macOS
./scripts/package.sh
# Windows
.\scripts\package.ps1
The XPI file will be created in the dist/ folder.
Releasing
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.0
The 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
License
MIT License
Contributing
Contributions are welcome! Please read the Contributing Guidelines before submitting pull requests.
Created by Den Delimarsky