Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(YouTube - Alternative Thumbnails): Add option to use DeArrow #534

Merged
merged 39 commits into from Dec 11, 2023

Conversation

shadow578
Copy link
Contributor

@shadow578 shadow578 commented Dec 5, 2023

adds the option to use thumbnails provided by DeArrow to the existing alternative thumbnails patch

requires https://github.com/ReVanced/revanced-patches/pull/3378

@oSumAtrIX oSumAtrIX changed the title feat(YouTube): add DeArrow option for Alternative Thumbnails Patch feat(YouTube - Alternative Thumbnails): Add option to use DeArrow Dec 5, 2023
@oSumAtrIX oSumAtrIX changed the base branch from main to dev December 5, 2023 17:39
@oSumAtrIX
Copy link
Member

@LisoUseInAIKyrios I have moved lines of code for review; look into the commits separately for simplicity

Copy link
Member

@oSumAtrIX oSumAtrIX left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The original reason why DeArrow was not used for this patch, was that the patch blocks the UI thread. This means, if the API times out, the UI will be blocked for the timeout duration. Does this PR consider this in any way?

@LisoUseInAIKyrios
Copy link
Contributor

LisoUseInAIKyrios commented Dec 5, 2023

This patch actually does not block the UI, everything happens off the main thread. The only reason DeArrow was not added was because nobody took the time to finish adding it until now.

@LisoUseInAIKyrios
Copy link
Contributor

It would be fantastic if DeArrow added a parameter to only provide user selected thumbnails. But that's something DeArrow would need to implement.

@LisoUseInAIKyrios
Copy link
Contributor

LisoUseInAIKyrios commented Dec 5, 2023

Because the settings menu is not dynamically changed the same way SponsorBlock or RYD is, the settings menu for this is now a bit confusing as to what the end user will get.

This was the largest reason I put off adding DeArrow to the first iteration of this.

I think this might be better if it had it's own settings UI fragment, as then it can give a single 'about' entry and explain what the end result is for the user based on the current setting values. It can also disable settings that don't apply (such as fast still images, when the currently selected settings do not use still images).

Edit: Added an 'about' preference that is updated based on the current settings.

- Fix validation of API url.
… not work correctly because YouTube includes many device and user parameters in the request headers. Committing this code for any future reference.
…This may not work correctly because YouTube includes many device and user parameters in the request headers. Committing this code for any future reference."

This reverts commit bd51f08.
@LisoUseInAIKyrios
Copy link
Contributor

@oSumAtrIX When you have time look this over and add your review. Otherwise I think it's ready to merge.

@oSumAtrIX
Copy link
Member

Currently, the submenu is very rich in content:
image

How about moving DeArrow and VideoStills each in a submenu and keeping the "Thumbnails in use" text preference where it is now? You'd navigate to the submenus to enable or disable DeArrow and see its respective settings and About. Alternatively, the toggles can be kept in the current menu, whereas a submenu is made for DeArrow and Video stills called "DeArrow settings" and "Video stills settings."

@LisoUseInAIKyrios
Copy link
Contributor

If they're moved to a submenu, then the base menu would be only a status with more menus under that.

It's already a long navigation journey to reach the menu (every time I scroll thru the enormous layout menu to reach the thumbnail menu i can almost imagine Lord of the Rings memes of Frodo's journey)

I agree the two sections can be more segregated. I think two PreferenceCategorys on the same screen might work to visually separate them. I'll give this a try and see how it looks.

@oSumAtrIX
Copy link
Member

Currently, categories do not exist as components in the SettingsPatch. They would be highly welcome as they will be useful to separate settings sections. The SettingsPatch would need a new interface, for example, SettingsComponent, which Preference and Category could implement. A category can then have additional settings components as its children.

@oSumAtrIX
Copy link
Member

Here is the diff in case a submenu fits more into this PR

Open>
Subject: [PATCH] feat: Simplify settings screen
---
Index: src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt
--- a/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt	(revision dd3e72a0f6a172b3ec808a38bf0f72f322139f22)
+++ b/src/main/kotlin/app/revanced/patches/youtube/layout/thumbnails/AlternativeThumbnailsPatch.kt	(revision cc4a0eabaec5270f5b617780d617473c359750e0)
@@ -117,102 +117,144 @@
                         null, // Summary is dynamically updated based on the current settings.
                         tag = "app.revanced.integrations.settingsmenu.AlternativeThumbnailsStatusPreference"
                     ),
-                    SwitchPreference(
-                        "revanced_alt_thumbnail_dearrow",
-                        StringResource("revanced_alt_thumbnail_dearrow_title", "Enable DeArrow"),
-                        StringResource("revanced_alt_thumbnail_dearrow_summary_on", "Using DeArrow"),
-                        StringResource("revanced_alt_thumbnail_dearrow_summary_off", "Not using DeArrow")
-                    ),
-                    SwitchPreference(
-                        "revanced_alt_thumbnail_dearrow_connection_toast",
-                        StringResource("revanced_alt_thumbnail_dearrow_connection_toast_title", "Show toast if API is not available"),
-                        StringResource("revanced_alt_thumbnail_dearrow_connection_toast_summary_on", "Toast shown if DeArrow is not available"),
-                        StringResource("revanced_alt_thumbnail_dearrow_connection_toast_summary_off", "Toast not shown if DeArrow is not available")
-                    ),
-                    TextPreference(
-                        "revanced_alt_thumbnail_dearrow_api_url",
-                        StringResource(
-                            "revanced_alt_thumbnail_dearrow_api_url_title",
-                            "DeArrow API endpoint"
-                        ),
-                        StringResource(
-                            "revanced_alt_thumbnail_dearrow_api_url_summary",
-                            "The URL of the DeArrow thumbnail cache endpoint. " +
-                                    "Do not change this unless you know what you\\\'re doing"
-                        ),
-                    ),
-                    NonInteractivePreference(
-                        StringResource(
-                            "revanced_alt_thumbnail_dearrow_about_title",
-                            "About DeArrow"
-                        ),
-                        StringResource(
-                            "revanced_alt_thumbnail_dearrow_about_summary",
-                            "DeArrow provides crowd sourced thumbnails for YouTube videos. " +
+                    PreferenceScreen(
+                        "revanced_alt_thumbnails_dearrow_preference_screen",
+                        StringResource("revanced_alt_thumbnails_dearrow_preference_screen_title", "DeArrow"),
+                        listOf(
+                            SwitchPreference(
+                                "revanced_alt_thumbnail_dearrow",
+                                StringResource("revanced_alt_thumbnail_dearrow_title", "Enable DeArrow"),
+                                StringResource("revanced_alt_thumbnail_dearrow_summary_on", "Using DeArrow"),
+                                StringResource("revanced_alt_thumbnail_dearrow_summary_off", "Not using DeArrow")
+                            ),
+                            SwitchPreference(
+                                "revanced_alt_thumbnail_dearrow_connection_toast",
+                                StringResource(
+                                    "revanced_alt_thumbnail_dearrow_connection_toast_title",
+                                    "Show toast if API is not available"
+                                ),
+                                StringResource(
+                                    "revanced_alt_thumbnail_dearrow_connection_toast_summary_on",
+                                    "Toast shown if DeArrow is not available"
+                                ),
+                                StringResource(
+                                    "revanced_alt_thumbnail_dearrow_connection_toast_summary_off",
+                                    "Toast not shown if DeArrow is not available"
+                                )
+                            ),
+                            TextPreference(
+                                "revanced_alt_thumbnail_dearrow_api_url",
+                                StringResource(
+                                    "revanced_alt_thumbnail_dearrow_api_url_title",
+                                    "DeArrow API endpoint"
+                                ),
+                                StringResource(
+                                    "revanced_alt_thumbnail_dearrow_api_url_summary",
+                                    "The URL of the DeArrow thumbnail cache endpoint. " +
+                                            "Do not change this unless you know what you\\\'re doing"
+                                ),
+                            ),
+                            NonInteractivePreference(
+                                StringResource(
+                                    "revanced_alt_thumbnail_dearrow_about_title",
+                                    "About DeArrow"
+                                ),
+                                StringResource(
+                                    "revanced_alt_thumbnail_dearrow_about_summary",
                                     "These thumbnails are often more relevant than those provided by YouTube. " +
-                                    "If enabled, video URLs will be sent to the API server and no other data is sent."
-                                    + "\\n\\nTap here to learn more about DeArrow"
-                        ),
-                        // Custom about preference with link to the DeArrow website.
-                        tag = "app.revanced.integrations.settingsmenu.AlternativeThumbnailsAboutDeArrowPreference",
-                        selectable = true
+                                            "If enabled, video URLs will be sent to the API server and no other data is sent."
+                                            + "\\n\\nTap here to learn more about DeArrow"
+                                ),
+                                // Custom about preference with link to the DeArrow website.
+                                tag = "app.revanced.integrations.settingsmenu.AlternativeThumbnailsAboutDeArrowPreference",
+                                selectable = true
+                            )
+                        ),
+                        StringResource(
+                            "revanced_alt_thumbnails_dearrow_preference_screen_summary",
+                            "DeArrow provides crowd sourced thumbnails for YouTube videos"
+                        )
                     ),
-                    SwitchPreference(
-                        "revanced_alt_thumbnail_stills",
-                        StringResource("revanced_alt_thumbnail_stills_title", "Enable still video captures"),
-                        StringResource("revanced_alt_thumbnail_stills_summary_on", "Using YouTube video still captures"),
-                        StringResource("revanced_alt_thumbnail_stills_summary_off", "Not using YouTube video still captures")
-                    ),
-                    ListPreference(
-                        "revanced_alt_thumbnail_stills_time",
-                        StringResource("revanced_alt_thumbnail_stills_time_title", "Video time to take the still from"),
-                        ArrayResource(
-                            "revanced_alt_thumbnail_type_entries",
-                            listOf(
-                                StringResource("revanced_alt_thumbnail_stills_time_entry_1", "Beginning of video"),
-                                StringResource("revanced_alt_thumbnail_stills_time_entry_2", "Middle of video"),
-                                StringResource("revanced_alt_thumbnail_stills_time_entry_3", "End of video"),
-                            )
-                        ),
-                        ArrayResource(
-                            "revanced_alt_thumbnail_stills_time_entry_values",
-                            listOf(
-                                StringResource("revanced_alt_thumbnail_stills_time_entry_value_1", "1"),
-                                StringResource("revanced_alt_thumbnail_stills_time_entry_value_2", "2"),
-                                StringResource("revanced_alt_thumbnail_stills_time_entry_value_3", "3"),
-                            )
-                        )
-                    ),
-                    SwitchPreference(
-                        "revanced_alt_thumbnail_stills_fast",
-                        StringResource(
-                            "revanced_alt_thumbnail_stills_fast_title",
-                            "Use fast still captures"
-                        ),
-                        StringResource(
-                            "revanced_alt_thumbnail_stills_fast_summary_on",
-                            "Using medium quality still captures. " +
-                                    "Thumbnails will load faster, but live streams, unreleased, " +
-                                    "or very old videos may show blank thumbnails"
-                        ),
-                        StringResource(
-                            "revanced_alt_thumbnail_stills_fast_summary_off",
-                            "Using high quality still captures"
-                        )
-                    ),
-                    NonInteractivePreference(
-                        StringResource(
-                            "revanced_alt_thumbnail_stills_about_title",
-                            "About still video captures"
-                        ),
-                        StringResource(
-                            "revanced_alt_thumbnail_stills_about_summary",
-                            "Still captures are taken from the beginning/middle/end of each video. " +
+                    PreferenceScreen(
+                        "revanced_alt_thumbnails_stills_preference_screen",
+                        StringResource(
+                            "revanced_alt_thumbnails_stills_preference_screen_title",
+                            "Still video captures"
+                        ),
+                        listOf(
+                            SwitchPreference(
+                                "revanced_alt_thumbnail_stills",
+                                StringResource("revanced_alt_thumbnail_stills_title", "Enable still video captures"),
+                                StringResource(
+                                    "revanced_alt_thumbnail_stills_summary_on",
+                                    "Using YouTube video still captures"
+                                ),
+                                StringResource(
+                                    "revanced_alt_thumbnail_stills_summary_off",
+                                    "Not using YouTube video still captures"
+                                )
+                            ),
+                            ListPreference(
+                                "revanced_alt_thumbnail_stills_time",
+                                StringResource(
+                                    "revanced_alt_thumbnail_stills_time_title",
+                                    "Video time to take the still from"
+                                ),
+                                ArrayResource(
+                                    "revanced_alt_thumbnail_type_entries",
+                                    listOf(
+                                        StringResource(
+                                            "revanced_alt_thumbnail_stills_time_entry_1",
+                                            "Beginning of video"
+                                        ),
+                                        StringResource("revanced_alt_thumbnail_stills_time_entry_2", "Middle of video"),
+                                        StringResource("revanced_alt_thumbnail_stills_time_entry_3", "End of video"),
+                                    )
+                                ),
+                                ArrayResource(
+                                    "revanced_alt_thumbnail_stills_time_entry_values",
+                                    listOf(
+                                        StringResource("revanced_alt_thumbnail_stills_time_entry_value_1", "1"),
+                                        StringResource("revanced_alt_thumbnail_stills_time_entry_value_2", "2"),
+                                        StringResource("revanced_alt_thumbnail_stills_time_entry_value_3", "3"),
+                                    )
+                                )
+                            ),
+                            SwitchPreference(
+                                "revanced_alt_thumbnail_stills_fast",
+                                StringResource(
+                                    "revanced_alt_thumbnail_stills_fast_title",
+                                    "Use fast still captures"
+                                ),
+                                StringResource(
+                                    "revanced_alt_thumbnail_stills_fast_summary_on",
+                                    "Using medium quality still captures. " +
+                                            "Thumbnails will load faster, but live streams, unreleased, " +
+                                            "or very old videos may show blank thumbnails"
+                                ),
+                                StringResource(
+                                    "revanced_alt_thumbnail_stills_fast_summary_off",
+                                    "Using high quality still captures"
+                                )
+                            ),
+                            NonInteractivePreference(
+                                StringResource(
+                                    "revanced_alt_thumbnail_stills_about_title",
+                                    "About still video captures"
+                                ),
+                                StringResource(
+                                    "revanced_alt_thumbnail_stills_about_summary",
                                     "These images are built into YouTube and no external API is used"
-                        ),
-                        // Restore the preference dividers to keep it from looking weird.
-                        selectable = true
-                    )
+                                ),
+                                // Restore the preference dividers to keep it from looking weird.
+                                selectable = true
+                            )
+                        ),
+                        StringResource(
+                            "revanced_alt_thumbnails_stills_preference_screen_summary",
+                            "Still captures are taken from the beginning/middle/end of each video"
+                        )
+                    ),
                 ),
                 StringResource("revanced_alt_thumbnail_preference_screen_summary", "Video thumbnail settings")
             )

@LisoUseInAIKyrios
Copy link
Contributor

In that case settings categories can be a different PR.

@LisoUseInAIKyrios LisoUseInAIKyrios merged commit c4ee6ca into ReVanced:dev Dec 11, 2023
2 checks passed
revanced-bot pushed a commit that referenced this pull request Dec 11, 2023
# [1.0.0-dev.9](v1.0.0-dev.8...v1.0.0-dev.9) (2023-12-11)

### Features

* **YouTube - Alternative Thumbnails:** Add option to use DeArrow ([#534](#534)) ([c4ee6ca](c4ee6ca))
revanced-bot pushed a commit that referenced this pull request Dec 12, 2023
# [1.0.0](v0.125.0...v1.0.0) (2023-12-12)

### Bug Fixes

* **YouTube - Announcements:** Don't show error toast if there is no internet connection ([#537](#537)) ([0ce92c2](0ce92c2))
* **YouTube - Client spoof:** Do not break clips ([f9102fa](f9102fa))
* **YouTube - Minimized playback:** Fix PIP incorrectly shown for some Shorts playback ([#533](#533)) ([fb433da](fb433da))
* **YouTube - Return YouTube Dislike:** Fix dislikes sometimes not showing for non English language ([5d4c8b0](5d4c8b0))
* **YouTube - Return YouTube Dislike:** Prevent the first Short opened from freezing the UI ([#532](#532)) ([0bb8669](0bb8669))
* **YouTube - Return YouTube Dislike:** Wait until fetch is complete before allowing the first Short to start playback ([#538](#538)) ([1c9c51c](1c9c51c))
* **YouTube - SponsorBlock:** Allow autoplay when skipping to the end of the video ([3d660e1](3d660e1))
* **YouTube - SponsorBlock:** Prevent autoplay from stopping to work ([f4e2d56](f4e2d56))
* **YouTube - Spoof signature:** Wait until storyboard fetch is done ([#535](#535)) ([92e8619](92e8619))

### Features

* Allow choosing the vendor of GmsCore via patch options ([#529](#529)) ([fba7181](fba7181))
* **Tiktok:** Bump compatibility to `32.5.3` ([#536](#536)) ([10a1e16](10a1e16))
* **YouTube - Alternative Thumbnails:** Add option to use DeArrow ([#534](#534)) ([c4ee6ca](c4ee6ca))
* **YouTube:** Add `Change start page` patch ([792dc0c](792dc0c))

### BREAKING CHANGES

* The class `MicroGSupport` has been renamed to `GmsCoreSupport`
E85Addict pushed a commit to E85Addict/revanced-integrations that referenced this pull request Dec 18, 2023
# [1.0.0](v0.125.0...v1.0.0) (2023-12-18)

### Bug Fixes

* **YouTube - Announcements:** Don't show error toast if there is no internet connection ([ReVanced#537](https://github.com/E85Addict/revanced-integrations/issues/537)) ([0ce92c2](0ce92c2))
* **YouTube - Client spoof:** Do not break clips ([f9102fa](f9102fa))
* **YouTube - Minimized playback:** Fix PIP incorrectly shown for some Shorts playback ([ReVanced#533](https://github.com/E85Addict/revanced-integrations/issues/533)) ([fb433da](fb433da))
* **YouTube - Return YouTube Dislike:** Fix dislikes sometimes not showing for non English language ([5d4c8b0](5d4c8b0))
* **YouTube - Return YouTube Dislike:** Prevent the first Short opened from freezing the UI ([ReVanced#532](https://github.com/E85Addict/revanced-integrations/issues/532)) ([0bb8669](0bb8669))
* **YouTube - Return YouTube Dislike:** Wait until fetch is complete before allowing the first Short to start playback ([ReVanced#538](https://github.com/E85Addict/revanced-integrations/issues/538)) ([1c9c51c](1c9c51c))
* **YouTube - SponsorBlock:** Allow autoplay when skipping to the end of the video ([3d660e1](3d660e1))
* **YouTube - SponsorBlock:** Prevent autoplay from stopping to work ([f4e2d56](f4e2d56))
* **YouTube - Spoof signature:** Wait until storyboard fetch is done ([ReVanced#535](https://github.com/E85Addict/revanced-integrations/issues/535)) ([92e8619](92e8619))

### Features

* Allow choosing the vendor of GmsCore via patch options ([ReVanced#529](https://github.com/E85Addict/revanced-integrations/issues/529)) ([fba7181](fba7181))
* **Tiktok:** Bump compatibility to `32.5.3` ([ReVanced#536](https://github.com/E85Addict/revanced-integrations/issues/536)) ([10a1e16](10a1e16))
* **YouTube - Alternative Thumbnails:** Add option to use DeArrow ([ReVanced#534](https://github.com/E85Addict/revanced-integrations/issues/534)) ([c4ee6ca](c4ee6ca))
* **YouTube:** Add `Change start page` patch ([792dc0c](792dc0c))

### Performance Improvements

* Add upstream sync ([3e5ce0e](3e5ce0e))

### BREAKING CHANGES

* The class `MicroGSupport` has been renamed to `GmsCoreSupport`
E85Addict pushed a commit to E85Addict/revanced-integrations that referenced this pull request Dec 18, 2023
# [1.0.0](v0.125.0...v1.0.0) (2023-12-18)

### Bug Fixes

* **YouTube - Announcements:** Don't show error toast if there is no internet connection ([ReVanced#537](https://github.com/E85Addict/revanced-integrations/issues/537)) ([0ce92c2](0ce92c2))
* **YouTube - Client spoof:** Do not break clips ([f9102fa](f9102fa))
* **YouTube - Minimized playback:** Fix PIP incorrectly shown for some Shorts playback ([ReVanced#533](https://github.com/E85Addict/revanced-integrations/issues/533)) ([fb433da](fb433da))
* **YouTube - Return YouTube Dislike:** Fix dislikes sometimes not showing for non English language ([5d4c8b0](5d4c8b0))
* **YouTube - Return YouTube Dislike:** Prevent the first Short opened from freezing the UI ([ReVanced#532](https://github.com/E85Addict/revanced-integrations/issues/532)) ([0bb8669](0bb8669))
* **YouTube - Return YouTube Dislike:** Wait until fetch is complete before allowing the first Short to start playback ([ReVanced#538](https://github.com/E85Addict/revanced-integrations/issues/538)) ([1c9c51c](1c9c51c))
* **YouTube - SponsorBlock:** Allow autoplay when skipping to the end of the video ([3d660e1](3d660e1))
* **YouTube - SponsorBlock:** Prevent autoplay from stopping to work ([f4e2d56](f4e2d56))
* **YouTube - Spoof signature:** Wait until storyboard fetch is done ([ReVanced#535](https://github.com/E85Addict/revanced-integrations/issues/535)) ([92e8619](92e8619))

### Features

* Allow choosing the vendor of GmsCore via patch options ([ReVanced#529](https://github.com/E85Addict/revanced-integrations/issues/529)) ([fba7181](fba7181))
* **Tiktok:** Bump compatibility to `32.5.3` ([ReVanced#536](https://github.com/E85Addict/revanced-integrations/issues/536)) ([10a1e16](10a1e16))
* **YouTube - Alternative Thumbnails:** Add option to use DeArrow ([ReVanced#534](https://github.com/E85Addict/revanced-integrations/issues/534)) ([c4ee6ca](c4ee6ca))
* **YouTube:** Add `Change start page` patch ([792dc0c](792dc0c))

### Performance Improvements

* Add upstream sync ([92a76dd](92a76dd))

### BREAKING CHANGES

* The class `MicroGSupport` has been renamed to `GmsCoreSupport`
E85Addict pushed a commit to E85Addict/revanced-integrations that referenced this pull request Dec 18, 2023
# [1.0.0-dev.1](v0.125.0...v1.0.0-dev.1) (2023-12-18)

### Bug Fixes

* **YouTube - Announcements:** Don't show error toast if there is no internet connection ([ReVanced#537](https://github.com/E85Addict/revanced-integrations/issues/537)) ([0ce92c2](0ce92c2))
* **YouTube - Client spoof:** Do not break clips ([f9102fa](f9102fa))
* **YouTube - Minimized playback:** Fix PIP incorrectly shown for some Shorts playback ([ReVanced#533](https://github.com/E85Addict/revanced-integrations/issues/533)) ([fb433da](fb433da))
* **YouTube - Return YouTube Dislike:** Do not prefetch Shorts shelf items on app startup ([697c2aa](697c2aa))
* **YouTube - Return YouTube Dislike:** Fix dislikes sometimes not showing for non English language ([5d4c8b0](5d4c8b0))
* **YouTube - Return YouTube Dislike:** Prevent the first Short opened from freezing the UI ([ReVanced#532](https://github.com/E85Addict/revanced-integrations/issues/532)) ([0bb8669](0bb8669))
* **YouTube - Return YouTube Dislike:** Wait until fetch is complete before allowing the first Short to start playback ([ReVanced#538](https://github.com/E85Addict/revanced-integrations/issues/538)) ([1c9c51c](1c9c51c))
* **YouTube - SponsorBlock:** Allow autoplay when skipping to the end of the video ([3d660e1](3d660e1))
* **YouTube - SponsorBlock:** Export local statistics with saved settings ([ReVanced#542](https://github.com/E85Addict/revanced-integrations/issues/542)) ([0ed8e5a](0ed8e5a))
* **YouTube - SponsorBlock:** Prevent autoplay from stopping to work ([f4e2d56](f4e2d56))
* **YouTube - Spoof signature:** Wait until storyboard fetch is done ([ReVanced#535](https://github.com/E85Addict/revanced-integrations/issues/535)) ([92e8619](92e8619))

### Features

* Allow choosing the vendor of GmsCore via patch options ([ReVanced#529](https://github.com/E85Addict/revanced-integrations/issues/529)) ([fba7181](fba7181))
* **Tiktok - ClearMode:** Remember clearmode settings in between videos ([9a1b81b](9a1b81b))
* **Tiktok - Playback speed:** Remember playback speed ([e60ba56](e60ba56))
* **Tiktok:** Bump compatibility to `32.5.3` ([ReVanced#536](https://github.com/E85Addict/revanced-integrations/issues/536)) ([10a1e16](10a1e16))
* **YouTube - Alternative Thumbnails:** Add option to use DeArrow ([ReVanced#534](https://github.com/E85Addict/revanced-integrations/issues/534)) ([c4ee6ca](c4ee6ca))
* **YouTube:** Add `Change start page` patch ([792dc0c](792dc0c))

### BREAKING CHANGES

* The class `MicroGSupport` has been renamed to `GmsCoreSupport`
E85Addict pushed a commit to E85Addict/revanced-integrations that referenced this pull request Dec 18, 2023
# [1.0.0-dev.1](v0.125.0...v1.0.0-dev.1) (2023-12-18)

### Bug Fixes

* **YouTube - Announcements:** Don't show error toast if there is no internet connection ([ReVanced#537](https://github.com/E85Addict/revanced-integrations/issues/537)) ([0ce92c2](0ce92c2))
* **YouTube - Client spoof:** Do not break clips ([f9102fa](f9102fa))
* **YouTube - Minimized playback:** Fix PIP incorrectly shown for some Shorts playback ([ReVanced#533](https://github.com/E85Addict/revanced-integrations/issues/533)) ([fb433da](fb433da))
* **YouTube - Return YouTube Dislike:** Do not prefetch Shorts shelf items on app startup ([697c2aa](697c2aa))
* **YouTube - Return YouTube Dislike:** Fix dislikes sometimes not showing for non English language ([5d4c8b0](5d4c8b0))
* **YouTube - Return YouTube Dislike:** Prevent the first Short opened from freezing the UI ([ReVanced#532](https://github.com/E85Addict/revanced-integrations/issues/532)) ([0bb8669](0bb8669))
* **YouTube - Return YouTube Dislike:** Wait until fetch is complete before allowing the first Short to start playback ([ReVanced#538](https://github.com/E85Addict/revanced-integrations/issues/538)) ([1c9c51c](1c9c51c))
* **YouTube - SponsorBlock:** Allow autoplay when skipping to the end of the video ([3d660e1](3d660e1))
* **YouTube - SponsorBlock:** Export local statistics with saved settings ([ReVanced#542](https://github.com/E85Addict/revanced-integrations/issues/542)) ([0ed8e5a](0ed8e5a))
* **YouTube - SponsorBlock:** Prevent autoplay from stopping to work ([f4e2d56](f4e2d56))
* **YouTube - Spoof signature:** Wait until storyboard fetch is done ([ReVanced#535](https://github.com/E85Addict/revanced-integrations/issues/535)) ([92e8619](92e8619))

### Features

* Allow choosing the vendor of GmsCore via patch options ([ReVanced#529](https://github.com/E85Addict/revanced-integrations/issues/529)) ([fba7181](fba7181))
* **Tiktok - ClearMode:** Remember clearmode settings in between videos ([9a1b81b](9a1b81b))
* **Tiktok - Playback speed:** Remember playback speed ([e60ba56](e60ba56))
* **Tiktok:** Bump compatibility to `32.5.3` ([ReVanced#536](https://github.com/E85Addict/revanced-integrations/issues/536)) ([10a1e16](10a1e16))
* **YouTube - Alternative Thumbnails:** Add option to use DeArrow ([ReVanced#534](https://github.com/E85Addict/revanced-integrations/issues/534)) ([c4ee6ca](c4ee6ca))
* **YouTube:** Add `Change start page` patch ([792dc0c](792dc0c))

### BREAKING CHANGES

* The class `MicroGSupport` has been renamed to `GmsCoreSupport`
E85Addict pushed a commit to E85Addict/revanced-integrations that referenced this pull request Dec 18, 2023
# [1.0.0](v0.125.0...v1.0.0) (2023-12-18)

### Bug Fixes

* **YouTube - Announcements:** Don't show error toast if there is no internet connection ([ReVanced#537](https://github.com/E85Addict/revanced-integrations/issues/537)) ([0ce92c2](0ce92c2))
* **YouTube - Client spoof:** Do not break clips ([f9102fa](f9102fa))
* **YouTube - Minimized playback:** Fix PIP incorrectly shown for some Shorts playback ([ReVanced#533](https://github.com/E85Addict/revanced-integrations/issues/533)) ([fb433da](fb433da))
* **YouTube - Return YouTube Dislike:** Fix dislikes sometimes not showing for non English language ([5d4c8b0](5d4c8b0))
* **YouTube - Return YouTube Dislike:** Prevent the first Short opened from freezing the UI ([ReVanced#532](https://github.com/E85Addict/revanced-integrations/issues/532)) ([0bb8669](0bb8669))
* **YouTube - Return YouTube Dislike:** Wait until fetch is complete before allowing the first Short to start playback ([ReVanced#538](https://github.com/E85Addict/revanced-integrations/issues/538)) ([1c9c51c](1c9c51c))
* **YouTube - SponsorBlock:** Allow autoplay when skipping to the end of the video ([3d660e1](3d660e1))
* **YouTube - SponsorBlock:** Prevent autoplay from stopping to work ([f4e2d56](f4e2d56))
* **YouTube - Spoof signature:** Wait until storyboard fetch is done ([ReVanced#535](https://github.com/E85Addict/revanced-integrations/issues/535)) ([92e8619](92e8619))

### Features

* Allow choosing the vendor of GmsCore via patch options ([ReVanced#529](https://github.com/E85Addict/revanced-integrations/issues/529)) ([fba7181](fba7181))
* **Tiktok:** Bump compatibility to `32.5.3` ([ReVanced#536](https://github.com/E85Addict/revanced-integrations/issues/536)) ([10a1e16](10a1e16))
* **YouTube - Alternative Thumbnails:** Add option to use DeArrow ([ReVanced#534](https://github.com/E85Addict/revanced-integrations/issues/534)) ([c4ee6ca](c4ee6ca))
* **YouTube:** Add `Change start page` patch ([792dc0c](792dc0c))

### Performance Improvements

* Add upstream sync ([f0c4c01](f0c4c01))

### BREAKING CHANGES

* The class `MicroGSupport` has been renamed to `GmsCoreSupport`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants