tenfourfox
tenfourfox copied to clipboard
Negociating new features for TenFourFox
@classilla,
Since my fork is kept kinda old but I would like to provide TenFourFox some new features that could be useful to both PowerPC and Intel users (it's both front-end features or back-end features needed to browse correctly on some websites), I'd like to suggest you my wishlist.
For the features that you'd like in your tree, I can patch, fix and test them on a local build of OlgaFox Intel and then do pull requests to you with all the ready-to-use and needed changes (so I reduce the overhead on your side :-) ).
Below is the list of features I'm thinking about. Feel free to say what you want and what you don't want and how you want to organize the future pull requests from me (one per feature or one for features X
, Y
and Z
). All of those suggestions doesn't have to be reviewed for the next release of TenFourFox and can be spread along several releases.
Tested changes
The changes listed below were already tested on a build of TenFiveFox Intel that I'm using daily. None of them were commited to GitHub or included any of my releases.
Frontend features
- [x] Add a keyboard shortcut (⌥⌘R) for reader mode (M1144749, M1344211 and M1441788) — Since this one impacts localizations, we can integrate this with the release that will include classilla/tenfourfox#623 (FPR28) to make things easier. I can lookup for the new localized strings from Firefox on my side;
- [ ] M1520960 — « Allow saving passwords in private windows with a dismissed-by-default doorhanger » (I just realized that I'm also affected by M1660998 but this last one isn't critical and needs more investigation);
- [ ] ~~Revert M1222490 to restore Panorama (a.k.a "Tab Groups"), removed in Firefox 45 [impacts localizations] — This is maybe useless since there's extensions to restore it (or via the Classic Add-ons Archive);~~
- [x] I also wonder if you're still interested in the PDJS setting (
pdfjs.display.use_document_fonts
) that I suggested some time ago or if there's something wrong with the associated commit I proposed (maybe the change toconfigure.in
destined to use conditional preprocessing forpref.js
that I can remove for ppc TenFourFox and keep in my fork)? - [x] M1126282 — Provide a 1.25x faster video speed option in the video controls.
Backend features
- [x] M1250987 — « Make
RequestInit.body
nullable » (allows to view price of stuff on http://conrad.com); - [x] M1309358 — « [CORS] Add wildcard to
Access-Control-Expose-Headers
,Access-Control-Allow-Methods
, andAccess-Control-Allow-Headers
» (allows to browse https://lidlfuntrips.be/); - [x] M1394399 — « Make
fetch()
use"same-origin"
credentials by default » (needed to access some features when logged on certain sites);
Untested changes
(TBA)
Others
- [ ] I also intend to add to my wiki a list all the new Web, HTML, JavaScript and CSS features added to each TenFourFox FPR release (so this can provide some useful information to web developers who want to support us, a la http://caniuse.com — this is slowly on the way, anyway…);
So, going through these:
The keyboard shortcut is fine. In fact, I was probably going to do something similar, but if you want to, feel free. @chris-chtrusch handles the locale strings, though we should have an "Enter Reader View" string already we could repurpose.
Not a fan of saving passwords in private windows, but I guess if this is expected in Firefox. However, this wouldn't be a high priority change for me. Does it need locale strings?
I'm also not a big fan of bringing Panorama back since there would be a maintenance burden, and as you say there are addons to do it already. We haven't supported it for a long time and no one seems to be complaining much (they may just be using the addon, which is fine).
I don't mind the pdfjs
change except I think it should still default to true
and we can experiment with it. I've certainly seen faulty renderings but usually only with ligatures and I don't want to break PDFs that do render okay with ATSUI.
For the backend features, all of those sound good, and it doesn't seem like those three have any known regressions caused by them. Thumbs up for those.
And thank you very much for offering!
Fire away with the next sets of PRs, since we're into FPR29. Thanks!
Does https://lidlfuntrips.be/ still work for you? I applied (I think) those three bugs and it still doesn't load. It just sits there at its little throbber.
Hello,
My patched build still works on this website (the only needed feature to allow the site to load something is to allow to use *
in CORS headers (explaining why you can't access this site on iOS too). I put a commit with the needed changes (see above — the branch on which the commit is implemented is based on FPR5 because it's the version in which I first tried this patch but I just saw that this has to be rebased to YOUR branch not my fork). Since this site is specific to a country, it's maybe geocensored or CDNs can cause some troubles? Have you got some error messages in the JS Console?
Concerning the change to the passwords manager, I prefer to wait until I release my FPR7 to allow further verifications (the patch needs some rewrites — fortunately it doesn't impact localized strings).
I can rebase the commits on the correct branch and append them the pdfjs
setting/fix but not this night ;-)
Also, I found a fix to a glitch in menu icons (STR: open in a same window about:home
and a new tab, close the about:home
tab then open the History > Recently Closed Tabs
menu and see that the about:home
favicon is shrunk to its lower-left corner). The problem applies to Mac OS X 10.4 and 10.5 (10.6 and 10.8 are OK) and to both Intel and ppc builds (FPR28 in Rosetta).
The fix is to change:
https://github.com/OlgaTPark/tenfourfox/blob/6f1108f0a91848d9946b727f787d1d41ac9e0f41/widget/cocoa/nsMenuItemIconX.mm#L452
To:
#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
// Otherwise, scaling of the menu icon will be innefective and only a portion of the icon will be shown
if (!nsCocoaFeatures::OnSnowLeopardOrLater())
[newImage setScalesWhenResized:YES]; // According to Apple's doc, this is deprecated and uneeded in 10.6+
#endif
[newImage setSize:NSMakeSize(kIconWidth, kIconHeight)];
…and this will be part of OlgaFox FPR7.
Thanks much, I'll incorporate that. To compare to make sure I didn't make a mistake backporting those, which commit were those particular patches in?
(nvm, I see, oops)
I see the difference in M1309358. Nice spot. I translated them direct, but you have a little extra which I'm missing.
Okay, that all works. Last part of the window. Anything else you want to sneak in?
Last call ... I'll start the beta build probably over the weekend.
(JIT) I remembered kinda late that I also wrote on my long, secret and probably exaggerated wishlist M1126282 — Provide a 1.25x faster video speed option in the video controls. Since this patch affects localizations (again). I just tested and commited this change above, if you're ever interested in it (no problem if you aren't — I'm sometimes exaggerating). I can also recover and provide the new localized strings if needed and even repack the langpacks if needed.
Anyway, I also provide in attachment a stripped-down patch for the pdfjs
setting if you want to test it in FPR29: PDFJS pref.patch.txt.
I'm not opposed. @chris-chtrusch These look like standard locale strings. Are you good with it?
I'll take the PDF patch now.
Localization: I need the translated strings. For the feature itself: I'm not sure whether we need a 1.25x option on systems that can't even do 1.0 speed.
A good counterargument, though the use case in the original bug was for audio only, which most systems should handle.
Didn't think of that, for audio it will be very useful.
The required strings are apparently in Firefox already, so we shouldn't need new translations.
<!ENTITY mediaPlaybackRate050x2.label "Slow (0.5×)">
<!ENTITY mediaPlaybackRate050x.accesskey "S">
<!ENTITY mediaPlaybackRate050x2.accesskey "S">
<!ENTITY mediaPlaybackRate100x.label "Normal Speed">
<!ENTITY mediaPlaybackRate100x2.label "Normal">
<!ENTITY mediaPlaybackRate100x.accesskey "N">
<!ENTITY mediaPlaybackRate100x2.accesskey "N">
<!ENTITY mediaPlaybackRate150x.label "High Speed (1.5×)">
<!ENTITY mediaPlaybackRate125x2.label "Fast (1.25×)">
<!ENTITY mediaPlaybackRate150x.accesskey "H">
<!ENTITY mediaPlaybackRate125x2.accesskey "F">
<!ENTITY mediaPlaybackRate150x2.label "Faster (1.5×)">
<!ENTITY mediaPlaybackRate150x2.accesskey "a">
<!-- LOCALIZATION NOTE: "Ludicrous" is a reference to the
movie "Space Balls" and is meant to say that this speed is very
fast. -->
<!ENTITY mediaPlaybackRate200x.label "Ludicrous Speed (2×)">
<!ENTITY mediaPlaybackRate200x2.label "Ludicrous (2×)">
<!ENTITY mediaPlaybackRate200x.accesskey "L">
<!ENTITY mediaPlaybackRate200x2.accesskey "L">
(Hey, you're doing my job! — I was thinking about a different solution in order to provide a better compromise if this change annoys you, as explained below.)
I'm maybe going too fast in business so, I've looked for add-on solutions.
Some available add-ons via the Classic Add-ons Archive: Html5 Youtube Video Speed Controller or Video Speed Changer. They both offer a finer tweaking of playback speed but only applies to <video>
elements.
I've also looked for solutions based on GreaseMonkey:
- https://openuserjs.org/scripts/Newt300/HTML5_Video_Playback_Speed_Control_Keyboard_Shortcut_International/source
- https://openuserjs.org/scripts/Nessitro/Set_Video_Speed/source
- https://openuserjs.org/scripts/ni554n/Video_Speed_Control_with_Keyboard/source
- https://openuserjs.org/scripts/drhouse/YouTube_Video_Speed_Seek_Mouse_Control/source
-
https://greasyfork.org/fr/scripts/399851-video-shortcuts/code
All of them only applies to
<video>
elements but can be rewritten for<audio>
elements too. The step in increase/decrease of speed can also be changed by tweaking the source.
I'm also thinking about a more complete solution (differing from the Mozilla one).
It's simply filling the menu with every number between 0.5 and 2 with a step of 0.1 or 0.05 (or maybe a more custom set like 0.6, 0.7, 0.75, 0.8, 0.9, 0.95, 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.4, 1.6, 1.7, 1.75, 1.8, 1.9 to allow a finer adjustment without "bloating" the menu), suffixed with ×
but without localizing them (since this should suffice for most of our supported locales).
Another variant of this is to put a slider inside the menu to change the speed (I don't know if this is possible in XUL and Cocoa doesn't allow to put NSView
s inside a NSMenItem
on Tiger.
Whichever solution you prefer, here are the localized strings, at least, for reference:
(The affected file is https://github.com/OlgaTPark/tenfourfox/commit/0b6bd29ff1eb12fb6cd811d4cffbca5083009d26#diff-943159c2be1bee3ea8b7acbc4b83c717a9ec551ccd2b49759c3bae04e352a5d2 which ends up in {TenFourFox.app/Content/Resources}/browser/chrome/en-US/locale/browser/browser.dtd
)
de:
<!ENTITY mediaPlaybackRate050x2.label "Langsam (0.5×)">
<!ENTITY mediaPlaybackRate050x2.accesskey "L">
<!ENTITY mediaPlaybackRate100x2.label "Normal">
<!ENTITY mediaPlaybackRate100x2.accesskey "N">
<!ENTITY mediaPlaybackRate125x2.label "Schnell (1.25×)">
<!ENTITY mediaPlaybackRate125x2.accesskey "S">
<!ENTITY mediaPlaybackRate150x2.label "Sehr schnell (1.5×)">
<!ENTITY mediaPlaybackRate150x2.accesskey "h">
<!-- LOCALIZATION NOTE: "Ludicrous" is a reference to the
movie "Space Balls" and is meant to say that this speed is very
fast. -->
<!ENTITY mediaPlaybackRate200x2.label "Doppelte Geschwindigkeit (2×)">
<!ENTITY mediaPlaybackRate200x2.accesskey "D">
en-US:
<!ENTITY mediaPlaybackRate050x2.label "Slow (0.5×)">
<!ENTITY mediaPlaybackRate050x2.accesskey "S">
<!ENTITY mediaPlaybackRate100x2.label "Normal">
<!ENTITY mediaPlaybackRate100x2.accesskey "N">
<!ENTITY mediaPlaybackRate125x2.label "Fast (1.25×)">
<!ENTITY mediaPlaybackRate125x2.accesskey "F">
<!ENTITY mediaPlaybackRate150x2.label "Faster (1.5×)">
<!ENTITY mediaPlaybackRate150x2.accesskey "a">
<!-- LOCALIZATION NOTE: "Ludicrous" is a reference to the
movie "Space Balls" and is meant to say that this speed is very
fast. -->
<!ENTITY mediaPlaybackRate200x2.label "Ludicrous (2×)">
<!ENTITY mediaPlaybackRate200x2.accesskey "L">
es-ES:
<!ENTITY mediaPlaybackRate050x2.label "Lento (0.5×)">
<!ENTITY mediaPlaybackRate050x2.accesskey "L">
<!ENTITY mediaPlaybackRate100x2.label "Normal">
<!ENTITY mediaPlaybackRate100x2.accesskey "N">
<!ENTITY mediaPlaybackRate125x2.label "Rápido (1.25×)">
<!ENTITY mediaPlaybackRate125x2.accesskey "R">
<!ENTITY mediaPlaybackRate150x2.label "Más rápido (1.5×)">
<!ENTITY mediaPlaybackRate150x2.accesskey "M">
<!ENTITY mediaPlaybackRate200x2.label "Rapidísimo (2×)">
<!ENTITY mediaPlaybackRate200x2.accesskey "a">
fi:
<!ENTITY mediaPlaybackRate050x2.label "Hidas (0,5×)">
<!ENTITY mediaPlaybackRate050x2.accesskey "H">
<!ENTITY mediaPlaybackRate100x2.label "Normaali">
<!ENTITY mediaPlaybackRate100x2.accesskey "N">
<!ENTITY mediaPlaybackRate125x2.label "Nopea (1,25×)">
<!ENTITY mediaPlaybackRate125x2.accesskey "o">
<!ENTITY mediaPlaybackRate150x2.label "Nopeampi (1,5×)">
<!ENTITY mediaPlaybackRate150x2.accesskey "p">
<!-- LOCALIZATION NOTE: "Ludicrous" is a reference to the
movie "Space Balls" and is meant to say that this speed is very
fast. -->
<!ENTITY mediaPlaybackRate200x2.label "Älytön (2×)">
<!ENTITY mediaPlaybackRate200x2.accesskey "Ä">
fr:
<!ENTITY mediaPlaybackRate050x2.label "Lente (×0,5)">
<!ENTITY mediaPlaybackRate050x2.accesskey "L">
<!ENTITY mediaPlaybackRate100x2.label "Normale">
<!ENTITY mediaPlaybackRate100x2.accesskey "N">
<!ENTITY mediaPlaybackRate125x2.label "Rapide (×1,25)">
<!ENTITY mediaPlaybackRate125x2.accesskey "R">
<!ENTITY mediaPlaybackRate150x2.label "Très rapide (×1,5)">
<!ENTITY mediaPlaybackRate150x2.accesskey "T">
<!-- LOCALIZATION NOTE: "Ludicrous Speed" is a reference to the
movie "Space Balls" and is meant to say that this speed is very
fast. -->
<!ENTITY mediaPlaybackRate200x2.label "Démesurée (×2)">
<!ENTITY mediaPlaybackRate200x2.accesskey "D">
it:
<!ENTITY mediaPlaybackRate050x2.label "Rallentata (0.5×)">
<!ENTITY mediaPlaybackRate050x2.accesskey "a">
<!ENTITY mediaPlaybackRate100x2.label "Normale">
<!ENTITY mediaPlaybackRate100x2.accesskey "N">
<!ENTITY mediaPlaybackRate125x2.label "Veloce (1.25×)">
<!ENTITY mediaPlaybackRate125x2.accesskey "V">
<!ENTITY mediaPlaybackRate150x2.label "Più veloce (1.5×)">
<!ENTITY mediaPlaybackRate150x2.accesskey "P">
<!ENTITY mediaPlaybackRate200x2.label "Smodata (2×)">
<!ENTITY mediaPlaybackRate200x2.accesskey "S">
ko:
<!ENTITY mediaPlaybackRate050x2.label "느리게 (0.5×)">
<!ENTITY mediaPlaybackRate050x2.accesskey "S">
<!ENTITY mediaPlaybackRate100x2.label "보통">
<!ENTITY mediaPlaybackRate100x2.accesskey "N">
<!ENTITY mediaPlaybackRate125x2.label "빠르게 (1.25×)">
<!ENTITY mediaPlaybackRate125x2.accesskey "F">
<!ENTITY mediaPlaybackRate150x2.label "더 빠르게 (1.5×)">
<!ENTITY mediaPlaybackRate150x2.accesskey "a">
<!-- LOCALIZATION NOTE: "Ludicrous" is a reference to the
movie "Space Balls" and is meant to say that this speed is very
fast. -->
<!ENTITY mediaPlaybackRate200x2.label "매우 빠르게 (2×)">
<!ENTITY mediaPlaybackRate200x2.accesskey "L">
pl:
<!ENTITY mediaPlaybackRate050x2.label "Zmniejszona (0,5 ×)">
<!ENTITY mediaPlaybackRate050x2.accesskey "Z">
<!ENTITY mediaPlaybackRate100x2.label "Normalna">
<!ENTITY mediaPlaybackRate100x2.accesskey "N">
<!ENTITY mediaPlaybackRate125x2.label "Zwiększona (1,25 ×)">
<!ENTITY mediaPlaybackRate125x2.accesskey "k">
<!ENTITY mediaPlaybackRate150x2.label "Wysoka (1,5 ×)">
<!ENTITY mediaPlaybackRate150x2.accesskey "W">
<!ENTITY mediaPlaybackRate200x2.label "Absurdalna (2 ×)">
<!ENTITY mediaPlaybackRate200x2.accesskey "A">
ru:
<!ENTITY mediaPlaybackRate050x2.label "Замедленная (0.5×)">
<!ENTITY mediaPlaybackRate050x2.accesskey "м">
<!ENTITY mediaPlaybackRate100x2.label "Нормальная">
<!ENTITY mediaPlaybackRate100x2.accesskey "о">
<!ENTITY mediaPlaybackRate125x2.label "Повышенная (1.25×)">
<!ENTITY mediaPlaybackRate125x2.accesskey "ш">
<!ENTITY mediaPlaybackRate150x2.label "Высокая (1.5×)">
<!ENTITY mediaPlaybackRate150x2.accesskey "ы">
<!ENTITY mediaPlaybackRate200x2.label "Безумная (2×)">
<!ENTITY mediaPlaybackRate200x2.accesskey "з">
sv-SE:
<!ENTITY mediaPlaybackRate050x2.label "långsam (0.5×)">
<!ENTITY mediaPlaybackRate050x2.accesskey "l">
<!ENTITY mediaPlaybackRate100x2.label "Normal">
<!ENTITY mediaPlaybackRate100x2.accesskey "N">
<!ENTITY mediaPlaybackRate125x2.label "Snabb (1.25×)">
<!ENTITY mediaPlaybackRate125x2.accesskey "S">
<!ENTITY mediaPlaybackRate150x2.label "Snabbare (1.5×)">
<!ENTITY mediaPlaybackRate150x2.accesskey "n">
<!-- LOCALIZATION NOTE: "Ludicrous" is a reference to the
movie "Space Balls" and is meant to say that this speed is very
fast. -->
<!ENTITY mediaPlaybackRate200x2.label "Löjligt snabb (2×)">
<!ENTITY mediaPlaybackRate200x2.accesskey "L">
tr:
<!ENTITY mediaPlaybackRate050x2.label "Yavaş (0,5×)">
<!ENTITY mediaPlaybackRate050x2.accesskey "Y">
<!ENTITY mediaPlaybackRate100x2.label "Normal">
<!ENTITY mediaPlaybackRate100x2.accesskey "N">
<!ENTITY mediaPlaybackRate125x2.label "Hızlı (1,25×)">
<!ENTITY mediaPlaybackRate125x2.accesskey "H">
<!ENTITY mediaPlaybackRate150x2.label "Daha hızlı (1,5×)">
<!ENTITY mediaPlaybackRate150x2.accesskey "D">
<!-- LOCALIZATION NOTE: "Ludicrous" is a reference to the
movie "Space Balls" and is meant to say that this speed is very
fast. -->
<!ENTITY mediaPlaybackRate200x2.label "Çok hızlı (2×)">
<!ENTITY mediaPlaybackRate200x2.accesskey "o">
zh-CN:
<!ENTITY mediaPlaybackRate050x2.label "慢 (0.5×)">
<!ENTITY mediaPlaybackRate050x2.accesskey "S">
<!ENTITY mediaPlaybackRate100x2.label "正常">
<!ENTITY mediaPlaybackRate100x2.accesskey "N">
<!ENTITY mediaPlaybackRate125x2.label "快 (1.25×)">
<!ENTITY mediaPlaybackRate125x2.accesskey "F">
<!ENTITY mediaPlaybackRate150x2.label "很快 (1.5×)">
<!ENTITY mediaPlaybackRate150x2.accesskey "a">
<!-- LOCALIZATION NOTE: "Ludicrous" is a reference to the
movie "Space Balls" and is meant to say that this speed is very
fast. -->
<!ENTITY mediaPlaybackRate200x2.label "倍速 (2×)">
<!ENTITY mediaPlaybackRate200x2.accesskey "L">
@chris-chtrusch Are you good with that? If you want to stick with the other two for the locale pack, that's fine, I just need to know ASAP so I can get the beta out this week.
I'm good with whatever you decide. I'll make the locale packs according to what's actually is in the beta.
Let's make it a go. One more string to add is "Per Site Settings" or some such. I don't remember if that's already in there.
I've suggested a French translation for Configure Site Preferences
in https://github.com/classilla/tenfourfox/pull/629#issue-498933432 (in reply for https://github.com/classilla/tenfourfox/issues/328#issuecomment-703730518).
I've also grep
ed it and I've found:
browser/chrome/en-US/locale/browser/sanitize.dtd:<!ENTITY itemSitePreferences.label "Site Preferences">
(located here in the source code). Unfortunately, this string is probably unappropriated because it's the name of a category in the Details
view of the clear your recent history
dialog of about:preferences#privacy
(indeed, the French translation looks weird in a Per Site Settings
-meaning).
Anyway, thank you very much for you patience with my "extemporaneous" suggestions.
The French translation is already in my collection for future domain based strings. I'll have to look at the beta, though, to see what the setting or dialog actually does in oder to determine the context for the translation. There used to be an 'about:permissions' dialog in earlier versions of FF/TFF which may contain useful strings. We can always leave some of these in English if we don't find appropritate strings in Firefox and cannot get community translations in time.
It's not going to be in FPR29. I just wanted to take advantage of the locale window so that the string could already be present. The current plan is a grid by site, user agent and reader mode by default, but we should have strings for those already.
That's a bit vague. It's easier to do translations when you see the feature in action, when you can see what the UI looks like, how much space you have for the words, etc. I want to avoid a situation like we had when we did the MSE toggle and nobody could really grasp beforehand what it was good for. If we want to localize new features that haven't been translated for Firefox already I don't see a way to get meaningful community translations (not just best-guess word-by-word translations) without having a beta with the feature in it.
I'll trust your judgement. Let's just stick with these then. I will add https://github.com/OlgaTPark/tenfourfox/commit/0b6bd29ff1eb12fb6cd811d4cffbca5083009d26 for this release. We can think about a slider later if people like the idea.