From a2ee9fd7514ddb24f916c9e01d48146133195d17 Mon Sep 17 00:00:00 2001 From: GoodBoi19 <181642507+Thebloxers998@users.noreply.github.com> Date: Thu, 14 Nov 2024 20:36:17 +0000 Subject: [PATCH 01/11] Create UIMaker.md --- docs/UIMaker.md | 171 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 docs/UIMaker.md diff --git a/docs/UIMaker.md b/docs/UIMaker.md new file mode 100644 index 000000000..bcec0b028 --- /dev/null +++ b/docs/UIMaker.md @@ -0,0 +1,171 @@ +Sure thing! Here's the documentation for your UI Maker extension for TurboWarp: + +--- + +# TurboWarp UI Maker Extension + +## Overview +The **TurboWarp UI Maker Extension** enables users to create and customize user interfaces directly within TurboWarp. Users can add various UI elements, customize their properties, handle events, manage layers, and save or load their designs. + +## Installation +To use the TurboWarp UI Maker Extension, follow these steps: + +1. **Download**: Obtain the `turboWarpUI-extension.js` file from this repository. +2. **Import**: In TurboWarp, navigate to the Extensions tab, choose "Import Extension", and upload the `turboWarpUI-extension.js` file. + +## Blocks and Usage + +### 1. Add Button +**Block Type**: Command +**Description**: Adds a button with specified text. + +**Parameters**: +- `TEXT`: The text to display on the button. + +### 2. Add Label +**Block Type**: Command +**Description**: Adds a label with specified text. + +**Parameters**: +- `TEXT`: The text to display on the label. + +### 3. Add Text Field +**Block Type**: Command +**Description**: Adds a text field with a specified placeholder. + +**Parameters**: +- `PLACEHOLDER`: The placeholder text for the text field. + +### 4. Add Image +**Block Type**: Command +**Description**: Adds an image with a specified URL. + +**Parameters**: +- `URL`: The URL of the image to display. + +### 5. Set Property +**Block Type**: Command +**Description**: Sets a specified property of a UI element. + +**Parameters**: +- `PROPERTY`: The property to set (e.g., text, color, size, position, background-color). +- `INDEX`: The index of the element to modify. +- `VALUE`: The new value for the property. + +### 6. Set Position +**Block Type**: Command +**Description**: Sets the position of a UI element. + +**Parameters**: +- `INDEX`: The index of the element to move. +- `X`: The new x-coordinate. +- `Y`: The new y-coordinate. + +### 7. Set Size +**Block Type**: Command +**Description**: Sets the size of a UI element. + +**Parameters**: +- `INDEX`: The index of the element to resize. +- `WIDTH`: The new width. +- `HEIGHT`: The new height. + +### 8. Set Background Color +**Block Type**: Command +**Description**: Sets the background color of a UI element. + +**Parameters**: +- `INDEX`: The index of the element to color. +- `COLOR`: The new background color. + +### 9. Add Event Listener +**Block Type**: Command +**Description**: Adds an event listener to a UI element. + +**Parameters**: +- `EVENT`: The event to listen for (e.g., click, hover). +- `INDEX`: The index of the element to add the event to. + +### 10. Remove Element +**Block Type**: Command +**Description**: Removes a UI element from the design. + +**Parameters**: +- `INDEX`: The index of the element to remove. + +### 11. Save Design +**Block Type**: Command +**Description**: Saves the current UI design to local storage. + +### 12. Load Design +**Block Type**: Command +**Description**: Loads a saved UI design from local storage. + +## Example Usage +Here’s how you might use these blocks in a TurboWarp project to create a user interface: + +1. **Add a button with text**: + ```javascript + addButton({ TEXT: 'Click Me!' }); + ``` + +2. **Add a label with text**: + ```javascript + addLabel({ TEXT: 'Label Text' }); + ``` + +3. **Add a text field with placeholder**: + ```javascript + addTextField({ PLACEHOLDER: 'Enter text' }); + ``` + +4. **Add an image with URL**: + ```javascript + addImage({ URL: 'https://example.com/image.png' }); + ``` + +5. **Set a property of an element**: + ```javascript + setProperty({ PROPERTY: 'color', INDEX: 0, VALUE: '#ff0000' }); + ``` + +6. **Set the position of an element**: + ```javascript + setPosition({ INDEX: 0, X: 100, Y: 200 }); + ``` + +7. **Set the size of an element**: + ```javascript + setSize({ INDEX: 0, WIDTH: 150, HEIGHT: 50 }); + ``` + +8. **Set the background color of an element**: + ```javascript + setBackgroundColor({ INDEX: 0, COLOR: '#0000ff' }); + ``` + +9. **Add an event listener to an element**: + ```javascript + addEventListener({ EVENT: 'click', INDEX: 0 }); + ``` + +10. **Remove an element**: + ```javascript + removeElement({ INDEX: 0 }); + ``` + +11. **Save the current UI design**: + ```javascript + saveDesign(); + ``` + +12. **Load a saved UI design**: + ```javascript + loadDesign(); + ``` + +## Contributing +Contributions are welcome! Feel free to submit issues, fork the repository, and send pull requests to improve the extension. + +## License +This project is licensed under the MIT License. From 7ded2aceed038b9361f8870da4c846ae5d8def83 Mon Sep 17 00:00:00 2001 From: GoodBoi19 <181642507+Thebloxers998@users.noreply.github.com> Date: Sat, 16 Nov 2024 15:36:31 +0000 Subject: [PATCH 02/11] Update extensions.json --- extensions/extensions.json | 1 + 1 file changed, 1 insertion(+) diff --git a/extensions/extensions.json b/extensions/extensions.json index 9027c00ac..e6da62bee 100644 --- a/extensions/extensions.json +++ b/extensions/extensions.json @@ -32,6 +32,7 @@ "Lily/MoreEvents", "Lily/ListTools", "veggiecan/mobilekeyboard", + "Thebloxers998/OAuth", "NexusKitten/moremotion", "CubesterYT/WindowControls", "veggiecan/browserfullscreen", From c85459cdb17cc55baeef265782caa9bf127e2ec0 Mon Sep 17 00:00:00 2001 From: GoodBoi19 <181642507+Thebloxers998@users.noreply.github.com> Date: Sat, 16 Nov 2024 15:42:12 +0000 Subject: [PATCH 03/11] OAuth.js --- extensions/OAuth.js | 231 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 231 insertions(+) create mode 100644 extensions/OAuth.js diff --git a/extensions/OAuth.js b/extensions/OAuth.js new file mode 100644 index 000000000..9ad6cc724 --- /dev/null +++ b/extensions/OAuth.js @@ -0,0 +1,231 @@ +(function (Scratch) { + 'use strict'; + + let clientId = ''; + let clientSecret = ''; + let redirectUri = ''; + let authUrl = ''; + + class OAuthExtension { + getInfo() { + return { + id: 'oauthExtension', + name: 'OAuth', + color1: '#8B0000', // Dark red color + color2: '#8B0000', // Dark red color + color3: '#8B0000', // Dark red color + blocks: [ + { + opcode: 'setClientId', + blockType: Scratch.BlockType.COMMAND, + text: 'Set Client ID [ID]', + arguments: { + ID: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'Your Client ID' + } + } + }, + { + opcode: 'setClientSecret', + blockType: Scratch.BlockType.COMMAND, + text: 'Set Client Secret [SECRET]', + arguments: { + SECRET: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'Your Client Secret' + } + } + }, + { + opcode: 'setRedirectUri', + blockType: Scratch.BlockType.COMMAND, + text: 'Set Redirect URI [URI]', + arguments: { + URI: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'Your Redirect URI' + } + } + }, + { + opcode: 'setAuthUrl', + blockType: Scratch.BlockType.COMMAND, + text: 'Set Auth URL [URL]', + arguments: { + URL: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'Your Auth URL' + } + } + }, + { + opcode: 'registerAccount', + blockType: Scratch.BlockType.COMMAND, + text: 'Register account with OAuth', + arguments: {} + }, + { + opcode: 'authenticate', + blockType: Scratch.BlockType.COMMAND, + text: 'Authenticate with [SERVICE]', + arguments: { + SERVICE: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'Service Name' + } + } + }, + { + opcode: 'changeClientId', + blockType: Scratch.BlockType.COMMAND, + text: 'Change Client ID to [ID]', + arguments: { + ID: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'New Client ID' + } + } + }, + { + opcode: 'changeClientSecret', + blockType: Scratch.BlockType.COMMAND, + text: 'Change Client Secret to [SECRET]', + arguments: { + SECRET: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'New Client Secret' + } + } + }, + { + opcode: 'changeRedirectUri', + blockType: Scratch.BlockType.COMMAND, + text: 'Change Redirect URI to [URI]', + arguments: { + URI: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'New Redirect URI' + } + } + }, + { + opcode: 'changeAuthUrl', + blockType: Scratch.BlockType.COMMAND, + text: 'Change Auth URL to [URL]', + arguments: { + URL: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'New Auth URL' + } + } + }, + { + opcode: 'giveFeedback', + blockType: Scratch.BlockType.BUTTON, + text: 'Give Feedback' + } + ], + menus: {}, + unrestricted: true // Enable unsandboxed mode + }; + } + + setClientId(args) { + clientId = args.ID; + console.log(`Client ID set to: ${clientId}`); + } + + setClientSecret(args) { + clientSecret = args.SECRET; + console.log(`Client Secret set to: ${clientSecret}`); + } + + setRedirectUri(args) { + redirectUri = args.URI; + console.log(`Redirect URI set to: ${redirectUri}`); + } + + setAuthUrl(args) { + authUrl = args.URL; + console.log(`Auth URL set to: ${authUrl}`); + } + + registerAccount() { + const fullAuthUrl = `${authUrl}?client_id=${clientId}&redirect_uri=${redirectUri}&response_type=code`; + + window.open(fullAuthUrl, '_blank'); + + window.addEventListener('message', (event) => { + if (event.origin !== redirectUri) return; + const authorizationCode = event.data; + console.log(`Received authorization code: ${authorizationCode}`); + + // Exchange the authorization code for an access token + fetch('https://example.com/oauth/token', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + client_id: clientId, + client_secret: clientSecret, + code: authorizationCode, + redirect_uri: redirectUri, + grant_type: 'authorization_code' + }) + }) + .then(response => response.json()) + .then(data => { + const accessToken = data.access_token; + console.log(`Received access token: ${accessToken}`); + // Use the access token to register the user + }) + .catch(error => { + console.error('Error exchanging authorization code:', error); + }); + }); + } + + authenticate(args) { + const service = args.SERVICE; + const fullAuthUrl = `${authUrl}?client_id=${clientId}&redirect_uri=${redirectUri}&response_type=token`; + + window.open(fullAuthUrl, '_blank'); + + window.addEventListener('message', (event) => { + if (event.origin !== redirectUri) return; + const token = event.data; + console.log(`Authenticated with ${service}: ${token}`); + // Store the token securely + }); + } + + changeClientId(args) { + clientId = args.ID; + console.log(`Client ID changed to: ${clientId}`); + } + + changeClientSecret(args) { + clientSecret = args.SECRET; + console.log(`Client Secret changed to: ${clientSecret}`); + } + + changeRedirectUri(args) { + redirectUri = args.URI; + console.log(`Redirect URI changed to: ${redirectUri}`); + } + + changeAuthUrl(args) { + authUrl = args.URL; + console.log(`Auth URL changed to: ${authUrl}`); + } + + giveFeedback() { + window.open('https://scratch.mit.edu/users/Thebloxers998/'); + } + } + + Scratch.extensions.register(new OAuthExtension()); +})(Scratch); + From 0e3ebe3ba6687762819cf74e42d3c24d5f8799a2 Mon Sep 17 00:00:00 2001 From: GoodBoi19 <181642507+Thebloxers998@users.noreply.github.com> Date: Sat, 16 Nov 2024 15:43:53 +0000 Subject: [PATCH 04/11] eslint.yml --- .github/workflows/eslint.yml | 52 ++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 .github/workflows/eslint.yml diff --git a/.github/workflows/eslint.yml b/.github/workflows/eslint.yml new file mode 100644 index 000000000..9cba00d02 --- /dev/null +++ b/.github/workflows/eslint.yml @@ -0,0 +1,52 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. +# ESLint is a tool for identifying and reporting on patterns +# found in ECMAScript/JavaScript code. +# More details at https://github.com/eslint/eslint +# and https://eslint.org + +name: ESLint + +on: + push: + branches: [ "master" ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ "master" ] + schedule: + - cron: '21 18 * * 5' + +jobs: + eslint: + name: Run eslint scanning + runs-on: ubuntu-latest + permissions: + contents: read + security-events: write + actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install ESLint + run: | + npm install eslint@8.10.0 + npm install @microsoft/eslint-formatter-sarif@3.1.0 + + - name: Run ESLint + env: + SARIF_ESLINT_IGNORE_SUPPRESSED: "true" + run: npx eslint . + --config .eslintrc.js + --ext .js,.jsx,.ts,.tsx + --format @microsoft/eslint-formatter-sarif + --output-file eslint-results.sarif + continue-on-error: true + + - name: Upload analysis results to GitHub + uses: github/codeql-action/upload-sarif@v3 + with: + sarif_file: eslint-results.sarif + wait-for-processing: true From c4d01308a64fbf88ecbd01a0ed24741491e2a029 Mon Sep 17 00:00:00 2001 From: GoodBoi19 <181642507+Thebloxers998@users.noreply.github.com> Date: Sat, 16 Nov 2024 17:09:12 +0000 Subject: [PATCH 05/11] Update OAuth.js --- extensions/OAuth.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/OAuth.js b/extensions/OAuth.js index 9ad6cc724..9f5973a12 100644 --- a/extensions/OAuth.js +++ b/extensions/OAuth.js @@ -162,7 +162,7 @@ console.log(`Received authorization code: ${authorizationCode}`); // Exchange the authorization code for an access token - fetch('https://example.com/oauth/token', { + Scratch.fetch('https://example.com/oauth/token', { method: 'POST', headers: { 'Content-Type': 'application/json' @@ -222,7 +222,7 @@ } giveFeedback() { - window.open('https://scratch.mit.edu/users/Thebloxers998/'); + Scratch.openWindow('https://scratch.mit.edu/users/Thebloxers998/'); } } From 608c962952cd219767d603e06e241fd67ff5fb84 Mon Sep 17 00:00:00 2001 From: GoodBoi19 <181642507+Thebloxers998@users.noreply.github.com> Date: Sat, 16 Nov 2024 17:15:55 +0000 Subject: [PATCH 06/11] Update OAuth.js --- extensions/OAuth.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/OAuth.js b/extensions/OAuth.js index 9f5973a12..486607b05 100644 --- a/extensions/OAuth.js +++ b/extensions/OAuth.js @@ -154,7 +154,7 @@ registerAccount() { const fullAuthUrl = `${authUrl}?client_id=${clientId}&redirect_uri=${redirectUri}&response_type=code`; - window.open(fullAuthUrl, '_blank'); + Scratch.openWindow(fullAuthUrl, '_blank'); window.addEventListener('message', (event) => { if (event.origin !== redirectUri) return; @@ -191,7 +191,7 @@ const service = args.SERVICE; const fullAuthUrl = `${authUrl}?client_id=${clientId}&redirect_uri=${redirectUri}&response_type=token`; - window.open(fullAuthUrl, '_blank'); + Scratch.openWindow(fullAuthUrl, '_blank'); window.addEventListener('message', (event) => { if (event.origin !== redirectUri) return; From 20728004fcb7dd9756757ed9e24f858da7e25132 Mon Sep 17 00:00:00 2001 From: GoodBoi19 <181642507+Thebloxers998@users.noreply.github.com> Date: Sat, 16 Nov 2024 17:18:32 +0000 Subject: [PATCH 07/11] This will be epik --- docs/UIMaker.md | 171 ------------------------------------------------ 1 file changed, 171 deletions(-) delete mode 100644 docs/UIMaker.md diff --git a/docs/UIMaker.md b/docs/UIMaker.md deleted file mode 100644 index bcec0b028..000000000 --- a/docs/UIMaker.md +++ /dev/null @@ -1,171 +0,0 @@ -Sure thing! Here's the documentation for your UI Maker extension for TurboWarp: - ---- - -# TurboWarp UI Maker Extension - -## Overview -The **TurboWarp UI Maker Extension** enables users to create and customize user interfaces directly within TurboWarp. Users can add various UI elements, customize their properties, handle events, manage layers, and save or load their designs. - -## Installation -To use the TurboWarp UI Maker Extension, follow these steps: - -1. **Download**: Obtain the `turboWarpUI-extension.js` file from this repository. -2. **Import**: In TurboWarp, navigate to the Extensions tab, choose "Import Extension", and upload the `turboWarpUI-extension.js` file. - -## Blocks and Usage - -### 1. Add Button -**Block Type**: Command -**Description**: Adds a button with specified text. - -**Parameters**: -- `TEXT`: The text to display on the button. - -### 2. Add Label -**Block Type**: Command -**Description**: Adds a label with specified text. - -**Parameters**: -- `TEXT`: The text to display on the label. - -### 3. Add Text Field -**Block Type**: Command -**Description**: Adds a text field with a specified placeholder. - -**Parameters**: -- `PLACEHOLDER`: The placeholder text for the text field. - -### 4. Add Image -**Block Type**: Command -**Description**: Adds an image with a specified URL. - -**Parameters**: -- `URL`: The URL of the image to display. - -### 5. Set Property -**Block Type**: Command -**Description**: Sets a specified property of a UI element. - -**Parameters**: -- `PROPERTY`: The property to set (e.g., text, color, size, position, background-color). -- `INDEX`: The index of the element to modify. -- `VALUE`: The new value for the property. - -### 6. Set Position -**Block Type**: Command -**Description**: Sets the position of a UI element. - -**Parameters**: -- `INDEX`: The index of the element to move. -- `X`: The new x-coordinate. -- `Y`: The new y-coordinate. - -### 7. Set Size -**Block Type**: Command -**Description**: Sets the size of a UI element. - -**Parameters**: -- `INDEX`: The index of the element to resize. -- `WIDTH`: The new width. -- `HEIGHT`: The new height. - -### 8. Set Background Color -**Block Type**: Command -**Description**: Sets the background color of a UI element. - -**Parameters**: -- `INDEX`: The index of the element to color. -- `COLOR`: The new background color. - -### 9. Add Event Listener -**Block Type**: Command -**Description**: Adds an event listener to a UI element. - -**Parameters**: -- `EVENT`: The event to listen for (e.g., click, hover). -- `INDEX`: The index of the element to add the event to. - -### 10. Remove Element -**Block Type**: Command -**Description**: Removes a UI element from the design. - -**Parameters**: -- `INDEX`: The index of the element to remove. - -### 11. Save Design -**Block Type**: Command -**Description**: Saves the current UI design to local storage. - -### 12. Load Design -**Block Type**: Command -**Description**: Loads a saved UI design from local storage. - -## Example Usage -Here’s how you might use these blocks in a TurboWarp project to create a user interface: - -1. **Add a button with text**: - ```javascript - addButton({ TEXT: 'Click Me!' }); - ``` - -2. **Add a label with text**: - ```javascript - addLabel({ TEXT: 'Label Text' }); - ``` - -3. **Add a text field with placeholder**: - ```javascript - addTextField({ PLACEHOLDER: 'Enter text' }); - ``` - -4. **Add an image with URL**: - ```javascript - addImage({ URL: 'https://example.com/image.png' }); - ``` - -5. **Set a property of an element**: - ```javascript - setProperty({ PROPERTY: 'color', INDEX: 0, VALUE: '#ff0000' }); - ``` - -6. **Set the position of an element**: - ```javascript - setPosition({ INDEX: 0, X: 100, Y: 200 }); - ``` - -7. **Set the size of an element**: - ```javascript - setSize({ INDEX: 0, WIDTH: 150, HEIGHT: 50 }); - ``` - -8. **Set the background color of an element**: - ```javascript - setBackgroundColor({ INDEX: 0, COLOR: '#0000ff' }); - ``` - -9. **Add an event listener to an element**: - ```javascript - addEventListener({ EVENT: 'click', INDEX: 0 }); - ``` - -10. **Remove an element**: - ```javascript - removeElement({ INDEX: 0 }); - ``` - -11. **Save the current UI design**: - ```javascript - saveDesign(); - ``` - -12. **Load a saved UI design**: - ```javascript - loadDesign(); - ``` - -## Contributing -Contributions are welcome! Feel free to submit issues, fork the repository, and send pull requests to improve the extension. - -## License -This project is licensed under the MIT License. From f8ddbf55c1cc47b623f894f3addb6e0aa4cd7f75 Mon Sep 17 00:00:00 2001 From: GoodBoi19 <181642507+Thebloxers998@users.noreply.github.com> Date: Sat, 16 Nov 2024 17:33:16 +0000 Subject: [PATCH 08/11] Update OAuth.js --- extensions/OAuth.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/extensions/OAuth.js b/extensions/OAuth.js index 486607b05..c66c50437 100644 --- a/extensions/OAuth.js +++ b/extensions/OAuth.js @@ -1,3 +1,9 @@ +// Name: OAuth +// ID: oauthExtension +// Description: Uses OAuth for authentication and registration +// By: Thebloxers998 +// Original: Thebloxers998 +// License: MPL-2.0 (function (Scratch) { 'use strict'; From 7b8c443cfe0f4ce839f4d67bb981a838aa23096e Mon Sep 17 00:00:00 2001 From: GoodBoi19 <181642507+Thebloxers998@users.noreply.github.com> Date: Sat, 16 Nov 2024 17:57:24 +0000 Subject: [PATCH 09/11] Update OAuth.js --- extensions/OAuth.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/extensions/OAuth.js b/extensions/OAuth.js index c66c50437..cac38ed33 100644 --- a/extensions/OAuth.js +++ b/extensions/OAuth.js @@ -6,7 +6,9 @@ // License: MPL-2.0 (function (Scratch) { 'use strict'; - + if (!Scratch.extensions.unsandboxed) { + throw new Error('This extension must run unsandboxed'); + } let clientId = ''; let clientSecret = ''; let redirectUri = ''; @@ -132,8 +134,7 @@ text: 'Give Feedback' } ], - menus: {}, - unrestricted: true // Enable unsandboxed mode + menus: {} }; } From d443d70c9995e1b8daa04b33c4a0777e0cdfa496 Mon Sep 17 00:00:00 2001 From: GoodBoi19 <181642507+Thebloxers998@users.noreply.github.com> Date: Sat, 16 Nov 2024 18:01:11 +0000 Subject: [PATCH 10/11] Update CNAME --- CNAME | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CNAME b/CNAME index 3656a4668..6cffbc75f 100644 --- a/CNAME +++ b/CNAME @@ -1 +1 @@ -extensions.turbowarp.org \ No newline at end of file +thebloxers998.oauth-extension.io \ No newline at end of file From 6a92c92a6ec79a87bdcf931dc7822d7f61cc6a74 Mon Sep 17 00:00:00 2001 From: GoodBoi19 <181642507+Thebloxers998@users.noreply.github.com> Date: Sat, 16 Nov 2024 18:34:16 +0000 Subject: [PATCH 11/11] Update CNAME --- CNAME | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CNAME b/CNAME index 6cffbc75f..1d86b34f5 100644 --- a/CNAME +++ b/CNAME @@ -1 +1 @@ -thebloxers998.oauth-extension.io \ No newline at end of file +extensions.turbowarp.org