Compare commits
No commits in common. "main" and "v18.23.3-2.0" have entirely different histories.
main
...
v18.23.3-2
119
.github/ISSUE_TEMPLATE/bug.yaml
vendored
|
|
@ -1,101 +1,47 @@
|
|||
name: Bug
|
||||
description: Report a bug here
|
||||
description: Make sure you complete the template. Otherwise, it will be closed without further explanation!
|
||||
title: "[Bug] Replace this with your title"
|
||||
labels: bug
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Is there an existing issue for this?
|
||||
description: _Please search to see if an issue already exists for the bug you encountered_
|
||||
options:
|
||||
- label: I have searched the existing issues
|
||||
required: true
|
||||
|
||||
- type: markdown
|
||||
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
value: "## Device Info"
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: iOS/iPadOS version
|
||||
placeholder: iOS 17.5.1
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Device model
|
||||
placeholder: iPhone 15 Pro Max
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Sideload method
|
||||
placeholder: AltStore, Sideloadly, TrollStore, Signulous, deb, ...
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Tweak version
|
||||
placeholder: YTLitePlus - v19.xx.x-4.0.1
|
||||
description: "**latest or newest is NOT a version number!**"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Do you use YouTube Premium?
|
||||
label: Have you read the FAQ?
|
||||
description: _Make sure you visit the [**FAQ**](https://github.com/qnblackcat/CercubePlus/wiki/FAQ) page first!_
|
||||
options:
|
||||
- ❌ No, I don't use YouTube Premium
|
||||
- ✅ Yes, I do use YouTube Premium
|
||||
- label: Yes, I read the FAQ
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Device info
|
||||
description:
|
||||
value: |
|
||||
- iOS/iPadOS version:
|
||||
- Device model:
|
||||
- Sideload tool (AltStore, Sideloadly, TrollStore,...):
|
||||
- The specific version of CercubePlus (**latest** or **newest** is **NOT** a version number!):
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Are you using the newest version of YTLitePlus?
|
||||
description: Update to the [latest version](https://github.com/YTLitePlus/YTLitePlus/releases) to see if it fixes your issue
|
||||
options:
|
||||
- ✅ Yes, I'm using the latest version
|
||||
- ❌ No, I'll explain at the end
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Does the issue happen with the official YouTube from AppStore?
|
||||
options:
|
||||
- ❌ No, I can't reproduce this issue in the official YouTube from AppStore
|
||||
- ✅ Yes, I can reproduce this issue in the official YouTube from AppStore
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Method used to build the iPA
|
||||
options:
|
||||
- buildapp.yml (GitHub Actions)
|
||||
- build.sh (Shell script)
|
||||
- Downloaded from third party
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: "## Description"
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe the bug
|
||||
description: Please attach videos or screenshots if possible
|
||||
description: _Please attach videos or screenshots if possible_
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Steps to reproduce the issue
|
||||
description: Please attach videos or screenshots if possible
|
||||
description: _Please attach videos or screenshots if possible_
|
||||
value: |
|
||||
1.
|
||||
2.
|
||||
|
|
@ -107,11 +53,34 @@ body:
|
|||
id: logs
|
||||
attributes:
|
||||
label: Crash log (if the app crashes)
|
||||
description: It can be found in Settings App > Privacy > Analytics & Improvements > Analytics Data > Youtube-xxx-xxx.ips
|
||||
description: _If somehow the app crashes, **you must provide the crash log**. It can be found in your device's Settings App > Privacy > Analytics & Improvements > Analytics Data > Youtube-xxx-xxx.ips_
|
||||
render: shell
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Are you using the newest version of CercubePlus? If not, why?
|
||||
description: _Developers spend time and effort to fix bugs & add improvements with every release. Why don't you update to the [latest version](https://github.com/Balackburn/CercubePlusExtra/releases/latest) before reporting about an issue?_
|
||||
multiple: false
|
||||
options:
|
||||
- ✅ Yes, I'm using the latest version of CercubePlus right now
|
||||
- ❌ No, I'll explain at the end of the template
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Does the issue happen with the official YouTube from AppStore?
|
||||
description: _Well, YouTube itself is buggy sometimes..._
|
||||
multiple: false
|
||||
options:
|
||||
- ❌ No, It doesn't
|
||||
- ✅ Yes, It does
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: _Um, anything else you want to say?_
|
||||
validations:
|
||||
required: false
|
||||
|
|
|
|||
32
.github/ISSUE_TEMPLATE/feature-request.yaml
vendored
|
|
@ -1,32 +0,0 @@
|
|||
name: Feature Request
|
||||
description: Request a new feature to be added
|
||||
title: "[Request] Replace with your question"
|
||||
labels: enhancement
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Is there an existing issue for this?
|
||||
options:
|
||||
- label: I have searched the existing issues
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Do you use YouTube Premium?
|
||||
options:
|
||||
- ❌ No, I don't use YouTube Premium
|
||||
- ✅ Yes, I do use YouTube Premium
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: My feature request
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional context
|
||||
validations:
|
||||
required: false
|
||||
|
|
@ -5,7 +5,8 @@ labels: question
|
|||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Is there an existing issue for this?
|
||||
label: Is there an existing issue/question for this?
|
||||
description: _Please search to see if an issue already exists for the bug you encountered. **I DON\'T MAKE THIS TICK BOX FOR COSMETIC.**_
|
||||
options:
|
||||
- label: I have searched the existing issues
|
||||
required: true
|
||||
|
|
@ -13,7 +14,7 @@ body:
|
|||
- type: dropdown
|
||||
attributes:
|
||||
label: Do you think this is a bug?
|
||||
description: _If so, please use the bug template_
|
||||
description: _If you think this is a bug, please open a new issue with the bug template_
|
||||
multiple: false
|
||||
options:
|
||||
- ✅ Yes, I believe this is a bug. I will open a new issue with the bug template
|
||||
|
|
@ -24,11 +25,13 @@ body:
|
|||
- type: textarea
|
||||
attributes:
|
||||
label: My question
|
||||
description: _Please enter your question here_
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: _Um, anything else you want to say?_
|
||||
validations:
|
||||
required: false
|
||||
53
.github/RELEASE_TEMPLATE/Release.md
vendored
|
|
@ -1,21 +1,42 @@
|
|||
# ⚠️ Must Read ⚠️
|
||||
- The .ipa file is no longer shared on Github due to a [Google DMCA notice](https://www.reddit.com/r/jailbreak/comments/1b86tiz/balackburn_here_maintainer_of_ytliteplus_ive_just/)
|
||||
- You need to build it yourself. See [Wiki-Building](https://github.com/Balackburn/YTLitePlus/wiki/Building)
|
||||
# [YOUR_TWEAK_NAME] Features
|
||||
CercubePlus but adds Additional Features that should’ve been added to the native CercubePlus which were probably not added.
|
||||
|
||||
# YTLitePlus Release Information
|
||||
**LowContrastMode:** This tweak helps remove the new contrasty looking UI that was first introducted way back in 2020 August/September. (Tweak made by arichorn)
|
||||
<details>
|
||||
<summary>More Features...</summary>
|
||||
|
||||
Current YouTube IPA: `%youtube_version%`
|
||||
Current YTLite Version: `%ytliteplus_version%`
|
||||
Current App Compatibility: `iOS/iPadOS 15.0` or later
|
||||
**LowContrastModeColors:** for users who doesn’t use gray will get a set of colors to switch which changes and improves the UI Customization. (Add-on added for LowContrastMode)
|
||||
|
||||
**RELEASE %youtube_version%-%ytliteplus_version%:** (%date%)
|
||||
**YTNoHeatwaves:** Turns off the Heatwaves Feature in the video player. `(CercubePlus/VideoPlayerOverlayControls)`
|
||||
|
||||
- Updated Youtube from `%youtube_version%` to `%youtube_version%`
|
||||
- Updated YTLite from `%ytliteplus_version%` to `%ytliteplus_version%`
|
||||
|
||||
### Issues in this Release:
|
||||
- LowContrastMode does not work *(Compatible only with YouTube v17.33.2-v17.38.10)*
|
||||
- Hiding Shorts creates an empty space instead #55
|
||||
**YTNoUpgradeDialog:** Disables the Upgrade Dialog so you won’t be prompt to update the app.
|
||||
|
||||
### Catbox
|
||||
`%catbox_url%`
|
||||
**YouMute:** Mute/unmute videos in YouTube directly.
|
||||
|
||||
**iPadLayout:** Gives iPhone users the ability to use the iPad’s Interface and the ability to use the some of the YouTube features that are not on iPhone.
|
||||
|
||||
**iPhoneLayout:** Gives iPad users the ability to use Community Posts, to create Shorts and the ability to use the buggy iPhone layout. but using it in split view mode fixes the ui.
|
||||
|
||||
**HideSponsorBlockButton:** Hide the SponsorBlock Button shown on the Nav Bar. Added by Dayanch96
|
||||
|
||||
**DisableWifiRelatedOptions:** want to remove sections that are only shown when internet is on? You can toggle this to remove all of those sections. Well not all but toggling the option will remove some of the annoying sections that may not be used.
|
||||
|
||||
**HideShadowOverlayButtons:** want to remove shadow overlay on the buttons used in the video player? Then toggle this to remove the Shadow Overlay on the buttons Previous, Next, Rewind, Forward.
|
||||
|
||||
**etc..**
|
||||
</details>
|
||||
|
||||
# [YOUR_TWEAK_NAME] Release Information
|
||||
Current YouTube IPA: `TEMPLATE`
|
||||
Current Cercube Version: `v5.3.13`
|
||||
Current App Compatibility: `iOS/iPadOS 14.0` or later
|
||||
|
||||
**RELEASE F1:**
|
||||
[THIS IS WHERE YOU PUT YOUR CHANGES BELOW, also F1 indicates First Release on the same YouTube Version in case you needed to know]
|
||||
- [<-- this subtract symbol makes the changelog look cool]
|
||||
|
||||
- [this right here shows you added additonal changes on a certain tweak like this for example, below]
|
||||
- Improvements
|
||||
- Fixed Sign-in Issue
|
||||
- Fixed Ads Not Working Issue
|
||||
[THIS IS HOW YOU DO IT! YOU CAN DELETE ALL OF THE TEXT I'VE SAID!]
|
||||
|
|
|
|||
206
.github/workflows/buildapp.yml
vendored
|
|
@ -6,44 +6,34 @@ name: Build and Release YTLitePlus
|
|||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
sdk_version:
|
||||
description: "iOS SDK Version"
|
||||
default: "16.5"
|
||||
required: true
|
||||
type: string
|
||||
decrypted_youtube_url:
|
||||
description: "Direct URL of the decrypted YouTube ipa"
|
||||
description: "The direct URL to the decrypted YouTube ipa"
|
||||
default: ""
|
||||
required: true
|
||||
type: string
|
||||
youtube_version:
|
||||
description: "The version of YouTube"
|
||||
default: ""
|
||||
required: true
|
||||
type: string
|
||||
ytliteplus_version:
|
||||
description: "The version of YTLitePlus"
|
||||
default: "2.0"
|
||||
required: true
|
||||
type: string
|
||||
bundle_id:
|
||||
description: "Modify the bundle ID"
|
||||
description: "Modify the bundle ID. Not recommended"
|
||||
default: "com.google.ios.youtube"
|
||||
required: true
|
||||
type: string
|
||||
app_name:
|
||||
description: "Modify the app name"
|
||||
description: "Modify the name of the app on the Home Screen. Not recommended"
|
||||
default: "YouTube"
|
||||
required: true
|
||||
type: string
|
||||
commit_id:
|
||||
description: "(Optional) Commit ID to build at"
|
||||
default: ""
|
||||
required: false
|
||||
type: string
|
||||
upload_artifact:
|
||||
description: "Upload iPA as artifact (Public)"
|
||||
default: true
|
||||
required: false
|
||||
type: boolean
|
||||
catbox_upload:
|
||||
description: "Upload iPA to Catbox.moe (URL)"
|
||||
default: false
|
||||
required: false
|
||||
type: boolean
|
||||
create_release:
|
||||
description: "Create a draft release (Private)"
|
||||
default: false
|
||||
description: "Create a draft release"
|
||||
default: true
|
||||
required: false
|
||||
type: boolean
|
||||
|
||||
|
|
@ -54,53 +44,47 @@ concurrency:
|
|||
jobs:
|
||||
build:
|
||||
name: Build YTLitePlus
|
||||
runs-on: macos-12
|
||||
runs-on: macos-latest
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
steps:
|
||||
- name: Checkout Main
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3.5.2
|
||||
with:
|
||||
path: main
|
||||
ref: ${{ github.event.inputs.commit_id || github.ref }}
|
||||
submodules: recursive
|
||||
|
||||
- name: Install Dependencies
|
||||
run: brew install ldid dpkg make
|
||||
|
||||
- name: Download Theos
|
||||
uses: actions/checkout@v4
|
||||
- name: Setup Theos
|
||||
uses: actions/checkout@v3.5.2
|
||||
with:
|
||||
repository: theos/theos
|
||||
ref: 3da31488281ecf4394d10302d2629607f4a1aa07
|
||||
ref: master
|
||||
path: theos
|
||||
submodules: recursive
|
||||
|
||||
- name: iOS SDK Caching
|
||||
- name: Caching
|
||||
id: SDK
|
||||
uses: actions/cache@v4
|
||||
uses: actions/cache@v3.3.1
|
||||
env:
|
||||
cache-name: iOS-${{ inputs.sdk_version }}-SDK
|
||||
cache-name: iOS-15.5-SDK
|
||||
with:
|
||||
path: theos/sdks/
|
||||
key: ${{ env.cache-name }}
|
||||
restore-keys: ${{ env.cache-name }}
|
||||
|
||||
- name: Download iOS SDK
|
||||
- name: Download iOS 15.5 SDK
|
||||
if: steps.SDK.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
# Only download the specific SDK version
|
||||
git clone -n --depth=1 --filter=tree:0 https://github.com/theos/sdks/
|
||||
cd sdks
|
||||
git sparse-checkout set --no-cone iPhoneOS${{ inputs.sdk_version }}.sdk
|
||||
git checkout
|
||||
svn checkout -q https://github.com/chrisharper22/sdks/trunk/iPhoneOS15.5.sdk
|
||||
mv *.sdk $THEOS/sdks
|
||||
env:
|
||||
THEOS: ${{ github.workspace }}/theos
|
||||
|
||||
- name: Download Theos Jailed
|
||||
uses: actions/checkout@v4.1.7
|
||||
- name: Setup Theos Jailed
|
||||
uses: actions/checkout@v3.5.2
|
||||
with:
|
||||
repository: qnblackcat/theos-jailed
|
||||
ref: master
|
||||
|
|
@ -112,146 +96,64 @@ jobs:
|
|||
./theos-jailed/install
|
||||
env:
|
||||
THEOS: ${{ github.workspace }}/theos
|
||||
|
||||
- name: Fix Compiling
|
||||
run: |
|
||||
# Update GNU Make to allow for faster building
|
||||
echo "$(brew --prefix make)/libexec/gnubin" >> $GITHUB_PATH
|
||||
(echo export PATH="/usr/local/opt/make/libexec/gnubin:$PATH" >> ~/.bash_profile)
|
||||
source ~/.bash_profile
|
||||
|
||||
- name: Prepare YouTube iPA
|
||||
run: |
|
||||
# Download and unzip iPA
|
||||
wget "$YOUTUBE_URL" --no-verbose -O main/YouTube.ipa
|
||||
echo -e "==> \033[1mYouTube v${{ inputs.youtube_version }} downloaded! \033[0m"
|
||||
unzip -q main/YouTube.ipa -d main/tmp
|
||||
# Get the version number of the YouTube app and store it
|
||||
echo "YT_VERSION=$(grep -A 1 '<key>CFBundleVersion</key>' main/tmp/Payload/YouTube.app/Info.plist | grep '<string>' | awk -F'[><]' '{print $3}')" >> $GITHUB_ENV
|
||||
# Get the version number of the latest release
|
||||
wget -qO- https://github.com/dayanch96/YTLite/releases/latest > main/tmp/release_page.html
|
||||
YTLITE_VERSION=$(grep -o -E '/tag/v[^"]+' main/tmp/release_page.html | head -n 1 | sed 's/\/tag\/v//')
|
||||
echo "YTLITE_VERSION=${YTLITE_VERSION}" >> $GITHUB_ENV
|
||||
echo $YTLITE_VERSION
|
||||
# Remove contents in the iPA that interfere with sideloading
|
||||
rm -rf main/tmp/Payload/YouTube.app/_CodeSignature/CodeResources
|
||||
rm -rf main/tmp/Payload/YouTube.app/PlugIns/*
|
||||
# Modify Info.plist to remove UISupportedDevices (Python script)
|
||||
python - <<EOF
|
||||
import plistlib
|
||||
def remove_uisupporteddevices(filepath):
|
||||
with open(filepath, 'rb') as f:
|
||||
plist = plistlib.load(f)
|
||||
|
||||
if 'UISupportedDevices' in plist:
|
||||
del plist['UISupportedDevices']
|
||||
|
||||
with open(filepath, 'wb') as f:
|
||||
plistlib.dump(plist, f)
|
||||
|
||||
filepath = 'main/tmp/Payload/YouTube.app/Info.plist'
|
||||
remove_uisupporteddevices(filepath)
|
||||
EOF
|
||||
# Manually install the Open in YouTube extension
|
||||
cp -R main/Extensions/*.appex main/tmp/Payload/YouTube.app/PlugIns
|
||||
echo -e "==> \033[1mYouTube v${{ inputs.youtube_version }} unpacked! \033[0m"
|
||||
|
||||
env:
|
||||
THEOS: ${{ github.workspace }}/theos
|
||||
YOUTUBE_VERSION: ${{ inputs.youtube_version }}
|
||||
YOUTUBE_URL: ${{ inputs.decrypted_youtube_url }}
|
||||
|
||||
- name: Build Package
|
||||
- name: Fix Compiling & Build Package
|
||||
id: build_package
|
||||
run: |
|
||||
(echo PATH=\"$(brew --prefix make)/libexec/gnubin:\$PATH\" >> ~/.zprofile)
|
||||
cd ${{ github.workspace }}/main
|
||||
# Replace lines in Makefile based on inputs
|
||||
sed -i '' "s/^BUNDLE_ID.*$/BUNDLE_ID = ${{ env.BUNDLE_ID }}/" Makefile
|
||||
sed -i '' "s/^DISPLAY_NAME.*$/DISPLAY_NAME = ${{ env.APP_NAME }}/" Makefile
|
||||
sed -i '' "s/^PACKAGE_VERSION.*$/PACKAGE_VERSION = ${{ env.YT_VERSION }}-${{ env.YTLITE_VERSION }}/" Makefile
|
||||
sed -i '' "s/^export TARGET.*$/export TARGET = iphone:clang:${{ inputs.sdk_version }}:14.0/" Makefile
|
||||
# Build the package
|
||||
make package
|
||||
# Rename the package based on the version
|
||||
(mv "packages/$(ls -t packages | head -n1)" "packages/YTLitePlus_${{ env.YT_VERSION }}_${{ env.YTLITE_VERSION }}.ipa")
|
||||
# Pass package name to the upload step
|
||||
echo "package=$(ls -t packages | head -n1)" >> $GITHUB_OUTPUT
|
||||
# Print out the hash and bundle ID
|
||||
sed -i '' "12s#.*#BUNDLE_ID = ${{ env.BUNDLE_ID }}#g" Makefile
|
||||
sed -i '' "11s#.*#DISPLAY_NAME = ${{ env.APP_NAME }}#g" Makefile
|
||||
make package FINALPACKAGE=1
|
||||
(mv "packages/$(ls -t packages | head -n1)" "packages/YTLitePlus_${{ env.YOUTUBE_VERSION }}.ipa")
|
||||
echo "package=$(ls -t packages | head -n1)" >>$GITHUB_OUTPUT
|
||||
echo -e "==> \033[1mSHASUM256: $(shasum -a 256 packages/*.ipa | cut -f1 -d' ')\033[0m"
|
||||
echo -e "==> \033[1mBundle ID: ${{ env.BUNDLE_ID }}\033[0m"
|
||||
env:
|
||||
THEOS: ${{ github.workspace }}/theos
|
||||
ytliteplus_version: ${{ inputs.ytliteplus_version }}
|
||||
YOUTUBE_VERSION: ${{ inputs.youtube_version }}
|
||||
BUNDLE_ID: ${{ inputs.bundle_id }}
|
||||
APP_NAME: ${{ inputs.app_name }}
|
||||
|
||||
- name: Upload Artifact
|
||||
if: ${{ inputs.upload_artifact }}
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v3.1.2
|
||||
env:
|
||||
ytliteplus_version: ${{ inputs.ytliteplus_version }}
|
||||
YOUTUBE_VERSION: ${{ inputs.youtube_version }}
|
||||
with:
|
||||
name: YTLitePlus_${{ env.YT_VERSION }}_${{ env.YTLITE_VERSION }}
|
||||
name: YTLitePlus_${{ env.YOUTUBE_VERSION }}_${{ env.ytliteplus_version }}
|
||||
path: ${{ github.workspace }}/main/packages/${{ steps.build_package.outputs.package }}
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Upload Artifact to Catbox
|
||||
if: ${{ inputs.catbox_upload }}
|
||||
run: |
|
||||
RESPONSE=$(curl -F "reqtype=fileupload" -F "fileToUpload=@${{ github.workspace }}/main/packages/${{ steps.build_package.outputs.package }}" https://catbox.moe/user/api.php)
|
||||
CATBOX_URL=$(echo $RESPONSE | grep -o -E 'https://files.catbox.moe/[^"]*')
|
||||
echo "Uploaded artifact to $CATBOX_URL"
|
||||
CATBOX_FILE=$(echo $CATBOX_URL | sed 's|https://files.catbox.moe/||')
|
||||
# Pass Catbox URL to the release steps
|
||||
echo "CATBOX_FILE=$CATBOX_FILE" >> $GITHUB_ENV
|
||||
echo "CATBOX_URL=$CATBOX_URL" >> $GITHUB_ENV
|
||||
|
||||
- name: Prepare Release Notes
|
||||
if: ${{ inputs.create_release }}
|
||||
run: |
|
||||
export TODAY=$(date '+%Y-%m-%d')
|
||||
sed "s/%ytliteplus_version%/${{ env.YTLITE_VERSION }}/g; s/%youtube_version%/${{ env.YT_VERSION }}/g; s/%catbox_url%/${{ env.CATBOX_FILE }}/g; s/%date%/$TODAY/g" \
|
||||
main/.github/RELEASE_TEMPLATE/Release.md > ${{ github.workspace }}/release_notes.md
|
||||
|
||||
- name: Create Draft Release
|
||||
if: ${{ inputs.create_release }}
|
||||
- name: Create Release
|
||||
id: create_release
|
||||
uses: softprops/action-gh-release@v2
|
||||
uses: softprops/action-gh-release@v0.1.15
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
ytliteplus_version: ${{ inputs.ytliteplus_version }}
|
||||
YOUTUBE_VERSION: ${{ inputs.youtube_version }}
|
||||
DRAFT: ${{ inputs.create_release }}
|
||||
with:
|
||||
tag_name: v${{ env.YT_VERSION }}-${{ env.YTLITE_VERSION }}
|
||||
name: v${{ env.YT_VERSION }}-${{ env.YTLITE_VERSION }} - YTLitePlus
|
||||
tag_name: v${{ env.YOUTUBE_VERSION }}-${{ env.ytliteplus_version }}-(${{ github.run_number }})
|
||||
name: v${{ env.YOUTUBE_VERSION }}-${{ env.ytliteplus_version }}-(${{ github.run_number }})
|
||||
files: main/packages/*.ipa
|
||||
draft: true
|
||||
body_path: ${{ github.workspace }}/release_notes.md
|
||||
draft: ${{ env.DRAFT }}
|
||||
|
||||
- name: Update Altstore Source with latest release
|
||||
if: ${{ inputs.create_release }}
|
||||
run: |
|
||||
curl --location --request POST 'https://api.github.com/repos/Balackburn/YTLitePlusAltstore/dispatches' \
|
||||
--header 'Authorization: token ${{ secrets.PERSONAL_ACCESS_TOKEN }}' \
|
||||
--header 'Content-Type: application/json' \
|
||||
--data-raw '{
|
||||
"event_type": "update-altstore-source-trigger"
|
||||
}'
|
||||
|
||||
- name: Job Summary
|
||||
run: |
|
||||
echo -e '### 📺 Build Complete' >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
- name: Job Summary - Artifact Upload
|
||||
if: ${{ inputs.upload_artifact }}
|
||||
run: |
|
||||
echo -e '### 📦 Artifact Upload\n\nThe artifact was uploaded successfully! Refresh and [scroll down](#artifacts) to view the artifact. Note that you must be signed in to GitHub to download it.' >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
- name: Job Summary - Catbox Upload
|
||||
if: ${{ inputs.catbox_upload}}
|
||||
run: |
|
||||
echo -e '### 🐱 Catbox Upload\n\nThe Catbox upload was successful! Here is a permanent shareable link: '$CATBOX_URL >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
- name: Job Summary - Draft Release
|
||||
if: ${{ inputs.create_release }}
|
||||
run: |
|
||||
REPO_URL="https://github.com/${{ github.repository }}"
|
||||
RELEASES_URL="$REPO_URL/releases"
|
||||
echo -e '### 🚀 Draft Release\n\nThe release draft has been created successfully! You can view your releases here: '$RELEASES_URL >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
- name: Job Summary - Link to remove GitHub Action runs
|
||||
run: |
|
||||
REPO_URL="https://github.com/${{ github.repository }}"
|
||||
DELETE_RUNS_URL="$REPO_URL/actions/workflows/delete-workflow-runs.yml"
|
||||
echo -e '### 🧹 Cleanup\n\nYou can remove previous GitHub Action runs here: '$DELETE_RUNS_URL >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
69
.github/workflows/delete-workflow-runs.yml
vendored
|
|
@ -1,69 +0,0 @@
|
|||
# This is based on the example at https://github.com/marketplace/actions/delete-workflow-runs
|
||||
|
||||
name: Delete old workflow runs
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
days:
|
||||
description: 'Days-worth of runs to keep for each workflow'
|
||||
required: true
|
||||
default: '0'
|
||||
minimum_runs:
|
||||
description: 'Minimum runs to keep for each workflow'
|
||||
required: true
|
||||
default: '0'
|
||||
delete_workflow_pattern:
|
||||
description: 'Name or filename of the workflow (if not set, all workflows are targeted)'
|
||||
required: false
|
||||
default: 'Build and Release YTLitePlus'
|
||||
delete_workflow_by_state_pattern:
|
||||
description: 'Filter workflows by state: active, deleted, disabled_fork, disabled_inactivity, disabled_manually'
|
||||
required: true
|
||||
default: "ALL"
|
||||
type: choice
|
||||
options:
|
||||
- "ALL"
|
||||
- active
|
||||
- deleted
|
||||
- disabled_inactivity
|
||||
- disabled_manually
|
||||
delete_run_by_conclusion_pattern:
|
||||
description: 'Remove runs based on conclusion: action_required, cancelled, failure, skipped, success'
|
||||
required: true
|
||||
default: "ALL"
|
||||
type: choice
|
||||
options:
|
||||
- "ALL"
|
||||
- "Unsuccessful: action_required,cancelled,failure,skipped"
|
||||
- action_required
|
||||
- cancelled
|
||||
- failure
|
||||
- skipped
|
||||
- success
|
||||
dry_run:
|
||||
description: 'Logs simulated changes, no deletions are performed'
|
||||
required: false
|
||||
|
||||
jobs:
|
||||
del_runs:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: write
|
||||
contents: read
|
||||
steps:
|
||||
- name: Delete workflow runs
|
||||
uses: Mattraks/delete-workflow-runs@v2
|
||||
with:
|
||||
token: ${{ github.token }}
|
||||
repository: ${{ github.repository }}
|
||||
retain_days: ${{ github.event.inputs.days }}
|
||||
keep_minimum_runs: ${{ github.event.inputs.minimum_runs }}
|
||||
delete_workflow_pattern: ${{ github.event.inputs.delete_workflow_pattern }}
|
||||
delete_workflow_by_state_pattern: ${{ github.event.inputs.delete_workflow_by_state_pattern }}
|
||||
delete_run_by_conclusion_pattern: >-
|
||||
${{
|
||||
startsWith(github.event.inputs.delete_run_by_conclusion_pattern, 'Unsuccessful:')
|
||||
&& 'action_required,cancelled,failure,skipped'
|
||||
|| github.event.inputs.delete_run_by_conclusion_pattern
|
||||
}}
|
||||
dry_run: ${{ github.event.inputs.dry_run }}
|
||||
35
.github/workflows/update-submodules.yml
vendored
|
|
@ -1,35 +0,0 @@
|
|||
name: Update Submodules
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
|
||||
jobs:
|
||||
update-submodules:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4.1.7
|
||||
|
||||
- name: Set up Git
|
||||
run: |
|
||||
git config --global user.email "actions@github.com"
|
||||
git config --global user.name "GitHub Actions"
|
||||
|
||||
- name: Update submodules
|
||||
run: |
|
||||
git submodule update --init --recursive --remote
|
||||
git add .
|
||||
git commit -m "updated submodules"
|
||||
git push origin
|
||||
continue-on-error: true
|
||||
|
||||
- name: Check exit code
|
||||
run: |
|
||||
exit_code=$?
|
||||
if [ $exit_code -ne 0 ]; then
|
||||
echo "Submodule update failed with exit code $exit_code"
|
||||
exit 1
|
||||
fi
|
||||
6
.gitignore
vendored
|
|
@ -2,6 +2,6 @@
|
|||
.theos/
|
||||
packages/
|
||||
tmp/
|
||||
Tweaks/YTLite/*
|
||||
!Tweaks/YTLite/.gitkeep
|
||||
Resources/
|
||||
Tweaks/Cercube/*
|
||||
!Tweaks/Cercube/.gitkeep
|
||||
Resources/
|
||||
77
.gitmodules
vendored
|
|
@ -1,60 +1,45 @@
|
|||
[submodule "Tweaks/YTUHD"]
|
||||
path = Tweaks/YTUHD
|
||||
url = https://github.com/PoomSmart/YTUHD.git
|
||||
[submodule "Tweaks/YouPiP"]
|
||||
path = Tweaks/YouPiP
|
||||
url = https://github.com/PoomSmart/YouPiP.git
|
||||
[submodule "Tweaks/Return-YouTube-Dislikes"]
|
||||
path = Tweaks/Return-YouTube-Dislikes
|
||||
url = https://github.com/PoomSmart/Return-YouTube-Dislikes.git
|
||||
[submodule "Tweaks/YouTubeHeader"]
|
||||
path = Tweaks/YouTubeHeader
|
||||
url = https://github.com/PoomSmart/YouTubeHeader.git
|
||||
[submodule "Tweaks/Alderis"]
|
||||
path = Tweaks/Alderis
|
||||
url = https://github.com/hbang/Alderis.git
|
||||
url = https://github.com/qnblackcat/Alderis.git
|
||||
[submodule "Tweaks/PSHeader"]
|
||||
path = Tweaks/PSHeader
|
||||
url = https://github.com/PoomSmart/PSHeader.git
|
||||
[submodule "Tweaks/YTABConfig"]
|
||||
path = Tweaks/YTABConfig
|
||||
url = https://github.com/PoomSmart/YTABConfig.git
|
||||
[submodule "Tweaks/YouMute"]
|
||||
path = Tweaks/YouMute
|
||||
url = https://github.com/PoomSmart/YouMute.git
|
||||
[submodule "Tweaks/RemoteLog"]
|
||||
path = Tweaks/RemoteLog
|
||||
url = https://github.com/Muirey03/RemoteLog.git
|
||||
[submodule "Tweaks/FLEX"]
|
||||
path = Tweaks/FLEX
|
||||
url = https://github.com/qnblackcat/FLEX-Classes.git
|
||||
[submodule "Tweaks/iSponsorBlock"]
|
||||
path = Tweaks/iSponsorBlock
|
||||
url = https://github.com/Galactic-Dev/iSponsorBlock.git
|
||||
[submodule "Tweaks/YTHoldForSpeed"]
|
||||
path = Tweaks/YTHoldForSpeed
|
||||
url = https://github.com/arichornloverALT/YTHoldForSpeed.git
|
||||
[submodule "Tweaks/DontEatMyContent"]
|
||||
path = Tweaks/DontEatMyContent
|
||||
url = https://github.com/therealFoxster/DontEatMyContent.git
|
||||
[submodule "Extensions"]
|
||||
path = Extensions
|
||||
url = https://github.com/CokePokes/YoutubeExtensions.git
|
||||
[submodule "Tweaks/YTVideoOverlay"]
|
||||
path = Tweaks/YTVideoOverlay
|
||||
url = https://github.com/arichornloverALT/YTVideoOverlay.git
|
||||
[submodule "Tweaks/protobuf"]
|
||||
path = Tweaks/protobuf
|
||||
url = https://github.com/protocolbuffers/protobuf.git
|
||||
[submodule "Tweaks/YouTubeHeader"]
|
||||
path = Tweaks/YouTubeHeader
|
||||
url = https://github.com/PoomSmart/YouTubeHeader.git
|
||||
[submodule "Tweaks/YouPiP"]
|
||||
path = Tweaks/YouPiP
|
||||
url = https://github.com/PoomSmart/YouPiP
|
||||
[submodule "Tweaks/YTABConfig"]
|
||||
path = Tweaks/YTABConfig
|
||||
url = https://github.com/PoomSmart/YTABConfig
|
||||
[submodule "Tweaks/YTUHD"]
|
||||
path = Tweaks/YTUHD
|
||||
url = https://github.com/PoomSmart/YTUHD
|
||||
[submodule "Tweaks/YouGroupSettings"]
|
||||
path = Tweaks/YouGroupSettings
|
||||
url = https://github.com/PoomSmart/YouGroupSettings
|
||||
[submodule "Tweaks/YouMute"]
|
||||
path = Tweaks/YouMute
|
||||
url = https://github.com/PoomSmart/YouMute
|
||||
[submodule "Tweaks/YouQuality"]
|
||||
path = Tweaks/YouQuality
|
||||
url = https://github.com/PoomSmart/YouQuality
|
||||
[submodule "Tweaks/Return-YouTube-Dislikes"]
|
||||
path = Tweaks/Return-YouTube-Dislikes
|
||||
url = https://github.com/arichornloverALT/Return-YouTube-Dislikes.git
|
||||
[submodule "Tweaks/YTHeaders"]
|
||||
path = Tweaks/YTHeaders
|
||||
url = https://github.com/therealFoxster/YTHeaders
|
||||
[submodule "Tweaks/YouTimeStamp"]
|
||||
path = Tweaks/YouTimeStamp
|
||||
url = https://github.com/arichornloverALT/YouTimeStamp.git
|
||||
[submodule "Tweaks/YouLoop"]
|
||||
path = Tweaks/YouLoop
|
||||
url = https://github.com/bhackel/YouLoop
|
||||
[submodule "Tweaks/YTHoldForSpeed"]
|
||||
path = Tweaks/YTHoldForSpeed
|
||||
url = https://github.com/arichorn/YTHoldForSpeed.git
|
||||
[submodule "Tweaks/DontEatMyContent"]
|
||||
path = Tweaks/DontEatMyContent
|
||||
url = https://github.com/therealFoxster/DontEatMyContent.git
|
||||
[submodule "Tweaks/YTLite"]
|
||||
path = Tweaks/YTLite
|
||||
url = https://github.com/dayanch96/YTLite.git
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
Subproject commit a68d70883d297fcc6669429dfd1439848e96e411
|
||||
2
Extensions/.gitattributes
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
# Auto detect text files and perform LF normalization
|
||||
* text=auto
|
||||
1
Extensions/.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
.DS_Store
|
||||
BIN
Extensions/OpenYoutubeSafariExtension.appex/Info.plist
Normal file
BIN
Extensions/OpenYoutubeSafariExtension.appex/OpenYoutube
Executable file
|
|
@ -0,0 +1,333 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>files</key>
|
||||
<dict>
|
||||
<key>Info.plist</key>
|
||||
<data>
|
||||
5KaPBsMVTGZfcc05Od8nGW6/EyQ=
|
||||
</data>
|
||||
<key>_locales/en/messages.json</key>
|
||||
<data>
|
||||
8cPkszxzYFSjhRWsf34A0AiHaPM=
|
||||
</data>
|
||||
<key>background.js</key>
|
||||
<data>
|
||||
tClFxbnUm0L65Qj+Qu8Fk9asL2o=
|
||||
</data>
|
||||
<key>content.js</key>
|
||||
<data>
|
||||
a6o4B4PMlrIOBXlniU2NS4D9SJE=
|
||||
</data>
|
||||
<key>embedded.mobileprovision</key>
|
||||
<data>
|
||||
dVGLS8Qpu/eCI1J5VCu9IfYq3Z4=
|
||||
</data>
|
||||
<key>images/cat_1.0.gif</key>
|
||||
<data>
|
||||
DtSTnvB7wRt647kM1b38KLfDfXA=
|
||||
</data>
|
||||
<key>images/icon-128.png</key>
|
||||
<data>
|
||||
rYa1lv1LgkO3fkP9h6gRSjlQgqk=
|
||||
</data>
|
||||
<key>images/icon-256.png</key>
|
||||
<data>
|
||||
05xbekvTg28KsH9RRIKQRL8tqQs=
|
||||
</data>
|
||||
<key>images/icon-48.png</key>
|
||||
<data>
|
||||
BWUZe8raKzOzA2cDWIYFoBPxxw8=
|
||||
</data>
|
||||
<key>images/icon-512.png</key>
|
||||
<data>
|
||||
shzpVHJMsAu4q820Fb+YzByiFhc=
|
||||
</data>
|
||||
<key>images/icon-64.png</key>
|
||||
<data>
|
||||
HZC4YIb4ZLg4lpjNAKFqSaka6r0=
|
||||
</data>
|
||||
<key>images/icon-96.png</key>
|
||||
<data>
|
||||
IPAOd1HfCtCI7ybhVhwA5TU/BZ8=
|
||||
</data>
|
||||
<key>images/toolbar-icon-16.png</key>
|
||||
<data>
|
||||
Bkb2Cy8VYIcWl7wFZ2HcWZcCoyA=
|
||||
</data>
|
||||
<key>images/toolbar-icon-19.png</key>
|
||||
<data>
|
||||
XLkdODJ73CVbwn/1LCAsfB6scPg=
|
||||
</data>
|
||||
<key>images/toolbar-icon-32.png</key>
|
||||
<data>
|
||||
0cQgf/z3urGdzsmtmc2Wnim1+lg=
|
||||
</data>
|
||||
<key>images/toolbar-icon-38.png</key>
|
||||
<data>
|
||||
eas7Tl3/r2JMZf6nK84ZjoBJrZo=
|
||||
</data>
|
||||
<key>images/toolbar-icon-48.png</key>
|
||||
<data>
|
||||
fxyz1xgkIR877Cf/7uYNUqXrxoM=
|
||||
</data>
|
||||
<key>images/toolbar-icon-72.png</key>
|
||||
<data>
|
||||
pHL3CJwjPY30T9sFvvcA2qlraBw=
|
||||
</data>
|
||||
<key>manifest.json</key>
|
||||
<data>
|
||||
b37QyqMYHlvlfOjbvJLOKeAM5Y4=
|
||||
</data>
|
||||
<key>popup.css</key>
|
||||
<data>
|
||||
mXR2qQxu+ceMOItNpc4aImux5wY=
|
||||
</data>
|
||||
<key>popup.html</key>
|
||||
<data>
|
||||
zTk6QImmvcZjMYLQY8ek+cqSEWg=
|
||||
</data>
|
||||
<key>popup.js</key>
|
||||
<data>
|
||||
grmSQBg1aRbGzHHjd3TWHS/HbOY=
|
||||
</data>
|
||||
</dict>
|
||||
<key>files2</key>
|
||||
<dict>
|
||||
<key>_locales/en/messages.json</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
4pOaVgBrOGGIoI81XdEOZidIyW9peYtz85HIYX7d1QE=
|
||||
</data>
|
||||
</dict>
|
||||
<key>background.js</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
2S7ONYvdkGsryEavyrR7nMCTwsjNGqMV2BSWIxWLSYg=
|
||||
</data>
|
||||
</dict>
|
||||
<key>content.js</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
9CYz6yZ8bRI2JRzRwnn4DOGuPuy2GSsOudXSZU6s1po=
|
||||
</data>
|
||||
</dict>
|
||||
<key>embedded.mobileprovision</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
4TQyzTTz0VYUTM0IXf2PMSufVEkzd4WlPWbwKMyfKfQ=
|
||||
</data>
|
||||
</dict>
|
||||
<key>images/cat_1.0.gif</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
65Ql3FhfivRMoMifbuY5KK8I/1rZx/Zmmwsx1La4OyI=
|
||||
</data>
|
||||
</dict>
|
||||
<key>images/icon-128.png</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
TV8I8bcVP9rAnVA4AJRAWtkJveIenMpYsd/7+rsMLzo=
|
||||
</data>
|
||||
</dict>
|
||||
<key>images/icon-256.png</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
kksdsW0Y1svz0bT0i3UzQGBmBDxJGr2eTCZmaqTS+XM=
|
||||
</data>
|
||||
</dict>
|
||||
<key>images/icon-48.png</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
mBNPpZ78p0eH4WsNdF/EXw/sFHq5f8PqERARlLulYbY=
|
||||
</data>
|
||||
</dict>
|
||||
<key>images/icon-512.png</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
waQn18oFc3GbhXXm2HEn6xFQk3HKehp9crGljWAMsGQ=
|
||||
</data>
|
||||
</dict>
|
||||
<key>images/icon-64.png</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
CJwxajQk49Cd0RfR22yEPO6pjDbg+Aa4Ocxi+812CiM=
|
||||
</data>
|
||||
</dict>
|
||||
<key>images/icon-96.png</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
zuzRjCepizxOWXh9ftCPth38GUxy1Ea/4zS3dw19OXo=
|
||||
</data>
|
||||
</dict>
|
||||
<key>images/toolbar-icon-16.png</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
xmXH4YHb+Pq/YuC1e8JLIun93LuM3+/8MvB3r8oTKls=
|
||||
</data>
|
||||
</dict>
|
||||
<key>images/toolbar-icon-19.png</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
qSX/1Ux4BOUIhixJK5NkvyTomLwp0yISfsQ97uF8/5g=
|
||||
</data>
|
||||
</dict>
|
||||
<key>images/toolbar-icon-32.png</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
pGDg4NcSdD5EQaZgaiwxNosbSEXmZnpRc79RfitKc1c=
|
||||
</data>
|
||||
</dict>
|
||||
<key>images/toolbar-icon-38.png</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
BUU3dwrCSvNOiFkBQWdPkrwASjUvxSxbizW+Izt3LBA=
|
||||
</data>
|
||||
</dict>
|
||||
<key>images/toolbar-icon-48.png</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
JLZV5da+fZkfw0m2KfMqHSixWBCJvZoUNlt3la7gm54=
|
||||
</data>
|
||||
</dict>
|
||||
<key>images/toolbar-icon-72.png</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
TwM7A1Bkuv4C3SWorFNwG+w38mWo3TaMtglLdDXxcFw=
|
||||
</data>
|
||||
</dict>
|
||||
<key>manifest.json</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
+nWdvS9ap7YzpjqKSWsGUHP5K2irkTGozQX/tI4WrYc=
|
||||
</data>
|
||||
</dict>
|
||||
<key>popup.css</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
LIfF3an8mzKIMD8PDhKILnrZBhxxSTzoZQKyRiyWuB0=
|
||||
</data>
|
||||
</dict>
|
||||
<key>popup.html</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
9Ro1fCC5Meq0eSNrYab7V3uc4tNvmwRqMsCb1757M6Q=
|
||||
</data>
|
||||
</dict>
|
||||
<key>popup.js</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
ruLXAORE+vDoLKPGBSkl7hnXv8V+ZexCoX3KvJyHxBk=
|
||||
</data>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>rules</key>
|
||||
<dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^version.plist$</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>rules2</key>
|
||||
<dict>
|
||||
<key>.*\.dSYM($|/)</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>11</real>
|
||||
</dict>
|
||||
<key>^(.*/)?\.DS_Store$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>2000</real>
|
||||
</dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^Info\.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^PkgInfo$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^embedded\.provisionprofile$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^version\.plist$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"extension_name": {
|
||||
"message": "OpenYoutube",
|
||||
"description": "The display name for the extension."
|
||||
},
|
||||
"extension_description": {
|
||||
"message": "Displays an Open in Youtube alert for sideloaded YT",
|
||||
"description": "Description of what the extension does."
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
browser.runtime.onMessage.addListener((request, sender, sendResponse) => {
|
||||
console.log("Received request: ", request);
|
||||
|
||||
if (request.greeting === "hello")
|
||||
sendResponse({ farewell: "goodbye" });
|
||||
});
|
||||
25
Extensions/OpenYoutubeSafariExtension.appex/content.js
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
browser.runtime.sendMessage({ greeting: "hello" }).then((response) => {
|
||||
console.log("Received response: ", response);
|
||||
});
|
||||
|
||||
browser.runtime.onMessage.addListener((request, sender, sendResponse) => {
|
||||
console.log("Received request: ", request);
|
||||
});
|
||||
|
||||
function afterNavigate() {
|
||||
if ('/watch' === location.pathname) {
|
||||
window.location.href = `youtube://${window.location.pathname.slice(1)}${
|
||||
window.location.search
|
||||
}${window.location.hash}`;
|
||||
}
|
||||
}
|
||||
(document.body || document.documentElement).addEventListener('transitionend',
|
||||
function(/*TransitionEvent*/ event) {
|
||||
if (event.propertyName === 'width' && event.target.id === 'progress') {
|
||||
afterNavigate();
|
||||
}
|
||||
}, true);
|
||||
// After page load
|
||||
afterNavigate();
|
||||
|
||||
|
||||
BIN
Extensions/OpenYoutubeSafariExtension.appex/images/cat_1.0.gif
Normal file
|
After Width: | Height: | Size: 110 KiB |
BIN
Extensions/OpenYoutubeSafariExtension.appex/images/icon-128.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
Extensions/OpenYoutubeSafariExtension.appex/images/icon-256.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
Extensions/OpenYoutubeSafariExtension.appex/images/icon-48.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
Extensions/OpenYoutubeSafariExtension.appex/images/icon-512.png
Normal file
|
After Width: | Height: | Size: 128 KiB |
BIN
Extensions/OpenYoutubeSafariExtension.appex/images/icon-64.png
Normal file
|
After Width: | Height: | Size: 5 KiB |
BIN
Extensions/OpenYoutubeSafariExtension.appex/images/icon-96.png
Normal file
|
After Width: | Height: | Size: 9.5 KiB |
|
After Width: | Height: | Size: 454 B |
|
After Width: | Height: | Size: 569 B |
|
After Width: | Height: | Size: 919 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
40
Extensions/OpenYoutubeSafariExtension.appex/manifest.json
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
"manifest_version": 2,
|
||||
"default_locale": "en",
|
||||
|
||||
"name": "__MSG_extension_name__",
|
||||
"description": "__MSG_extension_description__",
|
||||
"version": "1.0",
|
||||
|
||||
"icons": {
|
||||
"48": "images/icon-48.png",
|
||||
"96": "images/icon-96.png",
|
||||
"128": "images/icon-128.png",
|
||||
"256": "images/icon-256.png",
|
||||
"512": "images/icon-512.png"
|
||||
},
|
||||
|
||||
"background": {
|
||||
"scripts": [ "background.js" ],
|
||||
"persistent": false
|
||||
},
|
||||
|
||||
"content_scripts": [{
|
||||
"js": [ "content.js" ],
|
||||
"matches": [ "*://*.youtube.com/*" ]
|
||||
}],
|
||||
|
||||
"browser_action": {
|
||||
"default_popup": "popup.html",
|
||||
"default_icon": {
|
||||
"16": "images/toolbar-icon-16.png",
|
||||
"19": "images/toolbar-icon-19.png",
|
||||
"32": "images/toolbar-icon-32.png",
|
||||
"38": "images/toolbar-icon-38.png",
|
||||
"48": "images/toolbar-icon-48.png",
|
||||
"72": "images/toolbar-icon-72.png"
|
||||
}
|
||||
},
|
||||
|
||||
"permissions": [ ]
|
||||
}
|
||||
15
Extensions/OpenYoutubeSafariExtension.appex/popup.css
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
:root {
|
||||
color-scheme: light dark;
|
||||
}
|
||||
|
||||
body {
|
||||
width: 100px;
|
||||
padding: 10px;
|
||||
|
||||
font-family: system-ui;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
/* Dark Mode styles go here. */
|
||||
}
|
||||
21
Extensions/OpenYoutubeSafariExtension.appex/popup.html
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="popup.css">
|
||||
<script type="module" src="popup.js"></script>
|
||||
</head>
|
||||
<style>
|
||||
body {
|
||||
background-image:url('images/cat_1.0.gif');
|
||||
background-size:100%;
|
||||
background-repeat: repeat-y;
|
||||
background-attachment: fixed;
|
||||
height:100%;
|
||||
width:100%;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<strong>Extension made by @CokePokes</strong>
|
||||
</body>
|
||||
</html>
|
||||
1
Extensions/OpenYoutubeSafariExtension.appex/popup.js
Normal file
|
|
@ -0,0 +1 @@
|
|||
console.log("Hello World!", browser);
|
||||
20
Extensions/README.md
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
# YoutubeExtensions
|
||||
appex extensions for sideloaded YT
|
||||
|
||||
|
||||
What is this?
|
||||
|
||||
These plugins enable "Open In" for sideloaded Youtube without any need to download other Opener apps /Shortcuts.
|
||||
|
||||
|
||||
How to install:
|
||||
|
||||
1. Download the .appex files here
|
||||
2. Unzip Youtube.ipa & copy them to /Payload/Youtube.app/Plugins
|
||||
3. Compress Payload folder & rename .zip to .ipa
|
||||
4. Sign & Install onto device
|
||||
5. Open YouTube once & then open Safari to enable the iOS 15 safari plugin [prompted always allow - do it]
|
||||
6. Press the Share icon in Safari scroll app list > More > Enable Youtube
|
||||
|
||||
Done!
|
||||
|
||||
BIN
Extensions/ShareServiceExtension.appex/Info.plist
Normal file
BIN
Extensions/ShareServiceExtension.appex/Youtube
Executable file
BIN
Extensions/ShareServiceExtension.appex/Youtube@2x.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
|
|
@ -0,0 +1,157 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>files</key>
|
||||
<dict>
|
||||
<key>Base.lproj/MainInterface.storyboardc/Info.plist</key>
|
||||
<data>
|
||||
Bgt43YuQd48Y7NBkKAH/I1Nd+7Q=
|
||||
</data>
|
||||
<key>Base.lproj/MainInterface.storyboardc/UIViewController-j1y-V4-xli.nib</key>
|
||||
<data>
|
||||
t/rVTMy59WLCl0e0ydlT2JlJKIs=
|
||||
</data>
|
||||
<key>Base.lproj/MainInterface.storyboardc/j1y-V4-xli-view-wbc-yd-nQP.nib</key>
|
||||
<data>
|
||||
56s4vIzFNrq5HEvB3Mr6qnqVRFg=
|
||||
</data>
|
||||
<key>Info.plist</key>
|
||||
<data>
|
||||
7+n2S5sS/Ngeoe21gJMc6iC6+ac=
|
||||
</data>
|
||||
<key>embedded.mobileprovision</key>
|
||||
<data>
|
||||
dVGLS8Qpu/eCI1J5VCu9IfYq3Z4=
|
||||
</data>
|
||||
<key>icon.png</key>
|
||||
<data>
|
||||
/pip+c1EETgjhxNcOhgiyQxxzyU=
|
||||
</data>
|
||||
</dict>
|
||||
<key>files2</key>
|
||||
<dict>
|
||||
<key>Base.lproj/MainInterface.storyboardc/Info.plist</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
Qnp5pVqL/lRCSEISDYZs1VBLxfcEnfpOzHg6WgcgLgk=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Base.lproj/MainInterface.storyboardc/UIViewController-j1y-V4-xli.nib</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
VpQww1vK2BoM0RIaiw/B/8JZ3kp5Pks5bM8Sjtjju9w=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Base.lproj/MainInterface.storyboardc/j1y-V4-xli-view-wbc-yd-nQP.nib</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
C87FO0vFlvhG8vp7+3v+EcR9kbOeu9v+mDLy/iU+6e8=
|
||||
</data>
|
||||
</dict>
|
||||
<key>embedded.mobileprovision</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
4TQyzTTz0VYUTM0IXf2PMSufVEkzd4WlPWbwKMyfKfQ=
|
||||
</data>
|
||||
</dict>
|
||||
<key>icon.png</key>
|
||||
<dict>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
mfufJ0CJyFLUpRnLC8q8awHkGqmWeQtRDgF5EBXKUQs=
|
||||
</data>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>rules</key>
|
||||
<dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^version.plist$</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>rules2</key>
|
||||
<dict>
|
||||
<key>.*\.dSYM($|/)</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>11</real>
|
||||
</dict>
|
||||
<key>^(.*/)?\.DS_Store$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>2000</real>
|
||||
</dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^Info\.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^PkgInfo$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^embedded\.provisionprofile$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^version\.plist$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
7
Extensions/ShareServiceExtension.appex/test.json
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
var GetURL = function() {};
|
||||
GetURL.prototype = {
|
||||
run: function(arguments) {
|
||||
arguments.completionFunction({"URL": document.URL});
|
||||
}
|
||||
};
|
||||
var ExtensionPreprocessingJS = new GetURL;
|
||||
165
Header.h
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
#import "Tweaks/YouTubeHeader/YTPlayerViewController.h" // Header.h
|
||||
#import "Tweaks/YouTubeHeader/YTQTMButton.h" // Header.h
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CaptainHook/CaptainHook.h>
|
||||
#import <objc/runtime.h>
|
||||
#import <dlfcn.h>
|
||||
#import <sys/utsname.h>
|
||||
#import <substrate.h>
|
||||
#import <rootless.h>
|
||||
#import "Tweaks/FLEX/FLEX.h"
|
||||
#import "Tweaks/YouTubeHeader/YTVideoQualitySwitchOriginalController.h"
|
||||
#import "Tweaks/YouTubeHeader/YTPlayerViewController.h"
|
||||
#import "Tweaks/YouTubeHeader/YTWatchController.h"
|
||||
#import "Tweaks/YouTubeHeader/YTIGuideResponse.h"
|
||||
#import "Tweaks/YouTubeHeader/YTIGuideResponseSupportedRenderers.h"
|
||||
#import "Tweaks/YouTubeHeader/YTIPivotBarSupportedRenderers.h"
|
||||
#import "Tweaks/YouTubeHeader/YTIPivotBarRenderer.h"
|
||||
#import "Tweaks/YouTubeHeader/YTIBrowseRequest.h"
|
||||
#import "Tweaks/YouTubeHeader/YTCommonColorPalette.h"
|
||||
#import "Tweaks/YouTubeHeader/ASCollectionView.h"
|
||||
#import "Tweaks/YouTubeHeader/YTPlayerOverlay.h"
|
||||
#import "Tweaks/YouTubeHeader/YTPlayerOverlayProvider.h"
|
||||
#import "Tweaks/YouTubeHeader/YTReelWatchPlaybackOverlayView.h"
|
||||
#import "Tweaks/YouTubeHeader/YTReelPlayerBottomButton.h"
|
||||
#import "Tweaks/YouTubeHeader/YTReelPlayerViewController.h"
|
||||
#import "Tweaks/YouTubeHeader/YTAlertView.h"
|
||||
#import "Tweaks/YouTubeHeader/YTISectionListRenderer.h"
|
||||
#import "Tweaks/YouTubeHeader/YTPivotBarItemView.h"
|
||||
|
||||
#define LOC(x) [tweakBundle localizedStringForKey:x value:nil table:nil]
|
||||
#define YT_BUNDLE_ID @"com.google.ios.youtube"
|
||||
#define YT_NAME @"YouTube"
|
||||
|
||||
// YTSpeed
|
||||
@interface YTVarispeedSwitchControllerOption : NSObject
|
||||
- (id)initWithTitle:(id)title rate:(float)rate;
|
||||
@end
|
||||
|
||||
@interface MLHAMQueuePlayer : NSObject
|
||||
@property id playerEventCenter;
|
||||
@property id delegate;
|
||||
- (void)setRate:(float)rate;
|
||||
- (void)internalSetRate;
|
||||
@end
|
||||
|
||||
@interface MLPlayerStickySettings : NSObject
|
||||
- (void)setRate:(float)rate;
|
||||
@end
|
||||
|
||||
@interface MLPlayerEventCenter : NSObject
|
||||
- (void)broadcastRateChange:(float)rate;
|
||||
@end
|
||||
|
||||
@interface HAMPlayerInternal : NSObject
|
||||
- (void)setRate:(float)rate;
|
||||
@end
|
||||
|
||||
// YTLitePlus
|
||||
@interface YTChipCloudCell : UIView
|
||||
@end
|
||||
|
||||
@interface YTPlayabilityResolutionUserActionUIController : NSObject // Skips content warning before playing *some videos - @PoomSmart
|
||||
- (void)confirmAlertDidPressConfirm;
|
||||
@end
|
||||
|
||||
@interface YTMainAppControlsOverlayView: UIView
|
||||
@end
|
||||
|
||||
@interface YTTransportControlsButtonView : UIView
|
||||
@end
|
||||
|
||||
@interface YTPlaybackButton : UIControl
|
||||
@end
|
||||
|
||||
@interface YTSegmentableInlinePlayerBarView
|
||||
@property (nonatomic, assign, readwrite) BOOL enableSnapToChapter;
|
||||
@end
|
||||
|
||||
// Cercube button in Nav bar
|
||||
@interface MDCButton : UIButton
|
||||
@end
|
||||
|
||||
@interface YTRightNavigationButtons : UIView
|
||||
@property (nonatomic, strong, readwrite) MDCButton *cercubeButton;
|
||||
@property YTQTMButton *notificationButton;
|
||||
@property YTQTMButton *sponsorBlockButton;
|
||||
@end
|
||||
|
||||
// IAmYouTube
|
||||
@interface SSOConfiguration : NSObject
|
||||
@end
|
||||
|
||||
// BigYTMiniPlayer
|
||||
@interface YTMainAppVideoPlayerOverlayView : UIView
|
||||
- (UIViewController *)_viewControllerForAncestor;
|
||||
@end
|
||||
|
||||
@interface YTWatchMiniBarView : UIView
|
||||
@end
|
||||
|
||||
// YTAutoFullscreen
|
||||
@interface YTPlayerViewController (YTAFS)
|
||||
- (void)autoFullscreen;
|
||||
@end
|
||||
|
||||
// YTNoShorts
|
||||
@interface ELMCellNode
|
||||
@end
|
||||
|
||||
@interface _ASCollectionViewCell : UICollectionViewCell
|
||||
- (id)node;
|
||||
@end
|
||||
|
||||
@interface YTAsyncCollectionView : UICollectionView
|
||||
- (void)removeShortsCellAtIndexPath:(NSIndexPath *)indexPath;
|
||||
@end
|
||||
|
||||
@interface YTPlayerView : UIView
|
||||
- (void)downloadVideo;
|
||||
@end
|
||||
|
||||
|
||||
// App Theme
|
||||
@interface YCHLiveChatView : UIView
|
||||
@end
|
||||
|
||||
@interface YTFullscreenEngagementOverlayView : UIView
|
||||
@end
|
||||
|
||||
@interface YTRelatedVideosView : UIView
|
||||
@end
|
||||
|
||||
@interface ELMView: UIView
|
||||
@end
|
||||
|
||||
@interface ASWAppSwitcherCollectionViewCell: UIView
|
||||
@end
|
||||
|
||||
@interface ASScrollView : UIView
|
||||
@end
|
||||
|
||||
@interface UIKeyboardLayoutStar : UIView
|
||||
@end
|
||||
|
||||
@interface UIKeyboardDockView : UIView
|
||||
@end
|
||||
|
||||
@interface _ASDisplayView : UIView
|
||||
@end
|
||||
|
||||
@interface YTCommentDetailHeaderCell : UIView
|
||||
@end
|
||||
|
||||
@interface SponsorBlockSettingsController : UITableViewController
|
||||
@end
|
||||
|
||||
@interface SponsorBlockViewController : UIViewController
|
||||
@end
|
||||
|
||||
@interface UICandidateViewController : UIViewController
|
||||
@end
|
||||
|
||||
@interface UIPredictionViewController : UIViewController
|
||||
@end
|
||||
40
Makefile
|
|
@ -1,21 +1,18 @@
|
|||
TARGET = iphone:clang:16.5:14.0
|
||||
TARGET = iphone:clang:15.5:14.0
|
||||
YTLitePlus_USE_FISHHOOK = 0
|
||||
ARCHS = arm64
|
||||
MODULES = jailed
|
||||
FINALPACKAGE = 1
|
||||
CODESIGN_IPA = 0
|
||||
PACKAGE_VERSION = X.X.X-X.X
|
||||
PACKAGE_VERSION = 18.23.3-2.0
|
||||
|
||||
TWEAK_NAME = YTLitePlus
|
||||
DISPLAY_NAME = YouTube
|
||||
BUNDLE_ID = com.google.ios.youtube
|
||||
|
||||
EXTRA_CFLAGS := $(addprefix -I,$(shell find Tweaks/FLEX -name '*.h' -exec dirname {} \;)) -I$(THEOS_PROJECT_DIR)/Tweaks
|
||||
EXTRA_CFLAGS := $(addprefix -I,$(shell find Tweaks/FLEX -name '*.h' -exec dirname {} \;))
|
||||
|
||||
# Allow YouTubeHeader to be accessible using #include <...>
|
||||
export ADDITIONAL_CFLAGS = -I$(THEOS_PROJECT_DIR)/Tweaks
|
||||
|
||||
YTLitePlus_INJECT_DYLIBS = Tweaks/YTLite/var/jb/Library/MobileSubstrate/DynamicLibraries/YTLite.dylib .theos/obj/libcolorpicker.dylib .theos/obj/iSponsorBlock.dylib .theos/obj/YTUHD.dylib .theos/obj/YouPiP.dylib .theos/obj/YouTubeDislikesReturn.dylib .theos/obj/YTABConfig.dylib .theos/obj/YouMute.dylib .theos/obj/DontEatMyContent.dylib .theos/obj/YTHoldForSpeed.dylib .theos/obj/YTVideoOverlay.dylib .theos/obj/YouGroupSettings.dylib .theos/obj/YouQuality.dylib .theos/obj/YouTimeStamp.dylib .theos/obj/YouLoop.dylib
|
||||
YTLitePlus_INJECT_DYLIBS = .theos/obj/libcolorpicker.dylib .theos/obj/iSponsorBlock.dylib .theos/obj/YTUHD.dylib .theos/obj/YouPiP.dylib .theos/obj/YouTubeDislikesReturn.dylib .theos/obj/YTABConfig.dylib .theos/obj/YouMute.dylib .theos/obj/DontEatMyContent.dylib .theos/obj/YTHoldForSpeed.dylib .theos/obj/YTLite.dylib
|
||||
YTLitePlus_FILES = YTLitePlus.xm $(shell find Source -name '*.xm' -o -name '*.x' -o -name '*.m') $(shell find Tweaks/FLEX -type f \( -iname \*.c -o -iname \*.m -o -iname \*.mm \))
|
||||
YTLitePlus_IPA = ./tmp/Payload/YouTube.app
|
||||
YTLitePlus_CFLAGS = -fobjc-arc -Wno-deprecated-declarations -Wno-unsupported-availability-guard -Wno-unused-but-set-variable -DTWEAK_VERSION=$(PACKAGE_VERSION) $(EXTRA_CFLAGS)
|
||||
|
|
@ -23,18 +20,13 @@ YTLitePlus_FRAMEWORKS = UIKit Security
|
|||
|
||||
include $(THEOS)/makefiles/common.mk
|
||||
include $(THEOS_MAKE_PATH)/tweak.mk
|
||||
SUBPROJECTS += Tweaks/Alderis Tweaks/iSponsorBlock Tweaks/YTUHD Tweaks/YouPiP Tweaks/Return-YouTube-Dislikes Tweaks/YTABConfig Tweaks/YouMute Tweaks/DontEatMyContent Tweaks/YTHoldForSpeed Tweaks/YTVideoOverlay Tweaks/YouQuality Tweaks/YouTimeStamp Tweaks/YouGroupSettings Tweaks/YouLoop
|
||||
SUBPROJECTS += Tweaks/Alderis Tweaks/iSponsorBlock Tweaks/YTUHD Tweaks/YouPiP Tweaks/Return-YouTube-Dislikes Tweaks/YTABConfig Tweaks/YouMute Tweaks/DontEatMyContent Tweaks/YTLite Tweaks/YTHoldForSpeed
|
||||
include $(THEOS_MAKE_PATH)/aggregate.mk
|
||||
|
||||
YTLITE_PATH = Tweaks/YTLite
|
||||
YTLITE_VERSION := 5.0.1
|
||||
YTLITE_DEB = $(YTLITE_PATH)/com.dvntm.ytlite_$(YTLITE_VERSION)_iphoneos-arm64.deb
|
||||
YTLITE_DYLIB = $(YTLITE_PATH)/var/jb/Library/MobileSubstrate/DynamicLibraries/YTLite.dylib
|
||||
YTLITE_BUNDLE = $(YTLITE_PATH)/var/jb/Library/Application\ Support/YTLite.bundle
|
||||
before-package::
|
||||
@echo -e "==> \033[1mMoving tweak's bundle to Resources/...\033[0m"
|
||||
@mkdir -p Resources/Frameworks/Alderis.framework && find .theos/obj/install/Library/Frameworks/Alderis.framework -maxdepth 1 -type f -exec cp {} Resources/Frameworks/Alderis.framework/ \;
|
||||
@cp -R Tweaks/YTLite/var/jb/Library/Application\ Support/YTLite.bundle Resources/
|
||||
@cp -R Tweaks/YTLite/layout/Library/Application\ Support/YTLite.bundle Resources/
|
||||
@cp -R Tweaks/YTUHD/layout/Library/Application\ Support/YTUHD.bundle Resources/
|
||||
@cp -R Tweaks/YouPiP/layout/Library/Application\ Support/YouPiP.bundle Resources/
|
||||
@cp -R Tweaks/Return-YouTube-Dislikes/layout/Library/Application\ Support/RYD.bundle Resources/
|
||||
|
|
@ -43,26 +35,8 @@ before-package::
|
|||
@cp -R Tweaks/DontEatMyContent/layout/Library/Application\ Support/DontEatMyContent.bundle Resources/
|
||||
@cp -R Tweaks/YTHoldForSpeed/layout/Library/Application\ Support/YTHoldForSpeed.bundle Resources/
|
||||
@cp -R Tweaks/iSponsorBlock/layout/Library/Application\ Support/iSponsorBlock.bundle Resources/
|
||||
@cp -R Tweaks/YTVideoOverlay/layout/Library/Application\ Support/YTVideoOverlay.bundle Resources/
|
||||
@cp -R Tweaks/YouQuality/layout/Library/Application\ Support/YouQuality.bundle Resources/
|
||||
@cp -R Tweaks/YouTimeStamp/layout/Library/Application\ Support/YouTimeStamp.bundle Resources/
|
||||
@cp -R Tweaks/YouLoop/layout/Library/Application\ Support/YouLoop.bundle Resources/
|
||||
@cp -R lang/YTLitePlus.bundle Resources/
|
||||
@echo -e "==> \033[1mChanging the installation path of dylibs...\033[0m"
|
||||
@ldid -r .theos/obj/iSponsorBlock.dylib && install_name_tool -change /usr/lib/libcolorpicker.dylib @rpath/libcolorpicker.dylib .theos/obj/iSponsorBlock.dylib
|
||||
@codesign --remove-signature .theos/obj/libcolorpicker.dylib && install_name_tool -change /Library/Frameworks/Alderis.framework/Alderis @rpath/Alderis.framework/Alderis .theos/obj/libcolorpicker.dylib
|
||||
|
||||
internal-clean::
|
||||
@rm -rf $(YTLITE_PATH)/*
|
||||
|
||||
before-all::
|
||||
@if [[ ! -f $(YTLITE_DEB) ]]; then \
|
||||
rm -rf $(YTLITE_PATH)/*; \
|
||||
$(PRINT_FORMAT_BLUE) "Downloading YTLite"; \
|
||||
echo "YTLITE_VERSION: $(YTLITE_VERSION)"; \
|
||||
curl -s -L "https://github.com/dayanch96/YTLite/releases/download/v$(YTLITE_VERSION)/com.dvntm.ytlite_$(YTLITE_VERSION)_iphoneos-arm64.deb" -o $(YTLITE_DEB); \
|
||||
tar -xf $(YTLITE_DEB) -C $(YTLITE_PATH); tar -xf $(YTLITE_PATH)/data.tar* -C $(YTLITE_PATH); \
|
||||
if [[ ! -f $(YTLITE_DYLIB) || ! -d $(YTLITE_BUNDLE) ]]; then \
|
||||
$(PRINT_FORMAT_ERROR) "Failed to extract YTLite"; exit 1; \
|
||||
fi; \
|
||||
fi
|
||||
|
||||
361
README.md
|
|
@ -1,151 +1,296 @@
|
|||
## YTLite with more features!
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
<p align="center">
|
||||
<img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Banner.png" alt="YTLitePlus Banner" />
|
||||
<img src="https://img.shields.io/badge/Platform-iOS%20%7C%20iPadOS%2014.0%2B-yellow" alt="Badge"/>
|
||||
</p>
|
||||
|
||||
<a href="https://tinyurl.com/YTLiteAltstore"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Buttons/Altstore.png" height="70"></a>
|
||||
|
||||
<a href="https://balackburn.github.io/YTLitePlus"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Buttons/Website.png" height="70"></a>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/Balackburn/YTLitePlus/releases/latest"><img src="https://custom-icon-badges.demolab.com/github/v/release/arichorn/YTLitePlus?color=brightgreen&label=Latest%20release" alt="Badge"></img></a>
|
||||
<a href="https://github.com/Balackburn/YTLitePlus/releases/latest"><img src="https://img.shields.io/github/downloads/arichorn/YTLitePlus/total?label=Download" alt="Badge"></img></a>
|
||||
<a href="https://github.com/Balackburn/YTLitePlus/commit"><img src="https://custom-icon-badges.demolab.com/github/last-commit/arichorn/YTLitePlus?logo=history&logoColor=white&label=Last commit" alt="Badge"></img></a>
|
||||
</p>
|
||||
|
||||

|
||||
[](https://developer.apple.com/iphone/index.action)
|
||||
<a href="https://github.com/YTLitePlus/YTLitePlus/commit"><img src="https://custom-icon-badges.demolab.com/github/last-commit/Balackburn/YTLitePlus?style=flat&color=black&labelColor=black&logo=history&logoColor=white&label=Last commit" alt="Badge"></img></a>
|
||||
<a href="https://github.com/YTLitePlus/YTLitePlus/releases/latest"><img src="https://custom-icon-badges.demolab.com/github/v/release/Balackburn/YTLitePlus?labelColor=black&style=flat&color=black&label=Latest%20release" alt="Badge"></img></a>
|
||||
<p align="center">
|
||||
<img src="https://img.shields.io/github/stars/arichorn/YTLitePlus?style=social" alt="Badge"/>
|
||||
<img src="https://img.shields.io/github/forks/arichorn/YTLitePlus?style=social" alt="Badge"/>
|
||||
<a href="https://github.com/qnblackcat/uYouPlus#support-the-developers"><img src="https://img.shields.io/badge/-Support-lightgrey?style=social&logo=paypal" alt="Badge"></img></a>
|
||||
</p>
|
||||
|
||||
# Table of Contents
|
||||
<a href="#credits"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Buttons/TableOfContents/Credits.png" width="170"></a>
|
||||
|
||||
<a href="#features"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Buttons/TableOfContents/Features.png" width="170"></a>
|
||||
|
||||
<a href="#altstore"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Buttons/TableOfContents/Altstore.png" width="170"></a>
|
||||
|
||||
<a href="#donations"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Buttons/TableOfContents/Donations.png" width="170"></a>
|
||||
|
||||
<a href="#building"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Buttons/TableOfContents/Building.png" width="170"></a>
|
||||
* [Credits](#credits)
|
||||
* [Features](#features)
|
||||
* [Known issues](#known-issues)
|
||||
* [Download (IPA)](#download-ipa)
|
||||
* [Support the developers!](#support-the-developers)
|
||||
* [Building (optional)](#building-optional)
|
||||
|
||||
# Credits
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/dayanch96"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/dayanch96.png" width="100px;" alt="dayanch96"/></a></td>
|
||||
<td align="center"><a href="https://github.com/Balackburn"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/Balackburn.png" width="100px;" alt="Balackburn"/></a></td>
|
||||
<td align="center"><a href="https://github.com/arichornloverALT"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/arichornloverALT.png" width="100px;" alt="arichornloverALT"/></a></td>
|
||||
<td align="center"><a href="https://github.com/PoomSmart"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/PoomSmart.png" width="100px;" alt="PoomSmart"/></a></td>
|
||||
<td align="center"><a href="https://github.com/qnblackcat"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/qnblackcat.png" width="100px;" alt="qnblackcat"/></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/SKEIDs"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/SKEIDs.png" width="100px;" alt="SKEIDs"/></a></td>
|
||||
<td align="center"><a href="https://github.com/asdfzxcvbn"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/asdfzxcvbn.png" width="100px;" alt="asdfzxcvbn"/></a></td>
|
||||
<td align="center"><a href="https://github.com/matt911"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/matt911.png" width="100px;" alt="matt911"/></a></td>
|
||||
<td align="center"><a href="https://github.com/bhackel"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/bhackel.png" width="100px;" alt="bhackel"/></a></td>
|
||||
<td align="center"><a href="https://github.com/AlexInABox"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/AlexInABox.png" width="100px;" alt="AlexInABox"/></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/Glenta"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/Glenta.png" width="100px;" alt="Glenta"/></a></td>
|
||||
<td align="center"><a href="https://github.com/gototheskinny"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/gototheskinny.png" width="100px;" alt="gototheskinny"/></a></td>
|
||||
<td align="center"><a href="https://github.com/MrAlucardDante"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/MrAlucardDante.png" width="100px;" alt="MrAlucardDante"/></a></td>
|
||||
<td align="center"><a href="https://github.com/Galactic-Dev"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/Galactic-Dev.png" width="100px;" alt="Galactic-Dev"/></a></td>
|
||||
<td align="center"><a href="https://github.com/AhmedBafkir"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/AhmedBafkir.png" width="100px;" alt="AhmedBafkir"/></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/MiRO92"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/MiRO92.png" width="100px;" alt="MiRO92"/></a></td>
|
||||
<td align="center"><a href="https://github.com/ichitaso"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/ichitaso.png" width="100px;" alt="ichitaso"/></a></td>
|
||||
<td align="center"><a href="https://github.com/Deci8BelioS"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/Deci8BelioS.png" width="100px;" alt="Deci8BelioS"/></a></td>
|
||||
<td align="center"><a href="https://github.com/julioverne"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/julioverne.png" width="100px;" alt="julioverne"/></a></td>
|
||||
<td align="center"><a href="https://github.com/therealFoxster"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/therealFoxster.png" width="100px;" alt="therealFoxster"/></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/Lyvendia"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/Lyvendia.png" width="100px;" alt="Lyvendia"/></a></td>
|
||||
<td align="center"><a href="https://github.com/ssuesskind"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/ssuesskind.png" width="100px;" alt="ssuesskind"/></a></td>
|
||||
<td align="center"><a href="https://github.com/hbang"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/hbang.png" width="100px;" alt="hbang"/></a></td>
|
||||
<td align="center"><a href="https://github.com/level3tjg"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/level3tjg.png" width="100px;" alt="level3tjg"/></a></td>
|
||||
<td align="center"><a href="https://github.com/zSaaiq"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/zSaaiq.png" width="100px;" alt="zSaaiq"/></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/ISnackable"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/ISnackable.png" width="100px;" alt="ISnackable"/></a></td>
|
||||
<td align="center"><a href="https://github.com/VictorxD70"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/VictorxD70.png" width="100px;" alt="VictorxD70"/></a></td>
|
||||
<td align="center"><a href="https://github.com/Macleykun"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/Macleykun.png" width="100px;" alt="Macleykun"/></a></td>
|
||||
<td align="center"><a href="https://github.com/BandarHL"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/BandarHL.png" width="100px;" alt="BandarHL"/></a></td>
|
||||
<td align="center"><a href="https://github.com/CokePokes"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Credits/CokePokes.png" width="100px;" alt="CokePokes"/></a></td>
|
||||
</tr>
|
||||
<table id='maintainer credit'>
|
||||
Special thanks to these developer(s) for maintaining and improving YTLitePlus (@qnblackcat is the OG dev)
|
||||
<tr>
|
||||
<td id='arichorn'>
|
||||
<a href='https://github.com/arichorn'>
|
||||
<img src='https://github.com/arichorn.png' width='140px;'>
|
||||
</a>
|
||||
<h4 align='center'><a href='https://github.com/arichorn'>arichorn</a></h4>
|
||||
</td>
|
||||
<td id='qnblackcat'>
|
||||
<a href='https://github.com/qnblackcat'>
|
||||
<img src='https://github.com/qnblackcat.png' width='140px;'>
|
||||
</a>
|
||||
<h4 align='center'><a href='https://github.com/qnblackcat'>Qnblackcat</a></h4>
|
||||
</td>
|
||||
<td id='dayanch96'>
|
||||
<a href='https://github.com/dayanch96'>
|
||||
<img src='https://github.com/dayanch96.png' width='140px;'>
|
||||
</a>
|
||||
<h4 align='center'><a href='https://github.com/dayanch96'>dayanch96</a></h4>
|
||||
</td>
|
||||
<td id='ssuesskind'>
|
||||
<a href='https://github.com/ssuesskind'>
|
||||
<img src='https://github.com/ssuesskind.png' width='140px;'>
|
||||
</a>
|
||||
<h4 align='center'><a href='https://github.com/ssuesskind'>ssuesskind</a></h4>
|
||||
</td>
|
||||
|
||||
<table id='credit'>
|
||||
Special thanks to all the developers who have contributed to CercubePlus/YTLitePlus!
|
||||
|
||||
(YTLite is an original tweak by dayanch96 @dayanch96)
|
||||
<tr>
|
||||
<td id='PoomSmart'>
|
||||
<a href='https://github.com/PoomSmart'>
|
||||
<img src='https://github.com/PoomSmart.png' width='140px;'>
|
||||
</a>
|
||||
<h4 align='center'><a href='https://github.com/PoomSmart'>PoomSmart</a></h4>
|
||||
</td>
|
||||
<td id='miro92'>
|
||||
<a href='https://github.com/MiRO92'>
|
||||
<img src='https://github.com/MiRO92.png' width='140px;'>
|
||||
</a>
|
||||
<h4 align='center'><a href='https://twitter.com/miro92'>MiRO92</a></h4>
|
||||
</td>
|
||||
<td id='level3tjg'>
|
||||
<a href='https://github.com/level3tjg'>
|
||||
<img src='https://github.com/level3tjg.png' width='140px;'>
|
||||
</a>
|
||||
<h4 align='center'><a href='https://twitter.com/level3tjg'>level3tjg</a></h4>
|
||||
</td>
|
||||
<td id='bandarHL'>
|
||||
<a href='https://github.com/BandarHL'>
|
||||
<img src='https://github.com/BandarHL.png' width='140px;'>
|
||||
</a>
|
||||
<h4 align='center'><a href='https://twitter.com/bandarhl'>BandarHelal</a></h4>
|
||||
</td>
|
||||
<td id='galactic-dev'>
|
||||
<a href='https://github.com/Galactic-Dev'>
|
||||
<img src='https://github.com/Galactic-Dev.png' width='140px;'>
|
||||
</a>
|
||||
<h4 align='center'><a href='https://twitter.com/dev_galactic'>galactic</a></h4>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td id='hbang'>
|
||||
<a href='https://github.com/hbang'>
|
||||
<img src='https://github.com/hbang.png' width='140px;'>
|
||||
</a>
|
||||
<h4 align='center'><a href='https://twitter.com/hashbang'>HASHBANG</a></h4>
|
||||
</td>
|
||||
<td id='lyvendia'>
|
||||
<a href='https://github.com/Lyvendia'>
|
||||
<img src='https://github.com/Lyvendia.png' width='140px;'>
|
||||
</a>
|
||||
<h4 align='center'><a href='https://github.com/Lyvendia'>Lyvendia</a></h4>
|
||||
</td>
|
||||
<td id='foxster'>
|
||||
<a href='https://github.com/therealFoxster'>
|
||||
<img src='https://github.com/therealFoxster.png' width='140px;'>
|
||||
</a>
|
||||
<h4 align='center'><a href='https://twitter.com/therealFoxster'>Foxster</a></h4>
|
||||
</td>
|
||||
<td id='julioverne'>
|
||||
<a href='https://github.com/julioverne'>
|
||||
<img src='https://github.com/julioverne.png' width='140px;'>
|
||||
</a>
|
||||
<h4 align='center'><a href='https://twitter.com/ijulioverne'>julioverne</a></h4>
|
||||
</td>
|
||||
<td id='ichitaso'>
|
||||
<a href='https://github.com/ichitaso'>
|
||||
<img src='https://github.com/ichitaso.png' width='140px;'>
|
||||
</a>
|
||||
<h4 align='center'><a href='https://twitter.com/ichitaso'>ichitaso</a></h4>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td id='ahmed-bafkir'>
|
||||
<a href='https://github.com/AhmedBafkir'>
|
||||
<img src='https://github.com/AhmedBafkir.png' width='140px;'>
|
||||
</a>
|
||||
<h4 align='center'><a href='https://twitter.com/Peaceful_0'>Ahmed Bafkir</a></h4>
|
||||
</td>
|
||||
<td id='cokepokes'>
|
||||
<a href='https://github.com/CokePokes'>
|
||||
<img src='https://github.com/CokePokes.png' width='140px;'>
|
||||
</a>
|
||||
<h4 align='center'><a href='https://twitter.com/cokepokes'>CokePokes</a></h4>
|
||||
</td>
|
||||
<td id='isnackable'>
|
||||
<a href='https://github.com/ISnackable'>
|
||||
<img src='https://github.com/ISnackable.png' width='140px;'>
|
||||
</a>
|
||||
<h4 align='center'><a href='https://isnackable.me/'>Tommy Teo</a></h4>
|
||||
</td>
|
||||
<td id='SKIEDs'>
|
||||
<a href='https://github.com/SKEIDs'>
|
||||
<img src='https://github.com/SKEIDs.png' width='140px;'>
|
||||
</a>
|
||||
<h4 align='center'><a href='https://github.com/SKEIDs'>SKIEDs</a></h4>
|
||||
</td>
|
||||
<td id='theos-team'>
|
||||
<a href='https://github.com/theos/theos'>
|
||||
<img src='https://github.com/theos.png' width='140px;'>
|
||||
</a>
|
||||
<h4 align='center'><a href='https://theos.dev'>theos</a></h4>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
# Features
|
||||
|
||||
1. **YTLite**: A tweak that enhances the YouTube experience by removing ads, enabling background playback and offering over 60 customization options.
|
||||
1. **YTLite:**
|
||||
|
||||
2. **YTUHD**: This tweak unlocks 1440p (2K) and 2160p (4K) resolutions in the iOS YouTube app.
|
||||
- Block all advertisements & Enable background playback.
|
||||
|
||||
3. **YouPiP**: Enables native Picture-in-Picture feature for videos in the YouTube app.
|
||||
- Set default player quality on WiFi & Celullar.
|
||||
|
||||
4. **YTABConfig**: Adds a new section named "A/B" in the YouTube app settings where all features can be toggled freely by the user.
|
||||
- Save videos in high resolution, save videos as audio-only, save public playlists (beta).
|
||||
|
||||
5. **YouMute**: Allows users to mute/unmute videos directly in the YouTube Video Player.
|
||||
- And many more...
|
||||
|
||||
6. **DontEatMyContent**: Prevents the notch/Dynamic Island from covering 2:1 video content in YouTube.
|
||||
2. **iSponsorBlock:** Skips annoying sponsor ads inside videos. iSponsorBlock is based on [SponsorBlock engine](https://sponsor.ajay.app/). Basically, this is the iOS version of the SponsorBlock extension.
|
||||
|
||||
7. **Return YouTube Dislikes**: Brings back Dislike counts under YouTube videos using ReturnYoutubeDislike's API.
|
||||
3. **YouPiP:** enable YouTube's **native PiP**. More options are in YouTube Settings => General.
|
||||
|
||||
8. **iSponsorBlock**: Skips annoying sponsor ads inside YouTube videos.
|
||||
4. **YTUHD:** unlock VP9 codec and in effect, enables video quality of 2K and 4K. You can configure YTUHD in YouTube's Settings - Video quality preferences.
|
||||
|
||||
9. **YouRememberCaption**: Makes YouTube remember your video caption setting.
|
||||
5. **YouTube Dislike Return:** brings back Dislike counts under YouTube videos using **ReturnYoutubeDislike**'s API.
|
||||
|
||||
10. **YTNoTracking**: An iOS YouTube Tweak that disables Tracking Parameters in the YouTube App.
|
||||
<details>
|
||||
<summary>and many more...!</summary>
|
||||
|
||||
12. **YTNoCheckLocalNetWor**k: Blocks the Local Network permission popup in YouTube.
|
||||
6. **YTClassicVideoQuality:** since YouTube v16.xx, you need one more step to change the video quality. YTClassicVideoQuality brings back the old video quality selector, which is a lot better than the new one.
|
||||
|
||||
13. **BigYTMiniPlayer**: Jailbreak tweak that makes the miniplayer in youtube easier to see.
|
||||
7. **YTNoHoverCards:** offer an option to enable/disable the annoying suggested videos show up at the end of the videos.
|
||||
|
||||
14. **YTSpeed**: Adds 2.25x to 5x playback speed options in the YouTube video player.
|
||||
8. **YTABGoodies:** allow you to disable some YouTube A/B testing features. It is a combination of several tweaks, such as:
|
||||
|
||||
15. **YTHoldForSpeed**: Allows you to quickly toggle between a selected video playback speed by tapping and holding on the video player in the YouTube application.
|
||||
- YouAreThere: disable "Video paused. Continue watching?" popup in the YouTube app when you play a long video.
|
||||
|
||||
16. **YTVideoOverlay**: A helper tweak that adds buttons on the YouTube video overlay.
|
||||
- YouRememberCaption: make YouTube remember your video caption setting (if not already).
|
||||
|
||||
17. **YouQuality**: Enables you to view and change video quality in YouTube faster.
|
||||
- YTNoCheckLocalNetwork: block the Local Network permission popup.
|
||||
|
||||
18. **YTNoModernUI**: This tweak changes and removes some newer UI elements from the YouTube app such as some rounded buttons, old progress bar, and old buffer bar.
|
||||
9. **NOYTPremium:** remove YouTube Premium upsell alerts.
|
||||
|
||||
19. **OLEDDarkmode**: Replace official Youtube darkmode with a true OLED darkmode.
|
||||
10. **YTSpeed**: a toggleable tweak to add 2.25x, 2.5x, 2.75x, 3x, 3.25x, 3.5x, 3.75x, 4x & 5x playback speed options in the video player.
|
||||
|
||||
20. **OLDDarkmode**: Replace new official Youtube darkmode with old (grey) Youtube darkmode.
|
||||
11. **YTMiniplayerEnabler**: enable Miniplayer for all YouTube videos.
|
||||
|
||||
21. **LowContrastMode**: Makes the UI interface look dimmer to make it easier on the eyes. (App Compatibility: v17.33.2-v17.38.10)
|
||||
12. **DontEatMyContent**: prevent the notch/Dynamic Island from munching on 2:1 video content in YouTube.
|
||||
|
||||
# AltStore
|
||||
13. **YTShortsProgress**: always enable progress bar and scrubbing in YouTube Shorts (iPhone only).
|
||||
|
||||
14. **YTABConfig**: allow user to control over YouTube A/B testing flags.
|
||||
|
||||
15. **YouMute**: Mute/unmute videos in the YouTube Video Player directly.
|
||||
|
||||
16. **LowContrastMode**: makes the YouTube Interface Low Contrast as possible to make it easier on the eyes.
|
||||
|
||||
any many more...
|
||||
</details>
|
||||
|
||||
# Known issues
|
||||
|
||||
1. **YTLite**:
|
||||
|
||||
- Hide Cast button is not working. (Workaround: Hide cast button in CercubePlus settings)
|
||||
|
||||
- The Updated Dark Mode in the YouTube App is not Present or Working in YTLite v5.3.13 & older versions
|
||||
|
||||
2. **LowContrastMode**: this tweak doesn't work everywhere with every ui element on the YouTube App.
|
||||
|
||||
3. **YTUHD**: [Stuttering on 4K videos](https://github.com/qnblackcat/uYouPlus/issues/6).
|
||||
|
||||
4. **YouPiP** (iOS 14.0 - 14.4.2): due to Apple's fault, you may encounter the *speedup-bug* as described [here](https://drive.google.com/file/d/1NKdv1fr_KRWgD8nhkMDfG2eLBnbdeVtX/view?usp=sharing). The bug also happens when you try to play multi-sources of sound at the same time. Enable **LegacyPiP** is a workaround. Keep in mind that LegacyPiP also removes UHD quality and breaks YouTube Autoplay next. Use it at your own risk!
|
||||
|
||||
5. **Not a bug**:
|
||||
|
||||
- The app won't be able to receive push notifications if you use a free developer account to sideload it.
|
||||
|
||||
- It's impossible to fix deep-link (a.k.a Open in the YouTube app). However, you can use this [Shortcuts](https://shortcutsgallery.com/shortcuts/open-in-youtube/) as a workaround (tested on iOS 14). **Credit:** RandomAccessMemories#5025
|
||||
|
||||
# Download (IPA)
|
||||
|
||||
- **CercubePlus** (or you can call it YTLite+) requires iOS & iPadOS 14.0 and later. The latest version of **CercubePlus** can be found in the [Release tab](https://github.com/Balackburn/YTLitePlus/releases/latest).
|
||||
|
||||
- For AltStore user: [Open in AltStore (v18.18.2-5.3.11)](https://tinyurl.com/5a5jn7ra) - It will take a while to install because AltStore needs to download the IPA first.
|
||||
|
||||
<details>
|
||||
<summary>Alternative Download</summary>
|
||||
|
||||
<a href="https://tinyurl.com/YTLiteAltstore"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Buttons/Altstore/Altstore.png" width="200"></a>
|
||||
|
||||
[Open in AltStore (v18.14.1-5.3.11-F2)](https://tinyurl.com/4exxknn8) - This is the **v18.14.1-5.3.11-F2** release. only use this to resolve the OLED/OLD Dark Mode Problem.
|
||||
|
||||
<a href="https://altsource.by.lao.sb/browse/?source=https://raw.githubusercontent.com/Balackburn/YTLitePlusAltstore/main/apps.json"><img src="https://github.com/YTLitePlus/Assets/blob/main/Github/Buttons/Altstore/altsource.by.lao.sb.png" width="200"></a>
|
||||
|
||||
</details>
|
||||
|
||||
<a href="https://raw.githubusercontent.com/Balackburn/YTLitePlusAltstore/main/apps.json"><img src="https://github.com/YTLitePlus/Assets/blob/main/Github/Buttons/Altstore/URL.png" width="200"></a>
|
||||
- Version info: _(May 9 2023)_
|
||||
|
||||
# Donations
|
||||
<a href="https://buymeacoffee.com/dayanch96"><img src="https://github.com/YTLitePlus/Assets/blob/main/Github/Buttons/Donations/Dayanch96(buymeacoffee).png" width="200"></a>
|
||||
|
||||
<a href="https://github.com/sponsors/dayanch96"><img src="https://github.com/YTLitePlus/Assets/blob/main/Github/Buttons/Donations/Dayanch96(Github).png" width="200"></a>
|
||||
<details>
|
||||
<summary>Expand!</summary>
|
||||
|
||||
<a href="https://ko-fi.com/dayanch966"><img src="https://github.com/YTLitePlus/Assets/blob/main/Github/Buttons/Donations/Dayanch96(ko-fi).png" width="200"></a>
|
||||
|
||||
<a href="https://www.paypal.com/paypalme/poomsmart"><img src="https://github.com/YTLitePlus/Assets/blob/main/Github/Buttons/Donations/Poomsmart.png" width="200"></a>
|
||||
| **Tweaks/App** | **Developer** | **Version** | **Open source** |
|
||||
| - | - | :-: | :-: |
|
||||
| **YouTube** | Google Inc | 18.21.3 | ✖︎ |
|
||||
| **YTLite** | Majd Alfhaily | 5.3.11 | ✖︎ |
|
||||
| **Open in YouTube** | [CokePokes](https://github.com/CokePokes/) | 1.2 | ✖︎ |
|
||||
| **YTNoShorts** | [MiRO92](https://twitter.com/miro92) | 1.0.2 | [✔︎](https://github.com/MiRO92/YTNoShorts) |
|
||||
| **iSponsorBlock** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-15 | [✔︎](https://github.com/Galactic-Dev/iSponsorBlock) |
|
||||
| **BigYTMiniPlayer** | [Galactic-Dev](https://github.com/Galactic-Dev) | 1.0-1 | [✔︎](https://github.com/Galactic-Dev/BigYTMiniPlayer) |
|
||||
| **YTNoHoverCards** | [level3tjg](https://twitter.com/level3tjg) | 0.0.3 | [✔︎](https://github.com/level3tjg/YTNoHoverCards) |
|
||||
| **YTMiniplayerEnabler** | [level3tjg](https://twitter.com/level3tjg) | 0.0.2 | [✔︎](https://github.com/level3tjg/YTMiniplayerEnabler) |
|
||||
| **DontEatMyContent** | [therealFoxster](https://github.com/therealFoxster) | 1.0.6 | [✔︎](https://github.com/therealFoxster/DontEatMyContent) |
|
||||
| **LowContrastMode** | arichorn | 1.2.3 | [✔︎](https://github.com/arichorn/LowContrastMode) |
|
||||
| **YTUHD** | PoomSmart | 1.4.0 | [✔︎](https://github.com/PoomSmart/YTUHD) |
|
||||
| **YouPiP** | PoomSmart | 1.7.19-2 | [✔︎](https://github.com/PoomSmart/YouPiP) |
|
||||
| **YouMute** | PoomSmart | 1.1.1-1 | [✔︎](https://github.com/PoomSmart/YouMute) |
|
||||
| **YTABConfig** | PoomSmart | 1.5.0-1 | [✔︎](https://github.com/PoomSmart/YTABConfig) |
|
||||
| **IAmYouTube** | PoomSmart | 1.2.0 | [✔︎](https://github.com/PoomSmart/IAmYouTube) |
|
||||
| **YTReExplore** | PoomSmart | 1.0.2 | [✔︎](https://github.com/PoomSmart/YTReExplore) |
|
||||
| **NoYTPremium** | PoomSmart | 1.0.4 | [✔︎](https://github.com/PoomSmart/NoYTPremium) |
|
||||
| **YTNoPaidPromo** | PoomSmart | 1.0.0 | [✔︎](https://github.com/PoomSmart/YTNoPaidPromo) |
|
||||
| **YTAutoFullScreen** | PoomSmart | 1.0.3 | [✔︎](https://github.com/PoomSmart/YTAutoFullScreen) |
|
||||
| **YTShortsProgress** | PoomSmart | 1.0.2 | [✔︎](https://github.com/PoomSmart/YTShortsProgress) |
|
||||
| **Return YouTube Dislike** | PoomSmart | 1.11.3 | [✔︎](https://github.com/PoomSmart/Return-YouTube-Dislikes) |
|
||||
|
||||
<a href="https://www.paypal.com/paypalme/DBrett684"><img src="https://github.com/YTLitePlus/Assets/blob/main/Github/Buttons/Donations/Galactic-dev(Paypal).png" width="200"></a>
|
||||
|
||||
<a href="https://venmo.com/u/DavidBrett"><img src="https://github.com/YTLitePlus/Assets/blob/main/Github/Buttons/Donations/Galactic-dev(Venmo).png?raw=true" width="200"></a>
|
||||
</details>
|
||||
|
||||
# Support the developers
|
||||
- [**MiRO92**](https://twitter.com/miro92): https://github.com/MiRO92/uYou-for-YouTube#support
|
||||
- [**level3tjg**](https://twitter.com/level3tjg): https://ko-fi.com/level3tjg
|
||||
- [**BandarHL**](https://twitter.com/bandarhl): https://www.paypal.com/paypalme/BandarHL
|
||||
- [**julioverne**](https://twitter.com/ijulioverne): https://www.patreon.com/julioverne
|
||||
- [**Galactic-dev**](https://twitter.com/dev_galactic):
|
||||
- Paypal: https://www.paypal.com/paypalme/DBrett684
|
||||
- Venmo: https://venmo.com/u/DavidBrett
|
||||
|
||||
<a href="https://github.com/MiRO92/uYou-for-YouTube#support"><img src="https://raw.githubusercontent.com/YTLitePlus/Assets/main/Github/Buttons/Donations/MIRO92.png" width="200"></a>
|
||||
|
||||
|
||||
<a href="https://www.paypal.com/paypalme/BandarHL"><img src="https://github.com/YTLitePlus/Assets/blob/main/Github/Buttons/Donations/BandarHL.png" width="200"></a>
|
||||
|
||||
|
||||
<a href="https://ko-fi.com/level3tjg"><img src="https://github.com/YTLitePlus/Assets/blob/main/Github/Buttons/Donations/level3tjg.png?raw=true" width="200"></a>
|
||||
|
||||
|
||||
<a href="https://www.patreon.com/julioverne"><img src="https://github.com/YTLitePlus/Assets/blob/main/Github/Buttons/Donations/julioverne.png?raw=true" width="200"></a>
|
||||
|
||||
# Building
|
||||
# Building(s) (optional)
|
||||
See [YTLitePlus/Building - Wiki](https://github.com/Balackburn/YTLitePlus/wiki/Building)
|
||||
or Another Version [uYouPlus/Building - Wiki](https://github.com/qnblackcat/uYouPlus/wiki/Building)
|
||||
|
|
|
|||
42
Source/Download.xm.bak
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
// Code has been disabled due to some compiling errors.
|
||||
|
||||
#import "../Header.h"
|
||||
|
||||
%ctor {
|
||||
void $YTPlayerView_downloadVideo_register();
|
||||
void $YTPlayerView_layoutSubviews$_register();
|
||||
}
|
||||
|
||||
#ifndef YTPLAYERVIEW_DOWNLOADVIDEO_REGISTER
|
||||
#ifndef YTPLAYERVIEW_LAYOUTSUBVIEWS_REGISTER
|
||||
#define YTPLAYERVIEW_DOWNLOADVIDEO_REGISTER
|
||||
#define YTPLAYERVIEW_LAYOUTSUBVIEWS_REGISTER
|
||||
|
||||
void $YTPlayerView_downloadVideo_register();
|
||||
void $YTPlayerView_layoutSubviews$_register();
|
||||
|
||||
#endif
|
||||
|
||||
// YouTube Video Downloading
|
||||
CHDeclareClass(YTPlayerView);
|
||||
|
||||
CHOptimizedMethod1(self, void, YTPlayerView, layoutSubviews, BOOL, arg1)
|
||||
{
|
||||
CHSuper1(YTPlayerView, layoutSubviews, arg1);
|
||||
CGRect downloadButtonFrame = CGRectMake(0, 0, 100, 50);
|
||||
UIButton *downloadButton = [[UIButton alloc] initWithFrame:downloadButtonFrame];
|
||||
[downloadButton setTitle:@"Download" forState:UIControlStateNormal];
|
||||
[downloadButton addTarget:self action:@selector(downloadVideo) forControlEvents:UIControlEventTouchUpInside];
|
||||
[self addSubview:downloadButton];
|
||||
}
|
||||
|
||||
CHOptimizedMethod0(self, void, YTPlayerView, downloadVideo)
|
||||
{
|
||||
NSString *videoUrlString = @"[Insert YouTube video URL here]";
|
||||
NSURL *videoUrl = [NSURL URLWithString:videoUrlString];
|
||||
NSData *videoData = [NSData dataWithContentsOfURL:videoUrl];
|
||||
|
||||
// Save the video data to a file
|
||||
NSString *filePath = @"[Insert file path here]";
|
||||
[videoData writeToFile:filePath atomically:YES];
|
||||
}
|
||||
1162
Source/Settings.xm
|
|
@ -1,55 +0,0 @@
|
|||
#import "../YTLitePlus.h"
|
||||
|
||||
// Keys for "Copy Settings" button (for: YTLitePlus)
|
||||
// In alphabetical order for tweaks after YTLitePlus
|
||||
NSArray *NSUserDefaultsCopyKeys = @[
|
||||
// YTLitePlus - gathered using get_keys.py
|
||||
@"YTTapToSeek_enabled", @"alwaysShowRemainingTime_enabled", @"bigYTMiniPlayer_enabled", @"castConfirm_enabled",
|
||||
@"disableAccountSection_enabled", @"disableAmbientModeFullscreen_enabled",
|
||||
@"disableAmbientModePortrait_enabled", @"disableAutoplaySection_enabled", @"disableCollapseButton_enabled",
|
||||
@"disableEngagementOverlay_enabled", @"disableLiveChatSection_enabled",
|
||||
@"disableManageAllHistorySection_enabled", @"disableNotificationsSection_enabled",
|
||||
@"disablePrivacySection_enabled", @"disablePullToFull_enabled", @"disableRemainingTime_enabled",
|
||||
@"disableTryNewFeaturesSection_enabled", @"disableVideoQualityPreferencesSection_enabled",
|
||||
@"disableYourDataInYouTubeSection_enabled", @"enableSaveToButton_enabled", @"enableShareButton_enabled",
|
||||
@"enableVersionSpoofer_enabled", @"fixCasting_enabled", @"flex_enabled", @"fullscreenToTheRight_enabled",
|
||||
@"hideAutoplayMiniPreview_enabled", @"hideCastButton_enabled", @"hideHUD_enabled", @"hideHeatwaves_enabled",
|
||||
@"hideHomeTab_enabled", @"hidePreviewCommentSection_enabled", @"hideRightPanel_enabled",
|
||||
@"hideSpeedToast_enabled", @"hideSponsorBlockButton_enabled", @"hideVideoPlayerShadowOverlayButtons_enabled",
|
||||
@"iPadLayout_enabled", @"iPhoneLayout_enabled", @"inline_muted_playback_enabled", @"lowContrastMode_enabled",
|
||||
@"newSettingsUI_enabled", @"oledKeyBoard_enabled", @"playerGesturesHapticFeedback_enabled",
|
||||
@"playerGestures_enabled", @"seekAnywhere_enabled", @"switchCopyandPasteFunctionality_enabled",
|
||||
@"videoPlayerButton_enabled", @"ytNoModernUI_enabled", @"ytStartupAnimation_enabled",
|
||||
// DEMC - https://github.com/therealFoxster/DontEatMyContent/blob/master/Tweak.h
|
||||
@"DEMC_enabled", @"DEMC_colorViewsEnabled", @"DEMC_safeAreaConstant", @"DEMC_disableAmbientMode",
|
||||
@"DEMC_limitZoomToFill", @"DEMC_enableForAllVideos",
|
||||
// iSponsorBlock cannot be exported using this method - it is also being removed in v5
|
||||
// Return-YouTube-Dislike - https://github.com/PoomSmart/Return-YouTube-Dislikes/blob/main/TweakSettings.h
|
||||
@"RYD-ENABLED", @"RYD-VOTE-SUBMISSION", @"RYD-EXACT-LIKE-NUMBER", @"RYD-EXACT-NUMBER",
|
||||
// All YTVideoOverlay Tweaks - https://github.com/PoomSmart/YTVideoOverlay/blob/0fc6d29d1aa9e75f8c13d675daec9365f753d45e/Tweak.x#L28C1-L41C84
|
||||
@"YTVideoOverlay-YouLoop-Enabled", @"YTVideoOverlay-YouTimeStamp-Enabled", @"YTVideoOverlay-YouMute-Enabled",
|
||||
@"YTVideoOverlay-YouQuality-Enabled", @"YTVideoOverlay-YouLoop-Position", @"YTVideoOverlay-YouTimeStamp-Position",
|
||||
@"YTVideoOverlay-YouMute-Position", @"YTVideoOverlay-YouQuality-Position",
|
||||
// YouPiP - https://github.com/PoomSmart/YouPiP/blob/main/Header.h
|
||||
@"YouPiPPosition", @"CompatibilityModeKey", @"PiPActivationMethodKey", @"PiPActivationMethod2Key",
|
||||
@"NoMiniPlayerPiPKey", @"NonBackgroundableKey",
|
||||
// YTABConfig cannot be reasonably exported using this method
|
||||
// YTHoldForSpeed will be removed in v5
|
||||
// YouTube Plus / YTLite cannot be exported using this method
|
||||
// YTUHD - https://github.com/PoomSmart/YTUHD/blob/master/Header.h
|
||||
@"EnableVP9", @"AllVP9",
|
||||
// Useful YouTube Keys
|
||||
@"inline_muted_playback_enabled",
|
||||
];
|
||||
|
||||
|
||||
// Some default values to ignore when exporting settings
|
||||
NSDictionary *NSUserDefaultsCopyKeysDefaults = @{
|
||||
@"fixCasting_enabled": @1,
|
||||
@"inline_muted_playback_enabled": @5,
|
||||
@"newSettingsUI_enabled": @1,
|
||||
@"DEMC_safeAreaConstant": @21.5,
|
||||
@"RYD-ENABLED": @1,
|
||||
@"RYD-VOTE-SUBMISSION": @1,
|
||||
// Duplicate keys are not allowed in NSDictionary. If present, only the last one will be kept.
|
||||
};
|
||||
954
Source/Themes.xm
|
|
@ -1,107 +0,0 @@
|
|||
#import "../YTLitePlus.h"
|
||||
|
||||
|
||||
static int appVersionSpoofer() {
|
||||
return [[NSUserDefaults standardUserDefaults] integerForKey:@"versionSpoofer"];
|
||||
}
|
||||
static BOOL version0() {
|
||||
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 0;
|
||||
}
|
||||
static BOOL version1() {
|
||||
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 1;
|
||||
}
|
||||
static BOOL version2() {
|
||||
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 2;
|
||||
}
|
||||
static BOOL version3() {
|
||||
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 3;
|
||||
}
|
||||
static BOOL version4() {
|
||||
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 4;
|
||||
}
|
||||
static BOOL version5() {
|
||||
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 5;
|
||||
}
|
||||
static BOOL version6() {
|
||||
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 6;
|
||||
}
|
||||
static BOOL version7() {
|
||||
return IsEnabled(@"enableVersionSpoofer_enabled") && appVersionSpoofer() == 7;
|
||||
}
|
||||
|
||||
%group gVersion0
|
||||
%hook YTVersionUtils // Last v18 App Version
|
||||
+ (NSString *)appVersion { return @"18.49.3"; }
|
||||
%end
|
||||
%end
|
||||
|
||||
%group gVersion1
|
||||
%hook YTVersionUtils // Brings back Library Tab
|
||||
+ (NSString *)appVersion { return @"18.34.5"; }
|
||||
%end
|
||||
%end
|
||||
|
||||
%group gVersion2
|
||||
%hook YTVersionUtils // Removes Playables in Explore
|
||||
+ (NSString *)appVersion { return @"18.33.3"; }
|
||||
%end
|
||||
%end
|
||||
|
||||
%group gVersion3
|
||||
%hook YTVersionUtils // Fixes YTClassicVideoQuality + YTSpeed
|
||||
+ (NSString *)appVersion { return @"18.18.2"; }
|
||||
%end
|
||||
%end
|
||||
|
||||
%group gVersion4
|
||||
%hook YTVersionUtils // First v18 App Version
|
||||
+ (NSString *)appVersion { return @"18.01.2"; }
|
||||
%end
|
||||
%end
|
||||
|
||||
%group gVersion5
|
||||
%hook YTVersionUtils // Last v17 App Version
|
||||
+ (NSString *)appVersion { return @"17.49.6"; }
|
||||
%end
|
||||
%end
|
||||
|
||||
%group gVersion6
|
||||
%hook YTVersionUtils // v17.38.10 Fixes LowContrastMode + No Rounded Thumbnails
|
||||
+ (NSString *)appVersion { return @"17.38.10"; }
|
||||
%end
|
||||
%end
|
||||
|
||||
%group gVersion7
|
||||
%hook YTVersionUtils // Oldest Supported App Version (v17)
|
||||
+ (NSString *)appVersion { return @"17.33.2"; }
|
||||
%end
|
||||
%end
|
||||
|
||||
# pragma mark - ctor
|
||||
%ctor {
|
||||
%init;
|
||||
if (version0()) { // 0
|
||||
%init(gVersion0);
|
||||
}
|
||||
if (version1()) { // 1
|
||||
%init(gVersion1);
|
||||
}
|
||||
if (version2()) { // 2
|
||||
%init(gVersion2);
|
||||
}
|
||||
if (version3()) { // 3
|
||||
%init(gVersion3);
|
||||
}
|
||||
if (version4()) { // 4
|
||||
%init(gVersion4);
|
||||
}
|
||||
if (version5()) { // 5
|
||||
%init(gVersion5);
|
||||
}
|
||||
if (version6()) { // 6
|
||||
%init(gVersion6);
|
||||
}
|
||||
if (version7()) { // 7
|
||||
%init(gVersion7);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,100 +0,0 @@
|
|||
import re
|
||||
import os
|
||||
|
||||
def extract_values_from_file(file_path):
|
||||
"""
|
||||
Extracts keys that match the pattern @\"<some_text>_enabled\" from the given file.
|
||||
|
||||
Args:
|
||||
file_path (str): The path to the file to be searched.
|
||||
|
||||
Returns:
|
||||
list: A list of matching keys found in the file.
|
||||
"""
|
||||
# Define the regex pattern to match the strings that resemble the given examples
|
||||
pattern = r'@\"[a-zA-Z0-9_]+_enabled\"'
|
||||
matches = []
|
||||
|
||||
try:
|
||||
# Read the content of the file
|
||||
with open(file_path, 'r') as file:
|
||||
file_content = file.read()
|
||||
|
||||
# Find all matches
|
||||
matches = re.findall(pattern, file_content)
|
||||
except Exception as e:
|
||||
print(f"Error reading {file_path}: {e}")
|
||||
|
||||
return matches
|
||||
|
||||
def format_output(keys):
|
||||
"""
|
||||
Formats the keys with indentation and line breaks if the segment exceeds 120 characters (116 excluding indentation).
|
||||
|
||||
Args:
|
||||
keys (list): The list of keys to be formatted.
|
||||
|
||||
Returns:
|
||||
str: A formatted string with the keys.
|
||||
"""
|
||||
indent = " " * 4
|
||||
line_length_limit = 116 # Limit excluding indentation
|
||||
current_line = indent
|
||||
formatted_output = ""
|
||||
|
||||
for key in keys:
|
||||
# Check if adding the next key would exceed the line length limit
|
||||
if len(current_line) + len(key) + 2 > line_length_limit: # +2 accounts for the comma and space
|
||||
# Add the current line to the formatted output and start a new line
|
||||
formatted_output += current_line.rstrip(", ") + ",\n"
|
||||
current_line = indent # Start a new indented line
|
||||
|
||||
# Add the key to the current line
|
||||
current_line += key + ", "
|
||||
|
||||
# Add the last line to the output
|
||||
formatted_output += current_line.rstrip(", ") # Remove trailing comma and space from the final line
|
||||
return formatted_output
|
||||
|
||||
def find_and_extract_keys():
|
||||
"""
|
||||
Recursively searches for .xm and .h files in the parent directory and extracts keys
|
||||
that match the pattern @\"<some_text>_enabled\". The matching keys are then printed
|
||||
with indentation and line breaks if the line exceeds 120 characters.
|
||||
Ignores SettingsKeys.h
|
||||
|
||||
Usage:
|
||||
1. Place this script in the desired directory.
|
||||
2. Run the script with the command: python extract_keys.py
|
||||
3. The script will search for all .xm and .h files in the parent directory and
|
||||
print any matching keys it finds.
|
||||
|
||||
Note:
|
||||
- The script searches the directory where it is located (the parent directory).
|
||||
- It only looks for files with extensions .xm and .h.
|
||||
"""
|
||||
# Get the parent directory
|
||||
parent_directory = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
# Store the found keys
|
||||
found_keys = set() # Use a set to automatically remove duplicates
|
||||
|
||||
# Walk through the parent directory and find all .xm and .h files
|
||||
for root, dirs, files in os.walk(parent_directory):
|
||||
for file in files:
|
||||
if file.endswith(('.xm', '.h')):
|
||||
# Skip SettingsKeys.h
|
||||
if file == "SettingsKeys.h":
|
||||
continue
|
||||
file_path = os.path.join(root, file)
|
||||
found_keys.update(extract_values_from_file(file_path))
|
||||
|
||||
# Print the found keys with formatting
|
||||
if found_keys:
|
||||
sorted_keys = sorted(found_keys)
|
||||
print(format_output(sorted_keys))
|
||||
else:
|
||||
print("No keys found.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
find_and_extract_keys()
|
||||
|
|
@ -1 +0,0 @@
|
|||
Subproject commit 15b061bf414cf29fd0d4e0e124e9e2ccb99326b0
|
||||
16
Tweaks/Alderis/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
# Crap
|
||||
.DS_Store
|
||||
|
||||
# Xcode
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
xcuserdata
|
||||
*.xccheckout
|
||||
*.xcuserstate
|
||||
|
||||
# Carthage
|
||||
Carthage/
|
||||
|
||||
# Theos
|
||||
.theos
|
||||
packages/
|
||||
36
Tweaks/Alderis/.jazzy.yaml
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
clean: true
|
||||
author: HASHBANG Productions
|
||||
author_url: https://hbang.github.io/
|
||||
github_url: https://github.com/hbang/Alderis
|
||||
root_url: https://hbang.github.io/Alderis/
|
||||
dash_url: https://hbang.github.io/Alderis/docsets/Alderis.xml
|
||||
documentation: info/*.md
|
||||
hide_documentation_coverage: true
|
||||
|
||||
custom_categories:
|
||||
- name: "Guides"
|
||||
children:
|
||||
- "Preference Bundles"
|
||||
- "Migrating to 1.1"
|
||||
|
||||
- name: "Color Picker"
|
||||
children:
|
||||
- ColorPickerViewController
|
||||
- ColorPickerConfiguration
|
||||
- ColorPickerDelegate
|
||||
- ColorPickerTab
|
||||
|
||||
- name: "UI Components"
|
||||
children:
|
||||
- ColorWell
|
||||
|
||||
- name: "Extensions"
|
||||
children:
|
||||
- UIColor
|
||||
- ColorPropertyListValue
|
||||
- String
|
||||
- Array
|
||||
|
||||
- name: "Deprecated"
|
||||
children:
|
||||
- ColorPickerCircleView
|
||||
61
Tweaks/Alderis/.swiftlint.yml
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
disabled_rules:
|
||||
- trailing_comma
|
||||
- nesting
|
||||
- fallthrough
|
||||
- shorthand_operator
|
||||
- todo
|
||||
- large_tuple
|
||||
- identifier_name
|
||||
- type_name
|
||||
- type_body_length
|
||||
# TODO: Why is vertical_parameter_alignment giving false positives?
|
||||
- vertical_parameter_alignment
|
||||
- vertical_parameter_alignment_on_call
|
||||
# TODO: Enable when removing support for older Swift versions (<5.6)
|
||||
- unavailable_condition
|
||||
opt_in_rules:
|
||||
- closure_end_indentation
|
||||
- closure_spacing
|
||||
- contains_over_first_not_nil
|
||||
- empty_count
|
||||
- explicit_init
|
||||
- fatal_error_message
|
||||
- first_where
|
||||
- joined_default_parameter
|
||||
- literal_expression_end_indentation
|
||||
- overridden_super_call
|
||||
- prohibited_super_call
|
||||
- sorted_first_last
|
||||
- unneeded_parentheses_in_closure_argument
|
||||
- vertical_parameter_alignment_on_call
|
||||
- yoda_condition
|
||||
- nslocalizedstring_key
|
||||
- unused_setter_value
|
||||
custom_rules:
|
||||
comment_whitespace:
|
||||
name: "Comment Whitespace"
|
||||
regex: //\S
|
||||
match_kinds: comment
|
||||
message: "Comments must begin with a whitespace character"
|
||||
spaces_not_tabs:
|
||||
name: "Tabs not Spaces"
|
||||
regex: ^( )
|
||||
message: "Use tabs instead of spaces"
|
||||
point_zero:
|
||||
name: "Point Zero"
|
||||
regex: '(?<!iOS\s)(?<!macOS\s)(?<!\.)\b[\d_]+\.0\b'
|
||||
match_kinds:
|
||||
- number
|
||||
- attribute.builtin
|
||||
message: "Don't add a .0 to the end of floating point literals"
|
||||
color_init:
|
||||
name: "Color Initializer"
|
||||
regex: 'UIColor\(red: (.+), green: \1, blue: \1, alpha: .+\)'
|
||||
message: "Use UIColor(white:alpha:)"
|
||||
force_try: warning
|
||||
force_cast: warning
|
||||
function_body_length: 200
|
||||
line_length: 200
|
||||
file_length: 450
|
||||
cyclomatic_complexity: 12
|
||||
function_parameter_count: 7
|
||||
30
Tweaks/Alderis/Alderis.podspec
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
Pod::Spec.new do |spec|
|
||||
spec.name = "Alderis"
|
||||
spec.version = "1.2.0"
|
||||
spec.summary = "A fresh new color picker, with a gentle, fun, and dead simple user interface."
|
||||
spec.description = <<-DESC
|
||||
Alderis is a fresh new color picker, with a gentle, fun, and dead simple user
|
||||
interface. It aims to incorporate the usual elements of a color picker, in a way
|
||||
that users will find easy and fun to use.
|
||||
|
||||
The user can start by selecting a color they like on the initial color palette
|
||||
tab, and either accept it, or refine it using the color wheel and adjustment
|
||||
sliders found on the two other tabs.
|
||||
DESC
|
||||
spec.homepage = "https://github.com/hbang/Alderis"
|
||||
spec.screenshots = "https://github.com/hbang/Alderis/raw/main/screenshots/alderis-1.jpg",
|
||||
"https://github.com/hbang/Alderis/raw/main/screenshots/alderis-2.jpg",
|
||||
"https://github.com/hbang/Alderis/raw/main/screenshots/alderis-3.jpg",
|
||||
"https://github.com/hbang/Alderis/raw/main/screenshots/alderis-4.jpg"
|
||||
spec.license = "Apache License, Version 2.0"
|
||||
spec.author = "HASHBANG Productions"
|
||||
spec.social_media_url = "https://twitter.com/hashbang"
|
||||
|
||||
spec.swift_versions = "5.0"
|
||||
spec.platform = :ios, "12.0"
|
||||
|
||||
spec.source = { :git => "https://github.com/hbang/Alderis.git", :tag => "#{spec.version}" }
|
||||
spec.requires_arc = true
|
||||
spec.source_files = [ "Alderis/*.swift", "Alderis/*.h" ]
|
||||
spec.resource_bundles = { "Alderis" => "Alderis/Assets-ios12.xcassets" }
|
||||
end
|
||||
482
Tweaks/Alderis/Alderis.xcodeproj/project.pbxproj
Normal file
|
|
@ -0,0 +1,482 @@
|
|||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 52;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
4E1C741328266C5900227EC3 /* UIFontDescriptorAdditions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E1C741228266C5900227EC3 /* UIFontDescriptorAdditions.swift */; };
|
||||
4E1C74172826C1F100227EC3 /* ColorPickerAccessibilityViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E1C74162826C1F100227EC3 /* ColorPickerAccessibilityViewController.swift */; };
|
||||
4E1C741928276D5600227EC3 /* TextViewLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E1C741828276D5600227EC3 /* TextViewLabel.swift */; };
|
||||
4E1C741B2827829E00227EC3 /* AccessibilityComplianceLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E1C741A2827829E00227EC3 /* AccessibilityComplianceLabel.swift */; };
|
||||
4E1C741D2827882600227EC3 /* AccessibilityContrastSelector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E1C741C2827882600227EC3 /* AccessibilityContrastSelector.swift */; };
|
||||
4E1C741F2827B3C800227EC3 /* UIFloat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E1C741E2827B3C800227EC3 /* UIFloat.swift */; };
|
||||
4E1C74212827B8F800227EC3 /* NSBeep.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E1C74202827B8F800227EC3 /* NSBeep.swift */; };
|
||||
4E2E6C06282BD5990089E4FB /* GradientView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E2E6C05282BD5990089E4FB /* GradientView.swift */; };
|
||||
569C25522427F57000022C60 /* ColorPickerTabViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 569C25512427F57000022C60 /* ColorPickerTabViewController.swift */; };
|
||||
569C25582428346900022C60 /* ColorPickerMapSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 569C25572428346900022C60 /* ColorPickerMapSlider.swift */; };
|
||||
56C74667242F722A003ED00A /* ColorPickerSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56C74666242F722A003ED00A /* ColorPickerSlider.swift */; };
|
||||
56C74669242F75E3003ED00A /* ColorPickerNumericSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56C74668242F75E3003ED00A /* ColorPickerNumericSlider.swift */; };
|
||||
94A2368C252B5951002B5D0B /* UIColorAdditions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94A2368B252B5951002B5D0B /* UIColorAdditions.swift */; };
|
||||
CF73D33A241F9C23000B1B10 /* Alderis.h in Headers */ = {isa = PBXBuildFile; fileRef = CF73D338241F9C23000B1B10 /* Alderis.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
CF73D344241F9C31000B1B10 /* ColorWell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF73D32D241E49EE000B1B10 /* ColorWell.swift */; };
|
||||
CF73D345241F9C31000B1B10 /* ColorPickerMapViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE70280241CBDE700083903 /* ColorPickerMapViewController.swift */; };
|
||||
CF73D346241F9C31000B1B10 /* ColorPickerSlidersViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE70282241CC88D00083903 /* ColorPickerSlidersViewController.swift */; };
|
||||
CF73D347241F9C31000B1B10 /* ColorPickerWheelView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE70288241D0E7300083903 /* ColorPickerWheelView.swift */; };
|
||||
CF73D348241F9C31000B1B10 /* ColorPickerInnerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7027B241A62ED00083903 /* ColorPickerInnerViewController.swift */; };
|
||||
CF73D34A241F9C31000B1B10 /* ColorPickerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE70273241A4C5500083903 /* ColorPickerViewController.swift */; };
|
||||
CF73D34B241F9C31000B1B10 /* ColorPickerSwatchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE7027E241B984600083903 /* ColorPickerSwatchViewController.swift */; };
|
||||
CF73D34C241F9C4D000B1B10 /* Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF73D32B241E4720000B1B10 /* Color.swift */; };
|
||||
CF73D351241F9FB3000B1B10 /* ColorPickerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF73D350241F9FB3000B1B10 /* ColorPickerDelegate.swift */; };
|
||||
CF7750B72520D3B50069CC57 /* Assets.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF7750B62520D3B50069CC57 /* Assets.swift */; };
|
||||
CF7750BE252203630069CC57 /* DialogButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF7750BD252203630069CC57 /* DialogButton.swift */; };
|
||||
CF7750CF252433680069CC57 /* ColorPickerConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF7750CE252433680069CC57 /* ColorPickerConfiguration.swift */; };
|
||||
CF7750D62524615D0069CC57 /* SeparatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF7750D52524615D0069CC57 /* SeparatorView.swift */; };
|
||||
CF775122252852460069CC57 /* AlderisSDKCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = CF775121252852110069CC57 /* AlderisSDKCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
CF79DA31251723C500F17BCB /* BottomSheetTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF79DA30251723C500F17BCB /* BottomSheetTransition.swift */; };
|
||||
CFAFFC9124277CEE005AD4C1 /* Assets-ios12.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CFAFFC9024277CEE005AD4C1 /* Assets-ios12.xcassets */; platformFilter = ios; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
4E1C741228266C5900227EC3 /* UIFontDescriptorAdditions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIFontDescriptorAdditions.swift; sourceTree = "<group>"; };
|
||||
4E1C74162826C1F100227EC3 /* ColorPickerAccessibilityViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorPickerAccessibilityViewController.swift; sourceTree = "<group>"; };
|
||||
4E1C741828276D5600227EC3 /* TextViewLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextViewLabel.swift; sourceTree = "<group>"; };
|
||||
4E1C741A2827829E00227EC3 /* AccessibilityComplianceLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccessibilityComplianceLabel.swift; sourceTree = "<group>"; };
|
||||
4E1C741C2827882600227EC3 /* AccessibilityContrastSelector.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccessibilityContrastSelector.swift; sourceTree = "<group>"; };
|
||||
4E1C741E2827B3C800227EC3 /* UIFloat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIFloat.swift; sourceTree = "<group>"; };
|
||||
4E1C74202827B8F800227EC3 /* NSBeep.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSBeep.swift; sourceTree = "<group>"; };
|
||||
4E2E6C05282BD5990089E4FB /* GradientView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GradientView.swift; sourceTree = "<group>"; };
|
||||
569C25512427F57000022C60 /* ColorPickerTabViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorPickerTabViewController.swift; sourceTree = "<group>"; };
|
||||
569C25572428346900022C60 /* ColorPickerMapSlider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorPickerMapSlider.swift; sourceTree = "<group>"; };
|
||||
56C74666242F722A003ED00A /* ColorPickerSlider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorPickerSlider.swift; sourceTree = "<group>"; };
|
||||
56C74668242F75E3003ED00A /* ColorPickerNumericSlider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorPickerNumericSlider.swift; sourceTree = "<group>"; };
|
||||
94A2368B252B5951002B5D0B /* UIColorAdditions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorAdditions.swift; sourceTree = "<group>"; };
|
||||
CF73D32B241E4720000B1B10 /* Color.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Color.swift; sourceTree = "<group>"; };
|
||||
CF73D32D241E49EE000B1B10 /* ColorWell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorWell.swift; sourceTree = "<group>"; };
|
||||
CF73D336241F9C23000B1B10 /* Alderis.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alderis.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
CF73D338241F9C23000B1B10 /* Alderis.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Alderis.h; sourceTree = "<group>"; };
|
||||
CF73D339241F9C23000B1B10 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
CF73D350241F9FB3000B1B10 /* ColorPickerDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorPickerDelegate.swift; sourceTree = "<group>"; };
|
||||
CF7750B62520D3B50069CC57 /* Assets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Assets.swift; sourceTree = "<group>"; };
|
||||
CF7750BD252203630069CC57 /* DialogButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DialogButton.swift; sourceTree = "<group>"; };
|
||||
CF7750CE252433680069CC57 /* ColorPickerConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ColorPickerConfiguration.swift; sourceTree = "<group>"; };
|
||||
CF7750D52524615D0069CC57 /* SeparatorView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SeparatorView.swift; sourceTree = "<group>"; };
|
||||
CF775121252852110069CC57 /* AlderisSDKCompatibility.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AlderisSDKCompatibility.h; sourceTree = "<group>"; };
|
||||
CF79DA30251723C500F17BCB /* BottomSheetTransition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomSheetTransition.swift; sourceTree = "<group>"; };
|
||||
CFAFFC9024277CEE005AD4C1 /* Assets-ios12.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Assets-ios12.xcassets"; sourceTree = "<group>"; };
|
||||
CFE70273241A4C5500083903 /* ColorPickerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorPickerViewController.swift; sourceTree = "<group>"; };
|
||||
CFE7027B241A62ED00083903 /* ColorPickerInnerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorPickerInnerViewController.swift; sourceTree = "<group>"; };
|
||||
CFE7027E241B984600083903 /* ColorPickerSwatchViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorPickerSwatchViewController.swift; sourceTree = "<group>"; };
|
||||
CFE70280241CBDE700083903 /* ColorPickerMapViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorPickerMapViewController.swift; sourceTree = "<group>"; };
|
||||
CFE70282241CC88D00083903 /* ColorPickerSlidersViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorPickerSlidersViewController.swift; sourceTree = "<group>"; };
|
||||
CFE70288241D0E7300083903 /* ColorPickerWheelView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorPickerWheelView.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
CF73D333241F9C23000B1B10 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
CF39D435222BC07C001EF57F = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
CF73D337241F9C23000B1B10 /* Alderis */,
|
||||
CF39D43F222BC07C001EF57F /* Products */,
|
||||
);
|
||||
indentWidth = 2;
|
||||
sourceTree = "<group>";
|
||||
tabWidth = 2;
|
||||
usesTabs = 1;
|
||||
};
|
||||
CF39D43F222BC07C001EF57F /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
CF73D336241F9C23000B1B10 /* Alderis.framework */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
CF73D337241F9C23000B1B10 /* Alderis */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
CF73D338241F9C23000B1B10 /* Alderis.h */,
|
||||
CF775121252852110069CC57 /* AlderisSDKCompatibility.h */,
|
||||
CF7750B62520D3B50069CC57 /* Assets.swift */,
|
||||
CF79DA30251723C500F17BCB /* BottomSheetTransition.swift */,
|
||||
CF73D32B241E4720000B1B10 /* Color.swift */,
|
||||
CFE70273241A4C5500083903 /* ColorPickerViewController.swift */,
|
||||
CF7750CE252433680069CC57 /* ColorPickerConfiguration.swift */,
|
||||
CF73D350241F9FB3000B1B10 /* ColorPickerDelegate.swift */,
|
||||
CFE7027B241A62ED00083903 /* ColorPickerInnerViewController.swift */,
|
||||
569C25512427F57000022C60 /* ColorPickerTabViewController.swift */,
|
||||
56C74666242F722A003ED00A /* ColorPickerSlider.swift */,
|
||||
CFE7027E241B984600083903 /* ColorPickerSwatchViewController.swift */,
|
||||
569C25572428346900022C60 /* ColorPickerMapSlider.swift */,
|
||||
CFE70280241CBDE700083903 /* ColorPickerMapViewController.swift */,
|
||||
CFE70288241D0E7300083903 /* ColorPickerWheelView.swift */,
|
||||
CFE70282241CC88D00083903 /* ColorPickerSlidersViewController.swift */,
|
||||
56C74668242F75E3003ED00A /* ColorPickerNumericSlider.swift */,
|
||||
4E1C74162826C1F100227EC3 /* ColorPickerAccessibilityViewController.swift */,
|
||||
4E1C741A2827829E00227EC3 /* AccessibilityComplianceLabel.swift */,
|
||||
4E1C741C2827882600227EC3 /* AccessibilityContrastSelector.swift */,
|
||||
CF73D32D241E49EE000B1B10 /* ColorWell.swift */,
|
||||
CF7750BD252203630069CC57 /* DialogButton.swift */,
|
||||
CF7750D52524615D0069CC57 /* SeparatorView.swift */,
|
||||
4E2E6C05282BD5990089E4FB /* GradientView.swift */,
|
||||
94A2368B252B5951002B5D0B /* UIColorAdditions.swift */,
|
||||
4E1C741228266C5900227EC3 /* UIFontDescriptorAdditions.swift */,
|
||||
4E1C741E2827B3C800227EC3 /* UIFloat.swift */,
|
||||
4E1C741828276D5600227EC3 /* TextViewLabel.swift */,
|
||||
4E1C74202827B8F800227EC3 /* NSBeep.swift */,
|
||||
CF73D339241F9C23000B1B10 /* Info.plist */,
|
||||
CFAFFC9024277CEE005AD4C1 /* Assets-ios12.xcassets */,
|
||||
);
|
||||
path = Alderis;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
CF73D331241F9C23000B1B10 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
CF73D33A241F9C23000B1B10 /* Alderis.h in Headers */,
|
||||
CF775122252852460069CC57 /* AlderisSDKCompatibility.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
CF73D335241F9C23000B1B10 /* Alderis */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = CF73D340241F9C23000B1B10 /* Build configuration list for PBXNativeTarget "Alderis" */;
|
||||
buildPhases = (
|
||||
CF73D331241F9C23000B1B10 /* Headers */,
|
||||
CF73D332241F9C23000B1B10 /* Sources */,
|
||||
CF73D333241F9C23000B1B10 /* Frameworks */,
|
||||
CF73D334241F9C23000B1B10 /* Resources */,
|
||||
CF77511225281F7E0069CC57 /* SwiftLint */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Alderis;
|
||||
productName = Alderis;
|
||||
productReference = CF73D336241F9C23000B1B10 /* Alderis.framework */;
|
||||
productType = "com.apple.product-type.framework";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
CF39D436222BC07C001EF57F /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 1330;
|
||||
ORGANIZATIONNAME = "HASHBANG Productions";
|
||||
TargetAttributes = {
|
||||
CF73D335241F9C23000B1B10 = {
|
||||
CreatedOnToolsVersion = 11.3.1;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = CF39D439222BC07C001EF57F /* Build configuration list for PBXProject "Alderis" */;
|
||||
compatibilityVersion = "Xcode 9.3";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = CF39D435222BC07C001EF57F;
|
||||
productRefGroup = CF39D43F222BC07C001EF57F /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
CF73D335241F9C23000B1B10 /* Alderis */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
CF73D334241F9C23000B1B10 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
CFAFFC9124277CEE005AD4C1 /* Assets-ios12.xcassets in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
CF77511225281F7E0069CC57 /* SwiftLint */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = SwiftLint;
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "export PATH=$PATH:/opt/homebrew/bin\nif which swiftlint >/dev/null; then\n\tswiftlint\nelse\n\techo \"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\"\nfi\n";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
CF73D332241F9C23000B1B10 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
CF73D34B241F9C31000B1B10 /* ColorPickerSwatchViewController.swift in Sources */,
|
||||
CF7750BE252203630069CC57 /* DialogButton.swift in Sources */,
|
||||
4E1C741928276D5600227EC3 /* TextViewLabel.swift in Sources */,
|
||||
CF73D347241F9C31000B1B10 /* ColorPickerWheelView.swift in Sources */,
|
||||
CF7750D62524615D0069CC57 /* SeparatorView.swift in Sources */,
|
||||
CF73D34C241F9C4D000B1B10 /* Color.swift in Sources */,
|
||||
94A2368C252B5951002B5D0B /* UIColorAdditions.swift in Sources */,
|
||||
569C25582428346900022C60 /* ColorPickerMapSlider.swift in Sources */,
|
||||
4E2E6C06282BD5990089E4FB /* GradientView.swift in Sources */,
|
||||
CF73D344241F9C31000B1B10 /* ColorWell.swift in Sources */,
|
||||
CF7750B72520D3B50069CC57 /* Assets.swift in Sources */,
|
||||
CF73D348241F9C31000B1B10 /* ColorPickerInnerViewController.swift in Sources */,
|
||||
56C74667242F722A003ED00A /* ColorPickerSlider.swift in Sources */,
|
||||
4E1C74212827B8F800227EC3 /* NSBeep.swift in Sources */,
|
||||
4E1C74172826C1F100227EC3 /* ColorPickerAccessibilityViewController.swift in Sources */,
|
||||
4E1C741D2827882600227EC3 /* AccessibilityContrastSelector.swift in Sources */,
|
||||
CF73D345241F9C31000B1B10 /* ColorPickerMapViewController.swift in Sources */,
|
||||
CF79DA31251723C500F17BCB /* BottomSheetTransition.swift in Sources */,
|
||||
4E1C741328266C5900227EC3 /* UIFontDescriptorAdditions.swift in Sources */,
|
||||
CF73D34A241F9C31000B1B10 /* ColorPickerViewController.swift in Sources */,
|
||||
CF7750CF252433680069CC57 /* ColorPickerConfiguration.swift in Sources */,
|
||||
56C74669242F75E3003ED00A /* ColorPickerNumericSlider.swift in Sources */,
|
||||
569C25522427F57000022C60 /* ColorPickerTabViewController.swift in Sources */,
|
||||
4E1C741F2827B3C800227EC3 /* UIFloat.swift in Sources */,
|
||||
CF73D351241F9FB3000B1B10 /* ColorPickerDelegate.swift in Sources */,
|
||||
CF73D346241F9C31000B1B10 /* ColorPickerSlidersViewController.swift in Sources */,
|
||||
4E1C741B2827829E00227EC3 /* AccessibilityComplianceLabel.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
CF39D452222BC07E001EF57F /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
CF39D453222BC07E001EF57F /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
CF73D341241F9C23000B1B10 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
|
||||
CURRENT_PROJECT_VERSION = 3;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Alderis/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.2;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = ws.hbang.Alderis;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
SKIP_INSTALL = NO;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
CF73D342241F9C23000B1B10 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
|
||||
CURRENT_PROJECT_VERSION = 3;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 1;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = Alderis/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
"@loader_path/Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 1.2;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = ws.hbang.Alderis;
|
||||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
SKIP_INSTALL = NO;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
VERSION_INFO_PREFIX = "";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
CF39D439222BC07C001EF57F /* Build configuration list for PBXProject "Alderis" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
CF39D452222BC07E001EF57F /* Debug */,
|
||||
CF39D453222BC07E001EF57F /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
CF73D340241F9C23000B1B10 /* Build configuration list for PBXNativeTarget "Alderis" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
CF73D341241F9C23000B1B10 /* Debug */,
|
||||
CF73D342241F9C23000B1B10 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = CF39D436222BC07C001EF57F /* Project object */;
|
||||
}
|
||||
7
Tweaks/Alderis/Alderis.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:Alderis Demo.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1330"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "CF73D335241F9C23000B1B10"
|
||||
BuildableName = "Alderis.framework"
|
||||
BlueprintName = "Alderis"
|
||||
ReferencedContainer = "container:Alderis.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "CF73D335241F9C23000B1B10"
|
||||
BuildableName = "Alderis.framework"
|
||||
BlueprintName = "Alderis"
|
||||
ReferencedContainer = "container:Alderis.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
77
Tweaks/Alderis/Alderis/AccessibilityComplianceLabel.swift
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
//
|
||||
// AccessibilityComplianceLabel.swift
|
||||
// Alderis
|
||||
//
|
||||
// Created by Adam Demasi on 8/5/2022.
|
||||
// Copyright © 2022 HASHBANG Productions. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
internal class AccessibilityComplianceLabel: UIView {
|
||||
|
||||
var text: String {
|
||||
get { label.text! }
|
||||
set { label.text = newValue }
|
||||
}
|
||||
|
||||
var isCompliant = false {
|
||||
didSet { updateState() }
|
||||
}
|
||||
|
||||
private let tickImage = Assets.systemImage(named: "checkmark.circle.fill")
|
||||
private let crossImage = Assets.systemImage(named: "xmark.circle.fill")
|
||||
|
||||
private var imageView: UIImageView!
|
||||
private var label: UILabel!
|
||||
|
||||
override init(frame: CGRect) {
|
||||
super.init(frame: frame)
|
||||
|
||||
let font = UIFont.systemFont(ofSize: UIFloat(16), weight: .medium)
|
||||
|
||||
imageView = UIImageView()
|
||||
if #available(iOS 13, *) {
|
||||
imageView.preferredSymbolConfiguration = UIImage.SymbolConfiguration(font: font, scale: .small)
|
||||
}
|
||||
|
||||
label = UILabel()
|
||||
label.font = font
|
||||
|
||||
let stackView = UIStackView(arrangedSubviews: [imageView, label])
|
||||
stackView.translatesAutoresizingMaskIntoConstraints = false
|
||||
stackView.alignment = .center
|
||||
stackView.spacing = UIFloat(6)
|
||||
addSubview(stackView)
|
||||
|
||||
NSLayoutConstraint.activate([
|
||||
stackView.topAnchor.constraint(equalTo: self.topAnchor),
|
||||
stackView.bottomAnchor.constraint(equalTo: self.bottomAnchor),
|
||||
stackView.leadingAnchor.constraint(equalTo: self.leadingAnchor),
|
||||
stackView.trailingAnchor.constraint(equalTo: self.trailingAnchor)
|
||||
])
|
||||
}
|
||||
|
||||
convenience init(text: String) {
|
||||
self.init(frame: .zero)
|
||||
self.text = text
|
||||
}
|
||||
|
||||
required init?(coder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
private func updateState() {
|
||||
let color = isCompliant ? Assets.green : Assets.red
|
||||
|
||||
tintColor = color
|
||||
accessibilityLabel = "\(text): \(isCompliant ? "Compliant" : "Not compliant")"
|
||||
imageView.image = isCompliant ? tickImage : crossImage
|
||||
}
|
||||
|
||||
override func tintColorDidChange() {
|
||||
super.tintColorDidChange()
|
||||
label.textColor = tintColor
|
||||
}
|
||||
|
||||
}
|
||||
91
Tweaks/Alderis/Alderis/AccessibilityContrastSelector.swift
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
//
|
||||
// AccessibilityContrastSelector.swift
|
||||
// Alderis
|
||||
//
|
||||
// Created by Adam Demasi on 8/5/2022.
|
||||
// Copyright © 2022 HASHBANG Productions. All rights reserved.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
internal class AccessibilityContrastSelector: UIView {
|
||||
|
||||
enum Mode: Int, CaseIterable {
|
||||
case color, black, white
|
||||
|
||||
var label: String {
|
||||
switch self {
|
||||
case .color: return "Color"
|
||||
case .black: return "Black"
|
||||
case .white: return "White"
|
||||
}
|
||||
}
|
||||
|
||||
func color(withColor color: Color) -> Color {
|
||||
switch self {
|
||||
case .color: return color
|
||||
case .black: return .black
|
||||
case .white: return .white
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var text: String {
|
||||
get { label.text! }
|
||||
set { label.text = newValue }
|
||||
}
|
||||
|
||||
var value: Mode = .white {
|
||||
didSet {
|
||||
if segmentedControl.selectedSegmentIndex != value.rawValue {
|
||||
segmentedControl.selectedSegmentIndex = value.rawValue
|
||||
handleChange?(value)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var handleChange: ((Mode) -> Void)?
|
||||
|
||||
private var label: UILabel!
|
||||
private var segmentedControl: UISegmentedControl!
|
||||
|
||||
override init(frame: CGRect) {
|
||||
super.init(frame: frame)
|
||||
|
||||
label = UILabel()
|
||||
label.font = UIFont.systemFont(ofSize: UIFloat(16), weight: .medium)
|
||||
|
||||
segmentedControl = UISegmentedControl(items: Mode.allCases.map(\.label))
|
||||
segmentedControl.addTarget(self, action: #selector(handleValueChanged), for: .valueChanged)
|
||||
|
||||
let stackView = UIStackView(arrangedSubviews: [label, UIView(), segmentedControl])
|
||||
stackView.translatesAutoresizingMaskIntoConstraints = false
|
||||
stackView.alignment = .center
|
||||
stackView.distribution = .fill
|
||||
stackView.spacing = UIFloat(5)
|
||||
addSubview(stackView)
|
||||
|
||||
NSLayoutConstraint.activate([
|
||||
stackView.topAnchor.constraint(equalTo: self.topAnchor),
|
||||
stackView.bottomAnchor.constraint(equalTo: self.bottomAnchor),
|
||||
stackView.leadingAnchor.constraint(equalTo: self.leadingAnchor),
|
||||
stackView.trailingAnchor.constraint(equalTo: self.trailingAnchor)
|
||||
])
|
||||
}
|
||||
|
||||
required init?(coder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
convenience init(text: String, value: Mode) {
|
||||
self.init(frame: .zero)
|
||||
self.text = text
|
||||
self.value = value
|
||||
}
|
||||
|
||||
@objc private func handleValueChanged() {
|
||||
value = Mode(rawValue: segmentedControl.selectedSegmentIndex)!
|
||||
handleChange?(value)
|
||||
}
|
||||
|
||||
}
|
||||
11
Tweaks/Alderis/Alderis/Alderis.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
//
|
||||
// Alderis.h
|
||||
// Alderis
|
||||
//
|
||||
// Created by Adam Demasi on 16/3/20.
|
||||
// Copyright © 2020 HASHBANG Productions. All rights reserved.
|
||||
//
|
||||
|
||||
@import UIKit;
|
||||
|
||||
#import "AlderisSDKCompatibility.h"
|
||||
21
Tweaks/Alderis/Alderis/AlderisSDKCompatibility.h
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
//
|
||||
// AlderisSDKCompatibility.h
|
||||
// Alderis
|
||||
//
|
||||
// Created by Adam Demasi on 3/10/20.
|
||||
// Copyright © 2020 HASHBANG Productions. All rights reserved.
|
||||
//
|
||||
|
||||
@import UIKit;
|
||||
|
||||
#ifndef __IPHONE_14_0
|
||||
// Allows building with the iOS 13 SDK while retaining iOS 14 compatibility.
|
||||
|
||||
@interface UIControl ()
|
||||
|
||||
- (void)addAction:(UIAction *)action forControlEvents:(UIControlEvents)controlEvents NS_SWIFT_NAME(addAction(_:for:)) API_AVAILABLE(ios(14.0));
|
||||
- (void)removeAction:(UIAction *)action forControlEvents:(UIControlEvents)controlEvents NS_SWIFT_NAME(removeAction(_:for:)) API_AVAILABLE(ios(14.0));
|
||||
- (void)removeActionForIdentifier:(UIActionIdentifier)actionIdentifier forControlEvents:(UIControlEvents)controlEvents NS_SWIFT_NAME(removeAction(identifiedBy:for:)) API_AVAILABLE(ios(14.0));
|
||||
|
||||
@end
|
||||
#endif
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
26
Tweaks/Alderis/Alderis/Assets-ios12.xcassets/Brightness Slider/sun.max.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "sun.max.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "sun.max@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "sun.max@3x.png",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
BIN
Tweaks/Alderis/Alderis/Assets-ios12.xcassets/Brightness Slider/sun.max.imageset/sun.max.png
vendored
Normal file
|
After Width: | Height: | Size: 310 B |
BIN
Tweaks/Alderis/Alderis/Assets-ios12.xcassets/Brightness Slider/sun.max.imageset/sun.max@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 661 B |
BIN
Tweaks/Alderis/Alderis/Assets-ios12.xcassets/Brightness Slider/sun.max.imageset/sun.max@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 942 B |
26
Tweaks/Alderis/Alderis/Assets-ios12.xcassets/Brightness Slider/sun.min.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "sun.min.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "sun.min@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "sun.min@3x.png",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
BIN
Tweaks/Alderis/Alderis/Assets-ios12.xcassets/Brightness Slider/sun.min.imageset/sun.min.png
vendored
Normal file
|
After Width: | Height: | Size: 307 B |
BIN
Tweaks/Alderis/Alderis/Assets-ios12.xcassets/Brightness Slider/sun.min.imageset/sun.min@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 606 B |
BIN
Tweaks/Alderis/Alderis/Assets-ios12.xcassets/Brightness Slider/sun.min.imageset/sun.min@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 909 B |
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "checkmark.circle.fill.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "checkmark.circle.fill@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "checkmark.circle.fill@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 169 B |
|
After Width: | Height: | Size: 287 B |
|
After Width: | Height: | Size: 377 B |
26
Tweaks/Alderis/Alderis/Assets-ios12.xcassets/Contrast Checker/sparkles.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "sparkles.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "sparkles@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "sparkles@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
BIN
Tweaks/Alderis/Alderis/Assets-ios12.xcassets/Contrast Checker/sparkles.imageset/sparkles.png
vendored
Normal file
|
After Width: | Height: | Size: 184 B |
BIN
Tweaks/Alderis/Alderis/Assets-ios12.xcassets/Contrast Checker/sparkles.imageset/sparkles@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 324 B |
BIN
Tweaks/Alderis/Alderis/Assets-ios12.xcassets/Contrast Checker/sparkles.imageset/sparkles@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 427 B |
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "xmark.circle.fill.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "xmark.circle.fill@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "xmark.circle.fill@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 164 B |
|
After Width: | Height: | Size: 274 B |
|
After Width: | Height: | Size: 383 B |
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
26
Tweaks/Alderis/Alderis/Assets-ios12.xcassets/Tabs/circle.righthalf.fill.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "circle.righthalf.fill.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "circle.righthalf.fill@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "circle.righthalf.fill@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 229 B |
|
After Width: | Height: | Size: 385 B |
|
After Width: | Height: | Size: 574 B |
26
Tweaks/Alderis/Alderis/Assets-ios12.xcassets/Tabs/slider.horizontal.3.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "slider.horizontal.3.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "slider.horizontal.3@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "slider.horizontal.3@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 208 B |
|
After Width: | Height: | Size: 361 B |
|
After Width: | Height: | Size: 507 B |
|
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "slider.horizontal.below.rectangle.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "slider.horizontal.below.rectangle@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "slider.horizontal.below.rectangle@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||