Custom Buttons Enhanced 0.0.6

Dedicated board for extension releases/support threads

Moderators: FranklinDM, Lootyhoof

Forum rules
Please do not create new topics here unless you are an extension author in need of a dedicated releases&support thread!
User avatar
tellu-white
Lunatic
Lunatic
Posts: 293
Joined: 2022-03-08, 22:02

Custom Buttons Enhanced 0.0.6

Post by tellu-white » 2025-08-03, 21:16

jars_ wrote:
small upd in defense of CustomButtons ...
https://forum.palemoon.org/viewtopic.php?f=3&t=32588#p264400

I use Custom Buttons too. I like this add-on but I had a frustration with it: in "tooltipText" I couldn't add "line-breaks" to help me remember the button options.

To solve this problem, I added the following lines to the add-on code:

Code: Select all

setTimeout (function () {
	try{
		var button_name = oBtn.name;
		button_name = button_name.replace(/\\n/g, "\n");
		oBtn.tooltipText = button_name;
	} catch(err){
		// alert(err.message);
	}
}, 100);
Since I've modified the add-on, I've inserted three more files in the XPI archive:

1. jquery.js ( jQuery Core 3.7.1 )
2. test_load_jquery.js
3. empty_HTML_page.html

The files 1 and 3 are useful in certain circumstances, and the file 2 I added just to test the "mozIJSSubScriptLoader.loadSubScript" function.

This is what a button looks like when I use "line-breaks" to display the button options:
01.png
Before modifying the add-on, "\n" inside the button's "Name" box did not produce a "line-break":
02.png
Screenshots showing the changes made to the add-on:
03.png
04.png
05.png
06.png
After modifying the add-on, "\n" in the "Name" box of the button generated a "line break":
07.png
Testing the functionality of the "jquery.js" file added to the add-on:
08.png
09.png
***

Anyone who wants to test the enhanced version of the Custom Buttons add-on ( Custom Buttons Enhanced 0.0.6 ) can download it here:

https://www.mediafire.com/file/xkjjewlp4h0hrnw/Custom_Buttons_Enhanced_0_0_6.zip/file
You do not have the required permissions to view the files attached to this post.

User avatar
jars_
Lunatic
Lunatic
Posts: 428
Joined: 2016-12-27, 00:12

Re: Custom Buttons Enhanced 0.0.6

Post by jars_ » 2025-08-03, 22:51

... add "line-breaks" to help me remember the button options.
We must write an extended tooltips ourselves:

Code: Select all

/* init */
// Sort Tabs by Domain or Name

  this.setAttribute("context", false);
  this.onclick = clickFunc;


this.tooltipText = "¤ LMB - Sort Tabs by Domain and domain by tab name\n\
¤ MMB - Stop All tabs \(mod edit btn\)\n\
¤ RMB - Sort Tabs by Name (mod menu btn\)\n" + this.id;

    
   function clickFunc(e) {
       const mod = ( e.ctrlKey || e.altKey || e.shiftKey ) ? true : false;
     switch(e.button) {
        case 0: sortTabs4(false); break;
        case 1: mod ? custombuttons.editButton(this) : allStop3(); break;
        case 2: mod ? gShowPopup(this) : sortTabs4(true); break;
        }
    }


 // --- Сортирует по домену, без учета www и верхних приставок, а домен по имени  ---
 function sortTabs4(mod) {
    let tabs = [...gBrowser.visibleTabs].filter(tab => !tab.pinned), num = gBrowser._numPinnedTabs;
         tabs.sort( (a, b) => {
                   const domA = getDomain(a.linkedBrowser.currentURI.spec), domB = getDomain(b.linkedBrowser.currentURI.spec),
                         namA = cleanText(a.label), namB = cleanText(b.label);
                    return mod ? namA.localeCompare(namB) : domA.localeCompare(domB) ? domA.localeCompare(domB) : namA.localeCompare(namB);
                   });
    tabs.forEach( tab => gBrowser.moveTabTo(tab, num++) );
    animate( document.getElementById('TabsToolbar'), "brightness(140%)" );
   };


  const getDomain = url => url.startsWith("http") ? Services.eTLD.getBaseDomain(Services.io.newURI(url, null, null)) : url;

// -------------- Очистить текст от спецсимволов --------------------
 function cleanText(text) {
     const badSymbols = new RegExp(/[\!\@\#\$\%\^\+\=\:\;\.\,\`\"\'\?\)\(\]\[\|\*\\\/\/\<\>\»]+/ig),
                title = text.replace(badSymbols, '').replace(/\s+/g, ' ');
     return title.substring(0,70).trim();
   }


 function allStop3() {
     const visTabs = gBrowser.visibleTabs;
       visTabs.forEach( tab => {
           const browser = gBrowser.getBrowserForTab(tab);
               browser.stop();
               browser.webNavigation.stop(2);
          animate( document.getElementById('TabsToolbar'), "hue-rotate(270deg)" );
          })
   }


 function animate(el, fltr) {
   el.style.MozTransition="0.6s filter ease-out";
     setTimeout(()=> {el.style.filter = fltr ? fltr : "sepia(1)" }, 100);   // hue-rotate(270deg) sepia(100%) saturate(200%) sepia(100%) invert
     setTimeout(()=> {el.style.filter = "none" }, 1000);
     setTimeout(()=> {el.style.MozTransition = "none" }, 1500);
   }

If you want an updated tooltip on each mousehover, then like this:

Code: Select all

/* init */
// Darken page 2 (pseudo brightness)

  this.setAttribute("context", false);
  this.onclick = clickFunc;
  
  this.onmouseover = showTT;

  function showTT() {
    this.tooltipText = this.name + "\n\
       MMB - Edit button\n\
       RMB - Reset darknes 0\n\
        ¤ Wheel - darken page\n\
       now: " + getDarkLevel() + "%\n\
       id: " + this.id;
    };

// ------- Яркость страницы своими средствами, без ScreenDimmer -------------

 const appcontent = document.getElementById("appcontent"),
          browser = document.getElementById("browser"),
          darkLvl = "custombutton.darken.darkLevel",
       getOpacity = num => num ? (100 - num) / 100 : 1,
     getDarkLevel = ()=> Services.prefs.getIntPref(darkLvl) ?? 0;
  
  function clickFunc(e) {
 	const mod = ( e.ctrlKey || e.altKey || e.shiftKey ) ? true : false;
    switch (e.button) {
      case 1: custombuttons.editButton(this); break;
      case 2: mod ? gShowPopup(this) : (appcontent.style.opacity = "1", Services.prefs.setIntPref(darkLvl, 0)); break;
      }
   };

  this.onwheel =e=> darken_brigter(e.deltaY);

  function darken_brigter(delta) {
      let darkLevel = getDarkLevel();            //console.log("deltaY: " + delta + "\ndarkLevel: " + darkLevel + "\ngetOpacity: " + getOpacity());
        if (delta>0 && darkLevel < 100) darkLevel += delta-1; else if(delta<0 && darkLevel > 0) darkLevel += delta-1; else return;
       appcontent.style.opacity = getOpacity(darkLevel);
       Services.prefs.setIntPref(darkLvl, darkLevel);
       };

  browser.style.backgroundColor = "#000";
  appcontent.style.opacity = getOpacity(getDarkLevel());

"Don't shoot the pianist, he is doing his best" :)

Michaell
Lunatic
Lunatic
Posts: 397
Joined: 2018-05-26, 18:13

Re: Custom Buttons Enhanced 0.0.6

Post by Michaell » 2025-08-03, 22:59

I used Custom Buttons for years but gave up on it several years ago. It got confusing even then about which was the best for Pale Moon. Multiple versions by different maintainers. And the older the original got the more problems came up. Also, hardly anyone made updated buttons so many of the buttons I used no longer worked. I'm a little hesitant about you (tellu-white) patching old code without reworking the outdated parts. I'll try it and see if any of the old buttons work [no, site won't allow download without javascript]. But without an active community of button developers it probably isn't going to get many users because most of us aren't able to create our own buttons.
Win10home(1709), PM34.0.1-portable as of Jan. 22, 2026

User avatar
tellu-white
Lunatic
Lunatic
Posts: 293
Joined: 2022-03-08, 22:02

Re: Custom Buttons Enhanced 0.0.6

Post by tellu-white » 2025-08-04, 12:23

jars_ wrote:
2025-08-03, 22:51
We must write an extended tooltips ourselves
In your comment here:

https://forum.palemoon.org/viewtopic.php?f=3&t=32588#p264400

you objected that I use too much code for something that "we need something like this (8 lines)"

Now you propose a solution where you have to add a bunch of lines of code to each newly created button to get a "tooltipText" with "line-breaks", instead of my solution, which requires no additional lines of code! A little consistency in approaching solutions would not hurt ;)
Michaell wrote:
2025-08-03, 22:59
Also, hardly anyone made updated buttons so many of the buttons I used no longer worked. I'm a little hesitant about you (tellu-white) patching old code without reworking the outdated parts. I'll try it and see if any of the old buttons work [no, site won't allow download without javascript]. But without an active community of button developers it probably isn't going to get many users because most of us aren't able to create our own buttons.
I currently have 47 add-ons and 64 Custom Buttons installed in Pale Moon. Out of the 64 Custom Buttons (which work fine, all of them), only 6 buttons are not created by me, so I don't know what to answer to your objections.

User avatar
sidology
Fanatic
Fanatic
Posts: 118
Joined: 2021-12-04, 22:07

Re: Custom Buttons Enhanced 0.0.6

Post by sidology » 2026-01-20, 14:39

Pale Moon 34.0.0 won't start if Custom Buttons extension is enabled.

Can anyone confirm?

User avatar
jars_
Lunatic
Lunatic
Posts: 428
Joined: 2016-12-27, 00:12

Re: Custom Buttons Enhanced 0.0.6

Post by jars_ » 2026-01-20, 15:59

Yes, I confirm.
It’s not even the extension itself that is the cause, but the buttons. Delete buttonsoverlay.xul it will starts.
But installing a couple of buttons, it freezes and then won’t start.

User avatar
Moonchild
Project founder
Project founder
Posts: 38821
Joined: 2011-08-28, 17:27
Location: Sweden

Re: Custom Buttons Enhanced 0.0.6

Post by Moonchild » 2026-01-20, 16:17

Considering the severity of impact, I've added the extension to the blocklist (max version 0.0.6) for Pale Moon 34 as a hard block.
Once this has been fixed, any higher version of the extension should be normally allowed.
"There is no point in arguing with an idiot, because then you're both idiots." - Anonymous
"Seek wisdom, not knowledge. Knowledge is of the past; wisdom is of the future." -- Native American proverb
"Linux makes everything difficult." -- Lyceus Anubite

User avatar
tellu-white
Lunatic
Lunatic
Posts: 293
Joined: 2022-03-08, 22:02

Re: Custom Buttons Enhanced 0.0.6

Post by tellu-white » 2026-01-20, 17:13

sidology wrote:
Pale Moon 34.0.0 won't start if Custom Buttons extension is enabled.
Can anyone confirm?
Unfortunately, Custom Buttons no longer works. I tested the original version (the one I modified) "Custom Buttons 0.0.5.8.9.6" and it doesn't work either - so it's not my modifications that caused the problem. I tested it in "Pale Moon 34.0.0 32-Bit Portable", freshly installed. I created two Custom Buttons without any problems and without any errors in the Error Console. In the first button, I only entered code in the "CODE" tab. The problem arose when I tried to enter code in the "Initialization Code" tab of the second button (which I also created without any problems). After clicking OK, everything froze, and even the title bar of the Error Console displayed the message "Error Console (Not Responding)," but it did not display any errors in the main box.

Screenshots:
01.png
02.png
03.png
04.png
05.png

*****

Moonchild wrote:
2026-01-20, 16:17
Considering the severity of impact, I've added the extension to the blocklist (max version 0.0.6) for Pale Moon 34 as a hard block.
Once this has been fixed, any higher version of the extension should be normally allowed.

I can't figure out which of the changes made in Pale Moon 34.0.0 broke the Custom Buttons add-on. No error appears in the Error Console, and Pale Moon crashes, so I don't get any useful information.

For me, this is a big problem because out of the 123 add-ons I use, 63 are Custom Buttons. This is a strong enough reason for me to stop updating Pale Moon until I find an acceptable solution.
06.png
You do not have the required permissions to view the files attached to this post.

Enobarbous
Fanatic
Fanatic
Posts: 104
Joined: 2022-12-06, 17:44

Re: Custom Buttons Enhanced 0.0.6

Post by Enobarbous » 2026-01-20, 17:53

tellu-white wrote:
2026-01-20, 17:13
I can't figure out which of the changes made in Pale Moon 34.0.0 broke the Custom Buttons add-on. No error appears in the Error Console, and Pale Moon crashes, so I don't get any useful information.

Newmoon users have reported issues with certain websites after #2895. Perhaps the problems in CB are also related?
And there's also #2889... No other ideas.

@all
Can anyone who has the opportunity compile test builds without these PR?

Upd.
Results of some tests:
- Freezing occurs on both x32 and x64 versions of PM
- Freezing doesn't depend much on the custom button version (tested versions 0.0.6-enhanced, 0.0.5.8.9.6, 0.0.5.8.9-fixed5, 0.0.7.0.0.17)
- Freezing doesn't occur with any button, but specifically with the "Attributes Inspector" button (maybe with others, I've only tested about 20). Button code in attachment (too big for the forum)
- see post https://forum.palemoon.org/viewtopic.ph ... 03#p269403
Last edited by Enobarbous on 2026-01-20, 19:48, edited 2 times in total.
I am sorry for the use of auto-translator to post

User avatar
UCyborg
Astronaut
Astronaut
Posts: 711
Joined: 2019-01-10, 09:37
Location: Slovenia

Re: Custom Buttons Enhanced 0.0.6

Post by UCyborg » 2026-01-20, 18:42

Still have the old version of extension, only have about 6 buttons active, which still work, but visiting the page with list of buttons on about:addons makes the browser go in infinite CPU spinning loop. I use 64-bit SSE2 build of the browser.

Troubleshooting info in case it matters:

Code: Select all

Application Basics
------------------

Name: Pale Moon
Version: 34.0.0 (64-bit)
Build ID: 20260120143649
Update Channel: release
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:6.8) Goanna/20260120 PaleMoon/34.0.0
OS: Windows_NT 10.0
CPU Capabilities: SSE2
Safe Mode: false

Extensions
----------

Name: AutoCopy 2
Version: 1.2.91
Enabled: true
ID: autocopy2@teo.pl

Name: BIZARRE
Version: 33.0
Enabled: true
ID: {2CBD61D2-B553-57C0-B615-9244208C419E}

Name: CacheViewer2
Version: 1.7.2.1-signed.1-signed
Enabled: true
ID: cacheview2@scriptkitz.ml

Name: Classic Add-ons Archive
Version: 2.0.3
Enabled: true
ID: ca-archive@Off.JustOff

Name: ColorfulTabs
Version: 31.2.4
Enabled: true
ID: {0545b830-f0aa-4d7e-8820-50a4629a56fe}

Name: Comtrade DigSigSDK
Version: 2.0.98.0
Enabled: true
ID: {12B5FEAA-16C9-4DE9-98A0-83D6FE5B1316}

Name: Cookie Masters
Version: 3.2.0
Enabled: true
ID: {a04a71f3-ce74-4134-8f86-fae693b19e44}

Name: Copy Plain Text 2
Version: 1.6
Enabled: true
ID: copyplaintext@teo.pl

Name: Custom Buttons
Version: 0.0.5.8.9.6
Enabled: true
ID: custombuttons-signed@infocatcher

Name: CuteButtons
Version: 0.5.8.1
Enabled: true
ID: CuteButtonsCrystalSVG@ChoGGi

Name: Downloads Window
Version: 0.6.8
Enabled: true
ID: {a7213cf2-fa1e-4373-88ff-255d0abd3020}

Name: DownThemAll!
Version: 3.0.9.3
Enabled: true
ID: {DDC359D1-844A-42a7-9AA1-88A850A938A8}

Name: GeoFlag
Version: 31.0
Enabled: true
ID: {76843B06-C8C5-5088-90C5-679EA2F00123}

Name: GlassMyFox
Version: 1.4.1
Enabled: true
ID: GlassMyFox@ArisT2_Noia4dev

Name: Greasemonkey for Pale Moon
Version: 3.31.5
Enabled: true
ID: greasemonkeyforpm@janekptacijarabaci

Name: h264ify
Version: 1.0.5
Enabled: true
ID: jid1-TSgSxBhncsPBWQ@jetpack

Name: Lull The Tabs
Version: 1.5.2
Enabled: true
ID: lull-the-tabs@Off.JustOff

Name: Navigational Sounds
Version: 1.4.1
Enabled: true
ID: {d84a846d-f7cb-4187-a408-b171020e8940}

Name: Norwell History Tools
Version: 3.1.0.3
Enabled: true
ID: norvel@history

Name: Pale Moon Commander
Version: 3.0.2
Enabled: true
ID: commander@palemoon.org

Name: Pale Moon Locale Switcher
Version: 3.1
Enabled: true
ID: pm-localeswitch@palemoon.org

Name: PassIMoon
Version: 1.3.0
Enabled: true
ID: passimoon@teknixstuff.com

Name: PermissionsPlus
Version: 2.5.1
Enabled: true
ID: {c3303c6e-5424-41a3-8e65-255687a94434}

Name: PMPlayer
Version: 1.7.1
Enabled: true
ID: {d952f8dd-f45c-4838-8e21-03c1f916883b}

Name: Private Tab
Version: 0.2.3pre
Enabled: true
ID: privateTab@infocatcher

Name: Reddit Enhancement Suite
Version: 5.4.3
Enabled: true
ID: jid1-xUfzOsOFlzSOXg@jetpack

Name: Stylem
Version: 2.2.8
Enabled: true
ID: {503a85e3-84c9-40e5-b98e-98e62085837f}

Name: Tab Counter
Version: 1.4
Enabled: true
ID: tabcounter-pm@chania.gr

Name: Tab Groups
Version: 0.4
Enabled: true
ID: firefox-tabgroups@mozilla.com

Name: Tab Mix Plus
Version: 0.5.8.4
Enabled: true
ID: {dc572301-7619-498c-a57d-39143191b318}

Name: uBlock Origin
Version: 1.16.6.1
Enabled: true
ID: uBlock0@raymondhill.net

Name: Web Developer's Toolbox
Version: 1.1.3
Enabled: true
ID: {1945702a-44e8-4d01-a50b-6893582d909a}

Name: Zoom Label
Version: 1.3.1
Enabled: true
ID: zoomlabel@om

Name: Ant Video Downloader
Version: 2.4.7.50
Enabled: false
ID: anttoolbar@ant.com

Name: Bypass Forced Download
Version: 0.1.0
Enabled: false
ID: bypass-forced-download@lukas-mai.addons.mozilla.org

Name: Decentraleyes
Version: 1.4.3
Enabled: false
ID: jid1-BoFifL9Vbdl2zQ@jetpack

Name: Destroy the Web
Version: 1.2.2.2
Enabled: false
ID: {7BDB48D1-CD94-4B99-A5A4-E418B9EE6532}

Name: Moon Tester Tool
Version: 2.1.4
Enabled: false
ID: moonttool@Off.JustOff

Name: NoScript
Version: 5.1.9
Enabled: false
ID: {73a6fe31-595d-460b-a920-fcc0f8843232}

Name: NoSquint
Version: 2.2.2
Enabled: false
ID: nosquint@me.ebonjaeger.com

Name: Palefill Web Technologies Polyfill
Version: 1.27.1
Enabled: false
ID: palefill@addons.martoks-place.de

Name: PassIFox
Version: 1.2.3b1
Enabled: false
ID: passifox@hanhuy.com

Name: PDF Viewer
Version: 2.3.240
Enabled: false
ID: pdf.js-seamonkey@lakora.us

Graphics
--------

Features
Compositing: Direct3D 11
GPU Accelerated Windows: 1/1 Direct3D 11 (OMTC)
Asynchronous Pan/Zoom: none
WebGL 1 Driver WSI Info: EGL_VENDOR: Google Inc. (adapter LUID: 000000000000a1c2) EGL_VERSION: 1.4 (ANGLE 2.1.0.) EGL_EXTENSIONS: EGL_EXT_create_context_robustness EGL_ANGLE_d3d_share_handle_client_buffer EGL_ANGLE_surface_d3d_texture_2d_share_handle EGL_ANGLE_query_surface_pointer EGL_ANGLE_window_fixed_size EGL_ANGLE_keyed_mutex EGL_ANGLE_surface_orientation EGL_ANGLE_direct_composition EGL_NV_post_sub_buffer EGL_KHR_create_context EGL_EXT_device_query EGL_KHR_image EGL_KHR_image_base EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_get_all_proc_addresses EGL_KHR_stream EGL_KHR_stream_consumer_gltexture EGL_NV_stream_consumer_gltexture_yuv EGL_ANGLE_flexible_surface_compatibility EGL_ANGLE_stream_producer_d3d_texture_nv12 EGL_EXTENSIONS(nullptr): EGL_EXT_client_extensions EGL_EXT_platform_base EGL_EXT_platform_device EGL_ANGLE_platform_angle EGL_ANGLE_platform_angle_d3d EGL_ANGLE_device_creation EGL_ANGLE_device_creation_d3d11 EGL_ANGLE_experimental_present_path EGL_KHR_client_get_all_proc_addresses
WebGL 1 Driver Renderer: Google Inc. -- ANGLE (NVIDIA GeForce GTX 750 Ti Direct3D11 vs_5_0 ps_5_0)
WebGL 1 Driver Version: OpenGL ES 2.0 (ANGLE 2.1.0.)
WebGL 1 Driver Extensions: GL_OES_element_index_uint GL_OES_packed_depth_stencil GL_OES_get_program_binary GL_OES_rgb8_rgba8 GL_EXT_texture_format_BGRA8888 GL_EXT_read_format_bgra GL_NV_pixel_buffer_object GL_OES_mapbuffer GL_EXT_map_buffer_range GL_EXT_color_buffer_half_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_float GL_OES_texture_float_linear GL_EXT_texture_rg GL_EXT_texture_compression_dxt1 GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_OES_compressed_ETC1_RGB8_texture GL_EXT_sRGB GL_ANGLE_depth_texture GL_OES_depth32 GL_EXT_texture_storage GL_OES_texture_npot GL_EXT_draw_buffers GL_EXT_texture_filter_anisotropic GL_EXT_occlusion_query_boolean GL_NV_fence GL_EXT_disjoint_timer_query GL_EXT_robustness GL_EXT_blend_minmax GL_ANGLE_framebuffer_blit GL_ANGLE_framebuffer_multisample GL_ANGLE_instanced_arrays GL_ANGLE_pack_reverse_row_order GL_OES_standard_derivatives GL_EXT_shader_texture_lod GL_EXT_frag_depth GL_ANGLE_texture_usage GL_ANGLE_translated_shader_source GL_EXT_discard_framebuffer GL_EXT_debug_marker GL_OES_EGL_image GL_OES_EGL_image_external GL_NV_EGL_stream_consumer_external GL_EXT_unpack_subimage GL_NV_pack_subimage GL_OES_vertex_array_object GL_KHR_debug GL_ANGLE_lossy_etc_decode GL_CHROMIUM_bind_uniform_location GL_CHROMIUM_sync_query GL_CHROMIUM_copy_texture
WebGL 1 Extensions: ANGLE_instanced_arrays EXT_blend_minmax EXT_color_buffer_half_float EXT_frag_depth EXT_shader_texture_lod EXT_texture_filter_anisotropic EXT_disjoint_timer_query MOZ_debug_get OES_element_index_uint OES_standard_derivatives OES_texture_float OES_texture_float_linear OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_compressed_texture_etc1 WEBGL_compressed_texture_s3tc WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_depth_texture WEBGL_draw_buffers WEBGL_lose_context MOZ_WEBGL_lose_context MOZ_WEBGL_compressed_texture_s3tc MOZ_WEBGL_depth_texture
WebGL 2 Driver WSI Info: EGL_VENDOR: Google Inc. (adapter LUID: 000000000000a1c2) EGL_VERSION: 1.4 (ANGLE 2.1.0.) EGL_EXTENSIONS: EGL_EXT_create_context_robustness EGL_ANGLE_d3d_share_handle_client_buffer EGL_ANGLE_surface_d3d_texture_2d_share_handle EGL_ANGLE_query_surface_pointer EGL_ANGLE_window_fixed_size EGL_ANGLE_keyed_mutex EGL_ANGLE_surface_orientation EGL_ANGLE_direct_composition EGL_NV_post_sub_buffer EGL_KHR_create_context EGL_EXT_device_query EGL_KHR_image EGL_KHR_image_base EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_get_all_proc_addresses EGL_KHR_stream EGL_KHR_stream_consumer_gltexture EGL_NV_stream_consumer_gltexture_yuv EGL_ANGLE_flexible_surface_compatibility EGL_ANGLE_stream_producer_d3d_texture_nv12 EGL_EXTENSIONS(nullptr): EGL_EXT_client_extensions EGL_EXT_platform_base EGL_EXT_platform_device EGL_ANGLE_platform_angle EGL_ANGLE_platform_angle_d3d EGL_ANGLE_device_creation EGL_ANGLE_device_creation_d3d11 EGL_ANGLE_experimental_present_path EGL_KHR_client_get_all_proc_addresses
WebGL 2 Driver Renderer: Google Inc. -- ANGLE (NVIDIA GeForce GTX 750 Ti Direct3D11 vs_5_0 ps_5_0)
WebGL 2 Driver Version: OpenGL ES 3.0 (ANGLE 2.1.0.)
WebGL 2 Driver Extensions: GL_OES_element_index_uint GL_OES_packed_depth_stencil GL_OES_get_program_binary GL_OES_rgb8_rgba8 GL_EXT_texture_format_BGRA8888 GL_EXT_read_format_bgra GL_NV_pixel_buffer_object GL_OES_mapbuffer GL_EXT_map_buffer_range GL_EXT_color_buffer_half_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_float GL_OES_texture_float_linear GL_EXT_texture_rg GL_EXT_texture_compression_dxt1 GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_OES_compressed_ETC1_RGB8_texture GL_EXT_sRGB GL_ANGLE_depth_texture GL_OES_depth32 GL_EXT_texture_storage GL_OES_texture_npot GL_EXT_draw_buffers GL_EXT_texture_filter_anisotropic GL_EXT_occlusion_query_boolean GL_NV_fence GL_EXT_disjoint_timer_query GL_EXT_robustness GL_EXT_blend_minmax GL_ANGLE_framebuffer_blit GL_ANGLE_framebuffer_multisample GL_ANGLE_instanced_arrays GL_ANGLE_pack_reverse_row_order GL_OES_standard_derivatives GL_EXT_shader_texture_lod GL_EXT_frag_depth GL_ANGLE_texture_usage GL_ANGLE_translated_shader_source GL_EXT_discard_framebuffer GL_EXT_debug_marker GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_NV_EGL_stream_consumer_external GL_EXT_unpack_subimage GL_NV_pack_subimage GL_EXT_color_buffer_float GL_OES_vertex_array_object GL_KHR_debug GL_ANGLE_lossy_etc_decode GL_CHROMIUM_bind_uniform_location GL_CHROMIUM_sync_query GL_CHROMIUM_copy_texture GL_EXT_texture_norm16
WebGL 2 Extensions: EXT_color_buffer_float EXT_texture_filter_anisotropic EXT_disjoint_timer_query MOZ_debug_get OES_texture_float_linear WEBGL_compressed_texture_etc WEBGL_compressed_texture_etc1 WEBGL_compressed_texture_s3tc WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context MOZ_WEBGL_lose_context MOZ_WEBGL_compressed_texture_s3tc
Hardware H264 Decoding: Yes; Using D3D11 API
Audio Backend: wasapi
Direct2D: true
DirectWrite: true (10.0.22621.2506)
GPU #1
Active: Yes
Description: NVIDIA GeForce GTX 750 Ti
Vendor ID: 0x10de
Device ID: 0x1380
Driver Version: 31.0.15.4629
Driver Date: 11-29-2023
Drivers: C:\Windows\System32\DriverStore\FileRepository\nv_dispig.inf_amd64_31dab972145ae5a9\nvldumdx.dll,C:\Windows\System32\DriverStore\FileRepository\nv_dispig.inf_amd64_31dab972145ae5a9\nvldumdx.dll,C:\Windows\System32\DriverStore\FileRepository\nv_dispig.inf_amd64_31dab972145ae5a9\nvldumdx.dll,C:\Windows\System32\DriverStore\FileRepository\nv_dispig.inf_amd64_31dab972145ae5a9\nvldumdx.dll C:\Windows\System32\DriverStore\FileRepository\nv_dispig.inf_amd64_31dab972145ae5a9\nvldumd.dll,C:\Windows\System32\DriverStore\FileRepository\nv_dispig.inf_amd64_31dab972145ae5a9\nvldumd.dll,C:\Windows\System32\DriverStore\FileRepository\nv_dispig.inf_amd64_31dab972145ae5a9\nvldumd.dll,C:\Windows\System32\DriverStore\FileRepository\nv_dispig.inf_amd64_31dab972145ae5a9\nvldumd.dll
Subsys ID: 362d1458
RAM: 2048

Diagnostics
ClearType Parameters: DISPLAY1 [ Gamma: 2,2 Pixel Structure: RGB ClearType Level: 100 Enhanced Contrast: 300 ] DISPLAY2 [ Gamma: 2,2 Pixel Structure: RGB ClearType Level: 100 Enhanced Contrast: 200 ]
AzureCanvasBackend: direct2d 1.1
AzureContentBackend: direct2d 1.1
AzureFallbackCanvasBackend: cairo
ClearType Parameters: DISPLAY1 [ Gamma: 2,2 Pixel Structure: RGB ClearType Level: 100 Enhanced Contrast: 300 ] DISPLAY2 [ Gamma: 2,2 Pixel Structure: RGB ClearType Level: 100 Enhanced Contrast: 200 ]





Important Modified Preferences
------------------------------

accessibility.typeaheadfind.flashBar: 0
browser.cache.disk.capacity: 235520
browser.cache.disk.enable: false
browser.cache.disk.smart_size.first_run: false
browser.cache.disk.smart_size.use_old_max: false
browser.download.importedFromSqlite: true
browser.download.manager.addToRecentDocs: false
browser.download.manager.showWhenStarting: false
browser.places.smartBookmarksVersion: 4
browser.privatebrowsing.autostart: true
browser.search.context.loadInBackground: false
browser.search.update: false
browser.search.useDBForOrder: true
browser.sessionstore.interval: 300000
browser.startup.homepage: about:home
browser.startup.homepage_override.buildID: 20260120143649
browser.startup.homepage_override.mstone: 6.8.0
browser.zoom.siteSpecific: false
dom.always_stop_slow_scripts: false
dom.animations-api.getAnimations.enabled: true
dom.disable_open_during_load: false
dom.enable_performance_observer: true
dom.ipc.plugins.flash.disable-protected-mode: true
dom.max_script_run_time: 40
dom.wakelock.enabled: true
dom.window.event.enabled: true
extensions.lastAppVersion: 34.0.0
font.internaluseonly.changed: false
font.name-list.emoji: Twemoji Mozilla, Segoe UI Emoji
general.useragent.compatMode: 0
general.useragent.compatMode.firefox: false
general.useragent.compatMode.gecko: false
general.useragent.override.babla.gr: Mozilla/5.0 (%OS_SLICE% rv:62.0) Gecko/20100101 Firefox/62.0
general.useragent.override.collinsdictionary.com: Mozilla/5.0 (%OS_SLICE% rv:62.0) Gecko/20100101 Firefox/62.0
general.useragent.override.dropbox.com:
general.useragent.override.google.com: Mozilla/5.0 (%OS_SLICE% rv:71.0) Gecko/20100101 Firefox/71.0 PaleMoon/34.0.0
general.useragent.override.google.si: Mozilla/5.0 (%OS_SLICE% rv:71.0) Gecko/20100101 Firefox/71.0 PaleMoon/34.0.0
general.useragent.override.naszezdrowie-przychodnie.pl: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
general.useragent.override.rtvslo.si: Mozilla/5.0 (%OS_SLICE% rv:62.0) Gecko/20100101 Firefox/62.0
general.useragent.override.studio.youtube.com:
general.useragent.override.twitter.com: Mozilla/5.0 (%OS_SLICE% rv:102.0) Gecko/20100101 Firefox/102.0
general.useragent.override.x.com: Mozilla/5.0 (%OS_SLICE% rv:102.0) Gecko/20100101 Firefox/102.0
general.useragent.override.youtube.com:
general.useragent.updates.enabled: false
gfx.crash-guard.d3d11layers.appVersion: 34.0.0
gfx.crash-guard.d3d11layers.deviceID: 0x1380
gfx.crash-guard.d3d11layers.driverVersion: 31.0.15.4629
gfx.crash-guard.d3d11layers.feature-d2d: true
gfx.crash-guard.d3d11layers.feature-d3d11: true
gfx.crash-guard.status.d3d11layers: 2
gfx.crash-guard.status.d3d11video: 2
gfx.crash-guard.status.d3d9video: 2
gfx.font_rendering.cleartype_params.force_gdi_classic_for_families:
media.gmp.storage.version.observed: 1
media.hardware-video-decoding.failed: false
mousewheel.withcontrolkey.action: 3
network.cookie.prefsMigrated: true
places.database.lastMaintenance: 1768690681
places.history.expiration.transient_current_max_pages: 37760
plugin.disable_full_page_plugin_for_types:
plugin.state.flash: 2
plugin.state.np32dsw: 2
plugin.state.npfoxitpdfreaderplugin: 2
plugin.state.nppdf: 2
plugin.state.nppdfxeditplugin.x: 2
plugin.state.npvlc: 2
plugins.always_show_indicator: true
plugins.rewrite_youtube_embeds: false
privacy.cpd.extensions-tabmix: false
privacy.sanitize.migrateFx3Prefs: true
security.disable_button.openCertManager: false
security.disable_button.openDeviceManager: false
services.sync.declinedEngines:
services.sync.engine.greasemonkey: true
storage.vacuum.last.index: 1
storage.vacuum.last.places.sqlite: 1767541461
storage.vacuum.last.queue.sqlite: 1766620864
ui.osk.debug.keyboardDisplayReason: IKPOS: Touch screen not found.
webgl.enable-debug-renderer-info: true
webgl.enable-draft-extensions: true

Important Locked Preferences
----------------------------

Places Database
---------------

JavaScript
----------

Incremental GC: true

Accessibility
-------------

Activated: false
Prevent Accessibility: 1

Library Versions
----------------

NSPR
Expected minimum version: 4.35
Version in use: 4.35

NSS
Expected minimum version: 3.90.9
Version in use: 3.90.9

NSSSMIME
Expected minimum version: 3.90.9
Version in use: 3.90.9

NSSSSL
Expected minimum version: 3.90.9
Version in use: 3.90.9

NSSUTIL
Expected minimum version: 3.90.9
Version in use: 3.90.9

Enobarbous
Fanatic
Fanatic
Posts: 104
Joined: 2022-12-06, 17:44

Re: Custom Buttons Enhanced 0.0.6

Post by Enobarbous » 2026-01-20, 19:41

Okay, the problem isn't with the extension itself or even with any of the buttons.
The problem is *the code size of each specific button*.
The minimum reproducible example: creating a button where the CODE section simply repeats the line //console.log(‘test’); (yes, in commented form) about 700 times = browser freeze when trying to edit this button after saving or opening the add-on manager page.

The only possible cause I can think of is #2889. It seems that something changed when the xml parser was updated...

@jobbautista9, won't you take a look?
I am sorry for the use of auto-translator to post

User avatar
jobbautista9
Board Warrior
Board Warrior
Posts: 1136
Joined: 2020-11-03, 06:47
Location: Philippines

Re: Custom Buttons Enhanced 0.0.6

Post by jobbautista9 » 2026-01-21, 05:51

I've looked into it and unfortunately I have no idea what would fix this other than backing out every change to Expat I did... :( It seems that the newer Expat code's interaction with our codebase leads to very large attribute values (the extension puts all of your user-written code in an attribute of the toolbarbutton generated, as I've documented in Issue #2912 (UXP)) not being handled well.
Image

Tired of creating stuff!

Avatar artwork by Shinki669: https://www.pixiv.net/artworks/113645617

XUL add-ons developer. You can find a list of add-ons I manage at http://rw.rs/~job/software.html.

User avatar
tellu-white
Lunatic
Lunatic
Posts: 293
Joined: 2022-03-08, 22:02

Re: Custom Buttons Enhanced 0.0.6

Post by tellu-white » 2026-01-22, 17:07

"Custom Buttons" is working again :) It seems that version 2.7.3 of the "expat" library was the one that broke "Custom Buttons". I updated to "Pale Moon 34.0.1", in which the old version of the "expat" library was restored, and everything is working fine now.

Thank you Moonchild for dealing with this issue so quickly :thumbup: as it greatly affected all "Custom Buttons" users.

A broken "Custom Buttons" does not affect a single add-on but all the buttons created with it, each of these buttons being in fact another self-contained add-on.

User avatar
TTraveler
Apollo supporter
Apollo supporter
Posts: 32
Joined: 2017-06-27, 03:18

Re: Custom Buttons Enhanced 0.0.6

Post by TTraveler » 2026-01-24, 08:07

I'm glad this has seemingly been resolved too!!!
I've been a CB user for well over 10-15 years myself.
I'm not a coder or CB expert by far, but I love playing with what I do know with simple modifications here & there.

I haven't used PM for over a week, as I also use Basilisk, & have been using BAS for the past week or so exclusively.

The reason I use these browsers is because I enjoy using Custom Buttons......they are the last 2 browsers I have that are still compatible with CBs.
Waterfox & Firefox used to be compatible, but they've stopped compatibility a few years back.

I have well over 200+/- working custom buttons, & a quick look at my latest CB button backups surprisingly totals more than 300 buttons backed up. I probably only use a few dozen regularly.....day to day.
The most updated working version of CBs is CustomButtons3 v59.1.2 made by Sonny Razzano.....who I haven't seen anywhere online since 2020 or so.

If memory is serving me well, Pale Moon Add-Ons used to carry CB Versions for quite a while too.

I'll be looking in here more often......as I'm sure there are many other ole CB users that use PM or Basilisk about.... Image
Last edited by TTraveler on 2026-01-24, 09:59, edited 1 time in total.

User avatar
Moonchild
Project founder
Project founder
Posts: 38821
Joined: 2011-08-28, 17:27
Location: Sweden

Re: Custom Buttons Enhanced 0.0.6

Post by Moonchild » 2026-01-24, 09:24

Just to be clear, the blocklist was adjusted to only affect 34.0.0 for this extension. 0.0.6 isn't restricted on 34.0.1 or later.
"There is no point in arguing with an idiot, because then you're both idiots." - Anonymous
"Seek wisdom, not knowledge. Knowledge is of the past; wisdom is of the future." -- Native American proverb
"Linux makes everything difficult." -- Lyceus Anubite