-
Notifications
You must be signed in to change notification settings - Fork 59
Description
Quicktext Migration
Thunderbird's move from a legacy XUL/XPCOM extension platform to modern WebExtension APIs requires Quicktext to be fundamentally rebuilt. The new architecture no longer has direct access to the Thunderbird UI or the local file system, which affects how templates are stored, how scripts work, and how certain variable tags operate.
This migration is split into multiple milestones. We have reached the 3rd migration milestone.
[π οΈ] Milestone 4 - Removing the Last XPCOM Dependency
The FileSystemAccess Experiment API β which currently provides file picker, file read, and file write functionality β will be removed. This eliminates the last remaining XPCOM/Experiment dependency and allows Quicktext to run on Thunderbird Release without requiring regular compatibility updates.
Static file includes (FILE, ATTACHMENT=FILE, IMAGE=FILE) will be replaced by a virtual file system stored inside the WebExtension storage. Dynamic or externally managed content should use URL-based includes instead, either from a remote server or a local web server exposing parts of the local file system.
Follow the current discussion!
[β ] Milestone 3 - Settings Manager Rework
The old XUL-based settings dialog has been replaced with an HTML/CSS settings manager. The Quicktext compose toolbar, which cannot be reproduced via WebExtension APIs, has been moved into a separate Quicktext Legacy Companion Add-on (currently available as an asset in the Releases section).
Direct file system access is still provided by a FileSystemAccess Experiment API - the last remaining XPCOM dependency, to be removed in Milestone 4. Static file includes will be made possible via a virtual file system. Users relying on includes of non-static local files are encouraged to explore migrating to a URL-based include now.
For full details, see issue #591.
[β ] Milestone 2 - Script API Migration
Scripts can no longer access the Thunderbird compose window DOM directly. The scripting API has been updated to use WebExtension-compatible interfaces:
this.mVariablesβthis.quicktext.variablesthis.mQuicktext.get_<tag>(...)βawait this.quicktext.getTag("<tag>", ...)this.mWindowhas been removed; compose access is now viathis.compose.*,this.messages.*, andthis.identities.*
External scripts can be packaged as standalone extensions and invoked via the ESCRIPT or CSCRIPT tags.
For full details, see issue #451.
[β ] Milestone 1 - Template and Storage Migration
Templates and scripts move from XML files on the local file system into add-on storage (WebExtension storage.local). The export format changes from XML to JSON, though XML imports remain supported for backwards compatibility.
Important: Add-on storage is tied to the extension installation. Exporting templates before uninstalling Quicktext is essential to avoid data loss.
For full details, see issue #439.