Du hast da einen MixMax gemacht. Dein manifest sagt ab 78, deine background.js registriert aber deine JS files für 68er XUL files.
Phase 1 und Phase 2 des updates (Wechsel auf WindowListener) werden in 68 gemacht. Erst wenn in 68 alles klappt, dann kommt der Wechsel auf 78 und da musst du alle xul files in xhtml files umbenennen (auch die core files, auf die der WL reagieren soll).
In Phase 3 musst du dann deinen eigentlichen code evtl noch an Änderungen von 68->78 anpassen. Ich wollte aber nicht das du beide Baustellen gleichzeitig hast (WL setup UND 68->78 changes). Deswegen sagt der guide gaz klar: Erst im letzten Schritt wechseln wir auf 78.
Wenn ich dein add-on anpasse und in 68 lade, kann ich console.log() Einträge im onload sehen. Ich weiß aber nicht wie das add-on sonst funktioniert und konnte es nicht weiter testen
in qc_globals.js musst du die top level const los werden, weil die beim neu laden (z.B. Updates, oder remove und neu installieren ohne TB neu zu starten) nicht überschrieben werden können und Fehler werfen und weil du kein try catch um den entsprechenden scriptload hast dein ganzen load script stirbt. Ich würde da ein var QCGlobals = {} empfehlen und die dinger da drin definieren.