├── .github ├── assets │ ├── banner_1.png │ ├── banner_2.png │ ├── banner_3.png │ ├── banner_4.png │ └── banner_5.png ├── scripts │ ├── README.MD │ ├── banner.txt │ ├── list.py │ ├── log.txt │ ├── post.py │ └── push.sh └── workflows │ ├── post-bot.yml │ ├── schema.json │ ├── tracker.yml │ └── validate.yml ├── api ├── contributors.json └── maintainers.json ├── changelog ├── changelog_Spacewar.txt ├── changelog_a71.txt ├── changelog_cupidr.txt ├── changelog_hanoip.txt ├── changelog_lemonadep.txt ├── changelog_miatoll.txt ├── changelog_pong.txt ├── changelog_r8q.txt ├── changelog_raven.txt ├── changelog_redwood.txt ├── changelog_sky.txt ├── changelog_stone.txt ├── changelog_surya.txt ├── changelog_vayu.txt └── changelog_veux.txt ├── devices.json ├── updater ├── Spacewar.json ├── a71.json ├── cupidr.json ├── hanoip.json ├── lemonadep.json ├── miatoll.json ├── pong.json ├── r8q.json ├── redwood.json ├── sky.json ├── stone.json ├── surya.json ├── vayu.json └── veux.json └── website ├── Spacewar.json ├── a71.json ├── cupidr.json ├── hanoip.json ├── lemonadep.json ├── miatoll.json ├── pong.json ├── r8q.json ├── raven.json ├── redwood.json ├── sky.json ├── stone.json ├── surya.json ├── vayu.json └── veux.json /.github/assets/banner_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProjectSakura/OTA/b95e079d4b92ffd284c0d6951bbef9151e280949/.github/assets/banner_1.png -------------------------------------------------------------------------------- /.github/assets/banner_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProjectSakura/OTA/b95e079d4b92ffd284c0d6951bbef9151e280949/.github/assets/banner_2.png -------------------------------------------------------------------------------- /.github/assets/banner_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProjectSakura/OTA/b95e079d4b92ffd284c0d6951bbef9151e280949/.github/assets/banner_3.png -------------------------------------------------------------------------------- /.github/assets/banner_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProjectSakura/OTA/b95e079d4b92ffd284c0d6951bbef9151e280949/.github/assets/banner_4.png -------------------------------------------------------------------------------- /.github/assets/banner_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProjectSakura/OTA/b95e079d4b92ffd284c0d6951bbef9151e280949/.github/assets/banner_5.png -------------------------------------------------------------------------------- /.github/scripts/README.MD: -------------------------------------------------------------------------------- 1 | # Auto OTA poster 2 | ## Overview 3 | A code written in Python that is meant to be run using Github Actions on push which posts an update on our telegram channel whenever there is an OTA update. 4 | ## Requirements 5 | * [Python 3.X](https://www.python.org/) 6 | * [pyTelegramBotAPI](https://pypi.org/project/pyTelegramBotAPI/) 7 | 8 | ## Running the code 9 | 10 | Code is meant to be inside of a folder named ```post-bot``` in the ```OTA``` repository. To run it, set environment variable ```BOT_API``` to your API Token and ```CHAT``` to chat ID, then run the code below : 11 | ```shell 12 | python3 post-bot/post.py 13 | ``` -------------------------------------------------------------------------------- /.github/scripts/banner.txt: -------------------------------------------------------------------------------- 1 | 2 -------------------------------------------------------------------------------- /.github/scripts/list.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # Python code which helps keep track of monthly updates for official devices 4 | # Working directory : inside https://github.com/ProjectSakura/OTA (branch 14) 5 | # Intended usage : python .github/scripts/list.py 6 | # Note ! 7 | # Set env variables as following: 8 | # "BOT_API" to your BOT API Token 9 | # "CHAT_PRIV" to your chat ID 10 | # Install telebot by running "sudo pip install pyTelegramBotAPI" 11 | # 12 | # Copyright (C) 2021 Ashwin DS 13 | # 14 | # This program is free software; you can redistribute it and/or modify 15 | # it under the terms of the GNU General Public License as published by 16 | # the Free Software Foundation; 17 | # 18 | # This program is distributed in the hope that it will be useful, 19 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 20 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 | # GNU General Public License for more details. 22 | # 23 | # You should have received a copy of the GNU General Public License 24 | # along with this program; if not, see . 25 | 26 | import datetime 27 | import json 28 | import os 29 | import telebot 30 | 31 | 32 | # Get secrets from Workflow 33 | BOT_API = os.environ.get("BOT_API") 34 | CHAT_ID = os.environ.get("CHAT_PRIV") 35 | 36 | # Init the bot 37 | bot = telebot.TeleBot(BOT_API, parse_mode="HTML") 38 | 39 | json_dir = "website" 40 | 41 | def send_mes(message): 42 | return bot.send_message(chat_id=CHAT_ID, text=message, disable_web_page_preview=True) 43 | 44 | 45 | def active_devices (): 46 | json_processed = json.loads(open("devices.json", "r").read()) 47 | devices = [] 48 | for device in json_processed: 49 | if device['active']: 50 | device_json = json.loads(open(json_dir + "/" + device['codename'] + ".json").read()) 51 | devices.append({ 52 | "codename" : device['codename'], 53 | "maintainer" : device['maintainer_name'], 54 | "datetime" : device_json['response'][0]['datetime'], 55 | "device_name" : device['name'] 56 | }) 57 | return devices 58 | 59 | 60 | current_month = datetime.date.today().month 61 | current_year = datetime.date.today().year 62 | month_start = datetime.datetime(current_year, current_month, 1, 0, 0, 1) 63 | if current_month == 1: 64 | last_month_start = datetime.datetime(current_year -1 , 12, 1, 0, 0, 1) 65 | last_2month_start = datetime.datetime(current_year -1 , 11, 1, 0, 0, 1) 66 | elif current_month == 2: 67 | last_month_start = datetime.datetime(current_year, current_month - 1, 1, 0, 0, 1) 68 | last_2month_start = datetime.datetime(current_year -1 , 12, 1, 0, 0, 1) 69 | else: 70 | last_month_start = datetime.datetime(current_year, current_month - 1, 1, 0, 0, 1) 71 | last_2month_start = datetime.datetime(current_year, current_month - 2, 1, 0, 0, 1) 72 | 73 | 74 | yetToUpdate = [] 75 | updated = [] 76 | 77 | for device in active_devices(): 78 | if int(device['datetime']) > month_start.timestamp(): 79 | updated.append(device) 80 | else: 81 | yetToUpdate.append(device) 82 | 83 | notUpdatedIn2Months = [] 84 | for device in yetToUpdate: 85 | if not int(device['datetime']) > last_month_start.timestamp(): 86 | notUpdatedIn2Months.append(device) 87 | 88 | notUpdatedIn3Months = [] 89 | for device in notUpdatedIn2Months: 90 | if not int(device['datetime']) > last_month_start.timestamp(): 91 | notUpdatedIn3Months.append(device) 92 | 93 | message = "#UpdateStatus\nThe following devices has been updated in the current month (after " + str(month_start) + " hours):\n" 94 | number = 1 95 | for device in updated: 96 | message = message + "\n" + str(number) + ". " + device['device_name'] + " (" + device['codename'] + ") By: " + device['maintainer'] 97 | number += 1 98 | 99 | message = message + "\n\n\nThe following devices has not been updated in the current month:\n" 100 | number = 1 101 | for device in yetToUpdate: 102 | message = message + "\n" + str(number) + ". " + device['device_name'] + " (" + device['codename'] + ") By: " + device['maintainer'] 103 | number += 1 104 | 105 | message = message + "\n\n\nThe following devices has not been updated in previous month too:\n" 106 | number = 1 107 | for device in notUpdatedIn2Months: 108 | message = message + "\n" + str(number) + ". " + device['device_name'] + " (" + device['codename'] + ") By: " + device['maintainer'] 109 | number += 1 110 | if len(notUpdatedIn2Months) == 0: 111 | message = message + "\nNONE" 112 | 113 | message = message + "\n\n\nThe following devices has not been updated in 3 months:\n" 114 | number = 1 115 | for device in notUpdatedIn3Months: 116 | message = message + "\n" + str(number) + ". " + device['device_name'] + " (" + device['codename'] + ") By: " + device['maintainer'] 117 | number += 1 118 | if len(notUpdatedIn3Months) == 0: 119 | message = message + "\nNONE" 120 | 121 | message = message + "\n\nTotal Official Devices = " + str(len(active_devices())) + "\nUpdated during current month = " + str(len(updated)) + "\nNot Updated during current month = " + str(len(yetToUpdate)) + "\nNot Updated in last month = " + str(len(notUpdatedIn2Months)) + "\nNot Updated in 3 months = " + str(len(notUpdatedIn3Months)) 122 | 123 | message = message + "\n\nInformation as on : " + str(datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M')) + " hours (UTC)" 124 | 125 | send_mes(message) -------------------------------------------------------------------------------- /.github/scripts/log.txt: -------------------------------------------------------------------------------- 1 | 721cdd6201213ef9a02eafb33b15f8d5 2 | f7f04a072f8b2bf9a719e002e0b8162f 3 | 2eed0749b3b2be89c920252377b5798f 4 | 40a1e0acd0392301aab5d973c3d4b0d1 5 | de96db39e406fd0e2f02befe7e3218b3 6 | b6ccd259937fbf5c265437c469fbfe2a 7 | f33ef16a7625101d2d02aefc47c33e35 8 | 3c805aab1297aab1f934f1e73f159022 9 | 8a9d3644242d1bdf22216081965e8880 10 | 8a2786e1313657c265fd572389b395df 11 | 9268ad867f1ee00bffb31370db7322ce 12 | 2d3a9c47e0d4f4e900a34f9fdec1e91a 13 | ed0268280649b6108516f1cfade4577b 14 | f37fdeec726c369674ed994f48f0b161 15 | e4f25746c8af481041e7def7720aaec3 16 | -------------------------------------------------------------------------------- /.github/scripts/post.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # Python code which automatically sends a Message in a Telegram Group if any new update is found. 4 | # Intended to be run on every push 5 | # USAGE : python post.py 6 | # See README for more. 7 | # 8 | # Copyright (C) 2021 Ashwin DS 9 | # 10 | # This program is free software; you can redistribute it and/or modify 11 | # it under the terms of the GNU General Public License as published by 12 | # the Free Software Foundation; 13 | # 14 | # This program is distributed in the hope that it will be useful, 15 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | # GNU General Public License for more details. 18 | # 19 | # You should have received a copy of the GNU General Public License 20 | # along with this program; if not, see . 21 | 22 | import sys 23 | import datetime 24 | import json 25 | import os 26 | import time 27 | import telebot 28 | 29 | # Get secrets from Workflow 30 | BOT_API = os.environ.get("BOT_API") 31 | CHAT_ID = os.environ.get("CHAT") 32 | 33 | STICKER_ID = "CAADBQADhQEAAuMfMFaRTTlHKvI1RwI" 34 | 35 | # Init the bot 36 | bot = telebot.TeleBot(BOT_API, parse_mode="HTML") 37 | 38 | # Where to look for .json files 39 | fileDir = "website" 40 | fileExt = ".json" 41 | 42 | 43 | def send_mes(message): 44 | return bot.send_message(chat_id=CHAT_ID, text=message, disable_web_page_preview=True) 45 | 46 | 47 | def send_photo(image, caption): 48 | if not caption or caption == "" or caption is None: 49 | return bot.send_photo(chat_id=CHAT_ID, photo=open(image, "rb")) 50 | else: 51 | return bot.send_photo(chat_id=CHAT_ID, photo=open(image, "rb"), caption=caption) 52 | 53 | 54 | # store MD5s in a file to compare 55 | def update(IDs): 56 | with open(".github/scripts/log.txt", "w+") as f: 57 | for s in IDs: 58 | f.write(str(s) + "\n") 59 | 60 | 61 | # Return IDs of all latest files from *.json files 62 | def get_id(): 63 | result = [] 64 | for a in os.listdir(fileDir): 65 | if a.endswith(fileExt): 66 | if a != "devices.json": 67 | result.append(a) 68 | 69 | file_id = [] 70 | for a in result: 71 | file = open( fileDir + "/" + a, "r") 72 | json_processed = json.loads(file.read()) 73 | file_id.append(json_processed['response'][0]['id']) 74 | return file_id 75 | 76 | 77 | # Return previous IDs 78 | def read_old(): 79 | old_id = [] 80 | file = open(".github/scripts/log.txt", "r") 81 | for line in file.readlines(): 82 | old_id.append(line.replace("\n", "")) 83 | return old_id 84 | 85 | 86 | # remove elements in 2nd list from 1st, helps to find out what device got an update 87 | def get_diff(new_id, old_id): 88 | first_set = set(new_id) 89 | sec_set = set(old_id) 90 | return list(first_set - sec_set) 91 | 92 | 93 | # Grab needed info using id of the file 94 | def get_info(id): 95 | devices = [] 96 | for a in os.listdir(fileDir): 97 | if a.endswith(fileExt): 98 | if a != "devices.json": 99 | devices.append(a) 100 | for a in devices: 101 | file = open(fileDir + "/" + a, "r") 102 | json_processed = json.loads(file.read()) 103 | if json_processed['response'][0]['id'] == id: 104 | print(json_processed['response'][0]) 105 | required = json_processed['response'][0] 106 | device = a.replace(".json", "") 107 | break 108 | file = open("devices.json", "r") 109 | json_processed = json.loads(file.read()) 110 | for devices in json_processed: 111 | if devices['codename'] == device: 112 | maintainer = devices['maintainer_name'] 113 | name = devices['name'] 114 | brand = devices['brand'] 115 | 116 | if required['updater']: 117 | ota = "✅ OTA PUSHED" 118 | flash = "⚠️ CLEAN FLASH NOT REQUIRED" 119 | else: 120 | ota = "⚠️ OTA NOT PUSHED" 121 | flash = "✅ CLEAN FLASH MANDATORY" 122 | 123 | print("Device is : " + device) 124 | print("Size is : " + str(required['size'])) 125 | print("Maintained by : " + maintainer) 126 | print("File name : " + required['filename']) 127 | print("Version : " + required['version']) 128 | print("Notes : " + ota + "\n" + flash) 129 | 130 | return { 131 | "device": device, 132 | "size": str(required['size']), 133 | "maintainer": maintainer, 134 | "version" : required['version'], 135 | "name" : name, 136 | "brand" : brand, 137 | "ota" : ota, 138 | "flash" : flash, 139 | "time" : required['datetime'], 140 | "filename" : required['filename'], 141 | "id" : required['id'], 142 | "romtype" : required['romtype'], 143 | "support" : required['support'], 144 | "url" : required['url'], 145 | "updater" : required['updater'] 146 | } 147 | 148 | 149 | def bold(text1, text2): 150 | message = "" + text1 + "" + text2 151 | return message 152 | 153 | def banner(): 154 | with open(".github/scripts/banner.txt", "r+") as f: 155 | b = int(f.read()) 156 | if b == 0: 157 | f.seek(0) 158 | f.write('1') 159 | return "1" 160 | elif b == 1: 161 | f.seek(0) 162 | f.write('2') 163 | return "2" 164 | elif b == 2: 165 | f.seek(0) 166 | f.write('3') 167 | return "3" 168 | elif b == 3: 169 | f.seek(0) 170 | f.write('4') 171 | return "4" 172 | elif b == 4: 173 | f.seek(0) 174 | f.write('0') 175 | return "5" 176 | else: 177 | print("ayo code died") 178 | 179 | def support_chat(info): 180 | if info: 181 | return f"📲 Support Chat" + "\n\n" 182 | else: 183 | return "\n" 184 | 185 | # Prepare in the format needed 186 | def cook_content(information): 187 | message = "" 188 | # links need to be in this format inline URL 189 | message = message + \ 190 | "New Update for " + information['name'] + " (" + str(information['device'] ) + ") is here!\n" + \ 191 | "👤 " + "by " + str(information["maintainer"]) + "\n\n" + \ 192 | "ℹ️ " + "Version : " + str(information['version']) + "\n" +\ 193 | "📆 " + "Date: " + str(datetime.date.today()).replace("-", "/") + "\n" + \ 194 | "⬇️ " + "Download" + "" + "\n" + \ 195 | f"{support_chat(information['support'])}" + \ 196 | bold(information['ota'], "") + "\n" + \ 197 | bold(information['flash'], "") + "\n\n" + \ 198 | "#" + str(information['device']) + " | #projectsakura" + "\n" + \ 199 | "@ProjectSakuraNews | @ProjectSakuraChat" 200 | return message 201 | 202 | 203 | def update_json(information): 204 | new = "{\n" \ 205 | "\"response\": [\n" \ 206 | "{\n" \ 207 | " \"datetime\": \"" + information['time'] + "\",\n" \ 208 | " \"filename\": \"" + information['filename'] + "\",\n" \ 209 | " \"id\": \""+ information['id']+ "\",\n" \ 210 | " \"romtype\":\"" + information['romtype'] + "\",\n" \ 211 | " \"size\": " + information['size'] + ",\n" \ 212 | " \"url\": \"" + information['url'] + "\",\n"\ 213 | " \"version\": \"" + information['version'] + "\"\n"\ 214 | "}\n" \ 215 | "]\n" \ 216 | "}\n" 217 | file = open("updater/" + information['device'] + ".json", "w+") 218 | file.write(new) 219 | 220 | new = get_id() 221 | old = read_old() 222 | 223 | if len(get_diff(new, old)) == 0: 224 | print("Al4 Updated\nNothing to do\nExiting") 225 | exit() 226 | 227 | print(get_diff(new, old)) 228 | commit_message = "Update new IDs without pushing OTA" 229 | commit_descriptions = "Data for following device(s) were changed :\n" 230 | for i in get_diff(new, old): 231 | print(i) 232 | info = get_info(i) 233 | ban_n = banner() 234 | bot.send_sticker(CHAT_ID, STICKER_ID) 235 | #send_mes(cook_content(info)) 236 | send_photo(f".github/assets/banner_{ban_n}.png", cook_content(info)) 237 | if info["updater"]: 238 | update_json(info) 239 | commit_message = "Update new IDs and push OTA" 240 | commit_descriptions += info['name'] + " (" + info['device'] + ")\n" 241 | time.sleep(8) 242 | 243 | 244 | open("commit_mesg.txt", "w+").write( "OTA : " + commit_message + " [BOT]\n" + commit_descriptions) 245 | 246 | update(new) 247 | -------------------------------------------------------------------------------- /.github/scripts/push.sh: -------------------------------------------------------------------------------- 1 | git config --global user.email "noreply.projectsakurabot@gmail.com" 2 | git config --global user.name "Project Sakura Bot" 3 | git fetch 4 | git pull 5 | COMMIT_MESSAGE=$(cat commit_mesg.txt) 6 | rm commit_mesg.txt 7 | git add . 8 | git commit -m "$COMMIT_MESSAGE" 9 | git push origin 14 -------------------------------------------------------------------------------- /.github/workflows/post-bot.yml: -------------------------------------------------------------------------------- 1 | name: post-bot 2 | on: 3 | push: 4 | workflow_dispatch: 5 | 6 | jobs: 7 | postman: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Install Dep 11 | run: sudo pip install pyTelegramBotAPI 12 | - name: Checkout Repo 13 | uses: actions/checkout@v2 14 | with: 15 | token: ${{ secrets.GITHUB_TOKEN }} 16 | ref: 14 17 | 18 | - name: Bot 19 | run: sudo -E python3 .github/scripts/post.py 20 | env: 21 | BOT_API: ${{ secrets.BOT_API }} 22 | CHAT: ${{ secrets.CHAT }} 23 | - name: Commit and Push Changes 24 | run: sudo bash .github/scripts/push.sh -------------------------------------------------------------------------------- /.github/workflows/schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "object", 3 | "properties": { 4 | "response": { 5 | "type": "array", 6 | "items": [ 7 | { 8 | "type": "object", 9 | "properties": { 10 | "datetime": { 11 | "type": "string" 12 | }, 13 | "filename": { 14 | "type": "string" 15 | }, 16 | "id": { 17 | "type": "string" 18 | }, 19 | "romtype": { 20 | "type": "string" 21 | }, 22 | "size": { 23 | "type": "integer" 24 | }, 25 | "url": { 26 | "type": "string" 27 | }, 28 | "version": { 29 | "type": "string" 30 | } 31 | }, 32 | "required": [ 33 | "datetime", 34 | "filename", 35 | "id", 36 | "romtype", 37 | "size", 38 | "url", 39 | "version" 40 | ] 41 | } 42 | ] 43 | } 44 | }, 45 | "required": [ 46 | "response" 47 | ] 48 | } 49 | 50 | -------------------------------------------------------------------------------- /.github/workflows/tracker.yml: -------------------------------------------------------------------------------- 1 | name: update_tracker 2 | on: 3 | workflow_dispatch: 4 | 5 | jobs: 6 | postman: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - name: Install Dep 10 | run: sudo pip install pyTelegramBotAPI 11 | - name: Checkout Repo 12 | uses: actions/checkout@v2 13 | with: 14 | token: ${{ secrets.GITHUB_TOKEN }} 15 | ref: 14 16 | 17 | - name: Bot 18 | run: sudo -E python3 .github/scripts/list.py 19 | env: 20 | BOT_API: ${{ secrets.BOT_API }} 21 | CHAT_PRIV: ${{ secrets.CHAT_PRIV }} -------------------------------------------------------------------------------- /.github/workflows/validate.yml: -------------------------------------------------------------------------------- 1 | name: Validate Device JSONs 2 | # Controls when the action will run. Triggers the workflow on push or pull request 3 | # events but only for the eleven branch 4 | on: 5 | push: 6 | branches: 7 | - 14 8 | pull_request: 9 | branches: 10 | - 14 11 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 12 | jobs: 13 | # This workflow contains a single job called "build" 14 | build: 15 | # The type of runner that the job will run on 16 | runs-on: ubuntu-latest 17 | # Steps represent a sequence of tasks that will be executed as part of the job 18 | steps: 19 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 20 | - uses: actions/checkout@v2 21 | - name: validate 22 | uses: anyone-developer/anyone-validate-json@main 23 | with: 24 | file-extension: ".json" 25 | ignore-files: "README.md" 26 | ignore-directories: ".git" -------------------------------------------------------------------------------- /api/contributors.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "contributor_name": "Vedika Agarwal", 4 | "contributing_role": [ 5 | "WEB DEVELOPER" 6 | ], 7 | "country_flag": "https://em-content.zobj.net/source/twitter/376/flag-india_1f1ee-1f1f3.png", 8 | "github_link": "https://github.com/vedikaag99", 9 | "linkedin_link": "https://www.linkedin.com/in/vedika-agarwal-a134311a9", 10 | "contributor_photo": "https://avatars.githubusercontent.com/u/67699840?v=4" 11 | }, 12 | { 13 | "contributor_name": "Rahul Bansal", 14 | "contributing_role": [ 15 | "WEB DEVELOPER" 16 | ], 17 | "country_flag": "https://em-content.zobj.net/source/twitter/376/flag-india_1f1ee-1f1f3.png", 18 | "github_link": "https://github.com/RahulBansal0502", 19 | "linkedin_link": "https://www.linkedin.com/in/rahulbansal52/", 20 | "contributor_photo": "https://avatars.githubusercontent.com/u/56486309?s=400&u=c9b17d2ce932e51be274ea6e46da5fba3c1314bb&v=4" 21 | }, 22 | { 23 | "contributor_name": "Diksha Patro B", 24 | "contributing_role": [ 25 | "WEB DEVELOPER" 26 | ], 27 | "country_flag": "https://em-content.zobj.net/source/twitter/376/flag-india_1f1ee-1f1f3.png", 28 | "github_link": "https://github.com/FireQueen-3010", 29 | "linkedin_link": "https://www.linkedin.com/in/diksha-patro-b-a8907b162/", 30 | "contributor_photo": "https://avatars.githubusercontent.com/u/59244300?v=4" 31 | }, 32 | { 33 | "contributor_name": "Tanishq Arya", 34 | "contributing_role": [ 35 | "WEB DEVELOPER" 36 | ], 37 | "country_flag": "https://em-content.zobj.net/source/twitter/376/flag-india_1f1ee-1f1f3.png", 38 | "github_link": "https://github.com/tanishq-arya", 39 | "linkedin_link": "https://www.linkedin.com/in/tanishq-arya-697b571a3/", 40 | "contributor_photo": "https://avatars.githubusercontent.com/u/77333275?s=400&u=6163493ca123bd7c23a3fb646f085a233c34df3a&v=4" 41 | }, 42 | { 43 | "contributor_name": "Ritik Rawal", 44 | "contributing_role": [ 45 | "WEB DEVELOPER" 46 | ], 47 | "country_flag": "https://em-content.zobj.net/source/twitter/376/flag-india_1f1ee-1f1f3.png", 48 | "github_link": "https://github.com/ritik307", 49 | "linkedin_link": "https://www.linkedin.com/in/ritik-rawal-698a18142/", 50 | "contributor_photo": "https://avatars.githubusercontent.com/u/22374829?s=400&u=fb06c34474dc996c283f3fe6eed03d8714c74fc7&v=4" 51 | }, 52 | { 53 | "contributor_name": "Samriddhi Agrawal", 54 | "contributing_role": [ 55 | "WEB DEVELOPER" 56 | ], 57 | "country_flag": "https://em-content.zobj.net/source/twitter/376/flag-india_1f1ee-1f1f3.png", 58 | "github_link": "https://github.com/Samridhi-98", 59 | "linkedin_link": "https://www.linkedin.com/in/samridhi-agrawal-1713201ab/", 60 | "contributor_photo": "https://avatars.githubusercontent.com/u/54466041?s=400&v=4" 61 | } 62 | ] -------------------------------------------------------------------------------- /api/maintainers.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "maintainer_name": "ArmSM", 4 | "devices_mantaining": [ 5 | "Poco X3 Pro Maintainer" 6 | ], 7 | "country_flag": "https://em-content.zobj.net/source/twitter/376/flag-albania_1f1e6-1f1f1.png", 8 | "telegram_link": "https://t.me/ArmSM", 9 | "github_link": "https://github.com/ArmSM", 10 | "maintainer_photo": "https://avatars.githubusercontent.com/u/60157798?v=4" 11 | }, 12 | { 13 | "maintainer_name": "Anoosragh", 14 | "devices_mantaining": [ 15 | "Moto G60/G40 Fusion and Poco M6 Pro/Redmi 12 5G Maintainer" 16 | ], 17 | "country_flag": "https://em-content.zobj.net/source/twitter/376/flag-india_1f1ee-1f1f3.png", 18 | "telegram_link": "https://t.me/anoosragh69", 19 | "github_link": "https://github.com/anoosragh69", 20 | "maintainer_photo": "https://avatars.githubusercontent.com/u/83896147?v=4" 21 | }, 22 | { 23 | "maintainer_name": "Christo Paul", 24 | "devices_mantaining": [ 25 | "Poco M2 Pro/Redmi Note 9 Series/10 Lite" 26 | ], 27 | "country_flag": "https://em-content.zobj.net/source/twitter/376/flag-india_1f1ee-1f1f3.png", 28 | "telegram_link": "https://t.me/orionphoenix", 29 | "github_link": "https://github.com/christop23", 30 | "maintainer_photo": "https://avatars.githubusercontent.com/u/50113036?v=4" 31 | }, 32 | { 33 | "maintainer_name": "MNoxx74", 34 | "devices_mantaining": [ 35 | "Realme GT 5G and Nothing Phone 2 Maintainer" 36 | ], 37 | "country_flag": "https://em-content.zobj.net/source/twitter/376/flag-thailand_1f1f9-1f1ed.png", 38 | "telegram_link": "https://t.me/MNoxx74", 39 | "github_link": "https://github.com/MNoxx74", 40 | "maintainer_photo": "https://avatars.githubusercontent.com/u/81765576?v=4" 41 | }, 42 | { 43 | "maintainer_name": "Abhixv", 44 | "devices_mantaining": [ 45 | "Nothing Phone 1" 46 | ], 47 | "country_flag": "https://em-content.zobj.net/source/twitter/376/flag-india_1f1ee-1f1f3.png", 48 | "telegram_link": "https://t.me/abhixv", 49 | "github_link": "https://github.com/abhixv", 50 | "maintainer_photo": "https://avatars.githubusercontent.com/u/66074182?v=4" 51 | }, 52 | { 53 | "maintainer_name": "Legofan", 54 | "devices_mantaining": [ 55 | "Samsung Galaxy A71 4G" 56 | ], 57 | "country_flag": "https://em-content.zobj.net/source/twitter/408/flag-germany_1f1e9-1f1ea.png", 58 | "telegram_link": "https://t.me/legofan5151", 59 | "github_link": "https://github.com/legofanlovessayori", 60 | "maintainer_photo": "https://avatars.githubusercontent.com/u/94994630?v=4" 61 | }, 62 | { 63 | "maintainer_name": "Aquariusjr10", 64 | "devices_mantaining": [ 65 | "Google Pixel 6 Pro" 66 | ], 67 | "country_flag": "https://em-content.zobj.net/source/twitter/408/flag-united-kingdom_1f1ec-1f1e7.png", 68 | "telegram_link": "https://t.me/Deepak_jr", 69 | "github_link": "https://github.com/aquariusjr10", 70 | "maintainer_photo": "https://avatars.githubusercontent.com/u/46277303?v=4" 71 | }, 72 | { 73 | "maintainer_name": "Eduardo", 74 | "devices_mantaining": [ 75 | "OnePlus 9 Pro" 76 | ], 77 | "country_flag": "https://em-content.zobj.net/source/twitter/376/flag-united-states_1f1fa-1f1f8.png", 78 | "telegram_link": "https://t.me/NeoTheSavage", 79 | "github_link": "https://github.com/THERAD1", 80 | "maintainer_photo": "https://avatars.githubusercontent.com/u/3580681?v=4" 81 | }, 82 | { 83 | "maintainer_name": "Neroki", 84 | "devices_mantaining": [ 85 | "Samsung Galaxy S20 FE 4G/5G" 86 | ], 87 | "country_flag": "https://em-content.zobj.net/source/twitter/376/flag-brazil_1f1e7-1f1f7.png", 88 | "telegram_link": "https://t.me/nerokistyle", 89 | "github_link": "https://github.com/NerokiStage", 90 | "maintainer_photo": "https://avatars.githubusercontent.com/u/154478875?s=400&u=3b513a72311bfe364f34e09d999eef8b822238b9&v=4" 91 | } 92 | ] 93 | -------------------------------------------------------------------------------- /changelog/changelog_Spacewar.txt: -------------------------------------------------------------------------------- 1 | September-07-2024 2 | - Initial build 3 | - Added NOS Camera 4 | - Gapps included 5 | - Fixed Vibration issues 6 | -------------------------------------------------------------------------------- /changelog/changelog_a71.txt: -------------------------------------------------------------------------------- 1 | December 27th 2024 2 | - Upstream Kernel to latest 4.14 release by Google 3 | - Increased Flashlight strength 4 | - December 2024 Security Patches 5 | - Passes Device & Basic PI verdict by default 6 | 7 | 8 | September 10th 2024 9 | - Merged September 2024 Android Security Patches 10 | - Passes Strong Play integrity verdict by default 11 | 12 | 13 | September 4th 2024 14 | - Initial Official Build -------------------------------------------------------------------------------- /changelog/changelog_cupidr.txt: -------------------------------------------------------------------------------- 1 | July-26-2024 2 | 3 | - Initial qpr3 stable release 4 | - Address qpr3 sepolicy changes 5 | - July Security patch 6 | 7 | May-22-2024 8 | 9 | -Setup SecureNFC 10 | -Kernel Merge tag 'ASB-2024-05-05_11-5.4' 11 | -Gamespace Added 12 | -May Security patch 13 | 14 | April-27-2024 15 | 16 | -Initial OFFICIAL BUILD 17 | -Added Oplus Camera and Shiped with Dolby Atmos 18 | -Included KSU 19 | -PlayStore Certified -------------------------------------------------------------------------------- /changelog/changelog_hanoip.txt: -------------------------------------------------------------------------------- 1 | Dec-26-2024 2 | 3 | - Switch to 90Hz refresh rate 4 | - Use KSU 5 | - Import susfs4ksu 6 | - Fix thumbnail issues in gallery apps 7 | - Add back Aperture 8 | - Add ultrawide and macro support to Aperture 9 | - Revert to patched ims apk 10 | - Import custom splash screen 11 | - Tweak some landscape statusbar padding 12 | - Address some sepolicy denials 13 | - Switch to user builds 14 | - Misc perf and stability improvements 15 | 16 | July-26-2024 17 | 18 | - Initial qpr3 stable release 19 | - Address qpr3 sepolicy changes 20 | - Switch to erofs 21 | - Nuke some unwanted blobs 22 | - Upstreamed kernel to 4.14.348 23 | - Misc perf and stability improvements 24 | 25 | June-10-2024 26 | 27 | - Address some sepolicy issues 28 | - Some perf improvements 29 | - Upstream kernel to 4.14.344 30 | - Misc stability improvements 31 | - Fix OTA 32 | 33 | May-15-2024 34 | 35 | - A lot of kernel side changes 36 | - Revert switching to vulkan hwui renderer 37 | - Fix touch in rom recovery 38 | - Update GcamGo 39 | - Misc bug fixes and stability improvements 40 | 41 | Apr-26-2024 42 | 43 | - Fix media and ringtone sound issues 44 | - Revert adding cpu freq table in kernel for now 45 | - Remove liboemcrypto 46 | - Utilize lz4 for zram always 47 | -------------------------------------------------------------------------------- /changelog/changelog_lemonadep.txt: -------------------------------------------------------------------------------- 1 | December-30-2024 2 | -Updated to 9.5 December patch 3 | -OPLus camera (video needs to be set 1080/60fps) 4 | -rm Device Settings 5 | -KSU kernel 6 | -Dolby Atmos 7 | 8 | September-14-2024 9 | -Updated to 9.4 w/August patch 10 | -added OPLus camera (video needs to be set 1080/60fps) 11 | -added Device Settings 12 | -added KSU kernel 13 | -added Dolby Atmos 14 | 15 | July-24-24 16 | -source side changes only 17 | 18 | May-25-24 19 | -fix for OTA 20 | 21 | May-22-24 22 | -source changes only (Gamespace added) 23 | 24 | May-09-2024 25 | -hotfix for web 26 | 27 | April-30-2024 28 | -Please use A13 firmware for now 29 | -Initial OFFICIAL BUILD 30 | -Safetynet passes default 31 | -PlayStore Certified 32 | -------------------------------------------------------------------------------- /changelog/changelog_miatoll.txt: -------------------------------------------------------------------------------- 1 | September-14-2024 2 | - Fixed MIUI Camera 3 | - Smoother UI 4 | - September security patch 5 | 6 | September-07-2024 7 | - Added MIUI Camera 8 | - New trees as base 9 | - Yamk Kernel by default 10 | - Fixed PowerOff Alarm 11 | - Kill some log spams 12 | - Miscellaneous changes for stability and performance 13 | 14 | August-02-2024 15 | - Initial Build 16 | - Includes Google Apps 17 | - Source side changes and improvements 18 | - Added Dolby instead of AudioFX 19 | - Fixed lags during screen recording 20 | - Lumos Kernel by default 21 | - Spatial audio has been added 22 | - Adjusted volume levels 23 | - Enabled Suspend to RAM 24 | - Import more surface flinger flags 25 | - Explicitly disabled Enable GL comp backpressure 26 | -------------------------------------------------------------------------------- /changelog/changelog_pong.txt: -------------------------------------------------------------------------------- 1 | August-05-2024 2 | 3 | - Rebase dt from Np2 Development 4 | - Dropped Oneplus Dolby 5 | - July Security patch 6 | 7 | June-21-2024 8 | 9 | -Initial OFFICIAL BUILD 10 | -PlayStore Certified -------------------------------------------------------------------------------- /changelog/changelog_r8q.txt: -------------------------------------------------------------------------------- 1 | September-16-2024 2 | 3 | - initial OFFICIAL BUILD 4 | - Signed Build 5 | - September'05 security patch 6 | -------------------------------------------------------------------------------- /changelog/changelog_raven.txt: -------------------------------------------------------------------------------- 1 | 7th August 2024 2 | 3 | - Initial release 4 | 5 | (! Has a white tint in the lock screen and AOD sometimes when light theme is enabled.) 6 | -------------------------------------------------------------------------------- /changelog/changelog_redwood.txt: -------------------------------------------------------------------------------- 1 | July-28-2024 2 | 3 | -Initial QPR3 build 4 | -Added devices as web cam 5 | -Fixed some genfscon 6 | -KSU included 7 | -Device Certified 8 | 9 | June-12-2024 10 | 11 | -Switched to LOS trees 12 | -KSU included and Dolby Atmos 13 | -Playstore Certified 14 | 15 | May-19-2024 16 | 17 | -Switched to Common tree 18 | -Shiped with MIUI Dolby 19 | -Fixed the header padding 20 | -Updated spatialaudio from cheetah AP1A.240405.002.B1 21 | -Imporoved the RAM management 22 | -Fix the mic low in whatsapp 23 | 24 | May-17-2024 25 | 26 | -May security patch 27 | -Updated the Oneplus Dolby Atmos 28 | -Pure Black theme added 29 | -Add support for NFC devices 30 | 31 | April-26-2024 32 | 33 | -Initial Stable release 34 | -Added Lecia Camera and Shiped with OP Dolby Atmos 35 | -Included KSU 36 | -PlayStore Certified 37 | 38 | -------------------------------------------------------------------------------- /changelog/changelog_sky.txt: -------------------------------------------------------------------------------- 1 | Dec-30-2024 2 | 3 | - Drop useless blobs 4 | - Fix qs lag 5 | - Misc perf and stability improvements 6 | 7 | Aug-30-2024 8 | - Initial QPR3 release 9 | - Fixed some stability issues 10 | - Misc changes 11 | 12 | June-09-2024 13 | - Fix incoming sms 14 | - Source side changes and improvements 15 | 16 | May-15-2024 17 | 18 | - Update GcamGo 19 | - Update blobs from V816.0.5.0.UMWEUXM 20 | - Add support for NFC devices 21 | - Switch to source built USB hal 22 | - Fix Goodix fingerprint 23 | - Boost big cluster on input 24 | 25 | Apr-26-2024 26 | 27 | - Initial stable release 28 | - Add GcamGo 29 | - Add notchbarkiller 30 | -------------------------------------------------------------------------------- /changelog/changelog_stone.txt: -------------------------------------------------------------------------------- 1 | December 28th 2024 2 | - upstream kernel 3 | - add DC dimming and HBM 4 | - clean up tree and vendor 5 | - tweak for way smoother experience 6 | - custom kernel 7 | 8 | September 12th 2024 9 | - Initial Official Build 10 | -------------------------------------------------------------------------------- /changelog/changelog_surya.txt: -------------------------------------------------------------------------------- 1 | - Initial build 2 | - Added KSU Support 3 | - Signed Build / safteyNet passes by default 4 | -------------------------------------------------------------------------------- /changelog/changelog_vayu.txt: -------------------------------------------------------------------------------- 1 | ~ Build Specifications ~ 2 | - 3 | - New Trees 4 | - Added Missing brightness prop 5 | - Correct Peak refresh rate values 6 | - Uprev fp hal to 2.3 7 | - CTS , Strong integrity passes default 8 | - December Sec Patch 9 | -------------------------------------------------------------------------------- /changelog/changelog_veux.txt: -------------------------------------------------------------------------------- 1 | 6th January 2025 2 | - Switched to Amito trees 3 | - Removed unnecessary apps 4 | - Sensors working now 5 | - Higher FPS enabled by default 6 | - MIUI camera 7 | 8 | 3rd September 2024 9 | - Added Xiaomi-Dolby & ViPER4AndroidFX 10 | - Added Leica Camera 11 | 12 | 26th April 2024 13 | - Initial Build for Poco X4 Pro 14 | -------------------------------------------------------------------------------- /devices.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "brand": "Poco", 4 | "name": "Poco X4 Pro", 5 | "codename": "veux", 6 | "maintainer_name": "ReveRTX", 7 | "maintainer_xda": "null", 8 | "maintainer_country": "IND", 9 | "xda_thread": "", 10 | "active": true, 11 | "donation_link":"https://paypal.me/joencecouture" 12 | }, 13 | { 14 | "brand": "Motorola", 15 | "name": "Motorola G60/G40 Fusion", 16 | "codename": "hanoip", 17 | "maintainer_name": "Anoosragh", 18 | "maintainer_xda": "null", 19 | "maintainer_country": "IND", 20 | "xda_thread": "", 21 | "active": true, 22 | "donation_link":"paypal.me/anoosragh69" 23 | }, 24 | { 25 | "brand": "Xiaomi", 26 | "name": "Poco M6 Pro 5G/Redmi 12 5G", 27 | "codename": "sky", 28 | "maintainer_name": "Anoosragh", 29 | "maintainer_xda": "null", 30 | "maintainer_country": "IND", 31 | "xda_thread": "", 32 | "active": true, 33 | "donation_link":"paypal.me/anoosragh69" 34 | }, 35 | { 36 | "brand": "Xiaomi", 37 | "name": "Poco M2 Pro", 38 | "codename": "miatoll", 39 | "maintainer_name": "Christo Paul", 40 | "maintainer_xda": "null", 41 | "maintainer_country": "IND", 42 | "xda_thread": "", 43 | "active": true, 44 | "donation_link":"paypal.me/christopaul23" 45 | }, 46 | { 47 | "brand": "Poco", 48 | "name": "Poco X5 Pro 5G", 49 | "codename": "redwood", 50 | "maintainer_name": "RDX463", 51 | "maintainer_xda": "null", 52 | "maintainer_country": "IND", 53 | "xda_thread": "", 54 | "active": false, 55 | "donation_link":"paypal.me/RohanBalsaraf" 56 | }, 57 | { 58 | "brand": "Realme", 59 | "name": "Realme GT 5G", 60 | "codename": "cupidr", 61 | "maintainer_name": "MNoxx74", 62 | "maintainer_xda": "null", 63 | "maintainer_country": "TH", 64 | "xda_thread": "", 65 | "active": true, 66 | "donation_link":"https://paypal.me/amperfume" 67 | }, 68 | { 69 | "brand": "Nothing", 70 | "name": "Nothing Phone 1", 71 | "codename": "Spacewar", 72 | "maintainer_name": "abhixv", 73 | "maintainer_xda": "null", 74 | "maintainer_country": "IND", 75 | "xda_thread": "", 76 | "active": true, 77 | "donation_link":"https://paypal.me/abhixv" 78 | }, 79 | { 80 | "brand": "Nothing", 81 | "name": "Nothing Phone 2", 82 | "codename": "pong", 83 | "maintainer_name": "MNoxx74", 84 | "maintainer_xda": "null", 85 | "maintainer_country": "TH", 86 | "xda_thread": "", 87 | "active": true, 88 | "donation_link":"https://paypal.me/amperfume" 89 | }, 90 | { 91 | "brand": "Poco", 92 | "name": "Poco X3 Pro", 93 | "codename": "vayu", 94 | "maintainer_name": "ArmSM", 95 | "maintainer_xda": "null", 96 | "maintainer_country": "ALB", 97 | "xda_thread": "", 98 | "active": true, 99 | "donation_link":"https://paypal.me/ArmSMA" 100 | }, 101 | { 102 | "brand": "Poco", 103 | "name": "Poco X3", 104 | "codename": "surya", 105 | "maintainer_name": "ReveRTX", 106 | "maintainer_xda": "null", 107 | "maintainer_country": "IND", 108 | "xda_thread": "", 109 | "active": true, 110 | "donation_link":"https://paypal.me/joencecouture" 111 | }, 112 | { 113 | "brand": "OnePlus", 114 | "name": "OnePlus 9 Pro", 115 | "codename": "lemonadep", 116 | "maintainer_name": "eduardo", 117 | "maintainer_xda": "null", 118 | "maintainer_country": "US", 119 | "xda_thread": "", 120 | "active": true, 121 | "donation_link":"paypal.me/eduardoroms" 122 | }, 123 | { 124 | "brand": "Google", 125 | "name": "Pixel 6 Pro", 126 | "codename": "raven", 127 | "maintainer_name": "Aquariusjr10", 128 | "maintainer_xda": "null", 129 | "maintainer_country": "IND", 130 | "xda_thread": "https://xdaforums.com/t/project-sakura-14-official-raven.4680634/", 131 | "active": true, 132 | "donation_link":"" 133 | }, 134 | { 135 | "brand": "Samsung", 136 | "name": "Galaxy A71 4G", 137 | "codename": "a71", 138 | "maintainer_name": "Legofan", 139 | "maintainer_xda": "null", 140 | "maintainer_country": "DE", 141 | "xda_thread": "", 142 | "active": true, 143 | "donation_link":"" 144 | }, 145 | { 146 | "brand": "Xiaomi", 147 | "name": "Poco X5 5G / Redmi Note 12 5G", 148 | "codename": "stone", 149 | "maintainer_name": "KamiKaonashi", 150 | "maintainer_xda": "KamiKaonashi", 151 | "maintainer_country": "AT", 152 | "xda_thread": "", 153 | "active": true, 154 | "donation_link":"" 155 | }, 156 | { 157 | "brand": "Samsung", 158 | "name": "Samsung Galaxy S20 FE 4G/5G", 159 | "codename": "r8q", 160 | "maintainer_name": "NerokiStage", 161 | "maintainer_xda": "Neroki", 162 | "maintainer_country": "BR", 163 | "xda_thread": "", 164 | "active": true, 165 | "donation_link":"" 166 | } 167 | ] 168 | -------------------------------------------------------------------------------- /updater/Spacewar.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1725627366", 5 | "filename": "ProjectSakura-9.4-20240908-0511-GAPPS-Spacewar-OFFICIAL.zip", 6 | "id": "40a1e0acd0392301aab5d973c3d4b0d1", 7 | "romtype": "monthly", 8 | "size": 1943061785, 9 | "support": "ProjectSakura", 10 | "url": "https://master.dl.sourceforge.net/project/projectsakura/Spacewar/ProjectSakura-9.4-20240908-0511-GAPPS-Spacewar-OFFICIAL.zip", 11 | "updater": false, 12 | "version": "9.4" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /updater/a71.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1735256809", 5 | "filename": "ProjectSakura-9.5-20241227-0047-GAPPS-a71-OFFICIAL.zip", 6 | "id": "f33ef16a7625101d2d02aefc47c33e35", 7 | "romtype":"monthly", 8 | "size": 1741206858, 9 | "url": "https://master.dl.sourceforge.net/project/projectsakura/a71/ProjectSakura-9.5-20241227-0047-GAPPS-a71-OFFICIAL.zip", 10 | "version": "9.5" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /updater/cupidr.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1716384293", 5 | "filename": "ProjectSakura-9.1-20240522-2024-GAPPS-cupidr-OFFICIAL.zip", 6 | "id": "ebca259a63b8a0336d8a2ceec52e6c82", 7 | "romtype":"nightly", 8 | "size": 2058336932, 9 | "url": "https://master.dl.sourceforge.net/project/projectsakura/cupidr/ProjectSakura-9.1-20240522-2024-GAPPS-cupidr-OFFICIAL.zip", 10 | "version": "9.1" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /updater/hanoip.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1715746860", 5 | "filename": "ProjectSakura-9.1-20240515-0959-GAPPS-hanoip-OFFICIAL.zip", 6 | "id": "8ddef7942b562ee44fd018ca55b052a3", 7 | "romtype":"nightly", 8 | "size": 1283116419, 9 | "url": "https://master.dl.sourceforge.net/project/projectsakura/hanoip/ProjectSakura-9.1-20240515-0959-GAPPS-hanoip-OFFICIAL.zip", 10 | "version": "9.1" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /updater/lemonadep.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1726332886", 5 | "filename": "ProjectSakura-9.4-20240914-1257-GAPPS-lemonadep-OFFICIAL.zip", 6 | "id": "6dcae294b29e799a22563d4627d9959c", 7 | "romtype":"monthly", 8 | "size": 1984310994, 9 | "url": "https://master.dl.sourceforge.net/project/projectsakura/lemonadep/ProjectSakura-9.4-20240914-1257-GAPPS-lemonadep-OFFICIAL.zip", 10 | "version": "9.4" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /updater/miatoll.json: -------------------------------------------------------------------------------- 1 | { "response": [ { "datetime": "1726292751", "filename": "ProjectSakura-9.4-20240914-0548-VANILLA-miatoll-OFFICIAL.zip", "id": 2 | "ed0268280649b6108516f1cfade4577b", "romtype":"monthly", "size": 1513192656, "support": "ProjectSakuraXiaomi", "url": 3 | "https://master.dl.sourceforge.net/project/projectsakura/miatoll/ProjectSakura-9.4-20240914-0548-VANILLA-miatoll-OFFICIAL.zip", "updater": false, 4 | "version": "9.4" 5 | } 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /updater/pong.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1718981937", 5 | "filename": "ProjectSakura-9.2-20240621-2159-GAPPS-Pong-OFFICIAL.zip", 6 | "id": "4dc8d65a4beffa07cd4c18d0098e7c7a", 7 | "romtype":"nightly", 8 | "size": 2019837771, 9 | "url": "https://master.dl.sourceforge.net/project/projectsakura/pong/ProjectSakura-9.2-20240621-2159-GAPPS-Pong-OFFICIAL.zip", 10 | "version": "9.2" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /updater/r8q.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1726436287", 5 | "filename": "ProjectSakura-9.4-20240915-2115-GAPPS-r8q-OFFICIAL.zip", 6 | "id": "3c805aab1297aab1f934f1e73f159022", 7 | "romtype":"monthly", 8 | "size": 1864283604, 9 | "url": "https://master.dl.sourceforge.net/project/projectsakura/r8q/ProjectSakura-9.4-20240915-2115-GAPPS-r8q-OFFICIAL.zip", 10 | "version": "9.4" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /updater/redwood.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1716100699", 5 | "filename": "ProjectSakura-9.1-20240519-1413-GAPPS-redwood-OFFICIAL.zip", 6 | "id": "544f969b816be836f732257e3b19f055", 7 | "romtype":"nightly", 8 | "size": 1772729725, 9 | "url": "https://master.dl.sourceforge.net/project/projectsakura//ProjectSakura-9.1-20240519-1413-GAPPS-redwood-OFFICIAL.zip", 10 | "version": "9.1" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /updater/sky.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1715753145", 5 | "filename": "ProjectSakura-9.1-20240515-1449-GAPPS-sky-OFFICIAL.zip", 6 | "id": "81bbbc3eeea639c1d743665a4f17bc10", 7 | "romtype":"nightly", 8 | "size": 1408039478, 9 | "url": "https://master.dl.sourceforge.net/project/projectsakura/sky/ProjectSakura-9.1-20240515-1449-GAPPS-sky-OFFICIAL.zip", 10 | "version": "9.1" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /updater/stone.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1735369272", 5 | "filename": "ProjectSakura-9.5-20241228-0803-VANILLA-stone-OFFICIAL.zip", 6 | "id": "2d3a9c47e0d4f4e900a34f9fdec1e91a", 7 | "romtype":"monthly", 8 | "size": 1144444789, 9 | "url": "https://master.dl.sourceforge.net/project/projectsakura/stone/ProjectSakura-9.5-20241228-0803-VANILLA-stone-OFFICIAL.zip", 10 | "version": "9.5" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /updater/surya.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1718126359", 5 | "filename": "ProjectSakura-9.2-20240611-1935-GAPPS-surya-OFFICIAL.zip", 6 | "id": "9268ad867f1ee00bffb31370db7322ce", 7 | "romtype":"nightly", 8 | "size": 1777297009, 9 | "url": "https://master.dl.sourceforge.net/project/projectsakura/surya/ProjectSakura-9.2-20240611-1935-GAPPS-surya-OFFICIAL.zip", 10 | "version": "9.2" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /updater/vayu.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1735239985", 5 | "filename": "ProjectSakura-9.5-20241226-2006-GAPPS-vayu-OFFICIAL.zip", 6 | "id": "f7f04a072f8b2bf9a719e002e0b8162f", 7 | "romtype":"monthly", 8 | "size": 1962291868, 9 | "url": "https://master.dl.sourceforge.net/project/projectsakura/vayu/ProjectSakura-9.5-20241226-2006-GAPPS-vayu-OFFICIAL.zip", 10 | "version": "9.5" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /updater/veux.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1714120100", 5 | "filename": "ProjectSakura-9.0-20240426-GAPPS-veux-OFFICIAL.zip", 6 | "id": "2d94f3e492773c305e87838dad81d343", 7 | "romtype":"nightly", 8 | "size": 1554003779, 9 | "url": "https://master.dl.sourceforge.net/project/projectsakura/veux/ProjectSakura-9.0-20240426-GAPPS-veux-OFFICIAL.zip", 10 | "version": "9.0" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /website/Spacewar.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1725627366", 5 | "filename": "ProjectSakura-9.4-20240908-0511-GAPPS-Spacewar-OFFICIAL.zip", 6 | "id": "40a1e0acd0392301aab5d973c3d4b0d1", 7 | "romtype": "monthly", 8 | "size": 1943061785, 9 | "support": "ProjectSakura", 10 | "url": "https://master.dl.sourceforge.net/project/projectsakura/Spacewar/ProjectSakura-9.4-20240908-0511-GAPPS-Spacewar-OFFICIAL.zip", 11 | "updater": false, 12 | "version": "9.4" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /website/a71.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1735256809", 5 | "filename": "ProjectSakura-9.5-20241227-0047-GAPPS-a71-OFFICIAL.zip", 6 | "id": "f33ef16a7625101d2d02aefc47c33e35", 7 | "romtype":"monthly", 8 | "size": 1741206858, 9 | "support": false, 10 | "url": "https://master.dl.sourceforge.net/project/projectsakura/a71/ProjectSakura-9.5-20241227-0047-GAPPS-a71-OFFICIAL.zip", 11 | "updater": true, 12 | "version": "9.5" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /website/cupidr.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1722066243", 5 | "filename": "ProjectSakura-9.3-20240727-1447-GAPPS-cupidr-OFFICIAL.zip", 6 | "id": "f37fdeec726c369674ed994f48f0b161", 7 | "romtype":"monthly", 8 | "size": 2410195069, 9 | "support": "ProjectSakuraRealme", 10 | "url": "https://master.dl.sourceforge.net/project/projectsakura/cupidr/ProjectSakura-9.3-20240727-1447-GAPPS-cupidr-OFFICIAL.zip", 11 | "updater": false, 12 | "version": "9.3" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /website/hanoip.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1735148486", 5 | "filename": "ProjectSakura-9.5-20241225-1741-GAPPS-hanoip-OFFICIAL.zip", 6 | "id": "8a9d3644242d1bdf22216081965e8880", 7 | "romtype":"monthly", 8 | "size": 1534104523, 9 | "support": "ProjectSakuraMotorola", 10 | "url": "https://master.dl.sourceforge.net/project/projectsakura/hanoip/ProjectSakura-9.5-20241225-1741-GAPPS-hanoip-OFFICIAL.zip", 11 | "updater": false, 12 | "version": "9.5" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /website/lemonadep.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1735530784", 5 | "filename": "ProjectSakura-9.5-20241229-2321-GAPPS-lemonadep-OFFICIAL.zip", 6 | "id": "de96db39e406fd0e2f02befe7e3218b3", 7 | "romtype":"monthly", 8 | "size": 2134916954, 9 | "support": false, 10 | "url": "https://master.dl.sourceforge.net/project/projectsakura/lemonadep/ProjectSakura-9.5-20241229-2321-GAPPS-lemonadep-OFFICIAL.zip", 11 | "updater": false, 12 | "version": "9.5" 13 | } 14 | ] 15 | } 16 | 17 | -------------------------------------------------------------------------------- /website/miatoll.json: -------------------------------------------------------------------------------- 1 | { "response": [ { "datetime": "1726292751", "filename": "ProjectSakura-9.4-20240914-0548-VANILLA-miatoll-OFFICIAL.zip", "id": 2 | "ed0268280649b6108516f1cfade4577b", "romtype":"monthly", "size": 1513192656, "support": "ProjectSakuraXiaomi", "url": 3 | "https://master.dl.sourceforge.net/project/projectsakura/miatoll/ProjectSakura-9.4-20240914-0548-VANILLA-miatoll-OFFICIAL.zip", "updater": false, 4 | "version": "9.4" 5 | } 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /website/pong.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1722869189", 5 | "filename": "ProjectSakura-9.3-20240805-2045-GAPPS-Pong-OFFICIAL.zip", 6 | "id": "721cdd6201213ef9a02eafb33b15f8d5", 7 | "romtype":"monthly", 8 | "size": 2044076196, 9 | "support": "ProjectSakuraNothing", 10 | "url": "https://master.dl.sourceforge.net/project/projectsakura/pong/ProjectSakura-9.3-20240805-2045-GAPPS-Pong-OFFICIAL.zip", 11 | "updater": false, 12 | "version": "9.3" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /website/r8q.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1726436287", 5 | "filename": "ProjectSakura-9.4-20240915-2115-GAPPS-r8q-OFFICIAL.zip", 6 | "id": "3c805aab1297aab1f934f1e73f159022", 7 | "romtype":"monthly", 8 | "size": 1864283604, 9 | "support": "ProjectSakuraSamsung" , 10 | "url": "https://master.dl.sourceforge.net/project/projectsakura/r8q/ProjectSakura-9.4-20240915-2115-GAPPS-r8q-OFFICIAL.zip", 11 | "updater": true, 12 | "version": "9.4" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /website/raven.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1723033397", 5 | "filename": "ProjectSakura-9.3-20240807-1324-GAPPS-raven-OFFICIAL.zip", 6 | "id": "8a2786e1313657c265fd572389b395df", 7 | "romtype":"monthly", 8 | "size": 1656765239, 9 | "support": false, 10 | "url": "https://master.dl.sourceforge.net/project/projectsakura/raven/ProjectSakura-9.3-20240807-1324-GAPPS-raven-OFFICIAL.zip", 11 | "updater": false, 12 | "version": "9.3" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /website/redwood.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1721895813", 5 | "filename": "ProjectSakura-9.3-20240725-1907-GAPPS-redwood-OFFICIAL.zip", 6 | "id": "e4f25746c8af481041e7def7720aaec3", 7 | "romtype":"monthly", 8 | "size": 1836737363, 9 | "support": "ProjectSakuraPoco", 10 | "url": "https://master.dl.sourceforge.net/project/projectsakura/redwood/ProjectSakura-9.3-20240725-1907-GAPPS-redwood-OFFICIAL.zip", 11 | "updater": false, 12 | "version": "9.3" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /website/sky.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1735497087", 5 | "filename": "ProjectSakura-9.5-20241229-1834-GAPPS-sky-OFFICIAL.zip", 6 | "id": "2eed0749b3b2be89c920252377b5798f", 7 | "romtype":"monthly", 8 | "size": 1385448322, 9 | "support": "ProjectSakuraPoco", 10 | "url": "https://master.dl.sourceforge.net/project/projectsakura/sky/ProjectSakura-9.5-20241229-1834-GAPPS-sky-OFFICIAL.zip", 11 | "updater": false, 12 | "version": "9.5" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /website/stone.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1735369272", 5 | "filename": "ProjectSakura-9.5-20241228-0803-VANILLA-stone-OFFICIAL.zip", 6 | "id": "2d3a9c47e0d4f4e900a34f9fdec1e91a", 7 | "romtype":"monthly", 8 | "size": 1144444789, 9 | "support": "linagstone", 10 | "url": "https://master.dl.sourceforge.net/project/projectsakura/stone/ProjectSakura-9.5-20241228-0803-VANILLA-stone-OFFICIAL.zip", 11 | "updater": true, 12 | "version": "9.5" 13 | }, 14 | { 15 | "datetime": "1735371308", 16 | "filename": "ProjectSakura-9.5-20241228-0836-GAPPS-stone-OFFICIAL.zip", 17 | "id": "389ad7698242c44975e2e0658ee626f3", 18 | "romtype":"monthly", 19 | "size": 1401309455, 20 | "support": "linagstone", 21 | "url": "https://master.dl.sourceforge.net/project/projectsakura/stone/ProjectSakura-9.5-20241228-0836-GAPPS-stone-OFFICIAL.zip", 22 | "updater": true, 23 | "version": "9.5" 24 | } 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /website/surya.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1718126359", 5 | "filename": "ProjectSakura-9.2-20240611-1935-GAPPS-surya-OFFICIAL.zip", 6 | "id": "9268ad867f1ee00bffb31370db7322ce", 7 | "romtype":"nightly", 8 | "size": 1777297009, 9 | "support" : "ProjectSakuraPoco", 10 | "url": "https://master.dl.sourceforge.net/project/projectsakura/surya/ProjectSakura-9.2-20240611-1935-GAPPS-surya-OFFICIAL.zip", 11 | "updater": false, 12 | "version": "9.2" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /website/vayu.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1735239985", 5 | "filename": "ProjectSakura-9.5-20241226-2006-GAPPS-vayu-OFFICIAL.zip", 6 | "id": "f7f04a072f8b2bf9a719e002e0b8162f", 7 | "romtype":"monthly", 8 | "size": 1962291868, 9 | "support": false, 10 | "url": "https://master.dl.sourceforge.net/project/projectsakura/vayu/ProjectSakura-9.5-20241226-2006-GAPPS-vayu-OFFICIAL.zip", 11 | "updater": true, 12 | "version": "9.5" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /website/veux.json: -------------------------------------------------------------------------------- 1 | { 2 | "response": [ 3 | { 4 | "datetime": "1736143682", 5 | "filename": "ProjectSakura-9.5-20250106-0724-GAPPS-veux-OFFICIAL.zip", 6 | "id": "b6ccd259937fbf5c265437c469fbfe2a", 7 | "romtype":"monthly", 8 | "size": 1710387103, 9 | "support": "ProjectSakuraPoco", 10 | "url": "https://master.dl.sourceforge.net/project/projectsakura/veux/ProjectSakura-9.5-20250106-0724-GAPPS-veux-OFFICIAL.zip", 11 | "updater": false, 12 | "version": "9.5" 13 | } 14 | ] 15 | } 16 | --------------------------------------------------------------------------------