Compare commits

...

1749 Commits
v2 ... master

Author SHA1 Message Date
78395e3ea0 Minor fixes for comms and mutation detectìon 2026-06-06 03:29:46 +02:00
e269ff3d79 Don't trip on subtitles that don't fall outside current crop area
Todo: don't trip on subtitles that wouldn't get cropped, but that would require Aard to know player's aspect ratio, and it currently doesnt
2026-06-06 03:27:49 +02:00
be495b1c56 daon't error if context isnt defined 2026-04-03 16:44:41 +02:00
3f032619b4 Fix firefox errors in cross-iframe communiccation 2026-04-03 16:44:12 +02:00
ef5ba706b7 Changelog update 2026-01-29 00:00:11 +01:00
3b91c2224c Allow zoom modes to be set as default crop 2026-01-28 23:54:26 +01:00
822d069b82 Finish syncing UI with extension state
Add active mode indicators to popup. Add handling of locked zoom & alignment indicator to both popup and UI. Improve message passing through Comms.
2026-01-28 21:49:51 +01:00
8af9f2cedf Indicate currently selected option in the in-player popup menu 2026-01-28 18:11:57 +01:00
3d8d8eb199 broadcast scaling parameters on ar change 2026-01-28 02:44:38 +01:00
a0d599ce2f add amazon to extconfpatches 2026-01-28 02:05:11 +01:00
fd7b5ec04e Fix messaging 2026-01-28 02:02:27 +01:00
c9818c92b3 Update readme 2026-01-27 20:37:32 +01:00
f57163f2bb Player selection should be functional enough 2026-01-27 20:36:50 +01:00
dbdcb4e367 add option to always activate menu while holding CTRL 2026-01-25 23:33:37 +01:00
e1dd0f9c04 Open in-player settings window, get player selection to somewhat work 2026-01-25 21:47:31 +01:00
2cb6a88c5e fix UI settings a bit 2026-01-25 21:41:01 +01:00
eb89ba03db Fix config 2026-01-25 20:54:25 +01:00
cb02c8619d Ensure each command gets executed once, even if it gets duplicated on the way 2026-01-25 20:52:25 +01:00
7d296e6a3d Get in-page player picker to at least show up 2026-01-23 22:46:59 +01:00
35bb5b477b Finalize menu position settings, replace eventBus.sendToTunnel() with eventBus.send() 2026-01-15 02:33:21 +01:00
925a9fdea3 Other minor settings, add CSS we forgot about 2026-01-14 22:41:46 +01:00
f0baa6ad67 Enable distance-based UI showing. Add "show while holding CTRL" option to the in-player UI 2026-01-14 22:39:42 +01:00
f25749470b be a bit more dilligent about including visitedBusses 2026-01-14 22:38:08 +01:00
8a4985e6a3 Fix problem where aspect ratio wasn't getting set at all 2026-01-13 18:15:48 +01:00
2cce60fb9f Rework message passing and simplify tunnels 2026-01-12 01:07:45 +01:00
826acf9a3f add css for info and warnings 2026-01-12 01:06:23 +01:00
186de15781 fix manual player detection 2026-01-12 01:06:12 +01:00
17dc69f87a Fix player detection when top-layer is being used 2026-01-12 01:04:05 +01:00
8268c7a7af Housekeeping/convert some more imports to absolute paths 2026-01-07 18:04:34 +01:00
a71b99ff10 Mostly import fixes 2026-01-07 09:44:44 +01:00
54c4f49edb Sort out types 2026-01-07 01:42:37 +01:00
92cd1cf58b Fix enum parsing in site settings panel 2026-01-06 16:57:47 +01:00
64570c71ce Fix some default keyboard shortcuts + change some other behaviour about kbd 2026-01-06 01:10:14 +01:00
cbc4b7877f Add cross-iframe messaging (for UI windows) 2026-01-04 01:25:35 +01:00
b62f6feaea Open in-page settings inside floating windows 2026-01-04 00:54:59 +01:00
b6dec385dc Fix bug with zoom not working if AR hasn't been set yet 2026-01-03 23:30:45 +01:00
a12581ed0e Setup interactions for the custom elements of the in-player menu 2026-01-03 19:30:46 +01:00
e651e51c50 Add zoom sliders to in-player popup (non-functional) 2026-01-03 03:19:03 +01:00
56321e52fc Fix menu alignment, fix issue where overlay div sometimes incorrectly inherited bg color, allow custom HTML to be passed as string 2026-01-02 19:20:17 +01:00
73eec1f7ba Fix menu css 2026-01-02 17:47:42 +01:00
a0cddb256a WIP 2025-12-29 14:28:00 +01:00
14b3571af3 Get menu alignment to somewhat work 2025-12-29 11:32:49 +01:00
af08c5094d Fix CSS processing 2025-12-29 02:34:46 +01:00
ef12dc8cc5 Start working on client menu, sort out CSS injection 2025-12-29 00:21:03 +01:00
fcfc0361dc Settings page is now on some baseline of "works", but needs some minor touch-ups 2025-12-28 00:13:06 +01:00
a8847bdeff Save player element settigs + simplified import/export 2025-12-27 23:22:54 +01:00
3f5ab5ecc6 WIP on player detection config import 2025-12-27 03:20:28 +01:00
077c7cae15 Fix migrations of extension enabled status 2025-12-26 22:50:56 +01:00
f916cffd41 Fix migrations 2025-12-26 22:32:36 +01:00
ea4fb95a3c Version bump 2025-12-26 21:40:19 +01:00
3dbec85269 Migrate DOMConfig in preparation for new settings page 2025-12-26 21:39:34 +01:00
2a42c3e715 More or less finish rework of how setting defaults work 2025-12-26 21:36:15 +01:00
c2a6a3f082 Extension enabled mode is now being set correctly 2025-12-22 14:48:50 +01:00
61972a7b2d Fix logger init in popup 2025-12-22 03:53:20 +01:00
4a562443b1 Fix CSS styles not getting applied 2025-12-22 03:36:11 +01:00
9515c1b01a Various fixes, trying to get application of user css styles to work again- 2025-12-22 03:23:10 +01:00
126d891e5e Work around chrome's console.log limitations. 2025-12-22 02:55:33 +01:00
dad1df0244 FIX LOGGER 2025-12-20 18:06:11 +01:00
aff429e5ea Start working on advanced player selector 2025-12-18 00:10:55 +01:00
3457c4fcdc cleanup 2025-12-17 18:35:24 +01:00
74c0358d33 Add snapshot creation and snapshot editing _for real_ 2025-12-17 01:50:50 +01:00
8735d3e81a Removed previous @updated page 2025-12-16 22:58:54 +01:00
4180d5b5b1 Settings snapshot handling, moved update page to unified settings page 2025-12-16 22:57:19 +01:00
ca751a660f Move files around, clean up imports 2025-12-15 19:42:07 +01:00
fb7f5cf1ba More migrating 2025-12-11 02:43:39 +01:00
fe2f52d76a Bump version 2025-12-10 22:50:56 +01:00
ee32ae93c3 Simplify extensionMode things 2025-12-10 22:49:59 +01:00
877fc96da1 Add LegacyExtensionMode enum 2025-12-10 22:11:23 +01:00
67a5b4e05a update nvmrc 2025-12-10 22:11:01 +01:00
d0a5083841 WIP popup redesign 2025-12-10 22:10:40 +01:00
2d8c078a6f Ensure SVG styles don't escape containment 2025-12-03 03:23:31 +01:00
f543dcff24 Start on work on popup, mostly finish work on settings page 2025-12-03 03:15:43 +01:00
5cfa5b0add Redesign of autodetection options 2025-12-02 01:03:54 +01:00
13feb1e822 Merge branch 'dependency-upgrades' 2025-12-02 01:03:05 +01:00
dc755dbe62 Finish migration to tailwind, add new settings screen 2025-12-02 01:02:09 +01:00
b334707463 Convince tailwind to work 2025-12-01 01:14:08 +01:00
ca093f5b34 Upgrade libraries 2025-12-01 01:03:12 +01:00
2e4226b828 cleanup of player detection 2025-11-30 21:27:26 +01:00
095a3daadd Refactor playerData/player size changing a bit. Settings can now only be patched from ExtConfPatches 2025-10-14 20:26:35 +02:00
baa7c79f6c this should be included in "re-add legacy aard" commit 2025-10-14 18:56:48 +02:00
f5e308c5b4 Add update screen 2025-10-14 18:55:45 +02:00
c0c29759fa Re-add legacy AR detect 2025-10-14 18:54:06 +02:00
ddffbe92a0 Finish rewriting Aard 2025-10-13 17:35:37 +02:00
888e48eb5b Refactor aard 2025-10-12 22:03:55 +02:00
61e7351d0b Version bump 2025-10-08 19:40:49 +02:00
4b0571e123 Change how small player windows are checked 2025-10-08 19:40:28 +02:00
bf7f707ab7 change some bits 2025-10-08 19:39:55 +02:00
accc320971 Add options for controlling how aard runs in small players and background tabs + allow auto-disabling aard after first detection 2025-10-08 19:37:25 +02:00
4276a9f03a More logging while building 2025-10-08 16:54:59 +02:00
7ae3fb6109 Fix angle backend detection, though that should no longer be relevant 2025-10-08 15:06:19 +02:00
8c96e2fd90 New iframe inheritance should somewhat work now 2025-08-03 02:58:59 +02:00
30e5bce38f Changelog fix 2025-08-03 02:58:55 +02:00
620028db6d Add validation to aspect ratio input in shortcut settings, fix parsing of aspect ratios given as X:Y 2025-08-03 02:58:02 +02:00
850b5d6b25 Add 'iframes shouldn't inherit' option to site settings 2025-07-16 22:27:05 +02:00
eaf003f5a7 Rework player selector tutorial 2025-07-16 22:26:25 +02:00
ab1efbe9cf Provisional version bump 2025-07-16 03:17:14 +02:00
14f8453067 Update player UI element on fullscreen change; when in fullscreen, limit potential player UI elements to full screen element (if it exists) 2025-07-16 02:53:40 +02:00
090f112463 Get iframe inheritance to work in the popup 2025-07-16 02:49:19 +02:00
01d569f1b5 Update missing types 2025-07-15 19:46:22 +02:00
75670ef3f9 Move settings to a different folder, iframes default to parent page settings 2025-07-15 19:42:35 +02:00
f88f703e84 move settings (update imports only) 2025-07-15 19:41:00 +02:00
a5fdef0196 version bump for release 2025-06-18 02:19:18 +02:00
f10eee335d version bump for testing version 2025-06-18 01:41:02 +02:00
20856891b6 Don't open global settings window in iframe 2025-06-18 01:15:45 +02:00
60dd1193ab Detect embedded content 2025-06-18 01:04:42 +02:00
2bc95af73c Fix iframe detection 2025-06-17 22:49:16 +02:00
178bb65b4a Improve embedded frame detection 2025-06-17 20:12:44 +02:00
f7f046ea53 Propagate messages across server boundary 2025-06-16 21:58:35 +02:00
ec0896e17a Implement zoom in extension popup, in-player UI 2025-05-19 01:18:48 +02:00
a5f35248bd Event-bus: Auto-forward across iframe and commsServer 2025-05-19 01:17:09 +02:00
a05eccce9e fix zoom config 2025-05-19 01:15:05 +02:00
e118777636 Fix debounce 2025-05-19 01:14:19 +02:00
7998e8158e Fix log coloration 2025-05-07 00:45:08 +02:00
14f837d1f0 EventBus: prevent backflow of messages that originate from CommsServer back into CommsServer 2025-05-07 00:42:25 +02:00
cff1d3cf16 Cache active tab in comms server
Previously, if console window was active, this.activeTab would return nothing, and the popup would break. If that happens now, popup will pretend it's on the last active site.
2025-05-07 00:41:45 +02:00
b2cd96982e Further logging fixes 2025-05-04 21:00:15 +02:00
a89eb8e857 Whoops, missed some bits in the cleanup 2025-05-04 02:37:45 +02:00
7c1ccd2cc9 Add contributing.md and license.md 2025-05-04 02:30:56 +02:00
e3a12bc601 Cleanup of unused imports 2025-05-04 02:29:33 +02:00
e20508956a Replace old logger with new logger 2025-05-04 02:18:58 +02:00
4000d0e027 Start rewriting logs 2025-05-01 00:55:22 +02:00
77fcced776 Fix saving settings for sites that inherit configurations from a different site 2025-04-28 01:38:13 +02:00
e67b5a227f Allow some cross-domain settings sharing, handle settings inheritance, don't save auto-detected player index 2025-04-28 01:23:12 +02:00
150a0a8a90 Process iframe data in the popup, remove vestigal code 2025-04-27 19:51:21 +02:00
269dddc92e Fix legacy canvas loading 2025-04-27 17:53:50 +02:00
508ef5cbbb Fix calculation of averages in AardTimers 2025-04-27 17:52:04 +02:00
500d06204c Move default settings to 'other sites' tab 2025-04-27 01:12:06 +02:00
fe8436179f Remove orphan components, update dictionary 2025-04-26 23:28:17 +02:00
adedfec1d0 Update popup appearance 2025-04-26 23:27:09 +02:00
b974111eb4 Fix zoom 2025-04-26 23:24:57 +02:00
3d7b50a2e3 Get zoom options to mostly work 2025-04-26 04:23:57 +02:00
32c11d1f61 Fix snapshots 2025-04-26 01:11:51 +02:00
5c48747d0f Add new zoom options (but they don't do anything yet) 2025-04-26 01:11:31 +02:00
5a0abb3595 Fix settings migrations 2025-04-26 01:09:49 +02:00
95b98c9053 Fix loading snapshots 2025-04-26 01:08:43 +02:00
518e09e3cb Changelog 2025-04-22 02:53:05 +02:00
ad632b0680 Add snapshots to settings page 2025-04-22 02:52:41 +02:00
73aa925067 Don't do AR changes on negative aspect ratios 2025-04-22 02:44:28 +02:00
391b0ac7ab Settings snapshots 2025-04-22 02:43:44 +02:00
ae2bb7afcd Fix UI hiding 2025-04-22 02:37:36 +02:00
0681c3ae08 UI improvements 2025-04-22 02:36:34 +02:00
4aa96bb288 Changes to debugging UI 2025-04-21 22:24:32 +02:00
b24739d70d Put "pls report bugs" in 'what's new' panel as well 2025-04-20 19:50:51 +02:00
dffe8e055a put dev overlays into settings 2025-04-20 19:29:47 +02:00
adadc8bb3e version bump 2025-04-20 19:28:59 +02:00
5f3562fe5b Remove orphan settings 2025-04-20 16:11:57 +02:00
0d7c535a70 revive zoom 2025-04-20 16:11:17 +02:00
39f39f23a7 Prevent more than one concurrent trackDimensionChanges from running 2025-04-15 19:23:42 +02:00
ff0de6f2e7 Version bump 2025-04-15 19:05:48 +02:00
8658b3c0d3 Changelog 2025-04-15 19:03:29 +02:00
8551bc2dc1 Add performance measurements to Aard 2025-04-15 18:51:34 +02:00
a0abf336cf fix #269 2025-04-10 00:46:44 +02:00
7d71dd0507 Allow debug canvas to be shown or hidden from settings 2025-04-10 00:46:22 +02:00
54c190f86c Updated toys 2025-04-05 01:31:06 +02:00
e198c69741 Added toys that enable visual debugging of Aard 2025-04-03 02:59:25 +02:00
7c1d3e52e5 Instead of elements closer to the <video> tag, prefer best-matching element closer to page root.
This ensures UI always renders on top of player if enabled.
2025-03-31 23:26:03 +02:00
5460719297 css fixes 2025-03-31 00:28:35 +02:00
83b770e4e8 Start updating changelog 2025-03-31 00:26:14 +02:00
a5c9835d9d Fix problem where 'default' is always 'disabled' 2025-03-31 00:20:43 +02:00
f0840b78e1 Change handling of getPlayer() 2025-03-30 23:49:13 +02:00
ab79f1e0e6 TODO: some day finish rewriting UI in a way that loads iframe only when expressly requested. 2025-03-30 23:48:24 +02:00
16a2f511bb Replaced v-model in <select> with :value
Did this really fix #270?
2025-03-30 01:27:28 +01:00
39fdd72e9f Don't propagate bad site data from uwserver to extension popup 2025-03-30 01:24:37 +01:00
f93a7e284c Remove InPlayerUIAdvertisement component 2025-03-30 01:24:08 +01:00
b5e480a486 'dev mode' is now saved under settings. 'debug' panel is only shown if dev mode is active 2025-03-30 00:54:47 +01:00
bf128babcc Started logger rewrite. Gave up. 2025-03-30 00:27:50 +01:00
46d1ad221f Re-add debugger panel, strip down json editor 2025-03-30 00:04:30 +01:00
7aacbec108 Reset settings editor on settings import and reset 2025-03-29 17:17:20 +01:00
f77506c454 Settings export, settings import, json editor for settings 2025-03-29 17:11:04 +01:00
e3f1f21ce9 Add basic confirm button. 2025-03-18 18:58:31 +01:00
08c86615a0 Move 'show in-player UI' to popup header 2025-03-14 02:46:59 +01:00
b0425b37c0 minor style tweaks 2025-01-30 02:40:04 +01:00
d94be7aa5e Changelog.MD update 2025-01-30 01:31:11 +01:00
40bdddd031 Remove unnecessary things from the overlay 2025-01-30 01:30:08 +01:00
da94dee780 Make window background darker until chrome doesn't fix backdrop-filter bug 2025-01-30 01:29:48 +01:00
587a21c5f6 Fix default settings 2025-01-30 01:29:00 +01:00
f994617d44 Don't reset settings on failed extconfpatches application 2025-01-30 01:28:44 +01:00
a92f5fc2a1 Fix enabling/disabling extension while switching between environments 2025-01-29 23:58:16 +01:00
208a360c47 Fix settings cascade in ui 2025-01-29 23:56:50 +01:00
f728cbf817 change styles for scrollbars 2025-01-28 00:48:20 +01:00
aef5665cb5 Don't incorrectly set websites as user-defined just because initial player index was set 2025-01-28 00:47:45 +01:00
6ea47d26d0 remove cta from UI advertisement 2025-01-28 00:42:56 +01:00
a7a36033a2 Version bump 2025-01-27 02:59:54 +01:00
32f4d99c98 Move player UI settings and make them site-dependent. Fix SiteSettings always overriding ExtensionStatus.Default with actual default value 2025-01-27 02:59:30 +01:00
2d08a2f339 Hide 'set default stretch' in stretch panel 2025-01-27 02:41:41 +01:00
1f0ebff241 Fix UI not reacting to settings updates 2025-01-26 23:57:02 +01:00
5c26e49c17 disable settings if extension is disabled 2025-01-26 22:10:30 +01:00
ea85f2f5d6 Disable extension on unknown sites by default 2025-01-26 22:10:06 +01:00
af9b123e8d Rework settings popup 2025-01-26 22:09:32 +01:00
d322c0909a Merge branch 'hotfix/iframe-fix' 2025-01-25 21:19:55 +01:00
0bfe84d73d fix saving settings 2025-01-25 21:18:04 +01:00
244e8227e7 Settings: make setProp() functional 2025-01-25 21:17:20 +01:00
5da8073235 fix conflict 2025-01-25 21:15:26 +01:00
5479b7ee95 Fix the iframe problem 2025-01-25 20:51:22 +01:00
b4e932581c fix setting default alignment 2025-01-14 02:41:20 +01:00
1f65cca002 fix support level indicator 2025-01-14 02:41:06 +01:00
1a9cdfa93b additional fixes 2025-01-14 01:51:16 +01:00
d780a8cb12 Fix stretch mode 2025-01-14 01:44:25 +01:00
eaf619f4f8 Revert "Temporarily comment out zoom from player overlay"
This reverts commit ebdc26a00d.
2025-01-13 01:42:58 +01:00
3dd8584954 disable zoom options in player UI for the time being 2025-01-13 01:42:38 +01:00
ebdc26a00d Temporarily comment out zoom from player overlay 2025-01-13 01:33:58 +01:00
dd47dd09da Add about panel back to the popup 2025-01-13 01:31:59 +01:00
bc6d2ac549 Add call to arms to popup. Fix some minor issues 2025-01-13 01:22:49 +01:00
b2cd8197d4 Updated labels of in-player UI 2025-01-12 23:25:39 +01:00
23ea9e77c4 Added zoom UI 2025-01-12 23:25:20 +01:00
42ac51f1e9 CSUI: set opacity to 0 when extension menu is not triggered 2025-01-12 23:24:01 +01:00
d433878680 stop using relative imports in some non-css components 2025-01-12 23:21:51 +01:00
11fa12001c stop using relative imports for most of css 2025-01-10 19:13:27 +01:00
a82a6963e9 version bump 2025-01-10 19:12:40 +01:00
a98a80001c basic iframe for notifications 2025-01-07 08:23:11 +01:00
ad1e73d0cc Try to detect when UI is not clickable 2025-01-06 03:05:18 +01:00
55c0e7e8c5 Get DRM status to UI more reliably 2025-01-05 02:47:45 +01:00
3d35ae32c8 Throw error if upgrading settings fails 2025-01-05 00:38:11 +01:00
33e3bec337 Fix stretch mode while not cropped 2025-01-05 00:37:20 +01:00
9c12272846 attept detecting when wrong player element is detected pt 1 2025-01-05 00:36:41 +01:00
0cc2249b97 version bump but in manifest file 2025-01-05 00:08:09 +01:00
a5d0c0b6b7 fix support level indicator 2025-01-05 00:06:59 +01:00
3736a55bad version bump 2025-01-05 00:06:43 +01:00
303213da73 fix netflix fix some more 2025-01-02 06:32:43 +01:00
8d47eaf74c fix color-scheme issue 2025-01-02 05:50:19 +01:00
9f10c0dcf4 FOR REALS account for offset applied by sites that use top:50%/transformY:-50% to center elements 2025-01-02 04:33:00 +01:00
d981e4c2c6 Account for offset applied by sites that use top:50%/transformY:-50% to center elements 2025-01-01 22:18:37 +01:00
8f3d1bd091 Add illustrations to the player picker 2025-01-01 22:15:22 +01:00
3b9f557075 version bump 2025-01-01 22:14:10 +01:00
18cdec51d9 settings migration 2024-12-31 03:36:08 +01:00
276a51b8c3 WIP on master 2024-12-31 03:15:10 +01:00
14e1d6aad3 even more aard updates 2024-12-31 03:14:29 +01:00
9c65300fc4 more aard updates 2024-12-31 02:50:33 +01:00
cf01dd9397 Try to reduce message-passing to improve performance, make ultrawidify not run on videos smaller than 720p 2024-12-30 23:02:55 +01:00
162318b439 Remove legacy code 2024-12-30 21:39:50 +01:00
cd89cca984 fix vertical alignment 2024-12-30 03:05:47 +01:00
25222c7310 Prevent overlay from blocking the video player UI 2024-12-30 00:55:58 +01:00
b2bfde4426 Fix sliders, but for real this time (pt 2) 2024-12-28 03:41:23 +01:00
8602b53260 Fix sliders, but for real 2024-12-28 03:14:53 +01:00
145b361581 Fix 2024-12-28 02:05:42 +01:00
7743dd8e7f Add sliders 2024-12-28 02:02:01 +01:00
ed2886d449 add minEnabledHeight to settings 2024-12-28 01:42:13 +01:00
002dfacc3e change timeout a bit 2024-12-28 00:42:53 +01:00
fd9fbc32a8 Remove some console.logs 2024-12-28 00:42:40 +01:00
e54deeb4f7 save settings when changing parameters 2024-12-28 00:41:07 +01:00
c85f211d5e Add reset settings to options 2024-12-27 23:13:12 +01:00
67f848a9ee Unbreak showing popup on hover 2024-12-27 23:12:41 +01:00
fe336122e0 Make crop iptions and stretch options panels editable by default without breaking the popup. Add them to UI and keyboard section of settings 2024-12-27 13:18:31 +01:00
6d8d8493a6 Zone editor mostly finished 2024-12-27 04:41:35 +01:00
5d7d249fff Fix overlay positioning 2024-12-27 04:40:30 +01:00
35ca030dfb Close window when opening zone edotir 2024-12-26 17:54:05 +01:00
fab6fb0f5b Fix mousemove position calculation 2024-12-26 17:41:00 +01:00
3b8fc807f7 Add corner markers to editor resizer area 2024-12-26 17:40:27 +01:00
13cfb9ff14 Checkpoint: aard status indicator + trigger zone editor now kinda works 2024-12-26 14:58:14 +01:00
aabd5e75d8 Update changelog 2024-12-22 23:29:43 +01:00
7be6fb9501 Add fallback option class (currently unused) 2024-12-22 23:20:07 +01:00
9fc63e5cd3 Add player UI settings panel 2024-12-22 23:17:32 +01:00
7a1e8be48a attempt to shut some warnings up (but fail) 2024-12-22 23:16:54 +01:00
d299a65e03 fix — open on correct tab 2024-12-22 23:07:55 +01:00
2337f7a3ba add new options to settings interface 2024-12-22 23:06:14 +01:00
4853d7e2fd allow opening of extension settings window on specific tab 2024-12-22 23:05:56 +01:00
ca1a375f2d Limit when in-player UI shows. Add self-expiring menu options that takes you to the proposed, not-yet-implemented UI settings screen 2024-12-17 02:02:49 +01:00
0d098815a2 fix aspect ratio calculations 2024-11-13 01:46:17 +01:00
30cbfb6ffd Make sure that guard line gets invalidated correctly 2024-11-13 01:45:45 +01:00
4c7deffdfe Do full reset of AARD test result every time aard restarts 2024-11-13 01:43:07 +01:00
15133e561f Get autodetection to work at least on a basic level 2024-11-07 02:26:19 +01:00
c235b52e3b fix canvas initialization, add add methods to attach canvas to main body for ez debug 2024-11-07 00:18:40 +01:00
903f356252 Make the context menu slightly less rudimentary 2024-10-24 01:47:46 +02:00
54c44b4379 Add very rudimentary context menu 2024-10-23 01:23:54 +02:00
dcbeecc8cf fix syntax 2024-10-23 01:23:37 +02:00
bf182c65ad Aard should be nominally complete. Probably. 2024-10-22 23:43:25 +02:00
7c5e4101b0 Finish aspect ratio check 2024-10-21 01:08:03 +02:00
2736ac418f WIP on aspect ratio detection 2024-10-19 16:04:20 +02:00
e2dac10501 Finish guardline/image line tests 2024-10-15 17:38:04 +02:00
c15d7ab28e Start re-implementing aspect ratio detection (now with more documentation) 2024-10-14 00:28:13 +02:00
de78f8b1d5 Switch to gl canvas 2024-10-10 00:45:28 +02:00
e56d32180c Add GL canvas wrapper 2024-10-09 23:54:21 +02:00
6c92837317 wip 2024-06-12 20:29:00 +02:00
d4015a86ef Version bump 2024-06-12 09:17:52 +02:00
4b4be96e26 Fix one more link 2024-06-12 09:09:25 +02:00
823e1d983c Remove currently inactive downloads permission 2024-06-12 09:06:12 +02:00
47fba5b81a Fix external links 2024-06-12 03:15:02 +02:00
ee23ebb705 Update permissions for mmanifest v3 2024-06-12 02:17:03 +02:00
d6d3a95daf Last pre-publish fixes 2024-06-12 01:55:12 +02:00
e839e632fc Merge branch 'feature/player-ui' 2024-06-11 02:39:09 +02:00
cb6f0a9a32 Changelog.MD update 2024-06-11 02:36:36 +02:00
c5515934d9 Do the changelog + highlight changelog tab 2024-06-11 02:22:53 +02:00
7dafe85c53 Do the version bump 2024-06-11 01:59:11 +02:00
3bc65c252d I think i disasbled size requirements for in-player UI. Changed wording in popup to reflect that 2024-06-11 01:56:21 +02:00
d4f9ab9f37 Fix player detector panel 2024-06-11 01:55:02 +02:00
b96227b07a plan ahead 2024-06-10 23:40:49 +02:00
da12ee452c Get aard to start reliably if it's set as default aspect ratio for the site 2024-06-10 23:40:33 +02:00
99df043b5f Fix Aard pausing/unpausing when not intended 2024-06-10 23:27:47 +02:00
54d53f1b91 Remove unused code to make Aard work 2024-06-10 23:27:00 +02:00
3645b9ffcf fix typo 2024-06-10 23:26:08 +02:00
9d0ce25be7 Ensure videos get aligned even when aspect ratio is not defined 2024-06-10 00:08:49 +02:00
1c860f74fb remove wiki link, as it's innacurrate 2024-06-09 21:28:57 +02:00
75e31dc3a4 Improve alignment ui 2024-06-09 21:25:11 +02:00
10a8452709 Include changelog 2024-06-09 21:24:26 +02:00
f824f73491 update some libraries 2024-06-09 21:23:25 +02:00
16c34e3d52 ui styling 2024-06-08 03:23:49 +02:00
76c4599dee prepare class names for a day in the future, when we'll move to tailwind 2024-06-08 03:23:34 +02:00
1af80096c7 Add changelog, about panel 2024-06-08 02:10:50 +02:00
cbb2bb4502 Shortcut editor alert 2024-06-06 00:51:47 +02:00
0f3bcaa8e6 Fix alignment/offset handling, make it as player-invariant as possible 2024-06-06 00:51:34 +02:00
ae6575043e fix keyboard shortcut handling for default shortcuts 2024-06-06 00:50:58 +02:00
0dbd5b456c Fix setting keyboard shortcuts 2024-06-06 00:50:08 +02:00
81f3e62446 Pin and close buttons 2024-06-05 23:52:50 +02:00
e0bb25466d UI/global UI mostly works 2024-06-05 01:08:50 +02:00
cb334aab0d Do a bad code, because chrome doesn't work when you try to write good code 2024-06-03 00:16:40 +02:00
9cef850d06 Make extension work on Chrome. Make extension NOT work on firefox. 2024-06-03 00:16:12 +02:00
79ecc87db4 WIP trying to convince in-player UI to show 2024-06-02 16:06:26 +02:00
12644bfbea get manifest v3 to approximately work 2024-05-30 01:02:09 +02:00
bc6b58aa3f Ensure transform offsets are is rounded 2024-05-07 21:02:22 +02:00
abeded1d03 Further migrations to runlevel 2024-05-07 21:02:04 +02:00
a466f77b6e Merge branch 'master' into feature/player-ui 2024-05-07 20:28:39 +02:00
968ce5432a RunLevel works, even though half-assed 2024-05-07 20:24:50 +02:00
277506b3c8 Start implementing run levels 2024-05-07 19:05:10 +02:00
1c48ea1908 Reorder panels in video settings 2024-05-04 01:08:42 +02:00
f2ac1557a4 Fix icon & heading sizes in popup 2024-05-04 01:08:32 +02:00
7213c1e35f Fix padding 2024-05-04 01:08:25 +02:00
9f5f953b46 'Edit shortcuts' bar banner now doesn't take up vertical space while inactive 2024-05-04 01:08:21 +02:00
3ff6054c20 Fix popup (css now finally workS!) 2024-05-04 01:08:14 +02:00
9fb25254a6 Import CSS in vue component instead of html, otherwise popup is without css 2024-05-03 23:13:55 +02:00
8c6a06d490 move fonts 2024-05-03 23:13:07 +02:00
dd37837848 Update node 2024-04-07 15:37:16 +02:00
5ca9325e16 fix 2024-01-28 13:08:31 +01:00
b8fdf0911a Update changelog 2024-01-28 13:01:45 +01:00
a7302fee4b fix angle detection 2024-01-28 13:01:16 +01:00
41bf4d2764 fix 2024-01-28 13:00:48 +01:00
0970140a3a Version bump 2024-01-27 23:29:03 +01:00
b8eb8ec052 rework about panel 2024-01-27 23:06:56 +01:00
46b7d6a25a Round pixel offset 2024-01-27 22:24:09 +01:00
aab2f5b014 fix ard performance display 2023-10-21 17:59:52 +02:00
6062094e6f Fix crashes in chrome 2023-10-21 17:41:09 +02:00
f7e36619df remove manifestv2 2023-10-21 14:04:02 +02:00
167f5173cd get popup to at least mildly work 2023-09-11 00:43:26 +02:00
c7ebd42fe9 some more moving around 2023-09-10 22:09:26 +02:00
94018c6ee3 Cleanup file/directory structure for the UI 2023-09-10 22:06:16 +02:00
388327ec1d fix fs handlers 2023-09-10 19:51:36 +02:00
0ba56c271d hardcode defautl css string somewhere else 2023-09-10 13:12:35 +02:00
bd1216c275 get player select UI to work 2023-07-15 04:17:38 +02:00
3180063fe3 attempt to get player selector to work 2023-07-15 04:03:32 +02:00
9cb9a6607b Remove unused components 2023-07-15 01:29:57 +02:00
42cdcd5c25 Site and extension options: done 2023-07-15 01:28:20 +02:00
8b1da27af7 remove UI when extension is disabled 2023-07-11 00:48:34 +02:00
638e228ce9 don't init UI by default 2023-07-10 22:56:26 +02:00
94469ccd0e mess around with launch.json, still didnt get debugger to work, decided i dont care 2023-07-10 22:05:37 +02:00
48f7e1f39c Merge branch 'feature/manifest-v3-v2' into feature/player-ui 2023-07-10 22:05:02 +02:00
60f7abfa42 get manifest v3 to approximately work 2023-07-10 22:04:30 +02:00
cd391db302 wip 2023-07-10 18:27:06 +02:00
8613d6971f Showing aard notifications is no longer implemented, so we don't call it 2023-04-16 02:54:30 +02:00
cc18153889 Minor update to site settings 2023-04-16 02:53:59 +02:00
be4bf9e2a3 detect whether extension is enabled on dimension changes. Trigger dimension check on fullscreen change 2023-04-16 02:43:50 +02:00
085bd4aab9 fix video alignment default settings 2023-04-16 02:16:57 +02:00
977d103c3a remove aard::halt() (is duplicate of aard::stop() anyway) 2023-04-16 01:55:11 +02:00
0778f07922 sensible variable naming is important + remove redundant code 2023-04-12 23:08:19 +02:00
e12154601b also add 32:9 button 2023-03-30 00:49:09 +02:00
b22d50f760 Firefox also stopped liking the -alpha# format, so version numbering was switched from [next major]-X.X-[alpha|beta|dev]# to [current-major].99.X-# 2023-03-30 00:45:34 +02:00
302f21b477 Cycle mode 2023-03-30 00:43:30 +02:00
65da515854 various fixes 2023-03-29 22:07:50 +02:00
e9bd3154a5 change event bus parameter names 2023-03-29 21:51:06 +02:00
1da147e110 remove redundant comments 2023-03-29 21:49:27 +02:00
e7dd85420c iframe manager 2023-03-02 01:08:25 +01:00
3e542871c6 Attach source frame info when communicating between frames on the same page 2023-03-02 01:08:16 +01:00
26b78f1225 EventBus: Allow forwarding between iframes of a page 2023-03-02 00:37:23 +01:00
57261b5094 Extension settings now holds both extension and site settings 2023-01-23 00:15:56 +01:00
c7f24133e5 fix ANGLE 2023-01-23 00:15:21 +01:00
87aa397a7c Version bump + changelog 2023-01-22 18:04:26 +01:00
e2a18ec765 Extconfpatch for disney+ 2023-01-22 17:58:39 +01:00
26ee2ffbb6 ANGLE popup 2023-01-22 17:45:33 +01:00
38dd1ddbe8 ANGLE detection 2023-01-22 16:06:33 +01:00
11bc79520a ANGLE detection 2023-01-22 16:05:07 +01:00
cc0ae60c83 Update settings object, finalize-ish site settings panel 2023-01-15 22:11:47 +01:00
30b028d836 remove redundant code 2023-01-15 22:10:17 +01:00
a30a70c6b5 get UI to somewhat work. TODO: get scripts to work 2023-01-07 19:19:44 +01:00
9503003a4a migration to site settings mostly done. TODO: check if things still work 2023-01-07 18:57:47 +01:00
a58edad8ea migrate settings to new and simplified SiteSettings 2023-01-07 03:06:37 +01:00
d0ba619b45 Redefine settings interface, write function to migrate some settings on update 2023-01-07 03:05:51 +01:00
64bad6758b start work on new panels 2023-01-07 03:05:03 +01:00
b902b8f9ba fix some warnings 2023-01-06 19:03:44 +01:00
7bb4ee96e7 return zoom slider to its rightful place 2023-01-06 19:03:35 +01:00
6c3e960096 Player is in a separate component 2023-01-06 18:47:42 +01:00
cacb0f1ea0 Put player window into its own component 2023-01-06 18:23:34 +01:00
5a2e33ccd2 fix 2023-01-06 18:23:12 +01:00
5d389a0796 Rename a file for future consistency 2023-01-06 18:22:15 +01:00
6db1d8af2a remove old dist before build 2023-01-06 18:19:59 +01:00
51d73e09ae ?? 🤔🤔🤔🤔 2023-01-06 18:17:08 +01:00
3c324aa1b2 Add global page (not loaded by extension yet), put mousemove probes in a separate file 2023-01-04 18:09:01 +01:00
a94092ac78 remove unnecessary components 2023-01-04 18:08:11 +01:00
f9d72d12b6 minor changes 2023-01-04 18:07:55 +01:00
81e11c2ae9 Extension options WIP 2022-11-22 01:28:04 +01:00
f7a82ccdf7 re-add missing method 2022-11-21 20:46:51 +01:00
44e3395835 Get basic messaging from popup to CS working. TODO: Forwarding to specific iframes/videos 2022-11-21 01:04:57 +01:00
d558717152 Try to recreate some UI in popup 2022-11-20 23:41:40 +01:00
b9b021f466 Spin off VideoSettings component into subcomponents 2022-11-20 22:45:34 +01:00
13bfd63dc2 Move common things between mousehandler and kbhandler to kbmBase 2022-11-20 17:26:57 +01:00
9600c4f1c9 fix kbm whoopsie 2022-11-20 15:23:23 +01:00
de9696471a kbm refactoring stuffs 2022-11-20 14:46:01 +01:00
c954f8b984 add playerMouseHandler 2022-09-28 01:18:58 +02:00
08479242f7 fix settings 2022-09-28 00:40:09 +02:00
d70783cc82 Rename canStartExtension to more descriptive isEnabledForSite 2022-09-28 00:39:20 +02:00
a2f0617d5a start splitting kbmHandler into keyboard and mouse handler 2022-09-28 00:38:36 +02:00
27b6ca824d fix action handler rename 2022-09-27 22:15:01 +02:00
e84f8ee541 start fixing KbmHandler (formerly: action handler) some more 2022-09-27 01:48:08 +02:00
ad87dbdcb9 remove unnecessary logging 2022-09-20 01:38:08 +02:00
9c42c120f5 Remove unnecessary components 2022-09-20 01:35:47 +02:00
740f2e8f6f fix forwarding data between server, content script, and popup 2022-09-20 01:34:59 +02:00
a0388689cf Continue slowly working on unified event bus 2022-08-21 22:46:06 +02:00
46cb5e1078 npm fix 2022-08-21 15:50:03 +02:00
abc53cf00f don't fuck ArDetector up 2022-08-21 15:49:28 +02:00
68f367bd39 Merge branch 'master' into feature/player-ui 2022-08-21 15:45:11 +02:00
d54097799c update cleanup script 2022-08-21 15:24:34 +02:00
ffc25520bb fix types 2022-08-21 15:24:24 +02:00
ccdc68870a Fix #199 2022-08-21 15:04:21 +02:00
7820da181e Readability fixes (I guess) 2022-08-20 16:04:31 +02:00
ec4d43d2ec unpause: Don't resume autodetection if not paused 2022-08-08 23:17:13 +02:00
c12a04b55f mostly whitespace 2022-08-08 23:16:55 +02:00
e0fe4c7103 Version bump + changelog 2022-08-06 01:56:12 +02:00
82f2983ac2 package.lock update 2022-08-06 01:31:40 +02:00
d2733cf486 Fix autodetection getting stuck in 21:9 2022-08-06 01:31:18 +02:00
3aabd298ec fix various fuckies wuckies 2022-07-31 01:12:54 +02:00
a0e375d2dc Cleanup — remove old uwui implementation 2022-07-31 00:18:21 +02:00
8806c8ea0c Integrate comms client/server into eventBus 2022-07-31 00:15:28 +02:00
f0120010fe do types 2022-07-31 00:14:40 +02:00
a5a121ee00 flag for whether autodetection is currently active 2022-07-30 23:07:33 +02:00
459a0eaa91 build lied? 2022-07-30 00:55:20 +02:00
84fefbaa14 remove some console.logs 2022-07-30 00:54:12 +02:00
023b8c370a fix tslint complaints 2022-07-30 00:52:14 +02:00
0a023ac6f2 fix command 2022-07-30 00:47:11 +02:00
83f7e4498a npm audit fix maybe? 2022-07-30 00:32:23 +02:00
d57040fc5b Merge branch 'master' into feature/player-ui 2022-07-30 00:29:23 +02:00
7df62ba530 Version bump + changelog 2022-07-30 00:15:15 +02:00
f51ec50113 fix aard, attempt 3 2022-07-29 00:42:35 +02:00
6748cbe52d update package.lock 2022-07-29 00:25:29 +02:00
fda2dcc484 fix aard: fix harder ? 2022-07-29 00:25:16 +02:00
07a5f06695 Merge branch 'dependabot/npm_and_yarn/shell-quote-1.7.3' 2022-07-29 00:21:52 +02:00
c9392911d9 fix aard? 2022-07-29 00:21:34 +02:00
88dec55116 get DRM status in player ui 2022-07-28 00:45:35 +02:00
f30de3f4a0 Add debug panel with logger 2022-07-27 01:16:14 +02:00
3c5aafee2d update package.lock 2022-07-26 23:55:39 +02:00
52b4e48217 start extension popup rework 2022-07-26 23:54:25 +02:00
58ed3b1ca4 Update changelog 2022-07-26 22:41:12 +02:00
bfef49bc33 fix stuff from merge 2022-07-26 22:40:45 +02:00
b7a61e5bc0 Rework blackframe to not use its own drawImage call 2022-07-26 22:15:39 +02:00
dependabot[bot]
15a3ffd406 Bump shell-quote from 1.7.2 to 1.7.3
Bumps [shell-quote](https://github.com/substack/node-shell-quote) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/substack/node-shell-quote/releases)
- [Changelog](https://github.com/substack/node-shell-quote/blob/master/CHANGELOG.md)
- [Commits](https://github.com/substack/node-shell-quote/compare/v1.7.2...1.7.3)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-26 19:59:10 +00:00
66f934e46e fix version but reals 2022-07-26 21:57:22 +02:00
47b85cfebc Revert "Bump node-sass from 4.14.1 to 7.0.0"
This reverts commit 9a3bd3ff88.
2022-07-26 01:24:33 +02:00
d0b060f31a Changelog + fix version bump 2022-07-26 01:20:29 +02:00
a756a9dc16 Version bump 2022-07-26 01:13:25 +02:00
207b82cc8b Fix set-extension-commnand for people who installed extension while this command was misspelled 2022-07-26 01:12:42 +02:00
26df9633b4 Remove ancient migrations 2022-07-26 01:10:11 +02:00
2b749d6a3b fix set-extension-mode commands 2022-07-26 01:04:36 +02:00
8c403f106c Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/terser-4.8.1' 2022-07-26 00:52:25 +02:00
36aa226e9c Reimplement blackframe. Start timing blackframe execution. Add some placeholder UI for autodetection settings 2022-07-26 00:52:06 +02:00
dependabot[bot]
1946b77285 Bump terser from 4.8.0 to 4.8.1
Bumps [terser](https://github.com/terser/terser) from 4.8.0 to 4.8.1.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-20 14:48:52 +00:00
a09ea26b0e Rework blackframe to not use its own drawImage call 2022-07-13 00:22:16 +02:00
1556506bd7 monitor autodetection performance 2022-07-13 00:21:21 +02:00
f94f6ec956 Autodetect script can now report performance data 2022-06-28 22:34:47 +02:00
aae566b82a stuff we missed in previous cleanup 2022-06-28 22:34:20 +02:00
dd8aeefdfd Clean up some performance stuff for autodetection 2022-06-28 20:53:50 +02:00
7d951a5115 comment cleanup 2022-06-28 19:28:14 +02:00
556722693c Rearrange things a bit. No longer do fallback mode 2022-06-28 01:33:21 +02:00
78f350b72b UI design for player selection is mostly done 2022-06-16 00:07:03 +02:00
340ee05443 fix pointer events 2022-06-15 00:53:43 +02:00
561a1aa5a5 Add more styling, choose few quick actions 2022-06-15 00:43:36 +02:00
e2fa4f9cfc some things weren't as "no longer needed" as initially thought 2022-06-14 23:23:08 +02:00
ee56187c9d give player section an icon 2022-06-14 23:20:26 +02:00
d3dbceb749 fix 2022-06-14 23:20:07 +02:00
799c953b30 Remove code no longer needed 2022-06-14 00:27:37 +02:00
e766d6da69 Allow users to set player element from the popup 2022-06-14 00:26:06 +02:00
53ed81fa81 showing and hiding of ultrawidify UI 2022-06-11 15:40:36 +02:00
320d35d9e5 holy shit we did it 🅱️ois, we made some progress on improving manual player detection 2022-06-10 00:22:06 +02:00
a1bfaaaf92 wip 2022-06-09 17:41:04 +02:00
03ebc87aa5 Prepare rendering of basic element tree 2022-06-09 09:01:30 +02:00
d2447d2d8a player detect panel boilerplate 2022-06-09 01:29:26 +02:00
296f146835 Refactor player detection + have player detection log some data for use in settings window 2022-06-09 01:28:46 +02:00
9a7e38d897 dict update 2022-06-09 01:27:50 +02:00
f0fcf996c9 set default stretching and cropping for site and extension in UI 2022-05-25 00:18:54 +02:00
c1b14979a2 also get alignment to work from player UI 2022-05-24 23:48:26 +02:00
9e9fdfe37f get zoom to work again 2022-05-24 23:45:41 +02:00
135ce2dfdd Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/async-2.6.4' 2022-05-06 00:28:52 +02:00
167d46ca76 Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/minimist-1.2.6' 2022-05-06 00:28:47 +02:00
23d2c252fe Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/object-path-0.11.8' 2022-05-06 00:28:43 +02:00
9100c1d9de Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/node-fetch-2.6.7' 2022-05-06 00:28:38 +02:00
b45b232ecf Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/path-parse-1.0.7' 2022-05-06 00:28:35 +02:00
9648d30aa2 If videoData is destroyed, remove its eventBus from pageInfo's downstream buses 2022-05-06 00:28:13 +02:00
5a04c2eeee Migrate actionHandler to new commands 2022-05-06 00:23:15 +02:00
74fe85f3a2 Put a parent event bus to pageInfo 2022-05-06 00:23:01 +02:00
4b44efe6fc Finish event bus propagation 2022-05-06 00:22:35 +02:00
dependabot[bot]
8922054c44 Bump async from 2.6.3 to 2.6.4
Bumps [async](https://github.com/caolan/async) from 2.6.3 to 2.6.4.
- [Release notes](https://github.com/caolan/async/releases)
- [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md)
- [Commits](https://github.com/caolan/async/compare/v2.6.3...v2.6.4)

---
updated-dependencies:
- dependency-name: async
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-29 00:39:55 +00:00
302353f448 Style dropdowns 2022-04-13 23:03:55 +02:00
3891d946e0 Add new aspect ratios. Fix deleting old aspect ratios. 2022-04-13 21:15:33 +02:00
e92e2e22f5 Update and delete keyboard shortcuts 2022-04-13 01:17:25 +02:00
4f4eb46a60 Clear keyboard shortcut 2022-04-13 00:24:10 +02:00
0daef615c1 Sort out inputs, shortcut button 2022-04-12 00:48:33 +02:00
6ce8bba6b7 Start working on the edit box for crop settings 2022-04-09 15:58:40 +02:00
09cf3ce54e Reorder some methods around into logical sections 2022-04-09 15:37:23 +02:00
872b0dea6e Change 'official' to 'verified' 2022-03-29 02:01:03 +02:00
376f20aeab Show last selected aspect ratio in the UI 2022-03-29 01:53:16 +02:00
57aae96781 Update button css 2022-03-28 23:57:34 +02:00
7c27c33aa0 Prepare some things for edit mode 2022-03-28 23:57:25 +02:00
7dc354509b Remove some of dem pointless console.logs that are no longer needed 2022-03-28 23:56:52 +02:00
7c09440084 UI base: sort out header and tabs 2022-03-28 23:14:52 +02:00
dependabot[bot]
5538ec4d3d Bump minimist from 1.2.5 to 1.2.6
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-24 16:24:35 +00:00
89168b643c Connect popup (video settings only so far) to content script logic 2022-03-22 01:23:50 +01:00
7fefe255ea Add some things we missed in initial implementation of pointer-events toggling 2022-03-22 01:23:15 +01:00
3423aac49a remove some console.logs 2022-03-22 01:21:18 +01:00
dependabot[bot]
cc8d1d8a94 Bump node-fetch from 2.6.1 to 2.6.7
Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.6.1 to 2.6.7.
- [Release notes](https://github.com/node-fetch/node-fetch/releases)
- [Commits](https://github.com/node-fetch/node-fetch/compare/v2.6.1...v2.6.7)

---
updated-dependencies:
- dependency-name: node-fetch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-20 23:52:29 +00:00
dependabot[bot]
c0a863740a Bump object-path from 0.11.5 to 0.11.8
Bumps [object-path](https://github.com/mariocasciaro/object-path) from 0.11.5 to 0.11.8.
- [Release notes](https://github.com/mariocasciaro/object-path/releases)
- [Commits](https://github.com/mariocasciaro/object-path/commits/v0.11.8)

---
updated-dependencies:
- dependency-name: object-path
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-20 23:52:23 +00:00
dependabot[bot]
f006eed113 Bump path-parse from 1.0.6 to 1.0.7
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-20 23:52:22 +00:00
3f131f44d1 Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/prismjs-1.27.0' 2022-03-21 00:51:22 +01:00
5cfc089bf1 Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/ajv-6.12.6' 2022-03-21 00:51:20 +01:00
987b1ad655 Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/node-sass-7.0.0' 2022-03-21 00:51:16 +01:00
1cd06040da Toggle 'pointer-events' based on whether mouse hovers over a csui element or not 2022-03-21 00:50:54 +01:00
f99220bf8b Process messages from content script, respond with results 2022-03-21 00:50:03 +01:00
8bef1d0c99 something's fucky with window.parent.location 2022-03-20 20:56:29 +01:00
47a73cfa6c Get page URL from window.parent.location instead of window.location for iframe 2022-03-20 20:44:50 +01:00
2dd901b1d5 Mark ui as clickable 2022-03-20 20:43:49 +01:00
46725c6fa4 Send mouse coordinates to the iframe 2022-03-20 20:40:11 +01:00
dependabot[bot]
adfc3fca5f Bump prismjs from 1.23.0 to 1.27.0
Bumps [prismjs](https://github.com/PrismJS/prism) from 1.23.0 to 1.27.0.
- [Release notes](https://github.com/PrismJS/prism/releases)
- [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PrismJS/prism/compare/v1.23.0...v1.27.0)

---
updated-dependencies:
- dependency-name: prismjs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-26 02:33:31 +00:00
dependabot[bot]
077610820c Bump ajv from 6.10.2 to 6.12.6
Bumps [ajv](https://github.com/ajv-validator/ajv) from 6.10.2 to 6.12.6.
- [Release notes](https://github.com/ajv-validator/ajv/releases)
- [Commits](https://github.com/ajv-validator/ajv/compare/v6.10.2...v6.12.6)

---
updated-dependencies:
- dependency-name: ajv
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-12 13:52:45 +00:00
dependabot[bot]
9a3bd3ff88 Bump node-sass from 4.14.1 to 7.0.0
Bumps [node-sass](https://github.com/sass/node-sass) from 4.14.1 to 7.0.0.
- [Release notes](https://github.com/sass/node-sass/releases)
- [Changelog](https://github.com/sass/node-sass/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sass/node-sass/compare/v4.14.1...v7.0.0)

---
updated-dependencies:
- dependency-name: node-sass
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-10 19:16:57 +00:00
85fed9d4c5 Hot dang, icons now show up in Chrome as well.
Also cleaned up some of the mess.
2022-01-29 16:23:40 +01:00
5a2d8d22cb Move extension popup into an iframe, get it to display at least something 2022-01-07 00:50:58 +01:00
761f2c21a8 fixes 2021-11-25 22:16:48 +01:00
c34340d0d1 install mdi font 2021-11-25 22:16:16 +01:00
045cd5a528 Stop using some of the old code 2021-11-25 20:00:32 +01:00
27b0609d34 Let's try to avoid injecting ultrawidify-specific CSS before we actually need it. Part 1/? 2021-11-25 00:31:38 +01:00
65556d9cad We will need to distinguish between two automatic aspect ratio types
AspectRatioType.Automatic: "start autodetection pls"
AspectRatioType.AutomaticUpdate: "Hi I'm aard and I want to change this aspect ratio to something new"
2021-11-25 00:14:06 +01:00
30835e94c0 UI: can set default crop, stretch. (TODO: actually get and use those values) 2021-11-23 01:32:55 +01:00
ee8ac1d9ee Site support level works now ... for most values of work 2021-11-21 02:08:53 +01:00
2be44d54ae Try achieving css class rename some more 2021-11-21 02:08:32 +01:00
cf8bedfad9 fix an oversight 2021-11-20 20:56:49 +01:00
5dc9b498d4 sample jenkins test 2021-11-13 00:57:41 +01:00
fb7a168d31 whitespace 2021-11-13 00:55:17 +01:00
484db037c0 use event bus 2021-11-13 00:54:20 +01:00
15a89583a2 Package updates 2021-11-13 00:48:08 +01:00
75cc0d5a87 handle alignment along y 2021-11-03 00:08:34 +01:00
0e3b962a00 whitespace 2021-11-02 22:20:01 +01:00
afaf65a53d Fix stretch mode from ui 2021-11-02 22:19:50 +01:00
f00d3b5aaf Fix zoom, but for realses 2021-11-02 20:52:01 +01:00
03bd442783 do the version bumping thing again 2021-11-02 20:51:45 +01:00
787bd1a532 Prevent eventBus from crashing everything under certain conditions 2021-11-01 01:18:07 +01:00
bd5befc18c Get sliders to update with values from aspect ratio options 2021-11-01 01:13:13 +01:00
829047585a Get manual zoom to work 2021-11-01 00:11:14 +01:00
78da45d468 cosmetic stuff 2021-10-31 23:18:44 +01:00
7f7ab7b752 Add some things to mitigate windows/wsl suckiness 2021-10-31 19:03:22 +01:00
79fb10c556 Add new format for defining actions. They're called commands now. 2021-10-28 22:53:43 +02:00
ffd9c6fb7a ExtConfPatches to typescrtipt 2021-10-28 22:53:23 +02:00
4074774d3a Preemtive version bump and patch notes 2021-10-27 20:46:14 +02:00
e7d43c566f Fix aspect ratio not getting applied correctly 2021-10-27 20:10:55 +02:00
52b94003bf Fix popup not opening 2021-10-27 20:10:21 +02:00
13bd280062 Get event bus to work (for some values of work) 2021-10-26 23:16:11 +02:00
209e4221d2 Start adding event bus 2021-10-26 22:20:50 +02:00
c4832a9ef7 Comment out temporarily unused commands 2021-10-26 20:11:26 +02:00
6cb8cc174b Prevent multiple concurrent vue app instances 2021-10-26 20:11:03 +02:00
e9b882376c Simplify player data dimension change tracking a bit 2021-10-26 00:30:38 +02:00
a4948d3eef Whitespace 2021-10-25 23:13:35 +02:00
746a78577e UI for manual zoom and video alignment 2021-10-24 00:57:57 +02:00
268ef7dae3 push the popup thing a bit further 2021-10-22 00:31:04 +02:00
6c1d666fdf switch bootstrap icons with mdijs 2021-10-22 00:30:36 +02:00
53fb3e8f46 Add stretch actions to the popup, styling 2021-10-19 22:49:56 +02:00
2df0b1a0fb formatting 2021-10-19 22:49:28 +02:00
3846d1a926 Cropping now also works from in-player UI 2021-10-19 22:49:13 +02:00
2a747e11af Merge branch 'master' into feature/player-ui 2021-10-19 20:27:41 +02:00
cda6b4e10d Version bump n shit 2021-09-19 21:32:47 +02:00
502ce707e1 Style 2021-09-19 21:22:12 +02:00
5b1f73a69e Fix problem with autodetection 2021-09-19 21:22:05 +02:00
f7eba0974f Fix default settings 2021-09-19 21:21:23 +02:00
2ae84bccd8 update changelog 2021-09-15 03:13:02 +02:00
3ac3f1aee5 It would be good to disable frame check if AARD is halted or exited 2021-09-15 01:45:51 +02:00
23ca74afdb Add quick readme to the logger 2021-09-15 00:54:46 +02:00
7d894fb1e3 it is higly recommended to actually resolve those promises 2021-09-15 00:54:23 +02:00
b39e6be952 Add a directory for debugging resources (e.g. logs submitted by users).
Since logs can be rather extensive and, more importantly, may accidentally contain PI, we also have them on gitignore.
2021-09-14 23:25:57 +02:00
415ebf6821 Simplify video rescans 2021-09-14 23:22:59 +02:00
b1ec4f7387 Make framecheck ever so slightly async 2021-09-14 19:12:54 +02:00
820af9b133 Patch for netflix 2021-09-13 22:47:27 +02:00
54c88dcb2f we no longer have gitlab 2021-08-28 02:24:23 +02:00
104ed85d72 Get UI to show again 2021-08-26 01:34:59 +02:00
84de5927cd Try initializing UI again 2021-08-26 01:07:39 +02:00
1b829e095b Merge branch 'master' into feature/player-ui 2021-08-26 00:54:07 +02:00
cbb4624e25 Version bump stuff 2021-08-26 00:45:22 +02:00
2cb02ff3f2 fix 2021-08-26 00:45:12 +02:00
b8cd441109 misc fixes 2021-08-26 00:37:56 +02:00
86a8c23999 Change how halting AARD is handled 2021-08-25 23:13:02 +02:00
a2573b5aaf Add performance timing to ar detector + make it use animationFrame 2021-08-25 22:32:39 +02:00
ea8671f64b Tidy up ArDetector 2021-08-25 20:39:27 +02:00
a234903b8f Fix logging popup a bit 2021-08-24 02:13:05 +02:00
981da95cde The logger should be working again? 2021-08-24 00:57:29 +02:00
18fe17f00f Youtube: fix alignment issues with square-ish videos in normal player (#162). Fix issue with misalignment of featured videos on channel page 2021-08-17 19:39:00 +02:00
5ad8302084 Add missing conf for piped.kavin.rocks (fix #151) 2021-07-14 22:45:00 +02:00
cfcd0c5945 version bump 2021-07-14 22:06:50 +02:00
eb1b1cf73d changelog 2021-07-14 22:06:42 +02:00
95d3d962f4 I reckon we can drop ExtConfPatches for versions over a year old
like, everyone should have receiving this and future updates should be on 5.x, or at least on 4.5.x
2021-07-14 21:19:39 +02:00
6eb96f917d Goodies for #160 2021-07-14 21:17:32 +02:00
5847215097 Merge branch 'master' into feature/player-ui 2021-07-05 01:22:30 +02:00
d102a8cd7d fix popup 2021-07-05 01:17:10 +02:00
571ac92cd3 Version bump & changelog 2021-07-05 01:02:21 +02:00
246743203f whitespace + plex rule 2021-07-05 00:51:15 +02:00
1cc76ab3b1 Improve UI in advanced settings 2021-07-05 00:49:35 +02:00
5c9112a07b package.json: add npm run dev-[browser] scripts 2021-07-05 00:48:59 +02:00
d92b24a2f6 Merge branch 'master' into feature/player-ui 2021-06-13 02:19:39 +02:00
7729bf545e shut up some of dem vue warnings 2021-06-13 02:19:05 +02:00
c14aa99e5b Fix extconfpatches 2021-06-13 02:18:47 +02:00
2ced591ed4 Fix build errors 2021-06-12 23:23:47 +02:00
56dcd0feb3 Merge branch 'master' into feature/player-ui 2021-06-12 23:22:54 +02:00
c43b1daa42 Edge probably doesn't need the 'pls ensure you're up to date' warning anymore 2021-06-12 23:21:01 +02:00
5e0f7c6160 update package.json — npm start now builds for _all_ browsers 2021-06-12 23:12:04 +02:00
cbaa424fc4 Version bumps and changelogs 2021-06-07 22:16:03 +02:00
c2039da7c8 Make some labels less confusing 2021-06-07 21:57:40 +02:00
6d4b161b06 Fix for disneyplus maybe? 2021-06-07 21:56:57 +02:00
fef2c26cbe raise RAM, second attempt 2021-06-07 20:34:27 +02:00
50719113b1 Raise memory limits in build scripts. Also build edge version on the CI 2021-06-07 20:09:35 +02:00
4e407e2cf8 Edge is supported for a while now, actually. 2021-06-07 19:55:05 +02:00
336879a4a1 Version bump & changelog 2021-05-12 00:19:21 +02:00
7fd28616aa Fix incorrect stretch with fix-source stretch 2021-05-12 00:01:40 +02:00
fba6a8d604 Additional details in the popup 2021-05-11 22:45:08 +02:00
e5c1bcded1 Safety check 2021-05-11 22:44:24 +02:00
b99929063c Restore aspect ratio if offsets fail verification 2021-05-11 22:43:27 +02:00
18d7414b90 refactor 2021-05-11 22:42:51 +02:00
Tamius Han
4427844a41 Merge pull request #154 from tamius-han/dependabot/npm_and_yarn/lodash-4.17.21
Bump lodash from 4.17.20 to 4.17.21
2021-05-11 14:49:50 +02:00
dependabot[bot]
e92f53f590 Bump lodash from 4.17.20 to 4.17.21
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 14:38:04 +00:00
965a48c086 Remove some code that was only needed cos old edge 2021-04-12 20:54:42 +02:00
0edd82479e Put in console.errors on extension initialization. 2021-04-12 20:54:26 +02:00
338b219142 Since webExt polyfill ensures 'browser' is also present in Chrome, code for opening settings page from popup stopped working in Chrome 2021-04-12 20:36:42 +02:00
c504d5594c Version bump 2021-04-12 20:31:50 +02:00
9beeffc679 Force old chrome installs to force-enable the zoom limit 2021-04-12 20:30:42 +02:00
19e021ce8e Update 'what's new'? 2021-04-12 20:27:49 +02:00
c863447f3d ; 2021-04-12 20:25:44 +02:00
520b0b7ade Extra comments 2021-04-12 19:08:12 +02:00
48e12c8504 Fix player detection on videos wider than the monitor 2021-04-12 19:03:18 +02:00
60f940f4db try/catch in aspect ratio getter 2021-04-12 19:01:28 +02:00
0bed840b6f fix settings interface 2021-04-10 04:17:07 +02:00
ddbddc45a9 Whitespace and stuff 2021-04-10 04:10:22 +02:00
a039fd4ce4 Make isFullscreen a bit more lenient.
innerWidth|Height and screen.width|height no longer need an exact match
2021-04-10 04:10:12 +02:00
d3c3c99069 fix 'is extension enabled' query 2021-04-10 04:09:00 +02:00
843a405323 get settings for current site function 2021-04-10 04:08:35 +02:00
cb548c3a3d aspect ratio is a getter now. Use said getter 2021-04-10 04:08:09 +02:00
d406438527 Enable zoom limit for new installs in Chrome as well 2021-04-10 04:03:14 +02:00
6737061713 Add new settings option 2021-04-10 04:02:52 +02:00
46c635b11b Chrome still has that bug 2021-04-08 21:53:49 +02:00
5f04c03f80 Correct changelog to account for Edge. 2021-04-05 03:31:07 +02:00
dbf96f97b6 Fix :disabled for a certain checkbox 2021-04-05 03:30:49 +02:00
861e62dc56 Add confPatch for Edge 2021-04-05 03:30:29 +02:00
1b00420388 correct the interface 2021-04-05 03:29:56 +02:00
0ac57ca2ac add target:blank to links 2021-04-05 03:29:35 +02:00
58e29f4590 Remove logging, typos 2021-04-04 23:55:49 +02:00
8e544a6ae0 make build-all script windows-friendly (or windows-friendlier)
still requires bash tho
2021-04-04 23:55:34 +02:00
2cf42cb6ed Add link to blog 2021-04-04 23:19:50 +02:00
93eb67ca49 Prevent recursing 2021-04-04 23:19:43 +02:00
58302ea87c move @types/node to dev dependencies 2021-04-04 15:54:28 +02:00
f17bae8f39 more vscode configuration stuff 2021-04-04 15:53:06 +02:00
fee73519e6 formatting 2021-04-04 15:48:46 +02:00
5d1ad6f935 remove unnecessary logging 2021-04-04 15:48:33 +02:00
6d07fc24e4 we did a npm -i again 2021-04-04 15:48:11 +02:00
a720556ac9 typos and dict update 2021-04-04 15:48:01 +02:00
0bc1254ce0 Merge branch 'master' into feature/player-ui 2021-04-04 03:59:08 +02:00
f8bd8e2eec Update "what's new" stuff. 2021-04-04 03:58:26 +02:00
d0beb137fe Version bump 2021-04-04 03:58:08 +02:00
c6e4d06fa1 Allow toggling chrome hardware acceleration bug workaround for people not experiencing it 2021-04-04 03:42:36 +02:00
190737b915 Merge branch 'master' into feature/player-ui 2021-04-01 23:50:08 +02:00
902f880a68 no stray logs 2021-04-01 21:44:07 +02:00
624c072bb3 Changelog + version bump 2021-04-01 21:43:19 +02:00
09253fe0a1 Unbork settings page even more 2021-04-01 21:40:58 +02:00
a0eeabbd50 Fix for #142, possibly 2021-04-01 21:24:19 +02:00
873a8cf3a8 Fix enum imports 2021-04-01 21:23:59 +02:00
9c1fb77dc8 Turn all logging off for release 2021-03-31 00:10:41 +02:00
0a3627c7fe Don't attempt height:auto compensation if style height compensation is active 2021-03-31 00:10:18 +02:00
2a4a3f7192 change mailto link 2021-03-30 23:40:06 +02:00
0b30688d59 update changelog a bit more 2021-03-30 23:39:41 +02:00
5cbfb70306 add some folds to code 2021-03-30 21:55:17 +02:00
63e40cf71a Compensate for height:auto in certain scenarios 2021-03-30 21:54:44 +02:00
d1baebcceb Add types, return crop strategy with stretch factors 2021-03-30 21:54:08 +02:00
c07916362e log a lil bit less. Fix mutation observer callback 2021-03-30 20:38:16 +02:00
d382b46464 Log a lil bit more 2021-03-30 01:11:39 +02:00
78c66a1543 update packages ... some of them, at least, so we can really use ResizeObserver 2021-03-30 01:11:11 +02:00
48319acc31 okay, we can't ditch mutationobserver 5ever 2021-03-30 01:10:37 +02:00
b634e4d2b3 remove some logging 2021-03-29 23:40:34 +02:00
03f37fa1a3 long live ResizeObserver, let's ditch MutationObserver five-ever 2021-03-29 23:30:54 +02:00
3185e500d1 Add resizer observer 2021-03-29 23:29:30 +02:00
bf010a243c changelog 2021-03-29 22:52:32 +02:00
9d2b480f3f Use webextension-polyfill in popup 2021-03-29 21:15:01 +02:00
b69a03d42f code cleanup 2021-03-29 21:14:03 +02:00
f1330570d6 fix popup not working 2021-03-29 21:07:54 +02:00
589a1fefbf fix import 2021-03-14 02:34:35 +01:00
d64b41a363 Revert "split popup into ts"
This reverts commit 73eb5ffe93.
2021-03-14 02:33:04 +01:00
e7613aa691 Revert "okay what the actual fuck"
This reverts commit a9ab8d8b92.
2021-03-14 02:32:40 +01:00
e272d1d4d4 Revert "Move popup to vue"
This reverts commit 5b0fcef15c.
2021-03-14 02:32:34 +01:00
0dc196127e Revert "fix imports"
This reverts commit d644395b35.
2021-03-14 02:32:28 +01:00
42394a48bc Revert "fix vue imports"
This reverts commit cd7a1de548.
2021-03-14 02:32:22 +01:00
6546ad2166 Add module resolution to tsconfig 2021-03-14 02:32:14 +01:00
cd7a1de548 fix vue imports 2021-03-14 02:10:41 +01:00
d644395b35 fix imports 2021-03-14 01:29:05 +01:00
5b0fcef15c Move popup to vue 2021-03-14 00:34:47 +01:00
dependabot[bot]
bd1a904fd5 Bump elliptic from 6.5.3 to 6.5.4
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-11 23:16:21 +00:00
a9ab8d8b92 okay what the actual fuck 2021-03-12 00:14:52 +01:00
bb3fcc646e Update changelog.md 2021-03-11 22:00:23 +01:00
0f5111e1e2 add vue cli typescript plugin 2021-03-11 21:58:43 +01:00
73eb5ffe93 split popup into ts 2021-03-11 21:58:12 +01:00
8cefa4af2f add vue shim 2021-03-11 21:57:44 +01:00
ede570865f Migrate some more things to typescript 2021-03-11 21:04:09 +01:00
038191d38e Merge branch 'master' into feature/player-ui 2021-03-06 04:07:03 +01:00
6a1f07d881 Merge branch 'typescriptify' 2021-03-06 04:02:59 +01:00
6c59c009e5 Move some last remaining enums to typescript 2021-03-06 04:01:47 +01:00
4354393f79 Do the version bump 2021-03-06 03:57:10 +01:00
d215a10486 move most of the main content/background script to ts 2021-03-06 03:35:33 +01:00
a699166368 Some arguments need to be optional 2021-03-06 03:34:38 +01:00
b83be3de7d More types for logger 2021-03-06 03:34:22 +01:00
db287adaed Remove vestigial code 2021-03-06 02:54:22 +01:00
7714adb843 Fix keyboard shortcuts 2021-03-06 02:53:58 +01:00
3eca178df5 Add type to ports 2021-03-06 02:22:56 +01:00
87310f95cc remove some logs 2021-03-06 02:07:09 +01:00
57ad81a7a4 Move comms to ts (3/3 | client) 2021-03-06 02:06:46 +01:00
c1e0e7b280 Move comms to ts (2/3 | server) 2021-03-06 01:27:28 +01:00
006c9ef975 Move comms to ts (1/3) 2021-03-06 01:23:58 +01:00
08fceafc17 Use browser-polyfill in settings 2021-03-06 01:22:09 +01:00
357d4829eb Fix logger 2021-03-06 01:21:31 +01:00
e5d1addc00 ??? 2021-03-05 23:39:12 +01:00
d4868020f4 DrmDetector can into typescript 2021-03-05 23:35:32 +01:00
7e41768aba Migrate actionhandler to ts 2021-02-20 00:09:17 +01:00
075168ed85 Convert all remaining vars to lets 2021-02-18 22:38:32 +01:00
8475340999 Fix problems in ArDetector and related functions 2021-02-18 22:35:58 +01:00
a3bd8a8b7e convert ArDetector to ts 2021-02-18 22:29:23 +01:00
7e49b493bb Merge branch 'master' into typescriptify 2021-02-18 19:06:37 +01:00
888ffcaded Version bump & update notes 2021-02-18 19:06:23 +01:00
83b8ce0aaa Fix drm detection, but hopefully for real 2021-02-18 19:03:48 +01:00
7f77847baa migrate additional things over from master branch 2021-02-18 01:08:12 +01:00
72da7eb5f4 Merge branch 'master' into typescriptify 2021-02-18 00:15:38 +01:00
5c6ea49c66 Version bump + version notes 2021-02-18 00:13:51 +01:00
6de5ae6355 Fix false positive 'this site cant work cos drm' errors ... xcept for real 2021-02-18 00:13:34 +01:00
ec2cd3d6a0 Fix DRM detector bugs 2021-02-17 01:06:11 +01:00
6031e35133 Add new DRM detection. Do it _before_ launching AARD 2021-02-17 00:51:56 +01:00
b322ef0db1 Fix for #134 2021-02-17 00:23:55 +01:00
4febd2f602 fix 2021-02-17 00:20:30 +01:00
46360d1b1f remove typo from comment 2021-02-09 00:54:04 +01:00
2d8bf0c0ee Move some more files to typescript 2021-02-09 00:52:58 +01:00
a907d0d404 Finish moving videoTransform stuff to typescript 2021-02-09 00:42:52 +01:00
0117d44422 Move settings to typescript. Add interface for settings object 2021-02-09 00:37:54 +01:00
4fdd6af291 Add additional types 2021-02-08 23:23:15 +01:00
9a864bc11c Migrate pseudo-enums to typescript enums. Fix related imports & stuff 2021-02-08 23:04:54 +01:00
ee3ccef0e4 Migrate first batch to typescript 2021-02-08 22:45:51 +01:00
d9053e26b5 update configs 2021-02-08 22:45:41 +01:00
efefa4ef32 update packages 2021-02-08 22:45:34 +01:00
cfc7f6aca6 add new packages 2021-02-08 21:05:27 +01:00
3b79829b72 Do tsconfig and webpack 2021-02-08 20:55:17 +01:00
4d1da636e3 Log just a little on master as well 2021-02-08 20:47:06 +01:00
226cfb654e We don't need this logging on master
This reverts commit dc71a25863.
2021-02-08 20:45:57 +01:00
dc71a25863 Do additional logging 2021-02-08 20:44:49 +01:00
cb5218e52d Only allow one instance of offset validation watcher per video element 2021-02-08 20:44:34 +01:00
f63fd895fe Rework observers a little. Debounce offset validation in videoData 2021-02-08 20:43:56 +01:00
5efa8c88c1 Additional anti-recursing measures, pt 2 2021-02-07 12:54:20 +01:00
870384f83b Decrease callback frequency 2021-02-01 00:11:24 +01:00
02b4b44780 Additional anti-recursing measures 2021-01-31 23:55:50 +01:00
ea186d0aeb always return videoDimensions 2021-01-31 23:32:32 +01:00
96a5b8da8f Add a bit of 'maybe' to "whoops no Aard on this site" notification 2021-01-31 17:57:35 +01:00
f961c8aea8 Don't do logging by default 2021-01-31 17:44:33 +01:00
f3a9c06f92 Anti-recursing measures 2021-01-31 17:44:24 +01:00
78c04523c0 Prevent some more errors 2021-01-31 16:46:33 +01:00
fff575f762 Version bump 2021-01-31 01:54:33 +01:00
bc19164c25 fix pt 4 2021-01-31 01:42:08 +01:00
3ab619799a fix pt 3 2021-01-31 01:34:43 +01:00
f1613b950c fix a lil bit more 2021-01-31 01:18:35 +01:00
ee9599d040 bind this for shits and giggles on onPlayerDimensionsChanged 2021-01-31 01:04:31 +01:00
851f0e0e84 fix pt 2 2021-01-31 00:58:43 +01:00
56ebd2d36c Fix 2021-01-31 00:47:32 +01:00
38d1be5fc2 fix condition 2021-01-31 00:24:02 +01:00
35208cf9e8 log wtf is going on with scaler and resizer 2021-01-30 13:50:11 +01:00
0aa7beb525 Fix chrome condition test 2021-01-30 13:31:30 +01:00
71cb357424 Fix imports 2021-01-30 13:07:19 +01:00
bc5d5046df Webpack fix 2021-01-30 12:21:04 +01:00
5bd2952437 Fix chrome bug .. hopefully 2021-01-30 12:16:37 +01:00
9a0c0ba810 whitespace 2021-01-30 12:16:27 +01:00
a5bf3ec1e0 Remove redundant code 2021-01-30 10:38:45 +01:00
84da78e2e8 expose videoData objects via window.ultrawidify 2021-01-27 00:41:42 +01:00
13b89eb2a9 Add sample button from old config 2021-01-27 00:41:13 +01:00
89c524a690 add video settings placeholder to the UI 2021-01-21 00:21:15 +01:00
d44d1b6e64 add getRuntime() to BrowserDetect 2021-01-21 00:20:43 +01:00
8ea5b3d5be add toString() method to an enum 2021-01-21 00:20:27 +01:00
f8c774700e Merge branch 'master' into feature/player-ui 2021-01-20 22:58:40 +01:00
ef410d9e01 Changelog 2021-01-13 19:33:36 +01:00
328eba1d6c Version bump 2021-01-13 19:33:31 +01:00
b819fc816b Fix DRM detection for Chrome 2021-01-13 01:12:03 +01:00
1410f699c5 Add video status checks 2021-01-13 01:11:55 +01:00
be6df178f6 Optimize catching DRM protected videos. 2021-01-13 01:11:44 +01:00
2a7001ea3a fix 2021-01-13 00:22:42 +01:00
e2eaa206e4 remove console.logs 2021-01-12 23:35:58 +01:00
437890a609 Documentation & comments 2021-01-12 23:28:27 +01:00
2025547d33 Un-initalize videoData on illegal video dimensions ($
When youtube changes between two videos, video dimensions briefly become 0x0. This is super duper illegal and sometimes causes the behaviour described in issue #125. Setting VideoData.videoLoaded to false fixes this.
2021-01-12 23:28:17 +01:00
884db1c5e3 Do event listeners properly 2021-01-12 23:24:20 +01:00
aa1ccedad5 Cosmetic changes 2021-01-12 23:19:04 +01:00
df2b0f5614 Add toString method to aspect ratio enum 2021-01-12 23:18:14 +01:00
aec87e7681 Don't assume jenkins build number is always there, cos it's not on local builds 2021-01-10 20:46:41 +01:00
bf26961aaa Fix formatting in what's new panel 2021-01-10 18:07:58 +01:00
67ad0c54b4 Apply some styling to the edge warning box 2021-01-10 17:43:11 +01:00
fda7b38fa1 fix 2021-01-10 17:25:36 +01:00
5b5f4204bb Version bump 2021-01-10 17:22:12 +01:00
167b9d4305 Disney+ should be fixed? Maybe? See #84 2021-01-10 17:22:02 +01:00
0760e447db Changelog updates 2021-01-10 17:21:23 +01:00
897e65567b add note in the popup 2021-01-10 16:12:35 +01:00
7e403e3406 Edge issues are fixed, so the popup goes. 2021-01-10 16:12:20 +01:00
7cb378029c Some cosmetic changes in BrowserDetect 2020-12-30 15:35:54 +01:00
f4ff7e7ed6 Distinction between chrome build and edge build, and "doesn't matter which of the two" build. 2020-12-30 15:35:08 +01:00
4c359675b6 Build edge version of the addon separately from Chrome 2020-12-30 15:14:03 +01:00
5987fda0b2 Merge branch 'master' into feature/player-ui 2020-12-29 20:36:06 +01:00
066b74e1ac Version bump 2020-12-29 20:34:59 +01:00
af7833a372 Changelog notes 2020-12-29 20:34:02 +01:00
f554030f3c Don't set AR if video dimensions are undefined. 2020-12-29 20:20:00 +01:00
0e0eb57fd9 Merge branch 'master' into feature/player-ui 2020-12-29 18:33:54 +01:00
485a5c13f0 Rewrite popup 2020-12-25 01:27:05 +01:00
bb8d63f67d update base css 2020-12-25 01:26:52 +01:00
6340541daf Attempt to load fonts in popup 2020-12-25 01:26:46 +01:00
028aceef2c Version bump + changelog 2020-12-24 23:27:19 +01:00
5e96cdcad8 Alternative fix for streamable (#128) 2020-12-24 23:26:22 +01:00
c04780bb16 Make a comment explaining reversal to ensure we wont do that thing again 2020-12-24 22:58:48 +01:00
84d33a9ccb Revert "Add 'position:absolute' to video css when setting AR (fix #116)"
This reverts commit a5ef24a50f.
2020-12-24 22:54:20 +01:00
b30369dfea Changelog update 2020-12-23 02:09:30 +01:00
a5ef24a50f Add 'position:absolute' to video css when setting AR (fix #116) 2020-12-23 02:04:06 +01:00
9b1067afc4 Formatting 2020-12-23 02:03:39 +01:00
433057bb19 Edge popup fixes 2020-12-23 02:03:32 +01:00
3704ea7962 Make logger and options object optional for Settings 2020-12-23 02:01:52 +01:00
76b380d6c3 console.log removal 2020-12-23 01:59:49 +01:00
804509b3c5 Move the code that shows the Edge popup back to PlayerData 2020-12-23 01:15:11 +01:00
1e8fd6aad4 Enable aard on netflix for new users, even on Chromium-based browsers
This was done because the edge popup is dependant on autodetection at least attempting to start. Also, we want to show 'autodetection won't work cos drm' on netflix for other chromium-based users.
2020-12-23 01:14:29 +01:00
fbcf4c0c19 Target:blankify all links on the popup. Other minor adjustments. 2020-12-23 01:13:05 +01:00
0234ea7871 Update changelog & bump version 2020-12-22 23:23:36 +01:00
75ec1969c0 Move edge warning popup into the starting phase of autodetection 2020-12-22 23:23:03 +01:00
bcc3d89342 Reset aspect ratio on aard fail 2020-12-22 22:25:41 +01:00
e4194e029c Additional popup updates 2020-12-22 22:25:12 +01:00
d673ed089f Don't commit extension configs submitted by the people reporting a problem. 2020-12-22 21:44:36 +01:00
96ddc8a84b Write the promised blog post & include it in the popup message. 2020-12-22 21:43:45 +01:00
70f7b88d71 Try to fix extension unsetting Netflix' default AR 2020-12-22 03:32:56 +01:00
f174ddab68 Only show the popup in Edge 2020-12-22 03:21:14 +01:00
f7c373481d Add popup for Edge 2020-12-22 03:14:03 +01:00
33d16221cc Remove some logs 2020-12-22 00:12:52 +01:00
dd4d71a496 Add anchor for player UI (base for reworking stuff into Edge 'doesnt work' warning) 2020-12-22 00:12:28 +01:00
c2f1c6980f Fix popup interface not updating — #127 2020-12-21 23:28:23 +01:00
c0c454f3ef Add afterSettingsSaved callback 2020-12-21 23:27:45 +01:00
4b5c5a8dce Fix popup not working at all in Chrome 2020-12-21 19:29:52 +01:00
becf7c328e Add workaround for Chrome refusing to do chrome.runtime from Proxy objects 2020-12-21 19:29:39 +01:00
fbe58ec54d Add static class properties thing to babel 2020-12-21 19:27:34 +01:00
609247cbf0 Fix 'fit height' a little 2020-12-20 01:00:06 +01:00
a9f99d93be Fix aspect ratio calculations on height-compensated videos, episode 1 2020-12-19 03:18:14 +01:00
be82c4dae6 Fix a crash 2020-12-19 03:02:20 +01:00
94a9b1e56f fix 2020-12-18 01:50:00 +01:00
769ff6aace Fix the issue where videos on players that were narrower than the video got cropped a lil bit too much 2020-12-18 01:44:45 +01:00
6e1fe930ac Remove Edge/Microsoft store links from description 2020-12-17 01:51:10 +01:00
93b8049b01 Move debug data into a separate component/panel 2020-12-17 01:49:28 +01:00
5cf74b4405 Fix typo in one of the mutations 2020-12-17 01:49:15 +01:00
2aa91df820 Add additional data to debug popup 2020-12-17 01:48:45 +01:00
85fedbfeaf Fix base css 2020-12-17 01:48:29 +01:00
1cbe74252c display some data 2020-12-16 01:40:09 +01:00
9fb9667dba fix base css 2020-12-16 01:36:00 +01:00
55b6ca7392 fix comms 2020-12-16 01:35:39 +01:00
758c2bf0bc Report data to the UI 2020-12-16 00:19:37 +01:00
6eed271814 Display such data in a very rudamentary way 2020-12-16 00:19:20 +01:00
7a5a4bddf8 support passing debug data between content script and UI 2020-12-16 00:19:02 +01:00
3f8ea683ef Add toString() method to selected enums 2020-12-16 00:18:23 +01:00
29dff35bb4 Merge branch 'master' into feature/player-ui 2020-12-15 21:57:03 +01:00
c1c9dd1625 Version bump 2020-12-15 20:29:33 +01:00
ffa38cf4ff Readme fixes 2020-12-15 20:28:36 +01:00
3d64a08b08 Remove autoarPreventConditions — they're redundant with new way of calculating AR and, as of now, interfere with netflix' ultrawide workarounds 2020-12-15 20:13:23 +01:00
79462c320d Add anchor for player UI 2020-12-15 00:26:19 +01:00
7881ae5290 Update roadmap in changelog 2020-12-14 20:39:28 +01:00
2d6052d715 Update changelog 2020-12-13 23:59:28 +01:00
b4e8622af3 Add hint text in options -> add action popup 2020-12-13 23:31:27 +01:00
7c2cd5cf03 fix icon padding in notification 2020-12-13 23:30:52 +01:00
2a350f404a Remove some logging 2020-12-13 18:54:32 +01:00
6907f65439 Fix code that replaces notification UI so it no longer crashes restore() inside updatePlayerDimension() 2020-12-13 18:54:10 +01:00
5713037c4d Prevent notification UI from blocking website interface 2020-12-13 16:55:30 +01:00
cd26a1ceed Prevent page css from effecting CSS of notification popups (...ish) 2020-12-13 02:03:17 +01:00
c05eed44f0 Did a very bad thing (tm) to appease Chrome (bootstrap icons svg was copied directly into Icon component) 2020-12-13 01:11:52 +01:00
f27b3f1895 Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/ini-1.3.7' 2020-12-12 00:38:59 +01:00
f4f69d4eaa Nest ultrawidify classes inside a css class that guarantees reset of global css 2020-12-12 00:38:51 +01:00
1badce511e add ms icons 2020-12-12 00:12:12 +01:00
dependabot[bot]
595109024a Bump ini from 1.3.5 to 1.3.7
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.7.
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.7)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-11 20:46:40 +00:00
f55731e793 fix popup 2020-12-07 00:09:28 +01:00
6061a3efc5 Add DRM check for Chrome 2020-12-07 00:09:08 +01:00
b6cae36528 fix? 2020-12-07 00:07:59 +01:00
7d8f3912bb Fix extension popup in chrome 2020-12-06 21:57:16 +01:00
eb02865131 Sorta include browser-polyfill but not really
I'm still not rewriting legacy code, but the bRoWsEr iS uNdEfInEd bullshit in (browser || chrome).runtime call there in the notifications pushed some buttons. cc #114
2020-12-05 04:12:37 +01:00
0310e1e2de Finish notification system (for now) 2020-12-05 03:30:43 +01:00
12b15c58f8 LPT: injected components won't get CSS styles if you don't include them in manifest.json 2020-12-05 00:45:48 +01:00
4635dc4eec fix ui 2020-12-04 02:02:25 +01:00
0a5243837f Make buttons unselectable (prolly) 2020-12-04 00:54:03 +01:00
37eccb12f2 Fix normal-sized popup 2020-12-04 00:53:51 +01:00
84db9361f9 Fix default icon margins 2020-12-04 00:53:20 +01:00
3fd432f432 Extra styling for the button 2020-12-04 00:26:39 +01:00
d4947571a4 Try injecting notification UI 2020-12-03 01:35:48 +01:00
e8e9db2bbc Add scss imports 2020-12-03 01:35:34 +01:00
4ed998a9ab Fixes 2020-12-03 01:35:22 +01:00
7900bd18db Pointless changes to logging 2020-12-03 01:16:57 +01:00
357b7a0365 I removed this and stuff still works, therefore it must not have been important 2020-12-03 01:05:57 +01:00
145b237701 Additional logging / change logging 2020-12-03 01:05:39 +01:00
38ef7905c7 Fix a rookie mistake + rename the class 2020-12-03 01:03:29 +01:00
38641df28e add classes for notification UI.
The UI classes are split into "general UI" part — a base class that could potentially be used for proper in-player UI if we ever get to that point — and part that's specific to our notification requirements.
2020-12-03 00:34:50 +01:00
55fbd30699 Add notification UI component 2020-12-03 00:32:33 +01:00
5e4aca66c5 Fix icon css 2020-12-03 00:32:17 +01:00
8325e44a0e Plant a typescript seed into webpack config 2020-12-02 22:39:57 +01:00
a91ed7368f Add icon component 2020-12-02 22:39:43 +01:00
cda4b81554 Add bootstrap icons 2020-12-02 22:39:07 +01:00
be759c512a Version bumps 2020-12-01 01:49:55 +01:00
cfde1ee58c Update changelog with stuff that was done today 2020-12-01 01:48:52 +01:00
db866bf8d8 Add support for wakanim.tv (#113) 2020-12-01 01:48:31 +01:00
d32c083406 Fix quick setting dialogue when extension is in extension overflow menu (#119) 2020-12-01 01:46:53 +01:00
e56551c79d Remove redundant code 2020-12-01 00:22:22 +01:00
97099ece1c Merge branch 'vue3' 2020-12-01 00:21:29 +01:00
f05f37841a Fix logger UI 2020-12-01 00:20:10 +01:00
dbc0c8c741 Fix 'about' section of the options page 2020-11-30 00:50:13 +01:00
2ab01c1013 optionally chain _all_ the things. Again. 2020-11-30 00:38:38 +01:00
ada7e69abd Fix options and popup pages 2020-11-30 00:37:45 +01:00
27e03115d2 Migrate to vue3. Debug popup is broken ATM 2020-11-30 00:17:46 +01:00
1b6d20fa0b Turns out vue update updated jack shit, so optional chaining operators are gonna disappear from vue templates again 2020-11-22 22:48:07 +01:00
aa186da1bd Bump vue 2 2020-11-22 22:46:49 +01:00
a6a09a10b5 Add optional chaining operators back
This reverts commit e25a0a954c.
2020-11-22 22:46:49 +01:00
e25a0a954c Revert "optionally chain _all_ the things"
This reverts commit 1858e092a9.
2020-11-22 22:17:28 +01:00
09f203dd64 Bump vue two major versions #yolo 2020-11-22 22:15:43 +01:00
1858e092a9 optionally chain _all_ the things 2020-11-22 22:12:52 +01:00
e5f2bde6bc add custom setter for settings 2020-11-22 22:12:37 +01:00
0848b2fe67 Some things break youtube, so baseClass is split off into its own component differently 2020-11-06 00:03:11 +01:00
691675bdc2 Awaitable responses to injectCss (& the rest of the gang) 2020-11-05 23:56:41 +01:00
1e70ea51cf This is handled via base class 2020-11-05 23:56:06 +01:00
f8e3a39620 Fix setBaseClass function 2020-11-05 23:55:42 +01:00
6b91444f3c Set, unset base class functions 2020-11-05 23:12:03 +01:00
4f7fc75d6b Version bump 2020-10-25 22:24:30 +01:00
51735ad8c2 What's new 2020-10-25 22:11:24 +01:00
78c34c77e0 Fix for cruncyhroll (#115) 2020-10-25 22:07:38 +01:00
65dacee829 Version bump 2020-10-21 23:56:38 +02:00
288f2334f6 Changelog 2020-10-21 23:55:42 +02:00
43a86a7495 Destroy old pageInfo instance when initializing WU 2020-10-21 23:52:49 +02:00
28c12861e5 Change action handler 2020-10-21 23:52:16 +02:00
7fb9aad0d0 misc fixes 2020-10-21 23:51:58 +02:00
48167623ff Force user styles a bit harder 2020-10-21 21:42:22 +02:00
43b136ca46 Fix crashing when checking player size 2020-10-21 21:26:00 +02:00
ec83830e78 Force zero margins on <video> element.
This should fix issues with alignment on twitch and hulu, et al.
2020-10-21 19:49:26 +02:00
7093236237 fix some issues related to panning 2020-10-21 19:48:56 +02:00
c7d133ba3d ensure aspect ratio only gets changed on aspect ratio changes 2020-10-21 19:48:04 +02:00
47475ac597 document aspect ratio enum 2020-10-21 19:46:25 +02:00
4f478a4667 Calculate "real" displayed side of video instead of relying on offsetWidth 2020-09-23 00:23:24 +02:00
b55d9dd7b9 fix? 2020-09-23 00:19:42 +02:00
02fa4e2fe8 style fixes 2020-09-20 12:26:03 +02:00
e5206b524f Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/bl-3.0.1' 2020-09-20 12:25:24 +02:00
dependabot[bot]
5695534a9a Bump bl from 3.0.0 to 3.0.1
Bumps [bl](https://github.com/rvagg/bl) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/rvagg/bl/releases)
- [Commits](https://github.com/rvagg/bl/compare/v3.0.0...v3.0.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-02 16:26:01 +00:00
ca6083b0ee version bump 2020-07-25 13:02:33 +02:00
8d29e7b5bb fix prepare-amo-source script 2020-07-25 13:02:25 +02:00
7f9766ff95 Add .nvmrc 2020-07-25 12:57:30 +02:00
5098c45174 Merge remote-tracking branch 'origin/dependabot/npm_and_yarn/lodash-4.17.19' 2020-07-25 12:54:10 +02:00
6ca6fcd10c update libraries 2020-07-25 12:53:58 +02:00
86a184fe29 Remove build for old edge 2020-07-25 12:43:15 +02:00
19f2ef7d68 Yet another readme update 2020-07-25 12:42:04 +02:00
dependabot[bot]
74ea6fa238 Bump lodash from 4.17.15 to 4.17.19
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-18 06:59:55 +00:00
87a65d4af2 Updated readme 2020-06-28 21:51:26 +02:00
2eec8b3ef9 readme update & version bump 2020-06-18 22:27:52 +02:00
cfa0c4e2c8 Update build scripts 2020-06-18 22:22:43 +02:00
ced35084ba Reproducibility test 2020-06-18 22:12:45 +02:00
20346a784e Re-allow minification. Remove source maps from prod build. 2020-06-18 22:12:28 +02:00
4f6f946245 properify readme some more 2020-06-16 21:41:16 +02:00
16a2a424d2 Remove redundant info from README-AMO 2020-06-16 21:40:03 +02:00
2aea741372 Fixes for README-AMO preparation 2020-06-16 21:35:46 +02:00
53073ecdfa README-AMO updates 2020-06-16 21:35:21 +02:00
8216965533 Variable fix 2020-06-14 23:46:22 +02:00
88ce945a47 Include node/npm/linux versions in README-AMO.md, rename README-AMO.md to README.md when including it into the archive 2020-06-14 23:41:02 +02:00
fef30ce3e9 Fix script that packs source code for AMO 2020-06-14 21:48:04 +02:00
0cdbb19b7a Readme+changelog update 2020-06-05 00:59:44 +02:00
69e44c4964 version bump 2020-06-05 00:59:12 +02:00
d59a78b039 Hopefully this fixes #104. Turns out 'location.host' and 'location.hostname' aren't quite interchangeable 2020-06-04 22:47:04 +02:00
e7957b6503 Extra logging 2020-06-04 22:44:53 +02:00
3b4b52f6a1 logging fixes 2020-06-04 22:15:32 +02:00
a4bca8af45 Additional fixes for #101 — if illegal video dimensions are detected, tell VideoData to reset/reapply aspect ratio when video starts playing again 2020-06-04 21:51:22 +02:00
cc53df5999 Youtube player detection goes back to auto by default 2020-06-02 01:05:03 +02:00
a271b4d63e fix observer 2020-06-02 00:52:23 +02:00
5c73f97c54 Add player dimension sanity check to resizer 2020-06-01 23:54:42 +02:00
ecc65676f2 cosmetic fix 2020-06-01 23:54:24 +02:00
619d89c4f5 Break videoData setup into two stages for improved stability 2020-06-01 23:54:10 +02:00
fe66c9dfbc Diversify logging: in addition to console.log, use .warn .info .error as well 2020-06-01 23:53:03 +02:00
95d8d8a8cb Fix minor issue 2020-06-01 23:52:29 +02:00
ee7d958224 Fix settings 2020-05-29 22:50:39 +02:00
88a3298cfa fix launch.json 2020-05-29 22:50:07 +02:00
4a761efaed Find all blacklisted origins in stack 2020-05-29 22:06:24 +02:00
fc8d011758 Additional fixes 2020-05-17 02:30:16 +02:00
3708b99186 version bump 2020-05-17 02:17:59 +02:00
291c4fdd4d changelog update 2020-05-17 02:17:52 +02:00
7d8758d1ee Do old frame cleanup with polling 2020-05-16 22:50:29 +02:00
9019963597 fix single video control not working 2020-05-16 22:02:06 +02:00
7bb3d079f7 Fix issue with chrome not hiding frame/video numbers 2020-05-16 21:35:24 +02:00
84470846ef Typo fixes & addign words to dictionary 2020-05-16 20:52:37 +02:00
c17e6f0f6d Discern popup of dev/nightly/testing versions from stable version 2020-05-16 20:31:56 +02:00
a0031be90a unfuckywucky the icons 2020-05-14 00:01:18 +02:00
ed0e51114c Change timeouts again 2020-04-30 00:40:12 +02:00
1646958449 version bump 2020-04-30 00:14:36 +02:00
e1b062f19e increase number of retries 2020-04-30 00:14:26 +02:00
ff0dc23d5d Fix build generate script 2020-04-29 23:21:32 +02:00
cb91e2a09f Forgot to bump version in manifest 2020-04-29 23:03:22 +02:00
103ecf7a83 Version update stuff 2020-04-29 22:55:20 +02:00
ccde079aee If video dimensions are invalid, wait a little and check again before performing the crop calculation 2020-04-28 03:05:55 +02:00
10f1bae7de move sleep function to a separate fire 2020-04-28 03:04:15 +02:00
dfdc26fe2b fix font imports 2020-04-28 00:35:41 +02:00
06cc9220c2 scope styles for jsonElement 2020-04-26 16:26:15 +02:00
a7f654650d Logging when file loads 2020-04-13 15:20:29 +02:00
ff525f159b try rescoping 2020-04-13 14:35:04 +02:00
44eef78d29 whitespace removal 2020-04-13 14:31:01 +02:00
7c80da3b5a add ms certification notes 2020-03-22 02:43:45 +01:00
Tamius Han
d2a6dfe55d Merge pull request #98 from tamius-han/dependabot/npm_and_yarn/acorn-6.4.1
Bump acorn from 6.4.0 to 6.4.1
2020-03-15 20:41:58 +01:00
Tamius Han
7873777b96 Merge pull request #99 from tamius-han/stable
Merge branch 'master' into stable
2020-03-15 20:41:02 +01:00
1268c2b0cc Merge branch 'master' into stable 2020-03-15 20:39:31 +01:00
d6e6c4ad40 Don't include some files in final package 2020-03-15 20:28:38 +01:00
0272597bda hide zoom&panning options as they don't work anyway 2020-03-15 20:20:04 +01:00
2e7b7f6c30 Popup: fix 'tab' sidebar max width 2020-03-15 20:19:48 +01:00
e447b39beb Delete invalid keys from manifest.json for Chromium-based browsers 2020-03-15 20:19:24 +01:00
9df8bdf3b9 manifest.json fix 2020-03-15 20:01:45 +01:00
95676d5343 Changelog 2020-03-15 19:56:52 +01:00
309f738d25 version bump 2020-03-15 19:56:47 +01:00
d2bd215877 Update AMO readme 2020-03-15 19:47:46 +01:00
c2ebe34ab6 Disable logging + extra notes 2020-03-15 19:47:38 +01:00
c83f8530f8 emit/handle loggingEnded 2020-03-15 19:16:27 +01:00
e9795f4a00 Add new thing to vue store 2020-03-15 19:14:33 +01:00
dependabot[bot]
d63197b13a Bump acorn from 6.4.0 to 6.4.1
Bumps [acorn](https://github.com/acornjs/acorn) from 6.4.0 to 6.4.1.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/6.4.0...6.4.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-03-15 16:31:13 +00:00
72a3bba8ad Auto-show logger popup is logging to file is enabled 2020-03-13 00:29:19 +01:00
f0cc710621 fix imports 2020-03-13 00:28:41 +01:00
49ca4b64e3 forwarding logs to UI 2020-03-13 00:28:34 +01:00
06a2f67759 Fix saving logs 2020-03-13 00:19:39 +01:00
783684570c actually wait, we still need logger to save to vuex 2020-03-13 00:17:14 +01:00
5998b6c0b2 Functions for sending to specific frame/port 2020-03-13 00:13:00 +01:00
6a3cc8e03e Use sendmessage instead of vuex store in logger 2020-03-13 00:12:42 +01:00
a629bbeab7 Logger cosmetics 2020-03-12 23:36:06 +01:00
7e74aa2c3b Add ignoreKeys property to JsonEditor 2020-03-12 23:35:52 +01:00
9a5ccf1602 JsonEditor uses monospace 2020-03-12 00:49:40 +01:00
d7d0f69a58 Update logger settings from JsonEditor 2020-03-12 00:49:24 +01:00
217206ca1e Change how strings and text are editable (submit on enter), colorify json 2020-03-12 00:37:57 +01:00
a7fa66b840 Prevent typing in logger popup from triggering page shortcuts 2020-03-12 00:37:15 +01:00
4df771aae1 Remove pre 2020-03-12 00:36:34 +01:00
77f3ce0e39 Display logger conf with json components 2020-03-11 23:12:29 +01:00
b353e6f34d Fix json components 2020-03-11 23:12:18 +01:00
e9dfd834f7 Load UI css with extension 2020-03-11 23:11:55 +01:00
c9b354e06a Add json structure editor 2020-03-11 00:15:53 +01:00
7b845553e2 remove player images 2020-03-10 21:00:54 +01:00
fe72a4fdec Fonts: remove .woff (since css only loads woff2 anyways), extrabold, heavy 2020-03-10 20:17:17 +01:00
6e6b3522fe Merge branch 'stable' 2020-03-10 00:04:42 +01:00
bf0d3b99cf Version bump 2020-03-10 00:04:09 +01:00
7d4e4fc520 Fix disney+ a bit more thoroughly 2020-03-10 00:03:12 +01:00
e4480a91ef Merge branch 'master' into stable 2020-03-09 22:36:26 +01:00
e2d393d500 Fixes for netflix, disney+ 2020-03-09 22:36:17 +01:00
ce6a22d31b Merge branch 'master' into stable 2020-03-09 22:08:20 +01:00
85290ae832 Version update 2020-03-09 22:07:54 +01:00
3f51048c1a Patch notes 2020-03-09 22:06:34 +01:00
a81c5765e1 Minor fixes for chrome 2020-03-09 21:41:31 +01:00
cf1cc3d87a Fix logger popup initialization. 2020-03-09 21:29:39 +01:00
2a1419eb53 Fix uw script 2020-03-09 21:29:24 +01:00
0edb5d5c4f add words to dictionary 2020-03-09 21:29:10 +01:00
5b417d3f47 cosmetic fix 2020-03-09 21:29:00 +01:00
eee7d622b8 Revert logging oopsie whoopsie 2020-03-09 19:41:15 +01:00
bbc4247893 Don't overwrite existing ports on connect 2020-03-09 19:39:24 +01:00
26757c0b2d Remove redundant code 2020-03-09 19:11:23 +01:00
b3fce146f5 Fix port naming 2020-03-09 19:11:08 +01:00
80c14f72be comment out dead imports and code 2020-03-08 18:47:01 +01:00
6ea2b0488d Fix console errors 2020-03-08 18:43:53 +01:00
5cc90ea368 Fix problems with uw-ui 2020-03-08 18:38:36 +01:00
d8181431ff Block show-logger until ui is initiated 2020-03-08 18:38:09 +01:00
e681a64f55 remove unnecessary code 2020-03-08 18:34:30 +01:00
92c4ba0c69 Remove paginfo and command declarations out of comms 2020-03-08 17:13:50 +01:00
c26744b9d9 handleMessage _always_ tries to execute command, even if it has forwarding flags set. Command is executed before forwarding. 2020-03-08 16:49:20 +01:00
4c41601319 spin UI to a separate file 2020-03-08 16:45:46 +01:00
210290e7f4 Merge branch 'master' into stable 2020-03-03 00:36:34 +01:00
95aec0f68c remove install/first time tab from webpack, as it's not used yet 2020-03-03 00:36:24 +01:00
a600f30ff8 Merge branch 'master' into stable 2020-03-03 00:34:15 +01:00
ec046767c7 Changelog update 2020-03-03 00:33:55 +01:00
f86ef5bda6 Version update 2020-03-02 22:35:41 +01:00
77ee6be218 Fix getting extension version in the popup 2020-03-02 22:35:34 +01:00
1c978e61b7 Fix the bug with Settings.fixSiteSettings() 2020-03-01 21:52:57 +01:00
aba099d577 Disable unnecessary logging 2020-03-01 21:52:47 +01:00
33e05014fd flex.css -> flex.scss for dat scoping 2020-03-01 20:24:08 +01:00
c5f6868a63 Make sure aspect ratio makes sense before setting it. Don't set NaN for aspect ratio, that tends to break things 2020-03-01 16:55:52 +01:00
4b177a9724 initialize content script vue/ui only if there's a need 2020-02-26 00:45:35 +01:00
9a2261faed whitespace 2020-02-26 00:45:06 +01:00
d009b53dba update webpack to include new install/update pages 2020-02-26 00:44:28 +01:00
acfa833203 Some stuff for easier logging configuration - wip 2020-02-26 00:43:11 +01:00
4c0aca48fd Add "first time" and "updated" pages templates. 2020-02-26 00:42:41 +01:00
66169ddeb1 Remove scheduleGc to avoid webNavigation 2020-02-14 21:45:31 +01:00
72b28918e9 Try disabling minimization 2020-02-14 20:55:20 +01:00
7eca642da3 Let's take away 'tabs' permission, since activeTab seems to do the job just fine 2020-02-14 20:29:38 +01:00
4fa1cb5cbc Merge branch 'master' into stable 2020-02-11 20:01:33 +01:00
18a3a2162a Changelog and version update stuff 2020-02-11 20:01:10 +01:00
6054da346d Merge branch 'master' into stable 2020-02-11 20:00:04 +01:00
ef52eec860 Merge branch 'master' into stable 2020-02-11 19:59:33 +01:00
c88247df25 Fix problem with video sometimes being offset to the side 2020-02-11 19:54:41 +01:00
f028af8b98 change single quotes to double quotes for json 2020-02-11 19:36:49 +01:00
51526b5dcc Version bump 2020-02-09 02:11:37 +01:00
2ead2f8e41 Changelog 2020-02-09 02:11:28 +01:00
c4914b4e5b Improve handling of change listener on settings, fix bug that prevented callback from triggering 2020-02-09 01:16:46 +01:00
a5685fa420 Improve logging of storage listener in logger 2020-02-09 01:14:05 +01:00
f53faac344 Make logger thing a proper json, not just javascript object 2020-02-09 01:13:29 +01:00
c9f227c0f9 This appears to do exactly nothing? 2020-02-09 00:28:35 +01:00
470f576b41 Fix build-zip script 2020-02-08 01:05:05 +01:00
8945226d24 Fixes for Edge 2020-02-08 00:41:10 +01:00
6b7f41ecf8 update readme for AMO 2020-02-08 00:38:40 +01:00
dd74725c0a fix run scripts, but for real. Fix related stuff as well 2020-02-08 00:38:09 +01:00
9338711d4c update gitignore 2020-02-08 00:12:49 +01:00
ddf8c3210f typo fix 2020-02-08 00:09:07 +01:00
806a889726 Gotta have separate dist folders for each browser 2020-02-08 00:08:07 +01:00
0ab21f8360 Remove unnecessary scripts, 'npm run dev' builds both chrome and ff builds 2020-02-08 00:07:34 +01:00
7f806a55af Install concurrently package 2020-02-07 23:51:35 +01:00
31ed290390 fix webpack, don't include useless files (ext/lib and ext/conf) in build
Since files in /lib and /conf use optional chaining, and since optional chaining is only supported through the magic of babel plugins, this is one sure way to fail validation
2020-02-07 00:07:28 +01:00
2788b9e439 fix imports for chrome 2020-02-07 00:06:12 +01:00
355108e0ef Ensure things don't crash on undefined settings 2020-02-06 23:53:31 +01:00
0eb3840221 Move easter eggs around 2020-02-06 23:52:58 +01:00
6013fd68ff Add easter eggs 2020-02-06 23:09:22 +01:00
63922d5744 Changelog updates 2020-02-06 23:06:37 +01:00
f721c795e6 Version bump 2020-02-06 23:02:28 +01:00
006e684f17 Logger fixes 2020-02-06 22:59:57 +01:00
e529239c8d save as .log instead of .json 2020-02-06 22:59:43 +01:00
21e24cc226 Finalize logging 2020-02-06 22:29:59 +01:00
435f2890c4 Logger is half functional 2020-02-05 00:39:16 +01:00
179614bd85 Finish logging ... sorta 2020-02-04 23:31:50 +01:00
f0f02032cc cosmetic fixes 2020-02-04 23:15:06 +01:00
8a70fc5f81 fix export 2020-02-04 23:14:48 +01:00
ef0a802c16 move export log to file to its own file 2020-02-04 22:05:29 +01:00
22bcd02afc Add show/hide popup buttons to 'report a problem' popup tab. Removed everything else re: logging from there. 2020-02-04 00:57:30 +01:00
bd2fa787e1 work on logger popup 2020-02-04 00:56:48 +01:00
87e65a99d4 Messaging fixes 2020-02-04 00:56:31 +01:00
0cd644a38a fix ui overflow 2020-02-03 22:14:07 +01:00
78364472ad Avoid logging too much unnecessary stuff 2020-02-03 22:13:03 +01:00
8eed3431c8 Show log results in popup 2020-02-02 00:57:54 +01:00
f5bde78378 add webext polyfill 2020-02-02 00:57:34 +01:00
390b788b61 add css to manifest 2020-02-01 17:48:49 +01:00
7cb77a7a58 whitespace 2020-02-01 17:48:40 +01:00
a1395da957 abandon ghetto css 2020-02-01 17:48:31 +01:00
983c7747cc Create dummy logger UI 2020-01-31 01:03:06 +01:00
b1538e9a8c logger fixes and refactorting 2020-01-30 23:18:30 +01:00
646d98588a logging fixes 2020-01-30 23:17:43 +01:00
5890192751 sleep() to utils 2020-01-30 23:15:08 +01:00
e6b1370f71 get a better package for decycle 2020-01-30 23:14:56 +01:00
6aba6e0277 add decycle to dictionary 2020-01-30 23:14:40 +01:00
89a459e42b Include json-decycle 2020-01-30 21:25:23 +01:00
2ad5a7b205 consistent naming of 'eject-css' command 2020-01-30 01:07:15 +01:00
d2fdbe178c Implement finish logging and connect things to export 2020-01-30 01:07:00 +01:00
1cdf246919 Refactor comms server a little bit 2020-01-30 01:06:21 +01:00
810fbbdc97 fix bug in actionhandler that causes log to stop logging 2020-01-30 01:06:02 +01:00
0abd4fc776 Add nightly build links to readme 2020-01-29 23:53:52 +01:00
97d97e022b Add onLogEnd callback to logger 2020-01-29 23:38:52 +01:00
78ff7d7e40 Fix logging 2020-01-29 01:36:23 +01:00
1899f486e1 Settings should only watch for uwSettings storage changes, Logger should only monitor for uwLogger changes 2020-01-29 01:36:09 +01:00
9ba1afebee Use optional chaining 2020-01-28 23:34:36 +01:00
c8d943da0b Fix logging bugs, add mousemove to blacklist by default 2020-01-28 23:11:59 +01:00
f5f3e2754f Update npm packages & add optional chaining 2020-01-28 23:11:15 +01:00
0cbd62352e [Logger] Track origin of the call stack. Allow blacklisting of some periodic calls 2020-01-28 01:27:30 +01:00
3e565ddbfc fix logger in popup 2020-01-28 01:26:40 +01:00
c84900def0 dictionary update 2020-01-28 01:26:20 +01:00
1588ebd274 Don't restore ar if player dimensions haven't changed 2020-01-27 23:42:55 +01:00
691f45fbcc remove log to console 2020-01-27 23:42:35 +01:00
c62033fb28 typo fixes and whitespace/console.log removals 2020-01-27 23:42:17 +01:00
dfabfaad48 pass CHANNEL to process.env for extension to use 2020-01-27 23:35:38 +01:00
f770b0dbf1 fixes for logger 2020-01-27 23:20:38 +01:00
f3e5aeb9e6 Fix logger crashing the extension 2020-01-27 22:32:38 +01:00
f1d2881359 Add logger commands to comms server 2020-01-21 00:41:18 +01:00
8c78715271 additional logger functions 2020-01-21 00:41:06 +01:00
8b648fb4d7 Rework of command handling in CommsClient 2020-01-21 00:40:56 +01:00
46fc868109 fix settings for logger 2020-01-20 20:07:18 +01:00
d633cb3b97 Only allow in-code log overrides if we're running in dev 2020-01-20 20:07:01 +01:00
5372acdf07 Logging changes for build and deploy 2020-01-20 20:06:36 +01:00
9234b86e46 Create dist-zip after deletion 2020-01-19 21:32:49 +01:00
6031a99af7 fix build 2020-01-19 21:08:34 +01:00
6f5768567f logging in build-zip 2020-01-19 20:27:05 +01:00
65b9822e24 mkdir recursive 2020-01-19 20:21:11 +01:00
d78a83c4e3 re-enable FF builds (without signing) 2020-01-19 20:16:34 +01:00
fe85f6a7a5 change directory for builds 2020-01-19 20:13:47 +01:00
6b78e5652e fix typo 2020-01-19 20:05:30 +01:00
bbef2aa2e7 manually copy built files via ssh 2020-01-19 20:03:03 +01:00
13f4dcb215 fix jenkins build script 2020-01-19 19:43:32 +01:00
ff82807130 change package.json stuff 2020-01-16 21:49:13 +01:00
c7980ab892 Update github username 2020-01-16 01:02:19 +01:00
753a9348f4 Add rudamentary logger section to 'about' tab of popup 2020-01-16 01:01:04 +01:00
79e781dcd8 Support static save, load, subscribe to logger settings changes 2020-01-16 01:00:47 +01:00
6b9bf1b70f New logging property! 2020-01-16 01:00:12 +01:00
76b1da1b1c Change email template in hopes for illiterate twats to not edit or remove my precious process.env and generated version number
smh my head
2020-01-15 23:37:34 +01:00
7fdb15821a Changelog updates 2020-01-15 22:23:22 +01:00
d2c1b2de3e Get current site more reliably (hopefully) 2020-01-15 21:20:34 +01:00
d6201dc2ac Add override to log everything 2020-01-15 21:09:12 +01:00
0f6b707d69 Merge remote-tracking branch 'origin/master' 2020-01-06 21:40:10 +01:00
90c1ba0b6c Merge branch 'HEAD' into stable 2020-01-06 21:39:23 +01:00
73872d4188 Add timeout to logger 2020-01-06 21:38:10 +01:00
936cb78b26 typo fix 2 2020-01-06 21:38:10 +01:00
2dca756b20 typo fix 2020-01-06 21:38:10 +01:00
3d2bbe742b npm appeasal 2020-01-06 21:38:10 +01:00
bc51505727 Version bump, changelog 2020-01-06 21:38:10 +01:00
c8418f0373 Fix extension failing to load 2020-01-06 21:38:10 +01:00
39a7a8187e typo fix 2 2020-01-04 15:46:43 +01:00
d66cfd430d typo fix 2020-01-04 15:45:28 +01:00
d9430dc90d npm appeasal 2020-01-04 15:45:21 +01:00
1c1d31e563 Version bump, changelog 2020-01-04 15:43:11 +01:00
bf8d133962 Fix extension failing to load 2020-01-04 15:34:54 +01:00
0920c234d0 Merge branch 'master' into stable 2020-01-04 02:47:56 +01:00
4cd0eac01b Changelog update 2020-01-04 02:47:09 +01:00
c08ffa9c58 disney+ conf patch 2020-01-04 02:37:00 +01:00
410cd4d7f3 Fix invalid site settings on settings.save 2020-01-04 02:36:46 +01:00
3d7a47662e minor fix for autoar 2020-01-04 02:04:32 +01:00
e37ad4ba7a Version bump (todo: release notes) 2020-01-04 00:42:13 +01:00
377a58c427 Merge branch 'master' into stable 2019-12-12 20:12:34 +01:00
0c6355e370 Merge branch 'testing' 2019-12-06 00:17:38 +01:00
b9e8d111e6 Version update stuff 2019-12-06 00:17:20 +01:00
73b1a57749 Added extra stretch/squish options, hopefully fixed disney+, fixed bug that prevented removal of actions added by user 2019-12-06 00:17:09 +01:00
0801c122e2 disable copy for a bit, we're doing that with plugin now 2019-12-04 18:26:17 +01:00
e58f5c4b62 Merge branch 'master' into testing 2019-12-04 18:25:58 +01:00
4bfb116d45 fix for build override? 2019-12-04 18:04:46 +01:00
96d7456ea1 Merge branch 'testing' 2019-12-04 18:02:38 +01:00
18cf4e5d0f Add logging to build script 2019-12-03 22:39:07 +01:00
6283bd74e5 Fix script 2019-12-03 22:30:26 +01:00
585ad1f525 Merge branch 'master' into testing 2019-12-03 22:19:14 +01:00
33d9bbe00b +x 2019-12-03 22:19:00 +01:00
8b066c3692 Merge branch 'master' into testing 2019-12-03 22:12:02 +01:00
291699b925 Build script moved to file 2019-12-03 22:11:29 +01:00
14a2233ff2 Merge branch 'testing' 2019-12-03 02:21:44 +01:00
cc6d08e452 Readme update to trigger jenkins build 2019-12-03 02:20:59 +01:00
1cd2af7c58 Merge branch 'master' into testing 2019-12-03 02:16:12 +01:00
a1b89e0fc2 This is here mostly to test CI (master commit shouldn't build, merge to testing should) 2019-12-03 02:11:16 +01:00
9036bb5810 Merge branch 'master' into testing 2019-12-03 02:07:40 +01:00
5d200805f0 build-zip should get data from /dist instead of /src 2019-12-03 02:07:15 +01:00
30d6338d76 Separate testing and nightly 2019-12-03 02:01:29 +01:00
bd38e28610 fix 2019-11-29 01:53:23 +01:00
967a5bf87b we don't have background.js file 2019-11-29 01:48:30 +01:00
2675960aa0 fix key name 2019-11-29 01:39:01 +01:00
289baf73e5 Force player re-detection when setting aspect ratio 2019-11-29 01:33:58 +01:00
5a6195d36d fix permissions 2019-11-29 01:27:24 +01:00
d359b60bc5 don't remain cd'd into folder 2019-11-29 01:26:52 +01:00
1581e3382c Add crx build file 2019-11-29 01:25:40 +01:00
6355e31004 Also ignore kate swap files, they're garbage we don't need on git 2019-11-29 01:00:59 +01:00
ec36ca1bc8 Version number is already in process.env on server, no need for this 2019-11-29 01:00:24 +01:00
51d0cbf16f Include build number in version scripts 2019-11-29 00:55:22 +01:00
db5d69d92f fix build 2019-11-29 00:31:20 +01:00
470f5481ee fix? 2019-11-29 00:15:48 +01:00
e51a2f4193 fix build config 2019-11-29 00:12:31 +01:00
62b986575c Zip: collapse dashes and spaces into single dash 2019-11-28 23:52:55 +01:00
4be2d902b8 Merge remote-tracking branch 'origin/master' 2019-11-28 23:37:45 +01:00
709cb7763c prepare stuff for CI nightly builds 2019-11-28 23:37:26 +01:00
f469c29cc8 Readme update, pt. 2 2019-11-25 23:45:45 +01:00
cc36305568 Readme update 2019-11-25 23:42:22 +01:00
b43747a59c Merge branch 'master' into stable 2019-11-05 00:09:20 +01:00
fcd9deac6f Version update 2019-11-05 00:09:08 +01:00
97ef4c2fec Changelog updates 2019-11-05 00:08:27 +01:00
0eadb1aac6 Don't set aspect ratio pointlessly 2019-11-04 23:53:28 +01:00
5fc867b4a3 Fix for vk 2019-11-04 23:53:08 +01:00
414bf7b36f Update logger output 2019-11-04 23:52:37 +01:00
4fc68db7f8 Disable logging 2019-11-04 23:50:54 +01:00
08460a923d Fix logger 2019-11-04 22:14:41 +01:00
5f4abcec1f version bump 2019-11-02 22:43:11 +01:00
1157a8a8e2 Update readme 2019-11-02 22:42:36 +01:00
b2f6a1fddd Auto-collect extension/browser info in mailto/reddit compose links (and hopefully fix them) 2019-11-02 21:58:55 +01:00
b6ff740b84 Merge branch 'master' into stable 2019-11-02 02:47:59 +01:00
0e09ae771c Update readme 2019-11-02 02:45:30 +01:00
970b9b6b1d Reset panning on aspect ratio change. 2019-11-02 02:45:24 +01:00
83a4dd08ac remove console litter 2019-11-02 02:21:21 +01:00
f806d154ee Fix panning 2019-11-02 02:20:09 +01:00
b128f97a7c Fixed readme 2019-11-02 01:11:57 +01:00
dbc35ccbd1 Patching for v4.4.0 2019-11-02 01:05:36 +01:00
5becf0bdf0 Version bump is gonna be a bit more major 2019-11-01 23:51:51 +01:00
04c33956a1 changelog update 2019-10-30 17:47:15 +01:00
42d85f75f7 Logging, prepare code for when browsers finally implement ArrayBuffer.transfer() 2019-10-29 18:15:46 +01:00
18f0c7540b Fix incorrect crop resets 2019-10-29 18:15:10 +01:00
1c4c4d5652 update test videos 2019-10-29 00:38:06 +01:00
ab42557283 Fixes for crop mode persistence on the popup side of things 2019-10-28 22:10:15 +01:00
5e20925ec5 Fix fit to width / fit to height for portrait monitors 2019-10-28 20:33:40 +01:00
9b8e500927 Prevent action on contentEditable divs. 2019-10-27 23:37:13 +01:00
83d84e5a93 Fix popup not displaying 2019-10-27 23:20:45 +01:00
470a7e8883 Fix video fit on portrait orientations 2019-10-27 22:11:07 +01:00
2422cec1e9 update formatting 2019-10-27 22:08:48 +01:00
bde7eb6327 Fix autodetecting not starting 2019-10-27 16:51:47 +01:00
6af771e1ff Restrict which kind of mutation events are allowed to trigger player refresh 2019-10-27 16:51:31 +01:00
828ded6b29 Fix overly aggressive forced player refreshes 2019-10-27 16:48:05 +01:00
f05a0813d2 Fix minor issues 2019-10-27 00:10:49 +02:00
854bc05d14 Pass set-ar-persistence between CommsClient and pageInfo 2019-10-26 02:38:47 +02:00
cda5d87735 Display new options in popup, update ExecAction 2019-10-25 00:59:02 +02:00
d0058cedb9 Changes to how crop mode persistence works, extra persistence options 2019-10-24 23:27:43 +02:00
d5a6e8d707 change reload prevention to something a bit less contrived 2019-10-24 21:13:45 +02:00
8fde5bb3d6 Implement crop persistence in content script 2019-10-24 00:45:11 +02:00
ab06f0bd41 Add saveWithoutReload() to settings.js 2019-10-24 00:44:27 +02:00
f652bce8fe Prepare version update stuff, readme updates 2019-10-23 20:01:11 +02:00
261f9a6b8d Use event.code instead of event.keyCode. Add key codes to default settings 2019-10-23 19:34:58 +02:00
cd4e3768e2 Make compiler a bit happier. 2019-10-22 01:40:46 +02:00
4a9ef1f9db Fix 'clear shortcut' button (probably) 2019-10-22 01:40:38 +02:00
3768575bad Allow default keyboard shortcuts to work on non-ASCII layouts 2019-10-22 01:33:56 +02:00
c28651d9f7 Merge branch 'master' into stable 2019-10-20 21:12:43 +02:00
fdc4fc8dc9 fix the fix 2019-10-20 21:11:17 +02:00
85fa314bb4 change some variable names for readability 2019-10-20 21:11:09 +02:00
7a9c341bf8 Version update stuff 2019-10-20 14:13:58 +02:00
cec427d9ab fix for twitch 2019-10-20 14:09:19 +02:00
a461d8fa71 test videos update 2019-10-20 14:03:09 +02:00
b53276da62 Merge branch 'master' into stable 2019-09-28 00:14:21 +02:00
2d6a020c5b Version update stuff 2019-09-28 00:14:03 +02:00
afe7b8e692 minor rework of settings options 2019-09-28 00:13:50 +02:00
408b771656 Fix settings page 2019-09-27 22:06:28 +02:00
f784eedd3f Merge branch 'master' into stable 2019-09-26 01:24:20 +02:00
4e67902c56 version update stuff 2019-09-25 18:44:01 +02:00
b70cc7bb88 Update readme with correct build instructions 2019-09-25 10:04:52 +02:00
Tamius Han
3788fee24c Merge pull request #77 from ezzak/master
Fix error for new users.
2019-09-25 09:35:41 +02:00
Tamius Han
20161207b9 just making presence check more in line with my style, otherwise this is fine 2019-09-25 09:34:14 +02:00
EzzAK
282f8350dd Fix error for new users. 2019-09-24 22:10:36 -07:00
e7f8ca058d Merge branch 'master' into stable 2019-09-22 02:49:53 +02:00
2ad4e79bf3 Fix 2019-09-22 02:49:40 +02:00
5171c3129b Merge branch 'master' into stable 2019-09-22 02:40:14 +02:00
bf9ee47527 Some tweaks to release notes 2019-09-22 02:39:24 +02:00
ecf495dae6 Let's make a script that does both ff and chrome build at the same time
+ let's automate making source code zip for AMO, while we're at it
2019-09-22 02:38:13 +02:00
46bc4bfd8d Fixes for reddit 2019-09-22 02:07:04 +02:00
7b73a42e5c Force fallback mode, always. 2019-09-21 23:50:06 +02:00
469c607568 Fix changelog 2019-09-21 23:48:17 +02:00
b983b6e4ec Mutation observer doesn't always detect changes correctly, so we still need to periodically check for changes in player/video sizes. 2019-09-21 21:49:31 +02:00
685cfc9466 Popup: Fix issue where 'sites' tab would be disabled if extension mode was set to whitelist only 2019-09-21 19:55:47 +02:00
c407e7a298 Add steam to test videos 2019-09-21 19:55:11 +02:00
4f830e2a37 Update changelog. Update includes a promise (popup bit needs to be fixed) 2019-09-18 01:08:07 +02:00
b91fc2e422 Turn debugging on 2019-09-18 01:05:17 +02:00
0bed77bafa Fix new reddit 2019-09-18 01:05:07 +02:00
e1e962df04 If no element fits the criteria for the video player, have extension ignore such videos.
Also, sometimes mutationObserver doesn't catch all mutations/we miss some mutations. Added a delay that validates offsets. If validation fails, retrigger aspect ratio correction to make sure there's no misalignments. (That last bit was mostly needed for new reddit)
2019-09-18 01:05:07 +02:00
40416d74e9 Updated test videos 2019-09-18 01:01:52 +02:00
dacd1f7a9c Version upgrade stuff 2019-09-17 22:26:43 +02:00
536e726f4b Disable logging 2019-09-17 22:18:02 +02:00
7d63245136 Remove unnecessarsy console.logs 2019-09-17 22:15:00 +02:00
7454b278a4 Fix settings patching and version number saving 2019-09-17 22:14:42 +02:00
f854daa44b Removing unnecessary stuff from webpack 2019-09-17 22:14:05 +02:00
d89db7a5a1 This low-key shouldn't be in logger 2019-09-17 22:13:31 +02:00
f495cec5ba fox type 2019-09-17 18:51:19 +02:00
824fe7993e Disabled unfinished features 2019-09-17 18:47:09 +02:00
77a02acb5a minor dictionary update 2019-09-14 23:52:12 +02:00
705d4c2e6d remove some dead code 2019-09-14 23:50:48 +02:00
b1af778656 dunno what that is, but it doesn't seem to break anything 2019-09-14 23:23:52 +02:00
44caa5f492 Fixed issues with mutation observers 2019-09-14 23:23:00 +02:00
ef9f106e18 Let's use npm instead of yarn 2019-09-14 23:01:02 +02:00
287680d4de dictionary update 2019-09-03 23:49:30 +02:00
66bcc40fb4 Minor fixes 2019-09-03 23:49:22 +02:00
59df28029f logger import reordering 2019-09-03 23:01:23 +02:00
7ac5e17415 Fix passing logger some more 2019-09-03 22:55:10 +02:00
c08033fba6 One of the merges fucked up the fix for twitchy twich. Re-fix this bug. 2019-09-03 22:46:28 +02:00
0ab1f558e1 Changes to logger insert (from videoData.logger instead as consructor param) 2019-09-03 22:42:38 +02:00
3c1b5f4b1a Move everything to logger, but for real 2019-09-03 22:17:10 +02:00
0f14d9c7dd Fix missing imports 2019-09-03 21:30:18 +02:00
df5b2b5165 Finished converting console.logs to logger 2019-09-03 00:48:18 +02:00
2de8d64b29 cummulative patching of settings 2019-09-03 00:28:35 +02:00
7ef8c21e63 Merge branch '4.2.4' 2019-09-01 03:56:16 +02:00
2f76a90b29 Merge branch '4.2.4' into stable 2019-09-01 03:55:21 +02:00
cd25cfbf8f minor fixes 2019-09-01 03:23:19 +02:00
6d77b7818d Merge branch '4.2.4' 2019-09-01 01:54:41 +02:00
8e21bb8f92 Merge branch '4.2.4' into stable 2019-09-01 01:52:34 +02:00
49872ae16d package.json doesn't like fourth digit 2019-09-01 01:41:51 +02:00
842851197e Version bump related stuff 2019-09-01 01:41:12 +02:00
a67dbad21c Fix player detection rules — for sites where query selector is defined as well 2019-09-01 01:40:39 +02:00
8cfc699fe6 Fix default extensionconf for reddit 2019-09-01 01:18:13 +02:00
fc2515d5c8 Fix default extensionconf for reddit 2019-09-01 01:17:49 +02:00
e44738b3a8 Fixed merge fuckup 2019-08-31 22:59:46 +02:00
19cf8477ca Merge branch '4.2.4' 2019-08-31 22:58:59 +02:00
50e0d7aa59 Merge branch '4.2.4' into stable 2019-08-31 22:55:03 +02:00
149b9cb7de Reverse query selectors order in extconfpatches for reddit 2019-08-31 22:45:56 +02:00
67f031e549 Additional fixes for player element discovery. Force player element refresh on every video element size change. 2019-08-31 22:10:51 +02:00
c275e389a1 Updating version numbers & stuff 2019-08-31 18:22:57 +02:00
1dacc66ead Fix "what's new" notification not going away (hopefully) 2019-08-31 18:22:13 +02:00
c1012c59a6 Fix player detection 2019-08-31 18:21:49 +02:00
434583d19b Add test video for reddit 2019-08-28 18:31:17 +02:00
a04b3ccecf Merge branch '4.2.3' into stable 2019-08-28 18:29:39 +02:00
8e7c3ce2ac Merge branch '4.2.3' 2019-08-28 18:29:15 +02:00
29e78c7833 Hotfix for memory leak (hopefully) & failed first time install 2019-08-28 18:28:22 +02:00
e2df9285ff Fixed logger issues 2019-08-25 22:00:57 +02:00
0918c8b86d Undo version bump in manifest.json 2019-08-25 21:23:59 +02:00
e03a4adc9e readme update 2019-08-25 21:23:04 +02:00
0be0e2a265 Use mutationobserver-based ways to detect player changes instead of the old pleb-loop based method 2019-08-25 21:19:56 +02:00
0d641a98e3 Merge branch 'stable' 2019-08-25 01:57:23 +02:00
142b51f934 Merge branch '4.2.3' into stable 2019-08-25 01:55:45 +02:00
9f2880c802 Hotfix for popup 2019-08-25 01:52:04 +02:00
24dcbdf770 Merge branch 'stable' 2019-08-24 23:21:53 +02:00
c7847ac626 Merge branch '4.2.3' into stable 2019-08-24 23:17:54 +02:00
68e2b276df Version update & fix build 2019-08-24 22:36:38 +02:00
5f1f14f8ca Update what's new 2019-08-24 22:36:24 +02:00
31f0e2165e Fix HTML 2019-08-24 22:36:10 +02:00
dba9b054d4 Fix issue with 1px letterbox in atuodetection 2019-08-24 22:35:56 +02:00
d7b3508f85 Replace (video) cssWatcher with mutation observer 2019-08-24 17:05:04 +02:00
13104609cd Only replace CSS if the CSS changed 2019-08-24 17:04:53 +02:00
eeddbe9cc6 Combine ejectCss and injectCss into a single function 2019-08-24 00:28:08 +02:00
68b3589e77 Twitching issue was fixed but performance is shite 2019-08-23 02:25:48 +02:00
6d564e2f98 Readied some things for the player selector thing, but in content scripts 2019-08-13 22:31:25 +02:00
5b3ee66066 Start some work on player selector 2019-08-13 21:21:35 +02:00
f41ffb3155 Readme updates for 4.3.0, version bump 2019-07-20 21:33:15 +02:00
c1ba6ffac2 Merge branch '4.2.2' 2019-07-20 20:57:10 +02:00
3f8def5268 Merge branch '4.2.2' into stable 2019-07-20 20:56:32 +02:00
76d6551bc7 Update redit player classlists. 2019-07-20 20:41:03 +02:00
338afad417 Replace consoles in ext with custom logger 2019-07-18 21:25:58 +02:00
f0fa6aa9a8 Replaced console.logs with logger in ArDetect. Other places still need changing. 2019-07-16 22:46:16 +02:00
9072183dd1 Added logger 2019-07-16 20:59:12 +02:00
e08a7eea74 Export settings but for chrome. Also some fixes for FF 2019-07-15 23:18:12 +02:00
060d644487 Version update 2019-07-15 23:17:55 +02:00
84eed2fa13 Import/export settings 2019-07-15 22:54:41 +02:00
dfa4aedd53 Merge branch 'master' into stable 2019-07-07 21:14:41 +02:00
723881d09d ExtConfPatches update 2019-07-07 21:14:12 +02:00
a3d01f7fb4 Fixed issue where user-defined css wasn't loading. 2019-07-07 21:13:28 +02:00
3c3e8b409c Removed unnecessary whitespace 2019-07-07 21:13:10 +02:00
57463e01ec Version & readme update 2019-07-07 21:12:57 +02:00
201b511a49 readme update 2019-07-07 15:27:07 +02:00
61ca9cd9f2 Merge branch 'master' into stable 2019-07-07 15:13:55 +02:00
cce3a677bb Light up "what's new" when upgrading extension. 2019-07-07 15:12:15 +02:00
4cd67161ba Popup: remove bullshit scrollbars in Chrome. Move scrollbar in site lists to the left. 2019-07-06 22:39:59 +02:00
9cbd2fc34c Changelog update 2019-07-05 23:45:57 +02:00
0ef36f64d3 Version update 2019-07-05 23:45:40 +02:00
04a6c11cf5 Super ghetto patching 2019-07-05 23:45:29 +02:00
d5acab1c40 Fix player defaults for youtube 2019-07-05 23:00:15 +02:00
ca8eeffc12 design update 2019-07-05 22:58:29 +02:00
04fe2a6c6a autoar: presume video aspect ratio as default (rather than null) 2019-07-04 22:46:18 +02:00
5329f0a600 Show warning when some frames on a given site are disabled 2019-07-03 22:35:17 +02:00
67d45d265b remove logging some more 2019-07-03 22:35:01 +02:00
4260e36ade Allow re-enabling of sites in embedded frames 2019-07-03 21:55:08 +02:00
2b281b292f Change player element detection on reddit as well 2019-07-03 21:37:03 +02:00
90d646ba25 remove dead code 2019-07-03 21:03:12 +02:00
406329864a update changelog 2019-07-03 20:45:17 +02:00
478d4a8795 Select player elements on youtube and twitch with query selector 2019-07-03 20:17:55 +02:00
d962535311 update test videos 2019-07-03 20:10:39 +02:00
8ad0250d7e Scrollbars styled for chrome as well, but chrome is fucky-wucky 2019-07-02 01:23:43 +02:00
3e627f5fed Thin scrollbar for FF, UX update (what's new, report problem, donate menu entries are at the bottom) 2019-07-02 01:02:22 +02:00
4d83b8260e Merge branch 'stable' 2019-06-24 14:30:14 +02:00
6b5f79347e Merge branch '4.1.2' into stable 2019-06-24 14:30:05 +02:00
67ffd483b6 readme update but in popup 2019-06-24 14:29:47 +02:00
1e4f32aee5 version bump 2019-06-24 14:27:23 +02:00
5256a1bf19 readme update 2019-06-24 14:26:43 +02:00
47e20721e6 Reddit: detect player manually, fix site details popup 2019-06-24 14:05:37 +02:00
d2170eb937 Merge branch '4.1.1' into stable 2019-06-15 23:30:00 +02:00
18a86bc815 Merge branch '4.1.1' 2019-06-15 23:29:29 +02:00
7a987c57d2 disable extension for gfycat 2019-06-15 23:03:19 +02:00
a4ad5f0dde Prepare for version update 2019-06-15 23:01:18 +02:00
33590aa353 UX: In popup, indicate which sites (and corresponding frames) are disabled. This will need additional work on content scripts tho 2019-06-15 22:58:19 +02:00
3fcf32c687 Merge branch 'master' into stable 2019-06-14 23:22:24 +02:00
746a883e07 Prepare for release 2019-06-14 23:21:03 +02:00
2eaab6d3a4 Update default settings: fix old.reddit, vimeo, disable imgur 2019-06-14 23:20:47 +02:00
106cc11e5e Update changelog 2019-06-14 23:10:30 +02:00
031c5d8e4c Add changelog to extension popup 2019-06-14 23:10:21 +02:00
d7f6cd1271 Add 'experimental' tag to site details tab in popup 2019-06-14 22:37:31 +02:00
060278a972 Fix site details panel 2019-06-14 22:36:21 +02:00
8bb5f30e71 Rename 'about' to 'report a problem' in the popup for better visibility of issue reporting options 2019-06-14 22:05:29 +02:00
69114cc47e Update manifest description for that sweet SEO 2019-06-14 21:56:40 +02:00
d27b6bbce9 add 'npm start' script 2019-06-14 21:53:57 +02:00
bc89a9c116 Fix bugs 2019-06-14 21:53:48 +02:00
2df3c3c9be Don't insert CSS on player element. Insert CSS into page instead. Popup doesn't work, still. 2019-06-14 02:15:24 +02:00
afefed7f34 Manually assigning players sorta works, but is bugged 2019-06-12 23:55:15 +02:00
26610f2e00 Start working on applying extra css to player and video elements 2019-06-11 01:34:02 +02:00
08c257ec00 Detecting manually determined video and player elements implemented 2019-06-10 23:45:15 +02:00
03d8a99885 Popup for setting site-specific options is roughly done 2019-06-08 03:45:35 +02:00
17f374d0c3 Remove unused files 2019-06-08 03:44:55 +02:00
2bfa3e8dfc Site settings: allow user to select a site 2019-06-07 01:50:13 +02:00
a3375eb289 Remove unnecessary logging 2019-06-06 19:47:43 +02:00
d8e3f39f2f Updated readme 2019-06-06 00:36:50 +02:00
f6c86382f0 Updated readme 2019-06-06 00:35:58 +02:00
aa939f200d manifest bump 2019-06-06 00:23:07 +02:00
13d0e29e46 Merge branch '4.0.1' into stable 2019-06-05 23:39:20 +02:00
d6a9ea4831 Remove unnecessary logging, fix bug that didn't seem to have any effect 2019-06-05 23:37:12 +02:00
f5b9311225 Fix settings not returning correct default mode. Ensure that update 4.0.0 -> 4.0.1 won't reset settings, while giving people on pre-4.x a clean slate 2019-06-05 23:36:47 +02:00
ae98b0aa92 Fix extension sometimes not working on netflix 2019-06-05 23:35:25 +02:00
af39f3d708 Added readme for AMO (compliance stuff) 2019-06-05 23:35:01 +02:00
1b267ca5a1 Version bump 2019-06-03 23:58:15 +02:00
524b417f2a Update manifest description for 4.0.0 2019-06-03 23:57:26 +02:00
a2f28f738a rogue console.log removal 2019-06-03 00:50:08 +02:00
98703c30d2 Disable debugging 2019-06-03 00:41:06 +02:00
65e41e575d Force override existing settings for 4.0 2019-06-03 00:37:57 +02:00
8231174f57 Add donation tab 2019-06-03 00:34:42 +02:00
5bcdfac16b Remove obsolete 'advanced options' from autodetection page in settings 2019-06-02 23:56:56 +02:00
b8a6e9e0b3 Allow disabling of shortcuts 2019-06-02 23:54:32 +02:00
ebea657f8c Fix settings bug, rework autoar page in extension settings 2019-06-02 23:54:22 +02:00
a0f288e2ad Refactor execAction 2019-06-02 23:52:27 +02:00
cbf38424e4 Tweak default settings 2019-06-02 23:49:48 +02:00
d2d624eddf Refactor showing buttons on popup, hide sections with no buttons 2019-06-02 23:49:31 +02:00
50b16b0893 Made saving settings a bit less of a pain 2019-06-02 03:00:07 +02:00
2e6d33bc79 Plebified settings 2019-06-02 02:44:02 +02:00
66f9c1b9e3 Allow setting aspect ratio detection sensitivity 2019-06-02 00:34:37 +02:00
72dc5ed372 EdgeDetect: respect minimum number of samples 2019-06-01 23:33:21 +02:00
98413534be Fix bug with fallback autodetection 2019-05-26 02:54:02 +02:00
ce30c6faa8 Fix #64 2019-05-26 02:53:29 +02:00
fd5c3fc06f Removed console.logs _not_ gated behind ifs from .vue files 2019-05-22 01:05:32 +02:00
c651bb222b 'nother minor readme update 2019-05-22 01:03:27 +02:00
add72e8398 First round of CSS fixes 2019-05-22 01:03:15 +02:00
4c5569f039 remove debugging ui from popup 2019-05-21 23:16:34 +02:00
4227a4abc0 Remove unused code 2019-05-21 22:21:46 +02:00
b4ee166bd7 pointless readme update 2019-05-21 22:13:41 +02:00
f0b7e619e4 Fix settings, update package.json 2019-05-10 19:21:17 +02:00
e73c6018ef updated gitignore 2019-05-10 18:49:38 +02:00
358863e7ef Settings.get fix for chrome and edge 2019-05-09 23:41:07 +02:00
6bb4e97f64 Added "super advanced settings" (tm) 2019-05-09 23:40:56 +02:00
04f40d9a4c Webpack: pass env.BROWSER to webpack 2019-05-09 21:10:45 +02:00
280e9cfa62 minor fixes 2019-05-09 21:10:26 +02:00
47b1bc68e0 BrowserDetect gets browser from env. Package.json updated to provide BROWSER in env 2019-05-09 21:08:39 +02:00
8f4c201bb1 Convincing the popup to work in Chrome again. Consolidating processMessage_nonpersistent_chrome and .._ff into same function cos that was the problem 2019-05-09 21:07:40 +02:00
2f5acd9d9e Fixed multiple instances running on Twitch/clips.twitch. Fixed lockups on reddit/embedded. Fixed aspect ratio calculations on fitw and fith modes 2019-05-07 23:40:13 +02:00
887cbaab0a attempt at getting debugging via vscode working 2019-05-07 23:03:13 +02:00
86eeab323d Minor changes to add action popup 2019-05-05 00:55:03 +02:00
a783c75b98 Fixed new actions not saving 2019-05-05 00:39:36 +02:00
2e6a2dd92a Update changelog 2019-05-05 00:26:00 +02:00
0eba96af08 Fixed scaling problems from #48 and #54 2019-05-05 00:09:49 +02:00
7e70d91582 Added more test videos 2019-05-04 22:13:45 +02:00
5fbdb3822c Improvements to gradient detection 2019-05-04 21:33:48 +02:00
9a3ba39076 get extension version from manifest.json instead of package.json 2019-05-04 17:05:08 +02:00
54ae79c320 Moving to storage.local instead of storage.sync, because our settings object is too big for chrome 2019-05-03 00:58:06 +02:00
8cef734926 Autodetection/black frame check: use more strict/lax rules depending on color variance 2019-05-03 00:49:33 +02:00
6c4060e827 test videos update 2019-05-02 22:58:14 +02:00
d647046aee Autodetection sorta functional again 2019-05-02 22:43:40 +02:00
eaa1a0975a Rewrote column test, again (todo: actually analyse results) 2019-05-02 00:57:37 +02:00
d51ce8add7 Fixed cropping via popup 2019-04-25 22:02:10 +02:00
c9f806cd5f Converting component file names skipped few things 2019-04-25 21:11:26 +02:00
d8bd884596 Convert component file names from kebab-case to PascalCase for consistency 2019-04-25 01:09:04 +02:00
598dd6cab5 Fix iframe marking 2019-04-13 03:09:29 +02:00
7f349fe985 Typo fix 2019-04-13 00:19:19 +02:00
31c3295748 Added 'about' panel to popup. Both 'about' panels display addon version. 2019-04-12 23:23:35 +02:00
fda105eabc added 'about' section to settings page 2019-04-12 22:57:08 +02:00
108297fe1b Section for editing keyboard shortcuts is reasonably complete. 2019-04-12 21:06:01 +02:00
6435862daa Settings/control: save keyboard shortcuts 2019-04-12 00:49:56 +02:00
9b808a2c36 Settings/controls: fix editing command block 2019-04-12 00:04:38 +02:00
80b7654db5 Settings/controls: Fix adding new command block 2019-04-11 23:52:29 +02:00
7837cf2e22 Implement & fix action edit popup showing existing actions 2019-03-17 23:24:08 +01:00
f3e0a48471 Automatic detection fix 2019-03-10 23:35:13 +01:00
7b5157a48d Aspect ratio types were enumified. 2019-03-10 23:27:50 +01:00
22c44a3972 Building action.cmd[] and editing of command, arg. Order of commands can't be edited yet 2019-03-10 16:31:50 +01:00
76ff4da77f Fix scopes and shortcut button for add action 2019-02-28 23:56:13 +01:00
812f3e6b69 Fix autodetection settings page 2019-02-28 23:55:37 +01:00
8253b6e8a5 Fixes for input stylings 2019-02-28 23:55:20 +01:00
80c484431d autodetection settings fix 2019-02-27 23:36:29 +01:00
be34838dba Shortcut button thingy works ... ish 2019-02-27 23:22:15 +01:00
f07a1e529e add-edit-command component is capable of adding commands 2019-02-27 21:59:57 +01:00
9084b8b156 Typo fix 2019-02-27 20:55:22 +01:00
d4cd1fd92e Typo fixes 2019-02-22 23:02:48 +01:00
fbd7aad9b9 Settings page for autodetection finally has all the options 2019-02-22 22:50:09 +01:00
0cdd70b2d3 Autodetection settings page 2019-02-22 00:32:44 +01:00
aa4dbc15f6 Gradient detect mode 2019-02-21 21:51:35 +01:00
978bd41386 Minor tweaks 2019-02-21 21:35:21 +01:00
3d0c6926db Automatic detection is now checking for gradients. Autodetection is slower because of that. 2019-02-21 21:21:25 +01:00
a0f1a27271 Stretch mode fixes 2019-02-19 21:10:49 +01:00
4eba239da9 Made extgension remember default stretch mode 2019-02-16 01:54:41 +01:00
5b9080c1c7 Fixes for autoar 2019-02-16 01:19:29 +01:00
9f3a7ba418 Fixed autodetection to the point it sorta works 2019-02-15 20:40:56 +01:00
9cc03d0900 First batch of fixes 2019-02-15 00:26:54 +01:00
a0900a7dad Fixed autodetection to the point it at least starts 2019-02-15 00:00:22 +01:00
4082d0afd9 [poking at ci intensifies some more] 2019-02-14 00:29:17 +01:00
ae9bd30335 poking at ci intensifies 2019-02-14 00:22:59 +01:00
83ca2a0392 testing gitlab ci 2019-02-14 00:17:53 +01:00
2e65e26cf9 Merge remote-tracking branch 'origin/Testing' 2019-02-14 00:01:50 +01:00
c1d34fceb1 Popups sorta work 2019-02-13 23:58:19 +01:00
Alziratt
d8376b39ce Minor work on the buttons and some of the text. 2019-02-13 13:15:56 -02:00
Alziratt
50f3c4fc27 This is a commit test 2019-01-26 15:35:37 -02:00
295c363d60 Minor fixes and reworks of ExtensionConf. Fixed 'general settings' page 2019-01-26 17:52:50 +01:00
cf221fba90 Extension/site settings panel complete (but not functional) 2019-01-21 00:07:11 +01:00
e0482084f0 Rounded up some stragglers from refactor 2019-01-20 23:36:08 +01:00
9ec6973cc0 Fix typo 2019-01-20 23:05:04 +01:00
3336e62ae6 Fix import for extension mode enum 2019-01-20 23:01:45 +01:00
d2a8a177a7 Enumification, reorg of ExtensionConf 2019-01-20 22:59:06 +01:00
08469074a6 css fixes 2019-01-20 21:12:26 +01:00
a2f1c8eba2 Sending commands to single frames seems to work, kinda 2019-01-20 20:36:24 +01:00
b49f8c6d26 Functionality that lists embedded videos has been restored. TODO: css, make it work 2019-01-20 19:58:26 +01:00
e1467cd6d7 attempt at fixing frames 2019-01-18 00:26:15 +01:00
3ed3eb8004 Readme update, css fixes 2019-01-17 22:16:55 +01:00
3ff00e629d UI fixes, re-implemented zoom 2019-01-03 02:07:16 +01:00
7a6ecb96bb fix shortcut button 2019-01-03 02:05:54 +01:00
a9fb93966a Commands from popup to content script seem to work 2019-01-02 20:36:00 +01:00
286a49e189 we dont need that 2019-01-02 00:54:28 +01:00
10a8746338 Made keyboard shortcuts work again, changed videoFloat -> videoAlignment for consistency, roughly completed ActionList.js 2018-12-31 03:34:26 +01:00
9c3ca3744b Reorganized stuff for content script & get it working (preliminary; performance issues on YT) 2018-12-31 01:03:07 +01:00
20030f1679 Comms broken into separate files, fixed uw-bg to the point there's no errors in console 2018-12-30 23:41:44 +01:00
e2df78aa78 Started using vue for settings and popup, start of rewrite for settings page 2018-12-30 23:16:09 +01:00
7593e95726 last non-vue commit 2018-12-30 17:08:54 +01:00
2e5e85d9d8 Styled action table, fixed callback function not returning proper action index 2018-12-14 00:19:46 +01:00
c23445ba3f Action table is now actually a table 2018-12-13 23:09:29 +01:00
7f185c80ef Change css of the popup 2018-12-10 00:33:31 +01:00
d88a6d2378 Swap 'all' and 'currently playing' options, make 'all' default. 2018-12-10 00:32:52 +01:00
8fa33ed7aa fixed video registering 2018-12-09 02:13:26 +01:00
93e767be0b Remove player mark when closing player popup 2018-12-09 01:37:19 +01:00
5d082f406c Tabitem — updated to include color tag 2018-12-09 01:36:30 +01:00
236852bc78 Don't duplicate overlays for frame marks 2018-12-07 22:57:35 +01:00
6ef744bfa5 attempt at launch.json for debugging. Not very successful so far. 2018-12-07 21:37:32 +01:00
11d7e59645 Pass pointer events through the div (todo: think of something when player thing goes live) 2018-12-07 00:22:27 +01:00
2c889b55a8 Marking player now works (the div mark remains on top of yt videos). Todo: clear mark when popup goes away. 2018-12-07 00:17:49 +01:00
8bdd8a4dbf Marking frames (todo: sort out the comms) 2018-12-06 23:55:54 +01:00
e43d39a8fd Fixed panning for real, added option to reverse mouse settings. 2018-12-03 00:31:28 +01:00
5043190441 Panning works again (while holding shift) 2018-12-02 23:51:34 +01:00
bf5a51963b forgot to commit new files 2018-12-01 01:35:22 +01:00
8cc1d4c19f Settings: build list of actions 2018-12-01 00:50:22 +01:00
fa0181815b Settings page: Ui accessible via settingsvars.js 2018-11-30 22:18:58 +01:00
2404cd7757 Settings page: basic html 2018-11-29 21:07:27 +01:00
a5639ad394 Proper css/js imports for settings page 2018-11-28 23:52:54 +01:00
d8fa0ce08f Re-added settings page. Settings page is broken atm tho. 2018-11-28 23:47:46 +01:00
98250ee2f2 Re-added all buttons to popup. Not working: selection 2018-11-26 23:44:37 +01:00
6b9c0274b7 Selecting popup buttons in 'site settings' and 'extension settings' 2018-11-26 22:42:00 +01:00
1d7362c27f fix 2018-11-26 21:19:48 +01:00
ebf1058dda Tab switching in popup fixed 2018-11-26 21:12:24 +01:00
5a43011797 Remove unused popupvars 2018-11-26 20:44:23 +01:00
65c35d369c Process buttons for extension and site settings 2018-11-26 00:04:11 +01:00
8bdb7b9e94 Extension settings and site settings prepared for adding buttons programmatically 2018-11-25 23:53:30 +01:00
e9cc0d8eeb fix tabitem saving 2018-11-23 00:29:13 +01:00
6eaeb717e2 remember tab item selection in popup 2018-11-22 22:55:22 +01:00
0526b43aae remove console.logs at frame selection 2018-11-21 22:15:16 +01:00
acd38cf8b4 fix frame selection resetting 2018-11-21 22:14:14 +01:00
4d21187596 setting aspect ratio only to videos that are playing works 2018-11-21 21:58:13 +01:00
c6ad32f712 routing requests to appropriate frames 2018-11-21 20:41:15 +01:00
f294865231 'Currently playing' and 'all' tabs added, select 'video settings' by default 2018-11-18 23:54:54 +01:00
5e7af00f24 Fix #50
That was easier than expected.
2018-11-18 20:40:57 +01:00
6eab0cf828 Buttons and keyboard shortcuts functional 2018-11-18 18:44:44 +01:00
0ff3a71c16 Keyboard shortcut can display modifier keys, code cleanup 2018-11-18 12:43:03 +01:00
85426aa47f Button fix 2018-11-18 03:50:15 +01:00
b83b46577b Removed some console.logs that weren't hiding behind if 2018-11-18 03:30:43 +01:00
32e5ed365b Popup buttons are being added programmatically (video tab only) 2018-11-18 03:29:16 +01:00
0004b4287a Save button labels in ExtensionConf. Temporarily added master list of all possible actions to ExtensionConf 2018-11-18 01:32:01 +01:00
e1847f93b7 Fixed video alignment when video is aligned to left or right, not center 2018-11-17 00:11:07 +01:00
c6e3689d0d Fixed video alignment 2018-11-16 23:02:56 +01:00
df79c9ddd3 ActionHandler works (at least as far as keys are concerned) 2018-11-15 00:18:41 +01:00
5489d7d723 Keybinds getting re-implemented into action handler 2018-11-14 23:32:37 +01:00
3f14785c29 Create tabs and stuff with javascript for more readability. 'unregisterVideo' doesn't get fired, so manual cleanup of the videoTab object was implemented in background script 2018-11-11 22:35:08 +01:00
ccafcd5285 Components for popup UI 2018-11-11 02:25:47 +01:00
981368b376 check for embedded by url, not by frame id 2018-11-10 23:09:50 +01:00
a321789c34 added comment next to some weird hack 2018-11-09 00:57:47 +01:00
701a1b1123 unborked saving/loading options (forgot to change site -> site.host everywhere where applicable) 2018-11-09 00:57:05 +01:00
a2c127fef5 fix css 2018-11-09 00:37:05 +01:00
c3ba318c7d Breaking vars from popup.js into separate file, showing list of embedded frames 2018-11-09 00:35:18 +01:00
cbd7cbeb4a popup now receives info about current tab as well as the list of frames with videos in that tab 2018-11-08 23:05:47 +01:00
5cf3ec9b86 Videos from tabs/frames are being registered in the background script 2018-11-07 00:03:06 +01:00
8760626e8f readme update, version bump 2018-11-06 20:43:47 +01:00
c3d71cd1e7 Extension basic mode more or less works. Added fix for sites that center stuff with 'top: 50; left: 50, translate(-50, -50)' 2018-11-02 23:10:42 +01:00
48da83b75d Basic mode: ar resets properly when switching from fullscreen to normal 2018-11-02 21:51:51 +01:00
32f868a91c Basic mode: when switching to full screen, restart ar detection proper 2018-11-02 21:41:26 +01:00
985e285914 Basic mode works when switching to full screen (on clips.twitch)
doesn't work when we go back from the full screen mode tho
2018-11-02 21:19:34 +01:00
94990a0ba8 example for (clips.)twitch.com 2018-11-02 20:42:26 +01:00
90e512559d Started including basic mode 2018-11-02 02:52:01 +01:00
8c4759dbe8 test videos update 2018-11-01 23:38:07 +01:00
e216929b0c Added test video examples for reddit and streamable 2018-10-26 18:49:16 +02:00
10071aea7f minor readme overhaul 2018-09-27 22:50:54 +02:00
be80858209 fix typos in readme 2018-09-27 22:36:42 +02:00
128e311bb5 Merge branch 'master' of github.com:xternal7/ultrawidify 2018-09-27 22:30:30 +02:00
6a05d48084 README.md update — added howto for MS Edge 2018-09-27 22:30:16 +02:00
06c681668f Zip with edge version zipped 2018-09-27 01:34:23 +02:00
bb3349eff9 Edge stuff 2018-09-27 00:18:13 +02:00
ee268c5e9c Fixed some edge-specific bugs 2018-09-25 23:38:15 +02:00
ac59998f24 Merge branch 'master' into stable 2018-09-23 19:56:43 +02:00
255cdd9820 changelog update 2018-09-23 19:48:48 +02:00
9fd1921348 Release 2018-09-23 19:47:50 +02:00
7036799e9f Pan: eventhandler unbinding. Fixed 'reset zoom' in popup 2018-09-23 19:47:18 +02:00
2bd83fbc01 fixed issue with saving alignment 2018-09-23 13:55:03 +02:00
79f5ae01de Various fixes. Release version for reals 2018-09-23 02:39:27 +02:00
e2cb85610b release version, but for real this time. (removed ungated console.logs, updated readme) 2018-09-23 00:51:19 +02:00
ee21fdcd12 release version 2018-09-23 00:45:42 +02:00
908d37dee5 readme fix 2018-09-23 00:42:25 +02:00
5c50272f9e fixed popup zoom slider resetting 2018-09-23 00:38:36 +02:00
8dbdc3c2d2 Readme update 2018-09-23 00:30:25 +02:00
f490684cfd probably fixed settings saving 2018-09-22 22:50:32 +02:00
afb595d8c0 popup picks up current zoom level 2018-09-21 00:26:08 +02:00
51c1255eed disable other buttons in 'extension settings' tab if extension is disabled 2018-09-20 22:02:15 +02:00
d1d8945aac using tabs API to acquire URL of current tab 2018-09-20 21:45:09 +02:00
e05eb27e6a updating popup url 2018-09-20 21:30:45 +02:00
0f996f3067 registering tab — working with youtube only 2018-09-20 01:11:18 +02:00
06cfb9a04e Fixes for minor popup bugs 2018-09-19 23:34:47 +02:00
c713977bb6 Fixed popup zoom 2018-09-19 22:52:53 +02:00
c7cf9b4be7 logging 2018-09-18 23:48:05 +02:00
f265799e3c commands for setting zoom from the popup, zoom is logarithmic/exponential rather than linear 2018-09-18 23:37:33 +02:00
5e2611f410 check for nulls on videodata/panhandler 2018-09-18 00:42:30 +02:00
c8f65f7fca Popup: functional. TODO: implement command handling in CommsClient 2018-09-18 00:40:05 +02:00
4965529de9 Updating settings backthing stuff for new popup 2018-09-17 00:39:32 +02:00
f6899be0ce Popup: extra buttons, console output beautify, changed experimental notice, disabled text selection 2018-09-16 23:24:01 +02:00
89ebae315a Popup: fixed buttons in site settings tab not getting selected 2018-09-16 19:28:40 +02:00
1efcc83b44 Popup: fixed menus not getting disabled 2018-09-16 14:22:08 +02:00
76b5f6eca1 Fixed switching menus 2018-09-16 14:14:16 +02:00
354b987cb4 start popup redesign 2018-09-14 22:21:39 +02:00
d7946d4098 fix zoom 2018-09-14 00:10:57 +02:00
a8a84fa4ef updated readme 2018-09-13 23:51:42 +02:00
063a803933 Zooming and panning kinda works 2018-09-13 23:47:20 +02:00
067ea67485 Merge branch 'master' into stable 2018-08-31 00:38:25 +02:00
8c9ee493a8 fix 2018-08-31 00:38:03 +02:00
c1a4b8e701 updated readme files 2018-08-31 00:35:52 +02:00
a12c43451f Merge branch 'master' into stable 2018-08-30 23:18:04 +02:00
c6d5298f39 v3.1.0 for firefox 2018-08-30 23:17:42 +02:00
165790db7e fixed issue where resizer.js didn't get killed properly 2018-08-30 23:03:47 +02:00
0c37c5a0e1 Popup and settings work, but all scripts can run doubly if uw.init() was called twice 2018-08-30 00:56:26 +02:00
38a94e3bd3 Changing persistent settings (the ones _not_ limited to current page) bypasses comms 2018-08-29 21:23:08 +02:00
6c93a19248 Misc fixes 2018-08-29 00:41:26 +02:00
1feeaed257 Some more attempts at making comms/setting saving behave 2018-08-23 01:04:37 +02:00
107c9b12bd Comms: accounted for the possibility of pageInfo missing when extension is disabled 2018-08-22 23:46:59 +02:00
2619b02263 Fix comms 2018-08-22 23:16:08 +02:00
b222ea81c7 Fix settings 2018-08-22 22:34:07 +02:00
65f385ca11 manifest.json cleanup 2018-08-22 22:20:53 +02:00
e97b385738 Gitignore update 2018-08-22 22:20:31 +02:00
83aef6ac79 #40: Settings persist over page reload 2018-08-21 23:48:47 +02:00
a5aa282a01 CSS watcher reimplemented, seems to be working (fix #43) 2018-08-21 00:48:15 +02:00
b3079a81ea #42: GlobalVars is gone. 2018-08-20 22:45:43 +02:00
da18f5a5c4 Extension at least starts now 2018-08-07 23:31:28 +02:00
966f8a034d Rewrote Settings.js, did some cleanup with legacy stuff. 2018-08-05 23:48:56 +02:00
b01e5ebcec Renamed stuff for consistency with ExtensionConf. Cleanup. 2018-08-03 00:44:37 +02:00
09cc1816ad Cleanup 2018-08-02 23:24:22 +02:00
1eaff8f2ce some preliminary cleaning in the 'about' section 2018-07-19 23:48:24 +02:00
8ba028a5b2 git commit -am doesn't add new files 2018-07-19 23:05:57 +02:00
872bc4ece7 Some work on settings 2018-07-19 23:05:39 +02:00
335bcd64fc code cleanup 2018-07-16 22:34:32 +02:00
20576675ce Fixes for chrome 2018-07-16 22:30:52 +02:00
5ce0c51018 Fixed autodetection menu 2018-07-16 20:38:16 +02:00
d48d1d3e96 updated readme some more 2018-07-15 17:01:30 +02:00
9a058d18b7 Get ready 🅱️ois, it's happening. 3.0.0 is now officially out of alpha and in stable. 2018-07-15 16:35:08 +02:00
97b5c16345 Language in the popup could be considered hostile or unprofessional by some, so I changed stuff so it appears more kind and polite. 2018-07-15 16:28:29 +02:00
6c458d7590 fixed issue with video alignment not working 2018-07-15 16:22:32 +02:00
8579d25d5f fixed an issue where autodetection wouldn't sometimes trigger even when it should 2018-07-15 15:18:40 +02:00
bfb416e9fb Finished readme rewrite 2018-07-13 21:56:55 +02:00
ae37009dd4 Included new images 2018-07-13 00:00:37 +02:00
db5eb4a9d8 documentation 2018-07-12 23:59:33 +02:00
30c94975c1 reenabled ghetto url check 2018-07-12 23:27:10 +02:00
43d1b02303 using basic stretching should pause aspect ratio autodetection 2018-07-11 23:13:40 +02:00
37b59f19ab Fixed aspect ratio flip-flopping in fallbackMode (kinda. it's a workaround) 2018-07-11 00:01:44 +02:00
0825dacdb8 fixed autodetection on netflix (and anywhere with fallbackMode, hopefully) 2018-07-10 21:58:26 +02:00
a4f0c9db4d basic stretch mode fixed 2018-07-10 20:36:12 +02:00
8a73d8c6a4 validation feedback on autoar timer input field 2018-07-09 23:40:26 +02:00
cf813cf6f8 Popup seems to be more or less fixed. 2018-07-09 23:30:11 +02:00
0eb70babf3 Popup: moved stretching settings to a new tab 2018-06-29 00:30:42 +02:00
029efd92ed Popup is now approximately functional 2018-06-28 23:43:52 +02:00
ea86721321 Fixed some minor bugs, rewrote some bits of the popup 2018-06-27 23:55:37 +02:00
c5debb40a7 Fixed basic stretching 2018-06-15 00:33:10 +02:00
3e787be684 Fixed the bug where extension didn't ignore binds when writing comments 2018-05-31 23:15:47 +02:00
8e1687a5b6 stretch mode is in stretcher now 2018-05-30 23:20:23 +02:00
9478b5af15 half of possibilities to stretch a video checked and working 2018-05-29 00:36:14 +02:00
ce0b9a4e99 Merge branch 'master' of github.com:xternal7/ultrawidify 2018-05-28 23:57:12 +02:00
2bf5a07bc5 started some work on stretcher 2018-05-28 23:56:44 +02:00
Tamius Han
7d08377b17 Update issue templates 2018-05-27 23:09:44 +02:00
0871ad6d97 Stretch mode buttons work 2018-05-27 21:41:08 +02:00
293b784704 Popup: aspect ratio buttons are working. Fixed some bugs with crop calculation. 2018-05-27 01:29:02 +02:00
ba26db28ea CommsServer should now support frames (but we aren't quite sure yet) 2018-05-26 23:56:50 +02:00
dd319551bc Comms minimally functional again, with one ugly workaround. 2018-05-26 23:08:49 +02:00
e2d43fb46d Cropping video now uses scale() and translate() 2018-05-25 21:37:09 +02:00
f5035b933d applyConditionalStretch() now accepts factors and actualAr as arguments. 2018-05-24 23:50:46 +02:00
748ed8293d Fixed function calls in Resizer.js (zoom and stretcher). ApplyConditionalStretch, computeOffsets and applyCss are still TODO 2018-05-24 23:29:30 +02:00
547ef7ad7b Stretcher.js instanced, can calculate aspect ratio factors from aspect ratios alone 2018-05-24 22:49:32 +02:00
7d89f41e40 Moved keybinds options to ExtensionConf. Rewrote Keybinds in a bit more OOP way 2018-05-24 20:50:37 +02:00
0f8f842ec6 Forgot to save VideoData.js 2018-05-23 23:58:34 +02:00
8f201e1ee0 PageInfo can start and stop all periodic functions (to be implemented when switching tabs) 2018-05-23 23:57:51 +02:00
8d7cefd420 Scaler.js - calculateCrop() and modeToAr() no longer take 'video' and 'playerDimensions' as arguments, instead reading those properties from videoData 2018-05-23 00:34:18 +02:00
a7aef8856d PlayerData object gets destroyed when videoData does. Scaler now takes video from videoData instead of function arguments 2018-05-22 00:19:50 +02:00
69d665f6fd PageInfo: rescan doesn't compare found <video> elements to elements in destroyed VideoData objects, fixing the issue where autodetection broke upon visiting youtube's search page 2018-05-21 22:43:56 +02:00
42cf4d91e7 Fixed the problem where 'this' in ghettoWatcher() was 'window' instead of current object. 2018-05-20 23:31:05 +02:00
ad1436289b Fixed some problems with recursion in autodetection startup. Fixed problems with autodetection sometimes not starting. 2018-05-20 23:17:09 +02:00
009a440ce8 but really, now 2018-05-19 22:21:28 +02:00
c53780e619 If video doesn't have width or height, we do nothing. 2018-05-19 22:20:35 +02:00
08b10220e1 Scaler no longer static 2018-05-18 23:26:20 +02:00
c442f9e01c Fixed autodetection crash on drm-protected sites 2018-05-17 23:09:04 +02:00
4fe5ce6bcb Autodetection persists over multiple videos 2018-05-16 23:26:47 +02:00
82abee42bd autodetection works more or less properly. Removed some console.logs 2018-05-16 20:59:39 +02:00
4914a0dc1c video is now centered correctly 2018-05-16 20:42:00 +02:00
d38dee1a8a Autodetection gets detected and applied, but css is still off 2018-05-16 20:26:55 +02:00
17f330f242 Automatic aspect ratio detection runs, but applied css is garbage and everything crashes after first aspect ratio change. 2018-05-15 21:40:53 +02:00
dba655b7d3 EdgeDetect: findCandidates() and edgeDetect() work (according to DebugCanvas) 2018-05-15 20:36:22 +02:00
a106d0f468 Fixed syntax errors and errors with inexisting or improperly declared variables. Didn't fix things that make stuff not work tho 2018-05-14 20:39:15 +02:00
3686341677 rewrite finished to the point where extension doesn't outright crash. Nothing works, though. 2018-05-13 21:05:11 +02:00
0ac051d5d5 Resizer prepared to handle stretching and zooming 2018-05-13 15:22:28 +02:00
cbe250fabf All thigns related to player element have been moved to PlayerData (or at least most of them). 2018-05-13 13:49:25 +02:00
4e2ac9c647 Implemented zoom 2018-05-12 02:51:58 +02:00
4519d8854a EdgeDetect is now in edgeDetect 2018-05-12 01:51:43 +02:00
acc0455415 EdgeDetection partially moved to its own file 2018-05-11 00:49:50 +02:00
3bc356636e Fixed some silly mistakes 2018-05-10 22:35:38 +02:00
4ed361ca65 DebugCanvas converted to proper object. ArDetect not fixed yet 2018-05-10 22:22:58 +02:00
af0ad4c080 GuardLine (blackbar and image tests) moved to their own file) 2018-05-10 21:39:24 +02:00
edcd1e3ccb Fixed links in popup for Chrome 2018-05-10 18:37:03 +02:00
Tamius Han
d39a070117 Some progress on frameCheck() (formerly _ard_draw_but_for_realz) 2018-05-09 00:58:50 +02:00
Tamius Han
a40f32908b ArDetect.js: processAr rewritten in ArDetector object 2018-05-09 00:34:22 +02:00
Tamius Han
2f6710586f ArDetect.start() was objectified 2018-05-09 00:03:22 +02:00
Tamius Han
36878921fb Starting to turn ArDetect into a proper class as well 2018-05-08 23:35:16 +02:00
Tamius Han
c7b6035c55 conditional stretching 2018-05-07 21:58:11 +02:00
Tamius Han
390348202e Moved functions that calculate video crop from Resizer.js to Scaler.js. Resizer.js is not fixed to account for this yet. 2018-05-06 21:32:18 +02:00
Tamius Han
fa5e3909e6 Added support links to the popup, preparing popup for stretch mode fixes. 2018-05-06 00:36:38 +02:00
320 changed files with 54679 additions and 16330 deletions

27
.babelrc Normal file
View File

@ -0,0 +1,27 @@
{
"plugins": [
"@babel/plugin-proposal-class-properties"
],
"presets": [
["@babel/preset-env", {
"useBuiltIns": false,
"targets": {
"esmodules": true
}
}]
]
}
// {
// "plugins": [
// "@babel/plugin-proposal-optional-chaining"
// ],
// "presets": [
// ["@babel/preset-env", {
// "useBuiltIns": "usage",
// "targets": {
// // https://jamie.build/last-2-versions
// "browsers": ["> 0.25%", "not ie 11", "not op_mini all"]
// }
// }]
// ]
// }

25
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -0,0 +1,25 @@
---
name: Bug report
about: Create a report to help us improve
---
**Describe the bug**
Describe what happened. Don't forget to mention which site you were on (reddit, netflix, youtube). If issue only happens with certain videos, please provide links with timestamps.
**To Reproduce**
What did you do to make it happen?
**Expected behavior**
What do you think should happen instead?
**Screenshots**
A picture is worth a thousand words. If Ultrawidify scales a video in an improper way, please include a screenshot of that.
**Browser and OS**
* Browser/browser version:
* Operating system:
* Ultrawidify version:
**Additional info**
Any other things you want to say.

17
.gitignore vendored
View File

@ -1,2 +1,17 @@
ultrawidify.zip
old/
build/
/node_modules
/*.log
/dist*
/uw-git_keys
/untracked-assets
*.pem
*.kate-swp
src/res/img/git-ignore/
test/debug-configs/
debugging-resources/

1
.nvmrc Normal file
View File

@ -0,0 +1 @@
20.19.6

8
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,8 @@
{
"recommendations": [
"hollowtree.vue-pack",
"msjsdiag.debugger-for-chrome",
"firefox-devtools.vscode-firefox-debug",
"msjsdiag.debugger-for-edge"
]
}

58
.vscode/launch.json vendored
View File

@ -1,14 +1,52 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "attach",
"name": "Attach to Chrome",
"port": 9222,
"urlFilter": "http://*/*",
"webRoot": "${workspaceFolder}"
},
{
"type": "firefox",
"request": "attach",
"name": "Attach (firefox)",
"pathMappings": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${file}"
"url": "webpack:///ext",
"path": "${workspaceFolder}/src/ext"
}
]
},
{
"name": "Launch addon (firefox)",
"type": "firefox",
"request": "launch",
"port": 6000,
"reAttach": true,
"addonType": "webExtension",
"addonPath": "${workspaceFolder}/dist-ff",
"pathMappings": [
{
"url": "webpack:///ext",
"path": "${workspaceFolder}/src/ext"
},
]
}
],
"firefox": {
"executable": "/usr/bin/firefox-developer-edition",
"firefoxArgs": [
"--start-debugger-server"
]
}
},
"chrome": {
"executable": "/usr/bin/google-chrome-stable --remote-debugging-port=9222",
}
}

113
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,113 @@
{
"cSpell.words": [
"aard",
"allowtransparency",
"ardetector",
"autodetect",
"autodetection",
"beforeunload",
"blackbar",
"blackbars",
"blackframe",
"bruteforce",
"canvas",
"clickthrough",
"cmpa",
"cmpb",
"com",
"comms",
"csui",
"ctab",
"cycleable",
"decycle",
"dinked",
"dinks",
"disneyplus",
"endregion",
"equalish",
"fith",
"fitw",
"fuckup",
"fucky",
"geoblocked",
"geoblocking",
"gfycat",
"gmail",
"guardline",
"han",
"haram",
"Heebo",
"hoverable",
"iframe",
"imgur",
"insta",
"jsoneditor",
"jwplayer",
"kavin",
"letterboxed",
"manjaro",
"mdicon",
"mdijs",
"metaivi",
"minification",
"mitigations",
"mstefan",
"nogrow",
"noshrink",
"outro",
"PILLARBOX",
"PILLARBOXED",
"polyfill",
"problemo",
"recursing",
"reddit",
"rescan",
"resizer",
"resizers",
"SCPI",
"scrollbar",
"shitiness",
"smallcaps",
"spaghettified",
"suboption",
"subscan",
"tabitem",
"tablist",
"tamius",
"textbox",
"ultrawide",
"ultrawidify",
"unmark",
"unmarking",
"unsets",
"unshift",
"uwid",
"uwui",
"videodata",
"vids",
"vuejs",
"vuex",
"wakanim",
"webextension",
"webextensions",
"wuckies",
"wucky",
"ycenter",
"youtube",
"YYMM"
],
"cSpell.ignoreWords": [
"abcdefghijklmnopqrstuvwxyz",
"autoar",
"cheight",
"cwidth",
"fcstart",
"fctime",
"legacycd",
"ncol",
"nrow",
"tickrate",
"undisable",
"vdid"
]
}

View File

@ -1,10 +1,444 @@
# Changelog
## v6.0 (current major)
### v6.4.0
* In-player UI now appears in full-screen even for websites that use top layer
* Embedded sites now inherit settings of the parent frame by default
* Setting inheritance/overriding is not thoroughly tested and may be full of edge cases.
* Added validation to custom aspect ratio entry menu. Corrected parsing of aspect ratios given in the X:Y format, even though aspect ratios should be ideally given as a single number.
* Autodetection can now scan for subtitles.
* New experimental autodetection (which is secretly just slightly modified subtitle check)
### v6.3.0
* Added zoom segment to in-player UI and popup.
* Fixed keyboard zoom
* Added additional zoom options. If you wonder how zoom options differ from crop, mess around and find out.
* Subdomains now inherit same settings as their parent domain by default
* Extension popup detects embedded content
* Added `www.youtube-nocookie.com` to "officially supported" list
### v6.2.5
* Popup appearance changed — UI advertisement panel was moved to the popup header
* Fixed the bug where popup wouldn't be showing the correct settings
* Fixed the bug where site settings would default to 'disabled', even if Extension default setting was not disabled.
* Added ability to export and import settings from file (ft. developer mode editor)
* [dev goodies] Added debug overlay for aard
* Fixed an issue where aspect ratio wouldn't get calculated correctly on youtube videos with native aspect ratios other than 16:9
* Fixed an issue that would crash the extension if video element didn't have a player element associated with it
* Fixed an issue where extension sometimes wouldn't work if video element was grafted/re-parented to a different element
### v6.2.4
* [#264](https://github.com/tamius-han/ultrawidify/issues/264) — fixed issue with white screen that affected some youtube users. Special thanks to [SnowyOwlNugget](https://github.com/SnowyOwlNugget">SnowyOwlNugget), who instead of whining provided the necessary information.
* Minor updates to the settings
* Switching between full screen, theater, and normal player now correctly enables and disables the extension according to the settings.
* Don't reset settings if updating conf patches fails.
* Darken in-player UI backgrounds until Chrome fixes its backdrop-filter bug
### v6.2.3
* Fixed default persistent mode
### v6.2.2
* Fixed the issue where stretching was not applied if no cropping was used
* Added way to manually enable or disable color scheme detection, as a compromise between #259 and #264
### v6.2.1
* Fixed offset issue on Netflix
* Fixed issue with overlay iframe not being transparent on twitter
### v6.2.0
* Parts of automatic aspect ratio detection use WebGL now. This should result in improved performance.
* In-player UI now indicates whether a site is having a problem with automatic aspect ratio detection.
* UI improvements
Since automatic aspect ratio detection had to be rewritten completely and since the new version needs to be out 5 days ago, there are some regressions in the automatic aspect ratio detection.
### v6.1.0
Was skipped due to how major the changes were.
### v6.0.1
* Fixed external links
### v6.0.0
Chrome only, because I needed to rush manifest v3 migration before ensuring things work in Firefox.
* In player UI
* New alignment options (can align video both vertically, as well as horizontally)
* Extension does a little bit of a better job differentiating between levels of support for a given site
* Changed how cropping and panning works. This should lead to fewer problems and better generic support.
* REGRESSION: no manual panning with shift + mouse movement
* "Player select" screen, which provides a GUI way for picking HTML element that acts as the video player area
Regressions and potential issues:
* Settings were largely not migrated from previous versions. This is as intended, since changes to cropping (and some other aspects)
rendered certain old settings obsolete.
* Extension can no longer discriminate between iframes — extension popup commands get sent to ALL iframes on page
* Extension probably can't discriminate between multiple videos on a single page
## v5.x
### v5.1.7
Firefox-only.
* When cropping and panning video, CSS' `transform: translate(x,y)` now uses integers _always_. Before that fix, `translate(x,y)` could be offset by x.5 px, and that half of a pixel introduced a 1px thick line on the portion of the left edge of the video.
### v5.1.7
* When aligning videos, ensure video is never translated by a fractional value
* As of recent nVidia driver update in Edge, Angle detection fails in a way that prevents popup from showing up. This problem should be fixed now.
The angle detection problem was fixed by disabling the angle detection check for now, as Chrome, et al. appear to have fixed buggy video hardware acceleration.
### v5.1.6
* Added new config for disney+ (courtesy of @MStefan99)
* Chrome hardware acceleration is bugged and cannot be worked around in-extension. Only way to fix this is for users to change their Google Chrome settings. Added naggathon with instructions into the extension popup.
### v5.1.5
* Fixed laginess in Chromium-based browsers on Windows. Details in [#199](https://github.com/tamius-han/ultrawidify/issues/199#issuecomment-1221383134)
### v5.1.4
* Fixed some problems with autodetection not returning to 16:9 when necessary if autodetection already changed aspect ratio ([#198](https://github.com/tamius-han/ultrawidify/issues/198))
### v5.1.3
* Fixed some problems with autodetection sometimes briefly resetting on dark frames ([#195](https://github.com/tamius-han/ultrawidify/issues/195), [#196](https://github.com/tamius-han/ultrawidify/issues/196))
### v5.1.2
* `set-extension-mode` turned into `set-ExtensionMode` at some point. This caused in "Enable this extension" options to vanish on certain setups.
* Blackframe tests now run on same data as main algorithm as opposed on a smaller sample (`drawImage()` calls are _very_ expensive even for a 16x9 sample).
### v5.1.1
* Fixed autodetection
### v5.1.0
* Re-enable logger
* Move aspect ratio autodetection to requestAnimationFrame
* Fix netflix
### v5.0.7
* Videos of square-ish aspect ratios on 1440p (and lower) resolutions now no longer get misaligned ([#162](https://github.com/tamius-han/ultrawidify/issues/162))
* Alignment of featured videos on youtube channel page should now also be fixed
### v5.0.6
* Added configuration for metaivi.com based on user feedback ([#160](https://github.com/tamius-han/ultrawidify/issues/160))
* Removed ExtConfPatches for versions < 4.5.0, because nobody should be using a build of this extension that's over a year old
### v5.0.5
* improved UX a bit
* Fixed white background on app.plex.tv ([#158](https://github.com/tamius-han/ultrawidify/issues/158))
### v5.0.4
* Attempt to fix disney+ again, courtesy of [@jwannebo](https://github.com/tamius-han/ultrawidify/issues/84#issuecomment-846334005) on github.
### v5.0.3
* Fixed the issue where the videos were sometimes offset up and left. Again.
* Fix the issue where correcting source stretch was squished incorrectly ([#153](https://github.com/tamius-han/ultrawidify/issues/153))
### v5.0.2
* When in full screen, the extension will assume player element dimensions are the same as the screen resolution. This should help with sites where ultrawidify doesn't correctly identify the player, as cropping generally doesn't work if player element is not identified. Old behaviour can be restored in advanced extension settings by toggling the "use player aspect ratio in fullscreen" checkbox under 'player detection settings'.
* Extension should now respect 'disable extension' option for real.
* Fixed the issue where player wouldn't get detected if video was wider than the player.
### v5.0.1
* Added an option for users to turn off (and/or configure) Chrome/Edge's zoom limiter.
### v5.0.0
There's been some big-ish changes under the hood:
* Migrate main scripts to typescript (vue is currently not included).
* webextension-polyfill is now used everywhere (if only because typescript throws a hissy fit with `browser` and `chrome` otherwise) ([#114](https://github.com/tamius-han/ultrawidify/issues/114))
* Fix some bugs that I didn't even know I had, but typescript kinda shone some light on them
* Manual zoom (Z/U unless sites override the two) should now work again (without automatic AR constantly overriding it). Same goes for panning. ([#135](https://github.com/tamius-han/ultrawidify/issues/135) & [#138](https://github.com/tamius-han/ultrawidify/issues/138))
* Fix issue when video would be scaled incorrectly if video element uses `height:auto`.
* **[5.0.0.1]** Fixed the issue where settings were reset on page load.
* **[5.0.0.1]** Fixed the issue where settings page wouldn't load.
## v4.x (current major)
### v4.5.3
* Provides workaround for the fullscreen stretching bug Chrome 88 (or a recent Windows 10 update) introduced for nVidia users using hardware acceleration on Windows 10. In order to mitigate this bug, Ultrawidify needs to keep a 5-10 px wide black border while watching videos in full screen. This bug is also present in Edge.
* **[4.5.3.1]** Fixed letterbox misalignment binding in settings (#134)
* **[4.5.3.2]** Fixed false 'autodetection not supported' notifications.
### v4.5.2
* Fixed the issue where videos would sometimes get misaligned while using hybrid stretch, except for real this time. ([#125](https://github.com/tamius-han/ultrawidify/issues/125))
* Improved DRM detection (the 'autodetection cannot work on this site' popup should now no longer show up on the sites where autodetection _can_ work)
### v4.5.1
* Fixed the misalignment issue on netflix ... hopefully.
* 'Site settings' tab should now work in Chrome as well ([#126](https://github.com/tamius-han/ultrawidify/issues/126))
* Popup interface now refreshes properly ([#127](https://github.com/tamius-han/ultrawidify/issues/127))
* Videos should now be scaled correctly when the display is narrower than video's native aspect ratio ([#118](https://github.com/tamius-han/ultrawidify/issues/118))
* Fullscreen videos on streamable are aligned correctly ([#116](https://github.com/tamius-han/ultrawidify/issues/118)).
* **[4.5.1.1]** Streamable fix broke old.reddit + RES on embeds from v.redd.it and streamable.com. We're now using an alternative implementation. ([#128](https://github.com/tamius-han/ultrawidify/issues/128))
* **[4.5.1.2]** Fixed the issue where videos would sometimes get misaligned while using hybrid stretch. ([#125](https://github.com/tamius-han/ultrawidify/issues/125))
* **[4.5.1.3]** Added fix for disney plus
* **[4.5.1.3]** Microsoft Edge has fixed the bugs that prevented the extension from working properly. Popup should no longer be shown.
### v4.5.0 (Current)
* Under the hood: migrated from vue2 to vue3, because optional chaining in templates is too OP.
* (On options page, section 'Action &amp; shortcuts') Manual aspect ratio now supports entering custom ratios using '21/9' and '2.39:1' formats (as opposed to single number, e.g. '2.39') — [#121](https://github.com/tamius-han/ultrawidify/issues/121).
* Added config for wakanim.tv (special thanks to @saschanaz for doing the legwork — [#113](https://github.com/tamius-han/ultrawidify/issues/113))
* (In Firefox) When extension was placed in overflow menu, the popup was cut off. That should be fixed now. [#119](https://github.com/tamius-han/ultrawidify/issues/119)
* The extension will now show a notification when autodetection can't run due to DRM
* Videos on facebook and reddit no longer get shifted up and to the left for me (cropping most of the video off-screen), but I haven't been deliberately trying to fix that issue. If you experience that issue, please consider contacting me (via github or email) with a link to a problematic video.
### v4.4.10
* Video alignment should now work on Twitch — [#109](https://github.com/tamius-han/ultrawidify/issues/109)
* Videos should now align properly on Hulu while cropped — [#111](https://github.com/tamius-han/ultrawidify/issues/111) & via email
* Fixed a problem where changing certain settings would cause multiple instances of Ultrawidify to run on a page, effectively preventing some crop options to be set until reload. (possibly [#112](https://github.com/tamius-han/ultrawidify/issues/112)?)
* Fixed a problem where embedded videos would be misaligned after switching from full screen
* **[4.4.10.1]** Fixed cruncyhroll regression — [#109](https://github.com/tamius-han/ultrawidify/issues/115)
### v4.4.9
* Fixed the youtube alignment issue (previously fixed in v4.4.7.1-2), but this time for real (and in a bit more proper way)
* Fixed the bug where extension wouldn't work when URL specified a port (e.g. www.example.com:80)
* **[4.4.9.1]** removed source files from extension build in order to decrease package size
* **[4.4.9.2]** updated dependencies and stuff
In addition to that, as of 4.4.9.1 the build process ensures removal of `node_modules` before building the extension so we can have reproducible builds except for real this time. Hopefully.
### v4.4.8
* Fixed the bug where on pages with more than one video, the list of available videos in the extension popup wouldn't remove videos that are no longer displayed on site. This resulted in extension listing videos that were no longer on the page. Reboot or navigation would also not clear the list if navigating between various pages on the same host.
* Fixed the chrome-only bug where on sites with more than one video, the number wouldn't get hidden when the extension popup closed.
### v4.4.7
* Removed unnecessary font files and image files from the package.
* LoggerUI is now functional.
* **[4.4.7.1]** Additional CSS fixes
* **[4.4.7.1]** Bruteforce fix for youtube alignment issue
* **[4.4.7.2]** Bruteforce fix for youtube alignment issue — increase number of retries
### v4.4.6
* Ensured that Vue part of the content script (logger UI) only loads when necessary in order to fix breakage on certain sites (#96).
* Disabling (or enabling, if running in whitelist-only mode) specific sites used to not work (#91). This issue appears to have been fixed.
* Default stretch mode for sites is now probably being observed, too (#94).
* Fixed netflix (and possibly disney+ )
* It's been almost a month and Chrome Web Store still hasn't finished the review of the 4.4.4.1 (and 4.4.4.2) revisions because when it comes to incompetence, it's hard to expect anything less from Google. I've did some proverbial yelling at the support in hopes that Chrome version will finally see an update (disclaimer: when I said yelling I really mean a polite request, because support staff doesn't deserve abuse because a different department is utter shite at doing their jobs).
### v4.4.5
* Extension no longer requires `allTabs` and `webNavigation` permissions
* Some CSS on the debugger popup was not scoped, causing issues with some sites.
* Fix some additional issues with video alignment when changing video on autoplay
### v4.4.4
* Tab detection in extension popup has been made more accurate
* QoL: Added user-accessible logger (to make fixing sites I can't access a bit easier)
* Changed links to reflect my github username change
* **[4.4.4.1]** Fix broken extension popup.
* **[4.4.4.1]** Fix global/site settings not getting applied immediately/only getting applied after page reload.
* **[4.4.4.2]** Fix problem with video being offset while switching between full screen and non-fullscreen non-theater mode on Youtube
### v4.4.3
* Fixed conf patch for disney+ (hopefully) (v4.4.3.1: but for real)
* `Settings.save()` adds missing values to site config when saving extension configuration.
### v4.4.2
* New stretching modes that squish video to a specified aspect ratio. One of the two modes correct aspect ratio before cropping, the other corrects after cropping.
* Potential fix for disney+ — added an option that forces extension to force player re-detection.
* Fixed bug where certain custom actions that should be removable weren't removable
### v4.4.1
* 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.
### v4.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.
* Ability to preserve aspect ratio between different videos (applies to current page and doesn't survive proper page reloads)
* 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
* Minor rework of settings page (actions & shortcuts section)
* Fixed bug that prevented settings page from opening
* **[4.3.1.1]** quick patch for twitch.tv
### v4.3.0
* Fixed some issues with incorrect alignment after window resize
* Fixed all sorts of issues for videos hosted on v.reddit for new (and old) reddit
* Fixed the issue where setting extension to 'whitelist only' would disable 'site settings' in popup.
* Added user-friendly way to export/import settings (export requires 'download' permissions)
* Reworked logging
* Started using mutation observers to watch for changes in player size as well. Since mutation observers aren't entirely reliable, old way of doing things is still somewhat present as a backup way, but runs less frequently.
* Implemented/improved/fixed settings patching
* **[4.3.0.1]** Removed some console.logs that I missed the first time around.
* **[4.3.0.2]** Extension would not work for new users. (Special thanks to [ezzak](https://github.com/ezzak) for finding and submitting a patch)
### v4.2.4 / 4.2.4.x
* Improvements to player detection. More details in the [blog post](https://stuff.tamius.net/sacred-texts/2019/08/31/ultrawidify-and-the-improper-cropping/).
* **[4.2.4.1]** Fixed default video settings for reddit
* **[4.2.4.1]** Manually specified query selectors will also be checked for compliance with player detection rules.
* **[4.2.4.2]** Additional bugfixes. Updated/fixed default settings.
### v4.2.3 / 4.2.3.x
* Fixed twitchy behaviour on Twitch, Facebook and Twatter. Here's a [blog post](https://stuff.tamius.net/sacred-texts/2019/08/24/ultrawidify-the-twitchy-twitch-problem/) that covers the issue in more detail.
* Cropping now uses user styles (as opposed to modifying element's style attribute)
* Fixed the issue where one-pixel letterbox would result in constant aspect ratio corrections.
* Started using mutation observers to watch for anything modifying the size of our video.
* **[4.2.3.1]** fixed some bugs in popup.
### v4.2.2
* Fixed player detection on reddit (for videos from v.reddit)
### v4.2.1
* Fixed bug where custom CSS didn't get applied to pages
### v4.2.0
* Slightly improved popup design. (Design change suggested by PortaTrekos)
* Player detection: youtube and twitch now have manual player element detection, with strictly defined players.
* Improved site settings control in extension popup. It's possible to enable extension for previously disabled embedded sites.
* Improved incompatibilities with reddit, where videos would be vertically misaligned when not using RES
* Fixed imcompatibilities with Iridium. Flicker when clicking play/pause or switching between big and popup player is caused by either Youtube or Iridium trying to apply their styles over mine.
* Issues with inconsistent alignment that some people reported are potentially fixed
### v4.1.2
* Fixed video alignment issues on www.reddit as well (for people who use old reddit without going to old.reddit)
* Fixed bug with 'player detection' tab
### v4.1.1
* Disabled gfycat
### v4.1.0
* Added ability to add custom CSS to page
* Fixed video alignment issues on old.reddit. Disabled extension on imgur by default.
* Extension now works on vimeo again
* **UX:** Renamed 'about' to 'report a problem' in order to make contact info more discoverable
### v4.0.1
* Fixed bug where sites using 'default' option in 'Extension mode' settings would be disabled, even if extension was not.
* Fixed bug where extension sometimes wouldn't work on Netflix.
### v4.0.0
* Fixed the bug where saving settings wouldn't work
* Massive under-the-hood changes. The extension popup and settings page use VueJS
* **Autodetection improvements:**
* Autodetection tries to differentiate between gradients and hard edge and avoids correcting on gradients. This should help with videos that are similar to [IGN's review of Hollow Knight](https://www.youtube.com/watch?v=hg25ONutphA).
* Black frame detection has been implemented and improved. Some cases (but not all) of text on black background causing aspect ratio corrections have also been fixed.
* Autodetection frequency increased from roughly once every 0.6 seconds to about 3 checks per second.
* Fixed the bug where autodetectin didn't calculate aspect ratio correctly. This bug would manifest in extension cropping too much even though the edge was clearly defined. It most commonly occured in videos of aspect ratio <1 that contained letterbox. [ex 1]( https://www.youtube.com/watch?v=9DP0TbOQcOw), [ex 2](https://www.reddit.com/r/videos/comments/a137pj/daily_reminder_that_shelly_miscavige_wife_of/)
* **Settings page was re-added**
* This includes a page for adding new aspect ratios and keyboard shortcuts. This feature is experimental.
* It's possible to tweak autodetection sensitivity and frequency — in slightly more user-friendly way as well
* It's also possible to tweak autodetection settings in detail.
* It's now possible to reset settings to default
* Rewrote keyboard shortcuts and changed how they're handled. Massively.
* You can now select which specific video on the page you control, provided each video is in its separate iframe
* While I wasn't looking, Netflix started supporting ultrawide monitors on its own. Netflix' implementation clashes with my own, though, so I've decided to disable autodetection on videos that netflix already cropped on their own. Manual aspect ratio changes are still possible, but they're off. You've been warned.
## v3.x
~~### v3.3.0~~
~~This will probably get promoted to 4.0, continuing the trend of version something. 3 not happening. Eulul~~
* ~~Basic mode added~~
* ~~Per-site controls in popup (to control embedded videos)~~
* ~~Rewrote keyboard shortcuts and changed how they're handled. Massively.~~
Never happened, got bumped to 4.0.0.
### v3.2.2
* Pan event listener now gets properly unbound
* Fixed 'reset zoom' button in popup
### v3.2.1
* Fixed issue where global video alignment setting didn't get saved properly
### v3.2.0
* Zoom and panning
* Reorganized popup
* Various bug fixes
### v3.1.1 (Chrome-only)
* Logging was accidentally left on in release version. This was fixed.
### v3.1.0
* Fixed the issue where aspect ratio change wouldn't survive switching between fullscreen and non-fullscreen modes
* Fixed the issue where settings wouldn't survive browser restarts in Firefox
Under the hood:
* rewrote how settings work, swapped Comms with storage.onChanged where it made sense & as much as possible
* enabling/disabling extension (either globally or for a given site) has now instant effect (consequence of above)
### v3.0.1
Minor fixes.
### v3.0.0
Pretty much rewrote extension in more object-oriented way and sorted out spaghetti a little. Site settings and keybinds have been merged with the rest of the extension settings. Rewrote messageing.
User-facing changes:
* Extension can be enabled/disabled globally or on per-site basis
* Automatic aspect ratio can be turned off, either globally or on per-site basis
* Stretching mode implemented
* Popup has been pimped up to reflect those changes
## v2.x
### v2.2.5 (AMO, Chrome)
Added some anti-lag measures. This seems to be an issue affecting _only_ Chrome (and only then some installs), where canvas.drawImage() won't work properly for some reason.
### v2.2.4
### v2.2.4
Lots of mostly incredibly minor stuff.
@ -15,11 +449,11 @@ Lots of mostly incredibly minor stuff.
* Fixed some under-the-hood bugs nobody knew they even existed
* A lil bit of refactoring
### v2.2.3
### v2.2.3
* Fixed automatic aspect ratio detection on DRM-protected sites.
### v2.2.2
### v2.2.2
* Fixes problems with switching from normal to fullscreen player on youtube. If 2.2.1 didn't fix the font issue, this version should have.
@ -35,9 +469,9 @@ Various improvements to automatic aspect ratio detection:
* **Fixed the situation with insane memory usage due to the automatic aspect ratio detection (#25, #32) and lag that appeared in certain cases after the extension has been running for a while.** There's still fun stuff going on — see notes below.
* Improved accuracy of automatic detection. This should fix the issue of rapid switching in dark videos or videos with otherwise uneven edges (#12 - [video](https://www.youtube.com/watch?v=NaTGwlfRB_c); #24 - [video](https://www.youtube.com/watch?v=xvZqHgFz51I) (see the car at the beginning))
Improved accuracy has increased the base RAM usage, and not by a small amount (I seem to have fixed my blunders, so that could _actually_ be on Firefox). As a result, I've reduced both resolution of the sample as well as polling frequency.
Improved accuracy has increased the base RAM usage, and not by a small amount (I seem to have fixed my blunders, so that could _actually_ be on Firefox). As a result, I've reduced both resolution of the sample as well as polling frequency.
Polling of 1 check per second shouldn't use too much RAM. If you want automatic aspect ratio detection to react faster, you can up that number to 30 in the settings. 30 checks per second can be expensive: up to 400 MB if you've just started Firefox and went to youtube. Can go north of 2 gigs if you've been running Firefox for longer than that (seems to be a problem with Javascript garbage collection).
Polling of 1 check per second shouldn't use too much RAM. If you want automatic aspect ratio detection to react faster, you can up that number to 30 in the settings. 30 checks per second can be expensive: up to 400 MB if you've just started Firefox and went to youtube. Can go north of 2 gigs if you've been running Firefox for longer than that (seems to be a problem with Javascript garbage collection).
Videos that aren't playing (e.g. videos that are paused or ended) do (should) ***not*** use any meaningful amount of RAM.
@ -55,11 +489,11 @@ Videos that aren't playing (e.g. videos that are paused or ended) do (should) **
Youtube fix seems to have broken Chrome compatibility (again), so any quick fix for this point forward will land in Chrome version along with v2.2.
### v2.1.2
### v2.1.2
* Fixed some bugs with autodetection sometimes not working properly on Youtube.
Problem: there's this bit of code that keeps aspect ratio from changing when the difference between 'previous' and 'current' aspect ratio is too small. Unfortunately, the 'previous' value was _not_ updated on every aspect ratio switch for some reason. Also `ArDetect.init()` — for some reason — didn't always clean the 'previous' value even though it should.
Problem: there's this bit of code that keeps aspect ratio from changing when the difference between 'previous' and 'current' aspect ratio is too small. Unfortunately, the 'previous' value was _not_ updated on every aspect ratio switch for some reason. Also `ArDetect.init()` — for some reason — didn't always clean the 'previous' value even though it should.
### v2.1.1
@ -71,7 +505,7 @@ Problem: there's this bit of code that keeps aspect ratio from changing when the
* Popup should work more reliably now
* Twitch works ... kinda but not always
### v2.0.3
### v2.0.3
* Fixed the bug where Netflix videos weren't vertically centered in Firefox 57+ (not present in Chrome or FF 56 or earlier)
@ -103,6 +537,8 @@ The extension is being rewritten almost ground-up, around automatic aspect ratio
* Zoom/unzoom options are gone
* Can't customize keybinds yet
# v1.x
### v1.3a1
* Adding ability to add custom sites (in progress)
@ -130,15 +566,15 @@ The extension is being rewritten almost ground-up, around automatic aspect ratio
* Introduced Netflix support.
As Netflix relies on extension re-initializing at least the UI ***a lot***, the optimization introduced in 1.0.2 was reversed (as waiting 2 seconds for the UI to appear is just too much).
As Netflix relies on extension re-initializing at least the UI ***a lot***, the optimization introduced in 1.0.2 was reversed (as waiting 2 seconds for the UI to appear is just too much).
Furthermore, triggering UI re-initialisation on onUpdated events turned out to not be the proper way to go: immediately after the extension is initialized, onUpdated gets triggered even more often than your average Buzzfeed writer/reader. But change the episode on Netflix and suddenly, onUpdated gets barely triggered at all — which means that more often than not, the UI extension injects into the page wasn't visible. (the fuck, really)
This is why Netflix uses another function that manually checks whether the player bar is present. Ideally that check happens every tenth of a second, but Firefox may be limiting that to one per second.
### v1.0.2
### v1.0.2
The 'extension sometimes not working' bug was fixed (by having extension try to setup every time a page got updated), but the fix had some problems. Namely, the extension would re-initiate (complete with re-adding the entire UI) itself very _very_ often.
The 'extension sometimes not working' bug was fixed (by having extension try to setup every time a page got updated), but the fix had some problems. Namely, the extension would re-initiate (complete with re-adding the entire UI) itself very _very_ often.
This could be a problem, so it was fixed. Extension is notified of updates only every ~2 seconds (which absorbs most of the "page was updated" events on page load) and doesn't attempt to reload the UI if the UI was already loaded. (Unless `debugmsg` is set to true. It's generally not, but any commits to this repo could potentially still have it enabled).
@ -152,7 +588,7 @@ Fixed the bug where sometimes the extension would fail to work. (example: you op
### v1.0-rc1
* Settings page is added and mostly working.
* Settings page is added and mostly working.
### v0.9.9.6
@ -168,7 +604,7 @@ Fixed the bug where sometimes the extension would fail to work. (example: you op
### v0.9.9.1
* Keybinds `a` and `w` now work.
* Keybinds `a` and `w` now work.
* Some changes under the bonnet, mostly regarding the way keypresses are handled.
* 'Settings' page is ~15% done.

39
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,39 @@
# Contributing to Ultrawidify
Thank you for considering contributing to this project! We welcome contributions from the community and are grateful for your efforts.
## How to Contribute
0. Open an issue, where you introduce the feature you want to add or thing you want to fix
1. Fork the repository.
2. Create a new branch for your contribution.
3. Write readable code
4. Check that your additions do not break existing features
5. Open a pull request
## Code of Conduct
Please follow the code of conduct:
* don't be too much of an asshole
* language policing my code comments is not a worthwhile contribution, and is considered spam. If you're here to do that, fuck off. I'm looking at you, ScamOSS and co.
## Code Style
- Use formatting consistent with the rest of the project
- Write meaningful commit messages.
- Include comments where necessary to explain complex logic.
## Licensing & Contribution Agreement
By submitting a contribution (e.g., via pull request), you agree to the following:
- You grant the project maintainer(s) a non-exclusive, irrevocable, worldwide, royalty-free license to use, copy, modify, and distribute your contributions as part of the project.
- You certify that your contributions are your original work and that you have the right to submit them.
- You agree that your contributions are licensed under the same license as the rest of the project, unless explicitly stated otherwise.
**TL;DR:** once your code is in the project, there's no take-backsies.
## Questions?
The discussion board is right over there, three tabs to the right.

6
DOCUMENTATION.MD Normal file
View File

@ -0,0 +1,6 @@
# Implementation details
## Enabling/disabling aspect ratio corrections
* Aspect ratios are changed by proxy. Extension attaches **a custom CSS class** to `video` and `player` elements.
* To prevent extension from affecting the appearance of a webpage, **it's sufficient to remove our custom CSS classes from `video` and `player` elements.**

32
Jenkinsfile vendored Normal file
View File

@ -0,0 +1,32 @@
// required jenkins plugins:
// * https://plugins.jenkins.io/git/
pipeline {
agent any
stages {
// stage('Check for changes') {
// sh "env.GIT_COMMIT != env.GIT_PREVIOUS_COMMIT"
// }
stage('Install dependencies') {
steps {
sh 'npm ci'
}
}
stage('Build') {
steps {
sh 'npm run build-all'
}
}
stage('Push to release server') {
steps {
sh "echo 'implement me pls!'"
}
}
}
}

35
LICENSE.MD Normal file
View File

@ -0,0 +1,35 @@
# License
Copyright (c) 2025 @tamius-han
The source code is provided on the "you can look, but you can't take" basis.
## Permissions
You are permitted to:
* You can view the code
* You can create forks and modify the code for personal use
* You can build and run modified versions of this project for personal use on your local machine
* Push modifications to your personal github fork
## Restrictions
You may NOT:
* Distribute this project or any modified versions outside of your personal Github fork
* Publish or distribute compiled binaries, builds, or packages of this project or any derivative work
* Use the code in commercial products, services, or other public-facing deployments.
* Sub-license, sell, or otherwise make the software or derivatives available to third parties.
## Contributions
By submitting a pull request or other contribution, you agree that:
- You grant the project maintainer(s) a non-exclusive, irrevocable, worldwide, royalty-free license to use, copy, modify, and distribute your contributions as part of the project.
- You certify that your contributions are your original work and that you have the right to submit them.
- You agree that your contributions are licensed under the same license as the rest of the project, unless explicitly stated otherwise.
## Disclaimer
This software is provided "as is", without warranty of any kind, express or implied. Use at your own risk.

View File

@ -0,0 +1,23 @@
Microsoft edge extension store requires notes for certification. Because I'm too lazy to whip this text over and over and over and over and over and over again, I'm making it a copypasta.
---------------------------------------------------------------------------------------------
This extension is targeted at users of 21:9 monitors. If using 16:9 monitor, use youtube in THEATER MODE.
Not all videos need to have their aspect ratio corrected. Here is few examples of videos with problems this extension is trying to solve:
* Variable aspect ratio — autodetection testing grounds: https://www.youtube.com/watch?v=-IHzprfs6tw
* Static (but incorrect) aspect ratio: https://www.youtube.com/watch?v=BTETsm79D3A
Twitch example (collapse subscription & chat sidebars on 16:9, do not fullscreen) — aspect ratio switch happens at around 1:50:00 mark:
* https://www.twitch.tv/videos/330639009?t=1h49m45s
Autodetect has technological limitations and can incorrectly detect aspect ratio. This is acceptable — user should override it in such cases.
Functions labelled 'experimental' are experimental and may not function correctly.
Websites may interfere with keyboard shortcuts.
Brief video flicker when changing between fullscreen, non-fullscreen or when changing browser is inherent artifact caused by sites not being aware of extension and is thus considered acceptable.
Logger option does nothing (except give you a popup) unless you have a logger config handy. It is designed for debugging in case of bug reports.

31
README-AMO.md Normal file
View File

@ -0,0 +1,31 @@
# Build guide for AMO
## Build platform
The extension is built on a PC running Manjaro Linux. npm and node are installed from repositories/aur.
### Software versions:
Node/npm versions:
```
node: %%NODE_VERSION%%
npm: %%NPM_VERSION%%
```
Linux (`uname -a`):
```
%%LINUX_VERSION%%
```
## Reproducing build
Run the following commands to install dependencies and compile the firefox build:
```
npm ci
npm run build
```
The compiled code pops up in `/dist-ff`.

View File

@ -14,4 +14,4 @@ todo
#This extension asks for permission that isn't listed above.
Sometimes (and by 'sometimes' I mean 'way too often') I forget to update README files. If there's a permission that I haven't wrote an explanation for, please [open an issue](https://github.com/xternal7/ultrawidify/issues).
Sometimes (and by 'sometimes' I mean 'way too often') I forget to update README files. If there's a permission that I haven't wrote an explanation for, please [open an issue](https://github.com/tamius-han/ultrawidify/issues).

269
README.md
View File

@ -1,4 +1,10 @@
# Ultrawidify — aspect ratio fixer for youtube and netflix
# Ultrawidify — aspect ratio fixer for youtube and netflix
## Super TL;DR: I'm just looking for the install links, thanks
[Firefox](https://addons.mozilla.org/en/firefox/addon/ultrawidify/), [Chrome](https://chrome.google.com/webstore/detail/ultrawidify/dndehlekllfkaijdlokmmicgnlanfjbi), [Edge](https://microsoftedge.microsoft.com/addons/detail/ultrawidify/lmpgpgechmkkkehkihpiddbcbgibokbi).
There's also [nightly "builds"](https://stuff.lionsarch.tamius.net/ultrawidify/nightly/).
## TL;DR
@ -6,34 +12,202 @@ If you own an ultrawide monitor, you have probably noticed that sometimes videos
![Demo](img-demo/example-httyd2.png "Should these black bars be here? No [...] But an ultrawide user never forgets.")
Works (tested!) on Youtube and Netflix, but you can try your luck with other sites as well. Available for [Firefox](https://addons.mozilla.org/en/firefox/addon/ultrawidify/) and [Chrome](https://chrome.google.com/webstore/detail/ultrawidify/dndehlekllfkaijdlokmmicgnlanfjbi). Should support theater mode on youtube, iframes only supported on fullscreen.
Youtube demo of autodetection stuff can be found [here](https://www.youtube.com/watch?v=j2xn1WpbtCQ).
## Known issues
## Beggathon
* Netflix autodetection not working in Chrome and working poorly in Firefox. This problem happens because DRM, and happens on other sites utilizing DRM protection schemes. Don't expect Chrome support any time soon.
* Everything reported in [issues](https://github.com/tamius-han/ultrawidify/issues)
Working on this extension takes time, coffee and motivation. If you want to buy me a beer or something, you can [use this link to send me motivation](https://www.paypal.me/tamius). **Any donations are well appreciated.**
### Limitations
## The long version
* Unclear how extension handles sites with more than one video per page.
* Autodetection is only correct 95% of the time, most of the time.
* That new stretching mode wasn't thoroughly tested yet. Issues may be present. (Same with zoom)
* Enabling extension everywhere (as opposed to whitelisted sites) could break some websites.
The technology has been here for a while, but plenty of people don't know how to properly encode a video (despite the fact [youtube has an article that explains aspect ratios](https://support.google.com/youtube/answer/6375112)). Plenty of people surprisingly includes major Holywood studios, such as [Marvel](https://www.youtube.com/watch?v=Ke1Y3P9D0Bc), [Disney](https://www.youtube.com/watch?v=yCOPJi0Urq4), [Dreamworks](https://www.youtube.com/watch?v=oKiYuIsPxYk), [Warner Brothers](https://www.youtube.com/watch?v=VYZ3U1inHA4), [Sony](https://www.youtube.com/watch?v=7BWWWQzTpNU), et cetera. You'd think that this is the one thing Holywood studios and people who make [music videos for a living](https://www.youtube.com/watch?v=c6Mx2mxpaCY) would know how to do right, but they don't. This extension is here to fix that.
### Features
* **Can be enabled or disabled on per-site basis**
* **Crop video to fit screen** (no stretching. Supported aspect ratios: 21/9 (1:2.39), 16:9, 16:10. It's possible to set additional aspect ratios, but settings GUI currently contains some mildly annoying bugs)
* **Automatic aspect ratio detection** (can be enabled/disabled entirely or on a per-site basis, separately of the extension. May not work on sites utilizing DRM schemes, such as Netflix et. al.). Autodetection in action: [youtube](https://www.youtube.com/watch?v=j2xn1WpbtCQ))
* **Supports Youtube theater mode**
* **[EXPERIMENTAL!]** Stretch video to fit the screen
* **[EXPERIMENTAL!]** custom zooming and panning
### Officially supported sites
* Youtube
* Netflix
* Twitch
### Other sites
I am not actively testing extension on other sites. You can try your luck and enable extension for any unsupported site you stumble across via extension popup, but I make no guarantees it will work everywhere.
If extension doesn't work for a site I'm not testing on out of the box, follow [this wiki](https://github.com/tamius-han/ultrawidify/wiki/Fixing-site-incompatibilites-('Advanced-settings')). The 'quick and dirty' approach should work for most sites. (If you try doing things the proper way, you should really know what you're doing.)
### Installing this extension
You can download this extension from the relevant extension stores:
* [Firefox](https://addons.mozilla.org/en/firefox/addon/ultrawidify/)
* [Chrome](https://chrome.google.com/webstore/detail/ultrawidify/dndehlekllfkaijdlokmmicgnlanfjbi)
* [Edge](https://microsoftedge.microsoft.com/addons/detail/ultrawidify/lmpgpgechmkkkehkihpiddbcbgibokbi)
Other browsers are not officially supported. If you're using a different Chromium-based browser, you can try installing the addon from the Chrome Web Store — but if things don't work, you're on your own.
### Nightly builds
* Nightly builds can be downloaded [here](https://stuff.lionsarch.tamius.net/ultrawidify/) as an unpacked extension that can
only be installed temporarily.
If I did anything during the day, the nightly version will be sorta-built at whatever my VPS provider thinks is 4AM CE(S)T.
# Beggathon (donations)
If you want to support this project, please consider a donation. Working on this extension takes time, money, coffee and motivation. Sometimes also [a very precise amount of alco](https://xkcd.com/323/).
You can make a donation [via Paypal](https://www.paypal.me/tamius).
**Any donation — no matter how big or small — is well appreciated. Thanks.**
&nbsp;
&nbsp;
&nbsp;
&nbsp;
# The long version
The technology has been here for a while, but plenty of people don't know how to properly encode a video (despite the fact [youtube has an article that explains aspect ratios](https://support.google.com/youtube/answer/6375112)). Plenty of people surprisingly includes major Hollywood studios, such as [Marvel](https://www.youtube.com/watch?v=Ke1Y3P9D0Bc), [Disney](https://www.youtube.com/watch?v=yCOPJi0Urq4), [Dreamworks](https://www.youtube.com/watch?v=oKiYuIsPxYk), [Warner Brothers](https://www.youtube.com/watch?v=VYZ3U1inHA4), [Sony](https://www.youtube.com/watch?v=7BWWWQzTpNU), et cetera. You'd think that this is the one thing Hollywood studios and people who make [music videos for a living](https://www.youtube.com/watch?v=c6Mx2mxpaCY) would know how to do right, but they don't. This extension is here to fix that.
![Jesus Christ.](img-demo/example-jasonbourne.png "This is indeed worse than Snowden.")
## Features
* **Fit video to width/height**
* **Force specific aspect ratio**
* **Attempts to automatically detect aspect ratio**
* ~~**Rebindable shortcuts**~~ temporarily off
Most settings are self-explanatory, but we'll get into details anyway.
### Limitations:
Before we go on to features, let's discuss limitations.
* Currently, this extension is only tested on Youtube and Netflix. It should work on other sites as well, but you'll need to manually enable extension on other sites via the popup.
* It's unclear how extension handles sites displaying multiple videos per site. Having multiple videos on the same page is a very tricky case that hasn't been given much thought.
* Autodetection is a very hard problem to solve. Despite various improvements, it's still not 100% correct. In cases where aspect ratio is hard to determine, extension tends to err on the side of caution and tries to avoid changing aspect ratios. However, sometimes aspect ratio changes will still trigger too eagerly.
### User interface
### Automatic aspect ratio detection
Most quick options for a page are accessible through a button in the extension bar. The options are pretty self-explanatory.
By default, automatic detection will run on every site this extension is enabled for. It does what it says on the tin: it attempts to detect aspect ratio of the video by periodically looking at a video frame.
![UI demo](img-demo/ui-popup-0.png)
Some caveats apply:
* autodetection is very easy in 99% of cases and very tricky in the 1%. Sometimes, autodetection will be too eager. Sometimes it won't be eager enough.
* Some sites use DRM. DRM measures are designed specifically to prevent scripts from looking at video frames. Since that's exactly what this extension uses to determine aspect ratio of a video, **autodetection is not possible on sites that use DRM** (Netflix and the likes). Firefox is slight exception to this.
* Firefox offers an API that can be used to take screenshots of the page. Turns out that you can use this API to work around the above limitation. Usage of this API has its own limitations. Due to those limitations, automatic detection on DRM-protected sites in Firefox keeps a thin black bar at the top and the bottom of the video.
Autodetection can be enabled or disabled globally, per site or per video.
### Popup
Most of the extension settings can be accessed and modified via the popup. If extension is enabled for the site you're currently on, the popup will display options for the video you're currently watching.
![Demo](img-demo/ui/popup/popup_video_settings.png)
### Cropping video
![Demo](img-demo/ui/popup/crop.png)
Extension can crop videos to the desired aspect ratio. Options offered by the extension are (keyboard shortcuts in **bold**):
* Automatic — **A**
* Reset (default) — **R**
* 21:9 (2.39:1) — **D**
* 18:9 (2:1) — **X**
* 16:9 (1.77) — **S**
* Custom — **Q**
In addition to that, you can crop video to fit width (**W**) or height (**E**).
**Note:** manually adjusting aspect ratio _disables_ autodetection for current video. Manual adjustments are temporary and should last for only one video.
You can set custom aspect ratio by clicking 'set custom aspect ratio' link under the buttons, changing the value in the box and clicking 'save'. Aspect ratio can be in any of the following formats:
* `width/height` (e.g. `16/9`, `21/9` - even `2560/1080`)
* `1:ratio` (e.g. `1:2.39`. You can omit the `1:` part, too — e.g. `2.39` is equivalent to `1:2.39`)
'Save' button saves your custom aspect ratio. If you don't save changes, they'll be forgotten by the time you close the popup.
![Demo](img-demo/ui/popup/crop_custom.png)
### Zoom
Keys 'Z' and 'U' manually zoom the video. You can use those to zoom farther than merely adjusting aspect ratio would. At high magnification, you can pan the video by moving mouse over it. Panning is off by default and can be activated by holding 'shift' or toggled by pressing 'P' key.
You can also zoom video by using the slider in the popup:
![Demo](img-demo/ui/popup/zoom.png)
### Align video
If you watch 16:9 videos in full screen on a 21:9 monitor, there's obviously going to be black bars on either side of the video. The video will be centered, though. Some people don't want video to be centered in such situations, instead preferring having the video aligned to either side. **Video alignment** option does that.
### Stretching videos
![Demo](img-demo/ui/popup/stretch.png)
When you watch a 16:9 content on a 21:9 monitor, you can deal with this issue in three ways: A) you don't, B) you crop or C) you stretch the 16:9 video to fit a 21:9 container. Obviously not everyone is a person of culture, some people prefer to choose the greater evil of the three: they prefer their videos stretched!
Ultrawidify offers you several ways of dealing with the issue:
* **Never** — don't stretch at all
* **Basic** — stretch the video to fit screen. Doesn't remove black bars encoded in the video. While this option is active, automatic aspect ratio detection is disabled.
* **Hybrid** — this mode first crops away the black bars encoded in the video file. If the video doesn't fit your monitor after being cropped, the extension will proceed to stretch it in a smart way. Automatic detection remains active with this option.
* **Thin borders** — this mode only applies stretching only when borders around video are thin (less than 5% of total width or height).
## Global and per-site default settings
You can change default settings for extension or site you're currently on by visiting 'Extension settings' and 'Site settings' tabs in the popup. Per-site settings override extension defaults, video settings override both. Both tabs also have the same options:
![Demo](img-demo/ui/popup/extension_settings.png)
Quick rundown of the options:
* **Enable this extension** (Extension settings)
Whether the extension is enabled. Options:
`Always` — allow this extension to run on every site (unless the site is blacklisted)
`On whitelisted sites` — allow this extension to run only on sites you manually enabled
`Never` — this extension won't work. At all.
* **Enable autodetection** (Extension settings)
Whether extension should automatically detect aspect ratio. Uses same options as _Enable this extension_ options.
* **Enable this extension** (Site settings)
Whether the extension is enabled on current site. Options:
`Whitelist` — allow this extension to run on current site.
`Default` — follow global settings (allow if global option is set to 'always', don't allow if global option is set to any of the other two)
`Blacklist` — never allow extension to run on current site.
* **Enable autodetection** (Site settings)
Whether extension should automatically detect aspect ratio on current site. Uses same options as _Enable this extension_ options.
* **Default stretching mode**
How, if at all, should extension stretch the video by default.
* **Video alignment**
How to align the video by default.
## Keyboard shortcuts
The keyboard shortcuts have already been listed, but let's list them all again in the same, handy place.
### Default keyboard shortcuts
@ -46,12 +220,30 @@ Most quick options for a page are accessible through a button in the extension b
`s` - force 16:9
`d` - force 21:9
`x` - force 18:9
`q` - force custom aspect ratio
### About aspect ratio autodetection
`z` - zoom
`u` - unzoom
`p` - toggle video panning
`shift`- pan video (while holding)
Aspect ratio autodetection is achieved by performing some black magic every 30-something milliseconds. This currently can't be turned off by default. If this extension makes video sites lag too much, open an issue and include your hardware and OS — **this is important for me to know in order to better optimize autodetection.**.
### Rebinding keyboard shortcuts
is currently not possible. Settings page for this extension has been disabled sometime with 2.0 release (because it [broke](https://github.com/tamius-han/ultrawidify/issues/16)), and fixing the setting page has been very low priority as I've had more important issues to work on.
However, I do plan on implementing this feature. Hopefully by the end of the year, but given how consistently I've been breaking self-imposed deadlines and goals for this extension don't hold your breath. After all, [Hofstadter's a bitch](https://en.wikipedia.org/wiki/Hofstadter%27s_law).
## Plans for the future
1. Handle porting of extension settings between versions.
2. ~~Reintroduce gradual zoom on z and u and provide a way to 'scroll' the zoomed in video up/down left/right.~~ (v3.2.0)
3. reintroduce settings page (rebindable keys, blacklist/whitelist management, some settings for automatic aspect ratio detection)
4. site-specific options for sites that require additional CSS classes or other hacks
5. figure the best way to do GUI (injecting buttons into the player bar is not a good way. Been there, done that, each site has its own way and some appear to be impossible). ~~Might get bumped to be released alongside #2~~no it wont lol
6. Improvements to automatic aspect ratio detection
Manually triggering aspect ratio change will suspend automatic aspect ratio detection for until the page is refreshed, although it'll maybe unsuspend itself when video is changed. I don't know for certain.
## Installing
@ -59,33 +251,34 @@ Manually triggering aspect ratio change will suspend automatic aspect ratio dete
[Latest stable for Firefox — download from AMO](https://addons.mozilla.org/en/firefox/addon/ultrawidify/)
[Latest stafle for Chrome — download from Chrome store](https://chrome.google.com/webstore/detail/ultrawidify/dndehlekllfkaijdlokmmicgnlanfjbi)
[Latest stable for Chrome — download from Chrome store](https://chrome.google.com/webstore/detail/ultrawidify/dndehlekllfkaijdlokmmicgnlanfjbi)
Edge version is currently not available, as Edge has some bugs that prevent this extension from working correctly. [Read more](https://github.com/tamius-han/ultrawidify/issues/117#issuecomment-747109695)
<!-- [Latest stable for Edge — Download from Microsoft store](https://microsoftedge.microsoft.com/addons/detail/lmpgpgechmkkkehkihpiddbcbgibokbi) -->
### Installing the current, github version
## Get pre-built version:
TODO
## Build from source
Requirements: npm, node.
1. Clone this repo
2. Open up Firefox
3. Go to `about:debugging`
2. run `npm install`
3. If using **Firefox,** run: `npm run watch:dev`. If using **Chrome,** run: `npm run watch-chrome:dev`.
TODO: see if #3 already loads the extension in FF
2. Open up Firefox (or Chrome)
3. Go to `about:debugging` (or Chrome equivalent)
4. Add temporary addon
5. Browse to wherever you saved it and select manifest.json
5. Select `${ultrawidify_folder}/dist/manifest.json`
## Known issues
* Netflix autodetection not working in Chrome, wontfix as issue is fundamentally unfixable. (Although a different kind of workaround could probably be put in place, but don't count on it)
* Everything reported in [issues](https://github.com/xternal7/ultrawidify/issues)
## Plans for the future
~~1. Handle porting of extension settings between versions. (Some people had some issues where extension broke until reinstalled, and corrupted settings seemed to be the problem.)~~ seems to work for me?
2. Reintroduce gradual zoom on z and u and provide a way to 'scroll' the zoomed in video up/down left/right
reintroduce settings page (rebindable keys, blacklist/whitelist management, some settings for automatic aspect ratio detection)
3. site-specific options for sites that require additional CSS classes or other hacks (see: vimeo, which is disabled)
4. figure the best way to do GUI (injecting buttons into the player bar is not a good way. Been there, done that, each site has its own way and some appear to be impossible). Might get bumped to be released alongside #2
5. Stretch mode, because some people are very salty and toxic about the fact that this extension is here to solve a problem that's different than the one they want. More salty than me rn.
6. Improvements to automatic aspect ratio detection
## Changelog
# Changelog
see changelog.md
todo: add link to changelog.md here
todo: add link to changelog.md here

BIN
img-demo/ui/popup/crop.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

BIN
img-demo/ui/popup/zoom.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@ -1,42 +0,0 @@
// Set prod to true when releasing
_prod = true;
// _prod = false;
Debug = {
debug: true,
keyboard: true,
debugResizer: true,
debugArDetect: true,
debugStorage: true,
// showArDetectCanvas: true,
flushStoredSettings: false,
playerDetectDebug: true,
arDetect: {
edgeDetect: true
},
canvas: {
debugDetection: true
},
debugCanvas: {
enabled: true,
guardLine: true
}
}
if(_prod){
__disableAllDebug(Debug);
}
function __disableAllDebug(obj) {
for(key in obj) {
if (obj.hasOwnProperty(key) ){
if(obj[key] instanceof Object)
__disableAllDebug(obj[key]);
else
obj[key] = false;
}
}
}
if(Debug.debug)
console.log("Guess we're debugging ultrawidify then. Debug.js must always load first, and others must follow.\nLoading: Debug.js");

View File

@ -1,94 +0,0 @@
if(Debug.debug)
console.log("Loading: ExtensionConf.js");
var ExtensionConf = {
extensionMode: "whitelist", // how should this extension work?
// 'blacklist' - work everywhere except blacklist
// 'whitelist' - only work on whitelisted sites
// 'disabled' - work nowhere
arDetect: {
mode: "blacklist", // how should autodetection work?
// 'blacklist' - work by default, problem sites need to be blocked
// 'whitelist' - only work if site has been specifically approved
// 'disabled' - don't work at all
disabledReason: "", // if automatic aspect ratio has been disabled, show reason
allowedMisaligned: 0.05, // top and bottom letterbox thickness can differ by this much.
// Any more and we don't adjust ar.
allowedArVariance: 0.075, // amount by which old ar can differ from the new (1 = 100%)
timer_playing: 666, // we trigger ar this often (in ms) under this conditions
timer_paused: 3000,
timer_error: 3000,
timer_minimumTimeout: 5, // but regardless of above, we wait this many msec before retriggering
autoDisable: { // settings for automatically disabling the extension
maxExecutionTime: 15, // if execution time of main autodetect loop exceeds this many milliseconds,
// we disable it.
consecutiveTimeoutCount: 5 // we only do it if it happens this many consecutive times
},
hSamples: 640,
vSamples: 360,
samplingInterval: 10, // we sample at columns at (width/this) * [ 1 .. this - 1]
blackLevel_default: 10, // everything darker than 10/255 across all RGB components is considered black by
// default. GlobalVars.blackLevel can decrease if we detect darker black.
blackbarTreshold: 16, // if pixel is darker than blackLevel + blackbarTreshold, we count it as black
// on 0-255. Needs to be fairly high (8 might not cut it) due to compression
// artifacts in the video itself
staticSampleCols: 9, // we take a column at [0-n]/n-th parts along the width and sample it
randomSampleCols: 0, // we add this many randomly selected columns to the static columns
staticSampleRows: 9, // forms grid with staticSampleCols. Determined in the same way. For black frame checks
guardLine: { // all pixels on the guardline need to be black, or else we trigger AR recalculation
// (if AR fails to be recalculated, we reset AR)
enabled: true,
ignoreEdgeMargin: 0.20, // we ignore anything that pokes over the black line this close to the edge
// (relative to width of the sample)
imageTestTreshold: 0.1, // when testing for image, this much pixels must be over blackbarTreshold
edgeTolerancePx: 3, // black edge violation is performed this far from reported 'last black pixel'
edgeTolerancePercent: null // unused. same as above, except use % of canvas height instead of pixels
},
fallbackMode: {
enabled: true,
safetyBorderPx: 5, // determines the thickness of safety border in fallback mode
noTriggerZonePx: 8 // if we detect edge less than this many pixels thick, we don't correct.
},
arSwitchLimiter: { // to be implemented
switches: 2, // we can switch this many times
period: 2.0 // per this period
},
edgeDetection: {
sampleWidth: 8, // we take a sample this wide for edge detection
detectionTreshold: 4, // sample needs to have this many non-black pixels to be a valid edge
singleSideConfirmationTreshold: 0.3, // we need this much edges (out of all samples, not just edges) in order
// to confirm an edge in case there's no edges on top or bottom (other
// than logo, of course)
logoTreshold: 0.15, // if edge candidate sits with count greater than this*all_samples, it can't be logo
// or watermark.
edgeTolerancePx: 2, // we check for black edge violation this far from detection point
edgeTolerancePercent: null, // we check for black edge detection this % of height from detection point. unused
middleIgnoredArea: 0.2, // we ignore this % of canvas height towards edges while detecting aspect ratios
minColsForSearch: 0.5, // if we hit the edge of blackbars for all but this many columns (%-wise), we don't
// continue with search. It's pointless, because black edge is higher/lower than we
// are now. (NOTE: keep this less than 1 in case we implement logo detection)
edgeTolerancePx: 1, // tests for edge detection are performed this far away from detected row
},
pillarTest: {
ignoreThinPillarsPx: 5, // ignore pillars that are less than this many pixels thick.
allowMisaligned: 0.05 // left and right edge can vary this much (%)
},
textLineTest: {
nonTextPulse: 0.10, // if a single continuous pulse has this many non-black pixels, we aren't dealing
// with text. This value is relative to canvas width (%)
pulsesToConfirm: 10, // this is a treshold to confirm we're seeing text.
pulsesToConfirmIfHalfBlack: 5, // this is the treshold to confirm we're seeing text if longest black pulse
// is over 50% of the canvas width
testRowOffset: 0.02 // we test this % of height from detected edge
}
},
arChange: {
samenessTreshold: 0.025, // if aspect ratios are within 2.5% within each other, don't resize
},
miscFullscreenSettings: {
videoFloat: "center"
},
colors:{
// criticalFail: "background: #fa2; color: #000"
}
}

View File

@ -1,150 +0,0 @@
if(Debug.debug)
console.log("Loading: Keybinds.js");
var _kbd_ModKeys = ["ctrlKey", "shiftKey", "altKey"];
var _kbd_keybinds = {};
var DEFAULT_KEYBINDINGS = {
"w": {
action: "fitw"
},
"e": {
action: "fith"
},
"r": {
action: "reset"
},
"a": {
action: "autoar"
},
"s": {
action: "char",
targetAr: 1.78
},
"d": {
action: "char",
targetAr: 2.39
},
"x": {
action: "char",
targetAr: 2.0
}
}
var _kbd_process = function (event) { // Tukaj ugotovimo, katero tipko smo pritisnili
if(Debug.debug && Debug.keyboard ){
console.log("%c[Keybinds::_kbd_process] we pressed a key: ", "color: #ff0", event.key , " | keydown: ", event.keydown, "event:", event);
}
// Tipke upoštevamo samo, če smo v celozaslonskem načinu oz. če ne pišemo komentarja
// v nasprotnem primeru ne naredimo nič.
// We only take actions if we're in full screen or not writing a comment
if( !(PlayerDetect.isFullScreen() || (
(document.activeElement.getAttribute("role") != "textbox") &&
(document.activeElement.getAttribute("type") != "text")
))){
if(Debug.debug && Debug.keyboard)
console.log("[Keybinds::_kbd_process] We're writing a comment or something. Doing nothing");
return;
}
// building modifiers list:
var modlist = "";
for(var mod of _kbd_ModKeys){
if(event[mod])
modlist += (mod + "_")
}
if(Debug.debug && Debug.keyboard ){
if(modlist)
console.log("[Keybinds::_kbd_process] there's been modifier keys. Modlist:", modlist);
}
var keypress = modlist + event.key.toLowerCase();
if(Debug.debug && Debug.keyboard )
console.log("[Keybinds::_kbd_process] our full keypress is this", keypress, "_kbd_keybinds:", {kb: _kbd_keybinds} );
if(_kbd_keybinds[keypress]){
var conf = _kbd_keybinds[keypress];
if(Debug.debug && Debug.keyboard)
console.log("[Keybinds::_kbd_process] there's an action associated with this keypress. conf:", conf);
if(conf.action != "autoar")
ArDetect.stop();
if(conf.action == "char"){
Resizer.setAr(conf.targetAr);
}
else{
Resizer.legacyAr(conf.action);
}
}
}
var _kbd_load = async function() {
if(Debug.debug)
console.log("[Keybinds::_kbd_setup_init] Setting up keybinds");
var ret = await StorageManager.getopt_async("keybinds");
// var keybinds = ret.keybinds;
var keybinds = {};
if(Array.isArray(keybinds)){
StorageManager.delopt("keybinds");
keybinds = DEFAULT_KEYBINDINGS;
}
if(Debug.debug)
console.log("[Keybinds::_kbd_setup_init] loaded keybinds from storage. Do they exist?", keybinds, $.isEmptyObject(keybinds));
if( $.isEmptyObject(keybinds) ){
keybinds = DEFAULT_KEYBINDINGS;
StorageManager.setopt({"keybinds":keybinds});
if(Debug.debug)
console.log("[Keybinds::_kbd_setup_init] setting keybinds to default", keybinds);
}
this.keybinds = keybinds;
_kbd_keybinds = keybinds;
}
var _kbd_setup = async function() {
await _kbd_load();
document.addEventListener('keydown', _kbd_process);
}
var _kbd_fetch = async function(){
if($.isEmptyObject(_kbd_keybinds)){
await _kbd_load();
}
if(Debug.debug){
console.log("[Keybinds::_kbd_fetch] We'll be returning this:", _kbd_keybinds);
}
return _kbd_keybinds;
}
var _kbd_getKeybinds = function(){
return _kbd_keybinds;
}
var Keybinds = {
init: _kbd_setup,
fetch: _kbd_fetch,
mods: _kbd_ModKeys,
getKeybinds: _kbd_getKeybinds,
keybinds: _kbd_keybinds
}

View File

@ -1,107 +0,0 @@
// This file handles saving and loading of settings.
// Actual settings are in ExtensionConf
if(Debug.debug)
console.log("Loading: Settings.js");
var _se_init = async function(isSlave){
if(Debug.debug)
console.log("[Settings::_se_init()] -------- starting init! ---------");
if(isSlave === undefined)
isSlave = false;
if(isSlave){
// request settings from background script. Yes, this is supposed to be global.
var res = await Comms.sendToBackgroundScript({cmd: "gib-settings"});
ExtensionConf = res.response;
if(Debug.debug){
console.log("[Settings::_se_init()] received settings from the background script. ExtensionConf:",ExtensionConf,"response message was this:",res);
}
return;
}
var newSettings = await StorageManager.getopt_async("uw-settings");
var uwVersion = browser.runtime.getManifest().version;
if (Debug.debug)
console.log("[Settings::_se_init()] settings saved in localstorage are:", newSettings, " - if that's empty, it's gonna be replaced by this:", ExtensionConf, ")");
if ((Object.keys(newSettings).length === 0 && newSettings.constructor === Object)){
if(Debug.debug)
console.log("[Settings::_se_init()] no saved settings, saving default");
StorageManager.setopt({"uw-settings": ExtensionConf});
}
else{
var actualSettings = newSettings["uw-settings"];
if(actualSettings.version === undefined || actualSettings.version != uwVersion){
ExtensionConf['version'] = uwVersion;
if(Debug.debug)
console.log("[Settings::_se_init()] extension was updated, replacing settings", ExtensionConf);
StorageManager.setopt({"uw-settings": ExtensionConf});
}
else{
_se_patchUserSettings(actualSettings, ExtensionConf);
}
if(Debug.debug)
console.log("[Settings::_se_init()] parsed settings:", actualSettings, "were they copied to ExtensionConf?",ExtensionConf);
}
if(Debug.debug)
console.log("[Settings::_se_init] settings have been loaded/reloaded. Current state: ", ExtensionConf);
}
var _se_patchUserSettings = function(saved, extDefaults){
for(var k in extDefaults){
if(extDefaults[k] != null && typeof extDefaults[k] === 'object' && extDefaults[k].constructor === Object){
if(typeof saved[k] !== 'object' || saved[k].constructor !== Object)
continue;
_se_patchUserSettings(saved[k], extDefaults[k]);
}
else{
extDefaults[k] = saved[k];
}
}
}
var _se_save = function(settings){
StorageManager.delopt("uw-settings");
if(settings !== undefined){
StorageManager.setopt({"uw-settings": settings});
}
else{
StorageManager.setopt({"uw-settings": ExtensionConf});
}
if (Debug.debug)
console.log("[Settings::_se_save()] saving settings:", settings);
}
var _se_reload = function(){
this.init(true);
}
var _se_isBlacklisted = function(site){
return this.blacklist.indexOf(site) > -1;
}
var _se_isWhitelisted = function(site){
return this.whitelist.indexOf(site) > -1;
}
var Settings = {
init: _se_init,
save: _se_save,
reload: _se_reload,
}

View File

@ -1,274 +0,0 @@
if(Debug.debug){
console.log("Loading: SitesConf.js");
}
// Nastavitve za posamezno stran
// Config for a given page:
//
// <hostname> : {
// status: <option> // should extension work on this site?
// arStatus: <option> // should we do autodetection on this site?
// statusEmbedded: <option> // should we do autodetection on this site?
// }
//
// Veljavne vrednosti za možnosti
// Valid values for options:
//
// status, arStatus, statusEmbedded:
//
// * whitelisted — always allow
// * follow-global — allow if default is to allow, block if default is to block
// * blacklisted — never allow
//
var _sc_sites = {
"www.youtube.com" : {
status: "whitelisted", // should extension work on this site?
arStatus: "follow-global", // should we enable autodetection
statusEmbedded: "whitelisted", // should extension work for this site when embedded on other sites?
override: false // ignore value localStorage in favour of this
},
"www.netflix.com" : {
status: "whitelisted",
arStatus: "blacklisted",
statusEmbedded: "whitelisted",
override: false
},
}
// var _sc_SITES = {
// "vimeo.com" : {
// extraCss: [],
// bannedCss: [],
// nonfsPlayerMod: function(){
// // hack player to take all the width
// $("head").append('<style type="text/css">.uw_forceFullWidth {width: 100% !important} .uw_forceCenter{text-align: center;}</style>');
//
// var e = document.getElementsByClassName("player_outro_area")[0];
// e.classList.add("uw_forceFullWidth");
// e.classList.add("uw_forceCenter");
// e = document.getElementsByClassName("player_container")[0];
// e.classList.add("uw_forceFullWidth");
// e.classList.add("uw_forceCenter");
//
// $("video")[0].style.display = "inline-block";
// },
// fsPlayerMod: function(){
// // hack player to take all the width
// $("head").append('<style type="text/css">.uw_forceFullWidth {width: 100% !important} .uw_forceCenter{text-align: center;}</style>');
//
// var e = document.getElementsByClassName("player_outro_area")[0];
// e.classList.add("uw_forceFullWidth");
// e.classList.add("uw_forceCenter");
// e = document.getElementsByClassName("player_container")[0];
// e.classList.add("uw_forceFullWidth");
// e.classList.add("uw_forceCenter");
//
// $("video")[0].style.display = "inline-block";
// }
// }
// }
var _sc_init = async function(){
var newSettings = await StorageManager.getopt_async("uw-siteopts");
if (Debug.debug)
console.log("[SitesConf::_sc_init()] settings saved in localstorage are:", newSettings, " - if that's empty, it's gonna be replaced by this:", JSON.stringify(_sc_sites), ")");
if ((Object.keys(newSettings).length === 0 && newSettings.constructor === Object)){
console.log("[SitesConf::_sc_init()] replacing settings");
StorageManager.setopt({"uw-siteopts": JSON.stringify(_sc_sites)});
}
else{
var actualSettings = JSON.parse(newSettings["uw-siteopts"]);
if(Debug.debug)
console.log("[SitesConf::_sc_init()] parsed settings:", actualSettings);
var overrides = 0;
for (var k in actualSettings){
// let sites with override=true override saved sites
if( _sc_sites[k] != undefined && _sc_sites[k].override ){
++overrides;
continue;
}
_sc_sites[k] = actualSettings[k];
}
if(overrides > 0)
_sc_save();
}
if(Debug.debug)
console.log("[SitesConf::_sc_init()] settings have been loaded/reloaded. Current state: ", this);
}
var _sc_reset = function(){
StoreManager.delopt("uw-siteopts");
_sc_init();
}
var _sc_reload = function(){
_sc_init();
}
var _sc_save = function(){
StorageManager.delopt("uw-siteopts");
StorageManager.setopt({"uw-siteopts": JSON.stringify(_sc_sites)});
}
var _sc_createEmptySite = function(){
return {
status: "follow-global",
arStatus: "follow-global",
statusEmbedded: "follow-global",
};
}
function inIframe(){
try {
return window.self !== window.top;
} catch (e) {
return true;
}
}
var _sc_isEnabled = function(site){
// console.log(".... — _sc_sites[", site, "].status:", (_sc_sites[site] == undefined ? "<default>" : _sc_sites[site].status), "; ExtensionConf.extensionMode:", ExtensionConf.extensionMode)
if( inIframe ) {
return _sc_siteEnableEmbedded(site);
}
return _sc_siteEnabled(site);
}
var _sc_siteEnabled = function(site){
// če za stran nismo določili načina delovanja, potem storimo privzeto stvar
// if we haven't defined options for a site, we do the default thing
if( _sc_sites[site] == undefined || _sc_sites[site].status == "follow-global"){
console.log(".... this site is undefined!");
if ( ExtensionConf.extensionMode == "blacklist" ){
return true;
}
return false;
}
if( _sc_sites[site].status == "whitelisted" )
return true;
if( _sc_sites[site].status == "blacklisted" )
return false;
// sem ne bi smeli priti, vendar pa za varnost naredimo en return
// we shouldn't come here but let's do a safety return
return false;
}
var _sc_siteStatus = function(site){
if( _sc_sites[site] == undefined)
return "follow-global";
return _sc_sites[site].status;
}
var _sc_arEnabled = function(site){
if( _sc_sites[site] == undefined || _sc_sites[site].arStatus == "follow-global" ){
if(ExtensionConf.extensionMode == "blacklist" ){
return true;
}
return false;
}
if( _sc_sites[site].arStatus == "whitelisted" )
return true;
if( _sc_sites[site].arStatus == "blacklisted" )
return false;
}
var _sc_arStatus = function(site){
if( _sc_sites[site] == undefined )
return "follow-global";
return _sc_sites[site].arStatus;
}
var _sc_siteEnableEmbedded = function(site) {
if( _sc_sites[site] == undefined || _sc_sites[site].statusEmbedded == "follow-global" ){
if(Debug.debug)
console.log("[SitesConf::_sc_siteEnableEmbedded] site", site, "is not defined in settings.");
if(ExtensionConf.extensionMode == "blacklist" ){
return true;
}
return false;
}
if( _sc_sites[site].statusEmbedded == "whitelisted" )
return true;
if( _sc_sites[site].statusEmbedded == "blacklisted" )
return false;
}
var _sc_updateSiteStatus = function(site, status){
// status: {}
// status.status - optional
// status.arStatus - optional
// status.statusEmbedded - optional
//
// <==[ Valid values for options: ]==>
//
// status, arStatus, statusEmbedded:
//
// * whitelisted — always allow
// * follow-global — allow if default is to allow, block if default is to block
// * blacklisted — never allow
if( _sc_sites[site] == undefined ){
_sc_sites[site] = _sc_createEmptySite();
}
if(status.status != undefined ){
_sc_sites[site].status = status.status;
}
if(status.arStatus != undefined ){
_sc_sites[site].arStatus = status.arStatus;
}
if(status.statusEmbedded != undefined ){
_sc_sites[site].statusEmbedded = status.statusEmbedded;
}
_sc_save();
}
var SitesConf = {
siteopts: _sc_sites,
init: _sc_init,
reset: _sc_reset,
reload: _sc_reload,
save: _sc_save,
updateSiteStatus: _sc_updateSiteStatus,
updateSite: _sc_updateSiteStatus,
getSiteStatus: _sc_siteStatus,
getArStatus: _sc_arStatus,
siteEnabled: _sc_siteEnabled,
isEnabled: _sc_isEnabled,
siteEnableEmbedded: _sc_siteEnableEmbedded,
arEnabled: _sc_arEnabled,
isArEnabled: _sc_arEnabled
}

View File

@ -1,3 +0,0 @@
var Status = {
arStrat: "auto"
}

View File

@ -1,250 +0,0 @@
/** Wrap an API that uses callbacks with Promises
* This expects the pattern function withCallback(arg1, arg2, ... argN, callback)
* @author Keith Henry <keith.henry@evolutionjobs.co.uk>
* @license MIT */
(function () {
// before we start: don't do shit in browsers that aren't Google Chrome.
// We might need to modify this for use in IE at a later date tho
if(chrome === undefined)
return;
'use strict';
/** Wrap a function with a callback with a Promise.
* @param {function} f The function to wrap, should be pattern: withCallback(arg1, arg2, ... argN, callback).
* @param {function} parseCB Optional function to parse multiple callback parameters into a single object.
* @returns {Promise} Promise that resolves when the callback fires. */
function promisify(f, parseCB) {
return (...args) => {
let safeArgs = args;
let callback;
// The Chrome API functions all use arguments, so we can't use f.length to check
// If there is a last arg
if (args && args.length > 0) {
// ... and the last arg is a function
const last = args[args.length - 1];
if (typeof last === 'function') {
// Trim the last callback arg if it's been passed
safeArgs = args.slice(0, args.length - 1);
callback = last;
}
}
// Return a promise
return new Promise((resolve, reject) => {
try {
// Try to run the original function, with the trimmed args list
f(...safeArgs, (...cbArgs) => {
// If a callback was passed at the end of the original arguments
if (callback) {
// Don't allow a bug in the callback to stop the promise resolving
try { callback(...cbArgs); }
catch (cbErr) { reject(cbErr); }
}
// Chrome extensions always fire the callback, but populate chrome.runtime.lastError with exception details
if (chrome.runtime.lastError)
// Return as an error for the awaited catch block
reject(new Error(chrome.runtime.lastError.message || `Error thrown by API ${chrome.runtime.lastError}`));
else {
if (parseCB) {
const cbObj = parseCB(...cbArgs);
resolve(cbObj);
}
else if (!cbArgs || cbArgs.length === 0)
resolve();
else if (cbArgs.length === 1)
resolve(cbArgs[0]);
else
resolve(cbArgs);
}
});
}
catch (err) { reject(err); }
});
}
}
/** Promisify all the known functions in the map
* @param {object} api The Chrome native API to extend
* @param {Array} apiMap Collection of sub-API and functions to promisify */
function applyMap(api, apiMap) {
if (!api)
// Not supported by current permissions
return;
for (let funcDef of apiMap) {
let funcName;
if (typeof funcDef === 'string')
funcName = funcDef;
else {
funcName = funcDef.n;
}
if (!api.hasOwnProperty(funcName))
// Member not in API
continue;
const m = api[funcName];
if (typeof m === 'function')
// This is a function, wrap in a promise
api[funcName] = promisify(m, funcDef.cb);
else
// Sub-API, recurse this func with the mapped props
applyMap(m, funcDef.props);
}
}
/** Apply promise-maps to the Chrome native API.
* @param {object} apiMaps The API to apply. */
function applyMaps(apiMaps) {
for (let apiName in apiMaps) {
const callbackApi = chrome[apiName];
if (!callbackApi)
// Not supported by current permissions
continue;
const apiMap = apiMaps[apiName];
applyMap(callbackApi, apiMap);
}
}
// accessibilityFeatures https://developer.chrome.com/extensions/accessibilityFeatures
const knownA11ySetting = ['get', 'set', 'clear'];
// ContentSetting https://developer.chrome.com/extensions/contentSettings#type-ContentSetting
const knownInContentSetting = ['clear', 'get', 'set', 'getResourceIdentifiers'];
// StorageArea https://developer.chrome.com/extensions/storage#type-StorageArea
const knownInStorageArea = ['get', 'getBytesInUse', 'set', 'remove', 'clear'];
/** Map of API functions that follow the callback pattern that we can 'promisify' */
applyMaps({
accessibilityFeatures: [ // Todo: this should extend AccessibilityFeaturesSetting.prototype instead
{ n: 'spokenFeedback', props: knownA11ySetting },
{ n: 'largeCursor', props: knownA11ySetting },
{ n: 'stickyKeys', props: knownA11ySetting },
{ n: 'highContrast', props: knownA11ySetting },
{ n: 'screenMagnifier', props: knownA11ySetting },
{ n: 'autoclick', props: knownA11ySetting },
{ n: 'virtualKeyboard', props: knownA11ySetting },
{ n: 'animationPolicy', props: knownA11ySetting }],
alarms: ['get', 'getAll', 'clear', 'clearAll'],
bookmarks: [
'get', 'getChildren', 'getRecent', 'getTree', 'getSubTree',
'search', 'create', 'move', 'update', 'remove', 'removeTree'],
browser: ['openTab'],
browserAction: [
'getTitle', 'setIcon', 'getPopup', 'getBadgeText', 'getBadgeBackgroundColor'],
browsingData: [
'settings', 'remove', 'removeAppcache', 'removeCache',
'removeCookies', 'removeDownloads', 'removeFileSystems',
'removeFormData', 'removeHistory', 'removeIndexedDB',
'removeLocalStorage', 'removePluginData', 'removePasswords',
'removeWebSQL'],
commands: ['getAll'],
contentSettings: [ // Todo: this should extend ContentSetting.prototype instead
{ n: 'cookies', props: knownInContentSetting },
{ n: 'images', props: knownInContentSetting },
{ n: 'javascript', props: knownInContentSetting },
{ n: 'location', props: knownInContentSetting },
{ n: 'plugins', props: knownInContentSetting },
{ n: 'popups', props: knownInContentSetting },
{ n: 'notifications', props: knownInContentSetting },
{ n: 'fullscreen', props: knownInContentSetting },
{ n: 'mouselock', props: knownInContentSetting },
{ n: 'microphone', props: knownInContentSetting },
{ n: 'camera', props: knownInContentSetting },
{ n: 'unsandboxedPlugins', props: knownInContentSetting },
{ n: 'automaticDownloads', props: knownInContentSetting }],
contextMenus: ['create', 'update', 'remove', 'removeAll'],
cookies: ['get', 'getAll', 'set', 'remove', 'getAllCookieStores'],
debugger: ['attach', 'detach', 'sendCommand', 'getTargets'],
desktopCapture: ['chooseDesktopMedia'],
// TODO: devtools.*
documentScan: ['scan'],
downloads: [
'download', 'search', 'pause', 'resume', 'cancel',
'getFileIcon', 'erase', 'removeFile', 'acceptDanger'],
enterprise: [{ n: 'platformKeys', props: ['getToken', 'getCertificates', 'importCertificate', 'removeCertificate'] }],
extension: ['isAllowedIncognitoAccess', 'isAllowedFileSchemeAccess'], // mostly deprecated in favour of runtime
fileBrowserHandler: ['selectFile'],
fileSystemProvider: ['mount', 'unmount', 'getAll', 'get', 'notify'],
fontSettings: [
'setDefaultFontSize', 'getFont', 'getDefaultFontSize', 'getMinimumFontSize',
'setMinimumFontSize', 'getDefaultFixedFontSize', 'clearDefaultFontSize',
'setDefaultFixedFontSize', 'clearFont', 'setFont', 'clearMinimumFontSize',
'getFontList', 'clearDefaultFixedFontSize'],
gcm: ['register', 'unregister', 'send'],
history: ['search', 'getVisits', 'addUrl', 'deleteUrl', 'deleteRange', 'deleteAll'],
i18n: ['getAcceptLanguages', 'detectLanguage'],
identity: [
'getAuthToken', 'getProfileUserInfo', 'removeCachedAuthToken',
'launchWebAuthFlow', 'getRedirectURL'],
idle: ['queryState'],
input: [{
n: 'ime', props: [
'setMenuItems', 'commitText', 'setCandidates', 'setComposition', 'updateMenuItems',
'setCandidateWindowProperties', 'clearComposition', 'setCursorPosition', 'sendKeyEvents',
'deleteSurroundingText']
}],
management: [
'setEnabled', 'getPermissionWarningsById', 'get', 'getAll',
'getPermissionWarningsByManifest', 'launchApp', 'uninstall', 'getSelf',
'uninstallSelf', 'createAppShortcut', 'setLaunchType', 'generateAppForLink'],
networking: [{ n: 'config', props: ['setNetworkFilter', 'finishAuthentication'] }],
notifications: ['create', 'update', 'clear', 'getAll', 'getPermissionLevel'],
pageAction: ['getTitle', 'setIcon', 'getPopup'],
pageCapture: ['saveAsMHTML'],
permissions: ['getAll', 'contains', 'request', 'remove'],
platformKeys: ['selectClientCertificates', 'verifyTLSServerCertificate',
{ n: "getKeyPair", cb: (publicKey, privateKey) => { return { publicKey, privateKey }; } }],
runtime: [
'getBackgroundPage', 'openOptionsPage', 'setUninstallURL',
'restartAfterDelay', 'sendMessage',
'sendNativeMessage', 'getPlatformInfo', 'getPackageDirectoryEntry',
{ n: "requestUpdateCheck", cb: (status, details) => { return { status, details }; } }],
scriptBadge: ['getPopup'],
sessions: ['getRecentlyClosed', 'getDevices', 'restore'],
storage: [ // Todo: this should extend StorageArea.prototype instead
{ n: 'sync', props: knownInStorageArea },
{ n: 'local', props: knownInStorageArea },
{ n: 'managed', props: knownInStorageArea }],
socket: [
'create', 'connect', 'bind', 'read', 'write', 'recvFrom', 'sendTo',
'listen', 'accept', 'setKeepAlive', 'setNoDelay', 'getInfo', 'getNetworkList'],
sockets: [
{ n: 'tcp', props: [
'create','update','setPaused','setKeepAlive','setNoDelay','connect',
'disconnect','secure','send','close','getInfo','getSockets'] },
{ n: 'tcpServer', props: [
'create','update','setPaused','listen','disconnect','close','getInfo','getSockets'] },
{ n: 'udp', props: [
'create','update','setPaused','bind','send','close','getInfo',
'getSockets','joinGroup','leaveGroup','setMulticastTimeToLive',
'setMulticastLoopbackMode','getJoinedGroups','setBroadcast'] }],
system: [
{ n: 'cpu', props: ['getInfo'] },
{ n: 'memory', props: ['getInfo'] },
{ n: 'storage', props: ['getInfo', 'ejectDevice', 'getAvailableCapacity'] }],
tabCapture: ['capture', 'getCapturedTabs'],
tabs: [
'get', 'getCurrent', 'sendMessage', 'create', 'duplicate',
'query', 'highlight', 'update', 'move', 'reload', 'remove',
'detectLanguage', 'captureVisibleTab', 'executeScript',
'insertCSS', 'setZoom', 'getZoom', 'setZoomSettings',
'getZoomSettings', 'discard'],
topSites: ['get'],
tts: ['isSpeaking', 'getVoices', 'speak'],
types: ['set', 'get', 'clear'],
vpnProvider: ['createConfig', 'destroyConfig', 'setParameters', 'sendPacket', 'notifyConnectionStateChanged'],
wallpaper: ['setWallpaper'],
webNavigation: ['getFrame', 'getAllFrames', 'handlerBehaviorChanged'],
windows: ['get', 'getCurrent', 'getLastFocused', 'getAll', 'create', 'update', 'remove']
});
})();

10220
js/dep/jquery-3.1.1.js vendored

File diff suppressed because it is too large Load Diff

View File

@ -1,30 +0,0 @@
var _bd_usebrowser = "firefox";
var _bd_isFirefox = false;
var _bd_isChrome = false;
var _bd_isEdge = true; // we'll see if FF
try{
// this will fail in Edge
var promise = browser.runtime.getBrowserInfo();
_bd_isFirefox = true;
_bd_isEdge = false;
}
catch (e) {};
if(typeof browser === "undefined"){ // This is a good sign we're in chrome or chromium-based browsers
if(chrome){
browser = chrome;
_bd_usebrowser = "chrome";
_bd_isChrome = true;
_bd_isEdge = false;
}
}
var BrowserDetect = {
usebrowser: _bd_usebrowser,
firefox: _bd_isFirefox,
chrome: _bd_isChrome,
edge: _bd_isEdge
}

View File

@ -1,184 +0,0 @@
var _com_chrome_tabquery_wrapper = async function(tabInfo){
return new Promise(function (resolve, reject){
browser.tabs.query(tabInfo, function(response){
browser.tabs.query(tabInfo);
// Chrome/js shittiness mitigation — remove this line and an empty array will be returned
var r = response;
resolve(r);
});
});
}
var _com_queryTabs = async function(tabInfo){
if(BrowserDetect.usebrowser != "firefox"){
return await _com_chrome_tabquery_wrapper(tabInfo);
}
else{
return browser.tabs.query(tabInfo);
}
}
var _com_getActiveTab = async function(tabInfo){
if(BrowserDetect.firefox){
return await browser.tabs.query({currentWindow: true, active: true});
}
return _com_chrome_tabquery_wrapper({currentWindow: true, active: true});
}
var _com_chrome_tabs_sendmsg_wrapper = async function(tab, message, options){
return new Promise(function (resolve, reject){
try{
browser.tabs.sendMessage(tab, message, /*options, */function(response){
console.log("TESTING what is this owo? (response)", response);
// Chrome/js shittiness mitigation — remove this line and an empty array will be returned
var r = response;
resolve(r);
});
}
catch(e){
reject(e);
}
});
}
var _com_sendMessage = async function(tab, message, options){
if(BrowserDetect.usebrowser != "firefox"){
var r = await _com_chrome_tabs_sendmsg_wrapper(tab, message, options);
console.log("TESTING what is this owo? (should be a promise)", r);
return r;
}
else{
return browser.tabs.sendMessage(tab, message, options);
}
}
var _com_chrome_tabs_sendmsgrt_wrapper = async function(message){
return new Promise(function (resolve, reject){
try{
browser.runtime.sendMessage(message, function(response){
// Chrome/js shittiness mitigation — remove this line and an empty array will be returned
var r = response;
resolve(r);
});
}
catch(e){
reject(e);
}
});
}
var _com_sendMessageRuntime = async function(message){
if(BrowserDetect.usebrowser != "firefox"){
return _com_chrome_tabs_sendmsgrt_wrapper(message);
}
else{
return browser.runtime.sendMessage(message);
}
}
// pošlje sporočilce vsem okvirjem v trenutno odprtem zavihku. Vrne tisti odgovor od tistega okvira, ki prispe prvi.
// sends a message to all frames in the currently opened tab. Returns the response of a frame that replied first
var _com_sendToAllFrames = async function(message) {
if(Debug.debug)
console.log("[Comms::_com_sendToAllFrames] sending message to all frames of currenntly active tab");
var tabs = await browser.tabs.query({currentWindow: true, active: true});
if(Debug.debug)
console.log("[Comms::_com_sendToAllFrames] trying to send message", message, " to tab ", tabs[0], ". (all tabs:", tabs,")");
var response = await browser.tabs.sendMessage(tabs[0].id, message);
console.log("[Comms::_com_sendToAllFrames] response is this:",response);
return response;
// if(BrowserDetect.firefox){
// return
// }
}
// pošlje sporočilce vsem okvirjem v trenutno odprtem zavihku in vrne _vse_ odgovore
// sends a message to all frames in currently opened tab and returns all responses
var _com_sendToEachFrame = async function(message, tabId) {
if(Debug.debug)
console.log("[Comms::_com_sendToEveryFrame] sending message to every frames of currenntly active tab");
if(tabId === undefined){
var tabs = await browser.tabs.query({currentWindow: true, active: true});
tabId = tabs[0].id;
}
var frames = await browser.webNavigation.getAllFrames({tabId: tabId});
if(Debug.debug)
console.log("[Comms::_com_sendToEveryFrame] we have this many frames:", frames.length, "||| tabId:", tabId ,"frames:",frames);
// pošlji sporočilce vsakemu okvirju, potisni obljubo v tabelo
// send message to every frame, push promise to array
var promises = [];
for(var frame of frames){
if(Debug.debug)
console.log("[Comms:_com_sendToEachFrame] we sending message to tab with id", tabId, ", frame with id", frame.frameId);
try{
promises.push(browser.tabs.sendMessage(tabId, message, {frameId: frame.frameId}));
}
catch(e){
if(Debug.debug)
console.log("[Comms:_com_sendToEachFrame] we sending message to tab with id", tabId, ", frame with id", frame.frameId);
}
}
// počakajmo, da so obljube izpolnjene.
// wait for all promises to be kept
var responses = [];
for(var promise of promises){
var response = await promise;
if(response !== undefined)
responses.push(response);
}
if(Debug.debug)
console.log("[Comms::_com_sendToEveryFrame] we received responses from all frames", responses);
return responses;
}
var _com_sendToMainFrame = async function(message, tabId){
if(Debug.debug)
console.log("[Comms::_com_sendToMainFrame] sending message to every frames of currenntly active tab");
if(tabId === undefined){
var tabs = await browser.tabs.query({currentWindow: true, active: true});
tabId = tabs[0].id;
}
// pošlji sporočilce glavnemu okvirju. Glavni okvir ima id=0
// send message to the main frame. Main frame has id=0
try{
var response = await browser.tabs.sendMessage(tabId, message, {frameId: 0});
console.log("[Comms::_com_sendToMainFrame] response is this:",response);
}
catch(e){
console.log("[Comms:_com_sendToEachFrame] failed sending message to tab with id", tabId, ", frame with id", 0, "\nerror:",e);
}
return response;
}
var Comms = {
getActiveTab: _com_getActiveTab,
sendToBackgroundScript: _com_sendMessageRuntime,
queryTabs: _com_queryTabs,
sendMessage: _com_sendMessage,
sendMessageRuntime: _com_sendMessageRuntime,
sendToEach: _com_sendToEachFrame,
sendToAll: _com_sendToAllFrames,
sendToMain: _com_sendToMainFrame,
}

View File

@ -1,173 +0,0 @@
if(Debug.debug)
console.log("Loading: FullScreenDetect.js");
var _pd_isFullScreen = function(){
return ( window.innerHeight == window.screen.height && window.innerWidth == window.screen.width);
}
/* sprejme <video> tag (element) in seznam imen, ki se lahko pojavijo v razredih oz. id staršev.
// vrne dimenzije predvajalnika (širina, višina)
//
// Na youtube v theater mode je razširitev rahlo pokvarjena. Video tag ostane večji od predvajalnika, ko se zapusti
// celozaslonski način. Ta funkcija skuša to težavo rešiti tako, da poišče element predvajalnika, ki je zavit okoli videa.
//
// Funkcija izkorišča lastnost, da bi načeloma moral biti vsak zunanji element večji od notranjega. Najmanjši element od
// <video> značke pa do korena drevesa bi tako moral biti predvajalnik.
//
// Če je podan seznam imen, potem funkcija vrne dimenzije prvega elementa, ki v id oz. razredu vsebuje katerokoli ime iz seznama
//
// | EN |
//
// accepts <video> tag (element) and list of names that can appear in id or class
// returns player dimensions (width, height)
//
// Theater mode is mildly broken on youtube. <video> tag remains bigger than the player after leaving the fullscreen mode, and
// there's nothing we can do about that. This function aims to solve the problem by finding the player element that's wrapped around
// the <video> tag.
//
// In general, an outer tag should be bigger than the inner tag. Therefore the smallest element between <video> tag and the document
// root should be the player.
//
// If list of names is provided, the function returns dimensions of the first element that contains any name from the list in either
// id or class.
*/
var _pd_getPlayerDimensions = function(startElement, elementNames){
var element = startElement;
if(element == null || element == undefined){
if(Debug.debug)
console.log("[PlayerDetect::_pd_getPlayerDimensions] element is not valid, doing nothing.", element)
return;
}
var isFullScreen = _pd_isFullScreen();
var trustCandidateAfterGrows = 2; // if candidate_width or candidate_height increases in either dimensions this many
// times, we say we found our player. (This number ignores weird elements)
// in case our <video> is bigger than player in one dimension but smaller in the other
// if site is coded properly, player can't be wider than that
var candidate_width = Math.max(element.offsetWidth, window.innerWidth);
var candidate_height = Math.max(element.offsetHeight, window.innerHeight);
var playerCandidateNode = startElement;
// <video> can't be root in a document, so we can do this
element = element.parentNode;
try{
var grows = trustCandidateAfterGrows;
while(element != undefined){
// odstranimo čudne elemente, ti bi pokvarili zadeve
// remove weird elements, those would break our stuff
if ( element.offsetWidth == 0 || element.offsetHeight == 0){
element = element.parentNode;
continue;
}
if ( element.offsetHeight <= candidate_height &&
element.offsetWidth <= candidate_width ){
// if we're in fullscreen, we only consider elements that are exactly as big as the monitor.
if( ! isFullScreen ||
(element.offsetWidth == window.innerWidth && element.offsetHeight == window.innerHeight) ){
playerCandidateNode = element;
candidate_width = element.offsetWidth;
candidate_height = element.offsetHeight;
grows = trustCandidateAfterGrows;
if(Debug.debug){
console.log("Found new candidate for player. Dimensions: w:", candidate_width, "h:",candidate_height, "node:", playerCandidateNode);
}
}
}
else if(grows --<= 0){
if(Debug.debug && Debug.playerDetect){
console.log("Current element grew in comparrison to the child. We probably found the player. breaking loop, returning current result");
}
break;
}
element = element.parentNode;
}
}
catch(e){
console.log("pdeeee,",e);
}
var dims;
if(isFullScreen && playerCandidateNode == startElement){
dims = {
width: window.innerWidth,
height: window.innerHeight,
element: null,
fullscreen: true
}
}
else{
dims = {
width: candidate_width,
height: candidate_height,
element: playerCandidateNode,
fullscreen: isFullScreen
};
}
return dims;
}
// returns 'true' if there was a change.
var _pd_checkPlayerSizeChange = function(){
// console.log("Player:", GlobalVars.playerDimensions, "Node:", GlobalVars.playerDimensions.element)
if(Debug.debug){
if(GlobalVars.playerDimensions.element == undefined)
console.log("[PlayerDetect] player size changed. reason: player element undefined");
if(GlobalVars.playerDimensions.fullscreen){
if(! _pd_isFullScreen()){
console.log("[PlayerDetect] player size changed. reason: exited fullscreen");
}
}
if(! GlobalVars.playerDimensions.element)
console.log("[PlayerDetect] player element isnt defined");
if ( GlobalVars.playerDimensions.element &&
( GlobalVars.playerDimensions.width != GlobalVars.playerDimensions.element.offsetWidth ||
GlobalVars.playerDimensions.height != GlobalVars.playerDimensions.element.offsetHeight )
){
console.log("[PlayerDetect] player size changed. reason: dimension change. Old dimensions?", GlobalVars.playerDimensions.width, GlobalVars.playerDimensions.height, "new dimensions:", GlobalVars.playerDimensions.element.offsetWidth, GlobalVars.playerDimensions.element.offsetHeight);
}
}
if(GlobalVars.playerDimensions.element == undefined)
return true;
if(GlobalVars.playerDimensions.width != GlobalVars.playerDimensions.element.offsetWidth || GlobalVars.playerDimensions.height != GlobalVars.playerDimensions.element.offsetHeight ){
return true;
}
// if(GlobalVars.playerDimensions.fullscreen){
// return ! _pd_isFullScreen();
// }
return false;
}
var PlayerDetect = {
getPlayerDimensions: _pd_getPlayerDimensions,
checkPlayerSizeChange: _pd_checkPlayerSizeChange,
isFullScreen: _pd_isFullScreen
}

View File

@ -1,50 +0,0 @@
// setopt, getopt, delopt. Shrani oz. dobi oz. briše stvari iz skladišča
// setopt, getopt, delopt. They set/get/delete stuff from the storage
var _sm_setopt = function(item){
return browser.storage.local.set(item);
}
var _sm_getopt = function(prop, callback){
if(BrowserDetect.usebrowser == "chrome")
return browser.storage.local.get(prop, callback);
else
return browser.storage.local.get(prop).then(callback);
}
var _sm_chrome_getopt_wrapper = async function(prop){
return new Promise(function (resolve, reject){
browser.storage.local.get(prop, function(response){
resolve(response);
});
});
}
var _sm_getopt_async = async function(prop){
if(Debug.debug && Debug.debugStorage)
console.log("[StorageManager::_sm_getopt_async] requesting prop",prop,"from localStorage.");
if(BrowserDetect.usebrowser == "chrome"){
var ret = await _sm_chrome_getopt_wrapper(prop);
return ret;
}
else{
var ret = await browser.storage.local.get(prop);
if(Debug.debug && Debug.debugStorage)
console.log("[StorageManager::_sm_getopt_async] got prop", prop, "; value: ", ret);
return ret;
}
}
var _sm_delopt = function(item){
return browser.storage.local.remove(item);
}
var StorageManager = {
setopt: _sm_setopt,
getopt: _sm_getopt,
delopt: _sm_delopt,
getopt_async: _sm_getopt_async
}

File diff suppressed because it is too large Load Diff

View File

@ -1,220 +0,0 @@
var _dbgc_canvas;
var _dbgc_context;
var _dbgc_timer;
var _dbgc_clearTimeoutCount = 0;
var _dbgc_imageBuffer;
// drawQueue vsebuje stvari, ki jih bomo risali na platno
// Je tabela objektov, ki naj bi zgledali takole:
// {
// id: (id elementa)
// class: (razred elementa)
// type: (črta, kvardat, whatever)
// startPosition: (kje se začne risati)
// dimensions: {width, height}
// }
//
// drawqueue contains stuff we're gonna draw onto canvas
var _dbgc_drawQueue = [];
var _dbgc_classes = {
guardLine_blackbar: "#000099",
guardLine_imageTest: "#5555FF",
guardLine_blackbar_violation: "#FF0000",
test: "#FF0000"
}
var _dbgc_traceColors = {
guardLine_blackbar: [0, 0, 96],
guardLine_imageTest: [72, 72, 255],
guardLine_blackbar_violation: [255, 0, 0],
guardLine_imageTest_noimage: [69, 42, 42]
}
var _dbgc_init = async function(canvasSize, canvasPosition){
console.log("initiating DebugCanvas")
var body = document.getElementsByTagName('body')[0];
if(!canvasPosition){
canvasPosition = {
top: 1200,
left: 800
}
}
if(!_dbgc_canvas){
_dbgc_canvas = document.createElement("canvas");
body.appendChild(_dbgc_canvas);
}
_dbgc_canvas.style.position = "absolute";
_dbgc_canvas.style.left = `${canvasPosition.left}px`;
_dbgc_canvas.style.top = `${canvasPosition.top}px`;
_dbgc_canvas.style.zIndex = 10002;
_dbgc_canvas.style.transform = "scale(2.5, 2.5)";
_dbgc_canvas.id = "uw_debug_canvas";
_dbgc_context = _dbgc_canvas.getContext("2d");
_dbgc_canvas.width = canvasSize.width;
_dbgc_canvas.height = canvasSize.height;
console.log("debug canvas is:", _dbgc_canvas, "context:", _dbgc_context)
// _dbgc_start();
}
var _dbgc_removeFromQueue = function(element){
var ind = _dbgc_drawQueue.indexOf(element);
if(ind > -1){
_dbgc_drawQueue.splice(ind, 1);
}
}
var _dbgc_removeByAttribute = function(attribute, value){
var i = 0;
while(i < _dbgc_drawQueue.length){
if( _dbgc_drawQueue[i][attribute] == value){
_dbgc_drawQueue.splice(i, 1);
continue;
}
i++;
}
}
var _dbgc_remove = function(id){
_dbgc_removeByAttribute('id', id);
}
var _dbgc_removeClass = function(className) {
_dbgc_removeByAttribute('class', className);
}
// good thing javascript is single threaded because this would be haram as fuck
var _dbgc_autoremove = async function(timeout, element){
setTimeout( _dbgc_removeFromQueue, timeout, element);
}
var _dbgc_start = function(){
_dbgc_scheduleUpdate(0);
}
var _dbgc_scheduleUpdate = function (timeout, force_reset){
// don't allow more than 1 instance
if(_dbgc_timer){
++_dbgc_clearTimeoutCount;
clearTimeout(_dbgc_timer);
}
_dbgc_timer = setTimeout(function(){
_dbgc_timer = null;
_dbgc_update();
},
timeout);
}
var _dbgc_draw = function(id, className, type, startPosition, dimensions, removeAfter){
/**
* @param id element id
* @param className element class
* @param type type of element (line, rectangle)
* @param startPosition start position on canvas. {x,y}
* @param dimensions dimensions of object
* @param removeAfter if defined, element will be removed after this many milliseconds. Leave 0 or undefined to avoid automatic removal (manual removal still possible)
*/
var element = {
id: id,
class: className,
type: type,
startPosition: startPosition,
dimensions: dimensions
}
_dbgc_drawQueue.push(element);
if(removeAfter){
_dbgc_autoremove(removeAfter, element)
}
}
var _dbgc_update = function(){
// get frame off video
if(GlobalVars.video){
_dbgc_context.drawImage(GlobalVars.video, 0,0, _dbgc_canvas.width, _dbgc_canvas.height);
}
else{
// console.log("[DebugCanvas] NO VIDEO DETECTED, DOING NOTHIGN");
_dbgc_scheduleUpdate(100);
return;
}
for (var element of _dbgc_drawQueue) {
_dbgc_context.fillStyle = _dbgc_classes[element.class];
// if(element.type == "rect"){
_dbgc_context.fillRect(element.startPosition.x, element.startPosition.y, element.dimensions.width, element.dimensions.height);
// }
}
_dbgc_scheduleUpdate(100);
}
var _dbgc_setBuffer = function(buffer) {
// _dbgc_imageBuffer = buffer.splice(0);
_dbgc_imageBuffer = new Uint8ClampedArray(buffer);
// console.log(buffer, "<--buf")
}
var _dbgc_trace = function(className, arrayIndex){
_dbgc_imageBuffer[arrayIndex ] = _dbgc_traceColors[className][0];
_dbgc_imageBuffer[arrayIndex+1] = _dbgc_traceColors[className][1];
_dbgc_imageBuffer[arrayIndex+2] = _dbgc_traceColors[className][2];
}
// because (context.putImageData) doesnt work
function putImageData(ctx, imageData, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) {
var data = imageData.data;
var height = imageData.height;
var width = imageData.width;
dirtyX = dirtyX || 0;
dirtyY = dirtyY || 0;
dirtyWidth = dirtyWidth !== undefined? dirtyWidth: width;
dirtyHeight = dirtyHeight !== undefined? dirtyHeight: height;
var limitBottom = Math.min(dirtyHeight, height);
var limitRight = Math.min(dirtyWidth, width);
for (var y = dirtyY; y < limitBottom; y++) {
for (var x = dirtyX; x < limitRight; x++) {
var pos = y * width + x;
ctx.fillStyle = 'rgba(' + data[pos*4+0]
+ ',' + data[pos*4+1]
+ ',' + data[pos*4+2]
+ ',' + (data[pos*4+3]/255) + ')';
ctx.fillRect(x + dx, y + dy, 1, 1);
}
}
}
var _dbgc_showTraces = function(){
if(_dbgc_context && _dbgc_imageBuffer instanceof Uint8ClampedArray){
var idata = new ImageData(_dbgc_imageBuffer, _dbgc_canvas.width, _dbgc_canvas.height);
putImageData(_dbgc_context, idata, 0, 0);
}
}
var DebugCanvas = {
events: {
},
init: _dbgc_init,
// start: _dbgc_start,
// draw: _dbgc_draw,
// remove: _dbgc_remove,
// removeClass: _dbgc_removeClass,
setBuffer: _dbgc_setBuffer,
trace: _dbgc_trace,
showTraces: _dbgc_showTraces
}

View File

@ -1,19 +0,0 @@
if(Debug.debug)
console.log("Loading: PageInfo.js");
var _pi_hasVideos = function(){
// return true;
var videos = document.getElementsByTagName("video");
if(videos.length == 0)
return false;
// if(videos[0].style.display == "none") // in this case ultrawidify doesn't even work
// return false;
return true;
}
var PageInfo = {
hasVideos: _pi_hasVideos
}

View File

@ -1,458 +0,0 @@
if(Debug.debug)
console.log("Loading: Resizer.js");
// restore watchdog. While true, _res_applyCss() tries to re-apply new css until this value becomes false again
// value becomes false when width and height of <video> tag match with what we want to set. Only necessary when
// calling _res_restore() for some weird reason.
var _res_restore_wd = false;
var _res_char = function(newAr, video, player){
// Kot vhodni argument dobimo razmerje stranic. Problem je, ker pri nekaterih ločljivostih lahko razmerje stranic
// videa/našega zaslona minimalno odstopa od idealnega razmerja — npr 2560x1080 ni natanko 21:9, 1920x1080 ni
// natanko 16:9. Zato ob podanem razmerju stranic izračunamo dejansko razmerje stranic.
//
// The aspect ratio we get as an argument is an ideal aspect ratio. Some (most) resolutions' aspect ratios differ
// from that ideal aspect ratio (by a minimal amount) — e.g. 2560x1080 isn't exactly 21:9, 1920x1080 isn't exactly
// 16:9. What is more, both 3440x1440 and 2560x1080 are considered "21:9", but their aspect ratios are slightly
// different. This has the potential to result in annoying black bars, so we correct the aspect ratio we're given
// to something that's slightly more correct.
var ar;
var res_219 = [ [2560,1080], [3440,1440] ];
var res_169 = [ [1920,1080], [1280,720], [1366,768] ];
if(newAr == (21/9)){
for (var i = 0; i < res_219.length; i++){
if( player.height == res_219[i][1]){
ar = res_219[i][0]/res_219[i][1];
set_video_ar( ar, video, player);
return;
}
}
}
else if(new_ar == (16/9)){
for (var i = 0; i < res_169.length; i++){
if( player.height == res_169[i][1]){
ar = res_169[i][0]/res_169[i][1];
setVideoAr( ar, video, player);
return;
}
}
}
_res_setVideoAr(new_ar, video, player);
}
// Skrbi za "stare" možnosti, kot na primer "na širino zaslona", "na višino zaslona" in "ponastavi".
// Približevanje opuščeno.
// handles "legacy" options, such as 'fit to widht', 'fit to height' and 'reset'. No zoom tho
var _res_legacyAr = function(action){
var vid = GlobalVars.video;
var ar;
if (!vid) {
if(Debug.debug){
console.log("[Resizer.js::_res_legacyAr] No video??",vid)
}
return;
}
if(! GlobalVars.playerDimensions ){
ar = screen.width / screen.height;
}
else{
ar = GlobalVars.playerDimensions.width / GlobalVars.playerDimensions.height;
}
// POMEMBNO: GlobalVars.lastAr je potrebno nastaviti šele po tem, ko kličemo _res_setAr(). _res_setAr() predvideva,
// da želimo nastaviti statično (type: 'static') razmerje stranic — tudi, če funkcijo kličemo tu oz. v ArDetect.
//
// IMPORTANT NOTE: GlobalVars.lastAr needs to be set after _res_setAr() is called, as _res_setAr() assumes we're
// setting a static aspect ratio (even if the function is called from here or ArDetect).
var fileAr = vid.videoWidth / vid.videoHeight;
if (action == "fitw"){
_res_setAr( ar > fileAr ? ar : fileAr);
}
else if(action == "fith"){
_res_setAr( ar < fileAr ? ar : fileAr);
}
else if(action == "reset"){
if(Debug.debug){
console.log("[Resizer.js::_res_legacyAr] Resetting aspect ratio to", fileAr)
}
_res_setAr(fileAr);
GlobalVars.lastAr = {type: "original"};
return;
}
else if(action == "autoar" || action == "auto"){
GlobalVars.lastAr = {type: "auto", ar: null};
ArDetect.init();
}
GlobalVars.lastAr = {type: "legacy", action: action};
}
var _res_setAr = function(ar){
if(Debug.debug)
console.log("[Resizer::_res_setAr] trying to set ar. args are: ar->",ar,"; playerDimensions->",GlobalVars.playerDimensions.width, "×", GlobalVars.playerDimensions.height, "| obj:", GlobalVars.playerDimensions);
GlobalVars.lastAr = {type: "static", ar: ar};
var vid = GlobalVars.video;
if(vid == null || vid==undefined || vid.videoWidth == 0 || vid.videoHeight == 0){
vid = document.getElementsByTagName("video")[0];
GlobalVars.video = vid;
if(vid == null || vid==undefined || vid.videoWidth == 0 || vid.videoHeight == 0){
if(Debug.debug)
console.log("[Resizer::_res_setAr] I lied. Tricked you! You thought there's gonna be a video, didn't you? Never would be.", vid); // of course that's thorin reference -> https://youtu.be/OY5gGkeQn1c?t=1m20s
return;
}
}
if(Debug.debug)
console.log("[Resizer::_res_setAr] video:",vid,"width:", vid.videoWidth, "height:", vid.videoHeight);
if(! GlobalVars.playerDimensions || GlobalVars.playerDimensions.width === 0 || GlobalVars.playerDimensions.height){
GlobalVars.playerDimensions = PlayerDetect.getPlayerDimensions(vid);
if(Debug.debug)
console.log("[Resizer::_res_setAr] playerDimensions are undefined, trying to determine new ones ... new dimensions:", GlobalVars.playerDimensions.width, "×", GlobalVars.playerDimensions.height, "| obj:", GlobalVars.playerDimensions);
if(! GlobalVars.playerDimensions || GlobalVars.playerDimensions.width === 0 || GlobalVars.playerDimensions.height === 0){
if(Debug.debug)
console.log("[Resizer::_res_setAr] failed to get player dimensions. Doing nothing. Here's the object:", GlobalVars.playerDimensions);
return;
}
}
// Dejansko razmerje stranic datoteke/<video> značke
// Actual aspect ratio of the file/<video> tag
var fileAr = vid.videoWidth / vid.videoHeight;
var playerAr = GlobalVars.playerDimensions.width / GlobalVars.playerDimensions.height;
if(ar == "default" || !ar)
ar = fileAr;
if(Debug.debug)
console.log("[Resizer::_res_setAr] ar is " ,ar, ", file ar is", fileAr, ", playerDimensions are ", GlobalVars.playerDimensions.width, "×", GlobalVars.playerDimensions.height, "| obj:", GlobalVars.playerDimensions);
var videoDimensions = {
width: 0,
height: 0
}
if(Debug.debug){
console.log("[Resizer::_res_setAr] Player dimensions?", GlobalVars.playerDimensions.width, "×", GlobalVars.playerDimensions.height, "| obj:", GlobalVars.playerDimensions);
}
if( fileAr < ar ){
// imamo letterbox zgoraj in spodaj -> spremenimo velikost videa (a nikoli širše od ekrana)
// letterbox -> change video size (but never to wider than monitor width)
videoDimensions.width = Math.min(GlobalVars.playerDimensions.height * ar, GlobalVars.playerDimensions.width);
videoDimensions.height = videoDimensions.width * (1/fileAr);
}
else{
videoDimensions.height = Math.min(GlobalVars.playerDimensions.width * (1/ar), GlobalVars.playerDimensions.height);
videoDimensions.width = videoDimensions.height * fileAr;
}
if(Debug.debug){
console.log("[Resizer::_res_setAr] Video dimensions: ", videoDimensions.width, "×", videoDimensions.height, "(obj:", videoDimensions, "); playerDimensions:",GlobalVars.playerDimensions.width, "×", GlobalVars.playerDimensions.height, "(obj:", GlobalVars.playerDimensions, ")");
}
var cssValues = _res_computeOffsets(videoDimensions, GlobalVars.playerDimensions);
if(Debug.debug){
console.log("[Resizer::_res_setAr] Offsets for css are: ",cssValues);
}
_res_applyCss(cssValues);
}
var _res_computeOffsets = function(vidDim, playerDim){
if(Debug.debug)
console.log("[Resizer::_res_computeOffsets] video will be aligned to ", ExtensionConf.miscFullscreenSettings.videoFloat);
var offsets = {
width: vidDim.width,
height: vidDim.height,
left: 0,
top: ((playerDim.height - vidDim.height) / 2)
}
if( ExtensionConf.miscFullscreenSettings.videoFloat == "center" ){
offsets.left = (playerDim.width - vidDim.width ) / 2;
}
else if( ExtensionConf.miscFullscreenSettings.videoFloat == "right" ){
offsets.left = (playerDim.width - vidDim.width);
}
GlobalVars.correctedVideoDimensions.width = parseInt(offsets.width);
GlobalVars.correctedVideoDimensions.height= parseInt(offsets.height);
GlobalVars.correctedVideoDimensions.left = parseInt(offsets.left);
GlobalVars.correctedVideoDimensions.top = parseInt(offsets.top);
return offsets;
}
var _res_align = function(float){
if(! float)
float = ExtensionConf.miscFullscreenSettings.videoFloat;
var dimensions = {left: 0};
if(float == "left"){
_res_applyCss(dimensions);
return;
}
if(float == "center"){
// dimensions.left =
// _res_applyCss(
}
}
var _res_setStyleString_maxRetries = 3;
var _res_setStyleString = function(vid, styleString, count){
vid.setAttribute("style", styleString);
if(_res_restore_wd){
var vid2 = GlobalVars.video;
if(vid2 == undefined || vid2 == null){
if(Debug.debug)
console.log("[Resizer::_res_setStyleString] Video element went missing, nothing to do here.")
return;
}
if(
styleString.indexOf("width: " + vid2.style.width) == -1 ||
styleString.indexOf("height: " + vid2.style.height) == -1) {
// css ni nastavljen?
// css not set?
if(Debug.debug)
console.log("[Resizer::_res_setStyleString] Style string not set ???");
if(count++ < _res_setStyleString_maxRetries){
setTimeout( _res_setStyleString, 200, count);
}
else if(Debug.debug){
console.log("[Resizer::_res_setStyleString] we give up. css string won't be set");
}
}
else{
_res_restore_wd = false;
}
}
else{
if(Debug.debug)
console.log("[Resizer::_res_setStyleString] css applied. Style string:", styleString);
}
}
function _res_applyCss(dimensions){
if(GlobalVars.video == undefined || GlobalVars.video == null){
if(Debug.debug)
console.log("[Resizer::_res_applyCss] Video went missing, doing nothing.");
return;
}
if(Debug.debug)
console.log("[Resizer::_res_applyCss] Starting to apply css. this is what we're getting in:", dimensions);
if(dimensions.top !== undefined)
dimensions.top = "top: " + Math.round(dimensions.top) + "px !important";
if(dimensions.left !== undefined)
dimensions.left = "left: " + Math.round(dimensions.left) + "px !important";
if(dimensions.width !== undefined)
dimensions.width = "width: " + Math.round(dimensions.width) + "px !important";
if(dimensions.height !== undefined)
dimensions.height = "height: " + Math.round(dimensions.height) + "px !important";
// misc.
dimensions.position = "position: absolute !important";
dimensions.margin = "margin: 0px !important";
// save values for left and top to GlobalVars
GlobalVars.currentCss.top = dimensions.top;
GlobalVars.currentCss.left = dimensions.left;
var vid = GlobalVars.video;
if(Debug.debug)
console.log("[Resizer::_res_applyCss] trying to apply css. Css strings: ", dimensions, "video tag: ", vid);
var styleArrayStr = vid.getAttribute('style');
if (styleArrayStr !== null && styleArrayStr !== undefined){
var styleArray = styleArrayStr.split(";");
for(var i in styleArray){
styleArray[i] = styleArray[i].trim();
if (styleArray[i].startsWith("top:")){
styleArray[i] = dimensions.top;
delete dimensions.top;
}
else if(styleArray[i].startsWith("left:")){
styleArray[i] = dimensions.left;
delete dimensions.left;
}
else if(styleArray[i].startsWith("width:")){
styleArray[i] = dimensions.width;
delete dimensions.width;
}
else if(styleArray[i].startsWith("height:")){
styleArray[i] = dimensions.height;
delete dimensions.height;
}
else if(styleArray[i].startsWith("position:")){
styleArray[i] = dimensions.position;
delete dimensions.position;
}
else if(styleArray[i].startsWith("margin:")){
styleArray[i] = dimensions.margin;
delete dimensions.margin;
}
}
}
else{
var styleArray = [];
}
// add remaining elements
for(var key in dimensions)
styleArray.push( dimensions[key] );
// build style string back
var styleString = "";
for(var i in styleArray)
if(styleArray[i] !== undefined && styleArray[i] !== "")
styleString += styleArray[i] + "; ";
_res_setStyleString(vid, styleString);
}
var _res_antiCssOverride = function(){
// this means we haven't set our CSS yet, or that we changed video.
if(GlobalVars.currentCss.top === null)
return;
// this means video went missing.
if(GlobalVars.video == undefined || GlobalVars.video == null)
return;
// // our current css is fucky? Null, undefined and 0 are invalid values.
// if(! GlobalVars.currentCss.width || ! GlobalVars.currentCss.height )
// return;
var styleArrayStr = GlobalVars.video.getAttribute('style');
if (styleArrayStr !== null && styleArrayStr !== undefined){
var styleArray = styleArrayStr.split(";");
var stuffChecked = 0;
var stuffToCheck = 2;
for(var i in styleArray){
styleArray[i] = styleArray[i].trim();
if (styleArray[i].startsWith("top:")){
// don't force css restore if currentCss.top is not defined
if(GlobalVars.currentCss.top && styleArray[i] != GlobalVars.currentCss.top){
if(Debug.debug){
console.log("[Resizer::_res_antiCssOverride] SOMEBODY TOUCHED MA SPAGHETT (our CSS got overriden, restoring our css)");
console.log("[Resizer::_res_antiCssOverride] MA SPAGHETT: top:", GlobalVars.currentCss.top, "left:", GlobalVars.currentCss.left, "thing that touched ma spaghett", styleArrayStr);
}
_res_restore();
return;
}
stuffChecked++;
}
else if(styleArray[i].startsWith("left:")){
// don't force css restore if currentCss.left is not defined
if(GlobalVars.currentCss.left && styleArray[i] != GlobalVars.currentCss.left){
if(Debug.debug){
console.log("[Resizer::_res_antiCssOverride] SOMEBODY TOUCHED MA SPAGHETT (our CSS got overriden, restoring our css)");
console.log("[Resizer::_res_antiCssOverride] MA SPAGHETT: width:", GlobalVars.currentCss.width, "height:", GlobalVars.currentCss.height, "thing that touched ma spaghett", styleArrayStr);
}
_res_restore();
return;
}
stuffChecked++;
}
if(stuffChecked == stuffToCheck){
// if(Debug.debug){
// console.log("[Resizer::_res_antiCssOverride] My spaghett rests untouched. (nobody overrode our CSS, doing nothing)");
// }
return;
}
}
}
}
var _res_restore = function(){
if(! GlobalVars.video)
return false;
if(Debug.debug){
console.log("[Resizer::_res_restore] attempting to restore aspect ratio. this & settings:", {'this': this, "settings": Settings} );
}
// this is true until we verify that css has actually been applied
_res_restore_wd = true;
if(GlobalVars.lastAr.type == "legacy"){
_res_legacyAr(GlobalVars.lastAr.action);
}
else if(GlobalVars.lastAr.type == "static"){
_res_setAr(GlobalVars.lastAr.ar);
}
else if(GlobalVars.lastAr.type == "original"){
_res_legacyAr("reset");
}
else if(GlobalVars.lastAr.type == "auto"){
// do same as static, except keep lastAr to 'auto'. If we're here, this means video probably changed
// and there's something broken that prevents AR from working properly
var storeLastAr = {type: GlobalVars.lastAr.type, ar: GlobalVars.lastAr.ar};
_res_setAr(GlobalVars.lastAr.ar);
GlobalVars.lastAr = storeLastAr;
// ArDetect.init();
}
return true;
}
var _res_reset = function(){
_res_legacyAr("reset");
}
var Resizer = {
_currentAr: -1,
align: _res_align,
setAr: _res_setAr,
legacyAr: _res_legacyAr,
reset: _res_reset,
restore: _res_restore,
antiCssOverride: _res_antiCssOverride
}

View File

@ -1,46 +0,0 @@
var GlobalVars = {
video: null,
player: null,
playerDimensions: null,
playerElement: null,
lastAr: null,
lastUrl: "",
currentCss: {
top: null,
left: null
},
canvas: {
context: null,
width: null,
height: null,
imageDataRowLength: null
},
correctedVideoDimensions: {
width: null,
height: null,
top: null,
left: null
},
arDetect: {
autoDisable: {
eventCount: 0
},
canvas: null,
blackLevel: 10,
sampleCols_current: 0,
noLetterboxCanvasReset: false,
guardLine: {
top: null,
bottom: null,
logo: {
detected: false,
top_left: null,
top_right: null,
bottom_left: null,
bottom_right: null
},
start: null,
end: null
}
}
}

View File

@ -1,262 +0,0 @@
var BgVars = {
arIsActive: true,
hasVideos: false,
currentSite: ""
}
function extractHostname(url){
// extract hostname
if (url.indexOf("://") > -1) { //find & remove protocol (http, ftp, etc.) and get hostname
hostname = url.split('/')[2];
}
else {
hostname = url.split('/')[0];
}
hostname = hostname.split(':')[0]; //find & remove port number
hostname = hostname.split('?')[0]; //find & remove "?"
return hostname;
}
async function main(){
if(Debug.debug)
console.log("[uw-bg::main] setting up background script");
await Settings.init();
await Keybinds.init();
Keybinds.keybinds = await Keybinds.fetch();
// Poslušalci za dogodke | event listeners here
// {===]///[-------------------------------------]\\\[===}
browser.runtime.onMessage.addListener(_uwbg_rcvmsg);
browser.tabs.onActivated.addListener(_uwbg_onTabSwitched);
if(Debug.debug)
console.log("[uw-bg::main] listeners registered");
// add currentSite
var tabs = await Comms.getActiveTab();
BgVars.currentSite = extractHostname(tabs[0].url);
//
setInterval(_uwbg_check4videos, 5000);
}
async function _uwbg_onTabSwitched(activeInfo){
BgVars.hasVideos = false;
if(Debug.debug)
console.log("[uw-bg::onTabSwitched] TAB CHANGED, GETTING INFO FROM MAIN TAB");
var tabId = activeInfo.tabId; // just for readability
var tab = await browser.tabs.get(tabId);
BgVars.currentSite = extractHostname(tab.url);
// this can fail. This might also not return a promise? Check that.
var videoFrameList = await Comms.sendToEach({"cmd":"has-videos"}, tabId);
if(Debug.debug)
console.log("[uw-bg::onTabSwitched] got list of frames and whether they have videos", videoFrameList);
// Pogledamo, če kateri od okvirjev vsebuje video. Da omogočimo pojavno okno je zadosti že
// en okvir z videom.
// <===[///]----------------------------[\\\]===>
// Check if any frame has a video in it. To enable the popup there only needs to be at least one,
// but the popup controls all frames.
var hasVideos = false;
for(frame of videoFrameList){
hasVideos |= frame.response.hasVideos;
}
BgVars.hasVideos = hasVideos;
Settings.reload();
// todo: change extension icon depending on whether there's a video on the page or not
}
async function _uwbg_check4videos(){
if(BgVars.hasVideos)
return;
var videoFrameList = Comms.sendToEach({"cmd":"has-videos"});
if(Debug.debug)
console.log("[uw-bg::check4videos] got updated list of frames and whether they have videos", videoFrameList);
var hasVideos = false;
for(frame of videoFrameList){
hasVideos |= frame.response.hasVideos;
}
BgVars.hasVideos = hasVideos;
}
async function _uwbg_registerVideo(tabId){
var tabs = await Comms.getActiveTab();
// če ukaz pride iz zavihka, na katerem se trenunto ne nahajamo, potem se za zahtevo ne brigamo
// if command originated from a tab that's _not_ currently active, we ignore the request
if(tabId != tabs[0].id){
if(Debug.debug){
console.log("[uw-bg::_uwbg_registerVideo] request didn't come from currently active tab, ignoring");
}
return;
}
if(Debug.debug){
console.log("%c[uw-bg::_uwbg_registerVideo] request came from currently active tab!", "color: #afd, background: #000");
}
BgVars.hasVideos = true;
// todo: change extension icon depending on whether there's a video on the page or not
}
function _uwbg_rcvmsg(message, sender, sendResponse){
if(Debug.debug){
console.log("[uw-bg::_uwbg_rcvmsg] received message", message, "from sender", sender);
}
message.sender = "uwbg";
message.receiver = "uw";
if(message.cmd == "has-videos"){
if(Debug.debug){
console.log("[uw-bg::_uwbg_rcvmsg] does this tab or any of its subframes have videos?", BgVars.hasVideos );
}
var res = {response: {hasVideos: BgVars.hasVideos}};
if(BrowserDetect.firefox){
return Promise.resolve(res);
}
sendResponse(res);
return true;
}
if(message.cmd == "get-config"){
var config = {};
config.videoAlignment = ExtensionConf.miscFullscreenSettings.videoFloat;
config.arConf = {};
config.arConf.enabled_global = ExtensionConf.arDetect.enabled == "blacklist";
config.site = {};
config.site.status = SitesConf.getSiteStatus(BgVars.currentSite);
config.site.arStatus = SitesConf.getArStatus(BgVars.currentSite);
config.mode = ExtensionConf.extensionMode;
config.arMode = ExtensionConf.arDetect.mode;
config.arDisabledReason = ExtensionConf.arDetect.disabledReason;
config.arTimerPlaying = ExtensionConf.arDetect.timer_playing;
if(Debug.debug)
console.log("[uw-bg::_uwbg_rcvmsg] Keybinds.getKeybinds() returned this:", Keybinds.getKeybinds());
config.keyboardShortcuts = Keybinds.getKeybinds();
// predvidevajmo, da je enako. Če je drugače, bomo popravili ko dobimo odgovor
// assume current is same as global & change that when you get response from content script
config.arConf.enabled_current = ExtensionConf.arDetect.enabled == "blacklist";
var res = {response: config}
if(Debug.debug){
console.log("[uw-bg::_uwbg_rcvmsg] get-config: returning this to popup script:", res);
}
if(BrowserDetect.firefox){
return Promise.resolve(res);
}
sendResponse(res);
return true;
}
if(message.cmd == "register-video"){
// dobili smo sporočilce, ki pravi: "hej jaz imam video, naredi cahen" — ampak preden naredimo cahen,
// se je potrebno prepričati, da je sporočilce prišlo iz pravilnega zavihka. Trenutno odprt zavihek
// lahko dobimo to. ID zavihka, iz katerega je prišlo sporočilo, se skriva v sender.tab.id
// ~<><\\\][=================][///><>~
// we got a message that says: "hey I have a video, make a mark or something" — but before we do the
// mark, we should check if the message has truly arrived from currently active tab. We can get the
// id of currently active tab here. ID of the sender tab is hidden in sender.tab.id.
_uwbg_registerVideo(sender.tab.id);
}
else if(message.cmd == "uw-enabled-for-site"){
var mode = SitesConf.getSiteStatus(BgVars.currentSite);
if(BrowserDetect.usebrowser == "firefox")
return Promise.resolve({response: mode});
try{
sendResponse({response: mode});
}
catch(chromeIsShitError){};
return true;
}
else if(message.cmd == "enable-for-site"){
SitesConf.updateSite(BgVars.currentSite, {status: message.option, statusEmbedded: message.option});
}
else if(message.cmd == "enable-autoar"){
ExtensionConf.arDetect.mode = "blacklist";
Settings.save(ExtensionConf);
// Comms.sendToAll({cmd: "reload-settings", sender: "uwbg"})
if(Debug.debug){
console.log("[uw-bg] autoar set to enabled (blacklist). evidenz:", ExtensionConf);
}
}
else if(message.cmd == "disable-autoar"){
ExtensionConf.arDetect.mode = "disabled";
if(message.reason){
ExtensionConf.arDetect.disabledReason = message.reason;
} else {
ExtensionConf.arDetect.disabledReason = '';
}
Settings.save(ExtensionConf);
// Comms.sendToAll({cmd: "reload-settings", sender: "uwbg"});
if(Debug.debug){
console.log("[uw-bg] autoar set to disabled. evidenz:", ExtensionConf);
}
}
else if(message.cmd == "gib-settings"){
if(Debug.debug)
console.log("[uw-bg] we got asked for settings. Returning this:", ExtensionConf);
if(BrowserDetect.usebrowser == "firefox")
return Promise.resolve({response: ExtensionConf});
try{
sendResponse({response: ExtensionConf});
}
catch(chromeIsShitError){};
return true;
}
else if(message.cmd = "autoar-set-timer-playing"){
if(Debug.debug)
console.log("[uw-bg] trying to set new interval for autoAr. New interval is",message.timeout,"ms");
var timeout = message.timeout;
if(timeout < 1)
timeout = 1;
if(timeout > 999)
timeout = 999;
ExtensionConf.arDetect.timer_playing = timeout;
Settings.save(ExtensionConf);
Comms.sendToAll({cmd: "update-settings", sender: "uwbg", newConf: ExtensionConf});
}
}
main();

302
js/uw.js
View File

@ -1,302 +0,0 @@
if(Debug.debug){
console.log("\n\n\n\n\n\n ——— Sᴛλʀᴛɪɴɢ Uʟᴛʀᴀɪɪʏ ———\n << ʟᴏᴀᴅɪɴɢ ᴍᴀɪɴ ꜰɪʟᴇ >>\n\n\n\n");
try {
if(window.self !== window.top){
console.log("%cWe aren't in an iframe.", "color: #afc, background: #174");
}
else{
console.log("%cWe are in an iframe!", "color: #fea, background: #d31", window.self, window.top);
}
} catch (e) {
console.log("%cWe are in an iframe!", "color: #fea, background: #d31");
}
}
// load all settings from localStorage:
async function main(){
if(Debug.debug)
console.log("[uw::main] loading configuration ...");
// load settings
var isSlave = true;
await Settings.init(isSlave);
var scpromise = SitesConf.init();
var kbpromise = Keybinds.init();
// reset current css stuff in GlobalVars
GlobalVars.correctedVideoDimensions.top = null;
GlobalVars.correctedVideoDimensions.left = null;
GlobalVars.correctedVideoDimensions.width = null;
GlobalVars.correctedVideoDimensions.height = null;
GlobalVars.currentCss = {top: null, left: null};
// počakamo, da so nastavitve naložene
// wait for settings to load
await scpromise;
await kbpromise;
// globalVars: lastAr type = original
GlobalVars.lastAr = {type: "original"};
if(Debug.debug)
console.log("[uw::main] configuration should be loaded now");
// start autoar and setup everything
if(Debug.debug)
console.log("[uw::main] | document is ready. Starting ar script ...");
if(! SitesConf.isEnabled(window.location.hostname)){
if(Debug.debug)
console.log("[uw:main] | site", window.location.hostname, "is blacklisted.");
return;
}
// if(SitesConf.isArEnabled(window.location.hostname)){
// if(Debug.debug)
// console.log("[uw::main] Aspect ratio detection is enabled. Starting ArDetect");
// ArDetect.arSetup();
// }
// console.log("[uw::main] ExtensionConf:", ExtensionConf);
if(ExtensionConf.arDetect.mode == "blacklist"){
if(Debug.debug)
console.log("[uw::main] Aspect ratio detection is enabled (mode=",ExtensionConf.arDetect.mode,"). Starting ArDetect");
ArDetect.arSetup();
}
else{
if(Debug.debug)
console.log("[uw::main] Aspect ratio detection is disabled. Mode:", ExtensionConf.arDetect.mode);
}
browser.runtime.onMessage.addListener(receiveMessage);
setInterval( ghettoOnChange, 100);
setInterval( ghettoUrlWatcher, 500);
// ko se na ticevki zamenja video, console.log pravi da ultrawidify spremeni razmerje stranic. preglej element
// in pogled na predvajalnik pravita, da se to ni zgodilo. Iz tega sledi, da nam ticevka povozi css, ki smo ga
// vsilili. To super duper ni kul, zato uvedemo nekaj protiukrepov.
//
// when you change a video on youtube, console.log says that ultrawidify changes aspect ratio. inspect element
// and a look at youtube player, on the other hand, say this didn't happen. It seems that youtube overrides our
// css, and this is super duper uncool. Therefore, extra checks and measures.
setInterval( Resizer.antiCssOverride, 200);
}
// tukaj gledamo, ali se je velikost predvajalnika spremenila. Če se je, ponovno prožimo resizer
// here we check (in the most ghetto way) whether player size has changed. If it has, we retrigger resizer.
var _video_recheck_counter = 5;
var _video_recheck_period = 1; // on this many retries
function ghettoOnChange(){
if(_video_recheck_counter++ > _video_recheck_period){
_video_recheck_counter = 0;
if ( GlobalVars.video == null ||
GlobalVars.video == undefined ||
GlobalVars.video.videoWidth == 0 ||
GlobalVars.video.videoHeight == 0 ){
var video = document.getElementsByTagName("video")[0];
if ( video !== undefined &&
video !== null &&
video.videoWidth > 0 &&
video.videoHeight > 0 ){
if(Debug.debug){
console.log("%c[uw::ghettoOnChange] detected video. registering!", "color: #99f, background: #000");
console.log("[uw::ghettoOnChange] just for shits and giggles, let's see what's happened with GlobalVars.playerDimensions:", GlobalVars.playerDimensions)
}
// zaznali smo novo <video> značko. Zaradi tega bomo resetirali GlobalVars.playerDimensions
// a new <video> has been detected. We'll be resetting GlobalVars.playerDimensions
GlobalVars.playerDimensions = PlayerDetect.getPlayerDimensions(video);
GlobalVars.video = video;
Comms.sendToBackgroundScript({"cmd":"register-video"});
}
}
}
if(! GlobalVars.video)
return;
if(GlobalVars.playerDimensions == null){
GlobalVars.playerDimensions = PlayerDetect.getPlayerDimensions( GlobalVars.video );
if(GlobalVars.playerDimensions == undefined){
GlobalVars.playerDimensions = null;
return;
}
}
if(PlayerDetect.checkPlayerSizeChange()){
if(Debug.debug){
console.log("[uw::ghettoOnChange] change detected");
}
GlobalVars.playerDimensions = PlayerDetect.getPlayerDimensions( GlobalVars.video );
if(GlobalVars.playerDimensions == undefined){
GlobalVars.playerDimensions = null;
return;
}
Resizer.restore(); // note: this returns true if change goes through, false otherwise.
}
// sometimes, checkPlayerSizeChange might not detect a change to fullscreen. This means we need to
// trick it into doing that
if(GlobalVars.playerDimensions.fullscreen != PlayerDetect.isFullScreen()){
if(Debug.debug){
console.log("[uw::ghettoOnChange] fullscreen switch detected");
}
GlobalVars.playerDimensions = PlayerDetect.getPlayerDimensions(GlobalVars.video);
if(GlobalVars.playerDimensions == undefined){
GlobalVars.playerDimensions = null;
return;
}
Resizer.restore();
}
}
function ghettoUrlWatcher(){
if (GlobalVars.lastUrl != window.location.href){
if(Debug.debug){
console.log("[uw::ghettoUrlWatcher] URL has changed. Trying to retrigger autoAr");
}
GlobalVars.video = null;
GlobalVars.lastUrl = window.location.href;
// Resizer.reset();
main();
}
}
// comms
function receiveMessage(message, sender, sendResponse) {
if(Debug.debug)
console.log("[uw::receiveMessage] we received a message.", message);
if(message.cmd == "has-videos"){
var anyVideos = GlobalVars.video != null;
if(Debug.debug)
console.log("[uw::receiveMessage] are there any videos on this page?", anyVideos, GlobalVars.video, this);
if(BrowserDetect.usebrowser == "firefox")
return Promise.resolve({response: {"hasVideos": anyVideos }});
try{
sendResponse({response: {"hasVideos":anyVideos}});
return true;
}
catch(chromeIsShitError){}
return;
}
else if(message.cmd == "get-config"){
var config = {};
config.videoAlignment = ExtensionConf.miscFullscreenSettings.videoFloat;
config.arConf = {};
config.arConf.enabled_global = ExtensionConf.arDetect.enabled == "global";
var keybinds = Keybinds.getKeybinds();
if(Debug.debug)
console.log("[uw-bg::_uwbg_rcvmsg] Keybinds.fetch returned this:", keybinds);
config.keyboardShortcuts = keybinds;
// predvidevajmo, da je enako. Če je drugače, bomo popravili ko dobimo odgovor
// assume current is same as global & change that when you get response from content script
config.arConf.enabled_current = ArDetect.isRunning();
if(BrowserDetect.usebrowser == "firefox")
return Promise.resolve({response: config});
try{
sendResponse({response: config});
}
catch(chromeIsShitError){};
return true;
}
else if(message.cmd == "force-ar"){
if(Debug.debug)
console.log("[uw::receiveMessage] we're being commanded to change aspect ratio to", message.newAr);
if(message.arType == "legacy"){
ArDetect.stop();
Resizer.legacyAr(message.newAr);
}
else{
ArDetect.stop();
Resizer.setAr(message.newAr);
}
}
else if(message.cmd == "force-video-float"){
if(Debug.debug)
console.log("[uw::receiveMessage] we're aligning video to", message.newFloat);
ExtensionConf.miscFullscreenSettings.videoFloat = message.newFloat;
Settings.save(ExtensionConf);
}
else if(message.cmd == "stop-autoar"){
ArDetect.stop();
}
else if(message.cmd == "update-settings"){
if(Debug.debug){
console.log("[uw] we got sent new ExtensionConf to abide by:", cmd.newConf);
}
ExtensionConf = cmd.newConf;
}
// else if(message.cmd == "enable-autoar"){
// if(Debug.debug){
// console.log("[uw] enabling autoar.");
// }
// ExtensionConf.autoAr.mode == "blacklist";
// Settings.save(ExtensionConf);
// }
// else if(message.cmd == "disable-autoar"){
// if(Debug.debug){
// console.log("[uw] disabling autoar.");
// }
// ExtensionConf.autoAr.mode == "disabled";
// Settings.save(ExtensionConf);
// }
if(message.cmd == "testing"){
if(Browserdetect.usebrowser = "firefox")
return Promise.resolve({response: "test response hier"});
sendResponse({response: "test response hier"});
return true;
}
}
// $(document).ready(function() {
main();
// });

View File

@ -1,87 +0,0 @@
{
"manifest_version": 2,
"name": "Ultrawidify",
"version": "2.2.5",
"icons": {
"32":"res/icons/uw-32.png",
"64":"res/icons/uw-64.png"
},
"description": "Aspect ratio fixer for youtube that works around some people's disability to properly encode 21:9 (and sometimes, 16:9) videos.",
"content_scripts": [{
"matches": ["*://*/*"],
"js": [
"js/dep/jquery-3.1.1.js",
"js/dep/chrome/chrome-extension-async.js",
"js/run/GlobalVars.js",
"js/lib/BrowserDetect.js",
"js/lib/StorageManager.js",
"js/lib/Comms.js",
"js/conf/Debug.js",
"js/conf/Settings.js",
"js/conf/SitesConf.js",
"js/conf/Status.js",
"js/lib/PlayerDetect.js",
"js/modules/PageInfo.js",
"js/modules/DebugCanvas.js",
"js/modules/ArDetect.js",
"js/modules/Resizer.js",
"js/conf/Keybinds.js",
"js/uw.js" ],
"all_frames": true
}],
"background": {
"scripts": [
"js/dep/jquery-3.1.1.js",
"js/dep/chrome/chrome-extension-async.js",
"js/lib/BrowserDetect.js",
"js/lib/StorageManager.js",
"js/lib/Comms.js",
"js/conf/Debug.js",
"js/conf/ExtensionConf.js",
"js/conf/Settings.js",
"js/conf/SitesConf.js",
"js/conf/Status.js",
"js/conf/Keybinds.js",
"js/uw-bg.js"
]
},
"permissions": [
"tabs", "storage", "activeTab", "<all_urls>", "webNavigation"
],
"browser_action": {
"default_icon": "res/icons/uw-32.png",
"default_popup": "res/popup/popup.html",
"default_title": "Ultrawidify"
},
"web_accessible_resources": [
"js/*",
"res/fonts/*",
"res/css/*",
"res/img/ytplayer-icons/zoom.png",
"res/img/ytplayer-icons/unzoom.png",
"res/img/ytplayer-icons/fitw.png",
"res/img/ytplayer-icons/fith.png",
"res/img/ytplayer-icons/reset.png",
"res/img/ytplayer-icons/settings.png",
"res/img/settings/about-bg.png"
]
}

22206
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

88
package.json Normal file
View File

@ -0,0 +1,88 @@
{
"name": "ultrawidify",
"version": "6.3.998",
"description": "Aspect ratio fixer for youtube and other sites, with automatic aspect ratio detection. Supports ultrawide and other ratios.",
"author": "Tamius Han <tamius.han@gmail.com>",
"scripts": {
"build": "npm run pre-build; cross-env NODE_ENV=production BROWSER=firefox CHANNEL=stable webpack",
"build-all": "bash ./scripts/build-all.sh",
"build-chrome": "cross-env NODE_ENV=production BROWSER=chrome CHANNEL=stable webpack",
"build-chrome:dev": "cross-env NODE_ENV=development BROWSER=chrome webpack",
"build-edge": "cross-env NODE_ENV=production BROWSER=edge CHANNEL=stable webpack",
"build-nightly": "cross-env NODE_ENV=development BROWSER=firefox CHANNEL=nightly webpack",
"build-nightly-chrome": "cross-env NODE_ENV=development BROWSER=chrome CHANNEL=nightly webpack",
"build-testing": "cross-env NODE_ENV=development BROWSER=firefox CHANNEL=testing webpack",
"build-testing-chrome": "cross-env NODE_ENV=development BROWSER=chrome CHANNEL=testing webpack",
"build-zip": "node scripts/build-zip.js",
"build:dev": "webpack",
"dev": "cross-env NODE_ENV=development CHANNEL=dev concurrently \"cross-env BROWSER=firefox npm run build:dev -- --watch\" \"cross-env BROWSER=chrome npm run build:dev -- --watch\" \"cross-env BROWSER=edge npm run build:dev -- --watch\"",
"dev:windows": "cross-env NODE_ENV=development CHANNEL=dev concurrently \"cross-env BROWSER=firefox npm run build:dev -- -w --watch-poll\" \"cross-env BROWSER=chrome npm run build:dev -- -w --watch-poll\" \"cross-env BROWSER=edge npm run build:dev -- -w --watch-poll\"",
"dev-ff": "rm -rf ./dist-ff && cross-env NODE_ENV=development CHANNEL=dev BROWSER=firefox npm run build:dev -- --watch",
"dev-chrome": "rm -rf ./dist-chrome && cross-env NODE_ENV=development CHANNEL=dev BROWSER=chrome npm run build:dev -- --watch",
"dev-edge": "rm -rf ./dist-edge && cross-env NODE_ENV=development CHANNEL=dev BROWSER=edge npm run build:dev -- --watch",
"pre-build": "rm -rf ./dist-ff; rm -rf ./dist-chrome; rm -rf ./dist-edge; rm -rf ./node_modules; npm ci",
"start": "npm run dev",
"start:windows": "npm run dev:windows"
},
"dependencies": {
"@babel/plugin-proposal-class-properties": "^7.18.6",
"@mdi/font": "^7.4.47",
"@mdi/js": "^7.4.47",
"@types/resize-observer-browser": "^0.1.11",
"concurrently": "^9.2.1",
"fs-extra": "^11.3.2",
"gl-matrix": "^3.4.4",
"json-cyclic": "1.0.2",
"json-difference": "^1.16.1",
"lodash": "^4.17.21",
"mdi-vue": "^3.0.13",
"typescript": "^5.9.3",
"vanilla-jsoneditor": "^3.10.0",
"vue": "^3.5.25",
"vue-style-loader": "^4.1.3",
"vuex": "^4.1.0",
"vuex-webextensions": "^1.3.3",
"webextension-polyfill": "^0.12.0"
},
"devDependencies": {
"@babel/core": "^7.28.5",
"@babel/preset-env": "^7.28.5",
"@tailwindcss/postcss": "^4.1.17",
"@types/chrome": "0.1.31",
"@types/core-js": "^2.5.8",
"@types/es6-promise": "^3.3.2",
"@types/firefox": "0.0.34",
"@types/lodash": "^4.17.21",
"@types/node": "^24.10.1",
"@vue/cli": "^5.0.9",
"@vue/cli-plugin-typescript": "^5.0.9",
"@vue/compiler-sfc": "^3.5.25",
"archiver": "^7.0.1",
"babel-loader": "^10.0.0",
"babel-preset-es2020": "^1.0.2",
"copy-webpack-plugin": "^13.0.1",
"cross-env": "^10.1.0",
"css-loader": "^7.1.2",
"ejs": "^3.1.10",
"file-loader": "^6.2.0",
"mini-css-extract-plugin": "^2.9.4",
"postcss": "^8.5.6",
"postcss-import": "^16.1.1",
"postcss-nested": "^7.0.2",
"postcss-preset-env": "^10.4.0",
"postcss-strip-inline-comments": "^0.1.5",
"raw-loader": "^4.0.2",
"resolve-url-loader": "^5.0.0",
"tailwindcss": "^4.1.17",
"ts-loader": "^9.5.4",
"tsconfig-paths": "^4.2.0",
"vue-cli-plugin-vue-next": "~0.1.4",
"vue-loader": "^17.4.2",
"vue-tsc": "^3.1.5",
"web-ext-types": "^3.2.1",
"webpack": "^5.103.0",
"webpack-cli": "^6.0.1",
"webpack-shell-plugin": "^0.5.0",
"webpack-shell-plugin-next": "^2.3.3"
}
}

10
paths.config.js Normal file
View File

@ -0,0 +1,10 @@
const path = require('path')
module.exports = {
'@src': path.resolve(__dirname, 'src'),
'@ui': path.resolve(__dirname, 'src/ui'),
'@components': path.resolve(__dirname, 'src/ui/components'),
'@res': path.resolve(__dirname, 'src/ui/res'),
'@': path.resolve(__dirname, 'src'),
};

24
postcss.config.js Normal file
View File

@ -0,0 +1,24 @@
const path = require('path');
const aliases = require('./paths.config');
module.exports = {
plugins: [
require('postcss-import')({
resolve(id) {
for (const alias in aliases) {
if (id === alias || id.startsWith(alias + '/')) {
return path.resolve(
aliases[alias],
id.slice(alias.length + 1)
)
}
}
return id
},
}),
require('@tailwindcss/postcss'),
require('postcss-nested'),
require('autoprefixer'),
],
};

View File

@ -1,29 +0,0 @@
@font-face {
font-family: 'overpass-mono';
src: url('../../fonts/overpass-mono-webfont/overpass-mono-light.woff2') format('woff2');
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'overpass-mono';
src: url('../../fonts/overpass-mono-webfont/overpass-mono-regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'overpass-mono';
src: url('../../fonts/overpass-mono-webfont/overpass-mono-semibold.woff2') format('woff2');
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: 'overpass-mono';
src: url('../../fonts/overpass-mono-webfont/overpass-mono-bold.woff2') format('woff2');
font-weight: 600;
font-style: normal;
}

View File

@ -1,125 +0,0 @@
@font-face {
font-family: 'overpass';
src: url('../../fonts/overpass-webfont/overpass-thin.woff2') format('woff2'); /* Super Modern Browsers */
font-weight: 200;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('../../fonts/overpass-webfont/overpass-thin-italic.woff2') format('woff2');
font-weight: 200;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('../../fonts/overpass-webfont/overpass-extralight.woff2') format('woff2');
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('../../fonts/overpass-webfont/overpass-extralight-italic.woff2') format('woff2');
font-weight: 300;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('../../fonts/overpass-webfont/overpass-light.woff2') format('woff2');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('../../fonts/overpass-webfont/overpass-light-italic.woff2') format('woff2');
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('../../fonts/overpass-webfont/overpass-regular.woff2') format('woff2');
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('../../fonts/overpass-webfont/overpass-italic.woff2') format('woff2');
font-weight: 500;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('../../fonts/overpass-webfont/overpass-semibold.woff2') format('woff2');
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('../../fonts/overpass-webfont/overpass-semibold-italic.woff2') format('woff2');
font-weight: 600;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('../../fonts/overpass-webfont/overpass-bold.woff2') format('woff2');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('../../fonts/overpass-webfont/overpass-bold-italic.woff2') format('woff2');
font-weight: 700;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('../../fonts/overpass-webfont/overpass-extrabold.woff2') format('woff2');
font-weight: 800;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('../../fonts/overpass-webfont/overpass-extrabold-italic.woff2') format('woff2');
font-weight: 800;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('../../fonts/overpass-webfont/overpass-heavy.woff2') format('woff2');
font-weight: 900;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('../../fonts/overpass-webfont/overpass-heavy-italic.woff2') format('woff2');
font-weight: 900;
font-style: italic;
}

View File

@ -1,57 +0,0 @@
@import url('https://fonts.googleapis.com/css?family=Oxygen:300,400&subset=latin-ext');
.show{
display: block !important;
}
.uw_hide{
display: none !important;
}
.uw_submenu{
display: none;
position: absolute;
background-color: rgba(0,0,0,0.66);
}
/*
.uw-setmenu{
padding-left: 2em !important;
padding-right: 2em !important;
}*/
.uw_submenu_bottom0{
bottom: 0px;
}
.display_relative{
display: relative;
}
.uw-setmenu-item{
padding-right: 2em !important;
padding-left: 2em !important;
}
.common_anchor {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
.uw_button{
display: inline-block;
/* height: 100% !important; */
background-size: 75% 75%;
background-repeat: no-repeat;
background-position: center center;
}
.uw_ui_anchor{
display: inline-block;
}
#uw_ui_anchor{
display: inline-block;
}

View File

@ -1,39 +0,0 @@
.uw-button{
display: inline-block;
/* height: 100% !important; */
background-size: 75% 75%;
background-repeat: no-repeat;
background-position: center center;
}
.uw-button-row {
display: inline-block !important;
position: absolute !important;
top: 0 !important;
right: 0 !important;
width: 99% !important;
height: 100% !important;
z-index: 1337 !important;
text-align: right;
}
.uw-button:hover{
background-color: rgba(192,0,0,0.66);
}
.uw-setmenu{
display: none;
position: absolute;
background-color: rgba(0,0,0,0.66);
right: 0px;
}
.uw-setmenu-item{
display: flex;
align-items: center;
font-family: "Oxygen";
color: #ffffff !important;
width: 90%;
padding-left: 10%;
}
.uw-setmenu-item:hover{
background-color: rgba(192,0,0,0.66);
}

View File

@ -1 +0,0 @@
/* yeah this is also a placeholder file, this time for 'settings' page */

View File

@ -1,28 +0,0 @@
.uw-button{
display: inline-block;
height: 100% !important;
background-size: 75% 75%;
background-repeat: no-repeat;
background-position: center center;
}
.uw-button:hover{
background-color: rgba(192,0,0,0.66);
}
.uw-setmenu{
display: none;
position: absolute;
background-color: rgba(0,0,0,0.66);
right: 0px;
}
.uw-setmenu-item{
display: flex;
align-items: center;
font-family: "Oxygen";
color: #ffffff !important;
}
.uw-setmenu-item:hover{
background-color: rgba(192,0,0,0.66);
}
.uw_top{
z-index: 1337;
}

View File

@ -1,50 +0,0 @@
## License
Copyright 2015 Red Hat, Inc.,
This Font Software is dual licensed and available under the SIL Open Font License, Version 1.1. and also the LGPL 2.1
The Open Font license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
The GNU LGPL can be found at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html
#### SIL OPEN FONT LICENSE
Version 1.1 - 26 February 2007
---
#### PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
#### DEFINITIONS
“Font Software” refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
“Reserved Font Name” refers to any names specified as such after the copyright statement(s).
“Original Version” refers to the collection of Font Software components as distributed by the Copyright Holder(s).
“Modified Version” refers to any derivative made by adding to, deleting, or substituting—in part or in whole—any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
“Author” refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
#### PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
#### TERMINATION
This license becomes null and void if any of the above conditions are not met.
#### DISCLAIMER
THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.

View File

@ -1,51 +0,0 @@
@font-face {
font-family: 'overpass-mono';
src: url('overpass-mono-light.eot');
src: url('overpass-mono-light.eot?#iefix') format('embedded-opentype'),
url('overpass-mono-light.woff2') format('woff2'),
url('overpass-mono-light.woff') format('woff'),
url('overpass-mono-light.ttf') format('truetype');
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'overpass-mono';
src: url('overpass-mono-regular.eot');
src: url('overpass-mono-regular.eot?#iefix') format('embedded-opentype'),
url('overpass-mono-regular.woff2') format('woff2'),
url('overpass-mono-regular.woff') format('woff'),
url('overpass-mono-regular.ttf') format('truetype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'overpass-mono';
src: url('overpass-mono-semibold.eot');
src: url('overpass-mono-semibold.eot?#iefix') format('embedded-opentype'),
url('overpass-mono-semibold.woff2') format('woff2'),
url('overpass-mono-semibold.woff') format('woff'),
url('overpass-mono-semibold.ttf') format('truetype');
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: 'overpass-mono';
src: url('overpass-mono-bold.eot');
src: url('overpass-mono-bold.eot?#iefix') format('embedded-opentype'),
url('overpass-mono-bold.woff2') format('woff2'),
url('overpass-mono-bold.woff') format('woff'),
url('overpass-mono-bold.ttf') format('truetype');
font-weight: 600;
font-style: normal;
}

View File

@ -1,189 +0,0 @@
@font-face {
font-family: 'overpass';
src: url('overpass-thin.eot'); /* IE9 Compat Modes */
src: url('overpass-thin.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('overpass-thin.woff2') format('woff2'), /* Super Modern Browsers */
url('overpass-thin.woff') format('woff'), /* Pretty Modern Browsers */
url('overpass-thin.ttf') format('truetype'); /* Safari, Android, iOS */
font-weight: 200;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('overpass-thin-italic.eot');
src: url('overpass-thin-italic.eot?#iefix') format('embedded-opentype'),
url('overpass-thin-italic.woff2') format('woff2'),
url('overpass-thin-italic.woff') format('woff'),
url('overpass-thin-italic.ttf') format('truetype');
font-weight: 200;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('overpass-extralight.eot');
src: url('overpass-extralight.eot?#iefix') format('embedded-opentype'),
url('overpass-extralight.woff2') format('woff2'),
url('overpass-extralight.woff') format('woff'),
url('overpass-extralight.ttf') format('truetype');
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('overpass-extralight-italic.eot');
src: url('overpass-extralight-italic.eot?#iefix') format('embedded-opentype'),
url('overpass-extralight-italic.woff2') format('woff2'),
url('overpass-extralight-italic.woff') format('woff'),
url('overpass-extralight-italic.ttf') format('truetype');
font-weight: 300;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('overpass-light.eot');
src: url('overpass-light.eot?#iefix') format('embedded-opentype'),
url('overpass-light.woff2') format('woff2'),
url('overpass-light.woff') format('woff'),
url('overpass-light.ttf') format('truetype');
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('overpass-light-italic.eot');
src: url('overpass-light-italic.eot?#iefix') format('embedded-opentype'),
url('overpass-light-italic.woff2') format('woff2'),
url('overpass-light-italic.woff') format('woff'),
url('overpass-light-italic.ttf') format('truetype');
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('overpass-regular.eot');
src: url('overpass-regular.eot?#iefix') format('embedded-opentype'),
url('overpass-regular.woff2') format('woff2'),
url('overpass-regular.woff') format('woff'),
url('overpass-regular.ttf') format('truetype');
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('overpass-italic.eot');
src: url('overpass-italic.eot?#iefix') format('embedded-opentype'),
url('overpass-italic.woff2') format('woff2'),
url('overpass-italic.woff') format('woff'),
url('overpass-italic.ttf') format('truetype');
font-weight: 500;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('overpass-semibold.eot');
src: url('overpass-semibold.eot?#iefix') format('embedded-opentype'),
url('overpass-semibold.woff2') format('woff2'),
url('overpass-semibold.woff') format('woff'),
url('overpass-semibold.ttf') format('truetype');
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('overpass-semibold-italic.eot');
src: url('overpass-semibold-italic.eot?#iefix') format('embedded-opentype'),
url('overpass-semibold-italic.woff2') format('woff2'),
url('overpass-semibold-italic.woff') format('woff'),
url('overpass-semibold-italic.ttf') format('truetype');
font-weight: 600;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('overpass-bold.eot');
src: url('overpass-bold.eot?#iefix') format('embedded-opentype'),
url('overpass-bold.woff2') format('woff2'),
url('overpass-bold.woff') format('woff'),
url('overpass-bold.ttf') format('truetype');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('overpass-bold-italic.eot');
src: url('overpass-bold-italic.eot?#iefix') format('embedded-opentype'),
url('overpass-bold-italic.woff2') format('woff2'),
url('overpass-bold-italic.woff') format('woff'),
url('overpass-bold-italic.ttf') format('truetype');
font-weight: 700;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('overpass-extrabold.eot');
src: url('overpass-extrabold.eot?#iefix') format('embedded-opentype'),
url('overpass-extrabold.woff2') format('woff2'),
url('overpass-extrabold.woff') format('woff'),
url('overpass-extrabold.ttf') format('truetype');
font-weight: 800;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('overpass-extrabold-italic.eot');
src: url('overpass-extrabold-italic.eot?#iefix') format('embedded-opentype'),
url('overpass-extrabold-italic.woff2') format('woff2'),
url('overpass-extrabold-italic.woff') format('woff'),
url('overpass-extrabold-italic.ttf') format('truetype');
font-weight: 800;
font-style: italic;
}
@font-face {
font-family: 'overpass';
src: url('overpass-heavy.eot');
src: url('overpass-heavy.eot?#iefix') format('embedded-opentype'),
url('overpass-heavy.woff2') format('woff2'),
url('overpass-heavy.woff') format('woff'),
url('overpass-heavy.ttf') format('truetype');
font-weight: 900;
font-style: normal;
}
@font-face {
font-family: 'overpass';
src: url('overpass-heavy-italic.eot');
src: url('overpass-heavy-italic.eot?#iefix') format('embedded-opentype'),
url('overpass-heavy-italic.woff2') format('woff2'),
url('overpass-heavy-italic.woff') format('woff'),
url('overpass-heavy-italic.ttf') format('truetype');
font-weight: 900;
font-style: italic;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 783 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Some files were not shown because too many files have changed in this diff Show More