Note: I tested the value of 1 when changing from 2-block to make sure that it actually changed to allow in the panel. Am keeping my eye on the delete and backspace keys and will remove the line when it is fixed
Changes:
- The script doesn't touch the `user.js` file until it really has to.
- The merge function is a bit smarter parsing files, at no significant cost.
- Fixed a minor issue with the version check.
- Minor syntactic changes here and there.
- creates timestamped backup files rather than always overwriting user.js.bak.
(use -singlebackup if you prefer a single backup file)
Changes:
-The script doesn't touch the user.js file until it really has to.
-The merge function is a bit smarter parsing files, at no significant cost. See examples below.
-Minor syntactic changes here and there.
Additions:
-New -multiBackups argument. I personally intend to use it to compare files and quickly review changes.
- Search string made case-sensitive, because Firefox preferences are.
- The script now uses regex, which allows it to understand `user.js` files formatted using single quotes, spaces and/or tabs in `user_pref` lines.
Trade-off: it can no longer reset preferences that include some special characters in their names. Not an issue for now, just something to remember.
See full discussion [here](https://github.com/ghacksuserjs/ghacks-user.js/pull/321).
- Search string made case-sensitive, because Firefox preferences are.
- The script now uses regex, which allows it to understand user.js files formatted using single quotes, spaces, or tabs.
Trade-off: it can no longer reset preferences that include some special characters in their names. Not an issue for now, just something to remember.
Fixes:
- Merge function:
*no longer has the potential to truncate super long lines. (8KB per line still IS the max!)
*no more issues with exclamation marks in user_pref lines.
Improvements:
- Overall better performance due to ECHO syntax changes.
- Merge function on steroids! Faster than ever
Changes, Additions, Substractions:
- Leading spaces are no longer ignored by the merge function. Lines to be merged must begin with user_pref.
- Added header with name, author, version.
- Added help sub-menu.
- Added special message when no override files are found when using -multiOverrides.
- Formatting changes.
Fixes:
- Merge function:
*no longer has the potential to truncate super long lines.
*no more issues with exclamation marks in user_pref lines.
Improvements:
- Overall better performance due to ECHO syntax changes.
- Merge function on steroids! Faster than ever, and no longer generates temporary files at all. As it always should have been.
Changes, Additions, Substractions:
- Leading spaces are no longer ignored by the merge function. Lines to be merged must begin with user_pref.
- Added header with name, author, version.
- Added help sub-menu.
- Added special message when no override files are found when using -multiOverrides.
- Formatting changes.
-updatebatch now will (or at least should):
*Download new batch and name it [updater]*.bat
*Open that script in a new CMD window.
*Exit
The [updated]*.bat script should:
*Copy itself overwriting the original batch (without renaming).
*Start that script in a new CMD instance.
*Exit.
The new script, with the original name, should:
*Delete the [updated]*.bat script
*Begin the normal script routine.
@earthing do you think I should still rename the scripts to .old or something before overwriting/deleting?
It ended up being a mixture of the previous commit and the fix. It writes a temporary file on the go that only holds preferences, and generates the target file at once at the end. It's slower than before, but it works.
While I figure out a fix for the missing characters...
Enclosing the whole merging loop in parentheses and replacing the source file with the entire output at once is more efficient than appending individual lines with >>%~2. The script doesn't have to wait for the HD to continue processing.
Everything in a line after a powershell call is considered as being called from PowerShell.
>nul didn't work because of that. Enclosing the line in brackets should fix it.
To account for the possibility of the user running the script silently in the background. PAUSE would leave an instance in memory doing nothing indefinitely.
I was going to use TIMEOUT but PING performs better.
- keeps all user.js.parrot lines intact
- keeps empty lines intact
- fix for keeping `!` and `^` in non-"user_pref" lines intact
+ some other minor changes + streamlining
You had it right the first time earthlng. Eg Start commits for 55-beta date shown is 9-July. 55-alpha release is dated 18-Aug and we drop the "-beta" part (look inside the release downloads). Start commits for 56-beta date shown is 12-Sept. 56-alpha release is dated 2-Oct and we drop the "-beta" part. And because you created the 57-alpha release before you reversed the date+version, that too is all good.
Controls the visibility of the "Options>Privacy & Security>Site Data" section.
I'd prefer to remove this completely because it only adds to the confusion about all the different storage types.
This is just an extension for localStorage (2705) with 3 methods: estimate(), persist() and persisted(). A site can ask for permission (?) to persist data which when granted basically just means that "Storage will not be cleared except by explicit user action" whereas otherwise when not persisted "Storage may be cleared by the UA under storage pressure." - I don't see a problem with that.
We'll keep 2706 inactive for now but might remove it in a future commit.
https://github.com/ghacksuserjs/ghacks-user.js/issues/264#issuecomment-345462158
- It can now handle read-only files.
- it is somewhat more explicit regarding what it's doing in some circumstances. For example, it now informs the user when no changes are made.
- It now accepts two parameters: `-unattended` and `-log`
- Minor improvements here and there.
Sorry, but AFAIK, with this enabled it clears web extension storage when clear "offsite website data" is checked on close or manually (which we do in the user.js). Note also that even with this enabled, the UI settings are disabled, and the data-on-disk calculation never finishes, so at this point, its a bit useless to enable it until we figure that out. Will be back in 7 days
this should now work no matter how the script is called (including symlinks) on both Mac and Linux.
+ Storing and restoring the original working directory to prevent problems in certain circumstances.
"Push and web notifications require service workers, which in turn require workers." - this is clearly not (or no longer) true. See #256 where workers are disabled, but service workers enabled, and service workers create IDB entries on Youtube
this is a linux only pref, does nothing in Windows or Mac, as per tagging convention => [LINUX]. Here's a 15 year old ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=160200 .. enjoy! PS: Trying to find an autocopy text (excluding form fields) that auto trims, auto removes multi-spaces, auto trims, and auto removes double blank lines .. I had one, but its legacy. Best I can find is https://addons.mozilla.org/en-US/firefox/addon/autocopy-webextension/ - a wee timer in options lets you control when you copy (that's ok), but it gives a notification every time which is annoying as f - anyone got any ideas
- In FF55 (windows) this no longer changes both prefs, only `layers.acceleration.disabled`
- `gfx.direct2d.disabled` => inactive (I do not think it is used much if at all anymore - do a DXR search)
Inactive as this actually can cause problems on Linux with tofu (I think arial on debian causes tofu - ask nodiscc) . Also incomplete with non-Western settings
Inactive: 1: currently only three sites (hard-coded) can access this, all run by Mozilla 2: it is likely to be used on the new AMO site to determine your Firefox version
Sidenote: Not sure if this is true anymore. Since I ditched CTR and I have the hamburger menu back, it loves to annoy me with a doorhanger ALL THE F**kng TIME - certainly not 8 days grace. Seems more like 12 hours (but I swear it also comes up soon after a restart as well)
it's most likely covered by disabling extensions.formautofill but is nice to know for people who want to enable form-autofill but may want to disable creditCards autofill
The bulk of 2507 with `dom.keyboardevent.code.enabled` (links, description etc) is now deprecated in section 9999 under FF55+. This leaves `dom.keyboardevent.dispatch_during_composition` as a valid pref. It's default is false, so rather than leave it hanging out on it's own with no info, lets remove it. [If it ever becomes true we will pick up in diffs]
- should check if 0360 `user_pref("browser.newtabpage.directory.source", "data:text/plain,");` is still around since the ping pref is gone.
- A bit iffy about 2507 - this spilts two prefs and there's a lot of text. Not sure if FF38+ refers to the second one. We should investigate the still active 2507 and fix that up with some info and version
the default value in 54 is true. It's not in my OS diff for 54 either so it's true on Linux and Mac as well. I don't think anyone would want to disable this anyway, and we have it as "enable APZ". It's only wasting space, let's remove it. class discuss xD
moved screenshots up to 0515 and added the FF54 pref. I know I said we can remove that pref but the item needs to be for FF54+ regardless. To make it less confusing I added the pref back in.
The default is false in FF54 (and also in FF55 beta), so there should be no downsides. Not sure how this will affect AutoFormFill system addon, and don't care since we'll disable that as well
Non e10s and non WebExtension = out the door. NoRedirect & Disable IndexedDB were not e10s, and Cookie Controller is not WE (and besides, there are lots of cookie alternatives). I think that's all of them. In fact I think the only extensions left mentioned are uBlock Origin and NoScript
Also `addon-ons` typo not picked up by Just-me-ghacks - I am bitterly disappointed.
Add missing parrot for 1100s, replace parrot for 1700 with a unique euphemism, a readme tweak (so it's technically correct), and deprecated pocket number change in prep for new system add-on section
I removed the "(hidden pref)" info when we revamped 2699, as it will no longer be hidden. In hindsight, that info needs to stay (we haven't archived off end-of-life 54, and it's good information for backwards compatibility).
A `user.js` is a configuration file that can control hundreds of Firefox settings. For a more technical breakdown and explanation, you can read more on the [overview](https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.1-Overview) wiki page.
The [ghacks user.js](https://github.com/ghacksuserjs/ghacks-user.js/blob/master/user.js) is a template, which, as provided, aims ( with [add-ons](https://github.com/ghacksuserjs/ghacks-user.js/wiki/Appendix-B:-Firefox-Add-ons) <sup>1</sup> ) to provide as much privacy and enhanced security as possible, and to reduce tracking and fingerprinting as much as possible - while minimizing any loss of functionality and breakage (but it will happen).
The `ghacks user.js` is a **template**, which, as provided, aims to provide as much privacy and enhanced security as possible, and to reduce tracking and fingerprinting as much as possible - while minimizing any loss of functionality and breakage (but it will happen).
We aim to INFORM and giveyou CHOICES. No one size fits all, so customize it! And not all sites have the same requirements, so use [profiles](https://github.com/ghacksuserjs/ghacks-user.js/wiki/2.3-Concurrent-Profiles) with custom versions. We won't set you wrong.
Everyone, experts included, should at least read the [implementation](https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.3-Implementation) wiki page, as it contains important information regarding a few `ghacks user.js` settings.
INFORMATION IS POWER. So you can make informed decisions to better protect yourself online, we aim to be:
* Accessible (provide information and simpler, less-technical descriptions if possible)
* Accountable (provide reputable references/sources, [test sites](https://github.com/ghacksuserjs/ghacks-user.js/wiki/Appendix-C:-Test-Sites), dispel bad advice)
* Change trackable (yay! we're on github now, with commits)
* Compatible (including a deprecated section, [releases](https://github.com/ghacksuserjs/ghacks-user.js/releases))
* Comprehensive (including enforcing defaults and future-proofing)
* Current and up-to-date with stable (including [changelogs](https://github.com/ghacksuserjs/ghacks-user.js/search?q=label%3Achangelog&type=Issues&utf8=%E2%9C%93))
* Detailed (preference versioning, hidden preference information, explanations, and more)
* Easy to use and discuss (sections, sub-sections, numbering)
* Helpful (including a [wiki](https://github.com/ghacksuserjs/ghacks-user.js/wiki) with features such as [add-ons](https://github.com/ghacksuserjs/ghacks-user.js/wiki/Appendix-B:-Firefox-Add-ons), [user scripts](https://github.com/ghacksuserjs/ghacks-user.js/wiki/3.1-User-Scripts), [references](https://github.com/ghacksuserjs/ghacks-user.js/wiki/Appendix-D:-References) and more)
* Innovative (formatting, special tags, and future plans such as branches)
Everyone, experts included, should at least read the [implementation](https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.3-Implementation) wiki page, as it contains important information regarding a few default settings we use. The rest of the [wiki](https://github.com/ghacksuserjs/ghacks-user.js/wiki) is helpful as well.
* The 12bytes article now uses this user.js and supplements it with an additonal JS hosted right [here](https://github.com/atomGit/Firefox-user.js) at github
<sup>1</sup>  Important: We HIGHLY recommend using uBlock Origin, uMatrix and a cookie extension. Section 0400, if modified, allows Tracking Protection and Safe Browsing to be disabled. Do this at your own risk. See the [implementation](https://github.com/ghacksuserjs/ghacks-user.js/wiki/1.3-Implementation) wiki page for more.
<sup>1</sup> The ghacksuser.js was an independent project by [Thorin-Oakenpants](https://github.com/Thorin-Oakenpants) started in early 2015 and was [first published](https://www.ghacks.net/2015/08/18/a-comprehensive-list-of-firefox-privacy-and-security-settings/) at ghacks in August 2015. With Martin Brinkmann's blessing, it will keep the ghacks name.
<sup>2</sup> The ghacks user.js was an independent project by [Thorin-Oakenpants](https://github.com/Thorin-Oakenpants) started in early 2015 and was [first published](https://www.ghacks.net/2015/08/18/a-comprehensive-list-of-firefox-privacy-and-security-settings/) at ghacks in August 2015. It was kept up-to-date and expanded by the original author with three major updates and articles. With Martin Brinkmann's blessing, it will keep the ghacks name.
// reset prefs that set the same value as FFs default value
letaTEMP=getMyList(ops);
myreset(aTEMP);
reapply(aTEMP);
constaBACKUP=getMyList(ops);
//console.log(aBACKUP.length, "user-set prefs from our list detected and their values stored.");
letmyArr=aBACKUP;
letfound=false;
letaDbg=[];
focus();
myreset(aBACKUP);// reset all detected prefs
if(confirm("all detected prefs reset.\n\n!! KEEP THIS PROMPT OPEN AND TEST THE SITE IN ANOTHER TAB !!\n\nIF the problem still exists, this script can't help you - click cancel to re-apply your values and exit.\n\nClick OK if your problem is fixed.")){
aDbg=myArr;
reapply(aBACKUP);
myreset(myArr.slice(0,parseInt(myArr.length/2)));
while(myArr.length>=2){
alert("NOW TEST AGAIN !");
if(confirm("if the problem still exists click OK, otherwise click cancel.")){
myArr=myArr.slice(parseInt(myArr.length/2));
if(myArr.length==1){
alert("The problem is caused by more than 1 pref !\n\nNarrowed it down to "+aDbg.length.toString()+" prefs, check the console ...");
break;
}
}else{
myArr=myArr.slice(0,parseInt(myArr.length/2));
aDbg=myArr;
if(myArr.length==1){found=true;break;}
}
reapply(aBACKUP);
myreset(myArr.slice(0,parseInt(myArr.length/2)));// reset half of the remaining prefs
}
reapply(aBACKUP);
}
else{
reapply(aBACKUP);
return;
}
if(found){
alert("narrowed it down to:\n\n"+myArr[0].name+"\n");
myreset(myArr);// reset the culprit
}
else{
console.log("the problem is caused by a combination of the following prefs:");
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.