Skip to content

Quicktext v6: Migration progress towards a pure WebExtensionΒ #590

@jobisoft

Description

@jobisoft

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.variables
  • this.mQuicktext.get_<tag>(...) β†’ await this.quicktext.getTag("<tag>", ...)
  • this.mWindow has been removed; compose access is now via this.compose.*, this.messages.*, and this.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.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions