aminomancer / uc.css.js

A dark indigo CSS theme for Firefox and a large collection of privileged scripts to add new buttons, menus, and behaviors and eliminate nuisances. The theme is similar to other userChrome stylesheets, but it's intended for use with an autoconfig loader like fx-autoconfig, since it uses JavaScript to implement its more functional features.
Other
326 stars 27 forks source link

[BUG] No version of recentlyClosedTabsContextMenu.uc.js seems to load or do anything at all on FF116 Devedition #84

Closed mzso closed 9 months ago

mzso commented 11 months ago

Describe the bug I tried lotsnof versions going way back. Neither did anything. No recently closed items in the context menus of tabbar or Tree Style Tab. No errors on console whem clicking.

To Reproduce Steps to reproduce the behavior:

  1. Install any version on dev edition 116
  2. Open context menu on tabbar or TST

Expected behavior Show closed tabs items

Screenshots If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

Additional context Add any other context about the problem here.

aminomancer commented 11 months ago

Like the readme says, everything on this repo is designed for compatibility with the latest Firefox Nightly release. Any time scripts are updated for a new release, they will likely become incompatible with old releases. So, there is no guarantee of backwards compatibility. Either use an old version of the script, or use Firefox Nightly.

By the way, 116 is not the latest version of Developer Edition. Fx DE is on 118 now. So even if I supported other release channels, you'd be 2 versions behind.

If you insist on using DE 116, you could try 2.1.1 or 2.1.2.

aminomancer commented 11 months ago

Also, any time you change script files, you need to clear your startup cache when restarting. Otherwise Firefox will use the cached version. So if you installed the latest version and then overwrote it with a different version and restarted Firefox, it would still load the latest version, since it was cached. To get it to use the current file you need to clear the startup cache. Use the restart button from fx-autoconfig (Tools > userScripts > Restart), or delete your local app data's startupCache folder before starting Firefox.

mzso commented 11 months ago

@aminomancer commented on Sep 12, 2023, 8:33 PM GMT+2:

Like the readme says, everything on this repo is designed for compatibility with the latest Firefox Nightly release. Any time scripts are updated for a new release, they will likely become incompatible with old releases. So, there is no guarantee of backwards compatibility. Either use an old version of the script, or use Firefox Nightly.

By the way, 116 is not the latest version of Developer Edition. Fx DE is on 118 now. So even if I supported other release channels, you'd be 2 versions behind.

If you insist on using DE 116, you could try 2.1.1 or 2.1.2.

Originally posted by @aminomancer in https://github.com/aminomancer/uc.css.js/issues/84#issuecomment-1716228785

I tried those first. Nothing's happening. The script doesn't seem to function at all.

It's not about insistence, rather necessity. Just the fact that most customizations are broken by FF117+.

@aminomancer commented on Sep 12, 2023, 8:35 PM GMT+2:

Also, any time you change script files, you need to clear your startup cache when restarting. Otherwise Firefox will use the cached version. So if you installed the latest version and then overwrote it with a different version and restarted Firefox, it would still load the latest version, since it was cached. To get it to use the current file you need to clear the startup cache. Use the restart button from fx-autoconfig (Tools > userScripts > Restart), or delete your local app data's startupCache folder before starting Firefox.

I've been restarting via this code.

Services.appinfo.invalidateCachesOnRestart();

let cancelQuit = Cc["@mozilla.org/supports-PRBool;1"].createInstance(Ci.nsISupportsPRBool);
Services.obs.notifyObservers(cancelQuit, "quit-application-requested", "restart");

if(!cancelQuit.data) 
  Services.startup.quit(Services.startup.eAttemptQuit | Services.startup.eRestart);

Which should take care of it. But even using the clear caches button makes no difference. Unlike with the old undoListInTabContextMenu.uc.js, which still produces items in the tabbar context menu (even if one of them is broken) nothing seems to happen.

aminomancer commented 11 months ago

I use the script myself. I know it works in 119 because I'm using it right now.

Are there errors in the browser console?

By the way, new versions of Firefox are always prone to breaking random mods and scripts people have made for specific old versions of Firefox. That's not unique to 117, it's just impossible for mozilla to maintain backwards compatibility indefinitely. So if you're gonna be customizing Firefox you just have to get used to the need to update frequently. And don't use someone else's scripts if the author isn't regularly updating them, since it's almost inevitable they are going to break eventually (depending on what they're trying to do).

mzso commented 11 months ago

@aminomancer commented on Sep 13, 2023, 1:01 PM GMT+2:

I use the script myself. I know it works in 119 because I'm using it right now.

Are there errors in the browser console?

So I'm I right in thinking that it also worked on v116? Isn't it possible that it relies on something only available in central? I saw no signs of errors. Do you mean right after startup, or when I bring up the context menu? I have no ideas how to troubleshoot. The loader is the same as ever.

By the way, new versions of Firefox are always prone to breaking random mods and scripts people have made for specific old versions of Firefox. That's not unique to 117, it's just impossible for mozilla to maintain backwards compatibility indefinitely. So if you're gonna be customizing Firefox you just have to get used to the need to update frequently. And don't use someone else's scripts if the author isn't regularly updating them, since it's almost inevitable they are going to break eventually (depending on what they're trying to do).

Yes, but I liked this mod. :) And as far as I can sett, it's the only notable thing broken for me, after dealing with others.

aminomancer commented 11 months ago

No, this current version was updated for 118. The last version was updated for 117 and the one before that for 116. So one of them works with 116 but the later ones probably don't because they're looking for objects that don't exist before 118.

The readme also says these scripts are only designed to work with fx-autoconfig. Haven't I told you all this before? It requires fx-autoconfig's _ucUtils object. And it definitely should have errors in the console if you're trying to load it with xiaoxiaoflood's loader.

aminomancer commented 11 months ago

And if this is the only mod that is broken, then I don't see why you can't use Firefox 119. Wasn't your justification for remaining on an old version of Firefox that 117 broke too many mods? But now you're saying none of your mods are broken except this one. But this one is not broken, it just requires you to follow the instructions in the readme. So if you're following the instructions, you shouldn't have any problems at all — unless you're using other authors' scripts that haven't been updated for 118+

mzso commented 11 months ago

@aminomancer commented on Sep 14, 2023, 6:32 PM GMT+2:

No, this current version was updated for 118. The last version was updated for 117 and the one before that for 116. So one of them works with 116 but the later ones probably don't because they're looking for objects that don't exist before 118.

The readme also says these scripts are only designed to work with fx-autoconfig. Haven't I told you all this before? It requires fx-autoconfig's _ucUtils object. And it definitely should have errors in the console if you're trying to load it with xiaoxiaoflood's loader.

Originally posted by @aminomancer in https://github.com/aminomancer/uc.css.js/issues/84#issuecomment-1719779851

I guess not. I've always been using xiaoxiaoflood's. Including undoListInTabContextMenu.uc.js. Well, I don't seem to be getting errors with recentlyClosedTabsContextMenu.uc.js. I get some with undoListInTabContextMenu.uc.js:

Uncaught TypeError: this.ss.getClosedTabCount is not a function

Uncaught TypeError: undoListInTabmenu.ss.getClosedTabCount is not a function

So I guess using fx-autoconfig prevents me from using the addons and scripts from xiaoxiaoflood's repo? There doesn't seem to be mentions of addons in the fx-autoconfig readme for starters. Not sure how I would merge the usage of both, if it's at all possible.

@aminomancer commented on Sep 14, 2023, 6:35 PM GMT+2:

And if this is the only mod that is broken, then I don't see why you can't use Firefox 119. Wasn't your justification for remaining on an old version of Firefox that 117 broke too many mods? But now you're saying none of your mods are broken except this one. But this one is not broken, it just requires you to follow the instructions in the readme. So if you're following the instructions, you shouldn't have any problems at all — unless you're using other authors' scripts that haven't been updated for 118+

This is the only thing that's broken (or not functioning as it stands) on FF116. 117 seems to break everything, starting with the loader.

aminomancer commented 11 months ago

Yeah you would just need to choose one loader or the other. fx-autoconfig is updated regularly and provides a lot of utilities, that's why I use it. I don't have any use for addons, Firefox already supports addons and fx-autoconfig lets me do whatever else I need to do.

You can always edit the scripts yourself to make them work in some other loader. I don't have time to maintain multiple loaders myself. This is just a hobby for me, I use fx-autoconfig in my normal Firefox use, so I know when things break and I'm able to update them. I'm not able to subscribe to other loaders for updates and continuously test whether my scripts still work with them.

This is what I was getting at before, if you're gonna mod Firefox as a hobby you should either 1) pick a framework, stick with it, use it as intended, and only use mods that are updated regularly; or 2) learn how to work with the mods yourself. Having your stuff randomly break and not knowing how to fix it yourself is just gonna be a constant source of frustration.

mzso commented 11 months ago

@aminomancer Well, I have a couple XUL addons: Keyconfig, Custom Buttons, DTA, Backtrack Tab history, Advanced locationbar. So I guess sticking with the loader is the lesser loss for me.

Anyway, maybe you can tell me if there's a simple command to open the recently closed tabs menu popup? (via keyconfig for example)

aminomancer commented 11 months ago

What recently closed tabs menu are you referring to?

mzso commented 11 months ago

Whatever pops up when you hover on the "recently closed tabs" (#historyUndoMenu) item.

aminomancer commented 11 months ago
function openHistoryUndoPopup() {
  let historyUndoPopup = document.getElementById("historyUndoPopup");
  let popups = [historyUndoPopup];
  do {
    let closestPopup = popups[0]?.parentElement?.closest("menupopup");
    if (closestPopup) {
      popups.unshift(closestPopup);
    } else {
      break;
    }
  } while (true);
  for (let popup of popups) {
    popup.openPopup();
  }
}

Not sure what keyconfig is, but I guess you mean a hotkey? You can write a script to add a hotkey. This is what I use for that kind of thing. Maybe your loader has something similar, but if not you can just adapt most of that code into your own script. Then just add that function above to the key element as a command event callback. And when you press the key combination you set on the key element, it will invoke the callback.

mzso commented 11 months ago

@aminomancer Thanks. It works. I only needed to add a function call. I actually meant Dorando Keyconfig, but an updated version of course.

aminomancer commented 11 months ago

I see. That's pretty neat.

mzso commented 11 months ago

@aminomancer commented on Sep 18, 2023, 1:57 PM GMT+2:

I see. That's pretty neat.

Originally posted by @aminomancer in https://github.com/aminomancer/uc.css.js/issues/84#issuecomment-1723263109

Yeah, these are pretty useful. That's why I keep using them as long as possible.

@aminomancer commented on Sep 15, 2023, 8:38 PM GMT+2:

function openHistoryUndoPopup() {
  let historyUndoPopup = document.getElementById("historyUndoPopup");
  let popups = [historyUndoPopup];
  do {
    let closestPopup = popups[0]?.parentElement?.closest("menupopup");
    if (closestPopup) {
      popups.unshift(closestPopup);
    } else {
      break;
    }
  } while (true);
  for (let popup of popups) {
    popup.openPopup();
  }
}

So I guess it's only possible to open it like this, going through the history menu? It's a little awkward when I have the mouse pointer somewhere on the left and end up closing it immediately.

aminomancer commented 11 months ago

Not unless you want to reconstruct your own menu

LionWrathz commented 10 months ago

83 could you check private tabs script in context menu, it stopped working in FF119

aminomancer commented 10 months ago

which script do you mean? and what's it have to do with #83?