Merge branch 'testing'
This commit is contained in:
commit
0c6355e370
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ultravidify",
|
"name": "ultravidify",
|
||||||
"version": "4.4.1",
|
"version": "4.4.2",
|
||||||
"description": "Aspect ratio fixer for youtube that works around some people's disability to properly encode 21:9 (and sometimes, 16:9) videos.",
|
"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>",
|
"author": "Tamius Han <tamius.han@gmail.com>",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -66,14 +66,14 @@ node scripts/build-zip.js chrome
|
|||||||
# UPLOAD TO WEB SERVER
|
# UPLOAD TO WEB SERVER
|
||||||
######################################
|
######################################
|
||||||
|
|
||||||
# add ssh key, if not added
|
# # add ssh key, if not added
|
||||||
if [ -z "$SSH_AUTH_SOCK" ] ; then
|
# if [ -z "$SSH_AUTH_SOCK" ] ; then
|
||||||
eval `ssh-agent -s`
|
# eval `ssh-agent -s`
|
||||||
ssh-add
|
# ssh-add
|
||||||
fi
|
# fi
|
||||||
|
|
||||||
# push all built stuff to the server
|
# # push all built stuff to the server
|
||||||
scp -r ./build-zip/* "ultrawidify-uploader@${RELEASE_SERVER}:${RELEASE_DIRECTORY}${BUILD_CHANNEL_DIRECTORY}"
|
# scp -r ./build-zip/* "ultrawidify-uploader@${RELEASE_SERVER}:${RELEASE_DIRECTORY}${BUILD_CHANNEL_DIRECTORY}"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="flex action-name">
|
<div class="flex action-name">
|
||||||
<span v-if="action.cmd && action.cmd.length > 1 || action.cmd[0].action === 'set-ar' && action.cmd[0].arg === AspectRatio.Fixed" class="icon red" @click="removeAction()">🗙</span>
|
<span v-if="action.cmd && action.cmd.length > 1 || action.cmd[0].action === 'set-ar' && action.userAdded || (action.cmd[0].arg === AspectRatio.Fixed)" class="icon red" @click="removeAction()">🗙</span>
|
||||||
<span v-else class="icon transparent">🗙</span>
|
<span v-else class="icon transparent">🗙</span>
|
||||||
<span class="icon" @click="editAction()">🖉</span>
|
<span class="icon" @click="editAction()">🖉</span>
|
||||||
{{action.name}}
|
{{action.name}}
|
||||||
|
@ -3,6 +3,8 @@ var Stretch = Object.freeze({
|
|||||||
Basic: 1,
|
Basic: 1,
|
||||||
Hybrid: 2,
|
Hybrid: 2,
|
||||||
Conditional: 3,
|
Conditional: 3,
|
||||||
|
Fixed: 4,
|
||||||
|
FixedSource: 5,
|
||||||
Default: -1
|
Default: -1
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -72,6 +72,20 @@ var ActionList = {
|
|||||||
},{
|
},{
|
||||||
name: 'Thin borders',
|
name: 'Thin borders',
|
||||||
arg: Stretch.Conditional,
|
arg: Stretch.Conditional,
|
||||||
|
},{
|
||||||
|
name: 'Fixed (source)',
|
||||||
|
arg: Stretch.FixedSource,
|
||||||
|
customArg: true,
|
||||||
|
scopes: {
|
||||||
|
page: true,
|
||||||
|
}
|
||||||
|
},{
|
||||||
|
name: 'Fixed (displayed)',
|
||||||
|
arg: Stretch.Fixed,
|
||||||
|
customArg: true,
|
||||||
|
scopes: {
|
||||||
|
page: true,
|
||||||
|
}
|
||||||
},{
|
},{
|
||||||
name: 'Default',
|
name: 'Default',
|
||||||
arg: Stretch.Default,
|
arg: Stretch.Default,
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
// How to use:
|
// How to use:
|
||||||
// version: {ExtensionConf object, but only properties that get overwritten}
|
// version: {ExtensionConf object, but only properties that get overwritten}
|
||||||
|
import Stretch from '../../common/enums/stretch.enum';
|
||||||
|
|
||||||
const ExtensionConfPatch = [
|
const ExtensionConfPatch = [
|
||||||
{
|
{
|
||||||
@ -146,6 +147,7 @@ const ExtensionConfPatch = [
|
|||||||
show: true,
|
show: true,
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
|
userAdded: true,
|
||||||
name: 'Persist crop while on page',
|
name: 'Persist crop while on page',
|
||||||
label: 'Until page load',
|
label: 'Until page load',
|
||||||
cmd: [{
|
cmd: [{
|
||||||
@ -164,6 +166,7 @@ const ExtensionConfPatch = [
|
|||||||
show: true,
|
show: true,
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
|
userAdded: true,
|
||||||
name: 'Persist crop for current session',
|
name: 'Persist crop for current session',
|
||||||
label: 'Current session',
|
label: 'Current session',
|
||||||
cmd: [{
|
cmd: [{
|
||||||
@ -252,6 +255,50 @@ const ExtensionConfPatch = [
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
}, {
|
||||||
|
forVersion: '4.4.2',
|
||||||
|
updateFn: (userOptions, defaultOptions) => {
|
||||||
|
try {
|
||||||
|
userOptions.actions.push(
|
||||||
|
{
|
||||||
|
name: 'Stretch source to 4:3',
|
||||||
|
label: '4:3 stretch (src)',
|
||||||
|
cmd: [{
|
||||||
|
action: 'set-stretch',
|
||||||
|
arg: Stretch.FixedSource,
|
||||||
|
customArg: 1.33,
|
||||||
|
}],
|
||||||
|
scopes: {
|
||||||
|
page: {
|
||||||
|
show: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
playerUi: {
|
||||||
|
show: true,
|
||||||
|
path: 'crop'
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
name: 'Stretch source to 16:9',
|
||||||
|
label: '16:9 stretch (src)',
|
||||||
|
cmd: [{
|
||||||
|
action: 'set-stretch',
|
||||||
|
arg: Stretch.FixedSource,
|
||||||
|
customArg: 1.77,
|
||||||
|
}],
|
||||||
|
scopes: {
|
||||||
|
page: {
|
||||||
|
show: true,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
playerUi: {
|
||||||
|
show: true,
|
||||||
|
path: 'crop'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
console.error("PROBLEM APPLYING SETTINGS", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -285,6 +285,7 @@ var ExtensionConf = {
|
|||||||
path: 'crop'
|
path: 'crop'
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
|
userAdded: true,
|
||||||
name: 'Set aspect ratio to 16:9',
|
name: 'Set aspect ratio to 16:9',
|
||||||
label: '16:9',
|
label: '16:9',
|
||||||
cmd: [{
|
cmd: [{
|
||||||
@ -312,6 +313,7 @@ var ExtensionConf = {
|
|||||||
path: 'crop'
|
path: 'crop'
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
|
userAdded: true,
|
||||||
name: 'Set aspect ratio to 21:9 (2.39:1)',
|
name: 'Set aspect ratio to 21:9 (2.39:1)',
|
||||||
label: '21:9',
|
label: '21:9',
|
||||||
cmd: [{
|
cmd: [{
|
||||||
@ -339,6 +341,7 @@ var ExtensionConf = {
|
|||||||
path: 'crop'
|
path: 'crop'
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
|
userAdded: true,
|
||||||
name: 'Set aspect ratio to 18:9',
|
name: 'Set aspect ratio to 18:9',
|
||||||
label: '18:9',
|
label: '18:9',
|
||||||
cmd: [{
|
cmd: [{
|
||||||
@ -651,6 +654,41 @@ var ExtensionConf = {
|
|||||||
show: true,
|
show: true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}, // NEW OPTIONS
|
||||||
|
{
|
||||||
|
name: 'Stretch source to 4:3',
|
||||||
|
label: '4:3 stretch (src)',
|
||||||
|
cmd: [{
|
||||||
|
action: 'set-stretch',
|
||||||
|
arg: Stretch.FixedSource,
|
||||||
|
customArg: 1.33,
|
||||||
|
}],
|
||||||
|
scopes: {
|
||||||
|
page: {
|
||||||
|
show: true,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
playerUi: {
|
||||||
|
show: true,
|
||||||
|
path: 'crop'
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
name: 'Stretch source to 16:9',
|
||||||
|
label: '16:9 stretch (src)',
|
||||||
|
cmd: [{
|
||||||
|
action: 'set-stretch',
|
||||||
|
arg: Stretch.FixedSource,
|
||||||
|
customArg: 1.77,
|
||||||
|
}],
|
||||||
|
scopes: {
|
||||||
|
page: {
|
||||||
|
show: true,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
playerUi: {
|
||||||
|
show: true,
|
||||||
|
path: 'crop'
|
||||||
|
}
|
||||||
},
|
},
|
||||||
//
|
//
|
||||||
// A L I G N M E N T
|
// A L I G N M E N T
|
||||||
@ -920,8 +958,8 @@ var ExtensionConf = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
whatsNewChecked: true,
|
whatsNewChecked: true,
|
||||||
// -----------------------------------------
|
// -----------------------------------------
|
||||||
// ::: SITE CONFIGURATION :::
|
// ::: SITE CONFIGURATION :::
|
||||||
// -----------------------------------------
|
// -----------------------------------------
|
||||||
|
@ -65,7 +65,7 @@ class CommsClient {
|
|||||||
this.pageInfo.setVideoAlignment(message.arg, message.playing);
|
this.pageInfo.setVideoAlignment(message.arg, message.playing);
|
||||||
this.pageInfo.restoreAr();
|
this.pageInfo.restoreAr();
|
||||||
} else if (message.cmd === "set-stretch") {
|
} else if (message.cmd === "set-stretch") {
|
||||||
this.pageInfo.setStretchMode(message.arg, message.playing);
|
this.pageInfo.setStretchMode(message.arg, message.playing, message.customArg);
|
||||||
} else if (message.cmd === 'set-keyboard') {
|
} else if (message.cmd === 'set-keyboard') {
|
||||||
this.pageInfo.setKeyboardShortcutsEnabled(message.arg)
|
this.pageInfo.setKeyboardShortcutsEnabled(message.arg)
|
||||||
} else if (message.cmd === "autoar-start") {
|
} else if (message.cmd === "autoar-start") {
|
||||||
|
@ -490,18 +490,18 @@ class PageInfo {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setStretchMode(sm, playingOnly){
|
setStretchMode(stretchMode, playingOnly, fixedStretchRatio){
|
||||||
// TODO: find a way to only change aspect ratio for one video
|
// TODO: find a way to only change aspect ratio for one video
|
||||||
|
|
||||||
if (playingOnly) {
|
if (playingOnly) {
|
||||||
for(var vd of this.videos){
|
for(var vd of this.videos){
|
||||||
if (vd.isPlaying()) {
|
if (vd.isPlaying()) {
|
||||||
vd.setStretchMode(sm)
|
vd.setStretchMode(stretchMode, fixedStretchRatio)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for(var vd of this.videos){
|
for(var vd of this.videos){
|
||||||
vd.setStretchMode(sm)
|
vd.setStretchMode(stretchMode, fixedStretchRatio)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -359,11 +359,11 @@ class VideoData {
|
|||||||
this.resizer.restore();
|
this.resizer.restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
setStretchMode(stretchMode){
|
setStretchMode(stretchMode, fixedStretchRatio){
|
||||||
if (this.invalid) {
|
if (this.invalid) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.resizer.setStretchMode(stretchMode);
|
this.resizer.setStretchMode(stretchMode, fixedStretchRatio);
|
||||||
}
|
}
|
||||||
|
|
||||||
setZoom(zoomLevel, no_announce){
|
setZoom(zoomLevel, no_announce){
|
||||||
|
@ -242,7 +242,9 @@ class Resizer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// do stretch thingy
|
// do stretch thingy
|
||||||
if (this.stretcher.mode === Stretch.NoStretch || this.stretcher.mode === Stretch.Conditional){
|
if (this.stretcher.mode === Stretch.NoStretch
|
||||||
|
|| this.stretcher.mode === Stretch.Conditional
|
||||||
|
|| this.stretcher.mode === Stretch.FixedSource){
|
||||||
var stretchFactors = this.scaler.calculateCrop(ar);
|
var stretchFactors = this.scaler.calculateCrop(ar);
|
||||||
|
|
||||||
if(! stretchFactors || stretchFactors.error){
|
if(! stretchFactors || stretchFactors.error){
|
||||||
@ -255,15 +257,23 @@ class Resizer {
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(this.stretcher.mode === Stretch.Conditional){
|
|
||||||
this.stretcher.applyConditionalStretch(stretchFactors, ar.ratio);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.logger.log('info', 'debug', "[Resizer::setAr] Processed stretch factors for ", this.stretcher.mode === Stretch.NoStretch ? 'stretch-free crop.' : 'crop with conditional stretch.', 'Stretch factors are:', stretchFactors);
|
if (this.stretcher.mode === Stretch.Conditional){
|
||||||
|
this.stretcher.applyConditionalStretch(stretchFactors, ar.ratio);
|
||||||
|
} else if (this.stretcher.mode === Stretch.FixedSource) {
|
||||||
|
this.stretcher.applyStretchFixedSource(stretchFactors);
|
||||||
|
}
|
||||||
|
this.logger.log('info', 'debug', "[Resizer::setAr] Processed stretch factors for ",
|
||||||
|
this.stretcher.mode === Stretch.NoStretch ? 'stretch-free crop.' :
|
||||||
|
this.stretcher.mode === Stretch.Conditional ? 'crop with conditional stretch.' : 'crop with fixed stretch',
|
||||||
|
'Stretch factors are:', stretchFactors
|
||||||
|
);
|
||||||
|
|
||||||
} else if (this.stretcher.mode === Stretch.Hybrid) {
|
} else if (this.stretcher.mode === Stretch.Hybrid) {
|
||||||
var stretchFactors = this.stretcher.calculateStretch(ar.ratio);
|
var stretchFactors = this.stretcher.calculateStretch(ar.ratio);
|
||||||
this.logger.log('info', 'debug', '[Resizer::setAr] Processed stretch factors for hybrid stretch/crop. Stretch factors are:', stretchFactors);
|
this.logger.log('info', 'debug', '[Resizer::setAr] Processed stretch factors for hybrid stretch/crop. Stretch factors are:', stretchFactors);
|
||||||
|
} else if (this.stretcher.mode === Stretch.Fixed) {
|
||||||
|
var stretchFactors = this.stretchFactors.calculateStretchFixed(ar.ratio)
|
||||||
} else if (this.stretcher.mode === Stretch.Basic) {
|
} else if (this.stretcher.mode === Stretch.Basic) {
|
||||||
var stretchFactors = this.stretcher.calculateBasicStretch();
|
var stretchFactors = this.stretcher.calculateBasicStretch();
|
||||||
this.logger.log('info', 'debug', '[Resizer::setAr] Processed stretch factors for basic stretch. Stretch factors are:', stretchFactors);
|
this.logger.log('info', 'debug', '[Resizer::setAr] Processed stretch factors for basic stretch. Stretch factors are:', stretchFactors);
|
||||||
@ -296,8 +306,8 @@ class Resizer {
|
|||||||
return this.lastAr;
|
return this.lastAr;
|
||||||
}
|
}
|
||||||
|
|
||||||
setStretchMode(stretchMode){
|
setStretchMode(stretchMode, fixedStretchRatio){
|
||||||
this.stretcher.setStretchMode(stretchMode);
|
this.stretcher.setStretchMode(stretchMode, fixedStretchRatio);
|
||||||
this.restore();
|
this.restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -459,8 +469,6 @@ class Resizer {
|
|||||||
'\nwdiff, hdiffAfterZoom:', wdiffAfterZoom, 'x', hdiffAfterZoom,
|
'\nwdiff, hdiffAfterZoom:', wdiffAfterZoom, 'x', hdiffAfterZoom,
|
||||||
'\n\n---- data out ----\n',
|
'\n\n---- data out ----\n',
|
||||||
'translate:', translate);
|
'translate:', translate);
|
||||||
console.trace();
|
|
||||||
|
|
||||||
return translate;
|
return translate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,12 +15,16 @@ class Stretcher {
|
|||||||
this.logger = videoData.logger;
|
this.logger = videoData.logger;
|
||||||
this.settings = videoData.settings;
|
this.settings = videoData.settings;
|
||||||
this.mode = this.settings.getDefaultStretchMode(window.location.hostname);
|
this.mode = this.settings.getDefaultStretchMode(window.location.hostname);
|
||||||
|
this.fixedStretchRatio = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
setStretchMode(stretchMode) {
|
setStretchMode(stretchMode, fixedStretchRatio) {
|
||||||
if (stretchMode === Stretch.Default) {
|
if (stretchMode === Stretch.Default) {
|
||||||
this.mode = this.settings.getDefaultStretchMode(window.location.hostname);
|
this.mode = this.settings.getDefaultStretchMode(window.location.hostname);
|
||||||
} else {
|
} else {
|
||||||
|
if (stretchMode === Stretch.Fixed || stretchMode == Stretch.FixedSource) {
|
||||||
|
this.fixedStretchRatio = fixedStretchRatio;
|
||||||
|
}
|
||||||
this.mode = stretchMode;
|
this.mode = stretchMode;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -95,9 +99,43 @@ class Stretcher {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
calculateStretch(actualAr) {
|
applyStretchFixedSource(postCropStretchFactors) {
|
||||||
var playerAr = this.conf.player.dimensions.width / this.conf.player.dimensions.height;
|
const videoAr = this.conf.video.videoWidth / this.conf.video.videoHeight;
|
||||||
var videoAr = this.conf.video.videoWidth / this.conf.video.videoHeight;
|
const playerAr = this.conf.player.dimensions.width / this.conf.player.dimensions.height;
|
||||||
|
|
||||||
|
const squezeFactor = this.fixedStretchRatio / videoAr;
|
||||||
|
|
||||||
|
// Whether squeezing happens on X or Y axis depends on whether required AR is wider or narrower than
|
||||||
|
// the player, in which the video is displayed
|
||||||
|
// * we squeeze X axis, if target AR is narrower than player size
|
||||||
|
// * we squeeze Y axis, if target AR is wider than the player size
|
||||||
|
|
||||||
|
this.logger.log('info', 'stretcher', `[Stretcher::applyStretchFixedSource] here's what we got:
|
||||||
|
postCropStretchFactors: x=${postCropStretchFactors.xFactor} y=${postCropStretchFactors.yFactor}
|
||||||
|
fixedStretchRatio: ${this.fixedStretchRatio}
|
||||||
|
videoAr: ${videoAr}
|
||||||
|
playerAr: ${playerAr}
|
||||||
|
squeezeFactor: ${squezeFactor}`, '\nvideo', this.conf.video);
|
||||||
|
|
||||||
|
|
||||||
|
if (this.fixedStretchRatio < playerAr) {
|
||||||
|
postCropStretchFactors.xFactor *= squezeFactor;
|
||||||
|
} else {
|
||||||
|
postCropStretchFactors.yFactor *= squezeFactor;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.logger.log('info', 'stretcher', `[Stretcher::applyStretchFixedSource] here's what we'll apply:\npostCropStretchFactors: x=${postCropStretchFactors.x} y=${postCropStretchFactors.y}`);
|
||||||
|
|
||||||
|
return postCropStretchFactors;
|
||||||
|
}
|
||||||
|
|
||||||
|
calculateStretchFixed(actualAr) {
|
||||||
|
return this.calculateStretch(actualAr, this.fixedStretchRatio);
|
||||||
|
}
|
||||||
|
|
||||||
|
calculateStretch(actualAr, playerArOverride) {
|
||||||
|
const playerAr = playerArOverride || this.conf.player.dimensions.width / this.conf.player.dimensions.height;
|
||||||
|
const videoAr = this.conf.video.videoWidth / this.conf.video.videoHeight;
|
||||||
|
|
||||||
if (! actualAr){
|
if (! actualAr){
|
||||||
actualAr = playerAr;
|
actualAr = playerAr;
|
||||||
@ -158,7 +196,7 @@ class Stretcher {
|
|||||||
// video is letterboxed by player
|
// video is letterboxed by player
|
||||||
// actual is pillarboxed by video
|
// actual is pillarboxed by video
|
||||||
stretchFactors.xFactor = actualAr / playerAr;
|
stretchFactors.xFactor = actualAr / playerAr;
|
||||||
stretchFActors.yFactor = actualAr / playerAr;
|
stretchFactors.yFactor = actualAr / playerAr;
|
||||||
|
|
||||||
this.logger.log('info', 'stretcher', "[Stretcher.js::calculateStretch] stretching strategy 5")
|
this.logger.log('info', 'stretcher', "[Stretcher.js::calculateStretch] stretching strategy 5")
|
||||||
} else {
|
} else {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"name": "Ultrawidify",
|
"name": "Ultrawidify",
|
||||||
"description": "Removes black bars on ultrawide videos and offers advanced options to fix aspect ratio.",
|
"description": "Removes black bars on ultrawide videos and offers advanced options to fix aspect ratio.",
|
||||||
"version": "4.4.1",
|
"version": "4.4.2",
|
||||||
"applications": {
|
"applications": {
|
||||||
"gecko": {
|
"gecko": {
|
||||||
"id": "{cf02b1a7-a01a-4e37-a609-516a283f1ed3}"
|
"id": "{cf02b1a7-a01a-4e37-a609-516a283f1ed3}"
|
||||||
|
@ -229,7 +229,7 @@ export default {
|
|||||||
},
|
},
|
||||||
saveSettings() {
|
saveSettings() {
|
||||||
if (this.currentCmdIndex < 0) {
|
if (this.currentCmdIndex < 0) {
|
||||||
this.settings.active.actions.push(this.action);
|
this.settings.active.actions.push({...this.action, ...{userAdded: true}});
|
||||||
}
|
}
|
||||||
this.settings.save();
|
this.settings.save();
|
||||||
this.close();
|
this.close();
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
>
|
>
|
||||||
</ShortcutButton>
|
</ShortcutButton>
|
||||||
</div>
|
</div>
|
||||||
|
<div><small>You can change or add additional aspect ratios on <a href="#" @click="openOptionsPage()">the settings page</a> (in 'actions&shortcuts' menu).</small></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="true"
|
<div v-if="true"
|
||||||
@ -155,6 +156,9 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
async openOptionsPage() {
|
||||||
|
browser.runtime.openOptionsPage();
|
||||||
|
},
|
||||||
execAction(action) {
|
execAction(action) {
|
||||||
this.exec.exec(action, 'page', this.frame);
|
this.exec.exec(action, 'page', this.frame);
|
||||||
},
|
},
|
||||||
|
@ -2,12 +2,23 @@
|
|||||||
<div>
|
<div>
|
||||||
<h2>What's new</h2>
|
<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>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.1</p>
|
<p class="label">4.4.2</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Changes to player detection that fix issues with vk</li>
|
<li>Stretching supports two new kinds of stretching (both hybrid). One stretches (or squishes) the video before
|
||||||
<li>Extension tries to avoid setting aspect ratio pointlessly</li>
|
applying any possible crop, the other option first crops and then stretches/squishes to specified aspect ratio.<br/>
|
||||||
<li>Fixed (hopefully) mailto: and reddit compose links.</li>
|
Especially the first option should be great for all men of culture who prefer watching content in its native aspect
|
||||||
<li>When reporting bugs, email/reddit template now automatically gathers browser, extension version and OS.</li>
|
ratio (even if that means seeing black bars) who get outright triggered when some uncivilized barbarians stretch 4:3
|
||||||
|
content to 16:9. You're welcome.<br/><small>Okay maybe I shouldn't soapboax like that in my patch notes.</small><br/>
|
||||||
|
There's two new buttons in 'stretch' section (video only). You can add more in extension settings if you want.<br/>
|
||||||
|
<b>This is experimental af and wasn't tested thoroughly — feedback welcome.</b> Links in 'report a problem' tab of
|
||||||
|
this popup.
|
||||||
|
</li>
|
||||||
|
<li>Disney+ didn't work for some. I've attempted to do a fix, but I am unable to test it (by the virtue of D+ not
|
||||||
|
being available in my country). If Disney+ continues to be problematic, I will probably need some help with it.
|
||||||
|
I would love to hear some feedback on whether extension works on Disney+ or not — please consider contacting me
|
||||||
|
via <a href="mailto:tamius.han@gmail.com" target="_blank">email</a> or <a href="https://www.reddit.com/message/compose?to=xternal7" target="_blank">reddit</a>.
|
||||||
|
</li>
|
||||||
|
<li>Fixed a bug where user added actions would not be removable the nice way.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
Loading…
Reference in New Issue
Block a user