Merge branch 'master' into stable
This commit is contained in:
commit
b43747a59c
11
CHANGELOG.md
11
CHANGELOG.md
@ -12,7 +12,14 @@ QoL improvements for me:
|
||||
|
||||
* logging: allow to enable logging at will and export said logs to a file
|
||||
|
||||
### v.4.4.0 (current)
|
||||
### v.4.4.1 (current)
|
||||
|
||||
* Changes to player detection that fix issues with vk
|
||||
* Extension tries to avoid setting aspect ratio pointlessly
|
||||
* (Hopefully) fixed mailto: and reddit compose links.
|
||||
* When reporting bugs, email/reddit template now automatically gathers browser, extension version and OS.
|
||||
|
||||
### v.4.4.0
|
||||
|
||||
* Russian users (and users of other non-latin keyboard layouts) can now use keyboard shortcuts by default, without having to rebind them manually. (NOTE: if you've changed keyboard shortcuts manually, this change will ***NOT*** be applied to your configuration.)
|
||||
* NOTE: when using non-latin layouts, 'zoom' shortcut (`z` by default) uses the position of 'Y' on QWERTY layout.
|
||||
@ -20,6 +27,8 @@ QoL improvements for me:
|
||||
* Changing aspect ratio now resets zooming and panning.
|
||||
* Fixed bug where keyboard shortcuts would work while typing in certain text fields
|
||||
* Fixed minor bug with autodetection
|
||||
* **[4.4.0.1]** fixed mailto and reddit compose links. When reporting issues via e-mail or reddit, extension version, browser
|
||||
and OS are automatically included in email/reddit template.
|
||||
|
||||
### v4.3.1
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ultravidify",
|
||||
"version": "4.4.0",
|
||||
"version": "4.4.1",
|
||||
"description": "Aspect ratio fixer for youtube that works around some people's disability to properly encode 21:9 (and sometimes, 16:9) videos.",
|
||||
"author": "Tamius Han <tamius.han@gmail.com>",
|
||||
"scripts": {
|
||||
|
@ -4,6 +4,7 @@ const BrowserDetect = {
|
||||
firefox: process.env.BROWSER === 'firefox',
|
||||
chrome: process.env.BROWSER === 'chrome',
|
||||
edge: process.env.BROWSER === 'edge',
|
||||
processEnvBrowser: process.env.BROWSER,
|
||||
}
|
||||
|
||||
if (Debug.debug) {
|
||||
|
@ -120,27 +120,29 @@ class Logger {
|
||||
if (!this.conf.fileOptions.enabled || this.temp_disable) {
|
||||
return false;
|
||||
}
|
||||
if (component.length ) {
|
||||
for (const c in component) {
|
||||
if (this.conf.fileOptions[component]) {
|
||||
return this.conf.fileOptions[component];
|
||||
if (Array.isArray(component) && component.length ) {
|
||||
for (const c of component) {
|
||||
if (this.conf.fileOptions[c]) {
|
||||
return this.conf.fileOptions[c];
|
||||
}
|
||||
}
|
||||
}
|
||||
return this.conf.fileOptions[component];
|
||||
} else {
|
||||
return this.conf.fileOptions[component];
|
||||
}
|
||||
}
|
||||
canLogConsole(component) {
|
||||
if (!this.conf.consoleOptions.enabled || this.temp_disable) {
|
||||
return false;
|
||||
}
|
||||
if (Array.isArray(component) && component.length) {
|
||||
for (const c in component) {
|
||||
if (this.conf.consoleOptions[component]) {
|
||||
return this.conf.consoleOptions[component];
|
||||
for (const c of component) {
|
||||
if (this.conf.consoleOptions[c]) {
|
||||
return this.conf.consoleOptions[c];
|
||||
}
|
||||
}
|
||||
}
|
||||
return this.conf.consoleOptions[component];
|
||||
} else {
|
||||
return this.conf.consoleOptions[component];
|
||||
}
|
||||
}
|
||||
|
||||
// level is unused as of now, but this may change in the future
|
||||
|
@ -489,7 +489,7 @@ class ArDetector {
|
||||
}
|
||||
this.logger.log('info', 'debug', `%c[ArDetect::processAr] <@${this.arid}> Triggering aspect ratio change. New aspect ratio: ${trueAr}`, _ard_console_change);
|
||||
|
||||
this.conf.resizer.setAr({type: AspectRatio.Automatic, ratio: trueAr}, {type: AspectRatio.Automatic, ratio: trueAr});
|
||||
this.conf.resizer.updateAr({type: AspectRatio.Automatic, ratio: trueAr}, {type: AspectRatio.Automatic, ratio: trueAr});
|
||||
}
|
||||
|
||||
clearImageData(id) {
|
||||
@ -582,7 +582,7 @@ class ArDetector {
|
||||
// da je letterbox izginil.
|
||||
// If we don't detect letterbox, we reset aspect ratio to aspect ratio of the video file. The aspect ratio could
|
||||
// have been corrected manually. It's also possible that letterbox (that was there before) disappeared.
|
||||
this.conf.resizer.setAr({type: AspectRatio.Automatic, ratio: this.getDefaultAr()});
|
||||
this.conf.resizer.updateAr({type: AspectRatio.Automatic, ratio: this.getDefaultAr()});
|
||||
this.guardLine.reset();
|
||||
this.noLetterboxCanvasReset = true;
|
||||
|
||||
|
@ -192,6 +192,16 @@ class PlayerData {
|
||||
return false;
|
||||
}
|
||||
|
||||
updatePlayerDimensions(element) {
|
||||
const isFullScreen = PlayerData.isFullScreen();
|
||||
|
||||
this.dimensions = {
|
||||
width: element.offsetWidth,
|
||||
height: element.offsetHeight,
|
||||
fullscreen: isFullScreen
|
||||
};
|
||||
}
|
||||
|
||||
getPlayer() {
|
||||
const host = window.location.host;
|
||||
let element = this.video.parentNode;
|
||||
@ -223,6 +233,7 @@ class PlayerData {
|
||||
element = element.parentNode;
|
||||
}
|
||||
if (element) {
|
||||
this.updatePlayerDimensions(element);
|
||||
return element;
|
||||
}
|
||||
} else if (this.settings.active.sites[host].DOM.player.querySelectors) {
|
||||
@ -256,7 +267,9 @@ class PlayerData {
|
||||
if (elementQ.length) {
|
||||
// return element with biggest score
|
||||
// if video player has not been found, proceed to automatic detection
|
||||
return elementQ.sort( (a,b) => b.score - a.score)[0].element;
|
||||
const playerElement = elementQ.sort( (a,b) => b.score - a.score)[0].element;
|
||||
this.updatePlayerDimensions(playerElement);
|
||||
return playerElement;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -283,17 +296,20 @@ class PlayerData {
|
||||
|
||||
score = 100;
|
||||
|
||||
|
||||
if (element.id.indexOf('player') !== -1) { // prefer elements with 'player' in id
|
||||
score += 75;
|
||||
}
|
||||
// This entire section is disabled because of some bullshit on vk and some shady CIS streaming sites.
|
||||
// Possibly removal of this criteria is not necessary, because there was also a bug with force player
|
||||
//
|
||||
|
||||
// if (element.id.indexOf('player') !== -1) { // prefer elements with 'player' in id
|
||||
// score += 75;
|
||||
// }
|
||||
// this has only been observed on steam
|
||||
if (element.id.indexOf('movie') !== -1) {
|
||||
score += 75;
|
||||
}
|
||||
if (element.classList.toString().indexOf('player') !== -1) { // prefer elements with 'player' in classlist, but a bit less than id
|
||||
score += 50;
|
||||
}
|
||||
// if (element.id.indexOf('movie') !== -1) {
|
||||
// score += 75;
|
||||
// }
|
||||
// if (element.classList.toString().indexOf('player') !== -1) { // prefer elements with 'player' in classlist, but a bit less than id
|
||||
// score += 50;
|
||||
// }
|
||||
score -= scorePenalty++; // prefer elements closer to <video>
|
||||
|
||||
elementQ.push({
|
||||
@ -307,7 +323,9 @@ class PlayerData {
|
||||
|
||||
if (elementQ.length) {
|
||||
// return element with biggest score
|
||||
return elementQ.sort( (a,b) => b.score - a.score)[0].element;
|
||||
const playerElement = elementQ.sort( (a,b) => b.score - a.score)[0].element;
|
||||
this.updatePlayerDimensions(playerElement);
|
||||
return playerElement;
|
||||
}
|
||||
|
||||
// if no candidates were found, something is obviously very, _very_ wrong.
|
||||
@ -325,7 +343,7 @@ class PlayerData {
|
||||
}
|
||||
|
||||
forceRefreshPlayerElement() {
|
||||
this.checkPlayerSizeChange();
|
||||
this.getPlayer();
|
||||
}
|
||||
|
||||
checkPlayerSizeChange(){
|
||||
|
@ -120,6 +120,12 @@ class Resizer {
|
||||
}
|
||||
|
||||
|
||||
updateAr(ar) {
|
||||
if (!this.lastAr || ar.type !== this.lastAr.type || ar.ratio !== this.lastAr.ratio) {
|
||||
this.setAr(ar);
|
||||
}
|
||||
}
|
||||
|
||||
setAr(ar, lastAr) {
|
||||
if (this.destroyed) {
|
||||
return;
|
||||
@ -408,27 +414,32 @@ class Resizer {
|
||||
// mostly internal stuff
|
||||
|
||||
computeOffsets(stretchFactors){
|
||||
|
||||
this.logger.log('info', 'debug', "[Resizer::computeOffsets] <rid:"+this.resizerId+"> video will be aligned to ", this.settings.active.sites['@global'].videoAlignment);
|
||||
|
||||
const wdiff = this.conf.player.dimensions.width - this.conf.video.offsetWidth;
|
||||
const hdiff = this.conf.player.dimensions.height - this.conf.video.offsetHeight;
|
||||
|
||||
if (wdiff < 0 && hdiff < 0 && this.zoom.scale > 1) {
|
||||
this.conf.player.re
|
||||
}
|
||||
|
||||
const wdiffAfterZoom = this.conf.video.offsetWidth * stretchFactors.xFactor - this.conf.player.dimensions.width;
|
||||
const hdiffAfterZoom = this.conf.video.offsetHeight * stretchFactors.yFactor - this.conf.player.dimensions.height;
|
||||
|
||||
var translate = {
|
||||
const translate = {
|
||||
x: wdiff * 0.5,
|
||||
y: hdiff * 0.5,
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
if (this.pan) {
|
||||
// don't offset when video is smaller than player
|
||||
if(wdiffAfterZoom < 0 && hdiffAfterZoom < 0) {
|
||||
return translate;
|
||||
if(wdiffAfterZoom >= 0 || hdiffAfterZoom >= 0) {
|
||||
translate.x += wdiffAfterZoom * this.pan.relativeOffsetX * this.zoom.scale;
|
||||
translate.y += hdiffAfterZoom * this.pan.relativeOffsetY * this.zoom.scale;
|
||||
}
|
||||
translate.x += wdiffAfterZoom * this.pan.relativeOffsetX * this.zoom.scale;
|
||||
translate.y += hdiffAfterZoom * this.pan.relativeOffsetY * this.zoom.scale;
|
||||
} else {
|
||||
if (this.videoAlignment == VideoAlignment.Left) {
|
||||
translate.x += wdiffAfterZoom * 0.5;
|
||||
@ -437,15 +448,18 @@ class Resizer {
|
||||
translate.x -= wdiffAfterZoom * 0.5;
|
||||
}
|
||||
}
|
||||
|
||||
this.logger.log('info', 'debug', "[Resizer::_res_computeOffsets] <rid:"+this.resizerId+"> calculated offsets:\n\n",
|
||||
'---- data in ----\n',
|
||||
'player dimensions:', {w: this.conf.player.dimensions.width, h: this.conf.player.dimensions.height},
|
||||
'video dimensions: ', {w: this.conf.video.offsetWidth, h: this.conf.video.offsetHeight},
|
||||
'stretch factors: ', stretchFactors,
|
||||
'pan & zoom: ', this.pan, this.zoom,
|
||||
|
||||
this.logger.log('info', ['debug', 'resizer'], "[Resizer::_res_computeOffsets] <rid:"+this.resizerId+"> calculated offsets:\n\n",
|
||||
'---- data in ----',
|
||||
'\nplayer dimensions: ', {w: this.conf.player.dimensions.width, h: this.conf.player.dimensions.height},
|
||||
'\nvideo dimensions: ', {w: this.conf.video.offsetWidth, h: this.conf.video.offsetHeight},
|
||||
'\nstretch factors: ', stretchFactors,
|
||||
'\npan & zoom: ', this.pan, this.zoom,
|
||||
'\nwdiff, hdiff: ', wdiff, 'x', hdiff,
|
||||
'\nwdiff, hdiffAfterZoom:', wdiffAfterZoom, 'x', hdiffAfterZoom,
|
||||
'\n\n---- data out ----\n',
|
||||
'translate:', translate);
|
||||
console.trace();
|
||||
|
||||
return translate;
|
||||
}
|
||||
@ -513,7 +527,7 @@ class Resizer {
|
||||
return;
|
||||
}
|
||||
|
||||
this.logger.log('info', 'resizer', "[Resizer::applyCss] <rid:"+this.resizerId+"> will apply css.", {stretchFactors, translate});
|
||||
this.logger.log('info', ['debug', 'resizer'], "[Resizer::applyCss] <rid:"+this.resizerId+"> will apply css.", {stretchFactors, translate});
|
||||
|
||||
// save stuff for quick tests (before we turn numbers into css values):
|
||||
this.currentVideoSettings = {
|
||||
|
@ -44,7 +44,7 @@ class UW {
|
||||
if (!this.logger) {
|
||||
const loggingOptions = {
|
||||
logToFile: false,
|
||||
logToConsole: true,
|
||||
logToConsole: false,
|
||||
fileOptions: {
|
||||
// really the same stuff as consoleOptions
|
||||
},
|
||||
|
@ -2,7 +2,7 @@
|
||||
"manifest_version": 2,
|
||||
"name": "Ultrawidify",
|
||||
"description": "Removes black bars on ultrawide videos and offers advanced options to fix aspect ratio.",
|
||||
"version": "4.4.0",
|
||||
"version": "4.4.1",
|
||||
"applications": {
|
||||
"gecko": {
|
||||
"id": "{cf02b1a7-a01a-4e37-a609-516a283f1ed3}"
|
||||
|
@ -5,8 +5,8 @@
|
||||
<p><b>Having an issue?</b> Report <strike>undocumented features</strike> bugs using one of the following options:
|
||||
<ul>
|
||||
<li> <a target="_blank" href="https://github.com/xternal7/ultrawidify/issues"><b>Github</b></a> <b>(strongly preferred)</b><br/></li>
|
||||
<li>PM me on <a target="_blank" href="https://www.reddit.com/message/compose?to=xternal7&subject=[Ultrawidify]%20ENTER%20SUMMARY%20OF%20YOUR%20PROBLEM%20HERE&message=Describe+your+issue+in+more+detail.+Don%27t+forget+to+include%3A%0D%0A%2A+Extension+version%0D%0A%2A+Browser%0D%0A%2A+Operating+system%0D%0A%2A+Other+extensions+that+could+possibly+interfere%0D%0A%0D%0AIf+you%27re+reporting+an+issue+with+automatic+aspect+ratio+detection%2C+please+also+include+the+following+%28if+possible%29%3A%0D%0A%2A+model+and+make+of+your+CPU%0D%0A%2A+amount+of+RAM">reddit</a><br/></li>
|
||||
<li>Email: <a target="_blank" href="mailto:tamius.han@gmail.com?subject=%5BUltrawidify%5D+ENTER+SUMMARY+OF+YOUR+ISSUE+HERE&body=Describe+your+issue+in+more+detail.+Don%27t+forget+to+include%3A%0D%0A%2A+Extension+version%0D%0A%2A+Browser%0D%0A%2A+Operating+system%0D%0A%2A+Other+extensions+that+could+possibly+interfere%0D%0A%0D%0AIf+you%27re+reporting+an+issue+with+automatic+aspect+ratio+detection%2C+please+also+include+the+following+%28if+possible%29%3A%0D%0A%2A+model+and+make+of+your+CPU%0D%0A%2A+amount+of+RAM">tamius.han@gmail.com</a></li>
|
||||
<li>Email: <a target="_blank" :href="mailtoLink">tamius.han@gmail.com</a></li>
|
||||
<li>PM me on <a target="_blank" :href="redditLink">reddit</a><br/></li>
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
@ -32,11 +32,34 @@
|
||||
|
||||
|
||||
<script>
|
||||
import BrowserDetect from '../ext/conf/BrowserDetect';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
addonVersion: browser.runtime.getManifest().version || chrome.runtime.getManifest().version,
|
||||
mailtoLink: 'mailto:tamius.han@gmail.com',
|
||||
redditLink: '',
|
||||
}
|
||||
},
|
||||
created() {
|
||||
const messageTemplate = encodeURIComponent(
|
||||
`Describe your issue in more detail. In case of misaligned videos, please provide screenshots. When reporting\
|
||||
issues with autodetection not detecting aspect ratio correctly, please provide a link with timestamp to the\
|
||||
problematic video at the time where the problem happens. You may delete this paragraph, as it's only a template.
|
||||
|
||||
|
||||
Extension info (do not change or remove):
|
||||
* Extension version: ${this.addonVersion}
|
||||
* Browser (env): ${BrowserDetect.processEnvBrowser}
|
||||
|
||||
Browser-related stuff (please ensure this section is correct):
|
||||
* User Agent string: ${window.navigator.userAgent}
|
||||
* vendor: ${window.navigator.vendor}
|
||||
* Operating system: ${window.navigator.platform}
|
||||
`
|
||||
);
|
||||
this.mailtoLink = `mailto:tamius.han@gmail.com?subject=%5BUltrawidify%5D%20ENTER%20SUMMARY%20OF%20YOUR%20ISSUE%20HERE&body=${messageTemplate}`;
|
||||
this.redditLink = `https://www.reddit.com/message/compose?to=xternal7&subject=[Ultrawidify]%20ENTER%20SUMMARY%20OF%20YOUR%20PROBLEM%20HERE&message=${messageTemplate}`;
|
||||
}
|
||||
}
|
||||
</script>
|
@ -7,8 +7,8 @@
|
||||
<span class="label">Having an issue?</span><br/> Report <strike>undocumented features</strike> bugs using one of the following options:
|
||||
<ul>
|
||||
<li> <a target="_blank" href="https://github.com/xternal7/ultrawidify/issues"><b>Github (preferred)</b></a><br/></li>
|
||||
<li>PM me on <a target="_blank" href="https://www.reddit.com/message/compose?to=xternal7&subject=[Ultrawidify]%20ENTER%20SUMMARY%20OF%20YOUR%20PROBLEM%20HERE&message=Describe+your+issue+in+more+detail.+Don%27t+forget+to+include%3A%0D%0A%2A+Extension+version%0D%0A%2A+Browser%0D%0A%2A+Operating+system%0D%0A%2A+Other+extensions+that+could+possibly+interfere%0D%0A%0D%0AIf+you%27re+reporting+an+issue+with+automatic+aspect+ratio+detection%2C+please+also+include+the+following+%28if+possible%29%3A%0D%0A%2A+model+and+make+of+your+CPU%0D%0A%2A+amount+of+RAM">reddit</a><br/></li>
|
||||
<li>Email: <a target="_blank" href="mailto:tamius.han@gmail.com?subject=%5BUltrawidify%5D+ENTER+SUMMARY+OF+YOUR+ISSUE+HERE&body=Describe+your+issue+in+more+detail.+Don%27t+forget+to+include%3A%0D%0A%2A+Extension+version%0D%0A%2A+Browser%0D%0A%2A+Operating+system%0D%0A%2A+Other+extensions+that+could+possibly+interfere%0D%0A%0D%0AIf+you%27re+reporting+an+issue+with+automatic+aspect+ratio+detection%2C+please+also+include+the+following+%28if+possible%29%3A%0D%0A%2A+model+and+make+of+your+CPU%0D%0A%2A+amount+of+RAM">tamius.han@gmail.com</a></li>
|
||||
<li>Email: <a target="_blank" :href="mailtoLink">tamius.han@gmail.com</a></li>
|
||||
<li>PM me on <a target="_blank" :href="redditLink">reddit</a><br/></li>
|
||||
</ul>
|
||||
<br/>
|
||||
If reporting perfomrance/RAM usage issue, please include your CPU model and RAM.
|
||||
@ -19,11 +19,34 @@
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import BrowserDetect from '../../ext/conf/BrowserDetect';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
addonVersion: browser.runtime.getManifest().version || chrome.runtime.getManifest().version,
|
||||
mailtoLink: 'mailto:tamius.han@gmail.com',
|
||||
redditLink: '',
|
||||
}
|
||||
},
|
||||
created() {
|
||||
const messageTemplate = encodeURIComponent(
|
||||
`Describe your issue in more detail. In case of misaligned videos, please provide screenshots. When reporting\
|
||||
issues with autodetection not detecting aspect ratio correctly, please provide a link with timestamp to the\
|
||||
problematic video at the time where the problem happens. You may delete this paragraph, as it's only a template.
|
||||
|
||||
|
||||
Extension info (do not change or remove):
|
||||
* Extension version: ${this.addonVersion}
|
||||
* Browser (env): ${BrowserDetect.processEnvBrowser}
|
||||
|
||||
Browser-related stuff (please ensure this section is correct):
|
||||
* User Agent string: ${window.navigator.userAgent}
|
||||
* vendor: ${window.navigator.vendor}
|
||||
* Operating system: ${window.navigator.platform}
|
||||
`
|
||||
);
|
||||
this.mailtoLink = `mailto:tamius.han@gmail.com?subject=%5BUltrawidify%5D%20ENTER%20SUMMARY%20OF%20YOUR%20ISSUE%20HERE&body=${messageTemplate}`;
|
||||
this.redditLink = `https://www.reddit.com/message/compose?to=xternal7&subject=[Ultrawidify]%20ENTER%20SUMMARY%20OF%20YOUR%20PROBLEM%20HERE&message=${messageTemplate}`;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
@ -2,17 +2,12 @@
|
||||
<div>
|
||||
<h2>What's new</h2>
|
||||
<p>Full changelog for older versions <a href="https://github.com/xternal7/ultrawidify/blob/master/CHANGELOG.md">is available here</a>.</p>
|
||||
<p class="label">4.4.0</p>
|
||||
<p class="label">4.4.1</p>
|
||||
<ul>
|
||||
<li>Russian users (and users of other non-latin keyboard layouts) can now use keyboard shortcuts by default,
|
||||
without having to rebind them manually. <b>NOTE: this change will only be applied to users who have <i>NOT</i>
|
||||
modified their keyboard shortcuts.</b></li>
|
||||
<li>NOTE: when using non-latin layouts, 'zoom' shortcut (`z` by default) uses the position of 'Y' on QWERTY layout.</li>
|
||||
<li>Ability to preserve aspect ratio between different videos (applies to current page and doesn't survive proper
|
||||
page reloads)</li>
|
||||
<li>Changing aspect ratio now resets zooming and panning.</li>
|
||||
<li>Fixed bug where keyboard shortcuts would work while typing in certain text fields</li>
|
||||
<li>Fixed a minor bug with autodetection</li>
|
||||
<li>Changes to player detection that fix issues with vk</li>
|
||||
<li>Extension tries to avoid setting aspect ratio pointlessly</li>
|
||||
<li>Fixed (hopefully) mailto: and reddit compose links.</li>
|
||||
<li>When reporting bugs, email/reddit template now automatically gathers browser, extension version and OS.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
|
Loading…
Reference in New Issue
Block a user