`.replaceAll(
- "undefined",
- "0"
- );
- var div = document.createElement("div");
- div.innerHTML = divText;
- box.appendChild(div);
- var statistics = document.getElementById("statistics");
-
- //=============Create spans==============
- var children = box.childNodes;
- var h3 = children[1];
- h3.innerText = "";
- var spans = [];
-
- // functions & variables
- var boxStyle =
- "background-color: var(--darkWww-box, white);border-radius: 8px;border: 1px solid var(--darkWww-border-15, #d9d9d9);padding:2px;cursor:pointer";
- function click(type) {
- if (type) {
- statistics.style.display = "block";
- activity.style.display = "none";
- spans[1].style.fontSize = "75%";
- spans[0].style.fontSize = "90%";
- } else {
- statistics.style.display = "none";
- activity.style.display = "block";
- spans[0].style.fontSize = "75%";
- spans[1].style.fontSize = "90%";
- }
- }
-
- // #1
- spans[0] = document.createElement("span");
- spans[0].id = "ST-STATS";
- spans[0].innerText = "Statistics";
- spans[0].style = boxStyle;
- h3.appendChild(spans[0]);
- h3.appendChild(document.createTextNode(" "));
- // #2
- spans[1] = document.createElement("span");
- spans[1].id = "ST-WIBD";
- spans[1].innerText = "Recent Activity";
- spans[1].style = `${boxStyle};font-size:80%`;
- h3.appendChild(spans[1]);
-
- // onclick
- spans[0].onclick = function () {
- click(true);
- };
- spans[1].onclick = function () {
- click(false);
- };
- //===============================
- }
- }
-}
-
-ScratchTools.waitForElements(
- "#activity-feed",
- getStats,
- "getUserStatistics",
- false
-);
From aa55ff79476c2aeb274a245afe726b05aed2b7f8 Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Sun, 4 Aug 2024 13:45:30 -0700
Subject: [PATCH 144/253] Remaining replies
---
features/features.json | 5 ++
features/remaining-replies/data.json | 14 ++++++
features/remaining-replies/script.js | 70 ++++++++++++++++++++++++++++
3 files changed, 89 insertions(+)
create mode 100644 features/remaining-replies/data.json
create mode 100644 features/remaining-replies/script.js
diff --git a/features/features.json b/features/features.json
index 6e545b93..f1ae98d2 100644
--- a/features/features.json
+++ b/features/features.json
@@ -1,4 +1,9 @@
[
+ {
+ "version": 2,
+ "id": "remaining-replies",
+ "versionAdded": "v4.0.0"
+ },
{
"version": 2,
"id": "video-recorder",
diff --git a/features/remaining-replies/data.json b/features/remaining-replies/data.json
new file mode 100644
index 00000000..172693bf
--- /dev/null
+++ b/features/remaining-replies/data.json
@@ -0,0 +1,14 @@
+{
+ "title": "Remaining Replies",
+ "description": "Shows how many more replies are allowed in a thread of studio comments.",
+ "credits": [
+ {
+ "url": "https://scratch.mit.edu/users/rgantzos/",
+ "username": "rgantzos"
+ }
+ ],
+ "type": ["Website"],
+ "dynamic": true,
+ "scripts": [{ "file": "script.js", "runOn": "/studios/*" }]
+ }
+
\ No newline at end of file
diff --git a/features/remaining-replies/script.js b/features/remaining-replies/script.js
new file mode 100644
index 00000000..b9193f80
--- /dev/null
+++ b/features/remaining-replies/script.js
@@ -0,0 +1,70 @@
+export default async function ({ feature, console }) {
+ window.feature = feature
+
+ ScratchTools.waitForElements(".flex-row.comment", function (comment) {
+ let data = feature.redux
+ .getState()
+ .comments.comments.find(
+ (c) => c.id.toString() === comment.id.split("-")[1]
+ );
+
+ if (data) {
+ let replyCount =
+ feature.redux.getState().comments.replies[data.id]?.length || 0;
+ let repliesLeft = 25 - replyCount;
+
+ updateReply(data.id, repliesLeft);
+ } else {
+ let parent = findParent(Number(comment.id.split("-")[1]));
+
+ if (parent) {
+ let replyCount =
+ feature.redux.getState().comments.replies[parent]?.length || 0;
+ let repliesLeft = 25 - replyCount;
+ updateReply(parent, repliesLeft);
+ } else {
+ console.log("nope")
+ }
+ }
+ });
+
+ function findParent(replyId) {
+ let replies = feature.redux.getState().comments.replies;
+ let keys = Object.keys(replies);
+
+ let key = keys.find((k) => replies[k].find((r) => r.id === replyId));
+
+ return key ? Number(key) : null;
+ }
+
+ function updateReply(commentId, count) {
+ let div = document.querySelector(`.comment#comments-${commentId}`);
+ if (!div) return;
+
+ let reply = div.querySelector(".comment-reply span");
+
+ if (reply.querySelector(".ste-reply-count")) {
+ reply.querySelector(
+ ".ste-reply-count"
+ ).textContent = ` (${count.toString()} left)`;
+ } else {
+ let span = document.createElement("span");
+ span.className = "ste-reply-count";
+ feature.self.hideOnDisable(span)
+ span.textContent = ` (${count.toString()} left)`;
+ reply.appendChild(span);
+ }
+
+ let data = feature.redux
+ .getState()
+ .comments.comments.find((c) => c.id.toString() === commentId.toString());
+
+ let replies = feature.redux.getState().comments.replies[commentId.toString()];
+
+ if (data && replies) {
+ for (var i in replies) {
+ updateReply(replies[i].id, count);
+ }
+ }
+ }
+}
From f0c5921caae9960e5f61503e5338070ae60fcf01 Mon Sep 17 00:00:00 2001
From: "scratchtools-bot[bot]"
<123264640+scratchtools-bot[bot]@users.noreply.github.com>
Date: Mon, 5 Aug 2024 00:00:15 +0000
Subject: [PATCH 145/253] Updated file.
---
extras/feature-locales/en.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/feature-locales/en.json b/extras/feature-locales/en.json
index 0dfa016b..9b081dc5 100644
--- a/extras/feature-locales/en.json
+++ b/extras/feature-locales/en.json
@@ -1 +1 @@
-{"video-recorder/title":{"message":"Record Stage"},"video-recorder/description":{"message":"Allows you to record the stage for projects while in the editor or on the project page."},"studio-creation-date/title":{"message":"Studio Creation Date"},"studio-creation-date/description":{"message":"Adds the creation date of the studio to the studio footer."},"explore-filter/title":{"message":"Explore Filter"},"explore-filter/description":{"message":"Customize project and studio search results with filters on the Search, Explore, and Studio pages."},"better-featured-projects/title":{"message":"Better Featured Projects"},"better-featured-projects/description":{"message":"Replaces the Featured Projects section with featured projects curated by ScratchTools users. You can submit your own projects to be featured as well."},"align-to-center/title":{"message":"Align to Center"},"align-to-center/description":{"message":"Allows you to align text in Instructions and Notes & Credits boxes to the center of the input."},"more-editor-fonts/title":{"message":"More Paint Editor Fonts"},"more-editor-fonts/description":{"message":"Allows you to use dozens of extra fonts in the paint editor."},"upload-thumbnail/title":{"message":"Set Thumbnail"},"upload-thumbnail/description":{"message":"Allows you to upload an image or GIF as a project thumbnail, or set the thumbnail to the current stage."},"paint-align/title":{"message":"Align Objects in Paint Editor"},"paint-align/description":{"message":"Adds a button to the paint editor that allows you to align selected items."},"rotate-gradient/title":{"message":"Rotate Gradients"},"rotate-gradient/description":{"message":"Allows you to rotate gradients in any direction in the costume editor. Works in both the vector and bitmap editors."},"change-monitor-opacity/title":{"message":"Custom Monitor Opacity"},"change-monitor-opacity/description":{"message":"Set the opacity of variables and lists on the stage to a custom number."},"project-reactions/title":{"message":"Project Reactions"},"project-reactions/description":{"message":"Allows you to react to projects with different emojis."},"chomp-blocks/title":{"message":"Extend Wrapped C Blocks"},"chomp-blocks/description":{"message":"Automatically extends C blocks to wrap around blocks that it is being placed over when dragging."},"custom-explore/title":{"message":"Custom Explore Redirect"},"custom-explore/description":{"message":"Automatically redirect to a specific tab on the Explore page."},"stage-in-spritepane/title":{"message":"Stage In Sprite Pane"},"stage-in-spritepane/description":{"message":"Move the stage button to the sprite pane to widen the sprite field."},"better-cloud-history/title":{"message":"Better Cloud History"},"better-cloud-history/description":{"message":"Updates the cloud monitor page to a more modern version with more details. You can click on variable names to sort by that variable."},"sprite-layers/title":{"message":"View Sprite Layers"},"sprite-layers/description":{"message":"Allows you to hover over the show/hide toggle in the sprite properties panel of the editor to view the sprite layers."},"hide-project-tags/title":{"message":"Hide Project Tags"},"hide-project-tags/description":{"message":"Hides all linked tags in the Instructions/Notes and Credits of projects."},"snap-to-grid/title":{"message":"Snap Scripts to Grid"},"snap-to-grid/description":{"message":"Automatically aligns scripts to the dotted grid in the editor when placed."},"select-self/title":{"message":"Select Self"},"select-self/description":{"message":"Allows you to select the current sprite when opening sprite dropdowns, instead of only other sprites."},"sidebar/title":{"message":"Sidebar"},"sidebar/description":{"message":"Adds a sidebar to the Scratch website, rather than just the normal navigation bar at the top of the screen."},"project-version-detector/title":{"message":"Project Version Detector"},"project-version-detector/description":{"message":"Checks when a project was shared and adds a label next to the share date to indicate which version of Scratch was in use at that time."},"fullscreen-explorer/title":{"message":"Fullscreen Project Grids"},"fullscreen-explorer/description":{"message":"Find projects on the big screen by removing the left and right blanks on the Trends, Search, Remix pages."},"project-descriptions/title":{"message":"Summarized Descriptions"},"project-descriptions/description":{"message":"Uses artificial intelligence to summarize project descriptions when you choose to, and shortens long descriptions down to important information, such as gameplay instructions."},"total-stats/title":{"message":"Total User Stats"},"total-stats/description":{"message":"Next to shared projects on a user's profile, displays the total loves, favorites and views that the user has received across all of their shared projects."},"project-miniplayer/title":{"message":"Project Miniplayer"},"project-miniplayer/description":{"message":"Scroll down on the project page and you will automatically see the project miniplayer."},"pin-comments/title":{"message":"Pin Project Comments"},"pin-comments/description":{"message":"Allows you to pin comments on your own projects and see what comments are pinned on other projects."},"download-project/title":{"message":"Download Projects"},"download-project/description":{"message":"Adds a button to project pages that allows you to download the project as an .sb3 file."},"blur-modal/title":{"message":"Blur Modal Backgrounds"},"blur-modal/description":{"message":"Blurs the backgrounds of modals instead of having a colored overlay."},"quick-search/title":{"message":"Quick Search"},"quick-search/description":{"message":"Easily jump between pages on the Scratch website with just the click of Control + K."},"favicon-messages/title":{"message":"Tab Message Count"},"favicon-messages/description":{"message":"Displays your message count in the tab favicon, the Scratch icon at the top of your tab."},"show-emoji-names/title":{"message":"Show Emoji Name"},"show-emoji-names/description":{"message":"Allows you to hover over Scratch emojis in the comments and view their names."},"more-block-themes/title":{"message":"More Block Themes"},"more-block-themes/description":{"message":"Adds additional themes for blocks in the code editor."},"more-key-inputs/title":{"message":"More Key Inputs"},"more-key-inputs/description":{"message":"Adds support for more keys on \"key pressed\" blocks."},"comment-tags/title":{"message":"Editor Comment Tags"},"comment-tags/description":{"message":"Add tags to editor comments to easily organize them."},"profile-flag/title":{"message":"Flag on Profile"},"profile-flag/description":{"message":"Adds flag emojis near selected locations on profile pages."},"follow-on-projects/title":{"message":"Follow on Project Page"},"follow-on-projects/description":{"message":"Follow users directly from the project page instead of going to their profile."},"dark-paint-editor/title":{"message":"Switch Paint Background"},"dark-paint-editor/description":{"message":"Adds a button next to the zoom controls in the paint editor that allows you to switch the background color of the paint editor between light and dark."},"specific-replies/title":{"message":"Specific Reply Messages"},"specific-replies/description":{"message":"In messages related to comments, specifies who a comment was replying to."},"better-trending-thumbnails/title":{"message":"Larger Thumbnails"},"better-trending-thumbnails/description":{"message":"Updates thumbnails on the trending and search pages to be larger and better fit the project/studio box."},"anti-generic/title":{"message":"Anti Generic"},"anti-generic/description":{"message":"On the explore and trending pages, this beta feature automatically hides repetitive projects, along with projects that it expects are generic. This includes projects with a lot of tags, common names, and project duplicates."},"wrap-lists/title":{"message":"Wrap List Items"},"wrap-lists/description":{"message":"Displays text in list items normally without cutting them off if they're too long."},"live-stats/title":{"message":"Live Stats"},"live-stats/description":{"message":"Updates the loves, favorites, remixes, and views on a project live, without having to reload to view the new counts."},"hide-scratch-news/title":{"message":"Hide Scratch News"},"hide-scratch-news/description":{"message":"Hides the Scratch News section on the homepage of the Scratch website."},"watch-later/title":{"message":"Save to Watch Later"},"watch-later/description":{"message":"Save projects you want to view later and they'll appear on a watch later page."},"remove-project-button/title":{"message":"Remove Project Button"},"remove-project-button/description":{"message":"Adds a button to projects in studios that allows you to easily remove it from the studio without opening the menu."},"right-side-flag/title":{"message":"Right Side Flag"},"right-side-flag/description":{"message":"Moves the green flag and the red stop sign to the right side of the stage."},"love-fave-animate/title":{"message":"Love Animations"},"love-fave-animate/description":{"message":"Animates the clicking of the love and favorite buttons on project pages."},"default-to-local/title":{"message":"Default to Local"},"default-to-local/description":{"message":"When creating a variable, sets the default to For This Sprite Only, rather than For All Sprites."},"start-stop-hotkeys/title":{"message":"Green Flag Hotkeys"},"start-stop-hotkeys/description":{"message":"Use Control + G to start or stop a project, depending on whether or not it is running."},"opacity-slider/title":{"message":"Opacity Slider"},"opacity-slider/description":{"message":"Change the opacity of objects in the paint editor."},"more-studios/title":{"message":"More Studios"},"more-studios/description":{"message":"Allows you to add projects to more studios instead of just 20."},"localized-explore/title":{"message":"Projects from Country"},"localized-explore/description":{"message":"On the explore page, makes projects from other countries less visible. This is to only show projects in languages that you understand."},"project-bar/title":{"message":"Project Bar"},"project-bar/description":{"message":"Continue to view the information for a project, even after you scroll down past the notes and credits."},"more-news/title":{"message":"More Scratch News"},"more-news/description":{"message":"On the main page, scroll through the Scratch News section and load more results."},"dumpster-fire/title":{"message":"Dumpster Fire"},"dumpster-fire/description":{"message":"The Scratch homepage is a liar with their \"Featured Projects\" section. This changes the name to the proper form, which is \"Dumpster Fire\"."},"steal-game/title":{"message":"Steal Game"},"steal-game/description":{"message":"Changes the remix button's text to 'Steal game'."},"statistics/title":{"message":"Statistics"},"statistics/description":{"message":"Adds a statistics button on the my stuff page that leads to your ScratchStats profile."},"echo-effect/title":{"message":"Echo Effect"},"echo-effect/description":{"message":"Adds the echo effect back to the Scratch sound editor."},"compact-buttons/title":{"message":"Compact Buttons"},"compact-buttons/description":{"message":"Buttons text gets removed and will get a new icon if it does not have one already."},"message-count/title":{"message":"Message Count"},"message-count/description":{"message":"Displays the user's message count on their profile next to the country."},"move-share-button/title":{"message":"Move Share Button"},"move-share-button/description":{"message":"On project pages, moves the share button next to the See Inside button."},"preview-textboxes/title":{"message":"Preview Textboxes"},"preview-textboxes/description":{"message":"Preview your profile About Me and What I'm Working On, and your projects' Instructions and Notes and Credits, so that you can see what it will look like to other users."},"more-tutorials/title":{"message":"More Tutorials"},"more-tutorials/description":{"message":"On the Ideas page, you can view additional tutorials from other Scratchers."},"simplify-action-buttons/title":{"message":"Simplify Action Buttons"},"simplify-action-buttons/description":{"message":"Displays project action buttons underneath Notes and Credits as their icons."},"slash-to-search/title":{"message":"Slash to Search"},"slash-to-search/description":{"message":"Click the slash key (/) to select the search bar and start typing."},"shared-clipboard/title":{"message":"Shared Clipboard"},"shared-clipboard/description":{"message":"Allows you to copy and paste items between paint editors in different projects."},"hide-footer/title":{"message":"Hide Footer"},"hide-footer/description":{"message":"The footer takes up a lot of unnecessary space. So hide it!"},"original-colors/title":{"message":"Revert to Blue"},"original-colors/description":{"message":"Changes all of the Scratch website's colors back to the original coloring from 3.0, before purple."},"simplify-editor-tabs/title":{"message":"Simplify Editor Tabs"},"simplify-editor-tabs/description":{"message":"Changes editor tabs to icon-only and shows them as a circle"},"live-character-counts/title":{"message":"Live Character Counts"},"live-character-counts/description":{"message":"On forum, studio, and project pages, displays the live character count for textboxes."},"advanced-search/title":{"message":"Search Profiles"},"advanced-search/description":{"message":"When you search for a user, a link to their profile will be at the top of the page."},"studio-links/title":{"message":"Studio Links as Titles"},"studio-links/description":{"message":"Replaces studio links with their titles, all across the Scratch website."},"block-studios/title":{"message":"Block Individual Studio Activity"},"block-studios/description":{"message":"Disable studio activity messages from specific studios."},"block-messages/title":{"message":"Block Users"},"block-messages/description":{"message":"Hide messages from users that you block. Other users won't see that you've blocked them."},"two-colors/title":{"message":"2.0 Block Colors"},"two-colors/description":{"message":"Replaces the colors of the blocks in the editor with the blocks from the 2.0 version of the code editor."},"project-links/title":{"message":"Project Links as Titles"},"project-links/description":{"message":"Replaces project links with their titles, all across the Scratch website."},"emoji-status/title":{"message":"Emoji Statuses"},"emoji-status/description":{"message":"Set the status on your profile to an emoji. Other ScratchTools users will be able to see this status."},"display-name/title":{"message":"Display Names"},"display-name/description":{"message":"Shows display names for Scratchers, and allows you to set your own display name. Display names show next to your username, and aren't limited like usernames are."},"isonline/title":{"message":"Show if User is Online"},"isonline/description":{"message":"On profile pages, displays if a user is online. This will also let other users see if you are online."},"plain-background/title":{"message":"Plain Background"},"plain-background/description":{"message":"Removes the dots from the background of the code editor."},"hide-advertisements/title":{"message":"Hide Ads in Comments"},"hide-advertisements/description":{"message":"Hides advertisements in the comments of profiles, projects, and studios. They can take up a lot of space in the comments."},"hide-block-category-names/title":{"message":"Hide Block Category Names"},"hide-block-category-names/description":{"message":"Changes the block categories in the editor to only show the colors of the categories."},"unlisted-projects/title":{"message":"Unlisted Projects"},"unlisted-projects/description":{"message":"Allows you to generate share links for unshared projects in the editor."},"stats-percentages/title":{"message":"Show Percentages for Project Stats"},"stats-percentages/description":{"message":"On the my stuff page, hover over the number of loves, favorites or remixes to view what percent of viewers performed the action."},"clone-counter/title":{"message":"Clone Counter"},"clone-counter/description":{"message":"Displays the total number of clones in the project above, in the stage header."},"colored-shadows/title":{"message":"Colored Shadows"},"colored-shadows/description":{"message":"Replaces the shadow created when you drag a block near another block with the color of the block that is being moved."},"creator-badge/title":{"message":"Author Badge"},"creator-badge/description":{"message":"Adds a badge next to comments written by the author of the project."},"original-buttons/title":{"message":"Original Buttons"},"original-buttons/description":{"message":"Returns the original love, favorite, remix, and view buttons to the Scratch project pages."},"box-shadows/title":{"message":"Content Box Shadows"},"box-shadows/description":{"message":"Adds shadows on all content boxes. When hovering one, the shadow will darken."},"admin-notifications/title":{"message":"Red Admin Message Indicator"},"admin-notifications/description":{"message":"If you have an admin notification from the Scratch Team, the message indicator in the navigation bar will display red instead of orange."},"nicknames/title":{"message":"Nicknames"},"nicknames/description":{"message":"Set nicknames for other Scratchers. Only you can see the nicknames, and their username will be replaced with the nickname when you see their name."},"load-more-forum-posts/title":{"message":"Load More Posts"},"load-more-forum-posts/description":{"message":"Load more posts in the forum without having to switch pages."},"scroll-project-titles/title":{"message":"Scroll Project Titles"},"scroll-project-titles/description":{"message":"Allows you to scroll and view the entire title of projects that you don't own."},"search-context-menus/title":{"message":"Search Context Menus"},"search-context-menus/description":{"message":"Type and search context menus to select an option efficiently. You can also press enter to select the top option."},"hover-user-cards/title":{"message":"User Hover Cards"},"hover-user-cards/description":{"message":"Hover over any username on the website to display the profile picture, username and follower count."},"exact-join-date/title":{"message":"Exact Join Date"},"exact-join-date/description":{"message":"Displays the exact time that a user joined, shown on their profile."},"upload-img-directly/title":{"message":"Direct Image Uploads"},"upload-img-directly/description":{"message":"Allows you to upload images to the Scratch forums for posts and signatures without having to use third party image uploading services."},"leave-studio/title":{"message":"Leave Studio Button"},"leave-studio/description":{"message":"Adds a button to the curators page of any studios you curate or manage that allows you to leave the studio. A confirmation shows first."},"frontpage-curator/title":{"message":"Frontpage Curator Name as Link"},"frontpage-curator/description":{"message":"Makes the name of the Frontpage Curator to a clickable link to his profile."},"minimized-remix-credits/title":{"message":"Minimized Remix Credits"},"minimized-remix-credits/description":{"message":"The remix credit boxes for projects take space from the project Instructions, so this makes the box smaller."},"follows-you/title":{"message":"Show if Following on Profile"},"follows-you/description":{"message":"If a user is following you, it will show next to their username when you visit their profile."},"custom-studio/title":{"message":"Custom Studio Section"},"custom-studio/description":{"message":"On the homepage of the Scratch website, the newest projects from the studio of your choice are displayed above the Featured Projects."},"highlight-unanswered/title":{"message":"Highlight Unanswered Forum Topics"},"highlight-unanswered/description":{"message":"Adds a blue highlight to topics in the forums that have no replies."},"search-assets/title":{"message":"Search Assets"},"search-assets/description":{"message":"Search through costume and sound assets in the editor."},"block-count-in-mystuff/title":{"message":"Block Count in My Stuff"},"block-count-in-mystuff/description":{"message":"Displays the block count for projects on the My Stuff page."},"pause-audio/title":{"message":"Pause Audio"},"pause-audio/description":{"message":"Allows you to pause and resume audio in the sound editor of Scratch projects."},"display-message-count-in-icon/title":{"message":"Display Message Count"},"display-message-count-in-icon/description":{"message":"Displays your current message count in the extension icon for ScratchTools."},"colored-context-menus/title":{"message":"Colored Context Menus"},"colored-context-menus/description":{"message":"Like in Scratch 2.0, colors the context menus based on the color of the block they're for."},"left-side-stage/title":{"message":"Stage on Left Side"},"left-side-stage/description":{"message":"Like in Scratch 2.0, moves the stage to the left side of the editor, rather than keeping it on the right."},"move-project-title-input/title":{"message":"Project Title Above Stage"},"move-project-title-input/description":{"message":"Like in Scratch 2.0, moves the project title input box above the stage, rather than in the navbar. This only applies to the editor."},"hide-disabled-menu-options/title":{"message":"Hide Disabled Context Menu Options"},"hide-disabled-menu-options/description":{"message":"Context menu options in the editor show even if they are disabled and unable to be used, so this feature will hide them if they are."},"follower-count/title":{"message":"Follower Count on Projects"},"follower-count/description":{"message":"Displays the follower count of the project creator on their projects."},"hide-studio-borders/title":{"message":"Hide Studio Frames"},"hide-studio-borders/description":{"message":"Removes the odd frames from around studio images on 2.0 pages."},"hide-textarea-labels/title":{"message":"Hide Project Instructions and Notes and Credits Labels"},"hide-textarea-labels/description":{"message":"The instructions and notes and credits labels take up quite a bit of space where there could be usual information. This removes them."},"default-to-trending/title":{"message":"Search Trending by Default"},"default-to-trending/description":{"message":"Currently, when you search projects on the Scratch website, you automatically search with the popular filter, instead of trending."},"infinite-backpack-scrolling/title":{"message":"Infinite Backpack Scrolling"},"infinite-backpack-scrolling/description":{"message":"Scroll through the backpack until you reach the very end (does take some time to load, but loads automatically)."},"hide-studio-messages/title":{"message":"Hide Studio Activity Messages"},"hide-studio-messages/description":{"message":"Hide the studio activity messages from the messages page- they pile up quickly and can get annoying."},"get-project-tags/title":{"message":"Display Project Tags"},"get-project-tags/description":{"message":"Lists all of the tags used in the project description right below the project notes and credits."},"link-to-propose/title":{"message":"Link Featured Projects to Studio"},"link-to-propose/description":{"message":"Links the Featured Projects box on the homepage to the Propose Projects to Be Featured studio."},"add-last-option-list/title":{"message":"Set List Item to Last"},"add-last-option-list/description":{"message":"Right click a 'get item [number] of [list]' to set it to select the very last item in the selected list."},"cloud-scratchers/title":{"message":"Online Scratchers in Multiplayer Game"},"cloud-scratchers/description":{"message":"On project pages, displays all of the Scratchers currently in that multiplayer game."},"editor-in-two/title":{"message":"2.0 Editor"},"editor-in-two/description":{"message":"Replaces the default 3.0 online project editor with the 2.0 editor. It's nostalgic, really."},"comment-on-closed-profile/title":{"message":"Comment On Profile With Comments Closed"},"comment-on-closed-profile/description":{"message":"If your profile comments are closed, you can now comment on your own profile anyways. Only you can comment on the profile."},"turbowarp-button-in-editor/title":{"message":"Open in TurboWarp from Editor"},"turbowarp-button-in-editor/description":{"message":"Adds a button to the editor so that you can instantly open the current project in TurboWarp."},"sprite-clones/title":{"message":"Sprite Clone Counter"},"sprite-clones/description":{"message":"Displays the clone count for each individual sprite."},"block-log/title":{"message":"Block Log"},"block-log/description":{"message":"Logs and displays all undo information for the block editor when you press ctrl+shift+l."},"scrollable-list-items/title":{"message":"Scrollable List Items"},"scrollable-list-items/description":{"message":"List items that have a value longer than the width of the list itself will get cut off. Now, you can scroll left and right through the list item."},"custom-fonts/title":{"message":"Custom Website Font"},"custom-fonts/description":{"message":"On the Scratch website, you can set the font to whatever font you want, as long as it is on the Google Fonts website. This is case-sensitive."},"project-timer/title":{"message":"Project Timer"},"project-timer/description":{"message":"Displays the amount of time (in seconds) that the project has been running for."},"colored-comments/title":{"message":"Colored Editor Comments"},"colored-comments/description":{"message":"Colors comments in the editor based on the color of their parent block."},"recently-viewed-projects/title":{"message":"Recently Viewed Projects"},"recently-viewed-projects/description":{"message":"Adds a tab to the My Stuff page where you can see a list of the projects that you have recently viewed."},"collapse-blocks/title":{"message":"Collapse Blocks"},"collapse-blocks/description":{"message":"Right-click block menus in the editor include a button that will let you collapse the selected block."},"set-featured-project/title":{"message":"Set Featured Project"},"set-featured-project/description":{"message":"On any project page, you can set your profile's featured project with the click of a button- even unshared projects."},"scratchformat/title":{"message":"ScratchFormat"},"scratchformat/description":{"message":"Format your comments with bold, italic, and more. The comments will be styled to everyone using ScratchTools."},"expand-editor/title":{"message":"Expand Editor"},"expand-editor/description":{"message":"Use the ctrl+e to switch between the default block editor view and one that hides the stage to expand editor itself."},"list-sprites/title":{"message":"Sprite List"},"list-sprites/description":{"message":"Replaces the sprite grid in the editor with a list that includes the block count and position of the sprite."},"check-if-trending/title":{"message":"Check if Trending"},"check-if-trending/description":{"message":"If a project you're viewing is on the trending page, the place on the trending page will be shown next to the share date on the project page."},"link-forum-activity/title":{"message":"Link Users in Forum Activity"},"link-forum-activity/description":{"message":"In the forums' last post section, makes the usernames link to the user's profile."},"remove-topic-and-post/title":{"message":"Hide Forum Category Counts"},"remove-topic-and-post/description":{"message":"Hides the forum homepage topic and post boxes."},"forum-homepage-emojis/title":{"message":"Forum Category Emojis"},"forum-homepage-emojis/description":{"message":"Adds colorful emojis on the forum homepage categories based on their topic."},"remove-collapse-buttons/title":{"message":"Hide Forum Collapse Buttons"},"remove-collapse-buttons/description":{"message":"Hides the collapse buttons on the forum main page."},"pin-projects/title":{"message":"Pin Projects to My Stuff"},"pin-projects/description":{"message":"Pin one of your projects to the top of your My Stuff page with the click of a button. You can unpin your pinned project or switch out your pinned project for another one as well."},"last-key-pressed/title":{"message":"Last Key Pressed"},"last-key-pressed/description":{"message":"On any project page and in the editor, you can view the last key that you have pressed while on that project, according to the project itself. This is good for games such as platformers."},"hide-signatures/title":{"message":"Hide Forum Signatures"},"hide-signatures/description":{"message":"Hides all forum signatures and signature dividers."},"twemoji-in-forums/title":{"message":"Better Forum Emojis"},"twemoji-in-forums/description":{"message":"Replaces the current low resolution forum emojis with high quality Twemojis."},"go-to-parent/title":{"message":"Go to Parent Button"},"go-to-parent/description":{"message":"In the editor for any project that is a remix, you can click a button to go to the editor in the parent project."},"most-popular-project/title":{"message":"Most Popular Project"},"most-popular-project/description":{"message":"Displays the most popular project (by views) of the user on profile pages. You can click on the project to view it."},"editor-dark-mode/title":{"message":"Editor Dark Mode"},"editor-dark-mode/description":{"message":"Switches the editor's light color scheme to a darker one."},"hide-studio-group-icon/title":{"message":"Hide Studio Group Icon"},"hide-studio-group-icon/description":{"message":"Hides the studio group icon, and only shows the studio thumbnail."},"colored-messages/title":{"message":"Colored Messages"},"colored-messages/description":{"message":"Colors your messages based on the type of message, such as loves, favorites, and studio invites."},"full-title/title":{"message":"Full Project Title"},"full-title/description":{"message":"On profile pages, hover over any project title to show the full title."},"fixed-box/title":{"message":"Fix Content Boxes"},"fixed-box/description":{"message":"Makes all sides of boxes on the pages rounded, rather than just the tops."},"user-bio/title":{"message":"User Bio on Hover"},"user-bio/description":{"message":"In profile comments, hover over any username to display the user's bio."},"nfe-project-checker/title":{"message":"NFE Project Checker"},"nfe-project-checker/description":{"message":"On project pages, displays whether the project is Safe, Unreviewed, or NSFE (Not Safe for Everyone)."},"sprite-data/title":{"message":"Display Sprite Data"},"sprite-data/description":{"message":"In the Code, Costumes, and Sounds tab for each sprite, the number of blocks, costumes, and sounds will be displayed for the current sprite."},"idea-generator/title":{"message":"Project Idea Generator"},"idea-generator/description":{"message":"On the Scratch Ideas page, there will be a section where you can generate project ideas if you need some."},"hide-stickies/title":{"message":"Hide Forum Stickies"},"hide-stickies/description":{"message":"Hides the basic stickies from the top of each forum topic."},"nfe-search/title":{"message":"NFE Search"},"nfe-search/description":{"message":"Use a button to search all projects, including NFE ones."},"open-in-new-tab/title":{"message":"Open in New Tab"},"open-in-new-tab/description":{"message":"Automatically opens links on project pages in a new tab."},"unbold-site-text/title":{"message":"Unbold Site Text"},"unbold-site-text/description":{"message":"Makes it so that all text across Scratch is unbolded, and just normal text."},"compact-navbar/title":{"message":"Compact Navbar"},"compact-navbar/description":{"message":"Makes more room on the navigation bar near where your profile dropdown is."},"delete-all/title":{"message":"Delete All Sprites"},"delete-all/description":{"message":"Adds an option in the right-click context menu for sprites. It will delete all sprites (after confirmation to make sure it isn't an accident)."},"round-profile-pictures/title":{"message":"Round Profile Pictures"},"round-profile-pictures/description":{"message":"All profile pictures on the Scratch website will be rounded."},"ocular-link/title":{"message":"Ocular Links in Forums"},"ocular-link/description":{"message":"Adds a link to any user's Ocular page right below their username on a post."},"forum-scratch-team/title":{"message":"Scratch Team Symbol in Forums"},"forum-scratch-team/description":{"message":"Next to the username of any Scratch Team member in the forums, an asterisk (*) is placed at the end of their username."},"remove-editor-icons/title":{"message":"Remove Editor Icons"},"remove-editor-icons/description":{"message":"Removes the icons from the tabs in the editor."},"sprite-watermark/title":{"message":"Remove Sprite Watermark"},"sprite-watermark/description":{"message":"Removes the sprite watermark that shows in the editor."},"compact-editor/title":{"message":"Compact Editor"},"compact-editor/description":{"message":"Makes sprite and backdrop information more compact."},"my-recent-projects/title":{"message":"Replace Scratch News with Recent Projects"},"my-recent-projects/description":{"message":"Replaces the Scratch News section on the homepage with your recently shared projects."},"focus-mode/title":{"message":"Focus Mode"},"focus-mode/description":{"message":"Removes the comments, studio and remix column, header, and footer on project pages when the button is clicked."}}
\ No newline at end of file
+{"remaining-replies/title":{"message":"Remaining Replies"},"remaining-replies/description":{"message":"Shows how many more replies are allowed in a thread of studio comments."},"video-recorder/title":{"message":"Record Stage"},"video-recorder/description":{"message":"Allows you to record the stage for projects while in the editor or on the project page."},"studio-creation-date/title":{"message":"Studio Creation Date"},"studio-creation-date/description":{"message":"Adds the creation date of the studio to the studio footer."},"explore-filter/title":{"message":"Explore Filter"},"explore-filter/description":{"message":"Customize project and studio search results with filters on the Search, Explore, and Studio pages."},"better-featured-projects/title":{"message":"Better Featured Projects"},"better-featured-projects/description":{"message":"Replaces the Featured Projects section with featured projects curated by ScratchTools users. You can submit your own projects to be featured as well."},"align-to-center/title":{"message":"Align to Center"},"align-to-center/description":{"message":"Allows you to align text in Instructions and Notes & Credits boxes to the center of the input."},"more-editor-fonts/title":{"message":"More Paint Editor Fonts"},"more-editor-fonts/description":{"message":"Allows you to use dozens of extra fonts in the paint editor."},"upload-thumbnail/title":{"message":"Set Thumbnail"},"upload-thumbnail/description":{"message":"Allows you to upload an image or GIF as a project thumbnail, or set the thumbnail to the current stage."},"paint-align/title":{"message":"Align Objects in Paint Editor"},"paint-align/description":{"message":"Adds a button to the paint editor that allows you to align selected items."},"rotate-gradient/title":{"message":"Rotate Gradients"},"rotate-gradient/description":{"message":"Allows you to rotate gradients in any direction in the costume editor. Works in both the vector and bitmap editors."},"change-monitor-opacity/title":{"message":"Custom Monitor Opacity"},"change-monitor-opacity/description":{"message":"Set the opacity of variables and lists on the stage to a custom number."},"project-reactions/title":{"message":"Project Reactions"},"project-reactions/description":{"message":"Allows you to react to projects with different emojis."},"chomp-blocks/title":{"message":"Extend Wrapped C Blocks"},"chomp-blocks/description":{"message":"Automatically extends C blocks to wrap around blocks that it is being placed over when dragging."},"custom-explore/title":{"message":"Custom Explore Redirect"},"custom-explore/description":{"message":"Automatically redirect to a specific tab on the Explore page."},"stage-in-spritepane/title":{"message":"Stage In Sprite Pane"},"stage-in-spritepane/description":{"message":"Move the stage button to the sprite pane to widen the sprite field."},"better-cloud-history/title":{"message":"Better Cloud History"},"better-cloud-history/description":{"message":"Updates the cloud monitor page to a more modern version with more details. You can click on variable names to sort by that variable."},"sprite-layers/title":{"message":"View Sprite Layers"},"sprite-layers/description":{"message":"Allows you to hover over the show/hide toggle in the sprite properties panel of the editor to view the sprite layers."},"hide-project-tags/title":{"message":"Hide Project Tags"},"hide-project-tags/description":{"message":"Hides all linked tags in the Instructions/Notes and Credits of projects."},"snap-to-grid/title":{"message":"Snap Scripts to Grid"},"snap-to-grid/description":{"message":"Automatically aligns scripts to the dotted grid in the editor when placed."},"select-self/title":{"message":"Select Self"},"select-self/description":{"message":"Allows you to select the current sprite when opening sprite dropdowns, instead of only other sprites."},"sidebar/title":{"message":"Sidebar"},"sidebar/description":{"message":"Adds a sidebar to the Scratch website, rather than just the normal navigation bar at the top of the screen."},"project-version-detector/title":{"message":"Project Version Detector"},"project-version-detector/description":{"message":"Checks when a project was shared and adds a label next to the share date to indicate which version of Scratch was in use at that time."},"fullscreen-explorer/title":{"message":"Fullscreen Project Grids"},"fullscreen-explorer/description":{"message":"Find projects on the big screen by removing the left and right blanks on the Trends, Search, Remix pages."},"project-descriptions/title":{"message":"Summarized Descriptions"},"project-descriptions/description":{"message":"Uses artificial intelligence to summarize project descriptions when you choose to, and shortens long descriptions down to important information, such as gameplay instructions."},"total-stats/title":{"message":"Total User Stats"},"total-stats/description":{"message":"Next to shared projects on a user's profile, displays the total loves, favorites and views that the user has received across all of their shared projects."},"project-miniplayer/title":{"message":"Project Miniplayer"},"project-miniplayer/description":{"message":"Scroll down on the project page and you will automatically see the project miniplayer."},"pin-comments/title":{"message":"Pin Project Comments"},"pin-comments/description":{"message":"Allows you to pin comments on your own projects and see what comments are pinned on other projects."},"download-project/title":{"message":"Download Projects"},"download-project/description":{"message":"Adds a button to project pages that allows you to download the project as an .sb3 file."},"blur-modal/title":{"message":"Blur Modal Backgrounds"},"blur-modal/description":{"message":"Blurs the backgrounds of modals instead of having a colored overlay."},"quick-search/title":{"message":"Quick Search"},"quick-search/description":{"message":"Easily jump between pages on the Scratch website with just the click of Control + K."},"favicon-messages/title":{"message":"Tab Message Count"},"favicon-messages/description":{"message":"Displays your message count in the tab favicon, the Scratch icon at the top of your tab."},"show-emoji-names/title":{"message":"Show Emoji Name"},"show-emoji-names/description":{"message":"Allows you to hover over Scratch emojis in the comments and view their names."},"more-block-themes/title":{"message":"More Block Themes"},"more-block-themes/description":{"message":"Adds additional themes for blocks in the code editor."},"more-key-inputs/title":{"message":"More Key Inputs"},"more-key-inputs/description":{"message":"Adds support for more keys on \"key pressed\" blocks."},"comment-tags/title":{"message":"Editor Comment Tags"},"comment-tags/description":{"message":"Add tags to editor comments to easily organize them."},"profile-flag/title":{"message":"Flag on Profile"},"profile-flag/description":{"message":"Adds flag emojis near selected locations on profile pages."},"follow-on-projects/title":{"message":"Follow on Project Page"},"follow-on-projects/description":{"message":"Follow users directly from the project page instead of going to their profile."},"dark-paint-editor/title":{"message":"Switch Paint Background"},"dark-paint-editor/description":{"message":"Adds a button next to the zoom controls in the paint editor that allows you to switch the background color of the paint editor between light and dark."},"specific-replies/title":{"message":"Specific Reply Messages"},"specific-replies/description":{"message":"In messages related to comments, specifies who a comment was replying to."},"better-trending-thumbnails/title":{"message":"Larger Thumbnails"},"better-trending-thumbnails/description":{"message":"Updates thumbnails on the trending and search pages to be larger and better fit the project/studio box."},"anti-generic/title":{"message":"Anti Generic"},"anti-generic/description":{"message":"On the explore and trending pages, this beta feature automatically hides repetitive projects, along with projects that it expects are generic. This includes projects with a lot of tags, common names, and project duplicates."},"wrap-lists/title":{"message":"Wrap List Items"},"wrap-lists/description":{"message":"Displays text in list items normally without cutting them off if they're too long."},"live-stats/title":{"message":"Live Stats"},"live-stats/description":{"message":"Updates the loves, favorites, remixes, and views on a project live, without having to reload to view the new counts."},"hide-scratch-news/title":{"message":"Hide Scratch News"},"hide-scratch-news/description":{"message":"Hides the Scratch News section on the homepage of the Scratch website."},"watch-later/title":{"message":"Save to Watch Later"},"watch-later/description":{"message":"Save projects you want to view later and they'll appear on a watch later page."},"remove-project-button/title":{"message":"Remove Project Button"},"remove-project-button/description":{"message":"Adds a button to projects in studios that allows you to easily remove it from the studio without opening the menu."},"right-side-flag/title":{"message":"Right Side Flag"},"right-side-flag/description":{"message":"Moves the green flag and the red stop sign to the right side of the stage."},"love-fave-animate/title":{"message":"Love Animations"},"love-fave-animate/description":{"message":"Animates the clicking of the love and favorite buttons on project pages."},"default-to-local/title":{"message":"Default to Local"},"default-to-local/description":{"message":"When creating a variable, sets the default to For This Sprite Only, rather than For All Sprites."},"start-stop-hotkeys/title":{"message":"Green Flag Hotkeys"},"start-stop-hotkeys/description":{"message":"Use Control + G to start or stop a project, depending on whether or not it is running."},"opacity-slider/title":{"message":"Opacity Slider"},"opacity-slider/description":{"message":"Change the opacity of objects in the paint editor."},"more-studios/title":{"message":"More Studios"},"more-studios/description":{"message":"Allows you to add projects to more studios instead of just 20."},"localized-explore/title":{"message":"Projects from Country"},"localized-explore/description":{"message":"On the explore page, makes projects from other countries less visible. This is to only show projects in languages that you understand."},"project-bar/title":{"message":"Project Bar"},"project-bar/description":{"message":"Continue to view the information for a project, even after you scroll down past the notes and credits."},"more-news/title":{"message":"More Scratch News"},"more-news/description":{"message":"On the main page, scroll through the Scratch News section and load more results."},"dumpster-fire/title":{"message":"Dumpster Fire"},"dumpster-fire/description":{"message":"The Scratch homepage is a liar with their \"Featured Projects\" section. This changes the name to the proper form, which is \"Dumpster Fire\"."},"steal-game/title":{"message":"Steal Game"},"steal-game/description":{"message":"Changes the remix button's text to 'Steal game'."},"statistics/title":{"message":"Statistics"},"statistics/description":{"message":"Adds a statistics button on the my stuff page that leads to your ScratchStats profile."},"echo-effect/title":{"message":"Echo Effect"},"echo-effect/description":{"message":"Adds the echo effect back to the Scratch sound editor."},"compact-buttons/title":{"message":"Compact Buttons"},"compact-buttons/description":{"message":"Buttons text gets removed and will get a new icon if it does not have one already."},"message-count/title":{"message":"Message Count"},"message-count/description":{"message":"Displays the user's message count on their profile next to the country."},"move-share-button/title":{"message":"Move Share Button"},"move-share-button/description":{"message":"On project pages, moves the share button next to the See Inside button."},"preview-textboxes/title":{"message":"Preview Textboxes"},"preview-textboxes/description":{"message":"Preview your profile About Me and What I'm Working On, and your projects' Instructions and Notes and Credits, so that you can see what it will look like to other users."},"more-tutorials/title":{"message":"More Tutorials"},"more-tutorials/description":{"message":"On the Ideas page, you can view additional tutorials from other Scratchers."},"simplify-action-buttons/title":{"message":"Simplify Action Buttons"},"simplify-action-buttons/description":{"message":"Displays project action buttons underneath Notes and Credits as their icons."},"slash-to-search/title":{"message":"Slash to Search"},"slash-to-search/description":{"message":"Click the slash key (/) to select the search bar and start typing."},"shared-clipboard/title":{"message":"Shared Clipboard"},"shared-clipboard/description":{"message":"Allows you to copy and paste items between paint editors in different projects."},"hide-footer/title":{"message":"Hide Footer"},"hide-footer/description":{"message":"The footer takes up a lot of unnecessary space. So hide it!"},"original-colors/title":{"message":"Revert to Blue"},"original-colors/description":{"message":"Changes all of the Scratch website's colors back to the original coloring from 3.0, before purple."},"simplify-editor-tabs/title":{"message":"Simplify Editor Tabs"},"simplify-editor-tabs/description":{"message":"Changes editor tabs to icon-only and shows them as a circle"},"live-character-counts/title":{"message":"Live Character Counts"},"live-character-counts/description":{"message":"On forum, studio, and project pages, displays the live character count for textboxes."},"advanced-search/title":{"message":"Search Profiles"},"advanced-search/description":{"message":"When you search for a user, a link to their profile will be at the top of the page."},"studio-links/title":{"message":"Studio Links as Titles"},"studio-links/description":{"message":"Replaces studio links with their titles, all across the Scratch website."},"block-studios/title":{"message":"Block Individual Studio Activity"},"block-studios/description":{"message":"Disable studio activity messages from specific studios."},"block-messages/title":{"message":"Block Users"},"block-messages/description":{"message":"Hide messages from users that you block. Other users won't see that you've blocked them."},"two-colors/title":{"message":"2.0 Block Colors"},"two-colors/description":{"message":"Replaces the colors of the blocks in the editor with the blocks from the 2.0 version of the code editor."},"project-links/title":{"message":"Project Links as Titles"},"project-links/description":{"message":"Replaces project links with their titles, all across the Scratch website."},"emoji-status/title":{"message":"Emoji Statuses"},"emoji-status/description":{"message":"Set the status on your profile to an emoji. Other ScratchTools users will be able to see this status."},"display-name/title":{"message":"Display Names"},"display-name/description":{"message":"Shows display names for Scratchers, and allows you to set your own display name. Display names show next to your username, and aren't limited like usernames are."},"isonline/title":{"message":"Show if User is Online"},"isonline/description":{"message":"On profile pages, displays if a user is online. This will also let other users see if you are online."},"plain-background/title":{"message":"Plain Background"},"plain-background/description":{"message":"Removes the dots from the background of the code editor."},"hide-advertisements/title":{"message":"Hide Ads in Comments"},"hide-advertisements/description":{"message":"Hides advertisements in the comments of profiles, projects, and studios. They can take up a lot of space in the comments."},"hide-block-category-names/title":{"message":"Hide Block Category Names"},"hide-block-category-names/description":{"message":"Changes the block categories in the editor to only show the colors of the categories."},"unlisted-projects/title":{"message":"Unlisted Projects"},"unlisted-projects/description":{"message":"Allows you to generate share links for unshared projects in the editor."},"stats-percentages/title":{"message":"Show Percentages for Project Stats"},"stats-percentages/description":{"message":"On the my stuff page, hover over the number of loves, favorites or remixes to view what percent of viewers performed the action."},"clone-counter/title":{"message":"Clone Counter"},"clone-counter/description":{"message":"Displays the total number of clones in the project above, in the stage header."},"colored-shadows/title":{"message":"Colored Shadows"},"colored-shadows/description":{"message":"Replaces the shadow created when you drag a block near another block with the color of the block that is being moved."},"creator-badge/title":{"message":"Author Badge"},"creator-badge/description":{"message":"Adds a badge next to comments written by the author of the project."},"original-buttons/title":{"message":"Original Buttons"},"original-buttons/description":{"message":"Returns the original love, favorite, remix, and view buttons to the Scratch project pages."},"box-shadows/title":{"message":"Content Box Shadows"},"box-shadows/description":{"message":"Adds shadows on all content boxes. When hovering one, the shadow will darken."},"admin-notifications/title":{"message":"Red Admin Message Indicator"},"admin-notifications/description":{"message":"If you have an admin notification from the Scratch Team, the message indicator in the navigation bar will display red instead of orange."},"nicknames/title":{"message":"Nicknames"},"nicknames/description":{"message":"Set nicknames for other Scratchers. Only you can see the nicknames, and their username will be replaced with the nickname when you see their name."},"load-more-forum-posts/title":{"message":"Load More Posts"},"load-more-forum-posts/description":{"message":"Load more posts in the forum without having to switch pages."},"scroll-project-titles/title":{"message":"Scroll Project Titles"},"scroll-project-titles/description":{"message":"Allows you to scroll and view the entire title of projects that you don't own."},"search-context-menus/title":{"message":"Search Context Menus"},"search-context-menus/description":{"message":"Type and search context menus to select an option efficiently. You can also press enter to select the top option."},"hover-user-cards/title":{"message":"User Hover Cards"},"hover-user-cards/description":{"message":"Hover over any username on the website to display the profile picture, username and follower count."},"exact-join-date/title":{"message":"Exact Join Date"},"exact-join-date/description":{"message":"Displays the exact time that a user joined, shown on their profile."},"upload-img-directly/title":{"message":"Direct Image Uploads"},"upload-img-directly/description":{"message":"Allows you to upload images to the Scratch forums for posts and signatures without having to use third party image uploading services."},"leave-studio/title":{"message":"Leave Studio Button"},"leave-studio/description":{"message":"Adds a button to the curators page of any studios you curate or manage that allows you to leave the studio. A confirmation shows first."},"frontpage-curator/title":{"message":"Frontpage Curator Name as Link"},"frontpage-curator/description":{"message":"Makes the name of the Frontpage Curator to a clickable link to his profile."},"minimized-remix-credits/title":{"message":"Minimized Remix Credits"},"minimized-remix-credits/description":{"message":"The remix credit boxes for projects take space from the project Instructions, so this makes the box smaller."},"follows-you/title":{"message":"Show if Following on Profile"},"follows-you/description":{"message":"If a user is following you, it will show next to their username when you visit their profile."},"custom-studio/title":{"message":"Custom Studio Section"},"custom-studio/description":{"message":"On the homepage of the Scratch website, the newest projects from the studio of your choice are displayed above the Featured Projects."},"highlight-unanswered/title":{"message":"Highlight Unanswered Forum Topics"},"highlight-unanswered/description":{"message":"Adds a blue highlight to topics in the forums that have no replies."},"search-assets/title":{"message":"Search Assets"},"search-assets/description":{"message":"Search through costume and sound assets in the editor."},"block-count-in-mystuff/title":{"message":"Block Count in My Stuff"},"block-count-in-mystuff/description":{"message":"Displays the block count for projects on the My Stuff page."},"pause-audio/title":{"message":"Pause Audio"},"pause-audio/description":{"message":"Allows you to pause and resume audio in the sound editor of Scratch projects."},"display-message-count-in-icon/title":{"message":"Display Message Count"},"display-message-count-in-icon/description":{"message":"Displays your current message count in the extension icon for ScratchTools."},"colored-context-menus/title":{"message":"Colored Context Menus"},"colored-context-menus/description":{"message":"Like in Scratch 2.0, colors the context menus based on the color of the block they're for."},"left-side-stage/title":{"message":"Stage on Left Side"},"left-side-stage/description":{"message":"Like in Scratch 2.0, moves the stage to the left side of the editor, rather than keeping it on the right."},"move-project-title-input/title":{"message":"Project Title Above Stage"},"move-project-title-input/description":{"message":"Like in Scratch 2.0, moves the project title input box above the stage, rather than in the navbar. This only applies to the editor."},"hide-disabled-menu-options/title":{"message":"Hide Disabled Context Menu Options"},"hide-disabled-menu-options/description":{"message":"Context menu options in the editor show even if they are disabled and unable to be used, so this feature will hide them if they are."},"follower-count/title":{"message":"Follower Count on Projects"},"follower-count/description":{"message":"Displays the follower count of the project creator on their projects."},"hide-studio-borders/title":{"message":"Hide Studio Frames"},"hide-studio-borders/description":{"message":"Removes the odd frames from around studio images on 2.0 pages."},"hide-textarea-labels/title":{"message":"Hide Project Instructions and Notes and Credits Labels"},"hide-textarea-labels/description":{"message":"The instructions and notes and credits labels take up quite a bit of space where there could be usual information. This removes them."},"default-to-trending/title":{"message":"Search Trending by Default"},"default-to-trending/description":{"message":"Currently, when you search projects on the Scratch website, you automatically search with the popular filter, instead of trending."},"infinite-backpack-scrolling/title":{"message":"Infinite Backpack Scrolling"},"infinite-backpack-scrolling/description":{"message":"Scroll through the backpack until you reach the very end (does take some time to load, but loads automatically)."},"hide-studio-messages/title":{"message":"Hide Studio Activity Messages"},"hide-studio-messages/description":{"message":"Hide the studio activity messages from the messages page- they pile up quickly and can get annoying."},"get-project-tags/title":{"message":"Display Project Tags"},"get-project-tags/description":{"message":"Lists all of the tags used in the project description right below the project notes and credits."},"link-to-propose/title":{"message":"Link Featured Projects to Studio"},"link-to-propose/description":{"message":"Links the Featured Projects box on the homepage to the Propose Projects to Be Featured studio."},"add-last-option-list/title":{"message":"Set List Item to Last"},"add-last-option-list/description":{"message":"Right click a 'get item [number] of [list]' to set it to select the very last item in the selected list."},"cloud-scratchers/title":{"message":"Online Scratchers in Multiplayer Game"},"cloud-scratchers/description":{"message":"On project pages, displays all of the Scratchers currently in that multiplayer game."},"editor-in-two/title":{"message":"2.0 Editor"},"editor-in-two/description":{"message":"Replaces the default 3.0 online project editor with the 2.0 editor. It's nostalgic, really."},"comment-on-closed-profile/title":{"message":"Comment On Profile With Comments Closed"},"comment-on-closed-profile/description":{"message":"If your profile comments are closed, you can now comment on your own profile anyways. Only you can comment on the profile."},"turbowarp-button-in-editor/title":{"message":"Open in TurboWarp from Editor"},"turbowarp-button-in-editor/description":{"message":"Adds a button to the editor so that you can instantly open the current project in TurboWarp."},"sprite-clones/title":{"message":"Sprite Clone Counter"},"sprite-clones/description":{"message":"Displays the clone count for each individual sprite."},"block-log/title":{"message":"Block Log"},"block-log/description":{"message":"Logs and displays all undo information for the block editor when you press ctrl+shift+l."},"scrollable-list-items/title":{"message":"Scrollable List Items"},"scrollable-list-items/description":{"message":"List items that have a value longer than the width of the list itself will get cut off. Now, you can scroll left and right through the list item."},"custom-fonts/title":{"message":"Custom Website Font"},"custom-fonts/description":{"message":"On the Scratch website, you can set the font to whatever font you want, as long as it is on the Google Fonts website. This is case-sensitive."},"project-timer/title":{"message":"Project Timer"},"project-timer/description":{"message":"Displays the amount of time (in seconds) that the project has been running for."},"colored-comments/title":{"message":"Colored Editor Comments"},"colored-comments/description":{"message":"Colors comments in the editor based on the color of their parent block."},"recently-viewed-projects/title":{"message":"Recently Viewed Projects"},"recently-viewed-projects/description":{"message":"Adds a tab to the My Stuff page where you can see a list of the projects that you have recently viewed."},"collapse-blocks/title":{"message":"Collapse Blocks"},"collapse-blocks/description":{"message":"Right-click block menus in the editor include a button that will let you collapse the selected block."},"set-featured-project/title":{"message":"Set Featured Project"},"set-featured-project/description":{"message":"On any project page, you can set your profile's featured project with the click of a button- even unshared projects."},"scratchformat/title":{"message":"ScratchFormat"},"scratchformat/description":{"message":"Format your comments with bold, italic, and more. The comments will be styled to everyone using ScratchTools."},"expand-editor/title":{"message":"Expand Editor"},"expand-editor/description":{"message":"Use the ctrl+e to switch between the default block editor view and one that hides the stage to expand editor itself."},"list-sprites/title":{"message":"Sprite List"},"list-sprites/description":{"message":"Replaces the sprite grid in the editor with a list that includes the block count and position of the sprite."},"check-if-trending/title":{"message":"Check if Trending"},"check-if-trending/description":{"message":"If a project you're viewing is on the trending page, the place on the trending page will be shown next to the share date on the project page."},"link-forum-activity/title":{"message":"Link Users in Forum Activity"},"link-forum-activity/description":{"message":"In the forums' last post section, makes the usernames link to the user's profile."},"remove-topic-and-post/title":{"message":"Hide Forum Category Counts"},"remove-topic-and-post/description":{"message":"Hides the forum homepage topic and post boxes."},"forum-homepage-emojis/title":{"message":"Forum Category Emojis"},"forum-homepage-emojis/description":{"message":"Adds colorful emojis on the forum homepage categories based on their topic."},"remove-collapse-buttons/title":{"message":"Hide Forum Collapse Buttons"},"remove-collapse-buttons/description":{"message":"Hides the collapse buttons on the forum main page."},"pin-projects/title":{"message":"Pin Projects to My Stuff"},"pin-projects/description":{"message":"Pin one of your projects to the top of your My Stuff page with the click of a button. You can unpin your pinned project or switch out your pinned project for another one as well."},"last-key-pressed/title":{"message":"Last Key Pressed"},"last-key-pressed/description":{"message":"On any project page and in the editor, you can view the last key that you have pressed while on that project, according to the project itself. This is good for games such as platformers."},"hide-signatures/title":{"message":"Hide Forum Signatures"},"hide-signatures/description":{"message":"Hides all forum signatures and signature dividers."},"twemoji-in-forums/title":{"message":"Better Forum Emojis"},"twemoji-in-forums/description":{"message":"Replaces the current low resolution forum emojis with high quality Twemojis."},"go-to-parent/title":{"message":"Go to Parent Button"},"go-to-parent/description":{"message":"In the editor for any project that is a remix, you can click a button to go to the editor in the parent project."},"most-popular-project/title":{"message":"Most Popular Project"},"most-popular-project/description":{"message":"Displays the most popular project (by views) of the user on profile pages. You can click on the project to view it."},"editor-dark-mode/title":{"message":"Editor Dark Mode"},"editor-dark-mode/description":{"message":"Switches the editor's light color scheme to a darker one."},"hide-studio-group-icon/title":{"message":"Hide Studio Group Icon"},"hide-studio-group-icon/description":{"message":"Hides the studio group icon, and only shows the studio thumbnail."},"colored-messages/title":{"message":"Colored Messages"},"colored-messages/description":{"message":"Colors your messages based on the type of message, such as loves, favorites, and studio invites."},"full-title/title":{"message":"Full Project Title"},"full-title/description":{"message":"On profile pages, hover over any project title to show the full title."},"fixed-box/title":{"message":"Fix Content Boxes"},"fixed-box/description":{"message":"Makes all sides of boxes on the pages rounded, rather than just the tops."},"user-bio/title":{"message":"User Bio on Hover"},"user-bio/description":{"message":"In profile comments, hover over any username to display the user's bio."},"nfe-project-checker/title":{"message":"NFE Project Checker"},"nfe-project-checker/description":{"message":"On project pages, displays whether the project is Safe, Unreviewed, or NSFE (Not Safe for Everyone)."},"sprite-data/title":{"message":"Display Sprite Data"},"sprite-data/description":{"message":"In the Code, Costumes, and Sounds tab for each sprite, the number of blocks, costumes, and sounds will be displayed for the current sprite."},"idea-generator/title":{"message":"Project Idea Generator"},"idea-generator/description":{"message":"On the Scratch Ideas page, there will be a section where you can generate project ideas if you need some."},"hide-stickies/title":{"message":"Hide Forum Stickies"},"hide-stickies/description":{"message":"Hides the basic stickies from the top of each forum topic."},"nfe-search/title":{"message":"NFE Search"},"nfe-search/description":{"message":"Use a button to search all projects, including NFE ones."},"open-in-new-tab/title":{"message":"Open in New Tab"},"open-in-new-tab/description":{"message":"Automatically opens links on project pages in a new tab."},"unbold-site-text/title":{"message":"Unbold Site Text"},"unbold-site-text/description":{"message":"Makes it so that all text across Scratch is unbolded, and just normal text."},"compact-navbar/title":{"message":"Compact Navbar"},"compact-navbar/description":{"message":"Makes more room on the navigation bar near where your profile dropdown is."},"delete-all/title":{"message":"Delete All Sprites"},"delete-all/description":{"message":"Adds an option in the right-click context menu for sprites. It will delete all sprites (after confirmation to make sure it isn't an accident)."},"round-profile-pictures/title":{"message":"Round Profile Pictures"},"round-profile-pictures/description":{"message":"All profile pictures on the Scratch website will be rounded."},"ocular-link/title":{"message":"Ocular Links in Forums"},"ocular-link/description":{"message":"Adds a link to any user's Ocular page right below their username on a post."},"forum-scratch-team/title":{"message":"Scratch Team Symbol in Forums"},"forum-scratch-team/description":{"message":"Next to the username of any Scratch Team member in the forums, an asterisk (*) is placed at the end of their username."},"remove-editor-icons/title":{"message":"Remove Editor Icons"},"remove-editor-icons/description":{"message":"Removes the icons from the tabs in the editor."},"sprite-watermark/title":{"message":"Remove Sprite Watermark"},"sprite-watermark/description":{"message":"Removes the sprite watermark that shows in the editor."},"compact-editor/title":{"message":"Compact Editor"},"compact-editor/description":{"message":"Makes sprite and backdrop information more compact."},"my-recent-projects/title":{"message":"Replace Scratch News with Recent Projects"},"my-recent-projects/description":{"message":"Replaces the Scratch News section on the homepage with your recently shared projects."},"focus-mode/title":{"message":"Focus Mode"},"focus-mode/description":{"message":"Removes the comments, studio and remix column, header, and footer on project pages when the button is clicked."}}
\ No newline at end of file
From 580cd9a6bfc815dd9a22dc01cba453c950a618eb Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Sun, 18 Aug 2024 13:53:58 -0700
Subject: [PATCH 146/253] Change username credit for Projects from Country
feature
---
features/localized-explore/data.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/features/localized-explore/data.json b/features/localized-explore/data.json
index 16afb48e..2ed32d0c 100644
--- a/features/localized-explore/data.json
+++ b/features/localized-explore/data.json
@@ -2,7 +2,7 @@
"title": "Projects from Country",
"description": "On the explore page, makes projects from other countries less visible. This is to only show projects in languages that you understand.",
"credits": [
- { "username": "EiramC", "url": "https://scratch.mit.edu/users/EiramC/" },
+ { "username": "KitsunLilly", "url": "https://scratch.mit.edu/users/KitsunLilly/" },
{ "username": "rgantzos", "url": "https://scratch.mit.edu/users/rgantzos/" }
],
"type": ["Website"],
From a0e20bda0343080817175754546236669eb80257 Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Fri, 23 Aug 2024 12:27:56 -0700
Subject: [PATCH 147/253] webp uploads
---
features/features.json | 5 +
features/webp-uploads/data.json | 10 ++
features/webp-uploads/script.js | 173 ++++++++++++++++++++++++++++++++
3 files changed, 188 insertions(+)
create mode 100644 features/webp-uploads/data.json
create mode 100644 features/webp-uploads/script.js
diff --git a/features/features.json b/features/features.json
index fa38492f..44c8da8d 100644
--- a/features/features.json
+++ b/features/features.json
@@ -1,4 +1,9 @@
[
+ {
+ "version": 2,
+ "id": "webp-uploads",
+ "versionAdded": "v4.0.0"
+ },
{
"version": 2,
"id": "explore-filter",
diff --git a/features/webp-uploads/data.json b/features/webp-uploads/data.json
new file mode 100644
index 00000000..a39533fb
--- /dev/null
+++ b/features/webp-uploads/data.json
@@ -0,0 +1,10 @@
+{
+ "title": "WEBP Uploads",
+ "description": "Allows you to upload webp images in the editor for new sprites, costumes and stage backdrops.",
+ "credits": [
+ { "username": "rgantzos", "url": "https://scratch.mit.edu/users/rgantzos/" }
+ ],
+ "type": ["Editor"],
+ "tags": ["New", "Featured"],
+ "scripts": [{ "file": "script.js", "runOn": "/projects/*" }]
+}
diff --git a/features/webp-uploads/script.js b/features/webp-uploads/script.js
new file mode 100644
index 00000000..4a486b06
--- /dev/null
+++ b/features/webp-uploads/script.js
@@ -0,0 +1,173 @@
+export default async function ({ feature, console }) {
+ let fileInput = {
+ costume: null,
+ sprite: null,
+ stage: null,
+ };
+
+ ScratchTools.waitForElements(
+ "div[class*='asset-panel_wrapper_'] input[type=file]",
+ function (input) {
+ fileInput.costume = input;
+
+ fileInput.costume.parentElement.addEventListener("click", function (e) {
+ e.preventDefault();
+ e.stopImmediatePropagation();
+
+ let input = document.createElement("input");
+ input.accept = ".svg, .png, .bmp, .jpg, .jpeg, .gif, .webp";
+ input.setAttribute("multiple", null);
+ input.type = "file";
+
+ let files = [];
+
+ input.addEventListener("change", async function () {
+ const dataTransfer = new DataTransfer();
+
+ for (var i in input.files) {
+ let file = input.files[i];
+ if (file?.type?.startsWith("image/")) {
+ if (file.type === "image/webp") {
+ let blob = await convertWebPFileToPng(file);
+ file = new File([blob], file.name.split(".")[0] + ".png", {
+ type: "image/png",
+ });
+ dataTransfer.items.add(file);
+ } else {
+ dataTransfer.items.add(file);
+ }
+ }
+ }
+
+ fileInput.costume.files = dataTransfer.files;
+
+ fileInput.costume.dispatchEvent(
+ new Event("change", { bubbles: true })
+ );
+ });
+
+ input.click();
+ });
+ }
+ );
+
+ ScratchTools.waitForElements(
+ "div[class*='sprite-selector_sprite-selector_'] input[type=file]",
+ function (input) {
+ fileInput.sprite = input;
+
+ fileInput.sprite.parentElement.addEventListener("click", function (e) {
+ e.preventDefault();
+ e.stopImmediatePropagation();
+
+ let input = document.createElement("input");
+ input.accept = ".svg, .png, .bmp, .jpg, .jpeg, .gif, .webp";
+ input.setAttribute("multiple", null);
+ input.type = "file";
+
+ let files = [];
+
+ input.addEventListener("change", async function () {
+ const dataTransfer = new DataTransfer();
+
+ for (var i in input.files) {
+ let file = input.files[i];
+ if (file?.type?.startsWith("image/")) {
+ if (file.type === "image/webp") {
+ let blob = await convertWebPFileToPng(file);
+ file = new File([blob], file.name.split(".")[0] + ".png", {
+ type: "image/png",
+ });
+ dataTransfer.items.add(file);
+ } else {
+ dataTransfer.items.add(file);
+ }
+ }
+ }
+
+ fileInput.sprite.files = dataTransfer.files;
+
+ fileInput.sprite.dispatchEvent(
+ new Event("change", { bubbles: true })
+ );
+ });
+
+ input.click();
+ });
+ }
+ );
+
+ ScratchTools.waitForElements(
+ "div[class*='stage-selector_stage-selector_'] input[type=file]",
+ function (input) {
+ fileInput.stage = input;
+
+ fileInput.stage.parentElement.addEventListener("click", function (e) {
+ e.preventDefault();
+ e.stopImmediatePropagation();
+
+ let input = document.createElement("input");
+ input.accept = ".svg, .png, .bmp, .jpg, .jpeg, .gif, .webp";
+ input.setAttribute("multiple", null);
+ input.type = "file";
+
+ let files = [];
+
+ input.addEventListener("change", async function () {
+ const dataTransfer = new DataTransfer();
+
+ for (var i in input.files) {
+ let file = input.files[i];
+ if (file?.type?.startsWith("image/")) {
+ if (file.type === "image/webp") {
+ let blob = await convertWebPFileToPng(file);
+ file = new File([blob], file.name.split(".")[0] + ".png", {
+ type: "image/png",
+ });
+ dataTransfer.items.add(file);
+ } else {
+ dataTransfer.items.add(file);
+ }
+ }
+ }
+
+ fileInput.stage.files = dataTransfer.files;
+
+ fileInput.stage.dispatchEvent(new Event("change", { bubbles: true }));
+ });
+
+ input.click();
+ });
+ }
+ );
+
+ async function convertWebPFileToPng(webpFile) {
+ try {
+ const img = new Image();
+ const webpUrl = URL.createObjectURL(webpFile);
+ img.src = webpUrl;
+
+ await new Promise((resolve, reject) => {
+ img.onload = resolve;
+ img.onerror = reject;
+ });
+
+ const canvas = document.createElement("canvas");
+ canvas.width = img.width;
+ canvas.height = img.height;
+ const ctx = canvas.getContext("2d");
+ ctx.drawImage(img, 0, 0);
+
+ const pngBlob = await new Promise((resolve) => {
+ canvas.toBlob(resolve, "image/png");
+ });
+
+ URL.revokeObjectURL(webpUrl);
+
+ return pngBlob;
+ } catch (error) {
+ console.error("Error converting webp to png:", error);
+ throw error;
+ }
+ }
+}
From d937ceb4cec79805e64f74663ea9ea10d9a437ca Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Fri, 23 Aug 2024 12:28:55 -0700
Subject: [PATCH 148/253] Update data.json
---
features/webp-uploads/data.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/features/webp-uploads/data.json b/features/webp-uploads/data.json
index a39533fb..0ba81835 100644
--- a/features/webp-uploads/data.json
+++ b/features/webp-uploads/data.json
@@ -1,5 +1,5 @@
{
- "title": "WEBP Uploads",
+ "title": "WEBP Image Uploads",
"description": "Allows you to upload webp images in the editor for new sprites, costumes and stage backdrops.",
"credits": [
{ "username": "rgantzos", "url": "https://scratch.mit.edu/users/rgantzos/" }
From 4ebd112c6a79a957dc78dba2153079e2afa3ab26 Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Fri, 23 Aug 2024 12:36:14 -0700
Subject: [PATCH 149/253] dynamic!
---
features/webp-uploads/data.json | 1 +
features/webp-uploads/script.js | 6 ++++++
2 files changed, 7 insertions(+)
diff --git a/features/webp-uploads/data.json b/features/webp-uploads/data.json
index 0ba81835..4301dfd8 100644
--- a/features/webp-uploads/data.json
+++ b/features/webp-uploads/data.json
@@ -6,5 +6,6 @@
],
"type": ["Editor"],
"tags": ["New", "Featured"],
+ "dynamic": true,
"scripts": [{ "file": "script.js", "runOn": "/projects/*" }]
}
diff --git a/features/webp-uploads/script.js b/features/webp-uploads/script.js
index 4a486b06..5b0f8e6f 100644
--- a/features/webp-uploads/script.js
+++ b/features/webp-uploads/script.js
@@ -11,6 +11,8 @@ export default async function ({ feature, console }) {
fileInput.costume = input;
fileInput.costume.parentElement.addEventListener("click", function (e) {
+ if (!feature.self.enabled) return;
+
e.preventDefault();
e.stopImmediatePropagation();
@@ -57,6 +59,8 @@ export default async function ({ feature, console }) {
fileInput.sprite = input;
fileInput.sprite.parentElement.addEventListener("click", function (e) {
+ if (!feature.self.enabled) return;
+
e.preventDefault();
e.stopImmediatePropagation();
@@ -103,6 +107,8 @@ export default async function ({ feature, console }) {
fileInput.stage = input;
fileInput.stage.parentElement.addEventListener("click", function (e) {
+ if (!feature.self.enabled) return;
+
e.preventDefault();
e.stopImmediatePropagation();
From 640270f495caff0b81bd845dbb15a4e24a5f11d5 Mon Sep 17 00:00:00 2001
From: "scratchtools-bot[bot]"
<123264640+scratchtools-bot[bot]@users.noreply.github.com>
Date: Sat, 24 Aug 2024 00:00:16 +0000
Subject: [PATCH 150/253] Updated file.
---
extras/feature-locales/en.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/feature-locales/en.json b/extras/feature-locales/en.json
index 9b081dc5..8279bfe4 100644
--- a/extras/feature-locales/en.json
+++ b/extras/feature-locales/en.json
@@ -1 +1 @@
-{"remaining-replies/title":{"message":"Remaining Replies"},"remaining-replies/description":{"message":"Shows how many more replies are allowed in a thread of studio comments."},"video-recorder/title":{"message":"Record Stage"},"video-recorder/description":{"message":"Allows you to record the stage for projects while in the editor or on the project page."},"studio-creation-date/title":{"message":"Studio Creation Date"},"studio-creation-date/description":{"message":"Adds the creation date of the studio to the studio footer."},"explore-filter/title":{"message":"Explore Filter"},"explore-filter/description":{"message":"Customize project and studio search results with filters on the Search, Explore, and Studio pages."},"better-featured-projects/title":{"message":"Better Featured Projects"},"better-featured-projects/description":{"message":"Replaces the Featured Projects section with featured projects curated by ScratchTools users. You can submit your own projects to be featured as well."},"align-to-center/title":{"message":"Align to Center"},"align-to-center/description":{"message":"Allows you to align text in Instructions and Notes & Credits boxes to the center of the input."},"more-editor-fonts/title":{"message":"More Paint Editor Fonts"},"more-editor-fonts/description":{"message":"Allows you to use dozens of extra fonts in the paint editor."},"upload-thumbnail/title":{"message":"Set Thumbnail"},"upload-thumbnail/description":{"message":"Allows you to upload an image or GIF as a project thumbnail, or set the thumbnail to the current stage."},"paint-align/title":{"message":"Align Objects in Paint Editor"},"paint-align/description":{"message":"Adds a button to the paint editor that allows you to align selected items."},"rotate-gradient/title":{"message":"Rotate Gradients"},"rotate-gradient/description":{"message":"Allows you to rotate gradients in any direction in the costume editor. Works in both the vector and bitmap editors."},"change-monitor-opacity/title":{"message":"Custom Monitor Opacity"},"change-monitor-opacity/description":{"message":"Set the opacity of variables and lists on the stage to a custom number."},"project-reactions/title":{"message":"Project Reactions"},"project-reactions/description":{"message":"Allows you to react to projects with different emojis."},"chomp-blocks/title":{"message":"Extend Wrapped C Blocks"},"chomp-blocks/description":{"message":"Automatically extends C blocks to wrap around blocks that it is being placed over when dragging."},"custom-explore/title":{"message":"Custom Explore Redirect"},"custom-explore/description":{"message":"Automatically redirect to a specific tab on the Explore page."},"stage-in-spritepane/title":{"message":"Stage In Sprite Pane"},"stage-in-spritepane/description":{"message":"Move the stage button to the sprite pane to widen the sprite field."},"better-cloud-history/title":{"message":"Better Cloud History"},"better-cloud-history/description":{"message":"Updates the cloud monitor page to a more modern version with more details. You can click on variable names to sort by that variable."},"sprite-layers/title":{"message":"View Sprite Layers"},"sprite-layers/description":{"message":"Allows you to hover over the show/hide toggle in the sprite properties panel of the editor to view the sprite layers."},"hide-project-tags/title":{"message":"Hide Project Tags"},"hide-project-tags/description":{"message":"Hides all linked tags in the Instructions/Notes and Credits of projects."},"snap-to-grid/title":{"message":"Snap Scripts to Grid"},"snap-to-grid/description":{"message":"Automatically aligns scripts to the dotted grid in the editor when placed."},"select-self/title":{"message":"Select Self"},"select-self/description":{"message":"Allows you to select the current sprite when opening sprite dropdowns, instead of only other sprites."},"sidebar/title":{"message":"Sidebar"},"sidebar/description":{"message":"Adds a sidebar to the Scratch website, rather than just the normal navigation bar at the top of the screen."},"project-version-detector/title":{"message":"Project Version Detector"},"project-version-detector/description":{"message":"Checks when a project was shared and adds a label next to the share date to indicate which version of Scratch was in use at that time."},"fullscreen-explorer/title":{"message":"Fullscreen Project Grids"},"fullscreen-explorer/description":{"message":"Find projects on the big screen by removing the left and right blanks on the Trends, Search, Remix pages."},"project-descriptions/title":{"message":"Summarized Descriptions"},"project-descriptions/description":{"message":"Uses artificial intelligence to summarize project descriptions when you choose to, and shortens long descriptions down to important information, such as gameplay instructions."},"total-stats/title":{"message":"Total User Stats"},"total-stats/description":{"message":"Next to shared projects on a user's profile, displays the total loves, favorites and views that the user has received across all of their shared projects."},"project-miniplayer/title":{"message":"Project Miniplayer"},"project-miniplayer/description":{"message":"Scroll down on the project page and you will automatically see the project miniplayer."},"pin-comments/title":{"message":"Pin Project Comments"},"pin-comments/description":{"message":"Allows you to pin comments on your own projects and see what comments are pinned on other projects."},"download-project/title":{"message":"Download Projects"},"download-project/description":{"message":"Adds a button to project pages that allows you to download the project as an .sb3 file."},"blur-modal/title":{"message":"Blur Modal Backgrounds"},"blur-modal/description":{"message":"Blurs the backgrounds of modals instead of having a colored overlay."},"quick-search/title":{"message":"Quick Search"},"quick-search/description":{"message":"Easily jump between pages on the Scratch website with just the click of Control + K."},"favicon-messages/title":{"message":"Tab Message Count"},"favicon-messages/description":{"message":"Displays your message count in the tab favicon, the Scratch icon at the top of your tab."},"show-emoji-names/title":{"message":"Show Emoji Name"},"show-emoji-names/description":{"message":"Allows you to hover over Scratch emojis in the comments and view their names."},"more-block-themes/title":{"message":"More Block Themes"},"more-block-themes/description":{"message":"Adds additional themes for blocks in the code editor."},"more-key-inputs/title":{"message":"More Key Inputs"},"more-key-inputs/description":{"message":"Adds support for more keys on \"key pressed\" blocks."},"comment-tags/title":{"message":"Editor Comment Tags"},"comment-tags/description":{"message":"Add tags to editor comments to easily organize them."},"profile-flag/title":{"message":"Flag on Profile"},"profile-flag/description":{"message":"Adds flag emojis near selected locations on profile pages."},"follow-on-projects/title":{"message":"Follow on Project Page"},"follow-on-projects/description":{"message":"Follow users directly from the project page instead of going to their profile."},"dark-paint-editor/title":{"message":"Switch Paint Background"},"dark-paint-editor/description":{"message":"Adds a button next to the zoom controls in the paint editor that allows you to switch the background color of the paint editor between light and dark."},"specific-replies/title":{"message":"Specific Reply Messages"},"specific-replies/description":{"message":"In messages related to comments, specifies who a comment was replying to."},"better-trending-thumbnails/title":{"message":"Larger Thumbnails"},"better-trending-thumbnails/description":{"message":"Updates thumbnails on the trending and search pages to be larger and better fit the project/studio box."},"anti-generic/title":{"message":"Anti Generic"},"anti-generic/description":{"message":"On the explore and trending pages, this beta feature automatically hides repetitive projects, along with projects that it expects are generic. This includes projects with a lot of tags, common names, and project duplicates."},"wrap-lists/title":{"message":"Wrap List Items"},"wrap-lists/description":{"message":"Displays text in list items normally without cutting them off if they're too long."},"live-stats/title":{"message":"Live Stats"},"live-stats/description":{"message":"Updates the loves, favorites, remixes, and views on a project live, without having to reload to view the new counts."},"hide-scratch-news/title":{"message":"Hide Scratch News"},"hide-scratch-news/description":{"message":"Hides the Scratch News section on the homepage of the Scratch website."},"watch-later/title":{"message":"Save to Watch Later"},"watch-later/description":{"message":"Save projects you want to view later and they'll appear on a watch later page."},"remove-project-button/title":{"message":"Remove Project Button"},"remove-project-button/description":{"message":"Adds a button to projects in studios that allows you to easily remove it from the studio without opening the menu."},"right-side-flag/title":{"message":"Right Side Flag"},"right-side-flag/description":{"message":"Moves the green flag and the red stop sign to the right side of the stage."},"love-fave-animate/title":{"message":"Love Animations"},"love-fave-animate/description":{"message":"Animates the clicking of the love and favorite buttons on project pages."},"default-to-local/title":{"message":"Default to Local"},"default-to-local/description":{"message":"When creating a variable, sets the default to For This Sprite Only, rather than For All Sprites."},"start-stop-hotkeys/title":{"message":"Green Flag Hotkeys"},"start-stop-hotkeys/description":{"message":"Use Control + G to start or stop a project, depending on whether or not it is running."},"opacity-slider/title":{"message":"Opacity Slider"},"opacity-slider/description":{"message":"Change the opacity of objects in the paint editor."},"more-studios/title":{"message":"More Studios"},"more-studios/description":{"message":"Allows you to add projects to more studios instead of just 20."},"localized-explore/title":{"message":"Projects from Country"},"localized-explore/description":{"message":"On the explore page, makes projects from other countries less visible. This is to only show projects in languages that you understand."},"project-bar/title":{"message":"Project Bar"},"project-bar/description":{"message":"Continue to view the information for a project, even after you scroll down past the notes and credits."},"more-news/title":{"message":"More Scratch News"},"more-news/description":{"message":"On the main page, scroll through the Scratch News section and load more results."},"dumpster-fire/title":{"message":"Dumpster Fire"},"dumpster-fire/description":{"message":"The Scratch homepage is a liar with their \"Featured Projects\" section. This changes the name to the proper form, which is \"Dumpster Fire\"."},"steal-game/title":{"message":"Steal Game"},"steal-game/description":{"message":"Changes the remix button's text to 'Steal game'."},"statistics/title":{"message":"Statistics"},"statistics/description":{"message":"Adds a statistics button on the my stuff page that leads to your ScratchStats profile."},"echo-effect/title":{"message":"Echo Effect"},"echo-effect/description":{"message":"Adds the echo effect back to the Scratch sound editor."},"compact-buttons/title":{"message":"Compact Buttons"},"compact-buttons/description":{"message":"Buttons text gets removed and will get a new icon if it does not have one already."},"message-count/title":{"message":"Message Count"},"message-count/description":{"message":"Displays the user's message count on their profile next to the country."},"move-share-button/title":{"message":"Move Share Button"},"move-share-button/description":{"message":"On project pages, moves the share button next to the See Inside button."},"preview-textboxes/title":{"message":"Preview Textboxes"},"preview-textboxes/description":{"message":"Preview your profile About Me and What I'm Working On, and your projects' Instructions and Notes and Credits, so that you can see what it will look like to other users."},"more-tutorials/title":{"message":"More Tutorials"},"more-tutorials/description":{"message":"On the Ideas page, you can view additional tutorials from other Scratchers."},"simplify-action-buttons/title":{"message":"Simplify Action Buttons"},"simplify-action-buttons/description":{"message":"Displays project action buttons underneath Notes and Credits as their icons."},"slash-to-search/title":{"message":"Slash to Search"},"slash-to-search/description":{"message":"Click the slash key (/) to select the search bar and start typing."},"shared-clipboard/title":{"message":"Shared Clipboard"},"shared-clipboard/description":{"message":"Allows you to copy and paste items between paint editors in different projects."},"hide-footer/title":{"message":"Hide Footer"},"hide-footer/description":{"message":"The footer takes up a lot of unnecessary space. So hide it!"},"original-colors/title":{"message":"Revert to Blue"},"original-colors/description":{"message":"Changes all of the Scratch website's colors back to the original coloring from 3.0, before purple."},"simplify-editor-tabs/title":{"message":"Simplify Editor Tabs"},"simplify-editor-tabs/description":{"message":"Changes editor tabs to icon-only and shows them as a circle"},"live-character-counts/title":{"message":"Live Character Counts"},"live-character-counts/description":{"message":"On forum, studio, and project pages, displays the live character count for textboxes."},"advanced-search/title":{"message":"Search Profiles"},"advanced-search/description":{"message":"When you search for a user, a link to their profile will be at the top of the page."},"studio-links/title":{"message":"Studio Links as Titles"},"studio-links/description":{"message":"Replaces studio links with their titles, all across the Scratch website."},"block-studios/title":{"message":"Block Individual Studio Activity"},"block-studios/description":{"message":"Disable studio activity messages from specific studios."},"block-messages/title":{"message":"Block Users"},"block-messages/description":{"message":"Hide messages from users that you block. Other users won't see that you've blocked them."},"two-colors/title":{"message":"2.0 Block Colors"},"two-colors/description":{"message":"Replaces the colors of the blocks in the editor with the blocks from the 2.0 version of the code editor."},"project-links/title":{"message":"Project Links as Titles"},"project-links/description":{"message":"Replaces project links with their titles, all across the Scratch website."},"emoji-status/title":{"message":"Emoji Statuses"},"emoji-status/description":{"message":"Set the status on your profile to an emoji. Other ScratchTools users will be able to see this status."},"display-name/title":{"message":"Display Names"},"display-name/description":{"message":"Shows display names for Scratchers, and allows you to set your own display name. Display names show next to your username, and aren't limited like usernames are."},"isonline/title":{"message":"Show if User is Online"},"isonline/description":{"message":"On profile pages, displays if a user is online. This will also let other users see if you are online."},"plain-background/title":{"message":"Plain Background"},"plain-background/description":{"message":"Removes the dots from the background of the code editor."},"hide-advertisements/title":{"message":"Hide Ads in Comments"},"hide-advertisements/description":{"message":"Hides advertisements in the comments of profiles, projects, and studios. They can take up a lot of space in the comments."},"hide-block-category-names/title":{"message":"Hide Block Category Names"},"hide-block-category-names/description":{"message":"Changes the block categories in the editor to only show the colors of the categories."},"unlisted-projects/title":{"message":"Unlisted Projects"},"unlisted-projects/description":{"message":"Allows you to generate share links for unshared projects in the editor."},"stats-percentages/title":{"message":"Show Percentages for Project Stats"},"stats-percentages/description":{"message":"On the my stuff page, hover over the number of loves, favorites or remixes to view what percent of viewers performed the action."},"clone-counter/title":{"message":"Clone Counter"},"clone-counter/description":{"message":"Displays the total number of clones in the project above, in the stage header."},"colored-shadows/title":{"message":"Colored Shadows"},"colored-shadows/description":{"message":"Replaces the shadow created when you drag a block near another block with the color of the block that is being moved."},"creator-badge/title":{"message":"Author Badge"},"creator-badge/description":{"message":"Adds a badge next to comments written by the author of the project."},"original-buttons/title":{"message":"Original Buttons"},"original-buttons/description":{"message":"Returns the original love, favorite, remix, and view buttons to the Scratch project pages."},"box-shadows/title":{"message":"Content Box Shadows"},"box-shadows/description":{"message":"Adds shadows on all content boxes. When hovering one, the shadow will darken."},"admin-notifications/title":{"message":"Red Admin Message Indicator"},"admin-notifications/description":{"message":"If you have an admin notification from the Scratch Team, the message indicator in the navigation bar will display red instead of orange."},"nicknames/title":{"message":"Nicknames"},"nicknames/description":{"message":"Set nicknames for other Scratchers. Only you can see the nicknames, and their username will be replaced with the nickname when you see their name."},"load-more-forum-posts/title":{"message":"Load More Posts"},"load-more-forum-posts/description":{"message":"Load more posts in the forum without having to switch pages."},"scroll-project-titles/title":{"message":"Scroll Project Titles"},"scroll-project-titles/description":{"message":"Allows you to scroll and view the entire title of projects that you don't own."},"search-context-menus/title":{"message":"Search Context Menus"},"search-context-menus/description":{"message":"Type and search context menus to select an option efficiently. You can also press enter to select the top option."},"hover-user-cards/title":{"message":"User Hover Cards"},"hover-user-cards/description":{"message":"Hover over any username on the website to display the profile picture, username and follower count."},"exact-join-date/title":{"message":"Exact Join Date"},"exact-join-date/description":{"message":"Displays the exact time that a user joined, shown on their profile."},"upload-img-directly/title":{"message":"Direct Image Uploads"},"upload-img-directly/description":{"message":"Allows you to upload images to the Scratch forums for posts and signatures without having to use third party image uploading services."},"leave-studio/title":{"message":"Leave Studio Button"},"leave-studio/description":{"message":"Adds a button to the curators page of any studios you curate or manage that allows you to leave the studio. A confirmation shows first."},"frontpage-curator/title":{"message":"Frontpage Curator Name as Link"},"frontpage-curator/description":{"message":"Makes the name of the Frontpage Curator to a clickable link to his profile."},"minimized-remix-credits/title":{"message":"Minimized Remix Credits"},"minimized-remix-credits/description":{"message":"The remix credit boxes for projects take space from the project Instructions, so this makes the box smaller."},"follows-you/title":{"message":"Show if Following on Profile"},"follows-you/description":{"message":"If a user is following you, it will show next to their username when you visit their profile."},"custom-studio/title":{"message":"Custom Studio Section"},"custom-studio/description":{"message":"On the homepage of the Scratch website, the newest projects from the studio of your choice are displayed above the Featured Projects."},"highlight-unanswered/title":{"message":"Highlight Unanswered Forum Topics"},"highlight-unanswered/description":{"message":"Adds a blue highlight to topics in the forums that have no replies."},"search-assets/title":{"message":"Search Assets"},"search-assets/description":{"message":"Search through costume and sound assets in the editor."},"block-count-in-mystuff/title":{"message":"Block Count in My Stuff"},"block-count-in-mystuff/description":{"message":"Displays the block count for projects on the My Stuff page."},"pause-audio/title":{"message":"Pause Audio"},"pause-audio/description":{"message":"Allows you to pause and resume audio in the sound editor of Scratch projects."},"display-message-count-in-icon/title":{"message":"Display Message Count"},"display-message-count-in-icon/description":{"message":"Displays your current message count in the extension icon for ScratchTools."},"colored-context-menus/title":{"message":"Colored Context Menus"},"colored-context-menus/description":{"message":"Like in Scratch 2.0, colors the context menus based on the color of the block they're for."},"left-side-stage/title":{"message":"Stage on Left Side"},"left-side-stage/description":{"message":"Like in Scratch 2.0, moves the stage to the left side of the editor, rather than keeping it on the right."},"move-project-title-input/title":{"message":"Project Title Above Stage"},"move-project-title-input/description":{"message":"Like in Scratch 2.0, moves the project title input box above the stage, rather than in the navbar. This only applies to the editor."},"hide-disabled-menu-options/title":{"message":"Hide Disabled Context Menu Options"},"hide-disabled-menu-options/description":{"message":"Context menu options in the editor show even if they are disabled and unable to be used, so this feature will hide them if they are."},"follower-count/title":{"message":"Follower Count on Projects"},"follower-count/description":{"message":"Displays the follower count of the project creator on their projects."},"hide-studio-borders/title":{"message":"Hide Studio Frames"},"hide-studio-borders/description":{"message":"Removes the odd frames from around studio images on 2.0 pages."},"hide-textarea-labels/title":{"message":"Hide Project Instructions and Notes and Credits Labels"},"hide-textarea-labels/description":{"message":"The instructions and notes and credits labels take up quite a bit of space where there could be usual information. This removes them."},"default-to-trending/title":{"message":"Search Trending by Default"},"default-to-trending/description":{"message":"Currently, when you search projects on the Scratch website, you automatically search with the popular filter, instead of trending."},"infinite-backpack-scrolling/title":{"message":"Infinite Backpack Scrolling"},"infinite-backpack-scrolling/description":{"message":"Scroll through the backpack until you reach the very end (does take some time to load, but loads automatically)."},"hide-studio-messages/title":{"message":"Hide Studio Activity Messages"},"hide-studio-messages/description":{"message":"Hide the studio activity messages from the messages page- they pile up quickly and can get annoying."},"get-project-tags/title":{"message":"Display Project Tags"},"get-project-tags/description":{"message":"Lists all of the tags used in the project description right below the project notes and credits."},"link-to-propose/title":{"message":"Link Featured Projects to Studio"},"link-to-propose/description":{"message":"Links the Featured Projects box on the homepage to the Propose Projects to Be Featured studio."},"add-last-option-list/title":{"message":"Set List Item to Last"},"add-last-option-list/description":{"message":"Right click a 'get item [number] of [list]' to set it to select the very last item in the selected list."},"cloud-scratchers/title":{"message":"Online Scratchers in Multiplayer Game"},"cloud-scratchers/description":{"message":"On project pages, displays all of the Scratchers currently in that multiplayer game."},"editor-in-two/title":{"message":"2.0 Editor"},"editor-in-two/description":{"message":"Replaces the default 3.0 online project editor with the 2.0 editor. It's nostalgic, really."},"comment-on-closed-profile/title":{"message":"Comment On Profile With Comments Closed"},"comment-on-closed-profile/description":{"message":"If your profile comments are closed, you can now comment on your own profile anyways. Only you can comment on the profile."},"turbowarp-button-in-editor/title":{"message":"Open in TurboWarp from Editor"},"turbowarp-button-in-editor/description":{"message":"Adds a button to the editor so that you can instantly open the current project in TurboWarp."},"sprite-clones/title":{"message":"Sprite Clone Counter"},"sprite-clones/description":{"message":"Displays the clone count for each individual sprite."},"block-log/title":{"message":"Block Log"},"block-log/description":{"message":"Logs and displays all undo information for the block editor when you press ctrl+shift+l."},"scrollable-list-items/title":{"message":"Scrollable List Items"},"scrollable-list-items/description":{"message":"List items that have a value longer than the width of the list itself will get cut off. Now, you can scroll left and right through the list item."},"custom-fonts/title":{"message":"Custom Website Font"},"custom-fonts/description":{"message":"On the Scratch website, you can set the font to whatever font you want, as long as it is on the Google Fonts website. This is case-sensitive."},"project-timer/title":{"message":"Project Timer"},"project-timer/description":{"message":"Displays the amount of time (in seconds) that the project has been running for."},"colored-comments/title":{"message":"Colored Editor Comments"},"colored-comments/description":{"message":"Colors comments in the editor based on the color of their parent block."},"recently-viewed-projects/title":{"message":"Recently Viewed Projects"},"recently-viewed-projects/description":{"message":"Adds a tab to the My Stuff page where you can see a list of the projects that you have recently viewed."},"collapse-blocks/title":{"message":"Collapse Blocks"},"collapse-blocks/description":{"message":"Right-click block menus in the editor include a button that will let you collapse the selected block."},"set-featured-project/title":{"message":"Set Featured Project"},"set-featured-project/description":{"message":"On any project page, you can set your profile's featured project with the click of a button- even unshared projects."},"scratchformat/title":{"message":"ScratchFormat"},"scratchformat/description":{"message":"Format your comments with bold, italic, and more. The comments will be styled to everyone using ScratchTools."},"expand-editor/title":{"message":"Expand Editor"},"expand-editor/description":{"message":"Use the ctrl+e to switch between the default block editor view and one that hides the stage to expand editor itself."},"list-sprites/title":{"message":"Sprite List"},"list-sprites/description":{"message":"Replaces the sprite grid in the editor with a list that includes the block count and position of the sprite."},"check-if-trending/title":{"message":"Check if Trending"},"check-if-trending/description":{"message":"If a project you're viewing is on the trending page, the place on the trending page will be shown next to the share date on the project page."},"link-forum-activity/title":{"message":"Link Users in Forum Activity"},"link-forum-activity/description":{"message":"In the forums' last post section, makes the usernames link to the user's profile."},"remove-topic-and-post/title":{"message":"Hide Forum Category Counts"},"remove-topic-and-post/description":{"message":"Hides the forum homepage topic and post boxes."},"forum-homepage-emojis/title":{"message":"Forum Category Emojis"},"forum-homepage-emojis/description":{"message":"Adds colorful emojis on the forum homepage categories based on their topic."},"remove-collapse-buttons/title":{"message":"Hide Forum Collapse Buttons"},"remove-collapse-buttons/description":{"message":"Hides the collapse buttons on the forum main page."},"pin-projects/title":{"message":"Pin Projects to My Stuff"},"pin-projects/description":{"message":"Pin one of your projects to the top of your My Stuff page with the click of a button. You can unpin your pinned project or switch out your pinned project for another one as well."},"last-key-pressed/title":{"message":"Last Key Pressed"},"last-key-pressed/description":{"message":"On any project page and in the editor, you can view the last key that you have pressed while on that project, according to the project itself. This is good for games such as platformers."},"hide-signatures/title":{"message":"Hide Forum Signatures"},"hide-signatures/description":{"message":"Hides all forum signatures and signature dividers."},"twemoji-in-forums/title":{"message":"Better Forum Emojis"},"twemoji-in-forums/description":{"message":"Replaces the current low resolution forum emojis with high quality Twemojis."},"go-to-parent/title":{"message":"Go to Parent Button"},"go-to-parent/description":{"message":"In the editor for any project that is a remix, you can click a button to go to the editor in the parent project."},"most-popular-project/title":{"message":"Most Popular Project"},"most-popular-project/description":{"message":"Displays the most popular project (by views) of the user on profile pages. You can click on the project to view it."},"editor-dark-mode/title":{"message":"Editor Dark Mode"},"editor-dark-mode/description":{"message":"Switches the editor's light color scheme to a darker one."},"hide-studio-group-icon/title":{"message":"Hide Studio Group Icon"},"hide-studio-group-icon/description":{"message":"Hides the studio group icon, and only shows the studio thumbnail."},"colored-messages/title":{"message":"Colored Messages"},"colored-messages/description":{"message":"Colors your messages based on the type of message, such as loves, favorites, and studio invites."},"full-title/title":{"message":"Full Project Title"},"full-title/description":{"message":"On profile pages, hover over any project title to show the full title."},"fixed-box/title":{"message":"Fix Content Boxes"},"fixed-box/description":{"message":"Makes all sides of boxes on the pages rounded, rather than just the tops."},"user-bio/title":{"message":"User Bio on Hover"},"user-bio/description":{"message":"In profile comments, hover over any username to display the user's bio."},"nfe-project-checker/title":{"message":"NFE Project Checker"},"nfe-project-checker/description":{"message":"On project pages, displays whether the project is Safe, Unreviewed, or NSFE (Not Safe for Everyone)."},"sprite-data/title":{"message":"Display Sprite Data"},"sprite-data/description":{"message":"In the Code, Costumes, and Sounds tab for each sprite, the number of blocks, costumes, and sounds will be displayed for the current sprite."},"idea-generator/title":{"message":"Project Idea Generator"},"idea-generator/description":{"message":"On the Scratch Ideas page, there will be a section where you can generate project ideas if you need some."},"hide-stickies/title":{"message":"Hide Forum Stickies"},"hide-stickies/description":{"message":"Hides the basic stickies from the top of each forum topic."},"nfe-search/title":{"message":"NFE Search"},"nfe-search/description":{"message":"Use a button to search all projects, including NFE ones."},"open-in-new-tab/title":{"message":"Open in New Tab"},"open-in-new-tab/description":{"message":"Automatically opens links on project pages in a new tab."},"unbold-site-text/title":{"message":"Unbold Site Text"},"unbold-site-text/description":{"message":"Makes it so that all text across Scratch is unbolded, and just normal text."},"compact-navbar/title":{"message":"Compact Navbar"},"compact-navbar/description":{"message":"Makes more room on the navigation bar near where your profile dropdown is."},"delete-all/title":{"message":"Delete All Sprites"},"delete-all/description":{"message":"Adds an option in the right-click context menu for sprites. It will delete all sprites (after confirmation to make sure it isn't an accident)."},"round-profile-pictures/title":{"message":"Round Profile Pictures"},"round-profile-pictures/description":{"message":"All profile pictures on the Scratch website will be rounded."},"ocular-link/title":{"message":"Ocular Links in Forums"},"ocular-link/description":{"message":"Adds a link to any user's Ocular page right below their username on a post."},"forum-scratch-team/title":{"message":"Scratch Team Symbol in Forums"},"forum-scratch-team/description":{"message":"Next to the username of any Scratch Team member in the forums, an asterisk (*) is placed at the end of their username."},"remove-editor-icons/title":{"message":"Remove Editor Icons"},"remove-editor-icons/description":{"message":"Removes the icons from the tabs in the editor."},"sprite-watermark/title":{"message":"Remove Sprite Watermark"},"sprite-watermark/description":{"message":"Removes the sprite watermark that shows in the editor."},"compact-editor/title":{"message":"Compact Editor"},"compact-editor/description":{"message":"Makes sprite and backdrop information more compact."},"my-recent-projects/title":{"message":"Replace Scratch News with Recent Projects"},"my-recent-projects/description":{"message":"Replaces the Scratch News section on the homepage with your recently shared projects."},"focus-mode/title":{"message":"Focus Mode"},"focus-mode/description":{"message":"Removes the comments, studio and remix column, header, and footer on project pages when the button is clicked."}}
\ No newline at end of file
+{"webp-uploads/title":{"message":"WEBP Image Uploads"},"webp-uploads/description":{"message":"Allows you to upload webp images in the editor for new sprites, costumes and stage backdrops."},"remaining-replies/title":{"message":"Remaining Replies"},"remaining-replies/description":{"message":"Shows how many more replies are allowed in a thread of studio comments."},"video-recorder/title":{"message":"Record Stage"},"video-recorder/description":{"message":"Allows you to record the stage for projects while in the editor or on the project page."},"studio-creation-date/title":{"message":"Studio Creation Date"},"studio-creation-date/description":{"message":"Adds the creation date of the studio to the studio footer."},"explore-filter/title":{"message":"Explore Filter"},"explore-filter/description":{"message":"Customize project and studio search results with filters on the Search, Explore, and Studio pages."},"better-featured-projects/title":{"message":"Better Featured Projects"},"better-featured-projects/description":{"message":"Replaces the Featured Projects section with featured projects curated by ScratchTools users. You can submit your own projects to be featured as well."},"align-to-center/title":{"message":"Align to Center"},"align-to-center/description":{"message":"Allows you to align text in Instructions and Notes & Credits boxes to the center of the input."},"more-editor-fonts/title":{"message":"More Paint Editor Fonts"},"more-editor-fonts/description":{"message":"Allows you to use dozens of extra fonts in the paint editor."},"upload-thumbnail/title":{"message":"Set Thumbnail"},"upload-thumbnail/description":{"message":"Allows you to upload an image or GIF as a project thumbnail, or set the thumbnail to the current stage."},"paint-align/title":{"message":"Align Objects in Paint Editor"},"paint-align/description":{"message":"Adds a button to the paint editor that allows you to align selected items."},"rotate-gradient/title":{"message":"Rotate Gradients"},"rotate-gradient/description":{"message":"Allows you to rotate gradients in any direction in the costume editor. Works in both the vector and bitmap editors."},"change-monitor-opacity/title":{"message":"Custom Monitor Opacity"},"change-monitor-opacity/description":{"message":"Set the opacity of variables and lists on the stage to a custom number."},"project-reactions/title":{"message":"Project Reactions"},"project-reactions/description":{"message":"Allows you to react to projects with different emojis."},"chomp-blocks/title":{"message":"Extend Wrapped C Blocks"},"chomp-blocks/description":{"message":"Automatically extends C blocks to wrap around blocks that it is being placed over when dragging."},"custom-explore/title":{"message":"Custom Explore Redirect"},"custom-explore/description":{"message":"Automatically redirect to a specific tab on the Explore page."},"stage-in-spritepane/title":{"message":"Stage In Sprite Pane"},"stage-in-spritepane/description":{"message":"Move the stage button to the sprite pane to widen the sprite field."},"better-cloud-history/title":{"message":"Better Cloud History"},"better-cloud-history/description":{"message":"Updates the cloud monitor page to a more modern version with more details. You can click on variable names to sort by that variable."},"sprite-layers/title":{"message":"View Sprite Layers"},"sprite-layers/description":{"message":"Allows you to hover over the show/hide toggle in the sprite properties panel of the editor to view the sprite layers."},"hide-project-tags/title":{"message":"Hide Project Tags"},"hide-project-tags/description":{"message":"Hides all linked tags in the Instructions/Notes and Credits of projects."},"snap-to-grid/title":{"message":"Snap Scripts to Grid"},"snap-to-grid/description":{"message":"Automatically aligns scripts to the dotted grid in the editor when placed."},"select-self/title":{"message":"Select Self"},"select-self/description":{"message":"Allows you to select the current sprite when opening sprite dropdowns, instead of only other sprites."},"sidebar/title":{"message":"Sidebar"},"sidebar/description":{"message":"Adds a sidebar to the Scratch website, rather than just the normal navigation bar at the top of the screen."},"project-version-detector/title":{"message":"Project Version Detector"},"project-version-detector/description":{"message":"Checks when a project was shared and adds a label next to the share date to indicate which version of Scratch was in use at that time."},"fullscreen-explorer/title":{"message":"Fullscreen Project Grids"},"fullscreen-explorer/description":{"message":"Find projects on the big screen by removing the left and right blanks on the Trends, Search, Remix pages."},"project-descriptions/title":{"message":"Summarized Descriptions"},"project-descriptions/description":{"message":"Uses artificial intelligence to summarize project descriptions when you choose to, and shortens long descriptions down to important information, such as gameplay instructions."},"total-stats/title":{"message":"Total User Stats"},"total-stats/description":{"message":"Next to shared projects on a user's profile, displays the total loves, favorites and views that the user has received across all of their shared projects."},"project-miniplayer/title":{"message":"Project Miniplayer"},"project-miniplayer/description":{"message":"Scroll down on the project page and you will automatically see the project miniplayer."},"pin-comments/title":{"message":"Pin Project Comments"},"pin-comments/description":{"message":"Allows you to pin comments on your own projects and see what comments are pinned on other projects."},"download-project/title":{"message":"Download Projects"},"download-project/description":{"message":"Adds a button to project pages that allows you to download the project as an .sb3 file."},"blur-modal/title":{"message":"Blur Modal Backgrounds"},"blur-modal/description":{"message":"Blurs the backgrounds of modals instead of having a colored overlay."},"quick-search/title":{"message":"Quick Search"},"quick-search/description":{"message":"Easily jump between pages on the Scratch website with just the click of Control + K."},"favicon-messages/title":{"message":"Tab Message Count"},"favicon-messages/description":{"message":"Displays your message count in the tab favicon, the Scratch icon at the top of your tab."},"show-emoji-names/title":{"message":"Show Emoji Name"},"show-emoji-names/description":{"message":"Allows you to hover over Scratch emojis in the comments and view their names."},"more-block-themes/title":{"message":"More Block Themes"},"more-block-themes/description":{"message":"Adds additional themes for blocks in the code editor."},"more-key-inputs/title":{"message":"More Key Inputs"},"more-key-inputs/description":{"message":"Adds support for more keys on \"key pressed\" blocks."},"comment-tags/title":{"message":"Editor Comment Tags"},"comment-tags/description":{"message":"Add tags to editor comments to easily organize them."},"profile-flag/title":{"message":"Flag on Profile"},"profile-flag/description":{"message":"Adds flag emojis near selected locations on profile pages."},"follow-on-projects/title":{"message":"Follow on Project Page"},"follow-on-projects/description":{"message":"Follow users directly from the project page instead of going to their profile."},"dark-paint-editor/title":{"message":"Switch Paint Background"},"dark-paint-editor/description":{"message":"Adds a button next to the zoom controls in the paint editor that allows you to switch the background color of the paint editor between light and dark."},"specific-replies/title":{"message":"Specific Reply Messages"},"specific-replies/description":{"message":"In messages related to comments, specifies who a comment was replying to."},"better-trending-thumbnails/title":{"message":"Larger Thumbnails"},"better-trending-thumbnails/description":{"message":"Updates thumbnails on the trending and search pages to be larger and better fit the project/studio box."},"anti-generic/title":{"message":"Anti Generic"},"anti-generic/description":{"message":"On the explore and trending pages, this beta feature automatically hides repetitive projects, along with projects that it expects are generic. This includes projects with a lot of tags, common names, and project duplicates."},"wrap-lists/title":{"message":"Wrap List Items"},"wrap-lists/description":{"message":"Displays text in list items normally without cutting them off if they're too long."},"live-stats/title":{"message":"Live Stats"},"live-stats/description":{"message":"Updates the loves, favorites, remixes, and views on a project live, without having to reload to view the new counts."},"hide-scratch-news/title":{"message":"Hide Scratch News"},"hide-scratch-news/description":{"message":"Hides the Scratch News section on the homepage of the Scratch website."},"watch-later/title":{"message":"Save to Watch Later"},"watch-later/description":{"message":"Save projects you want to view later and they'll appear on a watch later page."},"remove-project-button/title":{"message":"Remove Project Button"},"remove-project-button/description":{"message":"Adds a button to projects in studios that allows you to easily remove it from the studio without opening the menu."},"right-side-flag/title":{"message":"Right Side Flag"},"right-side-flag/description":{"message":"Moves the green flag and the red stop sign to the right side of the stage."},"love-fave-animate/title":{"message":"Love Animations"},"love-fave-animate/description":{"message":"Animates the clicking of the love and favorite buttons on project pages."},"default-to-local/title":{"message":"Default to Local"},"default-to-local/description":{"message":"When creating a variable, sets the default to For This Sprite Only, rather than For All Sprites."},"start-stop-hotkeys/title":{"message":"Green Flag Hotkeys"},"start-stop-hotkeys/description":{"message":"Use Control + G to start or stop a project, depending on whether or not it is running."},"opacity-slider/title":{"message":"Opacity Slider"},"opacity-slider/description":{"message":"Change the opacity of objects in the paint editor."},"more-studios/title":{"message":"More Studios"},"more-studios/description":{"message":"Allows you to add projects to more studios instead of just 20."},"localized-explore/title":{"message":"Projects from Country"},"localized-explore/description":{"message":"On the explore page, makes projects from other countries less visible. This is to only show projects in languages that you understand."},"project-bar/title":{"message":"Project Bar"},"project-bar/description":{"message":"Continue to view the information for a project, even after you scroll down past the notes and credits."},"more-news/title":{"message":"More Scratch News"},"more-news/description":{"message":"On the main page, scroll through the Scratch News section and load more results."},"dumpster-fire/title":{"message":"Dumpster Fire"},"dumpster-fire/description":{"message":"The Scratch homepage is a liar with their \"Featured Projects\" section. This changes the name to the proper form, which is \"Dumpster Fire\"."},"steal-game/title":{"message":"Steal Game"},"steal-game/description":{"message":"Changes the remix button's text to 'Steal game'."},"statistics/title":{"message":"Statistics"},"statistics/description":{"message":"Adds a statistics button on the my stuff page that leads to your ScratchStats profile."},"echo-effect/title":{"message":"Echo Effect"},"echo-effect/description":{"message":"Adds the echo effect back to the Scratch sound editor."},"compact-buttons/title":{"message":"Compact Buttons"},"compact-buttons/description":{"message":"Buttons text gets removed and will get a new icon if it does not have one already."},"message-count/title":{"message":"Message Count"},"message-count/description":{"message":"Displays the user's message count on their profile next to the country."},"move-share-button/title":{"message":"Move Share Button"},"move-share-button/description":{"message":"On project pages, moves the share button next to the See Inside button."},"preview-textboxes/title":{"message":"Preview Textboxes"},"preview-textboxes/description":{"message":"Preview your profile About Me and What I'm Working On, and your projects' Instructions and Notes and Credits, so that you can see what it will look like to other users."},"more-tutorials/title":{"message":"More Tutorials"},"more-tutorials/description":{"message":"On the Ideas page, you can view additional tutorials from other Scratchers."},"simplify-action-buttons/title":{"message":"Simplify Action Buttons"},"simplify-action-buttons/description":{"message":"Displays project action buttons underneath Notes and Credits as their icons."},"slash-to-search/title":{"message":"Slash to Search"},"slash-to-search/description":{"message":"Click the slash key (/) to select the search bar and start typing."},"shared-clipboard/title":{"message":"Shared Clipboard"},"shared-clipboard/description":{"message":"Allows you to copy and paste items between paint editors in different projects."},"hide-footer/title":{"message":"Hide Footer"},"hide-footer/description":{"message":"The footer takes up a lot of unnecessary space. So hide it!"},"original-colors/title":{"message":"Revert to Blue"},"original-colors/description":{"message":"Changes all of the Scratch website's colors back to the original coloring from 3.0, before purple."},"simplify-editor-tabs/title":{"message":"Simplify Editor Tabs"},"simplify-editor-tabs/description":{"message":"Changes editor tabs to icon-only and shows them as a circle"},"live-character-counts/title":{"message":"Live Character Counts"},"live-character-counts/description":{"message":"On forum, studio, and project pages, displays the live character count for textboxes."},"advanced-search/title":{"message":"Search Profiles"},"advanced-search/description":{"message":"When you search for a user, a link to their profile will be at the top of the page."},"studio-links/title":{"message":"Studio Links as Titles"},"studio-links/description":{"message":"Replaces studio links with their titles, all across the Scratch website."},"block-studios/title":{"message":"Block Individual Studio Activity"},"block-studios/description":{"message":"Disable studio activity messages from specific studios."},"block-messages/title":{"message":"Block Users"},"block-messages/description":{"message":"Hide messages from users that you block. Other users won't see that you've blocked them."},"two-colors/title":{"message":"2.0 Block Colors"},"two-colors/description":{"message":"Replaces the colors of the blocks in the editor with the blocks from the 2.0 version of the code editor."},"project-links/title":{"message":"Project Links as Titles"},"project-links/description":{"message":"Replaces project links with their titles, all across the Scratch website."},"emoji-status/title":{"message":"Emoji Statuses"},"emoji-status/description":{"message":"Set the status on your profile to an emoji. Other ScratchTools users will be able to see this status."},"display-name/title":{"message":"Display Names"},"display-name/description":{"message":"Shows display names for Scratchers, and allows you to set your own display name. Display names show next to your username, and aren't limited like usernames are."},"isonline/title":{"message":"Show if User is Online"},"isonline/description":{"message":"On profile pages, displays if a user is online. This will also let other users see if you are online."},"plain-background/title":{"message":"Plain Background"},"plain-background/description":{"message":"Removes the dots from the background of the code editor."},"hide-advertisements/title":{"message":"Hide Ads in Comments"},"hide-advertisements/description":{"message":"Hides advertisements in the comments of profiles, projects, and studios. They can take up a lot of space in the comments."},"hide-block-category-names/title":{"message":"Hide Block Category Names"},"hide-block-category-names/description":{"message":"Changes the block categories in the editor to only show the colors of the categories."},"unlisted-projects/title":{"message":"Unlisted Projects"},"unlisted-projects/description":{"message":"Allows you to generate share links for unshared projects in the editor."},"stats-percentages/title":{"message":"Show Percentages for Project Stats"},"stats-percentages/description":{"message":"On the my stuff page, hover over the number of loves, favorites or remixes to view what percent of viewers performed the action."},"clone-counter/title":{"message":"Clone Counter"},"clone-counter/description":{"message":"Displays the total number of clones in the project above, in the stage header."},"colored-shadows/title":{"message":"Colored Shadows"},"colored-shadows/description":{"message":"Replaces the shadow created when you drag a block near another block with the color of the block that is being moved."},"creator-badge/title":{"message":"Author Badge"},"creator-badge/description":{"message":"Adds a badge next to comments written by the author of the project."},"original-buttons/title":{"message":"Original Buttons"},"original-buttons/description":{"message":"Returns the original love, favorite, remix, and view buttons to the Scratch project pages."},"box-shadows/title":{"message":"Content Box Shadows"},"box-shadows/description":{"message":"Adds shadows on all content boxes. When hovering one, the shadow will darken."},"admin-notifications/title":{"message":"Red Admin Message Indicator"},"admin-notifications/description":{"message":"If you have an admin notification from the Scratch Team, the message indicator in the navigation bar will display red instead of orange."},"nicknames/title":{"message":"Nicknames"},"nicknames/description":{"message":"Set nicknames for other Scratchers. Only you can see the nicknames, and their username will be replaced with the nickname when you see their name."},"load-more-forum-posts/title":{"message":"Load More Posts"},"load-more-forum-posts/description":{"message":"Load more posts in the forum without having to switch pages."},"scroll-project-titles/title":{"message":"Scroll Project Titles"},"scroll-project-titles/description":{"message":"Allows you to scroll and view the entire title of projects that you don't own."},"search-context-menus/title":{"message":"Search Context Menus"},"search-context-menus/description":{"message":"Type and search context menus to select an option efficiently. You can also press enter to select the top option."},"hover-user-cards/title":{"message":"User Hover Cards"},"hover-user-cards/description":{"message":"Hover over any username on the website to display the profile picture, username and follower count."},"exact-join-date/title":{"message":"Exact Join Date"},"exact-join-date/description":{"message":"Displays the exact time that a user joined, shown on their profile."},"upload-img-directly/title":{"message":"Direct Image Uploads"},"upload-img-directly/description":{"message":"Allows you to upload images to the Scratch forums for posts and signatures without having to use third party image uploading services."},"leave-studio/title":{"message":"Leave Studio Button"},"leave-studio/description":{"message":"Adds a button to the curators page of any studios you curate or manage that allows you to leave the studio. A confirmation shows first."},"frontpage-curator/title":{"message":"Frontpage Curator Name as Link"},"frontpage-curator/description":{"message":"Makes the name of the Frontpage Curator to a clickable link to his profile."},"minimized-remix-credits/title":{"message":"Minimized Remix Credits"},"minimized-remix-credits/description":{"message":"The remix credit boxes for projects take space from the project Instructions, so this makes the box smaller."},"follows-you/title":{"message":"Show if Following on Profile"},"follows-you/description":{"message":"If a user is following you, it will show next to their username when you visit their profile."},"custom-studio/title":{"message":"Custom Studio Section"},"custom-studio/description":{"message":"On the homepage of the Scratch website, the newest projects from the studio of your choice are displayed above the Featured Projects."},"highlight-unanswered/title":{"message":"Highlight Unanswered Forum Topics"},"highlight-unanswered/description":{"message":"Adds a blue highlight to topics in the forums that have no replies."},"search-assets/title":{"message":"Search Assets"},"search-assets/description":{"message":"Search through costume and sound assets in the editor."},"block-count-in-mystuff/title":{"message":"Block Count in My Stuff"},"block-count-in-mystuff/description":{"message":"Displays the block count for projects on the My Stuff page."},"pause-audio/title":{"message":"Pause Audio"},"pause-audio/description":{"message":"Allows you to pause and resume audio in the sound editor of Scratch projects."},"display-message-count-in-icon/title":{"message":"Display Message Count"},"display-message-count-in-icon/description":{"message":"Displays your current message count in the extension icon for ScratchTools."},"colored-context-menus/title":{"message":"Colored Context Menus"},"colored-context-menus/description":{"message":"Like in Scratch 2.0, colors the context menus based on the color of the block they're for."},"left-side-stage/title":{"message":"Stage on Left Side"},"left-side-stage/description":{"message":"Like in Scratch 2.0, moves the stage to the left side of the editor, rather than keeping it on the right."},"move-project-title-input/title":{"message":"Project Title Above Stage"},"move-project-title-input/description":{"message":"Like in Scratch 2.0, moves the project title input box above the stage, rather than in the navbar. This only applies to the editor."},"hide-disabled-menu-options/title":{"message":"Hide Disabled Context Menu Options"},"hide-disabled-menu-options/description":{"message":"Context menu options in the editor show even if they are disabled and unable to be used, so this feature will hide them if they are."},"follower-count/title":{"message":"Follower Count on Projects"},"follower-count/description":{"message":"Displays the follower count of the project creator on their projects."},"hide-studio-borders/title":{"message":"Hide Studio Frames"},"hide-studio-borders/description":{"message":"Removes the odd frames from around studio images on 2.0 pages."},"hide-textarea-labels/title":{"message":"Hide Project Instructions and Notes and Credits Labels"},"hide-textarea-labels/description":{"message":"The instructions and notes and credits labels take up quite a bit of space where there could be usual information. This removes them."},"default-to-trending/title":{"message":"Search Trending by Default"},"default-to-trending/description":{"message":"Currently, when you search projects on the Scratch website, you automatically search with the popular filter, instead of trending."},"infinite-backpack-scrolling/title":{"message":"Infinite Backpack Scrolling"},"infinite-backpack-scrolling/description":{"message":"Scroll through the backpack until you reach the very end (does take some time to load, but loads automatically)."},"hide-studio-messages/title":{"message":"Hide Studio Activity Messages"},"hide-studio-messages/description":{"message":"Hide the studio activity messages from the messages page- they pile up quickly and can get annoying."},"get-project-tags/title":{"message":"Display Project Tags"},"get-project-tags/description":{"message":"Lists all of the tags used in the project description right below the project notes and credits."},"link-to-propose/title":{"message":"Link Featured Projects to Studio"},"link-to-propose/description":{"message":"Links the Featured Projects box on the homepage to the Propose Projects to Be Featured studio."},"add-last-option-list/title":{"message":"Set List Item to Last"},"add-last-option-list/description":{"message":"Right click a 'get item [number] of [list]' to set it to select the very last item in the selected list."},"cloud-scratchers/title":{"message":"Online Scratchers in Multiplayer Game"},"cloud-scratchers/description":{"message":"On project pages, displays all of the Scratchers currently in that multiplayer game."},"editor-in-two/title":{"message":"2.0 Editor"},"editor-in-two/description":{"message":"Replaces the default 3.0 online project editor with the 2.0 editor. It's nostalgic, really."},"comment-on-closed-profile/title":{"message":"Comment On Profile With Comments Closed"},"comment-on-closed-profile/description":{"message":"If your profile comments are closed, you can now comment on your own profile anyways. Only you can comment on the profile."},"turbowarp-button-in-editor/title":{"message":"Open in TurboWarp from Editor"},"turbowarp-button-in-editor/description":{"message":"Adds a button to the editor so that you can instantly open the current project in TurboWarp."},"sprite-clones/title":{"message":"Sprite Clone Counter"},"sprite-clones/description":{"message":"Displays the clone count for each individual sprite."},"block-log/title":{"message":"Block Log"},"block-log/description":{"message":"Logs and displays all undo information for the block editor when you press ctrl+shift+l."},"scrollable-list-items/title":{"message":"Scrollable List Items"},"scrollable-list-items/description":{"message":"List items that have a value longer than the width of the list itself will get cut off. Now, you can scroll left and right through the list item."},"custom-fonts/title":{"message":"Custom Website Font"},"custom-fonts/description":{"message":"On the Scratch website, you can set the font to whatever font you want, as long as it is on the Google Fonts website. This is case-sensitive."},"project-timer/title":{"message":"Project Timer"},"project-timer/description":{"message":"Displays the amount of time (in seconds) that the project has been running for."},"colored-comments/title":{"message":"Colored Editor Comments"},"colored-comments/description":{"message":"Colors comments in the editor based on the color of their parent block."},"recently-viewed-projects/title":{"message":"Recently Viewed Projects"},"recently-viewed-projects/description":{"message":"Adds a tab to the My Stuff page where you can see a list of the projects that you have recently viewed."},"collapse-blocks/title":{"message":"Collapse Blocks"},"collapse-blocks/description":{"message":"Right-click block menus in the editor include a button that will let you collapse the selected block."},"set-featured-project/title":{"message":"Set Featured Project"},"set-featured-project/description":{"message":"On any project page, you can set your profile's featured project with the click of a button- even unshared projects."},"scratchformat/title":{"message":"ScratchFormat"},"scratchformat/description":{"message":"Format your comments with bold, italic, and more. The comments will be styled to everyone using ScratchTools."},"expand-editor/title":{"message":"Expand Editor"},"expand-editor/description":{"message":"Use the ctrl+e to switch between the default block editor view and one that hides the stage to expand editor itself."},"list-sprites/title":{"message":"Sprite List"},"list-sprites/description":{"message":"Replaces the sprite grid in the editor with a list that includes the block count and position of the sprite."},"check-if-trending/title":{"message":"Check if Trending"},"check-if-trending/description":{"message":"If a project you're viewing is on the trending page, the place on the trending page will be shown next to the share date on the project page."},"link-forum-activity/title":{"message":"Link Users in Forum Activity"},"link-forum-activity/description":{"message":"In the forums' last post section, makes the usernames link to the user's profile."},"remove-topic-and-post/title":{"message":"Hide Forum Category Counts"},"remove-topic-and-post/description":{"message":"Hides the forum homepage topic and post boxes."},"forum-homepage-emojis/title":{"message":"Forum Category Emojis"},"forum-homepage-emojis/description":{"message":"Adds colorful emojis on the forum homepage categories based on their topic."},"remove-collapse-buttons/title":{"message":"Hide Forum Collapse Buttons"},"remove-collapse-buttons/description":{"message":"Hides the collapse buttons on the forum main page."},"pin-projects/title":{"message":"Pin Projects to My Stuff"},"pin-projects/description":{"message":"Pin one of your projects to the top of your My Stuff page with the click of a button. You can unpin your pinned project or switch out your pinned project for another one as well."},"last-key-pressed/title":{"message":"Last Key Pressed"},"last-key-pressed/description":{"message":"On any project page and in the editor, you can view the last key that you have pressed while on that project, according to the project itself. This is good for games such as platformers."},"hide-signatures/title":{"message":"Hide Forum Signatures"},"hide-signatures/description":{"message":"Hides all forum signatures and signature dividers."},"twemoji-in-forums/title":{"message":"Better Forum Emojis"},"twemoji-in-forums/description":{"message":"Replaces the current low resolution forum emojis with high quality Twemojis."},"go-to-parent/title":{"message":"Go to Parent Button"},"go-to-parent/description":{"message":"In the editor for any project that is a remix, you can click a button to go to the editor in the parent project."},"most-popular-project/title":{"message":"Most Popular Project"},"most-popular-project/description":{"message":"Displays the most popular project (by views) of the user on profile pages. You can click on the project to view it."},"editor-dark-mode/title":{"message":"Editor Dark Mode"},"editor-dark-mode/description":{"message":"Switches the editor's light color scheme to a darker one."},"hide-studio-group-icon/title":{"message":"Hide Studio Group Icon"},"hide-studio-group-icon/description":{"message":"Hides the studio group icon, and only shows the studio thumbnail."},"colored-messages/title":{"message":"Colored Messages"},"colored-messages/description":{"message":"Colors your messages based on the type of message, such as loves, favorites, and studio invites."},"full-title/title":{"message":"Full Project Title"},"full-title/description":{"message":"On profile pages, hover over any project title to show the full title."},"fixed-box/title":{"message":"Fix Content Boxes"},"fixed-box/description":{"message":"Makes all sides of boxes on the pages rounded, rather than just the tops."},"user-bio/title":{"message":"User Bio on Hover"},"user-bio/description":{"message":"In profile comments, hover over any username to display the user's bio."},"nfe-project-checker/title":{"message":"NFE Project Checker"},"nfe-project-checker/description":{"message":"On project pages, displays whether the project is Safe, Unreviewed, or NSFE (Not Safe for Everyone)."},"sprite-data/title":{"message":"Display Sprite Data"},"sprite-data/description":{"message":"In the Code, Costumes, and Sounds tab for each sprite, the number of blocks, costumes, and sounds will be displayed for the current sprite."},"idea-generator/title":{"message":"Project Idea Generator"},"idea-generator/description":{"message":"On the Scratch Ideas page, there will be a section where you can generate project ideas if you need some."},"hide-stickies/title":{"message":"Hide Forum Stickies"},"hide-stickies/description":{"message":"Hides the basic stickies from the top of each forum topic."},"nfe-search/title":{"message":"NFE Search"},"nfe-search/description":{"message":"Use a button to search all projects, including NFE ones."},"open-in-new-tab/title":{"message":"Open in New Tab"},"open-in-new-tab/description":{"message":"Automatically opens links on project pages in a new tab."},"unbold-site-text/title":{"message":"Unbold Site Text"},"unbold-site-text/description":{"message":"Makes it so that all text across Scratch is unbolded, and just normal text."},"compact-navbar/title":{"message":"Compact Navbar"},"compact-navbar/description":{"message":"Makes more room on the navigation bar near where your profile dropdown is."},"delete-all/title":{"message":"Delete All Sprites"},"delete-all/description":{"message":"Adds an option in the right-click context menu for sprites. It will delete all sprites (after confirmation to make sure it isn't an accident)."},"round-profile-pictures/title":{"message":"Round Profile Pictures"},"round-profile-pictures/description":{"message":"All profile pictures on the Scratch website will be rounded."},"ocular-link/title":{"message":"Ocular Links in Forums"},"ocular-link/description":{"message":"Adds a link to any user's Ocular page right below their username on a post."},"forum-scratch-team/title":{"message":"Scratch Team Symbol in Forums"},"forum-scratch-team/description":{"message":"Next to the username of any Scratch Team member in the forums, an asterisk (*) is placed at the end of their username."},"remove-editor-icons/title":{"message":"Remove Editor Icons"},"remove-editor-icons/description":{"message":"Removes the icons from the tabs in the editor."},"sprite-watermark/title":{"message":"Remove Sprite Watermark"},"sprite-watermark/description":{"message":"Removes the sprite watermark that shows in the editor."},"compact-editor/title":{"message":"Compact Editor"},"compact-editor/description":{"message":"Makes sprite and backdrop information more compact."},"my-recent-projects/title":{"message":"Replace Scratch News with Recent Projects"},"my-recent-projects/description":{"message":"Replaces the Scratch News section on the homepage with your recently shared projects."},"focus-mode/title":{"message":"Focus Mode"},"focus-mode/description":{"message":"Removes the comments, studio and remix column, header, and footer on project pages when the button is clicked."}}
\ No newline at end of file
From ea495c4962fab76bb556233687f5ce8b4f5289f5 Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Sat, 24 Aug 2024 17:48:10 -0700
Subject: [PATCH 151/253] Disable Cloud
---
features/disable-cloud/data.json | 13 +++++++++
features/disable-cloud/script.js | 48 ++++++++++++++++++++++++++++++++
features/disable-cloud/style.css | 12 ++++++++
features/features.json | 5 ++++
4 files changed, 78 insertions(+)
create mode 100644 features/disable-cloud/data.json
create mode 100644 features/disable-cloud/script.js
create mode 100644 features/disable-cloud/style.css
diff --git a/features/disable-cloud/data.json b/features/disable-cloud/data.json
new file mode 100644
index 00000000..42601723
--- /dev/null
+++ b/features/disable-cloud/data.json
@@ -0,0 +1,13 @@
+{
+ "title": "Disable Cloud",
+ "description": "Allows you to disable cloud data on any project. This will still receive cloud data information, but will not send any.",
+ "credits": [
+ { "username": "rgantzos", "url": "https://scratch.mit.edu/users/rgantzos/" }
+ ],
+ "scripts": [{ "file": "script.js", "runOn": "/projects/*" }],
+ "styles": [{ "file": "style.css", "runOn": "/projects/*" }],
+ "type": ["Editor"],
+ "tags": ["New", "Featured"],
+ "dynamic": true
+ }
+
\ No newline at end of file
diff --git a/features/disable-cloud/script.js b/features/disable-cloud/script.js
new file mode 100644
index 00000000..92f441b0
--- /dev/null
+++ b/features/disable-cloud/script.js
@@ -0,0 +1,48 @@
+export default async function ({ feature, console }) {
+ feature.traps.gui().projectState.cloudStatus = "ENABLED";
+
+ ScratchTools.waitForElements(".extension-chip", function (chip) {
+ if (!chip.firstChild.src.endsWith("/svgs/project/clouddata.svg")) return;
+ if (chip.querySelector(".ste-cloud-disable")) return;
+
+ let content = chip.querySelector(".extension-content");
+
+ let outer = document.createElement("div");
+ outer.className = "ste-action-holder";
+ outer.appendChild(content.lastChild);
+
+ let div = document.createElement("div");
+ div.className = "extension-action ste-cloud-disable";
+ outer.appendChild(div);
+
+ feature.self.hideOnDisable(div)
+
+ let span = document.createElement("span");
+ span.textContent = "Disable";
+ div.appendChild(span);
+
+ span.addEventListener("click", function () {
+ if (span.textContent === "Disable") {
+ span.textContent = "Enable";
+ feature.traps.gui().projectState.cloudStatus = "DISABLED";
+ } else {
+ span.textContent = "Disable";
+ feature.traps.gui().projectState.cloudStatus = "ENABLED";
+ }
+ });
+
+ content.appendChild(outer);
+ });
+
+ const nativeWsSend = WebSocket.prototype.send;
+ WebSocket.prototype.send = function (...args) {
+ let data = JSON.parse(args[0]);
+ if (
+ data.method === "set" &&
+ feature.traps.gui().projectState.cloudStatus === "DISABLED" &&
+ feature.self.enabled
+ )
+ return;
+ return nativeWsSend.call(this, ...args);
+ };
+}
diff --git a/features/disable-cloud/style.css b/features/disable-cloud/style.css
new file mode 100644
index 00000000..88d0712c
--- /dev/null
+++ b/features/disable-cloud/style.css
@@ -0,0 +1,12 @@
+.ste-cloud-disable {
+ height: 14px;
+ margin-left: .25rem;
+ cursor: pointer;
+ padding-top: 1px !important;
+ position: relative;
+ top: 1px;
+}
+
+.extension-chip .extension-action {
+ display: inline-flex !important;
+}
\ No newline at end of file
diff --git a/features/features.json b/features/features.json
index 44c8da8d..5206ba59 100644
--- a/features/features.json
+++ b/features/features.json
@@ -1,4 +1,9 @@
[
+ {
+ "version": 2,
+ "id": "disable-cloud",
+ "versionAdded": "v4.0.0"
+ },
{
"version": 2,
"id": "webp-uploads",
From 9102f016c4baeb8729945bbc341f4346bd0e0cd8 Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Sun, 25 Aug 2024 15:59:06 -0700
Subject: [PATCH 152/253] Asset Size
---
features/asset-size/data.json | 13 +++++++
features/asset-size/script.js | 57 ++++++++++++++++++++++++++++
features/features.json | 5 +++
features/remaining-replies/script.js | 2 -
4 files changed, 75 insertions(+), 2 deletions(-)
create mode 100644 features/asset-size/data.json
create mode 100644 features/asset-size/script.js
diff --git a/features/asset-size/data.json b/features/asset-size/data.json
new file mode 100644
index 00000000..9b31f47c
--- /dev/null
+++ b/features/asset-size/data.json
@@ -0,0 +1,13 @@
+{
+ "title": "Asset Size",
+ "description": "Allows you to hover over any asset (costumes and sounds) in the editor to view the file size.",
+ "credits": [
+ {
+ "url": "https://scratch.mit.edu/users/rgantzos/",
+ "username": "rgantzos"
+ }
+ ],
+ "type": ["Editor"],
+ "scripts": [{ "file": "script.js", "runOn": "/projects/*" }]
+ }
+
\ No newline at end of file
diff --git a/features/asset-size/script.js b/features/asset-size/script.js
new file mode 100644
index 00000000..a1aaebbe
--- /dev/null
+++ b/features/asset-size/script.js
@@ -0,0 +1,57 @@
+export default async function ({ feature, console }) {
+ ScratchTools.waitForElements(
+ "div[class*='asset-panel_wrapper_'] div[class*='selector_list-area_'] > div",
+ function (asset) {
+ if (asset.dataset.ste === "ste-file-size") return;
+ asset.dataset.ste = "ste-file-size";
+
+ let content = asset.querySelector(
+ "div[class*='sprite-selector-item_sprite-info_-'] div[class*='sprite-selector-item_sprite-details_']"
+ );
+
+ asset.firstChild.addEventListener("mouseover", function () {
+ let scratchAsset = ScratchTools.Scratch.vm.editingTarget;
+ let targetAssets =
+ feature.traps.gui().editorTab?.activeTabIndex === 1
+ ? scratchAsset.getCostumes()
+ : scratchAsset.getSounds();
+ let data = targetAssets[getElementIndex(asset)].asset.data.byteLength;
+
+ content.dataset.previousContent = content.textContent;
+ content.textContent = formatBytes(data);
+ });
+
+ asset.firstChild.addEventListener("mouseout", function () {
+ if (content.dataset.previousContent) {
+ content.textContent = content.dataset.previousContent;
+ }
+ });
+ }
+ );
+
+ function getElementIndex(element) {
+ const parent = element.parentElement;
+
+ const children = parent.children;
+
+ for (let i = 0; i < children.length; i++) {
+ if (children[i] === element) {
+ return i;
+ }
+ }
+
+ return -1;
+ }
+
+ function formatBytes(bytes, decimals = 2) {
+ if (bytes === 0) return "0 Bytes";
+
+ const k = 1024;
+ const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
+
+ const sizeInUnits = parseFloat((bytes / Math.pow(k, i)).toFixed(decimals));
+
+ return `${sizeInUnits} ${sizes[i]}`;
+ }
+}
diff --git a/features/features.json b/features/features.json
index 6ccffea7..9f0054a1 100644
--- a/features/features.json
+++ b/features/features.json
@@ -1,4 +1,9 @@
[
+ {
+ "version": 2,
+ "id": "asset-size",
+ "versionAdded": "v4.0.0"
+ },
{
"version": 2,
"id": "disable-cloud",
diff --git a/features/remaining-replies/script.js b/features/remaining-replies/script.js
index b9193f80..ac444348 100644
--- a/features/remaining-replies/script.js
+++ b/features/remaining-replies/script.js
@@ -1,6 +1,4 @@
export default async function ({ feature, console }) {
- window.feature = feature
-
ScratchTools.waitForElements(".flex-row.comment", function (comment) {
let data = feature.redux
.getState()
From 6be8082c30929a8c7a0d16778ae925715ca2b10a Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Sun, 25 Aug 2024 16:01:05 -0700
Subject: [PATCH 153/253] Update script.js
---
features/asset-size/script.js | 2 ++
1 file changed, 2 insertions(+)
diff --git a/features/asset-size/script.js b/features/asset-size/script.js
index a1aaebbe..382c7046 100644
--- a/features/asset-size/script.js
+++ b/features/asset-size/script.js
@@ -10,6 +10,8 @@ export default async function ({ feature, console }) {
);
asset.firstChild.addEventListener("mouseover", function () {
+ if (!feature.self.enabled) return;
+
let scratchAsset = ScratchTools.Scratch.vm.editingTarget;
let targetAssets =
feature.traps.gui().editorTab?.activeTabIndex === 1
From 616bffdf9bdf89f8b8795bbe667bb1b33f659e45 Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Sun, 25 Aug 2024 16:01:19 -0700
Subject: [PATCH 154/253] Update data.json
---
features/asset-size/data.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/features/asset-size/data.json b/features/asset-size/data.json
index 9b31f47c..ab88577f 100644
--- a/features/asset-size/data.json
+++ b/features/asset-size/data.json
@@ -8,6 +8,7 @@
}
],
"type": ["Editor"],
+ "dynamic": true,
"scripts": [{ "file": "script.js", "runOn": "/projects/*" }]
}
\ No newline at end of file
From c46845228a190b914b1b93825a5e76e2da596a7f Mon Sep 17 00:00:00 2001
From: "scratchtools-bot[bot]"
<123264640+scratchtools-bot[bot]@users.noreply.github.com>
Date: Mon, 26 Aug 2024 00:00:16 +0000
Subject: [PATCH 155/253] Updated file.
---
extras/feature-locales/en.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/feature-locales/en.json b/extras/feature-locales/en.json
index 8279bfe4..12c05182 100644
--- a/extras/feature-locales/en.json
+++ b/extras/feature-locales/en.json
@@ -1 +1 @@
-{"webp-uploads/title":{"message":"WEBP Image Uploads"},"webp-uploads/description":{"message":"Allows you to upload webp images in the editor for new sprites, costumes and stage backdrops."},"remaining-replies/title":{"message":"Remaining Replies"},"remaining-replies/description":{"message":"Shows how many more replies are allowed in a thread of studio comments."},"video-recorder/title":{"message":"Record Stage"},"video-recorder/description":{"message":"Allows you to record the stage for projects while in the editor or on the project page."},"studio-creation-date/title":{"message":"Studio Creation Date"},"studio-creation-date/description":{"message":"Adds the creation date of the studio to the studio footer."},"explore-filter/title":{"message":"Explore Filter"},"explore-filter/description":{"message":"Customize project and studio search results with filters on the Search, Explore, and Studio pages."},"better-featured-projects/title":{"message":"Better Featured Projects"},"better-featured-projects/description":{"message":"Replaces the Featured Projects section with featured projects curated by ScratchTools users. You can submit your own projects to be featured as well."},"align-to-center/title":{"message":"Align to Center"},"align-to-center/description":{"message":"Allows you to align text in Instructions and Notes & Credits boxes to the center of the input."},"more-editor-fonts/title":{"message":"More Paint Editor Fonts"},"more-editor-fonts/description":{"message":"Allows you to use dozens of extra fonts in the paint editor."},"upload-thumbnail/title":{"message":"Set Thumbnail"},"upload-thumbnail/description":{"message":"Allows you to upload an image or GIF as a project thumbnail, or set the thumbnail to the current stage."},"paint-align/title":{"message":"Align Objects in Paint Editor"},"paint-align/description":{"message":"Adds a button to the paint editor that allows you to align selected items."},"rotate-gradient/title":{"message":"Rotate Gradients"},"rotate-gradient/description":{"message":"Allows you to rotate gradients in any direction in the costume editor. Works in both the vector and bitmap editors."},"change-monitor-opacity/title":{"message":"Custom Monitor Opacity"},"change-monitor-opacity/description":{"message":"Set the opacity of variables and lists on the stage to a custom number."},"project-reactions/title":{"message":"Project Reactions"},"project-reactions/description":{"message":"Allows you to react to projects with different emojis."},"chomp-blocks/title":{"message":"Extend Wrapped C Blocks"},"chomp-blocks/description":{"message":"Automatically extends C blocks to wrap around blocks that it is being placed over when dragging."},"custom-explore/title":{"message":"Custom Explore Redirect"},"custom-explore/description":{"message":"Automatically redirect to a specific tab on the Explore page."},"stage-in-spritepane/title":{"message":"Stage In Sprite Pane"},"stage-in-spritepane/description":{"message":"Move the stage button to the sprite pane to widen the sprite field."},"better-cloud-history/title":{"message":"Better Cloud History"},"better-cloud-history/description":{"message":"Updates the cloud monitor page to a more modern version with more details. You can click on variable names to sort by that variable."},"sprite-layers/title":{"message":"View Sprite Layers"},"sprite-layers/description":{"message":"Allows you to hover over the show/hide toggle in the sprite properties panel of the editor to view the sprite layers."},"hide-project-tags/title":{"message":"Hide Project Tags"},"hide-project-tags/description":{"message":"Hides all linked tags in the Instructions/Notes and Credits of projects."},"snap-to-grid/title":{"message":"Snap Scripts to Grid"},"snap-to-grid/description":{"message":"Automatically aligns scripts to the dotted grid in the editor when placed."},"select-self/title":{"message":"Select Self"},"select-self/description":{"message":"Allows you to select the current sprite when opening sprite dropdowns, instead of only other sprites."},"sidebar/title":{"message":"Sidebar"},"sidebar/description":{"message":"Adds a sidebar to the Scratch website, rather than just the normal navigation bar at the top of the screen."},"project-version-detector/title":{"message":"Project Version Detector"},"project-version-detector/description":{"message":"Checks when a project was shared and adds a label next to the share date to indicate which version of Scratch was in use at that time."},"fullscreen-explorer/title":{"message":"Fullscreen Project Grids"},"fullscreen-explorer/description":{"message":"Find projects on the big screen by removing the left and right blanks on the Trends, Search, Remix pages."},"project-descriptions/title":{"message":"Summarized Descriptions"},"project-descriptions/description":{"message":"Uses artificial intelligence to summarize project descriptions when you choose to, and shortens long descriptions down to important information, such as gameplay instructions."},"total-stats/title":{"message":"Total User Stats"},"total-stats/description":{"message":"Next to shared projects on a user's profile, displays the total loves, favorites and views that the user has received across all of their shared projects."},"project-miniplayer/title":{"message":"Project Miniplayer"},"project-miniplayer/description":{"message":"Scroll down on the project page and you will automatically see the project miniplayer."},"pin-comments/title":{"message":"Pin Project Comments"},"pin-comments/description":{"message":"Allows you to pin comments on your own projects and see what comments are pinned on other projects."},"download-project/title":{"message":"Download Projects"},"download-project/description":{"message":"Adds a button to project pages that allows you to download the project as an .sb3 file."},"blur-modal/title":{"message":"Blur Modal Backgrounds"},"blur-modal/description":{"message":"Blurs the backgrounds of modals instead of having a colored overlay."},"quick-search/title":{"message":"Quick Search"},"quick-search/description":{"message":"Easily jump between pages on the Scratch website with just the click of Control + K."},"favicon-messages/title":{"message":"Tab Message Count"},"favicon-messages/description":{"message":"Displays your message count in the tab favicon, the Scratch icon at the top of your tab."},"show-emoji-names/title":{"message":"Show Emoji Name"},"show-emoji-names/description":{"message":"Allows you to hover over Scratch emojis in the comments and view their names."},"more-block-themes/title":{"message":"More Block Themes"},"more-block-themes/description":{"message":"Adds additional themes for blocks in the code editor."},"more-key-inputs/title":{"message":"More Key Inputs"},"more-key-inputs/description":{"message":"Adds support for more keys on \"key pressed\" blocks."},"comment-tags/title":{"message":"Editor Comment Tags"},"comment-tags/description":{"message":"Add tags to editor comments to easily organize them."},"profile-flag/title":{"message":"Flag on Profile"},"profile-flag/description":{"message":"Adds flag emojis near selected locations on profile pages."},"follow-on-projects/title":{"message":"Follow on Project Page"},"follow-on-projects/description":{"message":"Follow users directly from the project page instead of going to their profile."},"dark-paint-editor/title":{"message":"Switch Paint Background"},"dark-paint-editor/description":{"message":"Adds a button next to the zoom controls in the paint editor that allows you to switch the background color of the paint editor between light and dark."},"specific-replies/title":{"message":"Specific Reply Messages"},"specific-replies/description":{"message":"In messages related to comments, specifies who a comment was replying to."},"better-trending-thumbnails/title":{"message":"Larger Thumbnails"},"better-trending-thumbnails/description":{"message":"Updates thumbnails on the trending and search pages to be larger and better fit the project/studio box."},"anti-generic/title":{"message":"Anti Generic"},"anti-generic/description":{"message":"On the explore and trending pages, this beta feature automatically hides repetitive projects, along with projects that it expects are generic. This includes projects with a lot of tags, common names, and project duplicates."},"wrap-lists/title":{"message":"Wrap List Items"},"wrap-lists/description":{"message":"Displays text in list items normally without cutting them off if they're too long."},"live-stats/title":{"message":"Live Stats"},"live-stats/description":{"message":"Updates the loves, favorites, remixes, and views on a project live, without having to reload to view the new counts."},"hide-scratch-news/title":{"message":"Hide Scratch News"},"hide-scratch-news/description":{"message":"Hides the Scratch News section on the homepage of the Scratch website."},"watch-later/title":{"message":"Save to Watch Later"},"watch-later/description":{"message":"Save projects you want to view later and they'll appear on a watch later page."},"remove-project-button/title":{"message":"Remove Project Button"},"remove-project-button/description":{"message":"Adds a button to projects in studios that allows you to easily remove it from the studio without opening the menu."},"right-side-flag/title":{"message":"Right Side Flag"},"right-side-flag/description":{"message":"Moves the green flag and the red stop sign to the right side of the stage."},"love-fave-animate/title":{"message":"Love Animations"},"love-fave-animate/description":{"message":"Animates the clicking of the love and favorite buttons on project pages."},"default-to-local/title":{"message":"Default to Local"},"default-to-local/description":{"message":"When creating a variable, sets the default to For This Sprite Only, rather than For All Sprites."},"start-stop-hotkeys/title":{"message":"Green Flag Hotkeys"},"start-stop-hotkeys/description":{"message":"Use Control + G to start or stop a project, depending on whether or not it is running."},"opacity-slider/title":{"message":"Opacity Slider"},"opacity-slider/description":{"message":"Change the opacity of objects in the paint editor."},"more-studios/title":{"message":"More Studios"},"more-studios/description":{"message":"Allows you to add projects to more studios instead of just 20."},"localized-explore/title":{"message":"Projects from Country"},"localized-explore/description":{"message":"On the explore page, makes projects from other countries less visible. This is to only show projects in languages that you understand."},"project-bar/title":{"message":"Project Bar"},"project-bar/description":{"message":"Continue to view the information for a project, even after you scroll down past the notes and credits."},"more-news/title":{"message":"More Scratch News"},"more-news/description":{"message":"On the main page, scroll through the Scratch News section and load more results."},"dumpster-fire/title":{"message":"Dumpster Fire"},"dumpster-fire/description":{"message":"The Scratch homepage is a liar with their \"Featured Projects\" section. This changes the name to the proper form, which is \"Dumpster Fire\"."},"steal-game/title":{"message":"Steal Game"},"steal-game/description":{"message":"Changes the remix button's text to 'Steal game'."},"statistics/title":{"message":"Statistics"},"statistics/description":{"message":"Adds a statistics button on the my stuff page that leads to your ScratchStats profile."},"echo-effect/title":{"message":"Echo Effect"},"echo-effect/description":{"message":"Adds the echo effect back to the Scratch sound editor."},"compact-buttons/title":{"message":"Compact Buttons"},"compact-buttons/description":{"message":"Buttons text gets removed and will get a new icon if it does not have one already."},"message-count/title":{"message":"Message Count"},"message-count/description":{"message":"Displays the user's message count on their profile next to the country."},"move-share-button/title":{"message":"Move Share Button"},"move-share-button/description":{"message":"On project pages, moves the share button next to the See Inside button."},"preview-textboxes/title":{"message":"Preview Textboxes"},"preview-textboxes/description":{"message":"Preview your profile About Me and What I'm Working On, and your projects' Instructions and Notes and Credits, so that you can see what it will look like to other users."},"more-tutorials/title":{"message":"More Tutorials"},"more-tutorials/description":{"message":"On the Ideas page, you can view additional tutorials from other Scratchers."},"simplify-action-buttons/title":{"message":"Simplify Action Buttons"},"simplify-action-buttons/description":{"message":"Displays project action buttons underneath Notes and Credits as their icons."},"slash-to-search/title":{"message":"Slash to Search"},"slash-to-search/description":{"message":"Click the slash key (/) to select the search bar and start typing."},"shared-clipboard/title":{"message":"Shared Clipboard"},"shared-clipboard/description":{"message":"Allows you to copy and paste items between paint editors in different projects."},"hide-footer/title":{"message":"Hide Footer"},"hide-footer/description":{"message":"The footer takes up a lot of unnecessary space. So hide it!"},"original-colors/title":{"message":"Revert to Blue"},"original-colors/description":{"message":"Changes all of the Scratch website's colors back to the original coloring from 3.0, before purple."},"simplify-editor-tabs/title":{"message":"Simplify Editor Tabs"},"simplify-editor-tabs/description":{"message":"Changes editor tabs to icon-only and shows them as a circle"},"live-character-counts/title":{"message":"Live Character Counts"},"live-character-counts/description":{"message":"On forum, studio, and project pages, displays the live character count for textboxes."},"advanced-search/title":{"message":"Search Profiles"},"advanced-search/description":{"message":"When you search for a user, a link to their profile will be at the top of the page."},"studio-links/title":{"message":"Studio Links as Titles"},"studio-links/description":{"message":"Replaces studio links with their titles, all across the Scratch website."},"block-studios/title":{"message":"Block Individual Studio Activity"},"block-studios/description":{"message":"Disable studio activity messages from specific studios."},"block-messages/title":{"message":"Block Users"},"block-messages/description":{"message":"Hide messages from users that you block. Other users won't see that you've blocked them."},"two-colors/title":{"message":"2.0 Block Colors"},"two-colors/description":{"message":"Replaces the colors of the blocks in the editor with the blocks from the 2.0 version of the code editor."},"project-links/title":{"message":"Project Links as Titles"},"project-links/description":{"message":"Replaces project links with their titles, all across the Scratch website."},"emoji-status/title":{"message":"Emoji Statuses"},"emoji-status/description":{"message":"Set the status on your profile to an emoji. Other ScratchTools users will be able to see this status."},"display-name/title":{"message":"Display Names"},"display-name/description":{"message":"Shows display names for Scratchers, and allows you to set your own display name. Display names show next to your username, and aren't limited like usernames are."},"isonline/title":{"message":"Show if User is Online"},"isonline/description":{"message":"On profile pages, displays if a user is online. This will also let other users see if you are online."},"plain-background/title":{"message":"Plain Background"},"plain-background/description":{"message":"Removes the dots from the background of the code editor."},"hide-advertisements/title":{"message":"Hide Ads in Comments"},"hide-advertisements/description":{"message":"Hides advertisements in the comments of profiles, projects, and studios. They can take up a lot of space in the comments."},"hide-block-category-names/title":{"message":"Hide Block Category Names"},"hide-block-category-names/description":{"message":"Changes the block categories in the editor to only show the colors of the categories."},"unlisted-projects/title":{"message":"Unlisted Projects"},"unlisted-projects/description":{"message":"Allows you to generate share links for unshared projects in the editor."},"stats-percentages/title":{"message":"Show Percentages for Project Stats"},"stats-percentages/description":{"message":"On the my stuff page, hover over the number of loves, favorites or remixes to view what percent of viewers performed the action."},"clone-counter/title":{"message":"Clone Counter"},"clone-counter/description":{"message":"Displays the total number of clones in the project above, in the stage header."},"colored-shadows/title":{"message":"Colored Shadows"},"colored-shadows/description":{"message":"Replaces the shadow created when you drag a block near another block with the color of the block that is being moved."},"creator-badge/title":{"message":"Author Badge"},"creator-badge/description":{"message":"Adds a badge next to comments written by the author of the project."},"original-buttons/title":{"message":"Original Buttons"},"original-buttons/description":{"message":"Returns the original love, favorite, remix, and view buttons to the Scratch project pages."},"box-shadows/title":{"message":"Content Box Shadows"},"box-shadows/description":{"message":"Adds shadows on all content boxes. When hovering one, the shadow will darken."},"admin-notifications/title":{"message":"Red Admin Message Indicator"},"admin-notifications/description":{"message":"If you have an admin notification from the Scratch Team, the message indicator in the navigation bar will display red instead of orange."},"nicknames/title":{"message":"Nicknames"},"nicknames/description":{"message":"Set nicknames for other Scratchers. Only you can see the nicknames, and their username will be replaced with the nickname when you see their name."},"load-more-forum-posts/title":{"message":"Load More Posts"},"load-more-forum-posts/description":{"message":"Load more posts in the forum without having to switch pages."},"scroll-project-titles/title":{"message":"Scroll Project Titles"},"scroll-project-titles/description":{"message":"Allows you to scroll and view the entire title of projects that you don't own."},"search-context-menus/title":{"message":"Search Context Menus"},"search-context-menus/description":{"message":"Type and search context menus to select an option efficiently. You can also press enter to select the top option."},"hover-user-cards/title":{"message":"User Hover Cards"},"hover-user-cards/description":{"message":"Hover over any username on the website to display the profile picture, username and follower count."},"exact-join-date/title":{"message":"Exact Join Date"},"exact-join-date/description":{"message":"Displays the exact time that a user joined, shown on their profile."},"upload-img-directly/title":{"message":"Direct Image Uploads"},"upload-img-directly/description":{"message":"Allows you to upload images to the Scratch forums for posts and signatures without having to use third party image uploading services."},"leave-studio/title":{"message":"Leave Studio Button"},"leave-studio/description":{"message":"Adds a button to the curators page of any studios you curate or manage that allows you to leave the studio. A confirmation shows first."},"frontpage-curator/title":{"message":"Frontpage Curator Name as Link"},"frontpage-curator/description":{"message":"Makes the name of the Frontpage Curator to a clickable link to his profile."},"minimized-remix-credits/title":{"message":"Minimized Remix Credits"},"minimized-remix-credits/description":{"message":"The remix credit boxes for projects take space from the project Instructions, so this makes the box smaller."},"follows-you/title":{"message":"Show if Following on Profile"},"follows-you/description":{"message":"If a user is following you, it will show next to their username when you visit their profile."},"custom-studio/title":{"message":"Custom Studio Section"},"custom-studio/description":{"message":"On the homepage of the Scratch website, the newest projects from the studio of your choice are displayed above the Featured Projects."},"highlight-unanswered/title":{"message":"Highlight Unanswered Forum Topics"},"highlight-unanswered/description":{"message":"Adds a blue highlight to topics in the forums that have no replies."},"search-assets/title":{"message":"Search Assets"},"search-assets/description":{"message":"Search through costume and sound assets in the editor."},"block-count-in-mystuff/title":{"message":"Block Count in My Stuff"},"block-count-in-mystuff/description":{"message":"Displays the block count for projects on the My Stuff page."},"pause-audio/title":{"message":"Pause Audio"},"pause-audio/description":{"message":"Allows you to pause and resume audio in the sound editor of Scratch projects."},"display-message-count-in-icon/title":{"message":"Display Message Count"},"display-message-count-in-icon/description":{"message":"Displays your current message count in the extension icon for ScratchTools."},"colored-context-menus/title":{"message":"Colored Context Menus"},"colored-context-menus/description":{"message":"Like in Scratch 2.0, colors the context menus based on the color of the block they're for."},"left-side-stage/title":{"message":"Stage on Left Side"},"left-side-stage/description":{"message":"Like in Scratch 2.0, moves the stage to the left side of the editor, rather than keeping it on the right."},"move-project-title-input/title":{"message":"Project Title Above Stage"},"move-project-title-input/description":{"message":"Like in Scratch 2.0, moves the project title input box above the stage, rather than in the navbar. This only applies to the editor."},"hide-disabled-menu-options/title":{"message":"Hide Disabled Context Menu Options"},"hide-disabled-menu-options/description":{"message":"Context menu options in the editor show even if they are disabled and unable to be used, so this feature will hide them if they are."},"follower-count/title":{"message":"Follower Count on Projects"},"follower-count/description":{"message":"Displays the follower count of the project creator on their projects."},"hide-studio-borders/title":{"message":"Hide Studio Frames"},"hide-studio-borders/description":{"message":"Removes the odd frames from around studio images on 2.0 pages."},"hide-textarea-labels/title":{"message":"Hide Project Instructions and Notes and Credits Labels"},"hide-textarea-labels/description":{"message":"The instructions and notes and credits labels take up quite a bit of space where there could be usual information. This removes them."},"default-to-trending/title":{"message":"Search Trending by Default"},"default-to-trending/description":{"message":"Currently, when you search projects on the Scratch website, you automatically search with the popular filter, instead of trending."},"infinite-backpack-scrolling/title":{"message":"Infinite Backpack Scrolling"},"infinite-backpack-scrolling/description":{"message":"Scroll through the backpack until you reach the very end (does take some time to load, but loads automatically)."},"hide-studio-messages/title":{"message":"Hide Studio Activity Messages"},"hide-studio-messages/description":{"message":"Hide the studio activity messages from the messages page- they pile up quickly and can get annoying."},"get-project-tags/title":{"message":"Display Project Tags"},"get-project-tags/description":{"message":"Lists all of the tags used in the project description right below the project notes and credits."},"link-to-propose/title":{"message":"Link Featured Projects to Studio"},"link-to-propose/description":{"message":"Links the Featured Projects box on the homepage to the Propose Projects to Be Featured studio."},"add-last-option-list/title":{"message":"Set List Item to Last"},"add-last-option-list/description":{"message":"Right click a 'get item [number] of [list]' to set it to select the very last item in the selected list."},"cloud-scratchers/title":{"message":"Online Scratchers in Multiplayer Game"},"cloud-scratchers/description":{"message":"On project pages, displays all of the Scratchers currently in that multiplayer game."},"editor-in-two/title":{"message":"2.0 Editor"},"editor-in-two/description":{"message":"Replaces the default 3.0 online project editor with the 2.0 editor. It's nostalgic, really."},"comment-on-closed-profile/title":{"message":"Comment On Profile With Comments Closed"},"comment-on-closed-profile/description":{"message":"If your profile comments are closed, you can now comment on your own profile anyways. Only you can comment on the profile."},"turbowarp-button-in-editor/title":{"message":"Open in TurboWarp from Editor"},"turbowarp-button-in-editor/description":{"message":"Adds a button to the editor so that you can instantly open the current project in TurboWarp."},"sprite-clones/title":{"message":"Sprite Clone Counter"},"sprite-clones/description":{"message":"Displays the clone count for each individual sprite."},"block-log/title":{"message":"Block Log"},"block-log/description":{"message":"Logs and displays all undo information for the block editor when you press ctrl+shift+l."},"scrollable-list-items/title":{"message":"Scrollable List Items"},"scrollable-list-items/description":{"message":"List items that have a value longer than the width of the list itself will get cut off. Now, you can scroll left and right through the list item."},"custom-fonts/title":{"message":"Custom Website Font"},"custom-fonts/description":{"message":"On the Scratch website, you can set the font to whatever font you want, as long as it is on the Google Fonts website. This is case-sensitive."},"project-timer/title":{"message":"Project Timer"},"project-timer/description":{"message":"Displays the amount of time (in seconds) that the project has been running for."},"colored-comments/title":{"message":"Colored Editor Comments"},"colored-comments/description":{"message":"Colors comments in the editor based on the color of their parent block."},"recently-viewed-projects/title":{"message":"Recently Viewed Projects"},"recently-viewed-projects/description":{"message":"Adds a tab to the My Stuff page where you can see a list of the projects that you have recently viewed."},"collapse-blocks/title":{"message":"Collapse Blocks"},"collapse-blocks/description":{"message":"Right-click block menus in the editor include a button that will let you collapse the selected block."},"set-featured-project/title":{"message":"Set Featured Project"},"set-featured-project/description":{"message":"On any project page, you can set your profile's featured project with the click of a button- even unshared projects."},"scratchformat/title":{"message":"ScratchFormat"},"scratchformat/description":{"message":"Format your comments with bold, italic, and more. The comments will be styled to everyone using ScratchTools."},"expand-editor/title":{"message":"Expand Editor"},"expand-editor/description":{"message":"Use the ctrl+e to switch between the default block editor view and one that hides the stage to expand editor itself."},"list-sprites/title":{"message":"Sprite List"},"list-sprites/description":{"message":"Replaces the sprite grid in the editor with a list that includes the block count and position of the sprite."},"check-if-trending/title":{"message":"Check if Trending"},"check-if-trending/description":{"message":"If a project you're viewing is on the trending page, the place on the trending page will be shown next to the share date on the project page."},"link-forum-activity/title":{"message":"Link Users in Forum Activity"},"link-forum-activity/description":{"message":"In the forums' last post section, makes the usernames link to the user's profile."},"remove-topic-and-post/title":{"message":"Hide Forum Category Counts"},"remove-topic-and-post/description":{"message":"Hides the forum homepage topic and post boxes."},"forum-homepage-emojis/title":{"message":"Forum Category Emojis"},"forum-homepage-emojis/description":{"message":"Adds colorful emojis on the forum homepage categories based on their topic."},"remove-collapse-buttons/title":{"message":"Hide Forum Collapse Buttons"},"remove-collapse-buttons/description":{"message":"Hides the collapse buttons on the forum main page."},"pin-projects/title":{"message":"Pin Projects to My Stuff"},"pin-projects/description":{"message":"Pin one of your projects to the top of your My Stuff page with the click of a button. You can unpin your pinned project or switch out your pinned project for another one as well."},"last-key-pressed/title":{"message":"Last Key Pressed"},"last-key-pressed/description":{"message":"On any project page and in the editor, you can view the last key that you have pressed while on that project, according to the project itself. This is good for games such as platformers."},"hide-signatures/title":{"message":"Hide Forum Signatures"},"hide-signatures/description":{"message":"Hides all forum signatures and signature dividers."},"twemoji-in-forums/title":{"message":"Better Forum Emojis"},"twemoji-in-forums/description":{"message":"Replaces the current low resolution forum emojis with high quality Twemojis."},"go-to-parent/title":{"message":"Go to Parent Button"},"go-to-parent/description":{"message":"In the editor for any project that is a remix, you can click a button to go to the editor in the parent project."},"most-popular-project/title":{"message":"Most Popular Project"},"most-popular-project/description":{"message":"Displays the most popular project (by views) of the user on profile pages. You can click on the project to view it."},"editor-dark-mode/title":{"message":"Editor Dark Mode"},"editor-dark-mode/description":{"message":"Switches the editor's light color scheme to a darker one."},"hide-studio-group-icon/title":{"message":"Hide Studio Group Icon"},"hide-studio-group-icon/description":{"message":"Hides the studio group icon, and only shows the studio thumbnail."},"colored-messages/title":{"message":"Colored Messages"},"colored-messages/description":{"message":"Colors your messages based on the type of message, such as loves, favorites, and studio invites."},"full-title/title":{"message":"Full Project Title"},"full-title/description":{"message":"On profile pages, hover over any project title to show the full title."},"fixed-box/title":{"message":"Fix Content Boxes"},"fixed-box/description":{"message":"Makes all sides of boxes on the pages rounded, rather than just the tops."},"user-bio/title":{"message":"User Bio on Hover"},"user-bio/description":{"message":"In profile comments, hover over any username to display the user's bio."},"nfe-project-checker/title":{"message":"NFE Project Checker"},"nfe-project-checker/description":{"message":"On project pages, displays whether the project is Safe, Unreviewed, or NSFE (Not Safe for Everyone)."},"sprite-data/title":{"message":"Display Sprite Data"},"sprite-data/description":{"message":"In the Code, Costumes, and Sounds tab for each sprite, the number of blocks, costumes, and sounds will be displayed for the current sprite."},"idea-generator/title":{"message":"Project Idea Generator"},"idea-generator/description":{"message":"On the Scratch Ideas page, there will be a section where you can generate project ideas if you need some."},"hide-stickies/title":{"message":"Hide Forum Stickies"},"hide-stickies/description":{"message":"Hides the basic stickies from the top of each forum topic."},"nfe-search/title":{"message":"NFE Search"},"nfe-search/description":{"message":"Use a button to search all projects, including NFE ones."},"open-in-new-tab/title":{"message":"Open in New Tab"},"open-in-new-tab/description":{"message":"Automatically opens links on project pages in a new tab."},"unbold-site-text/title":{"message":"Unbold Site Text"},"unbold-site-text/description":{"message":"Makes it so that all text across Scratch is unbolded, and just normal text."},"compact-navbar/title":{"message":"Compact Navbar"},"compact-navbar/description":{"message":"Makes more room on the navigation bar near where your profile dropdown is."},"delete-all/title":{"message":"Delete All Sprites"},"delete-all/description":{"message":"Adds an option in the right-click context menu for sprites. It will delete all sprites (after confirmation to make sure it isn't an accident)."},"round-profile-pictures/title":{"message":"Round Profile Pictures"},"round-profile-pictures/description":{"message":"All profile pictures on the Scratch website will be rounded."},"ocular-link/title":{"message":"Ocular Links in Forums"},"ocular-link/description":{"message":"Adds a link to any user's Ocular page right below their username on a post."},"forum-scratch-team/title":{"message":"Scratch Team Symbol in Forums"},"forum-scratch-team/description":{"message":"Next to the username of any Scratch Team member in the forums, an asterisk (*) is placed at the end of their username."},"remove-editor-icons/title":{"message":"Remove Editor Icons"},"remove-editor-icons/description":{"message":"Removes the icons from the tabs in the editor."},"sprite-watermark/title":{"message":"Remove Sprite Watermark"},"sprite-watermark/description":{"message":"Removes the sprite watermark that shows in the editor."},"compact-editor/title":{"message":"Compact Editor"},"compact-editor/description":{"message":"Makes sprite and backdrop information more compact."},"my-recent-projects/title":{"message":"Replace Scratch News with Recent Projects"},"my-recent-projects/description":{"message":"Replaces the Scratch News section on the homepage with your recently shared projects."},"focus-mode/title":{"message":"Focus Mode"},"focus-mode/description":{"message":"Removes the comments, studio and remix column, header, and footer on project pages when the button is clicked."}}
\ No newline at end of file
+{"disable-cloud/title":{"message":"Disable Cloud"},"disable-cloud/description":{"message":"Allows you to disable cloud data on any project. This will still receive cloud data information, but will not send any."},"webp-uploads/title":{"message":"WEBP Image Uploads"},"webp-uploads/description":{"message":"Allows you to upload webp images in the editor for new sprites, costumes and stage backdrops."},"remaining-replies/title":{"message":"Remaining Replies"},"remaining-replies/description":{"message":"Shows how many more replies are allowed in a thread of studio comments."},"video-recorder/title":{"message":"Record Stage"},"video-recorder/description":{"message":"Allows you to record the stage for projects while in the editor or on the project page."},"studio-creation-date/title":{"message":"Studio Creation Date"},"studio-creation-date/description":{"message":"Adds the creation date of the studio to the studio footer."},"explore-filter/title":{"message":"Explore Filter"},"explore-filter/description":{"message":"Customize project and studio search results with filters on the Search, Explore, and Studio pages."},"better-featured-projects/title":{"message":"Better Featured Projects"},"better-featured-projects/description":{"message":"Replaces the Featured Projects section with featured projects curated by ScratchTools users. You can submit your own projects to be featured as well."},"align-to-center/title":{"message":"Align to Center"},"align-to-center/description":{"message":"Allows you to align text in Instructions and Notes & Credits boxes to the center of the input."},"more-editor-fonts/title":{"message":"More Paint Editor Fonts"},"more-editor-fonts/description":{"message":"Allows you to use dozens of extra fonts in the paint editor."},"upload-thumbnail/title":{"message":"Set Thumbnail"},"upload-thumbnail/description":{"message":"Allows you to upload an image or GIF as a project thumbnail, or set the thumbnail to the current stage."},"paint-align/title":{"message":"Align Objects in Paint Editor"},"paint-align/description":{"message":"Adds a button to the paint editor that allows you to align selected items."},"rotate-gradient/title":{"message":"Rotate Gradients"},"rotate-gradient/description":{"message":"Allows you to rotate gradients in any direction in the costume editor. Works in both the vector and bitmap editors."},"change-monitor-opacity/title":{"message":"Custom Monitor Opacity"},"change-monitor-opacity/description":{"message":"Set the opacity of variables and lists on the stage to a custom number."},"project-reactions/title":{"message":"Project Reactions"},"project-reactions/description":{"message":"Allows you to react to projects with different emojis."},"chomp-blocks/title":{"message":"Extend Wrapped C Blocks"},"chomp-blocks/description":{"message":"Automatically extends C blocks to wrap around blocks that it is being placed over when dragging."},"custom-explore/title":{"message":"Custom Explore Redirect"},"custom-explore/description":{"message":"Automatically redirect to a specific tab on the Explore page."},"stage-in-spritepane/title":{"message":"Stage In Sprite Pane"},"stage-in-spritepane/description":{"message":"Move the stage button to the sprite pane to widen the sprite field."},"better-cloud-history/title":{"message":"Better Cloud History"},"better-cloud-history/description":{"message":"Updates the cloud monitor page to a more modern version with more details. You can click on variable names to sort by that variable."},"sprite-layers/title":{"message":"View Sprite Layers"},"sprite-layers/description":{"message":"Allows you to hover over the show/hide toggle in the sprite properties panel of the editor to view the sprite layers."},"hide-project-tags/title":{"message":"Hide Project Tags"},"hide-project-tags/description":{"message":"Hides all linked tags in the Instructions/Notes and Credits of projects."},"snap-to-grid/title":{"message":"Snap Scripts to Grid"},"snap-to-grid/description":{"message":"Automatically aligns scripts to the dotted grid in the editor when placed."},"select-self/title":{"message":"Select Self"},"select-self/description":{"message":"Allows you to select the current sprite when opening sprite dropdowns, instead of only other sprites."},"sidebar/title":{"message":"Sidebar"},"sidebar/description":{"message":"Adds a sidebar to the Scratch website, rather than just the normal navigation bar at the top of the screen."},"project-version-detector/title":{"message":"Project Version Detector"},"project-version-detector/description":{"message":"Checks when a project was shared and adds a label next to the share date to indicate which version of Scratch was in use at that time."},"fullscreen-explorer/title":{"message":"Fullscreen Project Grids"},"fullscreen-explorer/description":{"message":"Find projects on the big screen by removing the left and right blanks on the Trends, Search, Remix pages."},"project-descriptions/title":{"message":"Summarized Descriptions"},"project-descriptions/description":{"message":"Uses artificial intelligence to summarize project descriptions when you choose to, and shortens long descriptions down to important information, such as gameplay instructions."},"total-stats/title":{"message":"Total User Stats"},"total-stats/description":{"message":"Next to shared projects on a user's profile, displays the total loves, favorites and views that the user has received across all of their shared projects."},"project-miniplayer/title":{"message":"Project Miniplayer"},"project-miniplayer/description":{"message":"Scroll down on the project page and you will automatically see the project miniplayer."},"pin-comments/title":{"message":"Pin Project Comments"},"pin-comments/description":{"message":"Allows you to pin comments on your own projects and see what comments are pinned on other projects."},"download-project/title":{"message":"Download Projects"},"download-project/description":{"message":"Adds a button to project pages that allows you to download the project as an .sb3 file."},"blur-modal/title":{"message":"Blur Modal Backgrounds"},"blur-modal/description":{"message":"Blurs the backgrounds of modals instead of having a colored overlay."},"quick-search/title":{"message":"Quick Search"},"quick-search/description":{"message":"Easily jump between pages on the Scratch website with just the click of Control + K."},"favicon-messages/title":{"message":"Tab Message Count"},"favicon-messages/description":{"message":"Displays your message count in the tab favicon, the Scratch icon at the top of your tab."},"show-emoji-names/title":{"message":"Show Emoji Name"},"show-emoji-names/description":{"message":"Allows you to hover over Scratch emojis in the comments and view their names."},"more-block-themes/title":{"message":"More Block Themes"},"more-block-themes/description":{"message":"Adds additional themes for blocks in the code editor."},"more-key-inputs/title":{"message":"More Key Inputs"},"more-key-inputs/description":{"message":"Adds support for more keys on \"key pressed\" blocks."},"comment-tags/title":{"message":"Editor Comment Tags"},"comment-tags/description":{"message":"Add tags to editor comments to easily organize them."},"profile-flag/title":{"message":"Flag on Profile"},"profile-flag/description":{"message":"Adds flag emojis near selected locations on profile pages."},"follow-on-projects/title":{"message":"Follow on Project Page"},"follow-on-projects/description":{"message":"Follow users directly from the project page instead of going to their profile."},"dark-paint-editor/title":{"message":"Switch Paint Background"},"dark-paint-editor/description":{"message":"Adds a button next to the zoom controls in the paint editor that allows you to switch the background color of the paint editor between light and dark."},"specific-replies/title":{"message":"Specific Reply Messages"},"specific-replies/description":{"message":"In messages related to comments, specifies who a comment was replying to."},"better-trending-thumbnails/title":{"message":"Larger Thumbnails"},"better-trending-thumbnails/description":{"message":"Updates thumbnails on the trending and search pages to be larger and better fit the project/studio box."},"anti-generic/title":{"message":"Anti Generic"},"anti-generic/description":{"message":"On the explore and trending pages, this beta feature automatically hides repetitive projects, along with projects that it expects are generic. This includes projects with a lot of tags, common names, and project duplicates."},"wrap-lists/title":{"message":"Wrap List Items"},"wrap-lists/description":{"message":"Displays text in list items normally without cutting them off if they're too long."},"live-stats/title":{"message":"Live Stats"},"live-stats/description":{"message":"Updates the loves, favorites, remixes, and views on a project live, without having to reload to view the new counts."},"hide-scratch-news/title":{"message":"Hide Scratch News"},"hide-scratch-news/description":{"message":"Hides the Scratch News section on the homepage of the Scratch website."},"watch-later/title":{"message":"Save to Watch Later"},"watch-later/description":{"message":"Save projects you want to view later and they'll appear on a watch later page."},"remove-project-button/title":{"message":"Remove Project Button"},"remove-project-button/description":{"message":"Adds a button to projects in studios that allows you to easily remove it from the studio without opening the menu."},"right-side-flag/title":{"message":"Right Side Flag"},"right-side-flag/description":{"message":"Moves the green flag and the red stop sign to the right side of the stage."},"love-fave-animate/title":{"message":"Love Animations"},"love-fave-animate/description":{"message":"Animates the clicking of the love and favorite buttons on project pages."},"default-to-local/title":{"message":"Default to Local"},"default-to-local/description":{"message":"When creating a variable, sets the default to For This Sprite Only, rather than For All Sprites."},"start-stop-hotkeys/title":{"message":"Green Flag Hotkeys"},"start-stop-hotkeys/description":{"message":"Use Control + G to start or stop a project, depending on whether or not it is running."},"opacity-slider/title":{"message":"Opacity Slider"},"opacity-slider/description":{"message":"Change the opacity of objects in the paint editor."},"more-studios/title":{"message":"More Studios"},"more-studios/description":{"message":"Allows you to add projects to more studios instead of just 20."},"localized-explore/title":{"message":"Projects from Country"},"localized-explore/description":{"message":"On the explore page, makes projects from other countries less visible. This is to only show projects in languages that you understand."},"project-bar/title":{"message":"Project Bar"},"project-bar/description":{"message":"Continue to view the information for a project, even after you scroll down past the notes and credits."},"more-news/title":{"message":"More Scratch News"},"more-news/description":{"message":"On the main page, scroll through the Scratch News section and load more results."},"dumpster-fire/title":{"message":"Dumpster Fire"},"dumpster-fire/description":{"message":"The Scratch homepage is a liar with their \"Featured Projects\" section. This changes the name to the proper form, which is \"Dumpster Fire\"."},"steal-game/title":{"message":"Steal Game"},"steal-game/description":{"message":"Changes the remix button's text to 'Steal game'."},"statistics/title":{"message":"Statistics"},"statistics/description":{"message":"Adds a statistics button on the my stuff page that leads to your ScratchStats profile."},"echo-effect/title":{"message":"Echo Effect"},"echo-effect/description":{"message":"Adds the echo effect back to the Scratch sound editor."},"compact-buttons/title":{"message":"Compact Buttons"},"compact-buttons/description":{"message":"Buttons text gets removed and will get a new icon if it does not have one already."},"message-count/title":{"message":"Message Count"},"message-count/description":{"message":"Displays the user's message count on their profile next to the country."},"move-share-button/title":{"message":"Move Share Button"},"move-share-button/description":{"message":"On project pages, moves the share button next to the See Inside button."},"preview-textboxes/title":{"message":"Preview Textboxes"},"preview-textboxes/description":{"message":"Preview your profile About Me and What I'm Working On, and your projects' Instructions and Notes and Credits, so that you can see what it will look like to other users."},"more-tutorials/title":{"message":"More Tutorials"},"more-tutorials/description":{"message":"On the Ideas page, you can view additional tutorials from other Scratchers."},"simplify-action-buttons/title":{"message":"Simplify Action Buttons"},"simplify-action-buttons/description":{"message":"Displays project action buttons underneath Notes and Credits as their icons."},"slash-to-search/title":{"message":"Slash to Search"},"slash-to-search/description":{"message":"Click the slash key (/) to select the search bar and start typing."},"shared-clipboard/title":{"message":"Shared Clipboard"},"shared-clipboard/description":{"message":"Allows you to copy and paste items between paint editors in different projects."},"hide-footer/title":{"message":"Hide Footer"},"hide-footer/description":{"message":"The footer takes up a lot of unnecessary space. So hide it!"},"original-colors/title":{"message":"Revert to Blue"},"original-colors/description":{"message":"Changes all of the Scratch website's colors back to the original coloring from 3.0, before purple."},"simplify-editor-tabs/title":{"message":"Simplify Editor Tabs"},"simplify-editor-tabs/description":{"message":"Changes editor tabs to icon-only and shows them as a circle"},"live-character-counts/title":{"message":"Live Character Counts"},"live-character-counts/description":{"message":"On forum, studio, and project pages, displays the live character count for textboxes."},"advanced-search/title":{"message":"Search Profiles"},"advanced-search/description":{"message":"When you search for a user, a link to their profile will be at the top of the page."},"studio-links/title":{"message":"Studio Links as Titles"},"studio-links/description":{"message":"Replaces studio links with their titles, all across the Scratch website."},"block-studios/title":{"message":"Block Individual Studio Activity"},"block-studios/description":{"message":"Disable studio activity messages from specific studios."},"block-messages/title":{"message":"Block Users"},"block-messages/description":{"message":"Hide messages from users that you block. Other users won't see that you've blocked them."},"two-colors/title":{"message":"2.0 Block Colors"},"two-colors/description":{"message":"Replaces the colors of the blocks in the editor with the blocks from the 2.0 version of the code editor."},"project-links/title":{"message":"Project Links as Titles"},"project-links/description":{"message":"Replaces project links with their titles, all across the Scratch website."},"emoji-status/title":{"message":"Emoji Statuses"},"emoji-status/description":{"message":"Set the status on your profile to an emoji. Other ScratchTools users will be able to see this status."},"display-name/title":{"message":"Display Names"},"display-name/description":{"message":"Shows display names for Scratchers, and allows you to set your own display name. Display names show next to your username, and aren't limited like usernames are."},"isonline/title":{"message":"Show if User is Online"},"isonline/description":{"message":"On profile pages, displays if a user is online. This will also let other users see if you are online."},"plain-background/title":{"message":"Plain Background"},"plain-background/description":{"message":"Removes the dots from the background of the code editor."},"hide-advertisements/title":{"message":"Hide Ads in Comments"},"hide-advertisements/description":{"message":"Hides advertisements in the comments of profiles, projects, and studios. They can take up a lot of space in the comments."},"hide-block-category-names/title":{"message":"Hide Block Category Names"},"hide-block-category-names/description":{"message":"Changes the block categories in the editor to only show the colors of the categories."},"unlisted-projects/title":{"message":"Unlisted Projects"},"unlisted-projects/description":{"message":"Allows you to generate share links for unshared projects in the editor."},"stats-percentages/title":{"message":"Show Percentages for Project Stats"},"stats-percentages/description":{"message":"On the my stuff page, hover over the number of loves, favorites or remixes to view what percent of viewers performed the action."},"clone-counter/title":{"message":"Clone Counter"},"clone-counter/description":{"message":"Displays the total number of clones in the project above, in the stage header."},"colored-shadows/title":{"message":"Colored Shadows"},"colored-shadows/description":{"message":"Replaces the shadow created when you drag a block near another block with the color of the block that is being moved."},"creator-badge/title":{"message":"Author Badge"},"creator-badge/description":{"message":"Adds a badge next to comments written by the author of the project."},"original-buttons/title":{"message":"Original Buttons"},"original-buttons/description":{"message":"Returns the original love, favorite, remix, and view buttons to the Scratch project pages."},"box-shadows/title":{"message":"Content Box Shadows"},"box-shadows/description":{"message":"Adds shadows on all content boxes. When hovering one, the shadow will darken."},"admin-notifications/title":{"message":"Red Admin Message Indicator"},"admin-notifications/description":{"message":"If you have an admin notification from the Scratch Team, the message indicator in the navigation bar will display red instead of orange."},"nicknames/title":{"message":"Nicknames"},"nicknames/description":{"message":"Set nicknames for other Scratchers. Only you can see the nicknames, and their username will be replaced with the nickname when you see their name."},"load-more-forum-posts/title":{"message":"Load More Posts"},"load-more-forum-posts/description":{"message":"Load more posts in the forum without having to switch pages."},"scroll-project-titles/title":{"message":"Scroll Project Titles"},"scroll-project-titles/description":{"message":"Allows you to scroll and view the entire title of projects that you don't own."},"search-context-menus/title":{"message":"Search Context Menus"},"search-context-menus/description":{"message":"Type and search context menus to select an option efficiently. You can also press enter to select the top option."},"hover-user-cards/title":{"message":"User Hover Cards"},"hover-user-cards/description":{"message":"Hover over any username on the website to display the profile picture, username and follower count."},"exact-join-date/title":{"message":"Exact Join Date"},"exact-join-date/description":{"message":"Displays the exact time that a user joined, shown on their profile."},"upload-img-directly/title":{"message":"Direct Image Uploads"},"upload-img-directly/description":{"message":"Allows you to upload images to the Scratch forums for posts and signatures without having to use third party image uploading services."},"leave-studio/title":{"message":"Leave Studio Button"},"leave-studio/description":{"message":"Adds a button to the curators page of any studios you curate or manage that allows you to leave the studio. A confirmation shows first."},"frontpage-curator/title":{"message":"Frontpage Curator Name as Link"},"frontpage-curator/description":{"message":"Makes the name of the Frontpage Curator to a clickable link to his profile."},"minimized-remix-credits/title":{"message":"Minimized Remix Credits"},"minimized-remix-credits/description":{"message":"The remix credit boxes for projects take space from the project Instructions, so this makes the box smaller."},"follows-you/title":{"message":"Show if Following on Profile"},"follows-you/description":{"message":"If a user is following you, it will show next to their username when you visit their profile."},"custom-studio/title":{"message":"Custom Studio Section"},"custom-studio/description":{"message":"On the homepage of the Scratch website, the newest projects from the studio of your choice are displayed above the Featured Projects."},"highlight-unanswered/title":{"message":"Highlight Unanswered Forum Topics"},"highlight-unanswered/description":{"message":"Adds a blue highlight to topics in the forums that have no replies."},"search-assets/title":{"message":"Search Assets"},"search-assets/description":{"message":"Search through costume and sound assets in the editor."},"block-count-in-mystuff/title":{"message":"Block Count in My Stuff"},"block-count-in-mystuff/description":{"message":"Displays the block count for projects on the My Stuff page."},"pause-audio/title":{"message":"Pause Audio"},"pause-audio/description":{"message":"Allows you to pause and resume audio in the sound editor of Scratch projects."},"display-message-count-in-icon/title":{"message":"Display Message Count"},"display-message-count-in-icon/description":{"message":"Displays your current message count in the extension icon for ScratchTools."},"colored-context-menus/title":{"message":"Colored Context Menus"},"colored-context-menus/description":{"message":"Like in Scratch 2.0, colors the context menus based on the color of the block they're for."},"left-side-stage/title":{"message":"Stage on Left Side"},"left-side-stage/description":{"message":"Like in Scratch 2.0, moves the stage to the left side of the editor, rather than keeping it on the right."},"move-project-title-input/title":{"message":"Project Title Above Stage"},"move-project-title-input/description":{"message":"Like in Scratch 2.0, moves the project title input box above the stage, rather than in the navbar. This only applies to the editor."},"hide-disabled-menu-options/title":{"message":"Hide Disabled Context Menu Options"},"hide-disabled-menu-options/description":{"message":"Context menu options in the editor show even if they are disabled and unable to be used, so this feature will hide them if they are."},"follower-count/title":{"message":"Follower Count on Projects"},"follower-count/description":{"message":"Displays the follower count of the project creator on their projects."},"hide-studio-borders/title":{"message":"Hide Studio Frames"},"hide-studio-borders/description":{"message":"Removes the odd frames from around studio images on 2.0 pages."},"hide-textarea-labels/title":{"message":"Hide Project Instructions and Notes and Credits Labels"},"hide-textarea-labels/description":{"message":"The instructions and notes and credits labels take up quite a bit of space where there could be usual information. This removes them."},"default-to-trending/title":{"message":"Search Trending by Default"},"default-to-trending/description":{"message":"Currently, when you search projects on the Scratch website, you automatically search with the popular filter, instead of trending."},"infinite-backpack-scrolling/title":{"message":"Infinite Backpack Scrolling"},"infinite-backpack-scrolling/description":{"message":"Scroll through the backpack until you reach the very end (does take some time to load, but loads automatically)."},"hide-studio-messages/title":{"message":"Hide Studio Activity Messages"},"hide-studio-messages/description":{"message":"Hide the studio activity messages from the messages page- they pile up quickly and can get annoying."},"get-project-tags/title":{"message":"Display Project Tags"},"get-project-tags/description":{"message":"Lists all of the tags used in the project description right below the project notes and credits."},"link-to-propose/title":{"message":"Link Featured Projects to Studio"},"link-to-propose/description":{"message":"Links the Featured Projects box on the homepage to the Propose Projects to Be Featured studio."},"add-last-option-list/title":{"message":"Set List Item to Last"},"add-last-option-list/description":{"message":"Right click a 'get item [number] of [list]' to set it to select the very last item in the selected list."},"cloud-scratchers/title":{"message":"Online Scratchers in Multiplayer Game"},"cloud-scratchers/description":{"message":"On project pages, displays all of the Scratchers currently in that multiplayer game."},"editor-in-two/title":{"message":"2.0 Editor"},"editor-in-two/description":{"message":"Replaces the default 3.0 online project editor with the 2.0 editor. It's nostalgic, really."},"comment-on-closed-profile/title":{"message":"Comment On Profile With Comments Closed"},"comment-on-closed-profile/description":{"message":"If your profile comments are closed, you can now comment on your own profile anyways. Only you can comment on the profile."},"turbowarp-button-in-editor/title":{"message":"Open in TurboWarp from Editor"},"turbowarp-button-in-editor/description":{"message":"Adds a button to the editor so that you can instantly open the current project in TurboWarp."},"sprite-clones/title":{"message":"Sprite Clone Counter"},"sprite-clones/description":{"message":"Displays the clone count for each individual sprite."},"block-log/title":{"message":"Block Log"},"block-log/description":{"message":"Logs and displays all undo information for the block editor when you press ctrl+shift+l."},"scrollable-list-items/title":{"message":"Scrollable List Items"},"scrollable-list-items/description":{"message":"List items that have a value longer than the width of the list itself will get cut off. Now, you can scroll left and right through the list item."},"custom-fonts/title":{"message":"Custom Website Font"},"custom-fonts/description":{"message":"On the Scratch website, you can set the font to whatever font you want, as long as it is on the Google Fonts website. This is case-sensitive."},"project-timer/title":{"message":"Project Timer"},"project-timer/description":{"message":"Displays the amount of time (in seconds) that the project has been running for."},"colored-comments/title":{"message":"Colored Editor Comments"},"colored-comments/description":{"message":"Colors comments in the editor based on the color of their parent block."},"recently-viewed-projects/title":{"message":"Recently Viewed Projects"},"recently-viewed-projects/description":{"message":"Adds a tab to the My Stuff page where you can see a list of the projects that you have recently viewed."},"collapse-blocks/title":{"message":"Collapse Blocks"},"collapse-blocks/description":{"message":"Right-click block menus in the editor include a button that will let you collapse the selected block."},"set-featured-project/title":{"message":"Set Featured Project"},"set-featured-project/description":{"message":"On any project page, you can set your profile's featured project with the click of a button- even unshared projects."},"scratchformat/title":{"message":"ScratchFormat"},"scratchformat/description":{"message":"Format your comments with bold, italic, and more. The comments will be styled to everyone using ScratchTools."},"expand-editor/title":{"message":"Expand Editor"},"expand-editor/description":{"message":"Use the ctrl+e to switch between the default block editor view and one that hides the stage to expand editor itself."},"list-sprites/title":{"message":"Sprite List"},"list-sprites/description":{"message":"Replaces the sprite grid in the editor with a list that includes the block count and position of the sprite."},"check-if-trending/title":{"message":"Check if Trending"},"check-if-trending/description":{"message":"If a project you're viewing is on the trending page, the place on the trending page will be shown next to the share date on the project page."},"link-forum-activity/title":{"message":"Link Users in Forum Activity"},"link-forum-activity/description":{"message":"In the forums' last post section, makes the usernames link to the user's profile."},"remove-topic-and-post/title":{"message":"Hide Forum Category Counts"},"remove-topic-and-post/description":{"message":"Hides the forum homepage topic and post boxes."},"forum-homepage-emojis/title":{"message":"Forum Category Emojis"},"forum-homepage-emojis/description":{"message":"Adds colorful emojis on the forum homepage categories based on their topic."},"remove-collapse-buttons/title":{"message":"Hide Forum Collapse Buttons"},"remove-collapse-buttons/description":{"message":"Hides the collapse buttons on the forum main page."},"pin-projects/title":{"message":"Pin Projects to My Stuff"},"pin-projects/description":{"message":"Pin one of your projects to the top of your My Stuff page with the click of a button. You can unpin your pinned project or switch out your pinned project for another one as well."},"last-key-pressed/title":{"message":"Last Key Pressed"},"last-key-pressed/description":{"message":"On any project page and in the editor, you can view the last key that you have pressed while on that project, according to the project itself. This is good for games such as platformers."},"hide-signatures/title":{"message":"Hide Forum Signatures"},"hide-signatures/description":{"message":"Hides all forum signatures and signature dividers."},"twemoji-in-forums/title":{"message":"Better Forum Emojis"},"twemoji-in-forums/description":{"message":"Replaces the current low resolution forum emojis with high quality Twemojis."},"go-to-parent/title":{"message":"Go to Parent Button"},"go-to-parent/description":{"message":"In the editor for any project that is a remix, you can click a button to go to the editor in the parent project."},"most-popular-project/title":{"message":"Most Popular Project"},"most-popular-project/description":{"message":"Displays the most popular project (by views) of the user on profile pages. You can click on the project to view it."},"editor-dark-mode/title":{"message":"Editor Dark Mode"},"editor-dark-mode/description":{"message":"Switches the editor's light color scheme to a darker one."},"hide-studio-group-icon/title":{"message":"Hide Studio Group Icon"},"hide-studio-group-icon/description":{"message":"Hides the studio group icon, and only shows the studio thumbnail."},"colored-messages/title":{"message":"Colored Messages"},"colored-messages/description":{"message":"Colors your messages based on the type of message, such as loves, favorites, and studio invites."},"full-title/title":{"message":"Full Project Title"},"full-title/description":{"message":"On profile pages, hover over any project title to show the full title."},"fixed-box/title":{"message":"Fix Content Boxes"},"fixed-box/description":{"message":"Makes all sides of boxes on the pages rounded, rather than just the tops."},"user-bio/title":{"message":"User Bio on Hover"},"user-bio/description":{"message":"In profile comments, hover over any username to display the user's bio."},"nfe-project-checker/title":{"message":"NFE Project Checker"},"nfe-project-checker/description":{"message":"On project pages, displays whether the project is Safe, Unreviewed, or NSFE (Not Safe for Everyone)."},"sprite-data/title":{"message":"Display Sprite Data"},"sprite-data/description":{"message":"In the Code, Costumes, and Sounds tab for each sprite, the number of blocks, costumes, and sounds will be displayed for the current sprite."},"idea-generator/title":{"message":"Project Idea Generator"},"idea-generator/description":{"message":"On the Scratch Ideas page, there will be a section where you can generate project ideas if you need some."},"hide-stickies/title":{"message":"Hide Forum Stickies"},"hide-stickies/description":{"message":"Hides the basic stickies from the top of each forum topic."},"nfe-search/title":{"message":"NFE Search"},"nfe-search/description":{"message":"Use a button to search all projects, including NFE ones."},"open-in-new-tab/title":{"message":"Open in New Tab"},"open-in-new-tab/description":{"message":"Automatically opens links on project pages in a new tab."},"unbold-site-text/title":{"message":"Unbold Site Text"},"unbold-site-text/description":{"message":"Makes it so that all text across Scratch is unbolded, and just normal text."},"compact-navbar/title":{"message":"Compact Navbar"},"compact-navbar/description":{"message":"Makes more room on the navigation bar near where your profile dropdown is."},"delete-all/title":{"message":"Delete All Sprites"},"delete-all/description":{"message":"Adds an option in the right-click context menu for sprites. It will delete all sprites (after confirmation to make sure it isn't an accident)."},"round-profile-pictures/title":{"message":"Round Profile Pictures"},"round-profile-pictures/description":{"message":"All profile pictures on the Scratch website will be rounded."},"ocular-link/title":{"message":"Ocular Links in Forums"},"ocular-link/description":{"message":"Adds a link to any user's Ocular page right below their username on a post."},"forum-scratch-team/title":{"message":"Scratch Team Symbol in Forums"},"forum-scratch-team/description":{"message":"Next to the username of any Scratch Team member in the forums, an asterisk (*) is placed at the end of their username."},"remove-editor-icons/title":{"message":"Remove Editor Icons"},"remove-editor-icons/description":{"message":"Removes the icons from the tabs in the editor."},"sprite-watermark/title":{"message":"Remove Sprite Watermark"},"sprite-watermark/description":{"message":"Removes the sprite watermark that shows in the editor."},"compact-editor/title":{"message":"Compact Editor"},"compact-editor/description":{"message":"Makes sprite and backdrop information more compact."},"my-recent-projects/title":{"message":"Replace Scratch News with Recent Projects"},"my-recent-projects/description":{"message":"Replaces the Scratch News section on the homepage with your recently shared projects."},"focus-mode/title":{"message":"Focus Mode"},"focus-mode/description":{"message":"Removes the comments, studio and remix column, header, and footer on project pages when the button is clicked."}}
\ No newline at end of file
From e2909dc59e9dc33fd1bc97c04df6cf1c4e59b732 Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Mon, 26 Aug 2024 08:18:45 -0700
Subject: [PATCH 156/253] Add How-To video links
---
extras/icons/external.svg | 1 +
extras/popup/popup.css | 23 +++++++++++++++++++++++
extras/popup/popup.js | 17 +++++++++++++++++
extras/style.css | 20 ++++++++++++++++++++
features/asset-size/data.json | 5 ++++-
features/chomp-blocks/data.json | 5 ++++-
features/custom-explore/data.json | 5 ++++-
features/more-editor-fonts/data.json | 5 ++++-
features/rotate-gradient/data.json | 5 ++++-
9 files changed, 81 insertions(+), 5 deletions(-)
create mode 100644 extras/icons/external.svg
diff --git a/extras/icons/external.svg b/extras/icons/external.svg
new file mode 100644
index 00000000..445732ca
--- /dev/null
+++ b/extras/icons/external.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/extras/popup/popup.css b/extras/popup/popup.css
index a421c854..d55125c4 100644
--- a/extras/popup/popup.css
+++ b/extras/popup/popup.css
@@ -508,4 +508,27 @@ span.new-feature-tag.beta {
.option-selection span:last-child {
border-inline-end: none;
+}
+
+/* Support */
+
+.support-vid {
+ color: #ff9f00 !important;
+ opacity: .5;
+ cursor: pointer;
+ position: relative;
+ top: -.25rem;
+ margin-bottom: .25rem;
+ display: block;
+}
+
+.support-vid:hover {
+ opacity: 1;
+}
+
+.support-vid img {
+ height: 1rem;
+ margin-left: .25rem;
+ position: relative;
+ top: .3rem;
}
\ No newline at end of file
diff --git a/extras/popup/popup.js b/extras/popup/popup.js
index c32f55d2..f6c735ff 100644
--- a/extras/popup/popup.js
+++ b/extras/popup/popup.js
@@ -679,6 +679,23 @@ async function getFeatures() {
languageData[feature.id + "/description"]?.message || feature.description;
div.appendChild(p);
+ if (feature.support?.yt) {
+ let span = document.createElement("span")
+ span.textContent = "How-To Video"
+ span.className = "support-vid"
+ span.dataset.url = feature.support.yt
+ span.addEventListener("click", function() {
+ let url = this.dataset.url
+ chrome.tabs.create({
+ url,
+ })
+ })
+ span.appendChild(Object.assign(document.createElement("img"), {
+ src: "/extras/icons/external.svg"
+ }))
+ div.appendChild(span)
+ }
+
if (feature.options) {
for (var optionPlace in feature.options) {
var option = feature.options[optionPlace];
diff --git a/extras/style.css b/extras/style.css
index f1524756..5334565a 100644
--- a/extras/style.css
+++ b/extras/style.css
@@ -887,4 +887,24 @@ body {
.option-selection span:last-child {
border-inline-end: none;
+}
+/* Support */
+
+.support-vid {
+ color: #ff9f00 !important;
+ opacity: .5;
+ cursor: pointer;
+ position: relative;
+ top: -.25rem;
+}
+
+.support-vid:hover {
+ opacity: 1;
+}
+
+.support-vid img {
+ height: 1rem;
+ margin-left: .25rem;
+ position: relative;
+ top: .3rem;
}
\ No newline at end of file
diff --git a/features/asset-size/data.json b/features/asset-size/data.json
index ab88577f..3c919da9 100644
--- a/features/asset-size/data.json
+++ b/features/asset-size/data.json
@@ -9,6 +9,9 @@
],
"type": ["Editor"],
"dynamic": true,
- "scripts": [{ "file": "script.js", "runOn": "/projects/*" }]
+ "scripts": [{ "file": "script.js", "runOn": "/projects/*" }],
+ "support": {
+ "yt": "https://youtu.be/gpH3VJvDTkc"
+ }
}
\ No newline at end of file
diff --git a/features/chomp-blocks/data.json b/features/chomp-blocks/data.json
index a138facd..7a8ca42e 100644
--- a/features/chomp-blocks/data.json
+++ b/features/chomp-blocks/data.json
@@ -10,5 +10,8 @@
"tags": [],
"scripts": [{ "file": "script.js", "runOn": "/projects/*" }],
"dynamic": true,
- "type": ["Editor"]
+ "type": ["Editor"],
+ "support": {
+ "yt": "https://youtu.be/6sl-Q0ZYYyQ"
+ }
}
diff --git a/features/custom-explore/data.json b/features/custom-explore/data.json
index d3e37908..5d82a3f8 100644
--- a/features/custom-explore/data.json
+++ b/features/custom-explore/data.json
@@ -61,5 +61,8 @@
}
]
}
- ]
+ ],
+ "support": {
+ "yt": "https://youtu.be/QIWxCXrD2-M"
+ }
}
diff --git a/features/more-editor-fonts/data.json b/features/more-editor-fonts/data.json
index 86a9d203..d2d33fbd 100644
--- a/features/more-editor-fonts/data.json
+++ b/features/more-editor-fonts/data.json
@@ -12,5 +12,8 @@
"tags": ["New", "Featured"],
"scripts": [{ "file": "script.js", "runOn": "/projects/*" }],
"styles": [{ "file": "style.css", "runOn": "/projects/*" }],
- "resources": [{ "name": "more-text-icon", "path": "/text.svg" }]
+ "resources": [{ "name": "more-text-icon", "path": "/text.svg" }],
+ "support": {
+ "yt": "https://youtu.be/zh3zsjBcz_M"
+ }
}
diff --git a/features/rotate-gradient/data.json b/features/rotate-gradient/data.json
index 899bcaab..1edb09bc 100644
--- a/features/rotate-gradient/data.json
+++ b/features/rotate-gradient/data.json
@@ -10,5 +10,8 @@
"type": ["Editor"],
"dynamic": true,
"scripts": [{ "file": "script.js", "runOn": "/projects/*" }],
- "styles": [{ "file": "style.css", "runOn": "/projects/*" }]
+ "styles": [{ "file": "style.css", "runOn": "/projects/*" }],
+ "support": {
+ "yt": "https://youtu.be/5S032vWPvd0"
+ }
}
From d1bdb63ae2c50aba7ba1b9a48a49eb0d1f93344c Mon Sep 17 00:00:00 2001
From: "scratchtools-bot[bot]"
<123264640+scratchtools-bot[bot]@users.noreply.github.com>
Date: Tue, 27 Aug 2024 00:00:17 +0000
Subject: [PATCH 157/253] Updated file.
---
extras/feature-locales/en.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/feature-locales/en.json b/extras/feature-locales/en.json
index 12c05182..fddcf44e 100644
--- a/extras/feature-locales/en.json
+++ b/extras/feature-locales/en.json
@@ -1 +1 @@
-{"disable-cloud/title":{"message":"Disable Cloud"},"disable-cloud/description":{"message":"Allows you to disable cloud data on any project. This will still receive cloud data information, but will not send any."},"webp-uploads/title":{"message":"WEBP Image Uploads"},"webp-uploads/description":{"message":"Allows you to upload webp images in the editor for new sprites, costumes and stage backdrops."},"remaining-replies/title":{"message":"Remaining Replies"},"remaining-replies/description":{"message":"Shows how many more replies are allowed in a thread of studio comments."},"video-recorder/title":{"message":"Record Stage"},"video-recorder/description":{"message":"Allows you to record the stage for projects while in the editor or on the project page."},"studio-creation-date/title":{"message":"Studio Creation Date"},"studio-creation-date/description":{"message":"Adds the creation date of the studio to the studio footer."},"explore-filter/title":{"message":"Explore Filter"},"explore-filter/description":{"message":"Customize project and studio search results with filters on the Search, Explore, and Studio pages."},"better-featured-projects/title":{"message":"Better Featured Projects"},"better-featured-projects/description":{"message":"Replaces the Featured Projects section with featured projects curated by ScratchTools users. You can submit your own projects to be featured as well."},"align-to-center/title":{"message":"Align to Center"},"align-to-center/description":{"message":"Allows you to align text in Instructions and Notes & Credits boxes to the center of the input."},"more-editor-fonts/title":{"message":"More Paint Editor Fonts"},"more-editor-fonts/description":{"message":"Allows you to use dozens of extra fonts in the paint editor."},"upload-thumbnail/title":{"message":"Set Thumbnail"},"upload-thumbnail/description":{"message":"Allows you to upload an image or GIF as a project thumbnail, or set the thumbnail to the current stage."},"paint-align/title":{"message":"Align Objects in Paint Editor"},"paint-align/description":{"message":"Adds a button to the paint editor that allows you to align selected items."},"rotate-gradient/title":{"message":"Rotate Gradients"},"rotate-gradient/description":{"message":"Allows you to rotate gradients in any direction in the costume editor. Works in both the vector and bitmap editors."},"change-monitor-opacity/title":{"message":"Custom Monitor Opacity"},"change-monitor-opacity/description":{"message":"Set the opacity of variables and lists on the stage to a custom number."},"project-reactions/title":{"message":"Project Reactions"},"project-reactions/description":{"message":"Allows you to react to projects with different emojis."},"chomp-blocks/title":{"message":"Extend Wrapped C Blocks"},"chomp-blocks/description":{"message":"Automatically extends C blocks to wrap around blocks that it is being placed over when dragging."},"custom-explore/title":{"message":"Custom Explore Redirect"},"custom-explore/description":{"message":"Automatically redirect to a specific tab on the Explore page."},"stage-in-spritepane/title":{"message":"Stage In Sprite Pane"},"stage-in-spritepane/description":{"message":"Move the stage button to the sprite pane to widen the sprite field."},"better-cloud-history/title":{"message":"Better Cloud History"},"better-cloud-history/description":{"message":"Updates the cloud monitor page to a more modern version with more details. You can click on variable names to sort by that variable."},"sprite-layers/title":{"message":"View Sprite Layers"},"sprite-layers/description":{"message":"Allows you to hover over the show/hide toggle in the sprite properties panel of the editor to view the sprite layers."},"hide-project-tags/title":{"message":"Hide Project Tags"},"hide-project-tags/description":{"message":"Hides all linked tags in the Instructions/Notes and Credits of projects."},"snap-to-grid/title":{"message":"Snap Scripts to Grid"},"snap-to-grid/description":{"message":"Automatically aligns scripts to the dotted grid in the editor when placed."},"select-self/title":{"message":"Select Self"},"select-self/description":{"message":"Allows you to select the current sprite when opening sprite dropdowns, instead of only other sprites."},"sidebar/title":{"message":"Sidebar"},"sidebar/description":{"message":"Adds a sidebar to the Scratch website, rather than just the normal navigation bar at the top of the screen."},"project-version-detector/title":{"message":"Project Version Detector"},"project-version-detector/description":{"message":"Checks when a project was shared and adds a label next to the share date to indicate which version of Scratch was in use at that time."},"fullscreen-explorer/title":{"message":"Fullscreen Project Grids"},"fullscreen-explorer/description":{"message":"Find projects on the big screen by removing the left and right blanks on the Trends, Search, Remix pages."},"project-descriptions/title":{"message":"Summarized Descriptions"},"project-descriptions/description":{"message":"Uses artificial intelligence to summarize project descriptions when you choose to, and shortens long descriptions down to important information, such as gameplay instructions."},"total-stats/title":{"message":"Total User Stats"},"total-stats/description":{"message":"Next to shared projects on a user's profile, displays the total loves, favorites and views that the user has received across all of their shared projects."},"project-miniplayer/title":{"message":"Project Miniplayer"},"project-miniplayer/description":{"message":"Scroll down on the project page and you will automatically see the project miniplayer."},"pin-comments/title":{"message":"Pin Project Comments"},"pin-comments/description":{"message":"Allows you to pin comments on your own projects and see what comments are pinned on other projects."},"download-project/title":{"message":"Download Projects"},"download-project/description":{"message":"Adds a button to project pages that allows you to download the project as an .sb3 file."},"blur-modal/title":{"message":"Blur Modal Backgrounds"},"blur-modal/description":{"message":"Blurs the backgrounds of modals instead of having a colored overlay."},"quick-search/title":{"message":"Quick Search"},"quick-search/description":{"message":"Easily jump between pages on the Scratch website with just the click of Control + K."},"favicon-messages/title":{"message":"Tab Message Count"},"favicon-messages/description":{"message":"Displays your message count in the tab favicon, the Scratch icon at the top of your tab."},"show-emoji-names/title":{"message":"Show Emoji Name"},"show-emoji-names/description":{"message":"Allows you to hover over Scratch emojis in the comments and view their names."},"more-block-themes/title":{"message":"More Block Themes"},"more-block-themes/description":{"message":"Adds additional themes for blocks in the code editor."},"more-key-inputs/title":{"message":"More Key Inputs"},"more-key-inputs/description":{"message":"Adds support for more keys on \"key pressed\" blocks."},"comment-tags/title":{"message":"Editor Comment Tags"},"comment-tags/description":{"message":"Add tags to editor comments to easily organize them."},"profile-flag/title":{"message":"Flag on Profile"},"profile-flag/description":{"message":"Adds flag emojis near selected locations on profile pages."},"follow-on-projects/title":{"message":"Follow on Project Page"},"follow-on-projects/description":{"message":"Follow users directly from the project page instead of going to their profile."},"dark-paint-editor/title":{"message":"Switch Paint Background"},"dark-paint-editor/description":{"message":"Adds a button next to the zoom controls in the paint editor that allows you to switch the background color of the paint editor between light and dark."},"specific-replies/title":{"message":"Specific Reply Messages"},"specific-replies/description":{"message":"In messages related to comments, specifies who a comment was replying to."},"better-trending-thumbnails/title":{"message":"Larger Thumbnails"},"better-trending-thumbnails/description":{"message":"Updates thumbnails on the trending and search pages to be larger and better fit the project/studio box."},"anti-generic/title":{"message":"Anti Generic"},"anti-generic/description":{"message":"On the explore and trending pages, this beta feature automatically hides repetitive projects, along with projects that it expects are generic. This includes projects with a lot of tags, common names, and project duplicates."},"wrap-lists/title":{"message":"Wrap List Items"},"wrap-lists/description":{"message":"Displays text in list items normally without cutting them off if they're too long."},"live-stats/title":{"message":"Live Stats"},"live-stats/description":{"message":"Updates the loves, favorites, remixes, and views on a project live, without having to reload to view the new counts."},"hide-scratch-news/title":{"message":"Hide Scratch News"},"hide-scratch-news/description":{"message":"Hides the Scratch News section on the homepage of the Scratch website."},"watch-later/title":{"message":"Save to Watch Later"},"watch-later/description":{"message":"Save projects you want to view later and they'll appear on a watch later page."},"remove-project-button/title":{"message":"Remove Project Button"},"remove-project-button/description":{"message":"Adds a button to projects in studios that allows you to easily remove it from the studio without opening the menu."},"right-side-flag/title":{"message":"Right Side Flag"},"right-side-flag/description":{"message":"Moves the green flag and the red stop sign to the right side of the stage."},"love-fave-animate/title":{"message":"Love Animations"},"love-fave-animate/description":{"message":"Animates the clicking of the love and favorite buttons on project pages."},"default-to-local/title":{"message":"Default to Local"},"default-to-local/description":{"message":"When creating a variable, sets the default to For This Sprite Only, rather than For All Sprites."},"start-stop-hotkeys/title":{"message":"Green Flag Hotkeys"},"start-stop-hotkeys/description":{"message":"Use Control + G to start or stop a project, depending on whether or not it is running."},"opacity-slider/title":{"message":"Opacity Slider"},"opacity-slider/description":{"message":"Change the opacity of objects in the paint editor."},"more-studios/title":{"message":"More Studios"},"more-studios/description":{"message":"Allows you to add projects to more studios instead of just 20."},"localized-explore/title":{"message":"Projects from Country"},"localized-explore/description":{"message":"On the explore page, makes projects from other countries less visible. This is to only show projects in languages that you understand."},"project-bar/title":{"message":"Project Bar"},"project-bar/description":{"message":"Continue to view the information for a project, even after you scroll down past the notes and credits."},"more-news/title":{"message":"More Scratch News"},"more-news/description":{"message":"On the main page, scroll through the Scratch News section and load more results."},"dumpster-fire/title":{"message":"Dumpster Fire"},"dumpster-fire/description":{"message":"The Scratch homepage is a liar with their \"Featured Projects\" section. This changes the name to the proper form, which is \"Dumpster Fire\"."},"steal-game/title":{"message":"Steal Game"},"steal-game/description":{"message":"Changes the remix button's text to 'Steal game'."},"statistics/title":{"message":"Statistics"},"statistics/description":{"message":"Adds a statistics button on the my stuff page that leads to your ScratchStats profile."},"echo-effect/title":{"message":"Echo Effect"},"echo-effect/description":{"message":"Adds the echo effect back to the Scratch sound editor."},"compact-buttons/title":{"message":"Compact Buttons"},"compact-buttons/description":{"message":"Buttons text gets removed and will get a new icon if it does not have one already."},"message-count/title":{"message":"Message Count"},"message-count/description":{"message":"Displays the user's message count on their profile next to the country."},"move-share-button/title":{"message":"Move Share Button"},"move-share-button/description":{"message":"On project pages, moves the share button next to the See Inside button."},"preview-textboxes/title":{"message":"Preview Textboxes"},"preview-textboxes/description":{"message":"Preview your profile About Me and What I'm Working On, and your projects' Instructions and Notes and Credits, so that you can see what it will look like to other users."},"more-tutorials/title":{"message":"More Tutorials"},"more-tutorials/description":{"message":"On the Ideas page, you can view additional tutorials from other Scratchers."},"simplify-action-buttons/title":{"message":"Simplify Action Buttons"},"simplify-action-buttons/description":{"message":"Displays project action buttons underneath Notes and Credits as their icons."},"slash-to-search/title":{"message":"Slash to Search"},"slash-to-search/description":{"message":"Click the slash key (/) to select the search bar and start typing."},"shared-clipboard/title":{"message":"Shared Clipboard"},"shared-clipboard/description":{"message":"Allows you to copy and paste items between paint editors in different projects."},"hide-footer/title":{"message":"Hide Footer"},"hide-footer/description":{"message":"The footer takes up a lot of unnecessary space. So hide it!"},"original-colors/title":{"message":"Revert to Blue"},"original-colors/description":{"message":"Changes all of the Scratch website's colors back to the original coloring from 3.0, before purple."},"simplify-editor-tabs/title":{"message":"Simplify Editor Tabs"},"simplify-editor-tabs/description":{"message":"Changes editor tabs to icon-only and shows them as a circle"},"live-character-counts/title":{"message":"Live Character Counts"},"live-character-counts/description":{"message":"On forum, studio, and project pages, displays the live character count for textboxes."},"advanced-search/title":{"message":"Search Profiles"},"advanced-search/description":{"message":"When you search for a user, a link to their profile will be at the top of the page."},"studio-links/title":{"message":"Studio Links as Titles"},"studio-links/description":{"message":"Replaces studio links with their titles, all across the Scratch website."},"block-studios/title":{"message":"Block Individual Studio Activity"},"block-studios/description":{"message":"Disable studio activity messages from specific studios."},"block-messages/title":{"message":"Block Users"},"block-messages/description":{"message":"Hide messages from users that you block. Other users won't see that you've blocked them."},"two-colors/title":{"message":"2.0 Block Colors"},"two-colors/description":{"message":"Replaces the colors of the blocks in the editor with the blocks from the 2.0 version of the code editor."},"project-links/title":{"message":"Project Links as Titles"},"project-links/description":{"message":"Replaces project links with their titles, all across the Scratch website."},"emoji-status/title":{"message":"Emoji Statuses"},"emoji-status/description":{"message":"Set the status on your profile to an emoji. Other ScratchTools users will be able to see this status."},"display-name/title":{"message":"Display Names"},"display-name/description":{"message":"Shows display names for Scratchers, and allows you to set your own display name. Display names show next to your username, and aren't limited like usernames are."},"isonline/title":{"message":"Show if User is Online"},"isonline/description":{"message":"On profile pages, displays if a user is online. This will also let other users see if you are online."},"plain-background/title":{"message":"Plain Background"},"plain-background/description":{"message":"Removes the dots from the background of the code editor."},"hide-advertisements/title":{"message":"Hide Ads in Comments"},"hide-advertisements/description":{"message":"Hides advertisements in the comments of profiles, projects, and studios. They can take up a lot of space in the comments."},"hide-block-category-names/title":{"message":"Hide Block Category Names"},"hide-block-category-names/description":{"message":"Changes the block categories in the editor to only show the colors of the categories."},"unlisted-projects/title":{"message":"Unlisted Projects"},"unlisted-projects/description":{"message":"Allows you to generate share links for unshared projects in the editor."},"stats-percentages/title":{"message":"Show Percentages for Project Stats"},"stats-percentages/description":{"message":"On the my stuff page, hover over the number of loves, favorites or remixes to view what percent of viewers performed the action."},"clone-counter/title":{"message":"Clone Counter"},"clone-counter/description":{"message":"Displays the total number of clones in the project above, in the stage header."},"colored-shadows/title":{"message":"Colored Shadows"},"colored-shadows/description":{"message":"Replaces the shadow created when you drag a block near another block with the color of the block that is being moved."},"creator-badge/title":{"message":"Author Badge"},"creator-badge/description":{"message":"Adds a badge next to comments written by the author of the project."},"original-buttons/title":{"message":"Original Buttons"},"original-buttons/description":{"message":"Returns the original love, favorite, remix, and view buttons to the Scratch project pages."},"box-shadows/title":{"message":"Content Box Shadows"},"box-shadows/description":{"message":"Adds shadows on all content boxes. When hovering one, the shadow will darken."},"admin-notifications/title":{"message":"Red Admin Message Indicator"},"admin-notifications/description":{"message":"If you have an admin notification from the Scratch Team, the message indicator in the navigation bar will display red instead of orange."},"nicknames/title":{"message":"Nicknames"},"nicknames/description":{"message":"Set nicknames for other Scratchers. Only you can see the nicknames, and their username will be replaced with the nickname when you see their name."},"load-more-forum-posts/title":{"message":"Load More Posts"},"load-more-forum-posts/description":{"message":"Load more posts in the forum without having to switch pages."},"scroll-project-titles/title":{"message":"Scroll Project Titles"},"scroll-project-titles/description":{"message":"Allows you to scroll and view the entire title of projects that you don't own."},"search-context-menus/title":{"message":"Search Context Menus"},"search-context-menus/description":{"message":"Type and search context menus to select an option efficiently. You can also press enter to select the top option."},"hover-user-cards/title":{"message":"User Hover Cards"},"hover-user-cards/description":{"message":"Hover over any username on the website to display the profile picture, username and follower count."},"exact-join-date/title":{"message":"Exact Join Date"},"exact-join-date/description":{"message":"Displays the exact time that a user joined, shown on their profile."},"upload-img-directly/title":{"message":"Direct Image Uploads"},"upload-img-directly/description":{"message":"Allows you to upload images to the Scratch forums for posts and signatures without having to use third party image uploading services."},"leave-studio/title":{"message":"Leave Studio Button"},"leave-studio/description":{"message":"Adds a button to the curators page of any studios you curate or manage that allows you to leave the studio. A confirmation shows first."},"frontpage-curator/title":{"message":"Frontpage Curator Name as Link"},"frontpage-curator/description":{"message":"Makes the name of the Frontpage Curator to a clickable link to his profile."},"minimized-remix-credits/title":{"message":"Minimized Remix Credits"},"minimized-remix-credits/description":{"message":"The remix credit boxes for projects take space from the project Instructions, so this makes the box smaller."},"follows-you/title":{"message":"Show if Following on Profile"},"follows-you/description":{"message":"If a user is following you, it will show next to their username when you visit their profile."},"custom-studio/title":{"message":"Custom Studio Section"},"custom-studio/description":{"message":"On the homepage of the Scratch website, the newest projects from the studio of your choice are displayed above the Featured Projects."},"highlight-unanswered/title":{"message":"Highlight Unanswered Forum Topics"},"highlight-unanswered/description":{"message":"Adds a blue highlight to topics in the forums that have no replies."},"search-assets/title":{"message":"Search Assets"},"search-assets/description":{"message":"Search through costume and sound assets in the editor."},"block-count-in-mystuff/title":{"message":"Block Count in My Stuff"},"block-count-in-mystuff/description":{"message":"Displays the block count for projects on the My Stuff page."},"pause-audio/title":{"message":"Pause Audio"},"pause-audio/description":{"message":"Allows you to pause and resume audio in the sound editor of Scratch projects."},"display-message-count-in-icon/title":{"message":"Display Message Count"},"display-message-count-in-icon/description":{"message":"Displays your current message count in the extension icon for ScratchTools."},"colored-context-menus/title":{"message":"Colored Context Menus"},"colored-context-menus/description":{"message":"Like in Scratch 2.0, colors the context menus based on the color of the block they're for."},"left-side-stage/title":{"message":"Stage on Left Side"},"left-side-stage/description":{"message":"Like in Scratch 2.0, moves the stage to the left side of the editor, rather than keeping it on the right."},"move-project-title-input/title":{"message":"Project Title Above Stage"},"move-project-title-input/description":{"message":"Like in Scratch 2.0, moves the project title input box above the stage, rather than in the navbar. This only applies to the editor."},"hide-disabled-menu-options/title":{"message":"Hide Disabled Context Menu Options"},"hide-disabled-menu-options/description":{"message":"Context menu options in the editor show even if they are disabled and unable to be used, so this feature will hide them if they are."},"follower-count/title":{"message":"Follower Count on Projects"},"follower-count/description":{"message":"Displays the follower count of the project creator on their projects."},"hide-studio-borders/title":{"message":"Hide Studio Frames"},"hide-studio-borders/description":{"message":"Removes the odd frames from around studio images on 2.0 pages."},"hide-textarea-labels/title":{"message":"Hide Project Instructions and Notes and Credits Labels"},"hide-textarea-labels/description":{"message":"The instructions and notes and credits labels take up quite a bit of space where there could be usual information. This removes them."},"default-to-trending/title":{"message":"Search Trending by Default"},"default-to-trending/description":{"message":"Currently, when you search projects on the Scratch website, you automatically search with the popular filter, instead of trending."},"infinite-backpack-scrolling/title":{"message":"Infinite Backpack Scrolling"},"infinite-backpack-scrolling/description":{"message":"Scroll through the backpack until you reach the very end (does take some time to load, but loads automatically)."},"hide-studio-messages/title":{"message":"Hide Studio Activity Messages"},"hide-studio-messages/description":{"message":"Hide the studio activity messages from the messages page- they pile up quickly and can get annoying."},"get-project-tags/title":{"message":"Display Project Tags"},"get-project-tags/description":{"message":"Lists all of the tags used in the project description right below the project notes and credits."},"link-to-propose/title":{"message":"Link Featured Projects to Studio"},"link-to-propose/description":{"message":"Links the Featured Projects box on the homepage to the Propose Projects to Be Featured studio."},"add-last-option-list/title":{"message":"Set List Item to Last"},"add-last-option-list/description":{"message":"Right click a 'get item [number] of [list]' to set it to select the very last item in the selected list."},"cloud-scratchers/title":{"message":"Online Scratchers in Multiplayer Game"},"cloud-scratchers/description":{"message":"On project pages, displays all of the Scratchers currently in that multiplayer game."},"editor-in-two/title":{"message":"2.0 Editor"},"editor-in-two/description":{"message":"Replaces the default 3.0 online project editor with the 2.0 editor. It's nostalgic, really."},"comment-on-closed-profile/title":{"message":"Comment On Profile With Comments Closed"},"comment-on-closed-profile/description":{"message":"If your profile comments are closed, you can now comment on your own profile anyways. Only you can comment on the profile."},"turbowarp-button-in-editor/title":{"message":"Open in TurboWarp from Editor"},"turbowarp-button-in-editor/description":{"message":"Adds a button to the editor so that you can instantly open the current project in TurboWarp."},"sprite-clones/title":{"message":"Sprite Clone Counter"},"sprite-clones/description":{"message":"Displays the clone count for each individual sprite."},"block-log/title":{"message":"Block Log"},"block-log/description":{"message":"Logs and displays all undo information for the block editor when you press ctrl+shift+l."},"scrollable-list-items/title":{"message":"Scrollable List Items"},"scrollable-list-items/description":{"message":"List items that have a value longer than the width of the list itself will get cut off. Now, you can scroll left and right through the list item."},"custom-fonts/title":{"message":"Custom Website Font"},"custom-fonts/description":{"message":"On the Scratch website, you can set the font to whatever font you want, as long as it is on the Google Fonts website. This is case-sensitive."},"project-timer/title":{"message":"Project Timer"},"project-timer/description":{"message":"Displays the amount of time (in seconds) that the project has been running for."},"colored-comments/title":{"message":"Colored Editor Comments"},"colored-comments/description":{"message":"Colors comments in the editor based on the color of their parent block."},"recently-viewed-projects/title":{"message":"Recently Viewed Projects"},"recently-viewed-projects/description":{"message":"Adds a tab to the My Stuff page where you can see a list of the projects that you have recently viewed."},"collapse-blocks/title":{"message":"Collapse Blocks"},"collapse-blocks/description":{"message":"Right-click block menus in the editor include a button that will let you collapse the selected block."},"set-featured-project/title":{"message":"Set Featured Project"},"set-featured-project/description":{"message":"On any project page, you can set your profile's featured project with the click of a button- even unshared projects."},"scratchformat/title":{"message":"ScratchFormat"},"scratchformat/description":{"message":"Format your comments with bold, italic, and more. The comments will be styled to everyone using ScratchTools."},"expand-editor/title":{"message":"Expand Editor"},"expand-editor/description":{"message":"Use the ctrl+e to switch between the default block editor view and one that hides the stage to expand editor itself."},"list-sprites/title":{"message":"Sprite List"},"list-sprites/description":{"message":"Replaces the sprite grid in the editor with a list that includes the block count and position of the sprite."},"check-if-trending/title":{"message":"Check if Trending"},"check-if-trending/description":{"message":"If a project you're viewing is on the trending page, the place on the trending page will be shown next to the share date on the project page."},"link-forum-activity/title":{"message":"Link Users in Forum Activity"},"link-forum-activity/description":{"message":"In the forums' last post section, makes the usernames link to the user's profile."},"remove-topic-and-post/title":{"message":"Hide Forum Category Counts"},"remove-topic-and-post/description":{"message":"Hides the forum homepage topic and post boxes."},"forum-homepage-emojis/title":{"message":"Forum Category Emojis"},"forum-homepage-emojis/description":{"message":"Adds colorful emojis on the forum homepage categories based on their topic."},"remove-collapse-buttons/title":{"message":"Hide Forum Collapse Buttons"},"remove-collapse-buttons/description":{"message":"Hides the collapse buttons on the forum main page."},"pin-projects/title":{"message":"Pin Projects to My Stuff"},"pin-projects/description":{"message":"Pin one of your projects to the top of your My Stuff page with the click of a button. You can unpin your pinned project or switch out your pinned project for another one as well."},"last-key-pressed/title":{"message":"Last Key Pressed"},"last-key-pressed/description":{"message":"On any project page and in the editor, you can view the last key that you have pressed while on that project, according to the project itself. This is good for games such as platformers."},"hide-signatures/title":{"message":"Hide Forum Signatures"},"hide-signatures/description":{"message":"Hides all forum signatures and signature dividers."},"twemoji-in-forums/title":{"message":"Better Forum Emojis"},"twemoji-in-forums/description":{"message":"Replaces the current low resolution forum emojis with high quality Twemojis."},"go-to-parent/title":{"message":"Go to Parent Button"},"go-to-parent/description":{"message":"In the editor for any project that is a remix, you can click a button to go to the editor in the parent project."},"most-popular-project/title":{"message":"Most Popular Project"},"most-popular-project/description":{"message":"Displays the most popular project (by views) of the user on profile pages. You can click on the project to view it."},"editor-dark-mode/title":{"message":"Editor Dark Mode"},"editor-dark-mode/description":{"message":"Switches the editor's light color scheme to a darker one."},"hide-studio-group-icon/title":{"message":"Hide Studio Group Icon"},"hide-studio-group-icon/description":{"message":"Hides the studio group icon, and only shows the studio thumbnail."},"colored-messages/title":{"message":"Colored Messages"},"colored-messages/description":{"message":"Colors your messages based on the type of message, such as loves, favorites, and studio invites."},"full-title/title":{"message":"Full Project Title"},"full-title/description":{"message":"On profile pages, hover over any project title to show the full title."},"fixed-box/title":{"message":"Fix Content Boxes"},"fixed-box/description":{"message":"Makes all sides of boxes on the pages rounded, rather than just the tops."},"user-bio/title":{"message":"User Bio on Hover"},"user-bio/description":{"message":"In profile comments, hover over any username to display the user's bio."},"nfe-project-checker/title":{"message":"NFE Project Checker"},"nfe-project-checker/description":{"message":"On project pages, displays whether the project is Safe, Unreviewed, or NSFE (Not Safe for Everyone)."},"sprite-data/title":{"message":"Display Sprite Data"},"sprite-data/description":{"message":"In the Code, Costumes, and Sounds tab for each sprite, the number of blocks, costumes, and sounds will be displayed for the current sprite."},"idea-generator/title":{"message":"Project Idea Generator"},"idea-generator/description":{"message":"On the Scratch Ideas page, there will be a section where you can generate project ideas if you need some."},"hide-stickies/title":{"message":"Hide Forum Stickies"},"hide-stickies/description":{"message":"Hides the basic stickies from the top of each forum topic."},"nfe-search/title":{"message":"NFE Search"},"nfe-search/description":{"message":"Use a button to search all projects, including NFE ones."},"open-in-new-tab/title":{"message":"Open in New Tab"},"open-in-new-tab/description":{"message":"Automatically opens links on project pages in a new tab."},"unbold-site-text/title":{"message":"Unbold Site Text"},"unbold-site-text/description":{"message":"Makes it so that all text across Scratch is unbolded, and just normal text."},"compact-navbar/title":{"message":"Compact Navbar"},"compact-navbar/description":{"message":"Makes more room on the navigation bar near where your profile dropdown is."},"delete-all/title":{"message":"Delete All Sprites"},"delete-all/description":{"message":"Adds an option in the right-click context menu for sprites. It will delete all sprites (after confirmation to make sure it isn't an accident)."},"round-profile-pictures/title":{"message":"Round Profile Pictures"},"round-profile-pictures/description":{"message":"All profile pictures on the Scratch website will be rounded."},"ocular-link/title":{"message":"Ocular Links in Forums"},"ocular-link/description":{"message":"Adds a link to any user's Ocular page right below their username on a post."},"forum-scratch-team/title":{"message":"Scratch Team Symbol in Forums"},"forum-scratch-team/description":{"message":"Next to the username of any Scratch Team member in the forums, an asterisk (*) is placed at the end of their username."},"remove-editor-icons/title":{"message":"Remove Editor Icons"},"remove-editor-icons/description":{"message":"Removes the icons from the tabs in the editor."},"sprite-watermark/title":{"message":"Remove Sprite Watermark"},"sprite-watermark/description":{"message":"Removes the sprite watermark that shows in the editor."},"compact-editor/title":{"message":"Compact Editor"},"compact-editor/description":{"message":"Makes sprite and backdrop information more compact."},"my-recent-projects/title":{"message":"Replace Scratch News with Recent Projects"},"my-recent-projects/description":{"message":"Replaces the Scratch News section on the homepage with your recently shared projects."},"focus-mode/title":{"message":"Focus Mode"},"focus-mode/description":{"message":"Removes the comments, studio and remix column, header, and footer on project pages when the button is clicked."}}
\ No newline at end of file
+{"asset-size/title":{"message":"Asset Size"},"asset-size/description":{"message":"Allows you to hover over any asset (costumes and sounds) in the editor to view the file size."},"disable-cloud/title":{"message":"Disable Cloud"},"disable-cloud/description":{"message":"Allows you to disable cloud data on any project. This will still receive cloud data information, but will not send any."},"webp-uploads/title":{"message":"WEBP Image Uploads"},"webp-uploads/description":{"message":"Allows you to upload webp images in the editor for new sprites, costumes and stage backdrops."},"remaining-replies/title":{"message":"Remaining Replies"},"remaining-replies/description":{"message":"Shows how many more replies are allowed in a thread of studio comments."},"video-recorder/title":{"message":"Record Stage"},"video-recorder/description":{"message":"Allows you to record the stage for projects while in the editor or on the project page."},"studio-creation-date/title":{"message":"Studio Creation Date"},"studio-creation-date/description":{"message":"Adds the creation date of the studio to the studio footer."},"explore-filter/title":{"message":"Explore Filter"},"explore-filter/description":{"message":"Customize project and studio search results with filters on the Search, Explore, and Studio pages."},"better-featured-projects/title":{"message":"Better Featured Projects"},"better-featured-projects/description":{"message":"Replaces the Featured Projects section with featured projects curated by ScratchTools users. You can submit your own projects to be featured as well."},"align-to-center/title":{"message":"Align to Center"},"align-to-center/description":{"message":"Allows you to align text in Instructions and Notes & Credits boxes to the center of the input."},"more-editor-fonts/title":{"message":"More Paint Editor Fonts"},"more-editor-fonts/description":{"message":"Allows you to use dozens of extra fonts in the paint editor."},"upload-thumbnail/title":{"message":"Set Thumbnail"},"upload-thumbnail/description":{"message":"Allows you to upload an image or GIF as a project thumbnail, or set the thumbnail to the current stage."},"paint-align/title":{"message":"Align Objects in Paint Editor"},"paint-align/description":{"message":"Adds a button to the paint editor that allows you to align selected items."},"rotate-gradient/title":{"message":"Rotate Gradients"},"rotate-gradient/description":{"message":"Allows you to rotate gradients in any direction in the costume editor. Works in both the vector and bitmap editors."},"change-monitor-opacity/title":{"message":"Custom Monitor Opacity"},"change-monitor-opacity/description":{"message":"Set the opacity of variables and lists on the stage to a custom number."},"project-reactions/title":{"message":"Project Reactions"},"project-reactions/description":{"message":"Allows you to react to projects with different emojis."},"chomp-blocks/title":{"message":"Extend Wrapped C Blocks"},"chomp-blocks/description":{"message":"Automatically extends C blocks to wrap around blocks that it is being placed over when dragging."},"custom-explore/title":{"message":"Custom Explore Redirect"},"custom-explore/description":{"message":"Automatically redirect to a specific tab on the Explore page."},"stage-in-spritepane/title":{"message":"Stage In Sprite Pane"},"stage-in-spritepane/description":{"message":"Move the stage button to the sprite pane to widen the sprite field."},"better-cloud-history/title":{"message":"Better Cloud History"},"better-cloud-history/description":{"message":"Updates the cloud monitor page to a more modern version with more details. You can click on variable names to sort by that variable."},"sprite-layers/title":{"message":"View Sprite Layers"},"sprite-layers/description":{"message":"Allows you to hover over the show/hide toggle in the sprite properties panel of the editor to view the sprite layers."},"hide-project-tags/title":{"message":"Hide Project Tags"},"hide-project-tags/description":{"message":"Hides all linked tags in the Instructions/Notes and Credits of projects."},"snap-to-grid/title":{"message":"Snap Scripts to Grid"},"snap-to-grid/description":{"message":"Automatically aligns scripts to the dotted grid in the editor when placed."},"select-self/title":{"message":"Select Self"},"select-self/description":{"message":"Allows you to select the current sprite when opening sprite dropdowns, instead of only other sprites."},"sidebar/title":{"message":"Sidebar"},"sidebar/description":{"message":"Adds a sidebar to the Scratch website, rather than just the normal navigation bar at the top of the screen."},"project-version-detector/title":{"message":"Project Version Detector"},"project-version-detector/description":{"message":"Checks when a project was shared and adds a label next to the share date to indicate which version of Scratch was in use at that time."},"fullscreen-explorer/title":{"message":"Fullscreen Project Grids"},"fullscreen-explorer/description":{"message":"Find projects on the big screen by removing the left and right blanks on the Trends, Search, Remix pages."},"project-descriptions/title":{"message":"Summarized Descriptions"},"project-descriptions/description":{"message":"Uses artificial intelligence to summarize project descriptions when you choose to, and shortens long descriptions down to important information, such as gameplay instructions."},"total-stats/title":{"message":"Total User Stats"},"total-stats/description":{"message":"Next to shared projects on a user's profile, displays the total loves, favorites and views that the user has received across all of their shared projects."},"project-miniplayer/title":{"message":"Project Miniplayer"},"project-miniplayer/description":{"message":"Scroll down on the project page and you will automatically see the project miniplayer."},"pin-comments/title":{"message":"Pin Project Comments"},"pin-comments/description":{"message":"Allows you to pin comments on your own projects and see what comments are pinned on other projects."},"download-project/title":{"message":"Download Projects"},"download-project/description":{"message":"Adds a button to project pages that allows you to download the project as an .sb3 file."},"blur-modal/title":{"message":"Blur Modal Backgrounds"},"blur-modal/description":{"message":"Blurs the backgrounds of modals instead of having a colored overlay."},"quick-search/title":{"message":"Quick Search"},"quick-search/description":{"message":"Easily jump between pages on the Scratch website with just the click of Control + K."},"favicon-messages/title":{"message":"Tab Message Count"},"favicon-messages/description":{"message":"Displays your message count in the tab favicon, the Scratch icon at the top of your tab."},"show-emoji-names/title":{"message":"Show Emoji Name"},"show-emoji-names/description":{"message":"Allows you to hover over Scratch emojis in the comments and view their names."},"more-block-themes/title":{"message":"More Block Themes"},"more-block-themes/description":{"message":"Adds additional themes for blocks in the code editor."},"more-key-inputs/title":{"message":"More Key Inputs"},"more-key-inputs/description":{"message":"Adds support for more keys on \"key pressed\" blocks."},"comment-tags/title":{"message":"Editor Comment Tags"},"comment-tags/description":{"message":"Add tags to editor comments to easily organize them."},"profile-flag/title":{"message":"Flag on Profile"},"profile-flag/description":{"message":"Adds flag emojis near selected locations on profile pages."},"follow-on-projects/title":{"message":"Follow on Project Page"},"follow-on-projects/description":{"message":"Follow users directly from the project page instead of going to their profile."},"dark-paint-editor/title":{"message":"Switch Paint Background"},"dark-paint-editor/description":{"message":"Adds a button next to the zoom controls in the paint editor that allows you to switch the background color of the paint editor between light and dark."},"specific-replies/title":{"message":"Specific Reply Messages"},"specific-replies/description":{"message":"In messages related to comments, specifies who a comment was replying to."},"better-trending-thumbnails/title":{"message":"Larger Thumbnails"},"better-trending-thumbnails/description":{"message":"Updates thumbnails on the trending and search pages to be larger and better fit the project/studio box."},"anti-generic/title":{"message":"Anti Generic"},"anti-generic/description":{"message":"On the explore and trending pages, this beta feature automatically hides repetitive projects, along with projects that it expects are generic. This includes projects with a lot of tags, common names, and project duplicates."},"wrap-lists/title":{"message":"Wrap List Items"},"wrap-lists/description":{"message":"Displays text in list items normally without cutting them off if they're too long."},"live-stats/title":{"message":"Live Stats"},"live-stats/description":{"message":"Updates the loves, favorites, remixes, and views on a project live, without having to reload to view the new counts."},"hide-scratch-news/title":{"message":"Hide Scratch News"},"hide-scratch-news/description":{"message":"Hides the Scratch News section on the homepage of the Scratch website."},"watch-later/title":{"message":"Save to Watch Later"},"watch-later/description":{"message":"Save projects you want to view later and they'll appear on a watch later page."},"remove-project-button/title":{"message":"Remove Project Button"},"remove-project-button/description":{"message":"Adds a button to projects in studios that allows you to easily remove it from the studio without opening the menu."},"right-side-flag/title":{"message":"Right Side Flag"},"right-side-flag/description":{"message":"Moves the green flag and the red stop sign to the right side of the stage."},"love-fave-animate/title":{"message":"Love Animations"},"love-fave-animate/description":{"message":"Animates the clicking of the love and favorite buttons on project pages."},"default-to-local/title":{"message":"Default to Local"},"default-to-local/description":{"message":"When creating a variable, sets the default to For This Sprite Only, rather than For All Sprites."},"start-stop-hotkeys/title":{"message":"Green Flag Hotkeys"},"start-stop-hotkeys/description":{"message":"Use Control + G to start or stop a project, depending on whether or not it is running."},"opacity-slider/title":{"message":"Opacity Slider"},"opacity-slider/description":{"message":"Change the opacity of objects in the paint editor."},"more-studios/title":{"message":"More Studios"},"more-studios/description":{"message":"Allows you to add projects to more studios instead of just 20."},"localized-explore/title":{"message":"Projects from Country"},"localized-explore/description":{"message":"On the explore page, makes projects from other countries less visible. This is to only show projects in languages that you understand."},"project-bar/title":{"message":"Project Bar"},"project-bar/description":{"message":"Continue to view the information for a project, even after you scroll down past the notes and credits."},"more-news/title":{"message":"More Scratch News"},"more-news/description":{"message":"On the main page, scroll through the Scratch News section and load more results."},"dumpster-fire/title":{"message":"Dumpster Fire"},"dumpster-fire/description":{"message":"The Scratch homepage is a liar with their \"Featured Projects\" section. This changes the name to the proper form, which is \"Dumpster Fire\"."},"steal-game/title":{"message":"Steal Game"},"steal-game/description":{"message":"Changes the remix button's text to 'Steal game'."},"statistics/title":{"message":"Statistics"},"statistics/description":{"message":"Adds a statistics button on the my stuff page that leads to your ScratchStats profile."},"echo-effect/title":{"message":"Echo Effect"},"echo-effect/description":{"message":"Adds the echo effect back to the Scratch sound editor."},"compact-buttons/title":{"message":"Compact Buttons"},"compact-buttons/description":{"message":"Buttons text gets removed and will get a new icon if it does not have one already."},"message-count/title":{"message":"Message Count"},"message-count/description":{"message":"Displays the user's message count on their profile next to the country."},"move-share-button/title":{"message":"Move Share Button"},"move-share-button/description":{"message":"On project pages, moves the share button next to the See Inside button."},"preview-textboxes/title":{"message":"Preview Textboxes"},"preview-textboxes/description":{"message":"Preview your profile About Me and What I'm Working On, and your projects' Instructions and Notes and Credits, so that you can see what it will look like to other users."},"more-tutorials/title":{"message":"More Tutorials"},"more-tutorials/description":{"message":"On the Ideas page, you can view additional tutorials from other Scratchers."},"simplify-action-buttons/title":{"message":"Simplify Action Buttons"},"simplify-action-buttons/description":{"message":"Displays project action buttons underneath Notes and Credits as their icons."},"slash-to-search/title":{"message":"Slash to Search"},"slash-to-search/description":{"message":"Click the slash key (/) to select the search bar and start typing."},"shared-clipboard/title":{"message":"Shared Clipboard"},"shared-clipboard/description":{"message":"Allows you to copy and paste items between paint editors in different projects."},"hide-footer/title":{"message":"Hide Footer"},"hide-footer/description":{"message":"The footer takes up a lot of unnecessary space. So hide it!"},"original-colors/title":{"message":"Revert to Blue"},"original-colors/description":{"message":"Changes all of the Scratch website's colors back to the original coloring from 3.0, before purple."},"simplify-editor-tabs/title":{"message":"Simplify Editor Tabs"},"simplify-editor-tabs/description":{"message":"Changes editor tabs to icon-only and shows them as a circle"},"live-character-counts/title":{"message":"Live Character Counts"},"live-character-counts/description":{"message":"On forum, studio, and project pages, displays the live character count for textboxes."},"advanced-search/title":{"message":"Search Profiles"},"advanced-search/description":{"message":"When you search for a user, a link to their profile will be at the top of the page."},"studio-links/title":{"message":"Studio Links as Titles"},"studio-links/description":{"message":"Replaces studio links with their titles, all across the Scratch website."},"block-studios/title":{"message":"Block Individual Studio Activity"},"block-studios/description":{"message":"Disable studio activity messages from specific studios."},"block-messages/title":{"message":"Block Users"},"block-messages/description":{"message":"Hide messages from users that you block. Other users won't see that you've blocked them."},"two-colors/title":{"message":"2.0 Block Colors"},"two-colors/description":{"message":"Replaces the colors of the blocks in the editor with the blocks from the 2.0 version of the code editor."},"project-links/title":{"message":"Project Links as Titles"},"project-links/description":{"message":"Replaces project links with their titles, all across the Scratch website."},"emoji-status/title":{"message":"Emoji Statuses"},"emoji-status/description":{"message":"Set the status on your profile to an emoji. Other ScratchTools users will be able to see this status."},"display-name/title":{"message":"Display Names"},"display-name/description":{"message":"Shows display names for Scratchers, and allows you to set your own display name. Display names show next to your username, and aren't limited like usernames are."},"isonline/title":{"message":"Show if User is Online"},"isonline/description":{"message":"On profile pages, displays if a user is online. This will also let other users see if you are online."},"plain-background/title":{"message":"Plain Background"},"plain-background/description":{"message":"Removes the dots from the background of the code editor."},"hide-advertisements/title":{"message":"Hide Ads in Comments"},"hide-advertisements/description":{"message":"Hides advertisements in the comments of profiles, projects, and studios. They can take up a lot of space in the comments."},"hide-block-category-names/title":{"message":"Hide Block Category Names"},"hide-block-category-names/description":{"message":"Changes the block categories in the editor to only show the colors of the categories."},"unlisted-projects/title":{"message":"Unlisted Projects"},"unlisted-projects/description":{"message":"Allows you to generate share links for unshared projects in the editor."},"stats-percentages/title":{"message":"Show Percentages for Project Stats"},"stats-percentages/description":{"message":"On the my stuff page, hover over the number of loves, favorites or remixes to view what percent of viewers performed the action."},"clone-counter/title":{"message":"Clone Counter"},"clone-counter/description":{"message":"Displays the total number of clones in the project above, in the stage header."},"colored-shadows/title":{"message":"Colored Shadows"},"colored-shadows/description":{"message":"Replaces the shadow created when you drag a block near another block with the color of the block that is being moved."},"creator-badge/title":{"message":"Author Badge"},"creator-badge/description":{"message":"Adds a badge next to comments written by the author of the project."},"original-buttons/title":{"message":"Original Buttons"},"original-buttons/description":{"message":"Returns the original love, favorite, remix, and view buttons to the Scratch project pages."},"box-shadows/title":{"message":"Content Box Shadows"},"box-shadows/description":{"message":"Adds shadows on all content boxes. When hovering one, the shadow will darken."},"admin-notifications/title":{"message":"Red Admin Message Indicator"},"admin-notifications/description":{"message":"If you have an admin notification from the Scratch Team, the message indicator in the navigation bar will display red instead of orange."},"nicknames/title":{"message":"Nicknames"},"nicknames/description":{"message":"Set nicknames for other Scratchers. Only you can see the nicknames, and their username will be replaced with the nickname when you see their name."},"load-more-forum-posts/title":{"message":"Load More Posts"},"load-more-forum-posts/description":{"message":"Load more posts in the forum without having to switch pages."},"scroll-project-titles/title":{"message":"Scroll Project Titles"},"scroll-project-titles/description":{"message":"Allows you to scroll and view the entire title of projects that you don't own."},"search-context-menus/title":{"message":"Search Context Menus"},"search-context-menus/description":{"message":"Type and search context menus to select an option efficiently. You can also press enter to select the top option."},"hover-user-cards/title":{"message":"User Hover Cards"},"hover-user-cards/description":{"message":"Hover over any username on the website to display the profile picture, username and follower count."},"exact-join-date/title":{"message":"Exact Join Date"},"exact-join-date/description":{"message":"Displays the exact time that a user joined, shown on their profile."},"upload-img-directly/title":{"message":"Direct Image Uploads"},"upload-img-directly/description":{"message":"Allows you to upload images to the Scratch forums for posts and signatures without having to use third party image uploading services."},"leave-studio/title":{"message":"Leave Studio Button"},"leave-studio/description":{"message":"Adds a button to the curators page of any studios you curate or manage that allows you to leave the studio. A confirmation shows first."},"frontpage-curator/title":{"message":"Frontpage Curator Name as Link"},"frontpage-curator/description":{"message":"Makes the name of the Frontpage Curator to a clickable link to his profile."},"minimized-remix-credits/title":{"message":"Minimized Remix Credits"},"minimized-remix-credits/description":{"message":"The remix credit boxes for projects take space from the project Instructions, so this makes the box smaller."},"follows-you/title":{"message":"Show if Following on Profile"},"follows-you/description":{"message":"If a user is following you, it will show next to their username when you visit their profile."},"custom-studio/title":{"message":"Custom Studio Section"},"custom-studio/description":{"message":"On the homepage of the Scratch website, the newest projects from the studio of your choice are displayed above the Featured Projects."},"highlight-unanswered/title":{"message":"Highlight Unanswered Forum Topics"},"highlight-unanswered/description":{"message":"Adds a blue highlight to topics in the forums that have no replies."},"search-assets/title":{"message":"Search Assets"},"search-assets/description":{"message":"Search through costume and sound assets in the editor."},"block-count-in-mystuff/title":{"message":"Block Count in My Stuff"},"block-count-in-mystuff/description":{"message":"Displays the block count for projects on the My Stuff page."},"pause-audio/title":{"message":"Pause Audio"},"pause-audio/description":{"message":"Allows you to pause and resume audio in the sound editor of Scratch projects."},"display-message-count-in-icon/title":{"message":"Display Message Count"},"display-message-count-in-icon/description":{"message":"Displays your current message count in the extension icon for ScratchTools."},"colored-context-menus/title":{"message":"Colored Context Menus"},"colored-context-menus/description":{"message":"Like in Scratch 2.0, colors the context menus based on the color of the block they're for."},"left-side-stage/title":{"message":"Stage on Left Side"},"left-side-stage/description":{"message":"Like in Scratch 2.0, moves the stage to the left side of the editor, rather than keeping it on the right."},"move-project-title-input/title":{"message":"Project Title Above Stage"},"move-project-title-input/description":{"message":"Like in Scratch 2.0, moves the project title input box above the stage, rather than in the navbar. This only applies to the editor."},"hide-disabled-menu-options/title":{"message":"Hide Disabled Context Menu Options"},"hide-disabled-menu-options/description":{"message":"Context menu options in the editor show even if they are disabled and unable to be used, so this feature will hide them if they are."},"follower-count/title":{"message":"Follower Count on Projects"},"follower-count/description":{"message":"Displays the follower count of the project creator on their projects."},"hide-studio-borders/title":{"message":"Hide Studio Frames"},"hide-studio-borders/description":{"message":"Removes the odd frames from around studio images on 2.0 pages."},"hide-textarea-labels/title":{"message":"Hide Project Instructions and Notes and Credits Labels"},"hide-textarea-labels/description":{"message":"The instructions and notes and credits labels take up quite a bit of space where there could be usual information. This removes them."},"default-to-trending/title":{"message":"Search Trending by Default"},"default-to-trending/description":{"message":"Currently, when you search projects on the Scratch website, you automatically search with the popular filter, instead of trending."},"infinite-backpack-scrolling/title":{"message":"Infinite Backpack Scrolling"},"infinite-backpack-scrolling/description":{"message":"Scroll through the backpack until you reach the very end (does take some time to load, but loads automatically)."},"hide-studio-messages/title":{"message":"Hide Studio Activity Messages"},"hide-studio-messages/description":{"message":"Hide the studio activity messages from the messages page- they pile up quickly and can get annoying."},"get-project-tags/title":{"message":"Display Project Tags"},"get-project-tags/description":{"message":"Lists all of the tags used in the project description right below the project notes and credits."},"link-to-propose/title":{"message":"Link Featured Projects to Studio"},"link-to-propose/description":{"message":"Links the Featured Projects box on the homepage to the Propose Projects to Be Featured studio."},"add-last-option-list/title":{"message":"Set List Item to Last"},"add-last-option-list/description":{"message":"Right click a 'get item [number] of [list]' to set it to select the very last item in the selected list."},"cloud-scratchers/title":{"message":"Online Scratchers in Multiplayer Game"},"cloud-scratchers/description":{"message":"On project pages, displays all of the Scratchers currently in that multiplayer game."},"editor-in-two/title":{"message":"2.0 Editor"},"editor-in-two/description":{"message":"Replaces the default 3.0 online project editor with the 2.0 editor. It's nostalgic, really."},"comment-on-closed-profile/title":{"message":"Comment On Profile With Comments Closed"},"comment-on-closed-profile/description":{"message":"If your profile comments are closed, you can now comment on your own profile anyways. Only you can comment on the profile."},"turbowarp-button-in-editor/title":{"message":"Open in TurboWarp from Editor"},"turbowarp-button-in-editor/description":{"message":"Adds a button to the editor so that you can instantly open the current project in TurboWarp."},"sprite-clones/title":{"message":"Sprite Clone Counter"},"sprite-clones/description":{"message":"Displays the clone count for each individual sprite."},"block-log/title":{"message":"Block Log"},"block-log/description":{"message":"Logs and displays all undo information for the block editor when you press ctrl+shift+l."},"scrollable-list-items/title":{"message":"Scrollable List Items"},"scrollable-list-items/description":{"message":"List items that have a value longer than the width of the list itself will get cut off. Now, you can scroll left and right through the list item."},"custom-fonts/title":{"message":"Custom Website Font"},"custom-fonts/description":{"message":"On the Scratch website, you can set the font to whatever font you want, as long as it is on the Google Fonts website. This is case-sensitive."},"project-timer/title":{"message":"Project Timer"},"project-timer/description":{"message":"Displays the amount of time (in seconds) that the project has been running for."},"colored-comments/title":{"message":"Colored Editor Comments"},"colored-comments/description":{"message":"Colors comments in the editor based on the color of their parent block."},"recently-viewed-projects/title":{"message":"Recently Viewed Projects"},"recently-viewed-projects/description":{"message":"Adds a tab to the My Stuff page where you can see a list of the projects that you have recently viewed."},"collapse-blocks/title":{"message":"Collapse Blocks"},"collapse-blocks/description":{"message":"Right-click block menus in the editor include a button that will let you collapse the selected block."},"set-featured-project/title":{"message":"Set Featured Project"},"set-featured-project/description":{"message":"On any project page, you can set your profile's featured project with the click of a button- even unshared projects."},"scratchformat/title":{"message":"ScratchFormat"},"scratchformat/description":{"message":"Format your comments with bold, italic, and more. The comments will be styled to everyone using ScratchTools."},"expand-editor/title":{"message":"Expand Editor"},"expand-editor/description":{"message":"Use the ctrl+e to switch between the default block editor view and one that hides the stage to expand editor itself."},"list-sprites/title":{"message":"Sprite List"},"list-sprites/description":{"message":"Replaces the sprite grid in the editor with a list that includes the block count and position of the sprite."},"check-if-trending/title":{"message":"Check if Trending"},"check-if-trending/description":{"message":"If a project you're viewing is on the trending page, the place on the trending page will be shown next to the share date on the project page."},"link-forum-activity/title":{"message":"Link Users in Forum Activity"},"link-forum-activity/description":{"message":"In the forums' last post section, makes the usernames link to the user's profile."},"remove-topic-and-post/title":{"message":"Hide Forum Category Counts"},"remove-topic-and-post/description":{"message":"Hides the forum homepage topic and post boxes."},"forum-homepage-emojis/title":{"message":"Forum Category Emojis"},"forum-homepage-emojis/description":{"message":"Adds colorful emojis on the forum homepage categories based on their topic."},"remove-collapse-buttons/title":{"message":"Hide Forum Collapse Buttons"},"remove-collapse-buttons/description":{"message":"Hides the collapse buttons on the forum main page."},"pin-projects/title":{"message":"Pin Projects to My Stuff"},"pin-projects/description":{"message":"Pin one of your projects to the top of your My Stuff page with the click of a button. You can unpin your pinned project or switch out your pinned project for another one as well."},"last-key-pressed/title":{"message":"Last Key Pressed"},"last-key-pressed/description":{"message":"On any project page and in the editor, you can view the last key that you have pressed while on that project, according to the project itself. This is good for games such as platformers."},"hide-signatures/title":{"message":"Hide Forum Signatures"},"hide-signatures/description":{"message":"Hides all forum signatures and signature dividers."},"twemoji-in-forums/title":{"message":"Better Forum Emojis"},"twemoji-in-forums/description":{"message":"Replaces the current low resolution forum emojis with high quality Twemojis."},"go-to-parent/title":{"message":"Go to Parent Button"},"go-to-parent/description":{"message":"In the editor for any project that is a remix, you can click a button to go to the editor in the parent project."},"most-popular-project/title":{"message":"Most Popular Project"},"most-popular-project/description":{"message":"Displays the most popular project (by views) of the user on profile pages. You can click on the project to view it."},"editor-dark-mode/title":{"message":"Editor Dark Mode"},"editor-dark-mode/description":{"message":"Switches the editor's light color scheme to a darker one."},"hide-studio-group-icon/title":{"message":"Hide Studio Group Icon"},"hide-studio-group-icon/description":{"message":"Hides the studio group icon, and only shows the studio thumbnail."},"colored-messages/title":{"message":"Colored Messages"},"colored-messages/description":{"message":"Colors your messages based on the type of message, such as loves, favorites, and studio invites."},"full-title/title":{"message":"Full Project Title"},"full-title/description":{"message":"On profile pages, hover over any project title to show the full title."},"fixed-box/title":{"message":"Fix Content Boxes"},"fixed-box/description":{"message":"Makes all sides of boxes on the pages rounded, rather than just the tops."},"user-bio/title":{"message":"User Bio on Hover"},"user-bio/description":{"message":"In profile comments, hover over any username to display the user's bio."},"nfe-project-checker/title":{"message":"NFE Project Checker"},"nfe-project-checker/description":{"message":"On project pages, displays whether the project is Safe, Unreviewed, or NSFE (Not Safe for Everyone)."},"sprite-data/title":{"message":"Display Sprite Data"},"sprite-data/description":{"message":"In the Code, Costumes, and Sounds tab for each sprite, the number of blocks, costumes, and sounds will be displayed for the current sprite."},"idea-generator/title":{"message":"Project Idea Generator"},"idea-generator/description":{"message":"On the Scratch Ideas page, there will be a section where you can generate project ideas if you need some."},"hide-stickies/title":{"message":"Hide Forum Stickies"},"hide-stickies/description":{"message":"Hides the basic stickies from the top of each forum topic."},"nfe-search/title":{"message":"NFE Search"},"nfe-search/description":{"message":"Use a button to search all projects, including NFE ones."},"open-in-new-tab/title":{"message":"Open in New Tab"},"open-in-new-tab/description":{"message":"Automatically opens links on project pages in a new tab."},"unbold-site-text/title":{"message":"Unbold Site Text"},"unbold-site-text/description":{"message":"Makes it so that all text across Scratch is unbolded, and just normal text."},"compact-navbar/title":{"message":"Compact Navbar"},"compact-navbar/description":{"message":"Makes more room on the navigation bar near where your profile dropdown is."},"delete-all/title":{"message":"Delete All Sprites"},"delete-all/description":{"message":"Adds an option in the right-click context menu for sprites. It will delete all sprites (after confirmation to make sure it isn't an accident)."},"round-profile-pictures/title":{"message":"Round Profile Pictures"},"round-profile-pictures/description":{"message":"All profile pictures on the Scratch website will be rounded."},"ocular-link/title":{"message":"Ocular Links in Forums"},"ocular-link/description":{"message":"Adds a link to any user's Ocular page right below their username on a post."},"forum-scratch-team/title":{"message":"Scratch Team Symbol in Forums"},"forum-scratch-team/description":{"message":"Next to the username of any Scratch Team member in the forums, an asterisk (*) is placed at the end of their username."},"remove-editor-icons/title":{"message":"Remove Editor Icons"},"remove-editor-icons/description":{"message":"Removes the icons from the tabs in the editor."},"sprite-watermark/title":{"message":"Remove Sprite Watermark"},"sprite-watermark/description":{"message":"Removes the sprite watermark that shows in the editor."},"compact-editor/title":{"message":"Compact Editor"},"compact-editor/description":{"message":"Makes sprite and backdrop information more compact."},"my-recent-projects/title":{"message":"Replace Scratch News with Recent Projects"},"my-recent-projects/description":{"message":"Replaces the Scratch News section on the homepage with your recently shared projects."},"focus-mode/title":{"message":"Focus Mode"},"focus-mode/description":{"message":"Removes the comments, studio and remix column, header, and footer on project pages when the button is clicked."}}
\ No newline at end of file
From 5914db3bb4491f686428064f96f5f5509b5f70b1 Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Mon, 2 Sep 2024 14:01:09 -0700
Subject: [PATCH 158/253] More Paint Functions
---
features/features.json | 5 +
features/more-editor-fonts/script.js | 1 +
features/more-paint-functions/data.json | 22 +++
.../more-paint-functions/icons/exclude.svg | 13 ++
.../more-paint-functions/icons/intersect.svg | 20 +++
.../more-paint-functions/icons/subtract.svg | 17 ++
features/more-paint-functions/icons/unite.svg | 13 ++
features/more-paint-functions/script.js | 161 ++++++++++++++++++
features/more-paint-functions/style.css | 7 +
9 files changed, 259 insertions(+)
create mode 100644 features/more-paint-functions/data.json
create mode 100644 features/more-paint-functions/icons/exclude.svg
create mode 100644 features/more-paint-functions/icons/intersect.svg
create mode 100644 features/more-paint-functions/icons/subtract.svg
create mode 100644 features/more-paint-functions/icons/unite.svg
create mode 100644 features/more-paint-functions/script.js
create mode 100644 features/more-paint-functions/style.css
diff --git a/features/features.json b/features/features.json
index 9f0054a1..9588ccbe 100644
--- a/features/features.json
+++ b/features/features.json
@@ -1,4 +1,9 @@
[
+ {
+ "version": 2,
+ "id": "more-paint-functions",
+ "versionAdded": "v4.0.0"
+ },
{
"version": 2,
"id": "asset-size",
diff --git a/features/more-editor-fonts/script.js b/features/more-editor-fonts/script.js
index 791529dc..7efad503 100644
--- a/features/more-editor-fonts/script.js
+++ b/features/more-editor-fonts/script.js
@@ -9,6 +9,7 @@ export default async function ({ feature, console }) {
feature.page.waitForElements(
"div[class^='asset-panel_wrapper_'] div[class^='action-menu_more-buttons_']",
function (menu) {
+ if (feature.traps.gui().editorTab.activeTabIndex !== 1) return;
if (menu.querySelector(".ste-more-fonts")) return;
let div = document.createElement("div");
diff --git a/features/more-paint-functions/data.json b/features/more-paint-functions/data.json
new file mode 100644
index 00000000..11c00e90
--- /dev/null
+++ b/features/more-paint-functions/data.json
@@ -0,0 +1,22 @@
+{
+ "title": "More Paint Functions",
+ "description": "Adds new functions to the paint editor. The new functions include unite (combining them into one), subtract (removing one shape from another), exclude (removing the overlap of 2 items), and intersect (removing everything but the overlap of 2 items). Each function only works with 2 items.",
+ "credits": [
+ { "username": "rgantzos", "url": "https://scratch.mit.edu/users/rgantzos/" }
+ ],
+ "type": ["Editor"],
+ "tags": ["New", "Featured"],
+ "dynamic": true,
+ "scripts": [{ "file": "script.js", "runOn": "/projects/*" }],
+ "styles": [{ "file": "style.css", "runOn": "/projects/*" }],
+ "resources": [
+ { "name": "function-exclude", "path": "/icons/exclude.svg" },
+ { "name": "function-intersect", "path": "/icons/intersect.svg" },
+ { "name": "function-subtract", "path": "/icons/subtract.svg" },
+ { "name": "function-unite", "path": "/icons/unite.svg" }
+ ],
+ "components": [{
+ "type": "warning",
+ "content": "In order to avoid clutter in the paint editor, this feature replaces the Copy, Paste and Delete buttons. However, hotkeys still work."
+ }]
+}
diff --git a/features/more-paint-functions/icons/exclude.svg b/features/more-paint-functions/icons/exclude.svg
new file mode 100644
index 00000000..76c50759
--- /dev/null
+++ b/features/more-paint-functions/icons/exclude.svg
@@ -0,0 +1,13 @@
+
+
\ No newline at end of file
diff --git a/features/more-paint-functions/icons/intersect.svg b/features/more-paint-functions/icons/intersect.svg
new file mode 100644
index 00000000..399d3a7d
--- /dev/null
+++ b/features/more-paint-functions/icons/intersect.svg
@@ -0,0 +1,20 @@
+
+
\ No newline at end of file
diff --git a/features/more-paint-functions/icons/subtract.svg b/features/more-paint-functions/icons/subtract.svg
new file mode 100644
index 00000000..4d10c195
--- /dev/null
+++ b/features/more-paint-functions/icons/subtract.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/features/more-paint-functions/icons/unite.svg b/features/more-paint-functions/icons/unite.svg
new file mode 100644
index 00000000..dee97002
--- /dev/null
+++ b/features/more-paint-functions/icons/unite.svg
@@ -0,0 +1,13 @@
+
+
\ No newline at end of file
diff --git a/features/more-paint-functions/script.js b/features/more-paint-functions/script.js
new file mode 100644
index 00000000..ddfd0849
--- /dev/null
+++ b/features/more-paint-functions/script.js
@@ -0,0 +1,161 @@
+export default async function ({ feature, console }) {
+ function unite() {
+ let paper = feature.traps.getPaper();
+ let items = paper.project.selectedItems;
+
+ if (items.length !== 2) return;
+
+ for (var i in items) {
+ if (i > 0) {
+ items[0].unite(items[i]);
+ }
+ }
+
+ for (var i in items) {
+ items[i].remove();
+ }
+
+ paper.tool.onUpdateImage();
+ }
+
+ function subtract() {
+ let paper = feature.traps.getPaper();
+ let items = paper.project.selectedItems;
+
+ if (items.length !== 2) return;
+
+ for (var i in items) {
+ if (i > 0) {
+ items[0].subtract(items[i]);
+ }
+ }
+
+ for (var i in items) {
+ items[i].remove();
+ }
+
+ paper.tool.onUpdateImage();
+ }
+
+ function exclude() {
+ let paper = feature.traps.getPaper();
+ let items = paper.project.selectedItems;
+
+ if (items.length !== 2) return;
+
+ for (var i in items) {
+ if (i > 0) {
+ items[0].exclude(items[i]);
+ }
+ }
+
+ for (var i in items) {
+ items[i].remove();
+ }
+
+ paper.tool.onUpdateImage();
+ }
+
+ function intersect() {
+ let paper = feature.traps.getPaper();
+ let items = paper.project.selectedItems;
+
+ if (items.length !== 2) return;
+
+ for (var i in items) {
+ if (i > 0) {
+ items[0].intersect(items[i]);
+ }
+ }
+
+ for (var i in items) {
+ items[i].remove();
+ }
+
+ paper.tool.onUpdateImage();
+ }
+
+ ScratchTools.waitForElements(
+ "div[class^='mode-tools_mod-labeled-icon-height_']",
+ async function (row) {
+ if (row.querySelector(".ste-more-functions")) return;
+
+ let functions = [
+ {
+ name: "Unite",
+ icon: "function-unite",
+ callback: unite,
+ },
+ {
+ name: "Subtract",
+ icon: "function-subtract",
+ callback: subtract,
+ },
+ {
+ name: "Exclude",
+ icon: "function-exclude",
+ callback: exclude,
+ },
+ {
+ name: "Intersect",
+ icon: "function-intersect",
+ callback: intersect,
+ },
+ ];
+
+ for (var i in functions) {
+ row.appendChild(makeButton(functions[i]));
+ }
+
+ let align = await ScratchTools.waitForElement(".ste-align-items");
+ row.appendChild(align);
+ }
+ );
+
+ feature.redux.subscribe(function () {
+ if (document.querySelector(".ste-more-functions")) {
+ let span = document.querySelector(".ste-more-functions");
+ if (
+ feature.traps.paint().format === "BITMAP" ||
+ feature.traps.paint().selectedItems?.length < 2
+ ) {
+ document.querySelectorAll(".ste-more-functions").forEach(function (el) {
+ el.classList.add("button_mod-disabled_1rf31");
+ });
+ } else {
+ document.querySelectorAll(".ste-more-functions").forEach(function (el) {
+ el.classList.remove("button_mod-disabled_1rf31");
+ });
+ }
+ }
+ });
+
+ function makeButton({ name, icon, callback }) {
+ let span = document.createElement("span");
+ span.className =
+ "button_button_u6SE2 labeled-icon-button_mod-edit-field_1bXYC ste-more-functions";
+ span.role = "button";
+
+ let img = document.createElement("img");
+ img.src = feature.self.getResource(icon);
+ img.className = "labeled-icon-button_edit-field-icon_3j-Pf";
+ img.alt = name;
+ img.title = name;
+ img.draggable = false;
+ span.appendChild(img);
+
+ let label = document.createElement("span");
+ label.textContent = name;
+ label.className = "labeled-icon-button_edit-field-title_1ZoEV";
+ span.appendChild(label);
+
+ span.addEventListener("click", function (e) {
+ if (span.className.includes("disabled")) return;
+ callback();
+ });
+
+ feature.self.hideOnDisable(span);
+
+ return span;
+ }
+}
diff --git a/features/more-paint-functions/style.css b/features/more-paint-functions/style.css
new file mode 100644
index 00000000..752ac1b7
--- /dev/null
+++ b/features/more-paint-functions/style.css
@@ -0,0 +1,7 @@
+div[class*='mode-tools_mode-tools_'] > div[class*='mode-tools_mod-dashed-border_']:nth-child(1), div[class*='mode-tools_mode-tools_'] > div[class*='mode-tools_mod-dashed-border_']:nth-child(2) {
+ display: none;
+}
+
+div[class*='mode-tools_mode-tools_'] > div[class*='mode-tools_mod-labeled-icon-height_']:nth-child(3) {
+ margin-left: 0px !important;
+}
\ No newline at end of file
From 8b894f342bd6d430d884b30d02d4e5789036f76d Mon Sep 17 00:00:00 2001
From: "scratchtools-bot[bot]"
<123264640+scratchtools-bot[bot]@users.noreply.github.com>
Date: Mon, 2 Sep 2024 21:17:16 +0000
Subject: [PATCH 159/253] Updated file.
---
extras/feature-locales/en.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/feature-locales/en.json b/extras/feature-locales/en.json
index fddcf44e..df65bcd4 100644
--- a/extras/feature-locales/en.json
+++ b/extras/feature-locales/en.json
@@ -1 +1 @@
-{"asset-size/title":{"message":"Asset Size"},"asset-size/description":{"message":"Allows you to hover over any asset (costumes and sounds) in the editor to view the file size."},"disable-cloud/title":{"message":"Disable Cloud"},"disable-cloud/description":{"message":"Allows you to disable cloud data on any project. This will still receive cloud data information, but will not send any."},"webp-uploads/title":{"message":"WEBP Image Uploads"},"webp-uploads/description":{"message":"Allows you to upload webp images in the editor for new sprites, costumes and stage backdrops."},"remaining-replies/title":{"message":"Remaining Replies"},"remaining-replies/description":{"message":"Shows how many more replies are allowed in a thread of studio comments."},"video-recorder/title":{"message":"Record Stage"},"video-recorder/description":{"message":"Allows you to record the stage for projects while in the editor or on the project page."},"studio-creation-date/title":{"message":"Studio Creation Date"},"studio-creation-date/description":{"message":"Adds the creation date of the studio to the studio footer."},"explore-filter/title":{"message":"Explore Filter"},"explore-filter/description":{"message":"Customize project and studio search results with filters on the Search, Explore, and Studio pages."},"better-featured-projects/title":{"message":"Better Featured Projects"},"better-featured-projects/description":{"message":"Replaces the Featured Projects section with featured projects curated by ScratchTools users. You can submit your own projects to be featured as well."},"align-to-center/title":{"message":"Align to Center"},"align-to-center/description":{"message":"Allows you to align text in Instructions and Notes & Credits boxes to the center of the input."},"more-editor-fonts/title":{"message":"More Paint Editor Fonts"},"more-editor-fonts/description":{"message":"Allows you to use dozens of extra fonts in the paint editor."},"upload-thumbnail/title":{"message":"Set Thumbnail"},"upload-thumbnail/description":{"message":"Allows you to upload an image or GIF as a project thumbnail, or set the thumbnail to the current stage."},"paint-align/title":{"message":"Align Objects in Paint Editor"},"paint-align/description":{"message":"Adds a button to the paint editor that allows you to align selected items."},"rotate-gradient/title":{"message":"Rotate Gradients"},"rotate-gradient/description":{"message":"Allows you to rotate gradients in any direction in the costume editor. Works in both the vector and bitmap editors."},"change-monitor-opacity/title":{"message":"Custom Monitor Opacity"},"change-monitor-opacity/description":{"message":"Set the opacity of variables and lists on the stage to a custom number."},"project-reactions/title":{"message":"Project Reactions"},"project-reactions/description":{"message":"Allows you to react to projects with different emojis."},"chomp-blocks/title":{"message":"Extend Wrapped C Blocks"},"chomp-blocks/description":{"message":"Automatically extends C blocks to wrap around blocks that it is being placed over when dragging."},"custom-explore/title":{"message":"Custom Explore Redirect"},"custom-explore/description":{"message":"Automatically redirect to a specific tab on the Explore page."},"stage-in-spritepane/title":{"message":"Stage In Sprite Pane"},"stage-in-spritepane/description":{"message":"Move the stage button to the sprite pane to widen the sprite field."},"better-cloud-history/title":{"message":"Better Cloud History"},"better-cloud-history/description":{"message":"Updates the cloud monitor page to a more modern version with more details. You can click on variable names to sort by that variable."},"sprite-layers/title":{"message":"View Sprite Layers"},"sprite-layers/description":{"message":"Allows you to hover over the show/hide toggle in the sprite properties panel of the editor to view the sprite layers."},"hide-project-tags/title":{"message":"Hide Project Tags"},"hide-project-tags/description":{"message":"Hides all linked tags in the Instructions/Notes and Credits of projects."},"snap-to-grid/title":{"message":"Snap Scripts to Grid"},"snap-to-grid/description":{"message":"Automatically aligns scripts to the dotted grid in the editor when placed."},"select-self/title":{"message":"Select Self"},"select-self/description":{"message":"Allows you to select the current sprite when opening sprite dropdowns, instead of only other sprites."},"sidebar/title":{"message":"Sidebar"},"sidebar/description":{"message":"Adds a sidebar to the Scratch website, rather than just the normal navigation bar at the top of the screen."},"project-version-detector/title":{"message":"Project Version Detector"},"project-version-detector/description":{"message":"Checks when a project was shared and adds a label next to the share date to indicate which version of Scratch was in use at that time."},"fullscreen-explorer/title":{"message":"Fullscreen Project Grids"},"fullscreen-explorer/description":{"message":"Find projects on the big screen by removing the left and right blanks on the Trends, Search, Remix pages."},"project-descriptions/title":{"message":"Summarized Descriptions"},"project-descriptions/description":{"message":"Uses artificial intelligence to summarize project descriptions when you choose to, and shortens long descriptions down to important information, such as gameplay instructions."},"total-stats/title":{"message":"Total User Stats"},"total-stats/description":{"message":"Next to shared projects on a user's profile, displays the total loves, favorites and views that the user has received across all of their shared projects."},"project-miniplayer/title":{"message":"Project Miniplayer"},"project-miniplayer/description":{"message":"Scroll down on the project page and you will automatically see the project miniplayer."},"pin-comments/title":{"message":"Pin Project Comments"},"pin-comments/description":{"message":"Allows you to pin comments on your own projects and see what comments are pinned on other projects."},"download-project/title":{"message":"Download Projects"},"download-project/description":{"message":"Adds a button to project pages that allows you to download the project as an .sb3 file."},"blur-modal/title":{"message":"Blur Modal Backgrounds"},"blur-modal/description":{"message":"Blurs the backgrounds of modals instead of having a colored overlay."},"quick-search/title":{"message":"Quick Search"},"quick-search/description":{"message":"Easily jump between pages on the Scratch website with just the click of Control + K."},"favicon-messages/title":{"message":"Tab Message Count"},"favicon-messages/description":{"message":"Displays your message count in the tab favicon, the Scratch icon at the top of your tab."},"show-emoji-names/title":{"message":"Show Emoji Name"},"show-emoji-names/description":{"message":"Allows you to hover over Scratch emojis in the comments and view their names."},"more-block-themes/title":{"message":"More Block Themes"},"more-block-themes/description":{"message":"Adds additional themes for blocks in the code editor."},"more-key-inputs/title":{"message":"More Key Inputs"},"more-key-inputs/description":{"message":"Adds support for more keys on \"key pressed\" blocks."},"comment-tags/title":{"message":"Editor Comment Tags"},"comment-tags/description":{"message":"Add tags to editor comments to easily organize them."},"profile-flag/title":{"message":"Flag on Profile"},"profile-flag/description":{"message":"Adds flag emojis near selected locations on profile pages."},"follow-on-projects/title":{"message":"Follow on Project Page"},"follow-on-projects/description":{"message":"Follow users directly from the project page instead of going to their profile."},"dark-paint-editor/title":{"message":"Switch Paint Background"},"dark-paint-editor/description":{"message":"Adds a button next to the zoom controls in the paint editor that allows you to switch the background color of the paint editor between light and dark."},"specific-replies/title":{"message":"Specific Reply Messages"},"specific-replies/description":{"message":"In messages related to comments, specifies who a comment was replying to."},"better-trending-thumbnails/title":{"message":"Larger Thumbnails"},"better-trending-thumbnails/description":{"message":"Updates thumbnails on the trending and search pages to be larger and better fit the project/studio box."},"anti-generic/title":{"message":"Anti Generic"},"anti-generic/description":{"message":"On the explore and trending pages, this beta feature automatically hides repetitive projects, along with projects that it expects are generic. This includes projects with a lot of tags, common names, and project duplicates."},"wrap-lists/title":{"message":"Wrap List Items"},"wrap-lists/description":{"message":"Displays text in list items normally without cutting them off if they're too long."},"live-stats/title":{"message":"Live Stats"},"live-stats/description":{"message":"Updates the loves, favorites, remixes, and views on a project live, without having to reload to view the new counts."},"hide-scratch-news/title":{"message":"Hide Scratch News"},"hide-scratch-news/description":{"message":"Hides the Scratch News section on the homepage of the Scratch website."},"watch-later/title":{"message":"Save to Watch Later"},"watch-later/description":{"message":"Save projects you want to view later and they'll appear on a watch later page."},"remove-project-button/title":{"message":"Remove Project Button"},"remove-project-button/description":{"message":"Adds a button to projects in studios that allows you to easily remove it from the studio without opening the menu."},"right-side-flag/title":{"message":"Right Side Flag"},"right-side-flag/description":{"message":"Moves the green flag and the red stop sign to the right side of the stage."},"love-fave-animate/title":{"message":"Love Animations"},"love-fave-animate/description":{"message":"Animates the clicking of the love and favorite buttons on project pages."},"default-to-local/title":{"message":"Default to Local"},"default-to-local/description":{"message":"When creating a variable, sets the default to For This Sprite Only, rather than For All Sprites."},"start-stop-hotkeys/title":{"message":"Green Flag Hotkeys"},"start-stop-hotkeys/description":{"message":"Use Control + G to start or stop a project, depending on whether or not it is running."},"opacity-slider/title":{"message":"Opacity Slider"},"opacity-slider/description":{"message":"Change the opacity of objects in the paint editor."},"more-studios/title":{"message":"More Studios"},"more-studios/description":{"message":"Allows you to add projects to more studios instead of just 20."},"localized-explore/title":{"message":"Projects from Country"},"localized-explore/description":{"message":"On the explore page, makes projects from other countries less visible. This is to only show projects in languages that you understand."},"project-bar/title":{"message":"Project Bar"},"project-bar/description":{"message":"Continue to view the information for a project, even after you scroll down past the notes and credits."},"more-news/title":{"message":"More Scratch News"},"more-news/description":{"message":"On the main page, scroll through the Scratch News section and load more results."},"dumpster-fire/title":{"message":"Dumpster Fire"},"dumpster-fire/description":{"message":"The Scratch homepage is a liar with their \"Featured Projects\" section. This changes the name to the proper form, which is \"Dumpster Fire\"."},"steal-game/title":{"message":"Steal Game"},"steal-game/description":{"message":"Changes the remix button's text to 'Steal game'."},"statistics/title":{"message":"Statistics"},"statistics/description":{"message":"Adds a statistics button on the my stuff page that leads to your ScratchStats profile."},"echo-effect/title":{"message":"Echo Effect"},"echo-effect/description":{"message":"Adds the echo effect back to the Scratch sound editor."},"compact-buttons/title":{"message":"Compact Buttons"},"compact-buttons/description":{"message":"Buttons text gets removed and will get a new icon if it does not have one already."},"message-count/title":{"message":"Message Count"},"message-count/description":{"message":"Displays the user's message count on their profile next to the country."},"move-share-button/title":{"message":"Move Share Button"},"move-share-button/description":{"message":"On project pages, moves the share button next to the See Inside button."},"preview-textboxes/title":{"message":"Preview Textboxes"},"preview-textboxes/description":{"message":"Preview your profile About Me and What I'm Working On, and your projects' Instructions and Notes and Credits, so that you can see what it will look like to other users."},"more-tutorials/title":{"message":"More Tutorials"},"more-tutorials/description":{"message":"On the Ideas page, you can view additional tutorials from other Scratchers."},"simplify-action-buttons/title":{"message":"Simplify Action Buttons"},"simplify-action-buttons/description":{"message":"Displays project action buttons underneath Notes and Credits as their icons."},"slash-to-search/title":{"message":"Slash to Search"},"slash-to-search/description":{"message":"Click the slash key (/) to select the search bar and start typing."},"shared-clipboard/title":{"message":"Shared Clipboard"},"shared-clipboard/description":{"message":"Allows you to copy and paste items between paint editors in different projects."},"hide-footer/title":{"message":"Hide Footer"},"hide-footer/description":{"message":"The footer takes up a lot of unnecessary space. So hide it!"},"original-colors/title":{"message":"Revert to Blue"},"original-colors/description":{"message":"Changes all of the Scratch website's colors back to the original coloring from 3.0, before purple."},"simplify-editor-tabs/title":{"message":"Simplify Editor Tabs"},"simplify-editor-tabs/description":{"message":"Changes editor tabs to icon-only and shows them as a circle"},"live-character-counts/title":{"message":"Live Character Counts"},"live-character-counts/description":{"message":"On forum, studio, and project pages, displays the live character count for textboxes."},"advanced-search/title":{"message":"Search Profiles"},"advanced-search/description":{"message":"When you search for a user, a link to their profile will be at the top of the page."},"studio-links/title":{"message":"Studio Links as Titles"},"studio-links/description":{"message":"Replaces studio links with their titles, all across the Scratch website."},"block-studios/title":{"message":"Block Individual Studio Activity"},"block-studios/description":{"message":"Disable studio activity messages from specific studios."},"block-messages/title":{"message":"Block Users"},"block-messages/description":{"message":"Hide messages from users that you block. Other users won't see that you've blocked them."},"two-colors/title":{"message":"2.0 Block Colors"},"two-colors/description":{"message":"Replaces the colors of the blocks in the editor with the blocks from the 2.0 version of the code editor."},"project-links/title":{"message":"Project Links as Titles"},"project-links/description":{"message":"Replaces project links with their titles, all across the Scratch website."},"emoji-status/title":{"message":"Emoji Statuses"},"emoji-status/description":{"message":"Set the status on your profile to an emoji. Other ScratchTools users will be able to see this status."},"display-name/title":{"message":"Display Names"},"display-name/description":{"message":"Shows display names for Scratchers, and allows you to set your own display name. Display names show next to your username, and aren't limited like usernames are."},"isonline/title":{"message":"Show if User is Online"},"isonline/description":{"message":"On profile pages, displays if a user is online. This will also let other users see if you are online."},"plain-background/title":{"message":"Plain Background"},"plain-background/description":{"message":"Removes the dots from the background of the code editor."},"hide-advertisements/title":{"message":"Hide Ads in Comments"},"hide-advertisements/description":{"message":"Hides advertisements in the comments of profiles, projects, and studios. They can take up a lot of space in the comments."},"hide-block-category-names/title":{"message":"Hide Block Category Names"},"hide-block-category-names/description":{"message":"Changes the block categories in the editor to only show the colors of the categories."},"unlisted-projects/title":{"message":"Unlisted Projects"},"unlisted-projects/description":{"message":"Allows you to generate share links for unshared projects in the editor."},"stats-percentages/title":{"message":"Show Percentages for Project Stats"},"stats-percentages/description":{"message":"On the my stuff page, hover over the number of loves, favorites or remixes to view what percent of viewers performed the action."},"clone-counter/title":{"message":"Clone Counter"},"clone-counter/description":{"message":"Displays the total number of clones in the project above, in the stage header."},"colored-shadows/title":{"message":"Colored Shadows"},"colored-shadows/description":{"message":"Replaces the shadow created when you drag a block near another block with the color of the block that is being moved."},"creator-badge/title":{"message":"Author Badge"},"creator-badge/description":{"message":"Adds a badge next to comments written by the author of the project."},"original-buttons/title":{"message":"Original Buttons"},"original-buttons/description":{"message":"Returns the original love, favorite, remix, and view buttons to the Scratch project pages."},"box-shadows/title":{"message":"Content Box Shadows"},"box-shadows/description":{"message":"Adds shadows on all content boxes. When hovering one, the shadow will darken."},"admin-notifications/title":{"message":"Red Admin Message Indicator"},"admin-notifications/description":{"message":"If you have an admin notification from the Scratch Team, the message indicator in the navigation bar will display red instead of orange."},"nicknames/title":{"message":"Nicknames"},"nicknames/description":{"message":"Set nicknames for other Scratchers. Only you can see the nicknames, and their username will be replaced with the nickname when you see their name."},"load-more-forum-posts/title":{"message":"Load More Posts"},"load-more-forum-posts/description":{"message":"Load more posts in the forum without having to switch pages."},"scroll-project-titles/title":{"message":"Scroll Project Titles"},"scroll-project-titles/description":{"message":"Allows you to scroll and view the entire title of projects that you don't own."},"search-context-menus/title":{"message":"Search Context Menus"},"search-context-menus/description":{"message":"Type and search context menus to select an option efficiently. You can also press enter to select the top option."},"hover-user-cards/title":{"message":"User Hover Cards"},"hover-user-cards/description":{"message":"Hover over any username on the website to display the profile picture, username and follower count."},"exact-join-date/title":{"message":"Exact Join Date"},"exact-join-date/description":{"message":"Displays the exact time that a user joined, shown on their profile."},"upload-img-directly/title":{"message":"Direct Image Uploads"},"upload-img-directly/description":{"message":"Allows you to upload images to the Scratch forums for posts and signatures without having to use third party image uploading services."},"leave-studio/title":{"message":"Leave Studio Button"},"leave-studio/description":{"message":"Adds a button to the curators page of any studios you curate or manage that allows you to leave the studio. A confirmation shows first."},"frontpage-curator/title":{"message":"Frontpage Curator Name as Link"},"frontpage-curator/description":{"message":"Makes the name of the Frontpage Curator to a clickable link to his profile."},"minimized-remix-credits/title":{"message":"Minimized Remix Credits"},"minimized-remix-credits/description":{"message":"The remix credit boxes for projects take space from the project Instructions, so this makes the box smaller."},"follows-you/title":{"message":"Show if Following on Profile"},"follows-you/description":{"message":"If a user is following you, it will show next to their username when you visit their profile."},"custom-studio/title":{"message":"Custom Studio Section"},"custom-studio/description":{"message":"On the homepage of the Scratch website, the newest projects from the studio of your choice are displayed above the Featured Projects."},"highlight-unanswered/title":{"message":"Highlight Unanswered Forum Topics"},"highlight-unanswered/description":{"message":"Adds a blue highlight to topics in the forums that have no replies."},"search-assets/title":{"message":"Search Assets"},"search-assets/description":{"message":"Search through costume and sound assets in the editor."},"block-count-in-mystuff/title":{"message":"Block Count in My Stuff"},"block-count-in-mystuff/description":{"message":"Displays the block count for projects on the My Stuff page."},"pause-audio/title":{"message":"Pause Audio"},"pause-audio/description":{"message":"Allows you to pause and resume audio in the sound editor of Scratch projects."},"display-message-count-in-icon/title":{"message":"Display Message Count"},"display-message-count-in-icon/description":{"message":"Displays your current message count in the extension icon for ScratchTools."},"colored-context-menus/title":{"message":"Colored Context Menus"},"colored-context-menus/description":{"message":"Like in Scratch 2.0, colors the context menus based on the color of the block they're for."},"left-side-stage/title":{"message":"Stage on Left Side"},"left-side-stage/description":{"message":"Like in Scratch 2.0, moves the stage to the left side of the editor, rather than keeping it on the right."},"move-project-title-input/title":{"message":"Project Title Above Stage"},"move-project-title-input/description":{"message":"Like in Scratch 2.0, moves the project title input box above the stage, rather than in the navbar. This only applies to the editor."},"hide-disabled-menu-options/title":{"message":"Hide Disabled Context Menu Options"},"hide-disabled-menu-options/description":{"message":"Context menu options in the editor show even if they are disabled and unable to be used, so this feature will hide them if they are."},"follower-count/title":{"message":"Follower Count on Projects"},"follower-count/description":{"message":"Displays the follower count of the project creator on their projects."},"hide-studio-borders/title":{"message":"Hide Studio Frames"},"hide-studio-borders/description":{"message":"Removes the odd frames from around studio images on 2.0 pages."},"hide-textarea-labels/title":{"message":"Hide Project Instructions and Notes and Credits Labels"},"hide-textarea-labels/description":{"message":"The instructions and notes and credits labels take up quite a bit of space where there could be usual information. This removes them."},"default-to-trending/title":{"message":"Search Trending by Default"},"default-to-trending/description":{"message":"Currently, when you search projects on the Scratch website, you automatically search with the popular filter, instead of trending."},"infinite-backpack-scrolling/title":{"message":"Infinite Backpack Scrolling"},"infinite-backpack-scrolling/description":{"message":"Scroll through the backpack until you reach the very end (does take some time to load, but loads automatically)."},"hide-studio-messages/title":{"message":"Hide Studio Activity Messages"},"hide-studio-messages/description":{"message":"Hide the studio activity messages from the messages page- they pile up quickly and can get annoying."},"get-project-tags/title":{"message":"Display Project Tags"},"get-project-tags/description":{"message":"Lists all of the tags used in the project description right below the project notes and credits."},"link-to-propose/title":{"message":"Link Featured Projects to Studio"},"link-to-propose/description":{"message":"Links the Featured Projects box on the homepage to the Propose Projects to Be Featured studio."},"add-last-option-list/title":{"message":"Set List Item to Last"},"add-last-option-list/description":{"message":"Right click a 'get item [number] of [list]' to set it to select the very last item in the selected list."},"cloud-scratchers/title":{"message":"Online Scratchers in Multiplayer Game"},"cloud-scratchers/description":{"message":"On project pages, displays all of the Scratchers currently in that multiplayer game."},"editor-in-two/title":{"message":"2.0 Editor"},"editor-in-two/description":{"message":"Replaces the default 3.0 online project editor with the 2.0 editor. It's nostalgic, really."},"comment-on-closed-profile/title":{"message":"Comment On Profile With Comments Closed"},"comment-on-closed-profile/description":{"message":"If your profile comments are closed, you can now comment on your own profile anyways. Only you can comment on the profile."},"turbowarp-button-in-editor/title":{"message":"Open in TurboWarp from Editor"},"turbowarp-button-in-editor/description":{"message":"Adds a button to the editor so that you can instantly open the current project in TurboWarp."},"sprite-clones/title":{"message":"Sprite Clone Counter"},"sprite-clones/description":{"message":"Displays the clone count for each individual sprite."},"block-log/title":{"message":"Block Log"},"block-log/description":{"message":"Logs and displays all undo information for the block editor when you press ctrl+shift+l."},"scrollable-list-items/title":{"message":"Scrollable List Items"},"scrollable-list-items/description":{"message":"List items that have a value longer than the width of the list itself will get cut off. Now, you can scroll left and right through the list item."},"custom-fonts/title":{"message":"Custom Website Font"},"custom-fonts/description":{"message":"On the Scratch website, you can set the font to whatever font you want, as long as it is on the Google Fonts website. This is case-sensitive."},"project-timer/title":{"message":"Project Timer"},"project-timer/description":{"message":"Displays the amount of time (in seconds) that the project has been running for."},"colored-comments/title":{"message":"Colored Editor Comments"},"colored-comments/description":{"message":"Colors comments in the editor based on the color of their parent block."},"recently-viewed-projects/title":{"message":"Recently Viewed Projects"},"recently-viewed-projects/description":{"message":"Adds a tab to the My Stuff page where you can see a list of the projects that you have recently viewed."},"collapse-blocks/title":{"message":"Collapse Blocks"},"collapse-blocks/description":{"message":"Right-click block menus in the editor include a button that will let you collapse the selected block."},"set-featured-project/title":{"message":"Set Featured Project"},"set-featured-project/description":{"message":"On any project page, you can set your profile's featured project with the click of a button- even unshared projects."},"scratchformat/title":{"message":"ScratchFormat"},"scratchformat/description":{"message":"Format your comments with bold, italic, and more. The comments will be styled to everyone using ScratchTools."},"expand-editor/title":{"message":"Expand Editor"},"expand-editor/description":{"message":"Use the ctrl+e to switch between the default block editor view and one that hides the stage to expand editor itself."},"list-sprites/title":{"message":"Sprite List"},"list-sprites/description":{"message":"Replaces the sprite grid in the editor with a list that includes the block count and position of the sprite."},"check-if-trending/title":{"message":"Check if Trending"},"check-if-trending/description":{"message":"If a project you're viewing is on the trending page, the place on the trending page will be shown next to the share date on the project page."},"link-forum-activity/title":{"message":"Link Users in Forum Activity"},"link-forum-activity/description":{"message":"In the forums' last post section, makes the usernames link to the user's profile."},"remove-topic-and-post/title":{"message":"Hide Forum Category Counts"},"remove-topic-and-post/description":{"message":"Hides the forum homepage topic and post boxes."},"forum-homepage-emojis/title":{"message":"Forum Category Emojis"},"forum-homepage-emojis/description":{"message":"Adds colorful emojis on the forum homepage categories based on their topic."},"remove-collapse-buttons/title":{"message":"Hide Forum Collapse Buttons"},"remove-collapse-buttons/description":{"message":"Hides the collapse buttons on the forum main page."},"pin-projects/title":{"message":"Pin Projects to My Stuff"},"pin-projects/description":{"message":"Pin one of your projects to the top of your My Stuff page with the click of a button. You can unpin your pinned project or switch out your pinned project for another one as well."},"last-key-pressed/title":{"message":"Last Key Pressed"},"last-key-pressed/description":{"message":"On any project page and in the editor, you can view the last key that you have pressed while on that project, according to the project itself. This is good for games such as platformers."},"hide-signatures/title":{"message":"Hide Forum Signatures"},"hide-signatures/description":{"message":"Hides all forum signatures and signature dividers."},"twemoji-in-forums/title":{"message":"Better Forum Emojis"},"twemoji-in-forums/description":{"message":"Replaces the current low resolution forum emojis with high quality Twemojis."},"go-to-parent/title":{"message":"Go to Parent Button"},"go-to-parent/description":{"message":"In the editor for any project that is a remix, you can click a button to go to the editor in the parent project."},"most-popular-project/title":{"message":"Most Popular Project"},"most-popular-project/description":{"message":"Displays the most popular project (by views) of the user on profile pages. You can click on the project to view it."},"editor-dark-mode/title":{"message":"Editor Dark Mode"},"editor-dark-mode/description":{"message":"Switches the editor's light color scheme to a darker one."},"hide-studio-group-icon/title":{"message":"Hide Studio Group Icon"},"hide-studio-group-icon/description":{"message":"Hides the studio group icon, and only shows the studio thumbnail."},"colored-messages/title":{"message":"Colored Messages"},"colored-messages/description":{"message":"Colors your messages based on the type of message, such as loves, favorites, and studio invites."},"full-title/title":{"message":"Full Project Title"},"full-title/description":{"message":"On profile pages, hover over any project title to show the full title."},"fixed-box/title":{"message":"Fix Content Boxes"},"fixed-box/description":{"message":"Makes all sides of boxes on the pages rounded, rather than just the tops."},"user-bio/title":{"message":"User Bio on Hover"},"user-bio/description":{"message":"In profile comments, hover over any username to display the user's bio."},"nfe-project-checker/title":{"message":"NFE Project Checker"},"nfe-project-checker/description":{"message":"On project pages, displays whether the project is Safe, Unreviewed, or NSFE (Not Safe for Everyone)."},"sprite-data/title":{"message":"Display Sprite Data"},"sprite-data/description":{"message":"In the Code, Costumes, and Sounds tab for each sprite, the number of blocks, costumes, and sounds will be displayed for the current sprite."},"idea-generator/title":{"message":"Project Idea Generator"},"idea-generator/description":{"message":"On the Scratch Ideas page, there will be a section where you can generate project ideas if you need some."},"hide-stickies/title":{"message":"Hide Forum Stickies"},"hide-stickies/description":{"message":"Hides the basic stickies from the top of each forum topic."},"nfe-search/title":{"message":"NFE Search"},"nfe-search/description":{"message":"Use a button to search all projects, including NFE ones."},"open-in-new-tab/title":{"message":"Open in New Tab"},"open-in-new-tab/description":{"message":"Automatically opens links on project pages in a new tab."},"unbold-site-text/title":{"message":"Unbold Site Text"},"unbold-site-text/description":{"message":"Makes it so that all text across Scratch is unbolded, and just normal text."},"compact-navbar/title":{"message":"Compact Navbar"},"compact-navbar/description":{"message":"Makes more room on the navigation bar near where your profile dropdown is."},"delete-all/title":{"message":"Delete All Sprites"},"delete-all/description":{"message":"Adds an option in the right-click context menu for sprites. It will delete all sprites (after confirmation to make sure it isn't an accident)."},"round-profile-pictures/title":{"message":"Round Profile Pictures"},"round-profile-pictures/description":{"message":"All profile pictures on the Scratch website will be rounded."},"ocular-link/title":{"message":"Ocular Links in Forums"},"ocular-link/description":{"message":"Adds a link to any user's Ocular page right below their username on a post."},"forum-scratch-team/title":{"message":"Scratch Team Symbol in Forums"},"forum-scratch-team/description":{"message":"Next to the username of any Scratch Team member in the forums, an asterisk (*) is placed at the end of their username."},"remove-editor-icons/title":{"message":"Remove Editor Icons"},"remove-editor-icons/description":{"message":"Removes the icons from the tabs in the editor."},"sprite-watermark/title":{"message":"Remove Sprite Watermark"},"sprite-watermark/description":{"message":"Removes the sprite watermark that shows in the editor."},"compact-editor/title":{"message":"Compact Editor"},"compact-editor/description":{"message":"Makes sprite and backdrop information more compact."},"my-recent-projects/title":{"message":"Replace Scratch News with Recent Projects"},"my-recent-projects/description":{"message":"Replaces the Scratch News section on the homepage with your recently shared projects."},"focus-mode/title":{"message":"Focus Mode"},"focus-mode/description":{"message":"Removes the comments, studio and remix column, header, and footer on project pages when the button is clicked."}}
\ No newline at end of file
+{"more-paint-functions/title":{"message":"More Paint Functions"},"more-paint-functions/description":{"message":"Adds new functions to the paint editor. The new functions include unite (combining them into one), subtract (removing one shape from another), exclude (removing the overlap of 2 items), and intersect (removing everything but the overlap of 2 items). Each function only works with 2 items."},"asset-size/title":{"message":"Asset Size"},"asset-size/description":{"message":"Allows you to hover over any asset (costumes and sounds) in the editor to view the file size."},"disable-cloud/title":{"message":"Disable Cloud"},"disable-cloud/description":{"message":"Allows you to disable cloud data on any project. This will still receive cloud data information, but will not send any."},"webp-uploads/title":{"message":"WEBP Image Uploads"},"webp-uploads/description":{"message":"Allows you to upload webp images in the editor for new sprites, costumes and stage backdrops."},"remaining-replies/title":{"message":"Remaining Replies"},"remaining-replies/description":{"message":"Shows how many more replies are allowed in a thread of studio comments."},"video-recorder/title":{"message":"Record Stage"},"video-recorder/description":{"message":"Allows you to record the stage for projects while in the editor or on the project page."},"studio-creation-date/title":{"message":"Studio Creation Date"},"studio-creation-date/description":{"message":"Adds the creation date of the studio to the studio footer."},"explore-filter/title":{"message":"Explore Filter"},"explore-filter/description":{"message":"Customize project and studio search results with filters on the Search, Explore, and Studio pages."},"better-featured-projects/title":{"message":"Better Featured Projects"},"better-featured-projects/description":{"message":"Replaces the Featured Projects section with featured projects curated by ScratchTools users. You can submit your own projects to be featured as well."},"align-to-center/title":{"message":"Align to Center"},"align-to-center/description":{"message":"Allows you to align text in Instructions and Notes & Credits boxes to the center of the input."},"more-editor-fonts/title":{"message":"More Paint Editor Fonts"},"more-editor-fonts/description":{"message":"Allows you to use dozens of extra fonts in the paint editor."},"upload-thumbnail/title":{"message":"Set Thumbnail"},"upload-thumbnail/description":{"message":"Allows you to upload an image or GIF as a project thumbnail, or set the thumbnail to the current stage."},"paint-align/title":{"message":"Align Objects in Paint Editor"},"paint-align/description":{"message":"Adds a button to the paint editor that allows you to align selected items."},"rotate-gradient/title":{"message":"Rotate Gradients"},"rotate-gradient/description":{"message":"Allows you to rotate gradients in any direction in the costume editor. Works in both the vector and bitmap editors."},"change-monitor-opacity/title":{"message":"Custom Monitor Opacity"},"change-monitor-opacity/description":{"message":"Set the opacity of variables and lists on the stage to a custom number."},"project-reactions/title":{"message":"Project Reactions"},"project-reactions/description":{"message":"Allows you to react to projects with different emojis."},"chomp-blocks/title":{"message":"Extend Wrapped C Blocks"},"chomp-blocks/description":{"message":"Automatically extends C blocks to wrap around blocks that it is being placed over when dragging."},"custom-explore/title":{"message":"Custom Explore Redirect"},"custom-explore/description":{"message":"Automatically redirect to a specific tab on the Explore page."},"stage-in-spritepane/title":{"message":"Stage In Sprite Pane"},"stage-in-spritepane/description":{"message":"Move the stage button to the sprite pane to widen the sprite field."},"better-cloud-history/title":{"message":"Better Cloud History"},"better-cloud-history/description":{"message":"Updates the cloud monitor page to a more modern version with more details. You can click on variable names to sort by that variable."},"sprite-layers/title":{"message":"View Sprite Layers"},"sprite-layers/description":{"message":"Allows you to hover over the show/hide toggle in the sprite properties panel of the editor to view the sprite layers."},"hide-project-tags/title":{"message":"Hide Project Tags"},"hide-project-tags/description":{"message":"Hides all linked tags in the Instructions/Notes and Credits of projects."},"snap-to-grid/title":{"message":"Snap Scripts to Grid"},"snap-to-grid/description":{"message":"Automatically aligns scripts to the dotted grid in the editor when placed."},"select-self/title":{"message":"Select Self"},"select-self/description":{"message":"Allows you to select the current sprite when opening sprite dropdowns, instead of only other sprites."},"sidebar/title":{"message":"Sidebar"},"sidebar/description":{"message":"Adds a sidebar to the Scratch website, rather than just the normal navigation bar at the top of the screen."},"project-version-detector/title":{"message":"Project Version Detector"},"project-version-detector/description":{"message":"Checks when a project was shared and adds a label next to the share date to indicate which version of Scratch was in use at that time."},"fullscreen-explorer/title":{"message":"Fullscreen Project Grids"},"fullscreen-explorer/description":{"message":"Find projects on the big screen by removing the left and right blanks on the Trends, Search, Remix pages."},"project-descriptions/title":{"message":"Summarized Descriptions"},"project-descriptions/description":{"message":"Uses artificial intelligence to summarize project descriptions when you choose to, and shortens long descriptions down to important information, such as gameplay instructions."},"total-stats/title":{"message":"Total User Stats"},"total-stats/description":{"message":"Next to shared projects on a user's profile, displays the total loves, favorites and views that the user has received across all of their shared projects."},"project-miniplayer/title":{"message":"Project Miniplayer"},"project-miniplayer/description":{"message":"Scroll down on the project page and you will automatically see the project miniplayer."},"pin-comments/title":{"message":"Pin Project Comments"},"pin-comments/description":{"message":"Allows you to pin comments on your own projects and see what comments are pinned on other projects."},"download-project/title":{"message":"Download Projects"},"download-project/description":{"message":"Adds a button to project pages that allows you to download the project as an .sb3 file."},"blur-modal/title":{"message":"Blur Modal Backgrounds"},"blur-modal/description":{"message":"Blurs the backgrounds of modals instead of having a colored overlay."},"quick-search/title":{"message":"Quick Search"},"quick-search/description":{"message":"Easily jump between pages on the Scratch website with just the click of Control + K."},"favicon-messages/title":{"message":"Tab Message Count"},"favicon-messages/description":{"message":"Displays your message count in the tab favicon, the Scratch icon at the top of your tab."},"show-emoji-names/title":{"message":"Show Emoji Name"},"show-emoji-names/description":{"message":"Allows you to hover over Scratch emojis in the comments and view their names."},"more-block-themes/title":{"message":"More Block Themes"},"more-block-themes/description":{"message":"Adds additional themes for blocks in the code editor."},"more-key-inputs/title":{"message":"More Key Inputs"},"more-key-inputs/description":{"message":"Adds support for more keys on \"key pressed\" blocks."},"comment-tags/title":{"message":"Editor Comment Tags"},"comment-tags/description":{"message":"Add tags to editor comments to easily organize them."},"profile-flag/title":{"message":"Flag on Profile"},"profile-flag/description":{"message":"Adds flag emojis near selected locations on profile pages."},"follow-on-projects/title":{"message":"Follow on Project Page"},"follow-on-projects/description":{"message":"Follow users directly from the project page instead of going to their profile."},"dark-paint-editor/title":{"message":"Switch Paint Background"},"dark-paint-editor/description":{"message":"Adds a button next to the zoom controls in the paint editor that allows you to switch the background color of the paint editor between light and dark."},"specific-replies/title":{"message":"Specific Reply Messages"},"specific-replies/description":{"message":"In messages related to comments, specifies who a comment was replying to."},"better-trending-thumbnails/title":{"message":"Larger Thumbnails"},"better-trending-thumbnails/description":{"message":"Updates thumbnails on the trending and search pages to be larger and better fit the project/studio box."},"anti-generic/title":{"message":"Anti Generic"},"anti-generic/description":{"message":"On the explore and trending pages, this beta feature automatically hides repetitive projects, along with projects that it expects are generic. This includes projects with a lot of tags, common names, and project duplicates."},"wrap-lists/title":{"message":"Wrap List Items"},"wrap-lists/description":{"message":"Displays text in list items normally without cutting them off if they're too long."},"live-stats/title":{"message":"Live Stats"},"live-stats/description":{"message":"Updates the loves, favorites, remixes, and views on a project live, without having to reload to view the new counts."},"hide-scratch-news/title":{"message":"Hide Scratch News"},"hide-scratch-news/description":{"message":"Hides the Scratch News section on the homepage of the Scratch website."},"watch-later/title":{"message":"Save to Watch Later"},"watch-later/description":{"message":"Save projects you want to view later and they'll appear on a watch later page."},"remove-project-button/title":{"message":"Remove Project Button"},"remove-project-button/description":{"message":"Adds a button to projects in studios that allows you to easily remove it from the studio without opening the menu."},"right-side-flag/title":{"message":"Right Side Flag"},"right-side-flag/description":{"message":"Moves the green flag and the red stop sign to the right side of the stage."},"love-fave-animate/title":{"message":"Love Animations"},"love-fave-animate/description":{"message":"Animates the clicking of the love and favorite buttons on project pages."},"default-to-local/title":{"message":"Default to Local"},"default-to-local/description":{"message":"When creating a variable, sets the default to For This Sprite Only, rather than For All Sprites."},"start-stop-hotkeys/title":{"message":"Green Flag Hotkeys"},"start-stop-hotkeys/description":{"message":"Use Control + G to start or stop a project, depending on whether or not it is running."},"opacity-slider/title":{"message":"Opacity Slider"},"opacity-slider/description":{"message":"Change the opacity of objects in the paint editor."},"more-studios/title":{"message":"More Studios"},"more-studios/description":{"message":"Allows you to add projects to more studios instead of just 20."},"localized-explore/title":{"message":"Projects from Country"},"localized-explore/description":{"message":"On the explore page, makes projects from other countries less visible. This is to only show projects in languages that you understand."},"project-bar/title":{"message":"Project Bar"},"project-bar/description":{"message":"Continue to view the information for a project, even after you scroll down past the notes and credits."},"more-news/title":{"message":"More Scratch News"},"more-news/description":{"message":"On the main page, scroll through the Scratch News section and load more results."},"dumpster-fire/title":{"message":"Dumpster Fire"},"dumpster-fire/description":{"message":"The Scratch homepage is a liar with their \"Featured Projects\" section. This changes the name to the proper form, which is \"Dumpster Fire\"."},"steal-game/title":{"message":"Steal Game"},"steal-game/description":{"message":"Changes the remix button's text to 'Steal game'."},"statistics/title":{"message":"Statistics"},"statistics/description":{"message":"Adds a statistics button on the my stuff page that leads to your ScratchStats profile."},"echo-effect/title":{"message":"Echo Effect"},"echo-effect/description":{"message":"Adds the echo effect back to the Scratch sound editor."},"compact-buttons/title":{"message":"Compact Buttons"},"compact-buttons/description":{"message":"Buttons text gets removed and will get a new icon if it does not have one already."},"message-count/title":{"message":"Message Count"},"message-count/description":{"message":"Displays the user's message count on their profile next to the country."},"move-share-button/title":{"message":"Move Share Button"},"move-share-button/description":{"message":"On project pages, moves the share button next to the See Inside button."},"preview-textboxes/title":{"message":"Preview Textboxes"},"preview-textboxes/description":{"message":"Preview your profile About Me and What I'm Working On, and your projects' Instructions and Notes and Credits, so that you can see what it will look like to other users."},"more-tutorials/title":{"message":"More Tutorials"},"more-tutorials/description":{"message":"On the Ideas page, you can view additional tutorials from other Scratchers."},"simplify-action-buttons/title":{"message":"Simplify Action Buttons"},"simplify-action-buttons/description":{"message":"Displays project action buttons underneath Notes and Credits as their icons."},"slash-to-search/title":{"message":"Slash to Search"},"slash-to-search/description":{"message":"Click the slash key (/) to select the search bar and start typing."},"shared-clipboard/title":{"message":"Shared Clipboard"},"shared-clipboard/description":{"message":"Allows you to copy and paste items between paint editors in different projects."},"hide-footer/title":{"message":"Hide Footer"},"hide-footer/description":{"message":"The footer takes up a lot of unnecessary space. So hide it!"},"original-colors/title":{"message":"Revert to Blue"},"original-colors/description":{"message":"Changes all of the Scratch website's colors back to the original coloring from 3.0, before purple."},"simplify-editor-tabs/title":{"message":"Simplify Editor Tabs"},"simplify-editor-tabs/description":{"message":"Changes editor tabs to icon-only and shows them as a circle"},"live-character-counts/title":{"message":"Live Character Counts"},"live-character-counts/description":{"message":"On forum, studio, and project pages, displays the live character count for textboxes."},"advanced-search/title":{"message":"Search Profiles"},"advanced-search/description":{"message":"When you search for a user, a link to their profile will be at the top of the page."},"studio-links/title":{"message":"Studio Links as Titles"},"studio-links/description":{"message":"Replaces studio links with their titles, all across the Scratch website."},"block-studios/title":{"message":"Block Individual Studio Activity"},"block-studios/description":{"message":"Disable studio activity messages from specific studios."},"block-messages/title":{"message":"Block Users"},"block-messages/description":{"message":"Hide messages from users that you block. Other users won't see that you've blocked them."},"two-colors/title":{"message":"2.0 Block Colors"},"two-colors/description":{"message":"Replaces the colors of the blocks in the editor with the blocks from the 2.0 version of the code editor."},"project-links/title":{"message":"Project Links as Titles"},"project-links/description":{"message":"Replaces project links with their titles, all across the Scratch website."},"emoji-status/title":{"message":"Emoji Statuses"},"emoji-status/description":{"message":"Set the status on your profile to an emoji. Other ScratchTools users will be able to see this status."},"display-name/title":{"message":"Display Names"},"display-name/description":{"message":"Shows display names for Scratchers, and allows you to set your own display name. Display names show next to your username, and aren't limited like usernames are."},"isonline/title":{"message":"Show if User is Online"},"isonline/description":{"message":"On profile pages, displays if a user is online. This will also let other users see if you are online."},"plain-background/title":{"message":"Plain Background"},"plain-background/description":{"message":"Removes the dots from the background of the code editor."},"hide-advertisements/title":{"message":"Hide Ads in Comments"},"hide-advertisements/description":{"message":"Hides advertisements in the comments of profiles, projects, and studios. They can take up a lot of space in the comments."},"hide-block-category-names/title":{"message":"Hide Block Category Names"},"hide-block-category-names/description":{"message":"Changes the block categories in the editor to only show the colors of the categories."},"unlisted-projects/title":{"message":"Unlisted Projects"},"unlisted-projects/description":{"message":"Allows you to generate share links for unshared projects in the editor."},"stats-percentages/title":{"message":"Show Percentages for Project Stats"},"stats-percentages/description":{"message":"On the my stuff page, hover over the number of loves, favorites or remixes to view what percent of viewers performed the action."},"clone-counter/title":{"message":"Clone Counter"},"clone-counter/description":{"message":"Displays the total number of clones in the project above, in the stage header."},"colored-shadows/title":{"message":"Colored Shadows"},"colored-shadows/description":{"message":"Replaces the shadow created when you drag a block near another block with the color of the block that is being moved."},"creator-badge/title":{"message":"Author Badge"},"creator-badge/description":{"message":"Adds a badge next to comments written by the author of the project."},"original-buttons/title":{"message":"Original Buttons"},"original-buttons/description":{"message":"Returns the original love, favorite, remix, and view buttons to the Scratch project pages."},"box-shadows/title":{"message":"Content Box Shadows"},"box-shadows/description":{"message":"Adds shadows on all content boxes. When hovering one, the shadow will darken."},"admin-notifications/title":{"message":"Red Admin Message Indicator"},"admin-notifications/description":{"message":"If you have an admin notification from the Scratch Team, the message indicator in the navigation bar will display red instead of orange."},"nicknames/title":{"message":"Nicknames"},"nicknames/description":{"message":"Set nicknames for other Scratchers. Only you can see the nicknames, and their username will be replaced with the nickname when you see their name."},"load-more-forum-posts/title":{"message":"Load More Posts"},"load-more-forum-posts/description":{"message":"Load more posts in the forum without having to switch pages."},"scroll-project-titles/title":{"message":"Scroll Project Titles"},"scroll-project-titles/description":{"message":"Allows you to scroll and view the entire title of projects that you don't own."},"search-context-menus/title":{"message":"Search Context Menus"},"search-context-menus/description":{"message":"Type and search context menus to select an option efficiently. You can also press enter to select the top option."},"hover-user-cards/title":{"message":"User Hover Cards"},"hover-user-cards/description":{"message":"Hover over any username on the website to display the profile picture, username and follower count."},"exact-join-date/title":{"message":"Exact Join Date"},"exact-join-date/description":{"message":"Displays the exact time that a user joined, shown on their profile."},"upload-img-directly/title":{"message":"Direct Image Uploads"},"upload-img-directly/description":{"message":"Allows you to upload images to the Scratch forums for posts and signatures without having to use third party image uploading services."},"leave-studio/title":{"message":"Leave Studio Button"},"leave-studio/description":{"message":"Adds a button to the curators page of any studios you curate or manage that allows you to leave the studio. A confirmation shows first."},"frontpage-curator/title":{"message":"Frontpage Curator Name as Link"},"frontpage-curator/description":{"message":"Makes the name of the Frontpage Curator to a clickable link to his profile."},"minimized-remix-credits/title":{"message":"Minimized Remix Credits"},"minimized-remix-credits/description":{"message":"The remix credit boxes for projects take space from the project Instructions, so this makes the box smaller."},"follows-you/title":{"message":"Show if Following on Profile"},"follows-you/description":{"message":"If a user is following you, it will show next to their username when you visit their profile."},"custom-studio/title":{"message":"Custom Studio Section"},"custom-studio/description":{"message":"On the homepage of the Scratch website, the newest projects from the studio of your choice are displayed above the Featured Projects."},"highlight-unanswered/title":{"message":"Highlight Unanswered Forum Topics"},"highlight-unanswered/description":{"message":"Adds a blue highlight to topics in the forums that have no replies."},"search-assets/title":{"message":"Search Assets"},"search-assets/description":{"message":"Search through costume and sound assets in the editor."},"block-count-in-mystuff/title":{"message":"Block Count in My Stuff"},"block-count-in-mystuff/description":{"message":"Displays the block count for projects on the My Stuff page."},"pause-audio/title":{"message":"Pause Audio"},"pause-audio/description":{"message":"Allows you to pause and resume audio in the sound editor of Scratch projects."},"display-message-count-in-icon/title":{"message":"Display Message Count"},"display-message-count-in-icon/description":{"message":"Displays your current message count in the extension icon for ScratchTools."},"colored-context-menus/title":{"message":"Colored Context Menus"},"colored-context-menus/description":{"message":"Like in Scratch 2.0, colors the context menus based on the color of the block they're for."},"left-side-stage/title":{"message":"Stage on Left Side"},"left-side-stage/description":{"message":"Like in Scratch 2.0, moves the stage to the left side of the editor, rather than keeping it on the right."},"move-project-title-input/title":{"message":"Project Title Above Stage"},"move-project-title-input/description":{"message":"Like in Scratch 2.0, moves the project title input box above the stage, rather than in the navbar. This only applies to the editor."},"hide-disabled-menu-options/title":{"message":"Hide Disabled Context Menu Options"},"hide-disabled-menu-options/description":{"message":"Context menu options in the editor show even if they are disabled and unable to be used, so this feature will hide them if they are."},"follower-count/title":{"message":"Follower Count on Projects"},"follower-count/description":{"message":"Displays the follower count of the project creator on their projects."},"hide-studio-borders/title":{"message":"Hide Studio Frames"},"hide-studio-borders/description":{"message":"Removes the odd frames from around studio images on 2.0 pages."},"hide-textarea-labels/title":{"message":"Hide Project Instructions and Notes and Credits Labels"},"hide-textarea-labels/description":{"message":"The instructions and notes and credits labels take up quite a bit of space where there could be usual information. This removes them."},"default-to-trending/title":{"message":"Search Trending by Default"},"default-to-trending/description":{"message":"Currently, when you search projects on the Scratch website, you automatically search with the popular filter, instead of trending."},"infinite-backpack-scrolling/title":{"message":"Infinite Backpack Scrolling"},"infinite-backpack-scrolling/description":{"message":"Scroll through the backpack until you reach the very end (does take some time to load, but loads automatically)."},"hide-studio-messages/title":{"message":"Hide Studio Activity Messages"},"hide-studio-messages/description":{"message":"Hide the studio activity messages from the messages page- they pile up quickly and can get annoying."},"get-project-tags/title":{"message":"Display Project Tags"},"get-project-tags/description":{"message":"Lists all of the tags used in the project description right below the project notes and credits."},"link-to-propose/title":{"message":"Link Featured Projects to Studio"},"link-to-propose/description":{"message":"Links the Featured Projects box on the homepage to the Propose Projects to Be Featured studio."},"add-last-option-list/title":{"message":"Set List Item to Last"},"add-last-option-list/description":{"message":"Right click a 'get item [number] of [list]' to set it to select the very last item in the selected list."},"cloud-scratchers/title":{"message":"Online Scratchers in Multiplayer Game"},"cloud-scratchers/description":{"message":"On project pages, displays all of the Scratchers currently in that multiplayer game."},"editor-in-two/title":{"message":"2.0 Editor"},"editor-in-two/description":{"message":"Replaces the default 3.0 online project editor with the 2.0 editor. It's nostalgic, really."},"comment-on-closed-profile/title":{"message":"Comment On Profile With Comments Closed"},"comment-on-closed-profile/description":{"message":"If your profile comments are closed, you can now comment on your own profile anyways. Only you can comment on the profile."},"turbowarp-button-in-editor/title":{"message":"Open in TurboWarp from Editor"},"turbowarp-button-in-editor/description":{"message":"Adds a button to the editor so that you can instantly open the current project in TurboWarp."},"sprite-clones/title":{"message":"Sprite Clone Counter"},"sprite-clones/description":{"message":"Displays the clone count for each individual sprite."},"block-log/title":{"message":"Block Log"},"block-log/description":{"message":"Logs and displays all undo information for the block editor when you press ctrl+shift+l."},"scrollable-list-items/title":{"message":"Scrollable List Items"},"scrollable-list-items/description":{"message":"List items that have a value longer than the width of the list itself will get cut off. Now, you can scroll left and right through the list item."},"custom-fonts/title":{"message":"Custom Website Font"},"custom-fonts/description":{"message":"On the Scratch website, you can set the font to whatever font you want, as long as it is on the Google Fonts website. This is case-sensitive."},"project-timer/title":{"message":"Project Timer"},"project-timer/description":{"message":"Displays the amount of time (in seconds) that the project has been running for."},"colored-comments/title":{"message":"Colored Editor Comments"},"colored-comments/description":{"message":"Colors comments in the editor based on the color of their parent block."},"recently-viewed-projects/title":{"message":"Recently Viewed Projects"},"recently-viewed-projects/description":{"message":"Adds a tab to the My Stuff page where you can see a list of the projects that you have recently viewed."},"collapse-blocks/title":{"message":"Collapse Blocks"},"collapse-blocks/description":{"message":"Right-click block menus in the editor include a button that will let you collapse the selected block."},"set-featured-project/title":{"message":"Set Featured Project"},"set-featured-project/description":{"message":"On any project page, you can set your profile's featured project with the click of a button- even unshared projects."},"scratchformat/title":{"message":"ScratchFormat"},"scratchformat/description":{"message":"Format your comments with bold, italic, and more. The comments will be styled to everyone using ScratchTools."},"expand-editor/title":{"message":"Expand Editor"},"expand-editor/description":{"message":"Use the ctrl+e to switch between the default block editor view and one that hides the stage to expand editor itself."},"list-sprites/title":{"message":"Sprite List"},"list-sprites/description":{"message":"Replaces the sprite grid in the editor with a list that includes the block count and position of the sprite."},"check-if-trending/title":{"message":"Check if Trending"},"check-if-trending/description":{"message":"If a project you're viewing is on the trending page, the place on the trending page will be shown next to the share date on the project page."},"link-forum-activity/title":{"message":"Link Users in Forum Activity"},"link-forum-activity/description":{"message":"In the forums' last post section, makes the usernames link to the user's profile."},"remove-topic-and-post/title":{"message":"Hide Forum Category Counts"},"remove-topic-and-post/description":{"message":"Hides the forum homepage topic and post boxes."},"forum-homepage-emojis/title":{"message":"Forum Category Emojis"},"forum-homepage-emojis/description":{"message":"Adds colorful emojis on the forum homepage categories based on their topic."},"remove-collapse-buttons/title":{"message":"Hide Forum Collapse Buttons"},"remove-collapse-buttons/description":{"message":"Hides the collapse buttons on the forum main page."},"pin-projects/title":{"message":"Pin Projects to My Stuff"},"pin-projects/description":{"message":"Pin one of your projects to the top of your My Stuff page with the click of a button. You can unpin your pinned project or switch out your pinned project for another one as well."},"last-key-pressed/title":{"message":"Last Key Pressed"},"last-key-pressed/description":{"message":"On any project page and in the editor, you can view the last key that you have pressed while on that project, according to the project itself. This is good for games such as platformers."},"hide-signatures/title":{"message":"Hide Forum Signatures"},"hide-signatures/description":{"message":"Hides all forum signatures and signature dividers."},"twemoji-in-forums/title":{"message":"Better Forum Emojis"},"twemoji-in-forums/description":{"message":"Replaces the current low resolution forum emojis with high quality Twemojis."},"go-to-parent/title":{"message":"Go to Parent Button"},"go-to-parent/description":{"message":"In the editor for any project that is a remix, you can click a button to go to the editor in the parent project."},"most-popular-project/title":{"message":"Most Popular Project"},"most-popular-project/description":{"message":"Displays the most popular project (by views) of the user on profile pages. You can click on the project to view it."},"editor-dark-mode/title":{"message":"Editor Dark Mode"},"editor-dark-mode/description":{"message":"Switches the editor's light color scheme to a darker one."},"hide-studio-group-icon/title":{"message":"Hide Studio Group Icon"},"hide-studio-group-icon/description":{"message":"Hides the studio group icon, and only shows the studio thumbnail."},"colored-messages/title":{"message":"Colored Messages"},"colored-messages/description":{"message":"Colors your messages based on the type of message, such as loves, favorites, and studio invites."},"full-title/title":{"message":"Full Project Title"},"full-title/description":{"message":"On profile pages, hover over any project title to show the full title."},"fixed-box/title":{"message":"Fix Content Boxes"},"fixed-box/description":{"message":"Makes all sides of boxes on the pages rounded, rather than just the tops."},"user-bio/title":{"message":"User Bio on Hover"},"user-bio/description":{"message":"In profile comments, hover over any username to display the user's bio."},"nfe-project-checker/title":{"message":"NFE Project Checker"},"nfe-project-checker/description":{"message":"On project pages, displays whether the project is Safe, Unreviewed, or NSFE (Not Safe for Everyone)."},"sprite-data/title":{"message":"Display Sprite Data"},"sprite-data/description":{"message":"In the Code, Costumes, and Sounds tab for each sprite, the number of blocks, costumes, and sounds will be displayed for the current sprite."},"idea-generator/title":{"message":"Project Idea Generator"},"idea-generator/description":{"message":"On the Scratch Ideas page, there will be a section where you can generate project ideas if you need some."},"hide-stickies/title":{"message":"Hide Forum Stickies"},"hide-stickies/description":{"message":"Hides the basic stickies from the top of each forum topic."},"nfe-search/title":{"message":"NFE Search"},"nfe-search/description":{"message":"Use a button to search all projects, including NFE ones."},"open-in-new-tab/title":{"message":"Open in New Tab"},"open-in-new-tab/description":{"message":"Automatically opens links on project pages in a new tab."},"unbold-site-text/title":{"message":"Unbold Site Text"},"unbold-site-text/description":{"message":"Makes it so that all text across Scratch is unbolded, and just normal text."},"compact-navbar/title":{"message":"Compact Navbar"},"compact-navbar/description":{"message":"Makes more room on the navigation bar near where your profile dropdown is."},"delete-all/title":{"message":"Delete All Sprites"},"delete-all/description":{"message":"Adds an option in the right-click context menu for sprites. It will delete all sprites (after confirmation to make sure it isn't an accident)."},"round-profile-pictures/title":{"message":"Round Profile Pictures"},"round-profile-pictures/description":{"message":"All profile pictures on the Scratch website will be rounded."},"ocular-link/title":{"message":"Ocular Links in Forums"},"ocular-link/description":{"message":"Adds a link to any user's Ocular page right below their username on a post."},"forum-scratch-team/title":{"message":"Scratch Team Symbol in Forums"},"forum-scratch-team/description":{"message":"Next to the username of any Scratch Team member in the forums, an asterisk (*) is placed at the end of their username."},"remove-editor-icons/title":{"message":"Remove Editor Icons"},"remove-editor-icons/description":{"message":"Removes the icons from the tabs in the editor."},"sprite-watermark/title":{"message":"Remove Sprite Watermark"},"sprite-watermark/description":{"message":"Removes the sprite watermark that shows in the editor."},"compact-editor/title":{"message":"Compact Editor"},"compact-editor/description":{"message":"Makes sprite and backdrop information more compact."},"my-recent-projects/title":{"message":"Replace Scratch News with Recent Projects"},"my-recent-projects/description":{"message":"Replaces the Scratch News section on the homepage with your recently shared projects."},"focus-mode/title":{"message":"Focus Mode"},"focus-mode/description":{"message":"Removes the comments, studio and remix column, header, and footer on project pages when the button is clicked."}}
\ No newline at end of file
From 7eb6cc3330c0ecf9214e9a2d3f31481fa8d670a3 Mon Sep 17 00:00:00 2001
From: Masaabu
Date: Tue, 3 Sep 2024 13:36:38 +0900
Subject: [PATCH 160/253] outline-shape-options
---
features/features.json | 5 ++
features/outline-shape-options/data.json | 25 ++++++
.../resources/cap-butt.svg | 4 +
.../resources/cap-round.svg | 4 +
.../resources/cap-square.svg | 4 +
.../resources/join-arcs.svg | 4 +
.../resources/join-bevel.svg | 4 +
.../resources/join-miter-clip.svg | 4 +
.../resources/join-miter.svg | 4 +
.../resources/join-round.svg | 4 +
features/outline-shape-options/script.js | 80 +++++++++++++++++++
features/outline-shape-options/style.css | 3 +
12 files changed, 145 insertions(+)
create mode 100644 features/outline-shape-options/data.json
create mode 100644 features/outline-shape-options/resources/cap-butt.svg
create mode 100644 features/outline-shape-options/resources/cap-round.svg
create mode 100644 features/outline-shape-options/resources/cap-square.svg
create mode 100644 features/outline-shape-options/resources/join-arcs.svg
create mode 100644 features/outline-shape-options/resources/join-bevel.svg
create mode 100644 features/outline-shape-options/resources/join-miter-clip.svg
create mode 100644 features/outline-shape-options/resources/join-miter.svg
create mode 100644 features/outline-shape-options/resources/join-round.svg
create mode 100644 features/outline-shape-options/script.js
create mode 100644 features/outline-shape-options/style.css
diff --git a/features/features.json b/features/features.json
index 9588ccbe..caa770ce 100644
--- a/features/features.json
+++ b/features/features.json
@@ -1,4 +1,9 @@
[
+ {
+ "version": 2,
+ "id": "outline-shape-options",
+ "versionAdded": "v4.0.0"
+ },
{
"version": 2,
"id": "more-paint-functions",
diff --git a/features/outline-shape-options/data.json b/features/outline-shape-options/data.json
new file mode 100644
index 00000000..250698ba
--- /dev/null
+++ b/features/outline-shape-options/data.json
@@ -0,0 +1,25 @@
+{
+ "title": "Outline Shape Options",
+ "description": "Change the shape of the corners of the object's outline in the Paint Editor..",
+ "credits": [
+ {
+ "username": "Masaabu-YT",
+ "url": "https://scratch.mit.edu/users/Masaabu-YT/"
+ }
+ ],
+ "type": ["Editor"],
+ "tags": ["New", "Featured"],
+ "dynamic": true,
+ "scripts": [{ "file": "script.js", "runOn": "/projects/*" }],
+ "styles": [{ "file": "style.css", "runOn": "/projects/*" }],
+ "resources": [
+ { "name": "Join-miter", "path": "/resources/join-miter.svg" },
+ { "name": "Join-round", "path": "/resources/join-round.svg" },
+ { "name": "Join-bevel", "path": "/resources/join-bevel.svg" },
+ { "name": "Join-arcs", "path": "/resources/join-arcs.svg" },
+ { "name": "Join-miter-clip", "path": "/resources/join-miter-clip.svg" },
+ { "name": "Cap-butt", "path": "/resources/cap-butt.svg" },
+ { "name": "Cap-round", "path": "/resources/cap-round.svg" },
+ { "name": "Cap-square", "path": "/resources/cap-square.svg" }
+ ]
+}
diff --git a/features/outline-shape-options/resources/cap-butt.svg b/features/outline-shape-options/resources/cap-butt.svg
new file mode 100644
index 00000000..65b4c0e8
--- /dev/null
+++ b/features/outline-shape-options/resources/cap-butt.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/features/outline-shape-options/resources/cap-round.svg b/features/outline-shape-options/resources/cap-round.svg
new file mode 100644
index 00000000..1b0cf28d
--- /dev/null
+++ b/features/outline-shape-options/resources/cap-round.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/features/outline-shape-options/resources/cap-square.svg b/features/outline-shape-options/resources/cap-square.svg
new file mode 100644
index 00000000..c5d67c40
--- /dev/null
+++ b/features/outline-shape-options/resources/cap-square.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/features/outline-shape-options/resources/join-arcs.svg b/features/outline-shape-options/resources/join-arcs.svg
new file mode 100644
index 00000000..65452e9d
--- /dev/null
+++ b/features/outline-shape-options/resources/join-arcs.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/features/outline-shape-options/resources/join-bevel.svg b/features/outline-shape-options/resources/join-bevel.svg
new file mode 100644
index 00000000..e6886775
--- /dev/null
+++ b/features/outline-shape-options/resources/join-bevel.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/features/outline-shape-options/resources/join-miter-clip.svg b/features/outline-shape-options/resources/join-miter-clip.svg
new file mode 100644
index 00000000..6004671c
--- /dev/null
+++ b/features/outline-shape-options/resources/join-miter-clip.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/features/outline-shape-options/resources/join-miter.svg b/features/outline-shape-options/resources/join-miter.svg
new file mode 100644
index 00000000..710ba8f2
--- /dev/null
+++ b/features/outline-shape-options/resources/join-miter.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/features/outline-shape-options/resources/join-round.svg b/features/outline-shape-options/resources/join-round.svg
new file mode 100644
index 00000000..707fb425
--- /dev/null
+++ b/features/outline-shape-options/resources/join-round.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/features/outline-shape-options/script.js b/features/outline-shape-options/script.js
new file mode 100644
index 00000000..13995099
--- /dev/null
+++ b/features/outline-shape-options/script.js
@@ -0,0 +1,80 @@
+export default async function ({ feature, console }) {
+ const icons = {
+ Cap: [
+ "butt",
+ "round",
+ "square"
+ ],
+ Join: [
+ "miter",
+ "round",
+ "bevel",
+ "arcs",
+ "miter-clip"
+ ]
+ }
+
+ function createSection(type) {
+ const selectedItems = feature.traps.getPaper().project.selectedItems;
+ const result = document.createElement("div");
+ let strokeValue = undefined;
+
+ function changeItems(pos, value) {
+ for (var i in selectedItems) {
+ if (selectedItems[i][pos]!==undefined) {
+ selectedItems[i][pos] = value;
+ }
+ }
+ }
+
+ const row = document.createElement("div");
+ row.classList.add('color-picker_row-header_173LQ')
+ const labelName = document.createElement("span");
+ labelName.classList.add('color-picker_label-name_17igY')
+ labelName.textContent = `Line${type}`;
+ const labelReadout = document.createElement("span");
+ labelReadout.classList.add('color-picker_label-readout_9vjb2')
+ if (selectedItems.length === 1) {
+ strokeValue = `${selectedItems[0][`stroke${type}`]}`;
+ labelReadout.textContent = strokeValue;
+ }
+ row.appendChild(labelName);
+ row.appendChild(labelReadout);
+
+ const content = document.createElement("div")
+ content.classList.add('color-picker_gradient-picker-row_mnu4O')
+ icons[type].forEach(iconName => {
+ const icon = document.createElement("img");
+ icon.classList.add(`ste-outline-shape-options-${iconName}`)
+ icon.src = feature.self.getResource(`${type}-${iconName}`);
+ if (iconName !== strokeValue) icon.classList.add("ste-outline-shape-options-passive");
+ icon.addEventListener("click", () => {
+ changeItems(`stroke${type}`,`${iconName}`)
+ labelReadout.textContent = iconName
+ const elements = content.getElementsByTagName('*');
+ for (let i=0; i
Date: Tue, 3 Sep 2024 13:39:23 +0900
Subject: [PATCH 161/253] outline-shape-options
---
features/outline-shape-options/data.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/features/outline-shape-options/data.json b/features/outline-shape-options/data.json
index 250698ba..b467132a 100644
--- a/features/outline-shape-options/data.json
+++ b/features/outline-shape-options/data.json
@@ -1,6 +1,6 @@
{
"title": "Outline Shape Options",
- "description": "Change the shape of the corners of the object's outline in the Paint Editor..",
+ "description": "Change the shape of the corners of the object's outline in the Paint Editor.",
"credits": [
{
"username": "Masaabu-YT",
From 75f7a36a600e6e6fe5698f48937c89e3fc237e7c Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Tue, 3 Sep 2024 19:15:26 -0700
Subject: [PATCH 162/253] A few small changes
---
features/outline-shape-options/data.json | 4 +-
features/outline-shape-options/script.js | 84 ++++++++++++------------
2 files changed, 44 insertions(+), 44 deletions(-)
diff --git a/features/outline-shape-options/data.json b/features/outline-shape-options/data.json
index b467132a..a7606f33 100644
--- a/features/outline-shape-options/data.json
+++ b/features/outline-shape-options/data.json
@@ -1,6 +1,6 @@
{
- "title": "Outline Shape Options",
- "description": "Change the shape of the corners of the object's outline in the Paint Editor.",
+ "title": "Customizable Shape Outlines",
+ "description": "Adds more options in the outline dropdown to allow you to customize the shape of the outline, such as making corners round.",
"credits": [
{
"username": "Masaabu-YT",
diff --git a/features/outline-shape-options/script.js b/features/outline-shape-options/script.js
index 13995099..f6bcae54 100644
--- a/features/outline-shape-options/script.js
+++ b/features/outline-shape-options/script.js
@@ -1,18 +1,8 @@
export default async function ({ feature, console }) {
const icons = {
- Cap: [
- "butt",
- "round",
- "square"
- ],
- Join: [
- "miter",
- "round",
- "bevel",
- "arcs",
- "miter-clip"
- ]
- }
+ Cap: ["butt", "round", "square"],
+ Join: ["miter", "round", "bevel", "arcs", "miter-clip"],
+ };
function createSection(type) {
const selectedItems = feature.traps.getPaper().project.selectedItems;
@@ -21,19 +11,19 @@ export default async function ({ feature, console }) {
function changeItems(pos, value) {
for (var i in selectedItems) {
- if (selectedItems[i][pos]!==undefined) {
+ if (selectedItems[i][pos] !== undefined) {
selectedItems[i][pos] = value;
}
}
}
const row = document.createElement("div");
- row.classList.add('color-picker_row-header_173LQ')
+ row.classList.add("color-picker_row-header_173LQ");
const labelName = document.createElement("span");
- labelName.classList.add('color-picker_label-name_17igY')
- labelName.textContent = `Line${type}`;
+ labelName.classList.add("color-picker_label-name_17igY");
+ labelName.textContent = `Line ${type}`;
const labelReadout = document.createElement("span");
- labelReadout.classList.add('color-picker_label-readout_9vjb2')
+ labelReadout.classList.add("color-picker_label-readout_9vjb2");
if (selectedItems.length === 1) {
strokeValue = `${selectedItems[0][`stroke${type}`]}`;
labelReadout.textContent = strokeValue;
@@ -41,40 +31,50 @@ export default async function ({ feature, console }) {
row.appendChild(labelName);
row.appendChild(labelReadout);
- const content = document.createElement("div")
- content.classList.add('color-picker_gradient-picker-row_mnu4O')
- icons[type].forEach(iconName => {
+ const content = document.createElement("div");
+ content.classList.add("color-picker_gradient-picker-row_mnu4O");
+ icons[type].forEach((iconName) => {
const icon = document.createElement("img");
- icon.classList.add(`ste-outline-shape-options-${iconName}`)
+ icon.classList.add(`ste-outline-shape-options-${iconName}`);
icon.src = feature.self.getResource(`${type}-${iconName}`);
- if (iconName !== strokeValue) icon.classList.add("ste-outline-shape-options-passive");
+ if (iconName !== strokeValue)
+ icon.classList.add("ste-outline-shape-options-passive");
icon.addEventListener("click", () => {
- changeItems(`stroke${type}`,`${iconName}`)
- labelReadout.textContent = iconName
- const elements = content.getElementsByTagName('*');
- for (let i=0; i
Date: Thu, 5 Sep 2024 00:00:18 +0000
Subject: [PATCH 163/253] Updated file.
---
extras/feature-locales/en.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/feature-locales/en.json b/extras/feature-locales/en.json
index df65bcd4..5727477c 100644
--- a/extras/feature-locales/en.json
+++ b/extras/feature-locales/en.json
@@ -1 +1 @@
-{"more-paint-functions/title":{"message":"More Paint Functions"},"more-paint-functions/description":{"message":"Adds new functions to the paint editor. The new functions include unite (combining them into one), subtract (removing one shape from another), exclude (removing the overlap of 2 items), and intersect (removing everything but the overlap of 2 items). Each function only works with 2 items."},"asset-size/title":{"message":"Asset Size"},"asset-size/description":{"message":"Allows you to hover over any asset (costumes and sounds) in the editor to view the file size."},"disable-cloud/title":{"message":"Disable Cloud"},"disable-cloud/description":{"message":"Allows you to disable cloud data on any project. This will still receive cloud data information, but will not send any."},"webp-uploads/title":{"message":"WEBP Image Uploads"},"webp-uploads/description":{"message":"Allows you to upload webp images in the editor for new sprites, costumes and stage backdrops."},"remaining-replies/title":{"message":"Remaining Replies"},"remaining-replies/description":{"message":"Shows how many more replies are allowed in a thread of studio comments."},"video-recorder/title":{"message":"Record Stage"},"video-recorder/description":{"message":"Allows you to record the stage for projects while in the editor or on the project page."},"studio-creation-date/title":{"message":"Studio Creation Date"},"studio-creation-date/description":{"message":"Adds the creation date of the studio to the studio footer."},"explore-filter/title":{"message":"Explore Filter"},"explore-filter/description":{"message":"Customize project and studio search results with filters on the Search, Explore, and Studio pages."},"better-featured-projects/title":{"message":"Better Featured Projects"},"better-featured-projects/description":{"message":"Replaces the Featured Projects section with featured projects curated by ScratchTools users. You can submit your own projects to be featured as well."},"align-to-center/title":{"message":"Align to Center"},"align-to-center/description":{"message":"Allows you to align text in Instructions and Notes & Credits boxes to the center of the input."},"more-editor-fonts/title":{"message":"More Paint Editor Fonts"},"more-editor-fonts/description":{"message":"Allows you to use dozens of extra fonts in the paint editor."},"upload-thumbnail/title":{"message":"Set Thumbnail"},"upload-thumbnail/description":{"message":"Allows you to upload an image or GIF as a project thumbnail, or set the thumbnail to the current stage."},"paint-align/title":{"message":"Align Objects in Paint Editor"},"paint-align/description":{"message":"Adds a button to the paint editor that allows you to align selected items."},"rotate-gradient/title":{"message":"Rotate Gradients"},"rotate-gradient/description":{"message":"Allows you to rotate gradients in any direction in the costume editor. Works in both the vector and bitmap editors."},"change-monitor-opacity/title":{"message":"Custom Monitor Opacity"},"change-monitor-opacity/description":{"message":"Set the opacity of variables and lists on the stage to a custom number."},"project-reactions/title":{"message":"Project Reactions"},"project-reactions/description":{"message":"Allows you to react to projects with different emojis."},"chomp-blocks/title":{"message":"Extend Wrapped C Blocks"},"chomp-blocks/description":{"message":"Automatically extends C blocks to wrap around blocks that it is being placed over when dragging."},"custom-explore/title":{"message":"Custom Explore Redirect"},"custom-explore/description":{"message":"Automatically redirect to a specific tab on the Explore page."},"stage-in-spritepane/title":{"message":"Stage In Sprite Pane"},"stage-in-spritepane/description":{"message":"Move the stage button to the sprite pane to widen the sprite field."},"better-cloud-history/title":{"message":"Better Cloud History"},"better-cloud-history/description":{"message":"Updates the cloud monitor page to a more modern version with more details. You can click on variable names to sort by that variable."},"sprite-layers/title":{"message":"View Sprite Layers"},"sprite-layers/description":{"message":"Allows you to hover over the show/hide toggle in the sprite properties panel of the editor to view the sprite layers."},"hide-project-tags/title":{"message":"Hide Project Tags"},"hide-project-tags/description":{"message":"Hides all linked tags in the Instructions/Notes and Credits of projects."},"snap-to-grid/title":{"message":"Snap Scripts to Grid"},"snap-to-grid/description":{"message":"Automatically aligns scripts to the dotted grid in the editor when placed."},"select-self/title":{"message":"Select Self"},"select-self/description":{"message":"Allows you to select the current sprite when opening sprite dropdowns, instead of only other sprites."},"sidebar/title":{"message":"Sidebar"},"sidebar/description":{"message":"Adds a sidebar to the Scratch website, rather than just the normal navigation bar at the top of the screen."},"project-version-detector/title":{"message":"Project Version Detector"},"project-version-detector/description":{"message":"Checks when a project was shared and adds a label next to the share date to indicate which version of Scratch was in use at that time."},"fullscreen-explorer/title":{"message":"Fullscreen Project Grids"},"fullscreen-explorer/description":{"message":"Find projects on the big screen by removing the left and right blanks on the Trends, Search, Remix pages."},"project-descriptions/title":{"message":"Summarized Descriptions"},"project-descriptions/description":{"message":"Uses artificial intelligence to summarize project descriptions when you choose to, and shortens long descriptions down to important information, such as gameplay instructions."},"total-stats/title":{"message":"Total User Stats"},"total-stats/description":{"message":"Next to shared projects on a user's profile, displays the total loves, favorites and views that the user has received across all of their shared projects."},"project-miniplayer/title":{"message":"Project Miniplayer"},"project-miniplayer/description":{"message":"Scroll down on the project page and you will automatically see the project miniplayer."},"pin-comments/title":{"message":"Pin Project Comments"},"pin-comments/description":{"message":"Allows you to pin comments on your own projects and see what comments are pinned on other projects."},"download-project/title":{"message":"Download Projects"},"download-project/description":{"message":"Adds a button to project pages that allows you to download the project as an .sb3 file."},"blur-modal/title":{"message":"Blur Modal Backgrounds"},"blur-modal/description":{"message":"Blurs the backgrounds of modals instead of having a colored overlay."},"quick-search/title":{"message":"Quick Search"},"quick-search/description":{"message":"Easily jump between pages on the Scratch website with just the click of Control + K."},"favicon-messages/title":{"message":"Tab Message Count"},"favicon-messages/description":{"message":"Displays your message count in the tab favicon, the Scratch icon at the top of your tab."},"show-emoji-names/title":{"message":"Show Emoji Name"},"show-emoji-names/description":{"message":"Allows you to hover over Scratch emojis in the comments and view their names."},"more-block-themes/title":{"message":"More Block Themes"},"more-block-themes/description":{"message":"Adds additional themes for blocks in the code editor."},"more-key-inputs/title":{"message":"More Key Inputs"},"more-key-inputs/description":{"message":"Adds support for more keys on \"key pressed\" blocks."},"comment-tags/title":{"message":"Editor Comment Tags"},"comment-tags/description":{"message":"Add tags to editor comments to easily organize them."},"profile-flag/title":{"message":"Flag on Profile"},"profile-flag/description":{"message":"Adds flag emojis near selected locations on profile pages."},"follow-on-projects/title":{"message":"Follow on Project Page"},"follow-on-projects/description":{"message":"Follow users directly from the project page instead of going to their profile."},"dark-paint-editor/title":{"message":"Switch Paint Background"},"dark-paint-editor/description":{"message":"Adds a button next to the zoom controls in the paint editor that allows you to switch the background color of the paint editor between light and dark."},"specific-replies/title":{"message":"Specific Reply Messages"},"specific-replies/description":{"message":"In messages related to comments, specifies who a comment was replying to."},"better-trending-thumbnails/title":{"message":"Larger Thumbnails"},"better-trending-thumbnails/description":{"message":"Updates thumbnails on the trending and search pages to be larger and better fit the project/studio box."},"anti-generic/title":{"message":"Anti Generic"},"anti-generic/description":{"message":"On the explore and trending pages, this beta feature automatically hides repetitive projects, along with projects that it expects are generic. This includes projects with a lot of tags, common names, and project duplicates."},"wrap-lists/title":{"message":"Wrap List Items"},"wrap-lists/description":{"message":"Displays text in list items normally without cutting them off if they're too long."},"live-stats/title":{"message":"Live Stats"},"live-stats/description":{"message":"Updates the loves, favorites, remixes, and views on a project live, without having to reload to view the new counts."},"hide-scratch-news/title":{"message":"Hide Scratch News"},"hide-scratch-news/description":{"message":"Hides the Scratch News section on the homepage of the Scratch website."},"watch-later/title":{"message":"Save to Watch Later"},"watch-later/description":{"message":"Save projects you want to view later and they'll appear on a watch later page."},"remove-project-button/title":{"message":"Remove Project Button"},"remove-project-button/description":{"message":"Adds a button to projects in studios that allows you to easily remove it from the studio without opening the menu."},"right-side-flag/title":{"message":"Right Side Flag"},"right-side-flag/description":{"message":"Moves the green flag and the red stop sign to the right side of the stage."},"love-fave-animate/title":{"message":"Love Animations"},"love-fave-animate/description":{"message":"Animates the clicking of the love and favorite buttons on project pages."},"default-to-local/title":{"message":"Default to Local"},"default-to-local/description":{"message":"When creating a variable, sets the default to For This Sprite Only, rather than For All Sprites."},"start-stop-hotkeys/title":{"message":"Green Flag Hotkeys"},"start-stop-hotkeys/description":{"message":"Use Control + G to start or stop a project, depending on whether or not it is running."},"opacity-slider/title":{"message":"Opacity Slider"},"opacity-slider/description":{"message":"Change the opacity of objects in the paint editor."},"more-studios/title":{"message":"More Studios"},"more-studios/description":{"message":"Allows you to add projects to more studios instead of just 20."},"localized-explore/title":{"message":"Projects from Country"},"localized-explore/description":{"message":"On the explore page, makes projects from other countries less visible. This is to only show projects in languages that you understand."},"project-bar/title":{"message":"Project Bar"},"project-bar/description":{"message":"Continue to view the information for a project, even after you scroll down past the notes and credits."},"more-news/title":{"message":"More Scratch News"},"more-news/description":{"message":"On the main page, scroll through the Scratch News section and load more results."},"dumpster-fire/title":{"message":"Dumpster Fire"},"dumpster-fire/description":{"message":"The Scratch homepage is a liar with their \"Featured Projects\" section. This changes the name to the proper form, which is \"Dumpster Fire\"."},"steal-game/title":{"message":"Steal Game"},"steal-game/description":{"message":"Changes the remix button's text to 'Steal game'."},"statistics/title":{"message":"Statistics"},"statistics/description":{"message":"Adds a statistics button on the my stuff page that leads to your ScratchStats profile."},"echo-effect/title":{"message":"Echo Effect"},"echo-effect/description":{"message":"Adds the echo effect back to the Scratch sound editor."},"compact-buttons/title":{"message":"Compact Buttons"},"compact-buttons/description":{"message":"Buttons text gets removed and will get a new icon if it does not have one already."},"message-count/title":{"message":"Message Count"},"message-count/description":{"message":"Displays the user's message count on their profile next to the country."},"move-share-button/title":{"message":"Move Share Button"},"move-share-button/description":{"message":"On project pages, moves the share button next to the See Inside button."},"preview-textboxes/title":{"message":"Preview Textboxes"},"preview-textboxes/description":{"message":"Preview your profile About Me and What I'm Working On, and your projects' Instructions and Notes and Credits, so that you can see what it will look like to other users."},"more-tutorials/title":{"message":"More Tutorials"},"more-tutorials/description":{"message":"On the Ideas page, you can view additional tutorials from other Scratchers."},"simplify-action-buttons/title":{"message":"Simplify Action Buttons"},"simplify-action-buttons/description":{"message":"Displays project action buttons underneath Notes and Credits as their icons."},"slash-to-search/title":{"message":"Slash to Search"},"slash-to-search/description":{"message":"Click the slash key (/) to select the search bar and start typing."},"shared-clipboard/title":{"message":"Shared Clipboard"},"shared-clipboard/description":{"message":"Allows you to copy and paste items between paint editors in different projects."},"hide-footer/title":{"message":"Hide Footer"},"hide-footer/description":{"message":"The footer takes up a lot of unnecessary space. So hide it!"},"original-colors/title":{"message":"Revert to Blue"},"original-colors/description":{"message":"Changes all of the Scratch website's colors back to the original coloring from 3.0, before purple."},"simplify-editor-tabs/title":{"message":"Simplify Editor Tabs"},"simplify-editor-tabs/description":{"message":"Changes editor tabs to icon-only and shows them as a circle"},"live-character-counts/title":{"message":"Live Character Counts"},"live-character-counts/description":{"message":"On forum, studio, and project pages, displays the live character count for textboxes."},"advanced-search/title":{"message":"Search Profiles"},"advanced-search/description":{"message":"When you search for a user, a link to their profile will be at the top of the page."},"studio-links/title":{"message":"Studio Links as Titles"},"studio-links/description":{"message":"Replaces studio links with their titles, all across the Scratch website."},"block-studios/title":{"message":"Block Individual Studio Activity"},"block-studios/description":{"message":"Disable studio activity messages from specific studios."},"block-messages/title":{"message":"Block Users"},"block-messages/description":{"message":"Hide messages from users that you block. Other users won't see that you've blocked them."},"two-colors/title":{"message":"2.0 Block Colors"},"two-colors/description":{"message":"Replaces the colors of the blocks in the editor with the blocks from the 2.0 version of the code editor."},"project-links/title":{"message":"Project Links as Titles"},"project-links/description":{"message":"Replaces project links with their titles, all across the Scratch website."},"emoji-status/title":{"message":"Emoji Statuses"},"emoji-status/description":{"message":"Set the status on your profile to an emoji. Other ScratchTools users will be able to see this status."},"display-name/title":{"message":"Display Names"},"display-name/description":{"message":"Shows display names for Scratchers, and allows you to set your own display name. Display names show next to your username, and aren't limited like usernames are."},"isonline/title":{"message":"Show if User is Online"},"isonline/description":{"message":"On profile pages, displays if a user is online. This will also let other users see if you are online."},"plain-background/title":{"message":"Plain Background"},"plain-background/description":{"message":"Removes the dots from the background of the code editor."},"hide-advertisements/title":{"message":"Hide Ads in Comments"},"hide-advertisements/description":{"message":"Hides advertisements in the comments of profiles, projects, and studios. They can take up a lot of space in the comments."},"hide-block-category-names/title":{"message":"Hide Block Category Names"},"hide-block-category-names/description":{"message":"Changes the block categories in the editor to only show the colors of the categories."},"unlisted-projects/title":{"message":"Unlisted Projects"},"unlisted-projects/description":{"message":"Allows you to generate share links for unshared projects in the editor."},"stats-percentages/title":{"message":"Show Percentages for Project Stats"},"stats-percentages/description":{"message":"On the my stuff page, hover over the number of loves, favorites or remixes to view what percent of viewers performed the action."},"clone-counter/title":{"message":"Clone Counter"},"clone-counter/description":{"message":"Displays the total number of clones in the project above, in the stage header."},"colored-shadows/title":{"message":"Colored Shadows"},"colored-shadows/description":{"message":"Replaces the shadow created when you drag a block near another block with the color of the block that is being moved."},"creator-badge/title":{"message":"Author Badge"},"creator-badge/description":{"message":"Adds a badge next to comments written by the author of the project."},"original-buttons/title":{"message":"Original Buttons"},"original-buttons/description":{"message":"Returns the original love, favorite, remix, and view buttons to the Scratch project pages."},"box-shadows/title":{"message":"Content Box Shadows"},"box-shadows/description":{"message":"Adds shadows on all content boxes. When hovering one, the shadow will darken."},"admin-notifications/title":{"message":"Red Admin Message Indicator"},"admin-notifications/description":{"message":"If you have an admin notification from the Scratch Team, the message indicator in the navigation bar will display red instead of orange."},"nicknames/title":{"message":"Nicknames"},"nicknames/description":{"message":"Set nicknames for other Scratchers. Only you can see the nicknames, and their username will be replaced with the nickname when you see their name."},"load-more-forum-posts/title":{"message":"Load More Posts"},"load-more-forum-posts/description":{"message":"Load more posts in the forum without having to switch pages."},"scroll-project-titles/title":{"message":"Scroll Project Titles"},"scroll-project-titles/description":{"message":"Allows you to scroll and view the entire title of projects that you don't own."},"search-context-menus/title":{"message":"Search Context Menus"},"search-context-menus/description":{"message":"Type and search context menus to select an option efficiently. You can also press enter to select the top option."},"hover-user-cards/title":{"message":"User Hover Cards"},"hover-user-cards/description":{"message":"Hover over any username on the website to display the profile picture, username and follower count."},"exact-join-date/title":{"message":"Exact Join Date"},"exact-join-date/description":{"message":"Displays the exact time that a user joined, shown on their profile."},"upload-img-directly/title":{"message":"Direct Image Uploads"},"upload-img-directly/description":{"message":"Allows you to upload images to the Scratch forums for posts and signatures without having to use third party image uploading services."},"leave-studio/title":{"message":"Leave Studio Button"},"leave-studio/description":{"message":"Adds a button to the curators page of any studios you curate or manage that allows you to leave the studio. A confirmation shows first."},"frontpage-curator/title":{"message":"Frontpage Curator Name as Link"},"frontpage-curator/description":{"message":"Makes the name of the Frontpage Curator to a clickable link to his profile."},"minimized-remix-credits/title":{"message":"Minimized Remix Credits"},"minimized-remix-credits/description":{"message":"The remix credit boxes for projects take space from the project Instructions, so this makes the box smaller."},"follows-you/title":{"message":"Show if Following on Profile"},"follows-you/description":{"message":"If a user is following you, it will show next to their username when you visit their profile."},"custom-studio/title":{"message":"Custom Studio Section"},"custom-studio/description":{"message":"On the homepage of the Scratch website, the newest projects from the studio of your choice are displayed above the Featured Projects."},"highlight-unanswered/title":{"message":"Highlight Unanswered Forum Topics"},"highlight-unanswered/description":{"message":"Adds a blue highlight to topics in the forums that have no replies."},"search-assets/title":{"message":"Search Assets"},"search-assets/description":{"message":"Search through costume and sound assets in the editor."},"block-count-in-mystuff/title":{"message":"Block Count in My Stuff"},"block-count-in-mystuff/description":{"message":"Displays the block count for projects on the My Stuff page."},"pause-audio/title":{"message":"Pause Audio"},"pause-audio/description":{"message":"Allows you to pause and resume audio in the sound editor of Scratch projects."},"display-message-count-in-icon/title":{"message":"Display Message Count"},"display-message-count-in-icon/description":{"message":"Displays your current message count in the extension icon for ScratchTools."},"colored-context-menus/title":{"message":"Colored Context Menus"},"colored-context-menus/description":{"message":"Like in Scratch 2.0, colors the context menus based on the color of the block they're for."},"left-side-stage/title":{"message":"Stage on Left Side"},"left-side-stage/description":{"message":"Like in Scratch 2.0, moves the stage to the left side of the editor, rather than keeping it on the right."},"move-project-title-input/title":{"message":"Project Title Above Stage"},"move-project-title-input/description":{"message":"Like in Scratch 2.0, moves the project title input box above the stage, rather than in the navbar. This only applies to the editor."},"hide-disabled-menu-options/title":{"message":"Hide Disabled Context Menu Options"},"hide-disabled-menu-options/description":{"message":"Context menu options in the editor show even if they are disabled and unable to be used, so this feature will hide them if they are."},"follower-count/title":{"message":"Follower Count on Projects"},"follower-count/description":{"message":"Displays the follower count of the project creator on their projects."},"hide-studio-borders/title":{"message":"Hide Studio Frames"},"hide-studio-borders/description":{"message":"Removes the odd frames from around studio images on 2.0 pages."},"hide-textarea-labels/title":{"message":"Hide Project Instructions and Notes and Credits Labels"},"hide-textarea-labels/description":{"message":"The instructions and notes and credits labels take up quite a bit of space where there could be usual information. This removes them."},"default-to-trending/title":{"message":"Search Trending by Default"},"default-to-trending/description":{"message":"Currently, when you search projects on the Scratch website, you automatically search with the popular filter, instead of trending."},"infinite-backpack-scrolling/title":{"message":"Infinite Backpack Scrolling"},"infinite-backpack-scrolling/description":{"message":"Scroll through the backpack until you reach the very end (does take some time to load, but loads automatically)."},"hide-studio-messages/title":{"message":"Hide Studio Activity Messages"},"hide-studio-messages/description":{"message":"Hide the studio activity messages from the messages page- they pile up quickly and can get annoying."},"get-project-tags/title":{"message":"Display Project Tags"},"get-project-tags/description":{"message":"Lists all of the tags used in the project description right below the project notes and credits."},"link-to-propose/title":{"message":"Link Featured Projects to Studio"},"link-to-propose/description":{"message":"Links the Featured Projects box on the homepage to the Propose Projects to Be Featured studio."},"add-last-option-list/title":{"message":"Set List Item to Last"},"add-last-option-list/description":{"message":"Right click a 'get item [number] of [list]' to set it to select the very last item in the selected list."},"cloud-scratchers/title":{"message":"Online Scratchers in Multiplayer Game"},"cloud-scratchers/description":{"message":"On project pages, displays all of the Scratchers currently in that multiplayer game."},"editor-in-two/title":{"message":"2.0 Editor"},"editor-in-two/description":{"message":"Replaces the default 3.0 online project editor with the 2.0 editor. It's nostalgic, really."},"comment-on-closed-profile/title":{"message":"Comment On Profile With Comments Closed"},"comment-on-closed-profile/description":{"message":"If your profile comments are closed, you can now comment on your own profile anyways. Only you can comment on the profile."},"turbowarp-button-in-editor/title":{"message":"Open in TurboWarp from Editor"},"turbowarp-button-in-editor/description":{"message":"Adds a button to the editor so that you can instantly open the current project in TurboWarp."},"sprite-clones/title":{"message":"Sprite Clone Counter"},"sprite-clones/description":{"message":"Displays the clone count for each individual sprite."},"block-log/title":{"message":"Block Log"},"block-log/description":{"message":"Logs and displays all undo information for the block editor when you press ctrl+shift+l."},"scrollable-list-items/title":{"message":"Scrollable List Items"},"scrollable-list-items/description":{"message":"List items that have a value longer than the width of the list itself will get cut off. Now, you can scroll left and right through the list item."},"custom-fonts/title":{"message":"Custom Website Font"},"custom-fonts/description":{"message":"On the Scratch website, you can set the font to whatever font you want, as long as it is on the Google Fonts website. This is case-sensitive."},"project-timer/title":{"message":"Project Timer"},"project-timer/description":{"message":"Displays the amount of time (in seconds) that the project has been running for."},"colored-comments/title":{"message":"Colored Editor Comments"},"colored-comments/description":{"message":"Colors comments in the editor based on the color of their parent block."},"recently-viewed-projects/title":{"message":"Recently Viewed Projects"},"recently-viewed-projects/description":{"message":"Adds a tab to the My Stuff page where you can see a list of the projects that you have recently viewed."},"collapse-blocks/title":{"message":"Collapse Blocks"},"collapse-blocks/description":{"message":"Right-click block menus in the editor include a button that will let you collapse the selected block."},"set-featured-project/title":{"message":"Set Featured Project"},"set-featured-project/description":{"message":"On any project page, you can set your profile's featured project with the click of a button- even unshared projects."},"scratchformat/title":{"message":"ScratchFormat"},"scratchformat/description":{"message":"Format your comments with bold, italic, and more. The comments will be styled to everyone using ScratchTools."},"expand-editor/title":{"message":"Expand Editor"},"expand-editor/description":{"message":"Use the ctrl+e to switch between the default block editor view and one that hides the stage to expand editor itself."},"list-sprites/title":{"message":"Sprite List"},"list-sprites/description":{"message":"Replaces the sprite grid in the editor with a list that includes the block count and position of the sprite."},"check-if-trending/title":{"message":"Check if Trending"},"check-if-trending/description":{"message":"If a project you're viewing is on the trending page, the place on the trending page will be shown next to the share date on the project page."},"link-forum-activity/title":{"message":"Link Users in Forum Activity"},"link-forum-activity/description":{"message":"In the forums' last post section, makes the usernames link to the user's profile."},"remove-topic-and-post/title":{"message":"Hide Forum Category Counts"},"remove-topic-and-post/description":{"message":"Hides the forum homepage topic and post boxes."},"forum-homepage-emojis/title":{"message":"Forum Category Emojis"},"forum-homepage-emojis/description":{"message":"Adds colorful emojis on the forum homepage categories based on their topic."},"remove-collapse-buttons/title":{"message":"Hide Forum Collapse Buttons"},"remove-collapse-buttons/description":{"message":"Hides the collapse buttons on the forum main page."},"pin-projects/title":{"message":"Pin Projects to My Stuff"},"pin-projects/description":{"message":"Pin one of your projects to the top of your My Stuff page with the click of a button. You can unpin your pinned project or switch out your pinned project for another one as well."},"last-key-pressed/title":{"message":"Last Key Pressed"},"last-key-pressed/description":{"message":"On any project page and in the editor, you can view the last key that you have pressed while on that project, according to the project itself. This is good for games such as platformers."},"hide-signatures/title":{"message":"Hide Forum Signatures"},"hide-signatures/description":{"message":"Hides all forum signatures and signature dividers."},"twemoji-in-forums/title":{"message":"Better Forum Emojis"},"twemoji-in-forums/description":{"message":"Replaces the current low resolution forum emojis with high quality Twemojis."},"go-to-parent/title":{"message":"Go to Parent Button"},"go-to-parent/description":{"message":"In the editor for any project that is a remix, you can click a button to go to the editor in the parent project."},"most-popular-project/title":{"message":"Most Popular Project"},"most-popular-project/description":{"message":"Displays the most popular project (by views) of the user on profile pages. You can click on the project to view it."},"editor-dark-mode/title":{"message":"Editor Dark Mode"},"editor-dark-mode/description":{"message":"Switches the editor's light color scheme to a darker one."},"hide-studio-group-icon/title":{"message":"Hide Studio Group Icon"},"hide-studio-group-icon/description":{"message":"Hides the studio group icon, and only shows the studio thumbnail."},"colored-messages/title":{"message":"Colored Messages"},"colored-messages/description":{"message":"Colors your messages based on the type of message, such as loves, favorites, and studio invites."},"full-title/title":{"message":"Full Project Title"},"full-title/description":{"message":"On profile pages, hover over any project title to show the full title."},"fixed-box/title":{"message":"Fix Content Boxes"},"fixed-box/description":{"message":"Makes all sides of boxes on the pages rounded, rather than just the tops."},"user-bio/title":{"message":"User Bio on Hover"},"user-bio/description":{"message":"In profile comments, hover over any username to display the user's bio."},"nfe-project-checker/title":{"message":"NFE Project Checker"},"nfe-project-checker/description":{"message":"On project pages, displays whether the project is Safe, Unreviewed, or NSFE (Not Safe for Everyone)."},"sprite-data/title":{"message":"Display Sprite Data"},"sprite-data/description":{"message":"In the Code, Costumes, and Sounds tab for each sprite, the number of blocks, costumes, and sounds will be displayed for the current sprite."},"idea-generator/title":{"message":"Project Idea Generator"},"idea-generator/description":{"message":"On the Scratch Ideas page, there will be a section where you can generate project ideas if you need some."},"hide-stickies/title":{"message":"Hide Forum Stickies"},"hide-stickies/description":{"message":"Hides the basic stickies from the top of each forum topic."},"nfe-search/title":{"message":"NFE Search"},"nfe-search/description":{"message":"Use a button to search all projects, including NFE ones."},"open-in-new-tab/title":{"message":"Open in New Tab"},"open-in-new-tab/description":{"message":"Automatically opens links on project pages in a new tab."},"unbold-site-text/title":{"message":"Unbold Site Text"},"unbold-site-text/description":{"message":"Makes it so that all text across Scratch is unbolded, and just normal text."},"compact-navbar/title":{"message":"Compact Navbar"},"compact-navbar/description":{"message":"Makes more room on the navigation bar near where your profile dropdown is."},"delete-all/title":{"message":"Delete All Sprites"},"delete-all/description":{"message":"Adds an option in the right-click context menu for sprites. It will delete all sprites (after confirmation to make sure it isn't an accident)."},"round-profile-pictures/title":{"message":"Round Profile Pictures"},"round-profile-pictures/description":{"message":"All profile pictures on the Scratch website will be rounded."},"ocular-link/title":{"message":"Ocular Links in Forums"},"ocular-link/description":{"message":"Adds a link to any user's Ocular page right below their username on a post."},"forum-scratch-team/title":{"message":"Scratch Team Symbol in Forums"},"forum-scratch-team/description":{"message":"Next to the username of any Scratch Team member in the forums, an asterisk (*) is placed at the end of their username."},"remove-editor-icons/title":{"message":"Remove Editor Icons"},"remove-editor-icons/description":{"message":"Removes the icons from the tabs in the editor."},"sprite-watermark/title":{"message":"Remove Sprite Watermark"},"sprite-watermark/description":{"message":"Removes the sprite watermark that shows in the editor."},"compact-editor/title":{"message":"Compact Editor"},"compact-editor/description":{"message":"Makes sprite and backdrop information more compact."},"my-recent-projects/title":{"message":"Replace Scratch News with Recent Projects"},"my-recent-projects/description":{"message":"Replaces the Scratch News section on the homepage with your recently shared projects."},"focus-mode/title":{"message":"Focus Mode"},"focus-mode/description":{"message":"Removes the comments, studio and remix column, header, and footer on project pages when the button is clicked."}}
\ No newline at end of file
+{"outline-shape-options/title":{"message":"Customizable Shape Outlines"},"outline-shape-options/description":{"message":"Adds more options in the outline dropdown to allow you to customize the shape of the outline, such as making corners round."},"more-paint-functions/title":{"message":"More Paint Functions"},"more-paint-functions/description":{"message":"Adds new functions to the paint editor. The new functions include unite (combining them into one), subtract (removing one shape from another), exclude (removing the overlap of 2 items), and intersect (removing everything but the overlap of 2 items). Each function only works with 2 items."},"asset-size/title":{"message":"Asset Size"},"asset-size/description":{"message":"Allows you to hover over any asset (costumes and sounds) in the editor to view the file size."},"disable-cloud/title":{"message":"Disable Cloud"},"disable-cloud/description":{"message":"Allows you to disable cloud data on any project. This will still receive cloud data information, but will not send any."},"webp-uploads/title":{"message":"WEBP Image Uploads"},"webp-uploads/description":{"message":"Allows you to upload webp images in the editor for new sprites, costumes and stage backdrops."},"remaining-replies/title":{"message":"Remaining Replies"},"remaining-replies/description":{"message":"Shows how many more replies are allowed in a thread of studio comments."},"video-recorder/title":{"message":"Record Stage"},"video-recorder/description":{"message":"Allows you to record the stage for projects while in the editor or on the project page."},"studio-creation-date/title":{"message":"Studio Creation Date"},"studio-creation-date/description":{"message":"Adds the creation date of the studio to the studio footer."},"explore-filter/title":{"message":"Explore Filter"},"explore-filter/description":{"message":"Customize project and studio search results with filters on the Search, Explore, and Studio pages."},"better-featured-projects/title":{"message":"Better Featured Projects"},"better-featured-projects/description":{"message":"Replaces the Featured Projects section with featured projects curated by ScratchTools users. You can submit your own projects to be featured as well."},"align-to-center/title":{"message":"Align to Center"},"align-to-center/description":{"message":"Allows you to align text in Instructions and Notes & Credits boxes to the center of the input."},"more-editor-fonts/title":{"message":"More Paint Editor Fonts"},"more-editor-fonts/description":{"message":"Allows you to use dozens of extra fonts in the paint editor."},"upload-thumbnail/title":{"message":"Set Thumbnail"},"upload-thumbnail/description":{"message":"Allows you to upload an image or GIF as a project thumbnail, or set the thumbnail to the current stage."},"paint-align/title":{"message":"Align Objects in Paint Editor"},"paint-align/description":{"message":"Adds a button to the paint editor that allows you to align selected items."},"rotate-gradient/title":{"message":"Rotate Gradients"},"rotate-gradient/description":{"message":"Allows you to rotate gradients in any direction in the costume editor. Works in both the vector and bitmap editors."},"change-monitor-opacity/title":{"message":"Custom Monitor Opacity"},"change-monitor-opacity/description":{"message":"Set the opacity of variables and lists on the stage to a custom number."},"project-reactions/title":{"message":"Project Reactions"},"project-reactions/description":{"message":"Allows you to react to projects with different emojis."},"chomp-blocks/title":{"message":"Extend Wrapped C Blocks"},"chomp-blocks/description":{"message":"Automatically extends C blocks to wrap around blocks that it is being placed over when dragging."},"custom-explore/title":{"message":"Custom Explore Redirect"},"custom-explore/description":{"message":"Automatically redirect to a specific tab on the Explore page."},"stage-in-spritepane/title":{"message":"Stage In Sprite Pane"},"stage-in-spritepane/description":{"message":"Move the stage button to the sprite pane to widen the sprite field."},"better-cloud-history/title":{"message":"Better Cloud History"},"better-cloud-history/description":{"message":"Updates the cloud monitor page to a more modern version with more details. You can click on variable names to sort by that variable."},"sprite-layers/title":{"message":"View Sprite Layers"},"sprite-layers/description":{"message":"Allows you to hover over the show/hide toggle in the sprite properties panel of the editor to view the sprite layers."},"hide-project-tags/title":{"message":"Hide Project Tags"},"hide-project-tags/description":{"message":"Hides all linked tags in the Instructions/Notes and Credits of projects."},"snap-to-grid/title":{"message":"Snap Scripts to Grid"},"snap-to-grid/description":{"message":"Automatically aligns scripts to the dotted grid in the editor when placed."},"select-self/title":{"message":"Select Self"},"select-self/description":{"message":"Allows you to select the current sprite when opening sprite dropdowns, instead of only other sprites."},"sidebar/title":{"message":"Sidebar"},"sidebar/description":{"message":"Adds a sidebar to the Scratch website, rather than just the normal navigation bar at the top of the screen."},"project-version-detector/title":{"message":"Project Version Detector"},"project-version-detector/description":{"message":"Checks when a project was shared and adds a label next to the share date to indicate which version of Scratch was in use at that time."},"fullscreen-explorer/title":{"message":"Fullscreen Project Grids"},"fullscreen-explorer/description":{"message":"Find projects on the big screen by removing the left and right blanks on the Trends, Search, Remix pages."},"project-descriptions/title":{"message":"Summarized Descriptions"},"project-descriptions/description":{"message":"Uses artificial intelligence to summarize project descriptions when you choose to, and shortens long descriptions down to important information, such as gameplay instructions."},"total-stats/title":{"message":"Total User Stats"},"total-stats/description":{"message":"Next to shared projects on a user's profile, displays the total loves, favorites and views that the user has received across all of their shared projects."},"project-miniplayer/title":{"message":"Project Miniplayer"},"project-miniplayer/description":{"message":"Scroll down on the project page and you will automatically see the project miniplayer."},"pin-comments/title":{"message":"Pin Project Comments"},"pin-comments/description":{"message":"Allows you to pin comments on your own projects and see what comments are pinned on other projects."},"download-project/title":{"message":"Download Projects"},"download-project/description":{"message":"Adds a button to project pages that allows you to download the project as an .sb3 file."},"blur-modal/title":{"message":"Blur Modal Backgrounds"},"blur-modal/description":{"message":"Blurs the backgrounds of modals instead of having a colored overlay."},"quick-search/title":{"message":"Quick Search"},"quick-search/description":{"message":"Easily jump between pages on the Scratch website with just the click of Control + K."},"favicon-messages/title":{"message":"Tab Message Count"},"favicon-messages/description":{"message":"Displays your message count in the tab favicon, the Scratch icon at the top of your tab."},"show-emoji-names/title":{"message":"Show Emoji Name"},"show-emoji-names/description":{"message":"Allows you to hover over Scratch emojis in the comments and view their names."},"more-block-themes/title":{"message":"More Block Themes"},"more-block-themes/description":{"message":"Adds additional themes for blocks in the code editor."},"more-key-inputs/title":{"message":"More Key Inputs"},"more-key-inputs/description":{"message":"Adds support for more keys on \"key pressed\" blocks."},"comment-tags/title":{"message":"Editor Comment Tags"},"comment-tags/description":{"message":"Add tags to editor comments to easily organize them."},"profile-flag/title":{"message":"Flag on Profile"},"profile-flag/description":{"message":"Adds flag emojis near selected locations on profile pages."},"follow-on-projects/title":{"message":"Follow on Project Page"},"follow-on-projects/description":{"message":"Follow users directly from the project page instead of going to their profile."},"dark-paint-editor/title":{"message":"Switch Paint Background"},"dark-paint-editor/description":{"message":"Adds a button next to the zoom controls in the paint editor that allows you to switch the background color of the paint editor between light and dark."},"specific-replies/title":{"message":"Specific Reply Messages"},"specific-replies/description":{"message":"In messages related to comments, specifies who a comment was replying to."},"better-trending-thumbnails/title":{"message":"Larger Thumbnails"},"better-trending-thumbnails/description":{"message":"Updates thumbnails on the trending and search pages to be larger and better fit the project/studio box."},"anti-generic/title":{"message":"Anti Generic"},"anti-generic/description":{"message":"On the explore and trending pages, this beta feature automatically hides repetitive projects, along with projects that it expects are generic. This includes projects with a lot of tags, common names, and project duplicates."},"wrap-lists/title":{"message":"Wrap List Items"},"wrap-lists/description":{"message":"Displays text in list items normally without cutting them off if they're too long."},"live-stats/title":{"message":"Live Stats"},"live-stats/description":{"message":"Updates the loves, favorites, remixes, and views on a project live, without having to reload to view the new counts."},"hide-scratch-news/title":{"message":"Hide Scratch News"},"hide-scratch-news/description":{"message":"Hides the Scratch News section on the homepage of the Scratch website."},"watch-later/title":{"message":"Save to Watch Later"},"watch-later/description":{"message":"Save projects you want to view later and they'll appear on a watch later page."},"remove-project-button/title":{"message":"Remove Project Button"},"remove-project-button/description":{"message":"Adds a button to projects in studios that allows you to easily remove it from the studio without opening the menu."},"right-side-flag/title":{"message":"Right Side Flag"},"right-side-flag/description":{"message":"Moves the green flag and the red stop sign to the right side of the stage."},"love-fave-animate/title":{"message":"Love Animations"},"love-fave-animate/description":{"message":"Animates the clicking of the love and favorite buttons on project pages."},"default-to-local/title":{"message":"Default to Local"},"default-to-local/description":{"message":"When creating a variable, sets the default to For This Sprite Only, rather than For All Sprites."},"start-stop-hotkeys/title":{"message":"Green Flag Hotkeys"},"start-stop-hotkeys/description":{"message":"Use Control + G to start or stop a project, depending on whether or not it is running."},"opacity-slider/title":{"message":"Opacity Slider"},"opacity-slider/description":{"message":"Change the opacity of objects in the paint editor."},"more-studios/title":{"message":"More Studios"},"more-studios/description":{"message":"Allows you to add projects to more studios instead of just 20."},"localized-explore/title":{"message":"Projects from Country"},"localized-explore/description":{"message":"On the explore page, makes projects from other countries less visible. This is to only show projects in languages that you understand."},"project-bar/title":{"message":"Project Bar"},"project-bar/description":{"message":"Continue to view the information for a project, even after you scroll down past the notes and credits."},"more-news/title":{"message":"More Scratch News"},"more-news/description":{"message":"On the main page, scroll through the Scratch News section and load more results."},"dumpster-fire/title":{"message":"Dumpster Fire"},"dumpster-fire/description":{"message":"The Scratch homepage is a liar with their \"Featured Projects\" section. This changes the name to the proper form, which is \"Dumpster Fire\"."},"steal-game/title":{"message":"Steal Game"},"steal-game/description":{"message":"Changes the remix button's text to 'Steal game'."},"statistics/title":{"message":"Statistics"},"statistics/description":{"message":"Adds a statistics button on the my stuff page that leads to your ScratchStats profile."},"echo-effect/title":{"message":"Echo Effect"},"echo-effect/description":{"message":"Adds the echo effect back to the Scratch sound editor."},"compact-buttons/title":{"message":"Compact Buttons"},"compact-buttons/description":{"message":"Buttons text gets removed and will get a new icon if it does not have one already."},"message-count/title":{"message":"Message Count"},"message-count/description":{"message":"Displays the user's message count on their profile next to the country."},"move-share-button/title":{"message":"Move Share Button"},"move-share-button/description":{"message":"On project pages, moves the share button next to the See Inside button."},"preview-textboxes/title":{"message":"Preview Textboxes"},"preview-textboxes/description":{"message":"Preview your profile About Me and What I'm Working On, and your projects' Instructions and Notes and Credits, so that you can see what it will look like to other users."},"more-tutorials/title":{"message":"More Tutorials"},"more-tutorials/description":{"message":"On the Ideas page, you can view additional tutorials from other Scratchers."},"simplify-action-buttons/title":{"message":"Simplify Action Buttons"},"simplify-action-buttons/description":{"message":"Displays project action buttons underneath Notes and Credits as their icons."},"slash-to-search/title":{"message":"Slash to Search"},"slash-to-search/description":{"message":"Click the slash key (/) to select the search bar and start typing."},"shared-clipboard/title":{"message":"Shared Clipboard"},"shared-clipboard/description":{"message":"Allows you to copy and paste items between paint editors in different projects."},"hide-footer/title":{"message":"Hide Footer"},"hide-footer/description":{"message":"The footer takes up a lot of unnecessary space. So hide it!"},"original-colors/title":{"message":"Revert to Blue"},"original-colors/description":{"message":"Changes all of the Scratch website's colors back to the original coloring from 3.0, before purple."},"simplify-editor-tabs/title":{"message":"Simplify Editor Tabs"},"simplify-editor-tabs/description":{"message":"Changes editor tabs to icon-only and shows them as a circle"},"live-character-counts/title":{"message":"Live Character Counts"},"live-character-counts/description":{"message":"On forum, studio, and project pages, displays the live character count for textboxes."},"advanced-search/title":{"message":"Search Profiles"},"advanced-search/description":{"message":"When you search for a user, a link to their profile will be at the top of the page."},"studio-links/title":{"message":"Studio Links as Titles"},"studio-links/description":{"message":"Replaces studio links with their titles, all across the Scratch website."},"block-studios/title":{"message":"Block Individual Studio Activity"},"block-studios/description":{"message":"Disable studio activity messages from specific studios."},"block-messages/title":{"message":"Block Users"},"block-messages/description":{"message":"Hide messages from users that you block. Other users won't see that you've blocked them."},"two-colors/title":{"message":"2.0 Block Colors"},"two-colors/description":{"message":"Replaces the colors of the blocks in the editor with the blocks from the 2.0 version of the code editor."},"project-links/title":{"message":"Project Links as Titles"},"project-links/description":{"message":"Replaces project links with their titles, all across the Scratch website."},"emoji-status/title":{"message":"Emoji Statuses"},"emoji-status/description":{"message":"Set the status on your profile to an emoji. Other ScratchTools users will be able to see this status."},"display-name/title":{"message":"Display Names"},"display-name/description":{"message":"Shows display names for Scratchers, and allows you to set your own display name. Display names show next to your username, and aren't limited like usernames are."},"isonline/title":{"message":"Show if User is Online"},"isonline/description":{"message":"On profile pages, displays if a user is online. This will also let other users see if you are online."},"plain-background/title":{"message":"Plain Background"},"plain-background/description":{"message":"Removes the dots from the background of the code editor."},"hide-advertisements/title":{"message":"Hide Ads in Comments"},"hide-advertisements/description":{"message":"Hides advertisements in the comments of profiles, projects, and studios. They can take up a lot of space in the comments."},"hide-block-category-names/title":{"message":"Hide Block Category Names"},"hide-block-category-names/description":{"message":"Changes the block categories in the editor to only show the colors of the categories."},"unlisted-projects/title":{"message":"Unlisted Projects"},"unlisted-projects/description":{"message":"Allows you to generate share links for unshared projects in the editor."},"stats-percentages/title":{"message":"Show Percentages for Project Stats"},"stats-percentages/description":{"message":"On the my stuff page, hover over the number of loves, favorites or remixes to view what percent of viewers performed the action."},"clone-counter/title":{"message":"Clone Counter"},"clone-counter/description":{"message":"Displays the total number of clones in the project above, in the stage header."},"colored-shadows/title":{"message":"Colored Shadows"},"colored-shadows/description":{"message":"Replaces the shadow created when you drag a block near another block with the color of the block that is being moved."},"creator-badge/title":{"message":"Author Badge"},"creator-badge/description":{"message":"Adds a badge next to comments written by the author of the project."},"original-buttons/title":{"message":"Original Buttons"},"original-buttons/description":{"message":"Returns the original love, favorite, remix, and view buttons to the Scratch project pages."},"box-shadows/title":{"message":"Content Box Shadows"},"box-shadows/description":{"message":"Adds shadows on all content boxes. When hovering one, the shadow will darken."},"admin-notifications/title":{"message":"Red Admin Message Indicator"},"admin-notifications/description":{"message":"If you have an admin notification from the Scratch Team, the message indicator in the navigation bar will display red instead of orange."},"nicknames/title":{"message":"Nicknames"},"nicknames/description":{"message":"Set nicknames for other Scratchers. Only you can see the nicknames, and their username will be replaced with the nickname when you see their name."},"load-more-forum-posts/title":{"message":"Load More Posts"},"load-more-forum-posts/description":{"message":"Load more posts in the forum without having to switch pages."},"scroll-project-titles/title":{"message":"Scroll Project Titles"},"scroll-project-titles/description":{"message":"Allows you to scroll and view the entire title of projects that you don't own."},"search-context-menus/title":{"message":"Search Context Menus"},"search-context-menus/description":{"message":"Type and search context menus to select an option efficiently. You can also press enter to select the top option."},"hover-user-cards/title":{"message":"User Hover Cards"},"hover-user-cards/description":{"message":"Hover over any username on the website to display the profile picture, username and follower count."},"exact-join-date/title":{"message":"Exact Join Date"},"exact-join-date/description":{"message":"Displays the exact time that a user joined, shown on their profile."},"upload-img-directly/title":{"message":"Direct Image Uploads"},"upload-img-directly/description":{"message":"Allows you to upload images to the Scratch forums for posts and signatures without having to use third party image uploading services."},"leave-studio/title":{"message":"Leave Studio Button"},"leave-studio/description":{"message":"Adds a button to the curators page of any studios you curate or manage that allows you to leave the studio. A confirmation shows first."},"frontpage-curator/title":{"message":"Frontpage Curator Name as Link"},"frontpage-curator/description":{"message":"Makes the name of the Frontpage Curator to a clickable link to his profile."},"minimized-remix-credits/title":{"message":"Minimized Remix Credits"},"minimized-remix-credits/description":{"message":"The remix credit boxes for projects take space from the project Instructions, so this makes the box smaller."},"follows-you/title":{"message":"Show if Following on Profile"},"follows-you/description":{"message":"If a user is following you, it will show next to their username when you visit their profile."},"custom-studio/title":{"message":"Custom Studio Section"},"custom-studio/description":{"message":"On the homepage of the Scratch website, the newest projects from the studio of your choice are displayed above the Featured Projects."},"highlight-unanswered/title":{"message":"Highlight Unanswered Forum Topics"},"highlight-unanswered/description":{"message":"Adds a blue highlight to topics in the forums that have no replies."},"search-assets/title":{"message":"Search Assets"},"search-assets/description":{"message":"Search through costume and sound assets in the editor."},"block-count-in-mystuff/title":{"message":"Block Count in My Stuff"},"block-count-in-mystuff/description":{"message":"Displays the block count for projects on the My Stuff page."},"pause-audio/title":{"message":"Pause Audio"},"pause-audio/description":{"message":"Allows you to pause and resume audio in the sound editor of Scratch projects."},"display-message-count-in-icon/title":{"message":"Display Message Count"},"display-message-count-in-icon/description":{"message":"Displays your current message count in the extension icon for ScratchTools."},"colored-context-menus/title":{"message":"Colored Context Menus"},"colored-context-menus/description":{"message":"Like in Scratch 2.0, colors the context menus based on the color of the block they're for."},"left-side-stage/title":{"message":"Stage on Left Side"},"left-side-stage/description":{"message":"Like in Scratch 2.0, moves the stage to the left side of the editor, rather than keeping it on the right."},"move-project-title-input/title":{"message":"Project Title Above Stage"},"move-project-title-input/description":{"message":"Like in Scratch 2.0, moves the project title input box above the stage, rather than in the navbar. This only applies to the editor."},"hide-disabled-menu-options/title":{"message":"Hide Disabled Context Menu Options"},"hide-disabled-menu-options/description":{"message":"Context menu options in the editor show even if they are disabled and unable to be used, so this feature will hide them if they are."},"follower-count/title":{"message":"Follower Count on Projects"},"follower-count/description":{"message":"Displays the follower count of the project creator on their projects."},"hide-studio-borders/title":{"message":"Hide Studio Frames"},"hide-studio-borders/description":{"message":"Removes the odd frames from around studio images on 2.0 pages."},"hide-textarea-labels/title":{"message":"Hide Project Instructions and Notes and Credits Labels"},"hide-textarea-labels/description":{"message":"The instructions and notes and credits labels take up quite a bit of space where there could be usual information. This removes them."},"default-to-trending/title":{"message":"Search Trending by Default"},"default-to-trending/description":{"message":"Currently, when you search projects on the Scratch website, you automatically search with the popular filter, instead of trending."},"infinite-backpack-scrolling/title":{"message":"Infinite Backpack Scrolling"},"infinite-backpack-scrolling/description":{"message":"Scroll through the backpack until you reach the very end (does take some time to load, but loads automatically)."},"hide-studio-messages/title":{"message":"Hide Studio Activity Messages"},"hide-studio-messages/description":{"message":"Hide the studio activity messages from the messages page- they pile up quickly and can get annoying."},"get-project-tags/title":{"message":"Display Project Tags"},"get-project-tags/description":{"message":"Lists all of the tags used in the project description right below the project notes and credits."},"link-to-propose/title":{"message":"Link Featured Projects to Studio"},"link-to-propose/description":{"message":"Links the Featured Projects box on the homepage to the Propose Projects to Be Featured studio."},"add-last-option-list/title":{"message":"Set List Item to Last"},"add-last-option-list/description":{"message":"Right click a 'get item [number] of [list]' to set it to select the very last item in the selected list."},"cloud-scratchers/title":{"message":"Online Scratchers in Multiplayer Game"},"cloud-scratchers/description":{"message":"On project pages, displays all of the Scratchers currently in that multiplayer game."},"editor-in-two/title":{"message":"2.0 Editor"},"editor-in-two/description":{"message":"Replaces the default 3.0 online project editor with the 2.0 editor. It's nostalgic, really."},"comment-on-closed-profile/title":{"message":"Comment On Profile With Comments Closed"},"comment-on-closed-profile/description":{"message":"If your profile comments are closed, you can now comment on your own profile anyways. Only you can comment on the profile."},"turbowarp-button-in-editor/title":{"message":"Open in TurboWarp from Editor"},"turbowarp-button-in-editor/description":{"message":"Adds a button to the editor so that you can instantly open the current project in TurboWarp."},"sprite-clones/title":{"message":"Sprite Clone Counter"},"sprite-clones/description":{"message":"Displays the clone count for each individual sprite."},"block-log/title":{"message":"Block Log"},"block-log/description":{"message":"Logs and displays all undo information for the block editor when you press ctrl+shift+l."},"scrollable-list-items/title":{"message":"Scrollable List Items"},"scrollable-list-items/description":{"message":"List items that have a value longer than the width of the list itself will get cut off. Now, you can scroll left and right through the list item."},"custom-fonts/title":{"message":"Custom Website Font"},"custom-fonts/description":{"message":"On the Scratch website, you can set the font to whatever font you want, as long as it is on the Google Fonts website. This is case-sensitive."},"project-timer/title":{"message":"Project Timer"},"project-timer/description":{"message":"Displays the amount of time (in seconds) that the project has been running for."},"colored-comments/title":{"message":"Colored Editor Comments"},"colored-comments/description":{"message":"Colors comments in the editor based on the color of their parent block."},"recently-viewed-projects/title":{"message":"Recently Viewed Projects"},"recently-viewed-projects/description":{"message":"Adds a tab to the My Stuff page where you can see a list of the projects that you have recently viewed."},"collapse-blocks/title":{"message":"Collapse Blocks"},"collapse-blocks/description":{"message":"Right-click block menus in the editor include a button that will let you collapse the selected block."},"set-featured-project/title":{"message":"Set Featured Project"},"set-featured-project/description":{"message":"On any project page, you can set your profile's featured project with the click of a button- even unshared projects."},"scratchformat/title":{"message":"ScratchFormat"},"scratchformat/description":{"message":"Format your comments with bold, italic, and more. The comments will be styled to everyone using ScratchTools."},"expand-editor/title":{"message":"Expand Editor"},"expand-editor/description":{"message":"Use the ctrl+e to switch between the default block editor view and one that hides the stage to expand editor itself."},"list-sprites/title":{"message":"Sprite List"},"list-sprites/description":{"message":"Replaces the sprite grid in the editor with a list that includes the block count and position of the sprite."},"check-if-trending/title":{"message":"Check if Trending"},"check-if-trending/description":{"message":"If a project you're viewing is on the trending page, the place on the trending page will be shown next to the share date on the project page."},"link-forum-activity/title":{"message":"Link Users in Forum Activity"},"link-forum-activity/description":{"message":"In the forums' last post section, makes the usernames link to the user's profile."},"remove-topic-and-post/title":{"message":"Hide Forum Category Counts"},"remove-topic-and-post/description":{"message":"Hides the forum homepage topic and post boxes."},"forum-homepage-emojis/title":{"message":"Forum Category Emojis"},"forum-homepage-emojis/description":{"message":"Adds colorful emojis on the forum homepage categories based on their topic."},"remove-collapse-buttons/title":{"message":"Hide Forum Collapse Buttons"},"remove-collapse-buttons/description":{"message":"Hides the collapse buttons on the forum main page."},"pin-projects/title":{"message":"Pin Projects to My Stuff"},"pin-projects/description":{"message":"Pin one of your projects to the top of your My Stuff page with the click of a button. You can unpin your pinned project or switch out your pinned project for another one as well."},"last-key-pressed/title":{"message":"Last Key Pressed"},"last-key-pressed/description":{"message":"On any project page and in the editor, you can view the last key that you have pressed while on that project, according to the project itself. This is good for games such as platformers."},"hide-signatures/title":{"message":"Hide Forum Signatures"},"hide-signatures/description":{"message":"Hides all forum signatures and signature dividers."},"twemoji-in-forums/title":{"message":"Better Forum Emojis"},"twemoji-in-forums/description":{"message":"Replaces the current low resolution forum emojis with high quality Twemojis."},"go-to-parent/title":{"message":"Go to Parent Button"},"go-to-parent/description":{"message":"In the editor for any project that is a remix, you can click a button to go to the editor in the parent project."},"most-popular-project/title":{"message":"Most Popular Project"},"most-popular-project/description":{"message":"Displays the most popular project (by views) of the user on profile pages. You can click on the project to view it."},"editor-dark-mode/title":{"message":"Editor Dark Mode"},"editor-dark-mode/description":{"message":"Switches the editor's light color scheme to a darker one."},"hide-studio-group-icon/title":{"message":"Hide Studio Group Icon"},"hide-studio-group-icon/description":{"message":"Hides the studio group icon, and only shows the studio thumbnail."},"colored-messages/title":{"message":"Colored Messages"},"colored-messages/description":{"message":"Colors your messages based on the type of message, such as loves, favorites, and studio invites."},"full-title/title":{"message":"Full Project Title"},"full-title/description":{"message":"On profile pages, hover over any project title to show the full title."},"fixed-box/title":{"message":"Fix Content Boxes"},"fixed-box/description":{"message":"Makes all sides of boxes on the pages rounded, rather than just the tops."},"user-bio/title":{"message":"User Bio on Hover"},"user-bio/description":{"message":"In profile comments, hover over any username to display the user's bio."},"nfe-project-checker/title":{"message":"NFE Project Checker"},"nfe-project-checker/description":{"message":"On project pages, displays whether the project is Safe, Unreviewed, or NSFE (Not Safe for Everyone)."},"sprite-data/title":{"message":"Display Sprite Data"},"sprite-data/description":{"message":"In the Code, Costumes, and Sounds tab for each sprite, the number of blocks, costumes, and sounds will be displayed for the current sprite."},"idea-generator/title":{"message":"Project Idea Generator"},"idea-generator/description":{"message":"On the Scratch Ideas page, there will be a section where you can generate project ideas if you need some."},"hide-stickies/title":{"message":"Hide Forum Stickies"},"hide-stickies/description":{"message":"Hides the basic stickies from the top of each forum topic."},"nfe-search/title":{"message":"NFE Search"},"nfe-search/description":{"message":"Use a button to search all projects, including NFE ones."},"open-in-new-tab/title":{"message":"Open in New Tab"},"open-in-new-tab/description":{"message":"Automatically opens links on project pages in a new tab."},"unbold-site-text/title":{"message":"Unbold Site Text"},"unbold-site-text/description":{"message":"Makes it so that all text across Scratch is unbolded, and just normal text."},"compact-navbar/title":{"message":"Compact Navbar"},"compact-navbar/description":{"message":"Makes more room on the navigation bar near where your profile dropdown is."},"delete-all/title":{"message":"Delete All Sprites"},"delete-all/description":{"message":"Adds an option in the right-click context menu for sprites. It will delete all sprites (after confirmation to make sure it isn't an accident)."},"round-profile-pictures/title":{"message":"Round Profile Pictures"},"round-profile-pictures/description":{"message":"All profile pictures on the Scratch website will be rounded."},"ocular-link/title":{"message":"Ocular Links in Forums"},"ocular-link/description":{"message":"Adds a link to any user's Ocular page right below their username on a post."},"forum-scratch-team/title":{"message":"Scratch Team Symbol in Forums"},"forum-scratch-team/description":{"message":"Next to the username of any Scratch Team member in the forums, an asterisk (*) is placed at the end of their username."},"remove-editor-icons/title":{"message":"Remove Editor Icons"},"remove-editor-icons/description":{"message":"Removes the icons from the tabs in the editor."},"sprite-watermark/title":{"message":"Remove Sprite Watermark"},"sprite-watermark/description":{"message":"Removes the sprite watermark that shows in the editor."},"compact-editor/title":{"message":"Compact Editor"},"compact-editor/description":{"message":"Makes sprite and backdrop information more compact."},"my-recent-projects/title":{"message":"Replace Scratch News with Recent Projects"},"my-recent-projects/description":{"message":"Replaces the Scratch News section on the homepage with your recently shared projects."},"focus-mode/title":{"message":"Focus Mode"},"focus-mode/description":{"message":"Removes the comments, studio and remix column, header, and footer on project pages when the button is clicked."}}
\ No newline at end of file
From fa46e4bd3d97746378e7dba8ce5011b5cdc6f3e0 Mon Sep 17 00:00:00 2001
From: Masaabu
Date: Fri, 6 Sep 2024 17:18:05 +0900
Subject: [PATCH 164/253] fix-feature-traps-paint-cant-get
---
api/vm.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/api/vm.js b/api/vm.js
index f587e948..413379e6 100644
--- a/api/vm.js
+++ b/api/vm.js
@@ -176,7 +176,7 @@ ScratchTools.Scratch.waitForContextMenu = function (info) {
};
ScratchTools.Scratch.scratchPaint = function () {
- var app = document.querySelector(".paint-editor_mode-selector_28iiQ");
+ var app = document.querySelector(".paint-editor_mode-selector_28iiQ")||document.querySelector(".paint-editor_mode-selector_O2uhP");
if (app !== null) {
return (
app[
From cb6929ddb3f95e64ee0a20ccd57bc265f6c7f470 Mon Sep 17 00:00:00 2001
From: Masaabu
Date: Mon, 9 Sep 2024 12:36:14 +0900
Subject: [PATCH 165/253] update script.js
---
features/project-miniplayer/script.js | 53 ++++++++++++++++-----------
1 file changed, 31 insertions(+), 22 deletions(-)
diff --git a/features/project-miniplayer/script.js b/features/project-miniplayer/script.js
index 36c0df84..83ae03f7 100644
--- a/features/project-miniplayer/script.js
+++ b/features/project-miniplayer/script.js
@@ -1,11 +1,38 @@
export default async function ({ feature, console }) {
+ let observerEnabled = false;
+
const miniplayerElement = document.createElement('div');
miniplayerElement.className = 'ste-project-miniplayer';
document.body.appendChild(miniplayerElement);
- await ScratchTools.waitForElement("div.guiPlayer")
- const guiPlayer = document.getElementsByClassName("guiPlayer")[0]
- const projectHeader = document.querySelector('.description-block');
- const title = projectHeader.closest('.flex-row.project-notes');
+
+ await ScratchTools.waitForElements("div.guiPlayer", function(element) {
+ if (observerEnabled === false) createObserver(element)
+ });
+ function createObserver(guiPlayer) {
+ const projectHeader = document.querySelector('.description-block');
+ const title = projectHeader.closest('.flex-row.project-notes');
+
+ const callback = (entries, observer) => {
+ const editorPlayer = document.querySelector(".gui_stage-and-target-wrapper_Qg4hA .stage-wrapper_stage-wrapper_odn2t");
+ entries.forEach(entry => {
+ if (entry.isIntersecting) {
+ miniplayerElement.style.display = 'none';
+ title.insertAdjacentElement('beforebegin', guiPlayer);
+ } else if (editorPlayer) {
+ miniplayerElement.style.display = 'none';
+ observerObject.disconnect()
+ observerEnabled = false;
+ } else {
+ miniplayerElement.style.display = 'block';
+ miniplayerElement.appendChild(guiPlayer);
+ }
+ });
+ };
+ const observerObject = new IntersectionObserver(callback);
+ const targetArea = document.querySelector("div.preview .inner .project-notes")
+ observerObject.observe(targetArea);
+ observerEnabled = true;
+ }
function updateSetting (key, value) {
switch (key) {
@@ -49,24 +76,6 @@ export default async function ({ feature, console }) {
updateSetting('position-bottom', await feature.settings.get("position-bottom"));
updateSetting('opacity', await feature.settings.get("opacity"));
- const observerOptions = {
- root: document
- };
- const callback = (entries, observer) => {
- entries.forEach(entry => {
- if (entry.isIntersecting) {
- miniplayerElement.style.display = 'none';
- title.insertAdjacentElement('beforebegin', guiPlayer);
- } else {
- miniplayerElement.style.display = 'block';
- miniplayerElement.appendChild(guiPlayer);
- }
- });
- };
- const observerObject = new IntersectionObserver(callback, observerOptions);
- const targetArea = document.querySelector("div.preview .inner .project-notes")
- observerObject.observe(targetArea);
-
feature.settings.addEventListener("changed", function({ key, value }) {
updateSetting(key, value)
})
From 7702af5557f40ba85bfef0aebdd5a8516872a3c7 Mon Sep 17 00:00:00 2001
From: MaterArc <105017592+MaterArc@users.noreply.github.com>
Date: Fri, 13 Sep 2024 07:19:11 -0400
Subject: [PATCH 166/253] Fix Compatibility Issue
Resolves #962
---
features/sprite-layers/style.css | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/features/sprite-layers/style.css b/features/sprite-layers/style.css
index 178f6f77..38d7afbb 100644
--- a/features/sprite-layers/style.css
+++ b/features/sprite-layers/style.css
@@ -50,4 +50,8 @@
height: 2rem;
position: relative;
top: .5rem;
-}
\ No newline at end of file
+}
+
+[class^="sprite-info_sprite-info_"]:hover {
+ overflow: visible !important;
+}
From baa63918b5454ff409e506705227bef5a2a757f2 Mon Sep 17 00:00:00 2001
From: MaterArc <105017592+MaterArc@users.noreply.github.com>
Date: Fri, 13 Sep 2024 20:31:30 -0400
Subject: [PATCH 167/253] Fix text not showing up
---
features/sprite-layers/style.css | 2 ++
1 file changed, 2 insertions(+)
diff --git a/features/sprite-layers/style.css b/features/sprite-layers/style.css
index 38d7afbb..5308859a 100644
--- a/features/sprite-layers/style.css
+++ b/features/sprite-layers/style.css
@@ -18,6 +18,7 @@
font-size: 1.1rem;
margin-bottom: .5rem;
margin-left: .15rem;
+ color: #575e75 !important;
}
.ste-layers>div>div {
@@ -44,6 +45,7 @@
line-height: .95rem;
padding-left: .05rem;
padding-right: .05rem;
+ color: #c8cad2 !important;
}
.ste-long-layers>div>div:nth-child(even) {
From 2c3b9ee328aa63aadb1ba6f43f319eea016bf065 Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Sat, 14 Sep 2024 15:53:21 -0700
Subject: [PATCH 168/253] Update features.json
---
features/features.json | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/features/features.json b/features/features.json
index caa770ce..27c76b0c 100644
--- a/features/features.json
+++ b/features/features.json
@@ -1,4 +1,9 @@
[
+ {
+ "version": 2,
+ "id": "fix-gifs",
+ "versionAdded": "v4.0.0"
+ },
{
"version": 2,
"id": "outline-shape-options",
From 43cdd71bbc5874f9981edbfebb46cf6c9ad8bb3d Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Sat, 30 Nov 2024 09:39:42 -0800
Subject: [PATCH 169/253] Add option to not hide advertisements in studio
comments
---
features/hide-advertisements/data.json | 9 ++++++++-
features/hide-advertisements/style.css | 4 ++--
features/hide-advertisements/three.js | 10 ++++++++++
3 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/features/hide-advertisements/data.json b/features/hide-advertisements/data.json
index cd4ee4c4..1b3e3192 100644
--- a/features/hide-advertisements/data.json
+++ b/features/hide-advertisements/data.json
@@ -17,6 +17,13 @@
{ "file": "three.js", "runOn": "/studios/*" },
{ "file": "two.js", "runOn": "/users/*" }
],
- "options": [{ "id": "colorComment", "name": "Highlight Comments", "type": 1 }],
+ "options": [
+ { "id": "colorComment", "name": "Highlight Comments", "type": 1 },
+ {
+ "id": "dontHideStudioComments",
+ "name": "Don't Hide Studio Comments",
+ "type": 1
+ }
+ ],
"similar": ["important-messages", "block-messages"]
}
diff --git a/features/hide-advertisements/style.css b/features/hide-advertisements/style.css
index e3627493..b207372c 100644
--- a/features/hide-advertisements/style.css
+++ b/features/hide-advertisements/style.css
@@ -1,4 +1,4 @@
-body.colorComment .scratchtoolsAd .comment-bubble, .scratchtoolsAd .comment-bubble::before {
+body.colorComment .scratchtoolsAd .comment-bubble, body.colorComment .scratchtoolsAd .comment-bubble::before {
background-color: #eccedf !important;
border: 1px solid #ff6680;
}
@@ -9,6 +9,6 @@ body.colorComment .scratchtoolsAd .comment-bubble:before {
background-color: #eccedf !important;
}
-body.hideComment .scratchtoolsAd {
+body.hideComment:not(.dontHideStudioComments) .scratchtoolsAd {
display: none;
}
diff --git a/features/hide-advertisements/three.js b/features/hide-advertisements/three.js
index bb203a3c..fceabbeb 100644
--- a/features/hide-advertisements/three.js
+++ b/features/hide-advertisements/three.js
@@ -6,6 +6,10 @@ if (ScratchTools.Storage.colorComment) {
document.body.classList.add("hideComment");
}
+if (ScratchTools.Storage.dontHideStudioComments) {
+ document.body.classList.add("dontHideStudioComments")
+}
+
var hideAds = new Feature({ id: "hide-advertisements" });
hideAds.settings.addEventListener("changed", function ({key: name, value}) {
if (name === "colorComment") {
@@ -16,6 +20,12 @@ hideAds.settings.addEventListener("changed", function ({key: name, value}) {
document.body.classList.remove("colorComment");
document.body.classList.add("hideComment");
}
+ } else if (name === "dontHideStudioComments") {
+ if (value) {
+ document.body.classList.add("dontHideStudioComments")
+ } else {
+ document.body.classList.remove("dontHideStudioComments")
+ }
}
});
From 0ad6f43abec5a652a1a63abeb0e8320f8bb647fc Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Sat, 30 Nov 2024 09:40:21 -0800
Subject: [PATCH 170/253] Revert "Update features.json"
This reverts commit 2c3b9ee328aa63aadb1ba6f43f319eea016bf065.
---
features/features.json | 5 -----
1 file changed, 5 deletions(-)
diff --git a/features/features.json b/features/features.json
index 27c76b0c..caa770ce 100644
--- a/features/features.json
+++ b/features/features.json
@@ -1,9 +1,4 @@
[
- {
- "version": 2,
- "id": "fix-gifs",
- "versionAdded": "v4.0.0"
- },
{
"version": 2,
"id": "outline-shape-options",
From 460de3a2b69ac1159fbaa8eb76ac1fa960399583 Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Sat, 30 Nov 2024 09:41:35 -0800
Subject: [PATCH 171/253] Fix duplicates in `select-self`
---
features/select-self/script.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/features/select-self/script.js b/features/select-self/script.js
index 233076c2..2eb3ef86 100644
--- a/features/select-self/script.js
+++ b/features/select-self/script.js
@@ -88,7 +88,9 @@ export default async function ({ feature, console }) {
feature.self.enabled ||
feature.traps.vm.runtime._editingTarget?.sprite?.name !== SPRITES[i]
) {
- data.push([SPRITES[i], SPRITES[i]]);
+ if (!data.find((el) => el[0] === SPRITES[i])) {
+ data.push([SPRITES[i], SPRITES[i]]);
+ }
}
}
From 3234d04226d310da0010852a6bb4bbefe0fdec28 Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Sat, 30 Nov 2024 09:42:04 -0800
Subject: [PATCH 172/253] New API: `feature.getInternals()`
---
api/feature.js | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/api/feature.js b/api/feature.js
index d37bad3c..26fe2fb1 100644
--- a/api/feature.js
+++ b/api/feature.js
@@ -81,6 +81,12 @@ class Feature {
path: window.location.pathname,
scratch: document.querySelector("#app") ? 3 : 2,
}
+ this.getInternals = function(element) {
+ let reactKey = Object.keys(element).find((key) => key.startsWith("__reactInternalInstance"))
+ if (!reactKey) return null;
+
+ return element[reactKey]
+ }
this.redux = document.querySelector("#app")?.[
Object.keys(app).find((key) => key.startsWith("__reactContainer"))
].child.stateNode.store
From 97e6ce169a688d95c46aac36993967fd7a944c26 Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Sat, 30 Nov 2024 09:44:33 -0800
Subject: [PATCH 173/253] Update vm.js
---
api/vm.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/api/vm.js b/api/vm.js
index 413379e6..b5838473 100644
--- a/api/vm.js
+++ b/api/vm.js
@@ -176,7 +176,7 @@ ScratchTools.Scratch.waitForContextMenu = function (info) {
};
ScratchTools.Scratch.scratchPaint = function () {
- var app = document.querySelector(".paint-editor_mode-selector_28iiQ")||document.querySelector(".paint-editor_mode-selector_O2uhP");
+ var app = document.querySelector(".paint-editor_mode-selector_28iiQ")||document.querySelector(".paint-editor_mode-selector_O2uhP")||document.querySelector("[class*='paint-editor_mode-selector_']");
if (app !== null) {
return (
app[
From 4b74d5e92e81f40e1afbb56e549f03b2670bc731 Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Sat, 30 Nov 2024 11:20:12 -0800
Subject: [PATCH 174/253] New API: `scratchClass`
---
api/main.js | 63 +++++++++++++++++++++--
api/module.js | 22 ++++++++
features/dark-paint-editor/script.js | 6 +--
features/delete-all.js | 2 +-
features/echo-effect/script.js | 6 +--
features/go-to-parent/script.js | 2 +-
features/last-key-pressed.js | 2 +-
features/more-block-themes/script.js | 10 ++--
features/more-editor-fonts/script.js | 8 +--
features/more-paint-functions/script.js | 8 +--
features/move-project-title-input.js | 2 +-
features/opacity-slider/script.js | 12 ++---
features/paint-align/script.js | 8 +--
features/rotate-gradient/script.js | 12 ++---
features/search-assets.js | 4 +-
features/sprite-clones.js | 2 +-
features/turbowarp-button-in-editor.js | 8 +--
features/video-recorder/video-recorder.js | 4 +-
18 files changed, 130 insertions(+), 51 deletions(-)
diff --git a/api/main.js b/api/main.js
index 6af72838..0100bca2 100644
--- a/api/main.js
+++ b/api/main.js
@@ -74,6 +74,24 @@ ScratchTools.Storage = {};
ScratchTools.Resources = {};
ste.console.log("ScratchTools API Created", "ste-main");
+ScratchTools.cssFiles = [];
+async function updateCSSFiles() {
+ let activeCSSFiles = Array.from(document.styleSheets)
+ .filter((sheet) => sheet.href)
+ .map((sheet) => sheet.href)
+ .filter((el) => new URL(el).host === "scratch.mit.edu");
+ activeCSSFiles = activeCSSFiles.filter(
+ (el) => !ScratchTools.cssFiles.find((e) => e.url === el)
+ );
+
+ for (var i in activeCSSFiles) {
+ ScratchTools.cssFiles.push({
+ url: activeCSSFiles[i],
+ data: await (await fetch(activeCSSFiles[i])).text(),
+ });
+ }
+}
+
if (
window.location.href.startsWith("https://scratch.mit.edu/projects/") &&
window.location.href.includes("/editor")
@@ -159,6 +177,7 @@ function enableScratchToolsSelectorsMutationObserver() {
enableScratchToolsSelectorsMutationObserver();
function returnScratchToolsSelectorsMutationObserverCallbacks() {
+ updateCSSFiles()
Object.keys(allWaitInstances).forEach(function (key) {
var waitInstance = allWaitInstances[key];
if (!waitInstance.removed) {
@@ -340,6 +359,39 @@ ScratchTools.styles = {
},
};
+function scratchClass(name) {
+ let element = document.querySelector(`[class*='${name}']`);
+ if (element) {
+ let classes = [...element.classList];
+ return classes.find((el) => el.includes(name));
+ } else {
+ let text = []
+
+ for (var i in ScratchTools.cssFiles) {
+ text.push(ScratchTools.cssFiles[i].data)
+ }
+
+ text = text.join("\n\n")
+ let classes = getClassNamesFromCSSText(text)
+
+ let relClass = classes.find((el) => el.includes(name))
+ return relClass
+ }
+}
+
+ScratchTools.getClassNamesFromCSSText = function(cssText) {
+ const classNames = new Set();
+
+ const classRegex = /\.([a-zA-Z0-9_-]+)\b/g;
+
+ let match;
+ while ((match = classRegex.exec(cssText)) !== null) {
+ classNames.add(match[1]);
+ }
+
+ return Array.from(classNames);
+}
+
ScratchTools.waitForElements(
"ul[class*='menu_menu_'][class*='menu_right_']",
function (ul) {
@@ -351,7 +403,10 @@ ScratchTools.waitForElements(
if (!ul.querySelector(".ste-menu-full-settings")) {
var li = document.createElement("li");
li.className =
- "ste-menu-full-settings menu_menu-item_3EwYA menu_hoverable_3u9dt";
+ "ste-menu-full-settings " +
+ scratchClass("menu_menu-item_") +
+ " " +
+ scratchClass("menu_hoverable_");
var div = document.createElement("div");
div.className = "settings-menu_option_3rMur";
@@ -391,6 +446,8 @@ async function blockliveDetection() {
Object.keys(app).find((key) => key.startsWith("__reactContainer"))
].child.stateNode.store.getState()?.scratchGui;
if (!gui?.projectState) return;
- let detectBlocklive = await import("./blocklive-detection/blocklive-detect.js");
+ let detectBlocklive = await import(
+ "./blocklive-detection/blocklive-detect.js"
+ );
detectBlocklive.default();
-}
\ No newline at end of file
+}
diff --git a/api/module.js b/api/module.js
index 589f2731..a3fa58f0 100644
--- a/api/module.js
+++ b/api/module.js
@@ -1,6 +1,26 @@
let allFeatures = []
let alreadyInjected = [];
+function scratchClass(name) {
+ let element = document.querySelector(`[class*='${name}']`);
+ if (element) {
+ let classes = [...element.classList];
+ return classes.find((el) => el.includes(name));
+ } else {
+ let text = []
+
+ for (var i in ScratchTools.cssFiles) {
+ text.push(ScratchTools.cssFiles[i].data)
+ }
+
+ text = text.join("\n\n")
+ let classes = getClassNamesFromCSSText(text)
+
+ let relClass = classes.find((el) => el.includes(name))
+ return relClass
+ }
+}
+
ScratchTools.modules.forEach(async function (script) {
var feature = await import(ScratchTools.dir + "/api/feature/index.js");
var shouldBeRun = true;
@@ -20,6 +40,7 @@ ScratchTools.modules.forEach(async function (script) {
allFeatures.push(featureGenerated)
fun.default({
feature: featureGenerated,
+ scratchClass,
console: {
log: function (content) {
ste.console.log(content, script.feature.id);
@@ -56,6 +77,7 @@ ScratchTools.injectModule = async function (script) {
allFeatures.push(featureGenerated)
fun.default({
feature: featureGenerated,
+ scratchClass,
console: {
log: function (content) {
ste.console.log(content, script.feature.id);
diff --git a/features/dark-paint-editor/script.js b/features/dark-paint-editor/script.js
index 3461ade5..a466c715 100644
--- a/features/dark-paint-editor/script.js
+++ b/features/dark-paint-editor/script.js
@@ -1,4 +1,4 @@
-export default async function ({ feature, console }) {
+export default async function ({ feature, console, scratchClass }) {
let isDark;
const BACKGROUND_LIGHT = "#FFFFFF";
@@ -18,10 +18,10 @@ export default async function ({ feature, console }) {
if (document.querySelector(".ste-dark-paint-btn")) return;
let button = document.createElement("div")
- button.className = "button-group_button-group_2_h4y ste-dark-paint-btn"
+ button.className = `${scratchClass("button-group_button-group_2_")} ste-dark-paint-btn`
let span = document.createElement("span")
- span.className = "button_button_u6SE2 paint-editor_button-group-button_1I1tm"
+ span.className = `${scratchClass("button_button_")} ${scratchClass("paint-editor_button-group-button_")}`
span.role = "button"
button.appendChild(span)
diff --git a/features/delete-all.js b/features/delete-all.js
index 55a712f7..b5828a39 100644
--- a/features/delete-all.js
+++ b/features/delete-all.js
@@ -7,7 +7,7 @@ function checkForContextMenu() {
) {
var div = document.createElement("div");
div.className =
- "react-contextmenu-item context-menu_menu-item_3cioN context-menu_menu-item-bordered_29CJG context-menu_menu-item-danger_1tJg0 scratchtools deleteall";
+ `react-contextmenu-item ${scratchClass("context-menu_menu-item_")} ${scratchClass("context-menu_menu-item-bordered_")} ${scratchClass("context-menu_menu-item-danger_")} scratchtools deleteall`;
div.role = "menuitem";
div.tabindex = "-1";
div.arialDisabled = "false";
diff --git a/features/echo-effect/script.js b/features/echo-effect/script.js
index 0c7eb933..1b77baf7 100644
--- a/features/echo-effect/script.js
+++ b/features/echo-effect/script.js
@@ -1,11 +1,11 @@
-export default function ({ feature, console }) {
+export default function ({ feature, console, scratchClass }) {
ScratchTools.waitForElements(
"div[class^='sound-editor_row_'][class*='sound-editor_row-reverse_']",
function (container) {
if (container.querySelector(".ste-echo")) return;
let button = document.createElement("div");
button.className =
- "icon-button_container_278u5 sound-editor_effect-button_2zuzT ste-echo";
+ `${scratchClass("icon-button_container_")} ${scratchClass("sound-editor_effect-button_")} ste-echo`;
button.role = "button";
feature.self.hideOnDisable(button)
@@ -20,7 +20,7 @@ export default function ({ feature, console }) {
button.appendChild(img);
let title = document.createElement("div");
- title.className = "icon-button_title_36ChS";
+ title.className = scratchClass("icon-button_title_");
title.textContent = feature.msg("echo");
button.appendChild(title);
diff --git a/features/go-to-parent/script.js b/features/go-to-parent/script.js
index 65e01dc3..7928ba6e 100644
--- a/features/go-to-parent/script.js
+++ b/features/go-to-parent/script.js
@@ -54,7 +54,7 @@ if (
if (data.remix !== undefined) {
if (data.remix.parent !== null) {
var div = document.createElement("div");
- div.className = "menu-bar_menu-bar-item_oLDa- scratchtools remix";
+ div.className = `${scratchClass("menu-bar_menu-bar-item_")} scratchtools remix`;
div.innerHTML = `
`;
document.querySelectorAll("div").forEach(function (el) {
if (el.className.includes("menu-bar_main-menu_")) {
diff --git a/features/last-key-pressed.js b/features/last-key-pressed.js
index 260e5e8a..348b543c 100644
--- a/features/last-key-pressed.js
+++ b/features/last-key-pressed.js
@@ -15,7 +15,7 @@ function addKeyPressed() {
function addKeyPressedEditor() {
var div = document.createElement("div");
- div.className = "menu-bar_file-group_1_CHX scratchtools navlastkey";
+ div.className = `${scratchClass("menu-bar_file-group_1_")} scratchtools navlastkey`;
div.innerHTML = `
No Key Pressed
`;
diff --git a/features/more-block-themes/script.js b/features/more-block-themes/script.js
index 23f9c673..68ee6378 100644
--- a/features/more-block-themes/script.js
+++ b/features/more-block-themes/script.js
@@ -1,4 +1,4 @@
-export default async function ({ feature, console }) {
+export default async function ({ feature, console, scratchClass }) {
let CIRCLE = await (await fetch(feature.self.getResource("circle"))).text();
let COLORS = document.createElement("link")
@@ -118,18 +118,18 @@ export default async function ({ feature, console }) {
let li = document.createElement("li");
li.dataset.id = THEMES[i].id;
- li.className = "menu_menu-item_3EwYA menu_hoverable_3u9dt ste-custom";
+ li.className = `${scratchClass("menu_menu-item_")} ${scratchClass("menu_hoverable_")} ste-custom`;
let div = document.createElement("div");
- div.className = "settings-menu_option_3rMur";
+ div.className = scratchClass("settings-menu_option_");
let check = document.createElement("img");
- check.className = "settings-menu_check_3ssaq";
+ check.className = scratchClass("settings-menu_check_");
check.src = feature.self.getResource("check");
let img = document.createElement("span");
img.innerHTML = CIRCLE.replaceAll("-fill", "-circle-fill" + THEMES[i].id).replaceAll("-stroke", "-circle-stroke-" + THEMES[i].id);
- img.className = "settings-menu_icon_3QaRk";
+ img.className = scratchClass("settings-menu_icon_");
let circleCSS = document.createElement("style");
circleCSS.textContent = css.replaceAll("-fill", "-circle-fill" + THEMES[i].id).replaceAll("-stroke", "-circle-stroke-" + THEMES[i].id)
diff --git a/features/more-editor-fonts/script.js b/features/more-editor-fonts/script.js
index 7efad503..62fedb90 100644
--- a/features/more-editor-fonts/script.js
+++ b/features/more-editor-fonts/script.js
@@ -1,4 +1,4 @@
-export default async function ({ feature, console }) {
+export default async function ({ feature, console, scratchClass }) {
let { default: openTypeDefault } = await import(
"../../libraries/opentype.js"
);
@@ -26,20 +26,20 @@ export default async function ({ feature, console }) {
button.currentitem = false;
button.ariaLabel = "Add Font";
button.className =
- "action-menu_button_1qbot action-menu_more-button_1fMGZ ste-more-fonts-btn";
+ `${scratchClass("action-menu_button_")} ${scratchClass("action-menu_more-button_")} ste-more-fonts-btn`;
div.appendChild(button);
let img = Object.assign(document.createElement("img"), {
src: feature.self.getResource("more-text-icon"),
draggable: false,
- className: "action-menu_more-icon_TJUQ7",
+ className: scratchClass("action-menu_more-icon_"),
width: 10,
});
button.appendChild(img);
let tooltip = Object.assign(document.createElement("div"), {
className:
- "__react_component_tooltip place-right type-dark action-menu_tooltip_3Bkh5",
+ `__react_component_tooltip place-right type-dark ${scratchClass("action-menu_tooltip_")}`,
id: `ste-${id}-Add Font`,
textContent: "Add Font",
});
diff --git a/features/more-paint-functions/script.js b/features/more-paint-functions/script.js
index ddfd0849..a753cf89 100644
--- a/features/more-paint-functions/script.js
+++ b/features/more-paint-functions/script.js
@@ -1,4 +1,4 @@
-export default async function ({ feature, console }) {
+export default async function ({ feature, console, scratchClass }) {
function unite() {
let paper = feature.traps.getPaper();
let items = paper.project.selectedItems;
@@ -133,12 +133,12 @@ export default async function ({ feature, console }) {
function makeButton({ name, icon, callback }) {
let span = document.createElement("span");
span.className =
- "button_button_u6SE2 labeled-icon-button_mod-edit-field_1bXYC ste-more-functions";
+ `${scratchClass("button_button_")} ${scratchClass("labeled-icon-button_mod-edit-field_")} ste-more-functions`;
span.role = "button";
let img = document.createElement("img");
img.src = feature.self.getResource(icon);
- img.className = "labeled-icon-button_edit-field-icon_3j-Pf";
+ img.className = scratchClass("labeled-icon-button_edit-field-icon_");
img.alt = name;
img.title = name;
img.draggable = false;
@@ -146,7 +146,7 @@ export default async function ({ feature, console }) {
let label = document.createElement("span");
label.textContent = name;
- label.className = "labeled-icon-button_edit-field-title_1ZoEV";
+ label.className = scratchClass("labeled-icon-button_edit-field-title_");
span.appendChild(label);
span.addEventListener("click", function (e) {
diff --git a/features/move-project-title-input.js b/features/move-project-title-input.js
index 828cf89e..73fcfecd 100644
--- a/features/move-project-title-input.js
+++ b/features/move-project-title-input.js
@@ -13,7 +13,7 @@ ScratchTools.waitForElements(
if (!document.querySelector(".st-new-title-input") && !document.querySelector("span[class*='menu-bar_remix-button_']")) {
var input = document.createElement("input");
input.className =
- "input_input-form_l9eYg project-title-input_title-field_en5Gd menu-bar_title-field-growable_3qr4G";
+ `${scratchClass("input_input-form_")} ${scratchClass("project-title-input_title-field_")} ${scratchClass("menu-bar_title-field-growable_")}`;
input.value = window.newTitle || ScratchTools.Scratch.scratchGui().projectTitle;
input.placeholder = "Title";
input.style.width = "100%";
diff --git a/features/opacity-slider/script.js b/features/opacity-slider/script.js
index d65584c1..925109e4 100644
--- a/features/opacity-slider/script.js
+++ b/features/opacity-slider/script.js
@@ -1,4 +1,4 @@
-export default function ({ feature, console }) {
+export default function ({ feature, console, scratchClass }) {
ScratchTools.waitForElements(".Popover-body", function (body) {
if (!feature.traps.paint().modals.fillColor) return;
if (!feature.traps.paint().selectedItems[0]) return;
@@ -11,15 +11,15 @@ export default function ({ feature, console }) {
feature.self.hideOnDisable(div);
let data = document.createElement("div");
- data.className = "color-picker_row-header_173LQ";
+ data.className = scratchClass("color-picker_row-header_");
div.appendChild(data);
let name = document.createElement("span");
- name.className = "color-picker_label-name_17igY";
+ name.className = scratchClass("color-picker_label-name_");
name.textContent = "Opacity";
let value = document.createElement("span");
- value.className = "color-picker_label-readout_9vjb2";
+ value.className = scratchClass("color-picker_label-readout_");
value.textContent = Math.floor(
(feature.traps.paint().selectedItems[0]?.opacity || 1) * 100
)?.toString();
@@ -29,7 +29,7 @@ export default function ({ feature, console }) {
let slider = document.createElement("div");
slider.className =
- "ste-opacity-slider-checkered slider_container_o2aIb slider_last_10jvO";
+ `ste-opacity-slider-checkered ${scratchClass("slider_container_")} ${scratchClass("slider_last_")}`;
div.appendChild(slider);
let sliderBg = document.createElement("div");
@@ -41,7 +41,7 @@ export default function ({ feature, console }) {
let handle = document.createElement("div");
handleSlider(handle, value);
- handle.className = "ste-opacity-handle slider_handle_3f0xk";
+ handle.className = `ste-opacity-handle ${scratchClass("slider_handle_")}`;
handle.style.left = "124px";
if (feature.traps.paint().selectedItems[0]?.opacity) {
handle.style.left =
diff --git a/features/paint-align/script.js b/features/paint-align/script.js
index 15e83ddd..4b127091 100644
--- a/features/paint-align/script.js
+++ b/features/paint-align/script.js
@@ -1,4 +1,4 @@
-export default async function ({ feature }) {
+export default async function ({ feature, scratchClass }) {
ScratchTools.waitForElements(
"div[class^='mode-tools_mod-labeled-icon-height_']",
function (row) {
@@ -6,12 +6,12 @@ export default async function ({ feature }) {
let span = document.createElement("span");
span.className =
- "button_button_u6SE2 labeled-icon-button_mod-edit-field_1bXYC ste-align-items";
+ `${scratchClass("button_button_")} ${scratchClass("labeled-icon-button_mod-edit-field_")} ste-align-items`;
span.role = "button";
let img = document.createElement("img");
img.src = feature.self.getResource("paint-align");
- img.className = "labeled-icon-button_edit-field-icon_3j-Pf";
+ img.className = scratchClass("labeled-icon-button_edit-field-icon_");
img.alt = feature.msg("align");
img.title = feature.msg("align");
img.draggable = false;
@@ -19,7 +19,7 @@ export default async function ({ feature }) {
let label = document.createElement("span");
label.textContent = feature.msg("align");
- label.className = "labeled-icon-button_edit-field-title_1ZoEV";
+ label.className = scratchClass("labeled-icon-button_edit-field-title_");
span.appendChild(label);
span.addEventListener("click", function (e) {
diff --git a/features/rotate-gradient/script.js b/features/rotate-gradient/script.js
index 4aa736f3..a26a2ee1 100644
--- a/features/rotate-gradient/script.js
+++ b/features/rotate-gradient/script.js
@@ -1,4 +1,4 @@
-export default async function ({ feature, console }) {
+export default async function ({ feature, console, scratchClass }) {
let lastRotation = 0
feature.page.waitForElements(
@@ -16,15 +16,15 @@ export default async function ({ feature, console }) {
feature.self.hideOnDisable(div);
let data = document.createElement("div");
- data.className = "color-picker_row-header_173LQ";
+ data.className = scratchClass("color-picker_row-header_");
div.appendChild(data);
let name = document.createElement("span");
- name.className = "color-picker_label-name_17igY";
+ name.className = scratchClass("color-picker_label-name_");
name.textContent = feature.msg("direction");
let value = document.createElement("span");
- value.className = "color-picker_label-readout_9vjb2";
+ value.className = scratchClass("color-picker_label-readout_");
value.textContent = "0";
data.appendChild(name);
@@ -32,7 +32,7 @@ export default async function ({ feature, console }) {
let slider = document.createElement("div");
slider.className =
- "ste-direction-slider-checkered slider_container_o2aIb slider_last_10jvO";
+ "ste-direction-slider-checkered " + scratchClass("slider_container_") + " " + scratchClass("slider_last_Ik11I");
div.appendChild(slider);
let sliderBg = document.createElement("div");
@@ -44,7 +44,7 @@ export default async function ({ feature, console }) {
let handle = document.createElement("div");
handleSlider(handle, value);
- handle.className = "ste-direction-handle slider_handle_3f0xk";
+ handle.className = "ste-direction-handle " + scratchClass("slider_handle_ubeAr");
handle.style.left = "0px";
slider.appendChild(handle);
diff --git a/features/search-assets.js b/features/search-assets.js
index afd13cf4..611d7e8e 100644
--- a/features/search-assets.js
+++ b/features/search-assets.js
@@ -5,7 +5,7 @@ if (document.querySelector('[class^="asset-panel_wrapper_"]')) {
var input = document.createElement("input");
var assetBox = document.querySelector('[class^="asset-panel_wrapper_"]');
var assetRow = assetBox.firstChild.firstChild;
- input.className = "scratchtoolsAssetSearch input_input-form_l9eYg";
+ input.className = "scratchtoolsAssetSearch " + scratchClass("input_input-form_l9eYg");
input.placeholder = "Search";
input.type = "search";
input.autocomplete = "off";
@@ -40,7 +40,7 @@ ScratchTools.waitForElements(
if (!document.querySelector(".scratchtoolsAssetSearch") && showSearchBar) {
var input = document.createElement("input");
var assetRow = assetBox.firstChild.firstChild;
- input.className = "scratchtoolsAssetSearch input_input-form_l9eYg";
+ input.className = "scratchtoolsAssetSearch " + scratchClass("input_input-form_");
input.placeholder = "Search";
input.type = "search";
input.autocomplete = "off";
diff --git a/features/sprite-clones.js b/features/sprite-clones.js
index 8bf19d82..7f6f7e5a 100644
--- a/features/sprite-clones.js
+++ b/features/sprite-clones.js
@@ -19,7 +19,7 @@ if (
if (el.className.startsWith("sprite-info_row_")) {
foundIt = true;
var div = document.createElement("div");
- div.className = "sprite-info_group_14-B_";
+ div.className = scratchClass("sprite-info_group_");
div.innerHTML = ``;
diff --git a/features/turbowarp-button-in-editor.js b/features/turbowarp-button-in-editor.js
index 249d3482..9039f8cc 100644
--- a/features/turbowarp-button-in-editor.js
+++ b/features/turbowarp-button-in-editor.js
@@ -8,7 +8,7 @@ if (
waitForNavForTurbowarp.disconnect();
var outerDiv = document.createElement("div");
outerDiv.className =
- "menu-bar_menu-bar-item_oLDa- scratchtoolsTurbowarp";
+ scratchClass("menu-bar_menu-bar-item_") + " scratchtoolsTurbowarp";
var a = document.createElement("a");
a.addEventListener("click", async function () {
let projectToken = (
@@ -35,17 +35,17 @@ if (
});
var outerSpan = document.createElement("span");
outerSpan.className =
- "button_outlined-button_1bS__ menu-bar_menu-bar-button_3IDN0 community-button_community-button_2Lo_g";
+ `${scratchClass("button_outlined-button_")} ${scratchClass("menu-bar_menu-bar-button_")} ${scratchClass("community-button_community-button_")}`;
outerSpan.role = "button";
var img = document.createElement("img");
img.draggable = false;
img.src =
"https://dashboard.snapcraft.io/site_media/appmedia/2021/02/512x512_Q3PveGU.png";
img.className =
- "community-button_community-button-icon_1IFvv button_icon_77d8G";
+ `${scratchClass("community-button_community-button-icon_")} ${scratchClass("button_icon_")}`;
outerSpan.appendChild(img);
var innerDiv = document.createElement("div");
- innerDiv.className = "button_content_3jdgj";
+ innerDiv.className = scratchClass("button_content_");
var innerSpan = document.createElement("span");
innerSpan.style.color = "white";
innerSpan.textContent = "Open in TurboWarp";
diff --git a/features/video-recorder/video-recorder.js b/features/video-recorder/video-recorder.js
index ccba54cd..d43b84b5 100644
--- a/features/video-recorder/video-recorder.js
+++ b/features/video-recorder/video-recorder.js
@@ -1,4 +1,4 @@
-export default async function ({ feature, console }) {
+export default async function ({ feature, console, scratchClass }) {
await new Promise(async (resolve, reject) => {
(async () => {
const rem = await ScratchTools.waitForElement(".preview .inner .flex-row.action-buttons")
@@ -26,7 +26,7 @@ export default async function ({ feature, console }) {
ScratchTools.waitForElements(".menu-bar_account-info-group_MeJZP", async function (row) {
if (row.querySelector(".ste-video-recorder-open")) return;
openPopup = document.createElement("div");
- openPopup.className = "menu-bar_menu-bar-item_oLDa- menu-bar_hoverable_c6WFB";
+ openPopup.className = `${scratchClass("menu-bar_menu-bar-item_")} ${scratchClass("menu-bar_hoverable_")}`;
openPopup.style.padding = "0 0.75rem"
let rem = document.createElement("div");
rem.textContent = "Record Video";
From c0457b052b9d086a09fa36c9e03d2ec888789c9b Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Sat, 30 Nov 2024 11:33:31 -0800
Subject: [PATCH 175/253] A few minor improvements
---
api/main.js | 2 +-
api/module.js | 2 +-
extras/feature-locales/en.json | 2 +-
features/asset-size/script.js | 2 +-
features/chomp-blocks/data.json | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/api/main.js b/api/main.js
index 0100bca2..9ae24062 100644
--- a/api/main.js
+++ b/api/main.js
@@ -372,7 +372,7 @@ function scratchClass(name) {
}
text = text.join("\n\n")
- let classes = getClassNamesFromCSSText(text)
+ let classes = ScratchTools.getClassNamesFromCSSText(text)
let relClass = classes.find((el) => el.includes(name))
return relClass
diff --git a/api/module.js b/api/module.js
index a3fa58f0..041bd33d 100644
--- a/api/module.js
+++ b/api/module.js
@@ -14,7 +14,7 @@ function scratchClass(name) {
}
text = text.join("\n\n")
- let classes = getClassNamesFromCSSText(text)
+ let classes = ScratchTools.getClassNamesFromCSSText(text)
let relClass = classes.find((el) => el.includes(name))
return relClass
diff --git a/extras/feature-locales/en.json b/extras/feature-locales/en.json
index 5727477c..8504ab38 100644
--- a/extras/feature-locales/en.json
+++ b/extras/feature-locales/en.json
@@ -1 +1 @@
-{"outline-shape-options/title":{"message":"Customizable Shape Outlines"},"outline-shape-options/description":{"message":"Adds more options in the outline dropdown to allow you to customize the shape of the outline, such as making corners round."},"more-paint-functions/title":{"message":"More Paint Functions"},"more-paint-functions/description":{"message":"Adds new functions to the paint editor. The new functions include unite (combining them into one), subtract (removing one shape from another), exclude (removing the overlap of 2 items), and intersect (removing everything but the overlap of 2 items). Each function only works with 2 items."},"asset-size/title":{"message":"Asset Size"},"asset-size/description":{"message":"Allows you to hover over any asset (costumes and sounds) in the editor to view the file size."},"disable-cloud/title":{"message":"Disable Cloud"},"disable-cloud/description":{"message":"Allows you to disable cloud data on any project. This will still receive cloud data information, but will not send any."},"webp-uploads/title":{"message":"WEBP Image Uploads"},"webp-uploads/description":{"message":"Allows you to upload webp images in the editor for new sprites, costumes and stage backdrops."},"remaining-replies/title":{"message":"Remaining Replies"},"remaining-replies/description":{"message":"Shows how many more replies are allowed in a thread of studio comments."},"video-recorder/title":{"message":"Record Stage"},"video-recorder/description":{"message":"Allows you to record the stage for projects while in the editor or on the project page."},"studio-creation-date/title":{"message":"Studio Creation Date"},"studio-creation-date/description":{"message":"Adds the creation date of the studio to the studio footer."},"explore-filter/title":{"message":"Explore Filter"},"explore-filter/description":{"message":"Customize project and studio search results with filters on the Search, Explore, and Studio pages."},"better-featured-projects/title":{"message":"Better Featured Projects"},"better-featured-projects/description":{"message":"Replaces the Featured Projects section with featured projects curated by ScratchTools users. You can submit your own projects to be featured as well."},"align-to-center/title":{"message":"Align to Center"},"align-to-center/description":{"message":"Allows you to align text in Instructions and Notes & Credits boxes to the center of the input."},"more-editor-fonts/title":{"message":"More Paint Editor Fonts"},"more-editor-fonts/description":{"message":"Allows you to use dozens of extra fonts in the paint editor."},"upload-thumbnail/title":{"message":"Set Thumbnail"},"upload-thumbnail/description":{"message":"Allows you to upload an image or GIF as a project thumbnail, or set the thumbnail to the current stage."},"paint-align/title":{"message":"Align Objects in Paint Editor"},"paint-align/description":{"message":"Adds a button to the paint editor that allows you to align selected items."},"rotate-gradient/title":{"message":"Rotate Gradients"},"rotate-gradient/description":{"message":"Allows you to rotate gradients in any direction in the costume editor. Works in both the vector and bitmap editors."},"change-monitor-opacity/title":{"message":"Custom Monitor Opacity"},"change-monitor-opacity/description":{"message":"Set the opacity of variables and lists on the stage to a custom number."},"project-reactions/title":{"message":"Project Reactions"},"project-reactions/description":{"message":"Allows you to react to projects with different emojis."},"chomp-blocks/title":{"message":"Extend Wrapped C Blocks"},"chomp-blocks/description":{"message":"Automatically extends C blocks to wrap around blocks that it is being placed over when dragging."},"custom-explore/title":{"message":"Custom Explore Redirect"},"custom-explore/description":{"message":"Automatically redirect to a specific tab on the Explore page."},"stage-in-spritepane/title":{"message":"Stage In Sprite Pane"},"stage-in-spritepane/description":{"message":"Move the stage button to the sprite pane to widen the sprite field."},"better-cloud-history/title":{"message":"Better Cloud History"},"better-cloud-history/description":{"message":"Updates the cloud monitor page to a more modern version with more details. You can click on variable names to sort by that variable."},"sprite-layers/title":{"message":"View Sprite Layers"},"sprite-layers/description":{"message":"Allows you to hover over the show/hide toggle in the sprite properties panel of the editor to view the sprite layers."},"hide-project-tags/title":{"message":"Hide Project Tags"},"hide-project-tags/description":{"message":"Hides all linked tags in the Instructions/Notes and Credits of projects."},"snap-to-grid/title":{"message":"Snap Scripts to Grid"},"snap-to-grid/description":{"message":"Automatically aligns scripts to the dotted grid in the editor when placed."},"select-self/title":{"message":"Select Self"},"select-self/description":{"message":"Allows you to select the current sprite when opening sprite dropdowns, instead of only other sprites."},"sidebar/title":{"message":"Sidebar"},"sidebar/description":{"message":"Adds a sidebar to the Scratch website, rather than just the normal navigation bar at the top of the screen."},"project-version-detector/title":{"message":"Project Version Detector"},"project-version-detector/description":{"message":"Checks when a project was shared and adds a label next to the share date to indicate which version of Scratch was in use at that time."},"fullscreen-explorer/title":{"message":"Fullscreen Project Grids"},"fullscreen-explorer/description":{"message":"Find projects on the big screen by removing the left and right blanks on the Trends, Search, Remix pages."},"project-descriptions/title":{"message":"Summarized Descriptions"},"project-descriptions/description":{"message":"Uses artificial intelligence to summarize project descriptions when you choose to, and shortens long descriptions down to important information, such as gameplay instructions."},"total-stats/title":{"message":"Total User Stats"},"total-stats/description":{"message":"Next to shared projects on a user's profile, displays the total loves, favorites and views that the user has received across all of their shared projects."},"project-miniplayer/title":{"message":"Project Miniplayer"},"project-miniplayer/description":{"message":"Scroll down on the project page and you will automatically see the project miniplayer."},"pin-comments/title":{"message":"Pin Project Comments"},"pin-comments/description":{"message":"Allows you to pin comments on your own projects and see what comments are pinned on other projects."},"download-project/title":{"message":"Download Projects"},"download-project/description":{"message":"Adds a button to project pages that allows you to download the project as an .sb3 file."},"blur-modal/title":{"message":"Blur Modal Backgrounds"},"blur-modal/description":{"message":"Blurs the backgrounds of modals instead of having a colored overlay."},"quick-search/title":{"message":"Quick Search"},"quick-search/description":{"message":"Easily jump between pages on the Scratch website with just the click of Control + K."},"favicon-messages/title":{"message":"Tab Message Count"},"favicon-messages/description":{"message":"Displays your message count in the tab favicon, the Scratch icon at the top of your tab."},"show-emoji-names/title":{"message":"Show Emoji Name"},"show-emoji-names/description":{"message":"Allows you to hover over Scratch emojis in the comments and view their names."},"more-block-themes/title":{"message":"More Block Themes"},"more-block-themes/description":{"message":"Adds additional themes for blocks in the code editor."},"more-key-inputs/title":{"message":"More Key Inputs"},"more-key-inputs/description":{"message":"Adds support for more keys on \"key pressed\" blocks."},"comment-tags/title":{"message":"Editor Comment Tags"},"comment-tags/description":{"message":"Add tags to editor comments to easily organize them."},"profile-flag/title":{"message":"Flag on Profile"},"profile-flag/description":{"message":"Adds flag emojis near selected locations on profile pages."},"follow-on-projects/title":{"message":"Follow on Project Page"},"follow-on-projects/description":{"message":"Follow users directly from the project page instead of going to their profile."},"dark-paint-editor/title":{"message":"Switch Paint Background"},"dark-paint-editor/description":{"message":"Adds a button next to the zoom controls in the paint editor that allows you to switch the background color of the paint editor between light and dark."},"specific-replies/title":{"message":"Specific Reply Messages"},"specific-replies/description":{"message":"In messages related to comments, specifies who a comment was replying to."},"better-trending-thumbnails/title":{"message":"Larger Thumbnails"},"better-trending-thumbnails/description":{"message":"Updates thumbnails on the trending and search pages to be larger and better fit the project/studio box."},"anti-generic/title":{"message":"Anti Generic"},"anti-generic/description":{"message":"On the explore and trending pages, this beta feature automatically hides repetitive projects, along with projects that it expects are generic. This includes projects with a lot of tags, common names, and project duplicates."},"wrap-lists/title":{"message":"Wrap List Items"},"wrap-lists/description":{"message":"Displays text in list items normally without cutting them off if they're too long."},"live-stats/title":{"message":"Live Stats"},"live-stats/description":{"message":"Updates the loves, favorites, remixes, and views on a project live, without having to reload to view the new counts."},"hide-scratch-news/title":{"message":"Hide Scratch News"},"hide-scratch-news/description":{"message":"Hides the Scratch News section on the homepage of the Scratch website."},"watch-later/title":{"message":"Save to Watch Later"},"watch-later/description":{"message":"Save projects you want to view later and they'll appear on a watch later page."},"remove-project-button/title":{"message":"Remove Project Button"},"remove-project-button/description":{"message":"Adds a button to projects in studios that allows you to easily remove it from the studio without opening the menu."},"right-side-flag/title":{"message":"Right Side Flag"},"right-side-flag/description":{"message":"Moves the green flag and the red stop sign to the right side of the stage."},"love-fave-animate/title":{"message":"Love Animations"},"love-fave-animate/description":{"message":"Animates the clicking of the love and favorite buttons on project pages."},"default-to-local/title":{"message":"Default to Local"},"default-to-local/description":{"message":"When creating a variable, sets the default to For This Sprite Only, rather than For All Sprites."},"start-stop-hotkeys/title":{"message":"Green Flag Hotkeys"},"start-stop-hotkeys/description":{"message":"Use Control + G to start or stop a project, depending on whether or not it is running."},"opacity-slider/title":{"message":"Opacity Slider"},"opacity-slider/description":{"message":"Change the opacity of objects in the paint editor."},"more-studios/title":{"message":"More Studios"},"more-studios/description":{"message":"Allows you to add projects to more studios instead of just 20."},"localized-explore/title":{"message":"Projects from Country"},"localized-explore/description":{"message":"On the explore page, makes projects from other countries less visible. This is to only show projects in languages that you understand."},"project-bar/title":{"message":"Project Bar"},"project-bar/description":{"message":"Continue to view the information for a project, even after you scroll down past the notes and credits."},"more-news/title":{"message":"More Scratch News"},"more-news/description":{"message":"On the main page, scroll through the Scratch News section and load more results."},"dumpster-fire/title":{"message":"Dumpster Fire"},"dumpster-fire/description":{"message":"The Scratch homepage is a liar with their \"Featured Projects\" section. This changes the name to the proper form, which is \"Dumpster Fire\"."},"steal-game/title":{"message":"Steal Game"},"steal-game/description":{"message":"Changes the remix button's text to 'Steal game'."},"statistics/title":{"message":"Statistics"},"statistics/description":{"message":"Adds a statistics button on the my stuff page that leads to your ScratchStats profile."},"echo-effect/title":{"message":"Echo Effect"},"echo-effect/description":{"message":"Adds the echo effect back to the Scratch sound editor."},"compact-buttons/title":{"message":"Compact Buttons"},"compact-buttons/description":{"message":"Buttons text gets removed and will get a new icon if it does not have one already."},"message-count/title":{"message":"Message Count"},"message-count/description":{"message":"Displays the user's message count on their profile next to the country."},"move-share-button/title":{"message":"Move Share Button"},"move-share-button/description":{"message":"On project pages, moves the share button next to the See Inside button."},"preview-textboxes/title":{"message":"Preview Textboxes"},"preview-textboxes/description":{"message":"Preview your profile About Me and What I'm Working On, and your projects' Instructions and Notes and Credits, so that you can see what it will look like to other users."},"more-tutorials/title":{"message":"More Tutorials"},"more-tutorials/description":{"message":"On the Ideas page, you can view additional tutorials from other Scratchers."},"simplify-action-buttons/title":{"message":"Simplify Action Buttons"},"simplify-action-buttons/description":{"message":"Displays project action buttons underneath Notes and Credits as their icons."},"slash-to-search/title":{"message":"Slash to Search"},"slash-to-search/description":{"message":"Click the slash key (/) to select the search bar and start typing."},"shared-clipboard/title":{"message":"Shared Clipboard"},"shared-clipboard/description":{"message":"Allows you to copy and paste items between paint editors in different projects."},"hide-footer/title":{"message":"Hide Footer"},"hide-footer/description":{"message":"The footer takes up a lot of unnecessary space. So hide it!"},"original-colors/title":{"message":"Revert to Blue"},"original-colors/description":{"message":"Changes all of the Scratch website's colors back to the original coloring from 3.0, before purple."},"simplify-editor-tabs/title":{"message":"Simplify Editor Tabs"},"simplify-editor-tabs/description":{"message":"Changes editor tabs to icon-only and shows them as a circle"},"live-character-counts/title":{"message":"Live Character Counts"},"live-character-counts/description":{"message":"On forum, studio, and project pages, displays the live character count for textboxes."},"advanced-search/title":{"message":"Search Profiles"},"advanced-search/description":{"message":"When you search for a user, a link to their profile will be at the top of the page."},"studio-links/title":{"message":"Studio Links as Titles"},"studio-links/description":{"message":"Replaces studio links with their titles, all across the Scratch website."},"block-studios/title":{"message":"Block Individual Studio Activity"},"block-studios/description":{"message":"Disable studio activity messages from specific studios."},"block-messages/title":{"message":"Block Users"},"block-messages/description":{"message":"Hide messages from users that you block. Other users won't see that you've blocked them."},"two-colors/title":{"message":"2.0 Block Colors"},"two-colors/description":{"message":"Replaces the colors of the blocks in the editor with the blocks from the 2.0 version of the code editor."},"project-links/title":{"message":"Project Links as Titles"},"project-links/description":{"message":"Replaces project links with their titles, all across the Scratch website."},"emoji-status/title":{"message":"Emoji Statuses"},"emoji-status/description":{"message":"Set the status on your profile to an emoji. Other ScratchTools users will be able to see this status."},"display-name/title":{"message":"Display Names"},"display-name/description":{"message":"Shows display names for Scratchers, and allows you to set your own display name. Display names show next to your username, and aren't limited like usernames are."},"isonline/title":{"message":"Show if User is Online"},"isonline/description":{"message":"On profile pages, displays if a user is online. This will also let other users see if you are online."},"plain-background/title":{"message":"Plain Background"},"plain-background/description":{"message":"Removes the dots from the background of the code editor."},"hide-advertisements/title":{"message":"Hide Ads in Comments"},"hide-advertisements/description":{"message":"Hides advertisements in the comments of profiles, projects, and studios. They can take up a lot of space in the comments."},"hide-block-category-names/title":{"message":"Hide Block Category Names"},"hide-block-category-names/description":{"message":"Changes the block categories in the editor to only show the colors of the categories."},"unlisted-projects/title":{"message":"Unlisted Projects"},"unlisted-projects/description":{"message":"Allows you to generate share links for unshared projects in the editor."},"stats-percentages/title":{"message":"Show Percentages for Project Stats"},"stats-percentages/description":{"message":"On the my stuff page, hover over the number of loves, favorites or remixes to view what percent of viewers performed the action."},"clone-counter/title":{"message":"Clone Counter"},"clone-counter/description":{"message":"Displays the total number of clones in the project above, in the stage header."},"colored-shadows/title":{"message":"Colored Shadows"},"colored-shadows/description":{"message":"Replaces the shadow created when you drag a block near another block with the color of the block that is being moved."},"creator-badge/title":{"message":"Author Badge"},"creator-badge/description":{"message":"Adds a badge next to comments written by the author of the project."},"original-buttons/title":{"message":"Original Buttons"},"original-buttons/description":{"message":"Returns the original love, favorite, remix, and view buttons to the Scratch project pages."},"box-shadows/title":{"message":"Content Box Shadows"},"box-shadows/description":{"message":"Adds shadows on all content boxes. When hovering one, the shadow will darken."},"admin-notifications/title":{"message":"Red Admin Message Indicator"},"admin-notifications/description":{"message":"If you have an admin notification from the Scratch Team, the message indicator in the navigation bar will display red instead of orange."},"nicknames/title":{"message":"Nicknames"},"nicknames/description":{"message":"Set nicknames for other Scratchers. Only you can see the nicknames, and their username will be replaced with the nickname when you see their name."},"load-more-forum-posts/title":{"message":"Load More Posts"},"load-more-forum-posts/description":{"message":"Load more posts in the forum without having to switch pages."},"scroll-project-titles/title":{"message":"Scroll Project Titles"},"scroll-project-titles/description":{"message":"Allows you to scroll and view the entire title of projects that you don't own."},"search-context-menus/title":{"message":"Search Context Menus"},"search-context-menus/description":{"message":"Type and search context menus to select an option efficiently. You can also press enter to select the top option."},"hover-user-cards/title":{"message":"User Hover Cards"},"hover-user-cards/description":{"message":"Hover over any username on the website to display the profile picture, username and follower count."},"exact-join-date/title":{"message":"Exact Join Date"},"exact-join-date/description":{"message":"Displays the exact time that a user joined, shown on their profile."},"upload-img-directly/title":{"message":"Direct Image Uploads"},"upload-img-directly/description":{"message":"Allows you to upload images to the Scratch forums for posts and signatures without having to use third party image uploading services."},"leave-studio/title":{"message":"Leave Studio Button"},"leave-studio/description":{"message":"Adds a button to the curators page of any studios you curate or manage that allows you to leave the studio. A confirmation shows first."},"frontpage-curator/title":{"message":"Frontpage Curator Name as Link"},"frontpage-curator/description":{"message":"Makes the name of the Frontpage Curator to a clickable link to his profile."},"minimized-remix-credits/title":{"message":"Minimized Remix Credits"},"minimized-remix-credits/description":{"message":"The remix credit boxes for projects take space from the project Instructions, so this makes the box smaller."},"follows-you/title":{"message":"Show if Following on Profile"},"follows-you/description":{"message":"If a user is following you, it will show next to their username when you visit their profile."},"custom-studio/title":{"message":"Custom Studio Section"},"custom-studio/description":{"message":"On the homepage of the Scratch website, the newest projects from the studio of your choice are displayed above the Featured Projects."},"highlight-unanswered/title":{"message":"Highlight Unanswered Forum Topics"},"highlight-unanswered/description":{"message":"Adds a blue highlight to topics in the forums that have no replies."},"search-assets/title":{"message":"Search Assets"},"search-assets/description":{"message":"Search through costume and sound assets in the editor."},"block-count-in-mystuff/title":{"message":"Block Count in My Stuff"},"block-count-in-mystuff/description":{"message":"Displays the block count for projects on the My Stuff page."},"pause-audio/title":{"message":"Pause Audio"},"pause-audio/description":{"message":"Allows you to pause and resume audio in the sound editor of Scratch projects."},"display-message-count-in-icon/title":{"message":"Display Message Count"},"display-message-count-in-icon/description":{"message":"Displays your current message count in the extension icon for ScratchTools."},"colored-context-menus/title":{"message":"Colored Context Menus"},"colored-context-menus/description":{"message":"Like in Scratch 2.0, colors the context menus based on the color of the block they're for."},"left-side-stage/title":{"message":"Stage on Left Side"},"left-side-stage/description":{"message":"Like in Scratch 2.0, moves the stage to the left side of the editor, rather than keeping it on the right."},"move-project-title-input/title":{"message":"Project Title Above Stage"},"move-project-title-input/description":{"message":"Like in Scratch 2.0, moves the project title input box above the stage, rather than in the navbar. This only applies to the editor."},"hide-disabled-menu-options/title":{"message":"Hide Disabled Context Menu Options"},"hide-disabled-menu-options/description":{"message":"Context menu options in the editor show even if they are disabled and unable to be used, so this feature will hide them if they are."},"follower-count/title":{"message":"Follower Count on Projects"},"follower-count/description":{"message":"Displays the follower count of the project creator on their projects."},"hide-studio-borders/title":{"message":"Hide Studio Frames"},"hide-studio-borders/description":{"message":"Removes the odd frames from around studio images on 2.0 pages."},"hide-textarea-labels/title":{"message":"Hide Project Instructions and Notes and Credits Labels"},"hide-textarea-labels/description":{"message":"The instructions and notes and credits labels take up quite a bit of space where there could be usual information. This removes them."},"default-to-trending/title":{"message":"Search Trending by Default"},"default-to-trending/description":{"message":"Currently, when you search projects on the Scratch website, you automatically search with the popular filter, instead of trending."},"infinite-backpack-scrolling/title":{"message":"Infinite Backpack Scrolling"},"infinite-backpack-scrolling/description":{"message":"Scroll through the backpack until you reach the very end (does take some time to load, but loads automatically)."},"hide-studio-messages/title":{"message":"Hide Studio Activity Messages"},"hide-studio-messages/description":{"message":"Hide the studio activity messages from the messages page- they pile up quickly and can get annoying."},"get-project-tags/title":{"message":"Display Project Tags"},"get-project-tags/description":{"message":"Lists all of the tags used in the project description right below the project notes and credits."},"link-to-propose/title":{"message":"Link Featured Projects to Studio"},"link-to-propose/description":{"message":"Links the Featured Projects box on the homepage to the Propose Projects to Be Featured studio."},"add-last-option-list/title":{"message":"Set List Item to Last"},"add-last-option-list/description":{"message":"Right click a 'get item [number] of [list]' to set it to select the very last item in the selected list."},"cloud-scratchers/title":{"message":"Online Scratchers in Multiplayer Game"},"cloud-scratchers/description":{"message":"On project pages, displays all of the Scratchers currently in that multiplayer game."},"editor-in-two/title":{"message":"2.0 Editor"},"editor-in-two/description":{"message":"Replaces the default 3.0 online project editor with the 2.0 editor. It's nostalgic, really."},"comment-on-closed-profile/title":{"message":"Comment On Profile With Comments Closed"},"comment-on-closed-profile/description":{"message":"If your profile comments are closed, you can now comment on your own profile anyways. Only you can comment on the profile."},"turbowarp-button-in-editor/title":{"message":"Open in TurboWarp from Editor"},"turbowarp-button-in-editor/description":{"message":"Adds a button to the editor so that you can instantly open the current project in TurboWarp."},"sprite-clones/title":{"message":"Sprite Clone Counter"},"sprite-clones/description":{"message":"Displays the clone count for each individual sprite."},"block-log/title":{"message":"Block Log"},"block-log/description":{"message":"Logs and displays all undo information for the block editor when you press ctrl+shift+l."},"scrollable-list-items/title":{"message":"Scrollable List Items"},"scrollable-list-items/description":{"message":"List items that have a value longer than the width of the list itself will get cut off. Now, you can scroll left and right through the list item."},"custom-fonts/title":{"message":"Custom Website Font"},"custom-fonts/description":{"message":"On the Scratch website, you can set the font to whatever font you want, as long as it is on the Google Fonts website. This is case-sensitive."},"project-timer/title":{"message":"Project Timer"},"project-timer/description":{"message":"Displays the amount of time (in seconds) that the project has been running for."},"colored-comments/title":{"message":"Colored Editor Comments"},"colored-comments/description":{"message":"Colors comments in the editor based on the color of their parent block."},"recently-viewed-projects/title":{"message":"Recently Viewed Projects"},"recently-viewed-projects/description":{"message":"Adds a tab to the My Stuff page where you can see a list of the projects that you have recently viewed."},"collapse-blocks/title":{"message":"Collapse Blocks"},"collapse-blocks/description":{"message":"Right-click block menus in the editor include a button that will let you collapse the selected block."},"set-featured-project/title":{"message":"Set Featured Project"},"set-featured-project/description":{"message":"On any project page, you can set your profile's featured project with the click of a button- even unshared projects."},"scratchformat/title":{"message":"ScratchFormat"},"scratchformat/description":{"message":"Format your comments with bold, italic, and more. The comments will be styled to everyone using ScratchTools."},"expand-editor/title":{"message":"Expand Editor"},"expand-editor/description":{"message":"Use the ctrl+e to switch between the default block editor view and one that hides the stage to expand editor itself."},"list-sprites/title":{"message":"Sprite List"},"list-sprites/description":{"message":"Replaces the sprite grid in the editor with a list that includes the block count and position of the sprite."},"check-if-trending/title":{"message":"Check if Trending"},"check-if-trending/description":{"message":"If a project you're viewing is on the trending page, the place on the trending page will be shown next to the share date on the project page."},"link-forum-activity/title":{"message":"Link Users in Forum Activity"},"link-forum-activity/description":{"message":"In the forums' last post section, makes the usernames link to the user's profile."},"remove-topic-and-post/title":{"message":"Hide Forum Category Counts"},"remove-topic-and-post/description":{"message":"Hides the forum homepage topic and post boxes."},"forum-homepage-emojis/title":{"message":"Forum Category Emojis"},"forum-homepage-emojis/description":{"message":"Adds colorful emojis on the forum homepage categories based on their topic."},"remove-collapse-buttons/title":{"message":"Hide Forum Collapse Buttons"},"remove-collapse-buttons/description":{"message":"Hides the collapse buttons on the forum main page."},"pin-projects/title":{"message":"Pin Projects to My Stuff"},"pin-projects/description":{"message":"Pin one of your projects to the top of your My Stuff page with the click of a button. You can unpin your pinned project or switch out your pinned project for another one as well."},"last-key-pressed/title":{"message":"Last Key Pressed"},"last-key-pressed/description":{"message":"On any project page and in the editor, you can view the last key that you have pressed while on that project, according to the project itself. This is good for games such as platformers."},"hide-signatures/title":{"message":"Hide Forum Signatures"},"hide-signatures/description":{"message":"Hides all forum signatures and signature dividers."},"twemoji-in-forums/title":{"message":"Better Forum Emojis"},"twemoji-in-forums/description":{"message":"Replaces the current low resolution forum emojis with high quality Twemojis."},"go-to-parent/title":{"message":"Go to Parent Button"},"go-to-parent/description":{"message":"In the editor for any project that is a remix, you can click a button to go to the editor in the parent project."},"most-popular-project/title":{"message":"Most Popular Project"},"most-popular-project/description":{"message":"Displays the most popular project (by views) of the user on profile pages. You can click on the project to view it."},"editor-dark-mode/title":{"message":"Editor Dark Mode"},"editor-dark-mode/description":{"message":"Switches the editor's light color scheme to a darker one."},"hide-studio-group-icon/title":{"message":"Hide Studio Group Icon"},"hide-studio-group-icon/description":{"message":"Hides the studio group icon, and only shows the studio thumbnail."},"colored-messages/title":{"message":"Colored Messages"},"colored-messages/description":{"message":"Colors your messages based on the type of message, such as loves, favorites, and studio invites."},"full-title/title":{"message":"Full Project Title"},"full-title/description":{"message":"On profile pages, hover over any project title to show the full title."},"fixed-box/title":{"message":"Fix Content Boxes"},"fixed-box/description":{"message":"Makes all sides of boxes on the pages rounded, rather than just the tops."},"user-bio/title":{"message":"User Bio on Hover"},"user-bio/description":{"message":"In profile comments, hover over any username to display the user's bio."},"nfe-project-checker/title":{"message":"NFE Project Checker"},"nfe-project-checker/description":{"message":"On project pages, displays whether the project is Safe, Unreviewed, or NSFE (Not Safe for Everyone)."},"sprite-data/title":{"message":"Display Sprite Data"},"sprite-data/description":{"message":"In the Code, Costumes, and Sounds tab for each sprite, the number of blocks, costumes, and sounds will be displayed for the current sprite."},"idea-generator/title":{"message":"Project Idea Generator"},"idea-generator/description":{"message":"On the Scratch Ideas page, there will be a section where you can generate project ideas if you need some."},"hide-stickies/title":{"message":"Hide Forum Stickies"},"hide-stickies/description":{"message":"Hides the basic stickies from the top of each forum topic."},"nfe-search/title":{"message":"NFE Search"},"nfe-search/description":{"message":"Use a button to search all projects, including NFE ones."},"open-in-new-tab/title":{"message":"Open in New Tab"},"open-in-new-tab/description":{"message":"Automatically opens links on project pages in a new tab."},"unbold-site-text/title":{"message":"Unbold Site Text"},"unbold-site-text/description":{"message":"Makes it so that all text across Scratch is unbolded, and just normal text."},"compact-navbar/title":{"message":"Compact Navbar"},"compact-navbar/description":{"message":"Makes more room on the navigation bar near where your profile dropdown is."},"delete-all/title":{"message":"Delete All Sprites"},"delete-all/description":{"message":"Adds an option in the right-click context menu for sprites. It will delete all sprites (after confirmation to make sure it isn't an accident)."},"round-profile-pictures/title":{"message":"Round Profile Pictures"},"round-profile-pictures/description":{"message":"All profile pictures on the Scratch website will be rounded."},"ocular-link/title":{"message":"Ocular Links in Forums"},"ocular-link/description":{"message":"Adds a link to any user's Ocular page right below their username on a post."},"forum-scratch-team/title":{"message":"Scratch Team Symbol in Forums"},"forum-scratch-team/description":{"message":"Next to the username of any Scratch Team member in the forums, an asterisk (*) is placed at the end of their username."},"remove-editor-icons/title":{"message":"Remove Editor Icons"},"remove-editor-icons/description":{"message":"Removes the icons from the tabs in the editor."},"sprite-watermark/title":{"message":"Remove Sprite Watermark"},"sprite-watermark/description":{"message":"Removes the sprite watermark that shows in the editor."},"compact-editor/title":{"message":"Compact Editor"},"compact-editor/description":{"message":"Makes sprite and backdrop information more compact."},"my-recent-projects/title":{"message":"Replace Scratch News with Recent Projects"},"my-recent-projects/description":{"message":"Replaces the Scratch News section on the homepage with your recently shared projects."},"focus-mode/title":{"message":"Focus Mode"},"focus-mode/description":{"message":"Removes the comments, studio and remix column, header, and footer on project pages when the button is clicked."}}
\ No newline at end of file
+{"outline-shape-options/title":{"message":"Customizable Shape Outlines"},"outline-shape-options/description":{"message":"Adds more options in the outline dropdown to allow you to customize the shape of the outline, such as making corners round."},"more-paint-functions/title":{"message":"More Paint Functions"},"more-paint-functions/description":{"message":"Adds new functions to the paint editor. The new functions include unite (combining them into one), subtract (removing one shape from another), exclude (removing the overlap of 2 items), and intersect (removing everything but the overlap of 2 items). Each function only works with 2 items."},"asset-size/title":{"message":"Asset Size"},"asset-size/description":{"message":"Allows you to hover over any asset (costumes and sounds) in the editor to view the file size."},"disable-cloud/title":{"message":"Disable Cloud"},"disable-cloud/description":{"message":"Allows you to disable cloud data on any project. This will still receive cloud data information, but will not send any."},"webp-uploads/title":{"message":"WEBP Image Uploads"},"webp-uploads/description":{"message":"Allows you to upload webp images in the editor for new sprites, costumes and stage backdrops."},"remaining-replies/title":{"message":"Remaining Replies"},"remaining-replies/description":{"message":"Shows how many more replies are allowed in a thread of studio comments."},"video-recorder/title":{"message":"Record Stage"},"video-recorder/description":{"message":"Allows you to record the stage for projects while in the editor or on the project page."},"studio-creation-date/title":{"message":"Studio Creation Date"},"studio-creation-date/description":{"message":"Adds the creation date of the studio to the studio footer."},"explore-filter/title":{"message":"Explore Filter"},"explore-filter/description":{"message":"Customize project and studio search results with filters on the Search, Explore, and Studio pages."},"better-featured-projects/title":{"message":"Better Featured Projects"},"better-featured-projects/description":{"message":"Replaces the Featured Projects section with featured projects curated by ScratchTools users. You can submit your own projects to be featured as well."},"align-to-center/title":{"message":"Align to Center"},"align-to-center/description":{"message":"Allows you to align text in Instructions and Notes & Credits boxes to the center of the input."},"more-editor-fonts/title":{"message":"More Paint Editor Fonts"},"more-editor-fonts/description":{"message":"Allows you to use dozens of extra fonts in the paint editor."},"upload-thumbnail/title":{"message":"Set Thumbnail"},"upload-thumbnail/description":{"message":"Allows you to upload an image or GIF as a project thumbnail, or set the thumbnail to the current stage."},"paint-align/title":{"message":"Align Objects in Paint Editor"},"paint-align/description":{"message":"Adds a button to the paint editor that allows you to align selected items."},"rotate-gradient/title":{"message":"Rotate Gradients"},"rotate-gradient/description":{"message":"Allows you to rotate gradients in any direction in the costume editor. Works in both the vector and bitmap editors."},"change-monitor-opacity/title":{"message":"Custom Monitor Opacity"},"change-monitor-opacity/description":{"message":"Set the opacity of variables and lists on the stage to a custom number."},"project-reactions/title":{"message":"Project Reactions"},"project-reactions/description":{"message":"Allows you to react to projects with different emojis."},"chomp-blocks/title":{"message":"Extend C Blocks"},"chomp-blocks/description":{"message":"Automatically extends C blocks to wrap around blocks that it is being placed over when dragging."},"custom-explore/title":{"message":"Custom Explore Redirect"},"custom-explore/description":{"message":"Automatically redirect to a specific tab on the Explore page."},"stage-in-spritepane/title":{"message":"Stage In Sprite Pane"},"stage-in-spritepane/description":{"message":"Move the stage button to the sprite pane to widen the sprite field."},"better-cloud-history/title":{"message":"Better Cloud History"},"better-cloud-history/description":{"message":"Updates the cloud monitor page to a more modern version with more details. You can click on variable names to sort by that variable."},"sprite-layers/title":{"message":"View Sprite Layers"},"sprite-layers/description":{"message":"Allows you to hover over the show/hide toggle in the sprite properties panel of the editor to view the sprite layers."},"hide-project-tags/title":{"message":"Hide Project Tags"},"hide-project-tags/description":{"message":"Hides all linked tags in the Instructions/Notes and Credits of projects."},"snap-to-grid/title":{"message":"Snap Scripts to Grid"},"snap-to-grid/description":{"message":"Automatically aligns scripts to the dotted grid in the editor when placed."},"select-self/title":{"message":"Select Self"},"select-self/description":{"message":"Allows you to select the current sprite when opening sprite dropdowns, instead of only other sprites."},"sidebar/title":{"message":"Sidebar"},"sidebar/description":{"message":"Adds a sidebar to the Scratch website, rather than just the normal navigation bar at the top of the screen."},"project-version-detector/title":{"message":"Project Version Detector"},"project-version-detector/description":{"message":"Checks when a project was shared and adds a label next to the share date to indicate which version of Scratch was in use at that time."},"fullscreen-explorer/title":{"message":"Fullscreen Project Grids"},"fullscreen-explorer/description":{"message":"Find projects on the big screen by removing the left and right blanks on the Trends, Search, Remix pages."},"project-descriptions/title":{"message":"Summarized Descriptions"},"project-descriptions/description":{"message":"Uses artificial intelligence to summarize project descriptions when you choose to, and shortens long descriptions down to important information, such as gameplay instructions."},"total-stats/title":{"message":"Total User Stats"},"total-stats/description":{"message":"Next to shared projects on a user's profile, displays the total loves, favorites and views that the user has received across all of their shared projects."},"project-miniplayer/title":{"message":"Project Miniplayer"},"project-miniplayer/description":{"message":"Scroll down on the project page and you will automatically see the project miniplayer."},"pin-comments/title":{"message":"Pin Project Comments"},"pin-comments/description":{"message":"Allows you to pin comments on your own projects and see what comments are pinned on other projects."},"download-project/title":{"message":"Download Projects"},"download-project/description":{"message":"Adds a button to project pages that allows you to download the project as an .sb3 file."},"blur-modal/title":{"message":"Blur Modal Backgrounds"},"blur-modal/description":{"message":"Blurs the backgrounds of modals instead of having a colored overlay."},"quick-search/title":{"message":"Quick Search"},"quick-search/description":{"message":"Easily jump between pages on the Scratch website with just the click of Control + K."},"favicon-messages/title":{"message":"Tab Message Count"},"favicon-messages/description":{"message":"Displays your message count in the tab favicon, the Scratch icon at the top of your tab."},"show-emoji-names/title":{"message":"Show Emoji Name"},"show-emoji-names/description":{"message":"Allows you to hover over Scratch emojis in the comments and view their names."},"more-block-themes/title":{"message":"More Block Themes"},"more-block-themes/description":{"message":"Adds additional themes for blocks in the code editor."},"more-key-inputs/title":{"message":"More Key Inputs"},"more-key-inputs/description":{"message":"Adds support for more keys on \"key pressed\" blocks."},"comment-tags/title":{"message":"Editor Comment Tags"},"comment-tags/description":{"message":"Add tags to editor comments to easily organize them."},"profile-flag/title":{"message":"Flag on Profile"},"profile-flag/description":{"message":"Adds flag emojis near selected locations on profile pages."},"follow-on-projects/title":{"message":"Follow on Project Page"},"follow-on-projects/description":{"message":"Follow users directly from the project page instead of going to their profile."},"dark-paint-editor/title":{"message":"Switch Paint Background"},"dark-paint-editor/description":{"message":"Adds a button next to the zoom controls in the paint editor that allows you to switch the background color of the paint editor between light and dark."},"specific-replies/title":{"message":"Specific Reply Messages"},"specific-replies/description":{"message":"In messages related to comments, specifies who a comment was replying to."},"better-trending-thumbnails/title":{"message":"Larger Thumbnails"},"better-trending-thumbnails/description":{"message":"Updates thumbnails on the trending and search pages to be larger and better fit the project/studio box."},"anti-generic/title":{"message":"Anti Generic"},"anti-generic/description":{"message":"On the explore and trending pages, this beta feature automatically hides repetitive projects, along with projects that it expects are generic. This includes projects with a lot of tags, common names, and project duplicates."},"wrap-lists/title":{"message":"Wrap List Items"},"wrap-lists/description":{"message":"Displays text in list items normally without cutting them off if they're too long."},"live-stats/title":{"message":"Live Stats"},"live-stats/description":{"message":"Updates the loves, favorites, remixes, and views on a project live, without having to reload to view the new counts."},"hide-scratch-news/title":{"message":"Hide Scratch News"},"hide-scratch-news/description":{"message":"Hides the Scratch News section on the homepage of the Scratch website."},"watch-later/title":{"message":"Save to Watch Later"},"watch-later/description":{"message":"Save projects you want to view later and they'll appear on a watch later page."},"remove-project-button/title":{"message":"Remove Project Button"},"remove-project-button/description":{"message":"Adds a button to projects in studios that allows you to easily remove it from the studio without opening the menu."},"right-side-flag/title":{"message":"Right Side Flag"},"right-side-flag/description":{"message":"Moves the green flag and the red stop sign to the right side of the stage."},"love-fave-animate/title":{"message":"Love Animations"},"love-fave-animate/description":{"message":"Animates the clicking of the love and favorite buttons on project pages."},"default-to-local/title":{"message":"Default to Local"},"default-to-local/description":{"message":"When creating a variable, sets the default to For This Sprite Only, rather than For All Sprites."},"start-stop-hotkeys/title":{"message":"Green Flag Hotkeys"},"start-stop-hotkeys/description":{"message":"Use Control + G to start or stop a project, depending on whether or not it is running."},"opacity-slider/title":{"message":"Opacity Slider"},"opacity-slider/description":{"message":"Change the opacity of objects in the paint editor."},"more-studios/title":{"message":"More Studios"},"more-studios/description":{"message":"Allows you to add projects to more studios instead of just 20."},"localized-explore/title":{"message":"Projects from Country"},"localized-explore/description":{"message":"On the explore page, makes projects from other countries less visible. This is to only show projects in languages that you understand."},"project-bar/title":{"message":"Project Bar"},"project-bar/description":{"message":"Continue to view the information for a project, even after you scroll down past the notes and credits."},"more-news/title":{"message":"More Scratch News"},"more-news/description":{"message":"On the main page, scroll through the Scratch News section and load more results."},"dumpster-fire/title":{"message":"Dumpster Fire"},"dumpster-fire/description":{"message":"The Scratch homepage is a liar with their \"Featured Projects\" section. This changes the name to the proper form, which is \"Dumpster Fire\"."},"steal-game/title":{"message":"Steal Game"},"steal-game/description":{"message":"Changes the remix button's text to 'Steal game'."},"statistics/title":{"message":"Statistics"},"statistics/description":{"message":"Adds a statistics button on the my stuff page that leads to your ScratchStats profile."},"echo-effect/title":{"message":"Echo Effect"},"echo-effect/description":{"message":"Adds the echo effect back to the Scratch sound editor."},"compact-buttons/title":{"message":"Compact Buttons"},"compact-buttons/description":{"message":"Buttons text gets removed and will get a new icon if it does not have one already."},"message-count/title":{"message":"Message Count"},"message-count/description":{"message":"Displays the user's message count on their profile next to the country."},"move-share-button/title":{"message":"Move Share Button"},"move-share-button/description":{"message":"On project pages, moves the share button next to the See Inside button."},"preview-textboxes/title":{"message":"Preview Textboxes"},"preview-textboxes/description":{"message":"Preview your profile About Me and What I'm Working On, and your projects' Instructions and Notes and Credits, so that you can see what it will look like to other users."},"more-tutorials/title":{"message":"More Tutorials"},"more-tutorials/description":{"message":"On the Ideas page, you can view additional tutorials from other Scratchers."},"simplify-action-buttons/title":{"message":"Simplify Action Buttons"},"simplify-action-buttons/description":{"message":"Displays project action buttons underneath Notes and Credits as their icons."},"slash-to-search/title":{"message":"Slash to Search"},"slash-to-search/description":{"message":"Click the slash key (/) to select the search bar and start typing."},"shared-clipboard/title":{"message":"Shared Clipboard"},"shared-clipboard/description":{"message":"Allows you to copy and paste items between paint editors in different projects."},"hide-footer/title":{"message":"Hide Footer"},"hide-footer/description":{"message":"The footer takes up a lot of unnecessary space. So hide it!"},"original-colors/title":{"message":"Revert to Blue"},"original-colors/description":{"message":"Changes all of the Scratch website's colors back to the original coloring from 3.0, before purple."},"simplify-editor-tabs/title":{"message":"Simplify Editor Tabs"},"simplify-editor-tabs/description":{"message":"Changes editor tabs to icon-only and shows them as a circle"},"live-character-counts/title":{"message":"Live Character Counts"},"live-character-counts/description":{"message":"On forum, studio, and project pages, displays the live character count for textboxes."},"advanced-search/title":{"message":"Search Profiles"},"advanced-search/description":{"message":"When you search for a user, a link to their profile will be at the top of the page."},"studio-links/title":{"message":"Studio Links as Titles"},"studio-links/description":{"message":"Replaces studio links with their titles, all across the Scratch website."},"block-studios/title":{"message":"Block Individual Studio Activity"},"block-studios/description":{"message":"Disable studio activity messages from specific studios."},"block-messages/title":{"message":"Block Users"},"block-messages/description":{"message":"Hide messages from users that you block. Other users won't see that you've blocked them."},"two-colors/title":{"message":"2.0 Block Colors"},"two-colors/description":{"message":"Replaces the colors of the blocks in the editor with the blocks from the 2.0 version of the code editor."},"project-links/title":{"message":"Project Links as Titles"},"project-links/description":{"message":"Replaces project links with their titles, all across the Scratch website."},"emoji-status/title":{"message":"Emoji Statuses"},"emoji-status/description":{"message":"Set the status on your profile to an emoji. Other ScratchTools users will be able to see this status."},"display-name/title":{"message":"Display Names"},"display-name/description":{"message":"Shows display names for Scratchers, and allows you to set your own display name. Display names show next to your username, and aren't limited like usernames are."},"isonline/title":{"message":"Show if User is Online"},"isonline/description":{"message":"On profile pages, displays if a user is online. This will also let other users see if you are online."},"plain-background/title":{"message":"Plain Background"},"plain-background/description":{"message":"Removes the dots from the background of the code editor."},"hide-advertisements/title":{"message":"Hide Ads in Comments"},"hide-advertisements/description":{"message":"Hides advertisements in the comments of profiles, projects, and studios. They can take up a lot of space in the comments."},"hide-block-category-names/title":{"message":"Hide Block Category Names"},"hide-block-category-names/description":{"message":"Changes the block categories in the editor to only show the colors of the categories."},"unlisted-projects/title":{"message":"Unlisted Projects"},"unlisted-projects/description":{"message":"Allows you to generate share links for unshared projects in the editor."},"stats-percentages/title":{"message":"Show Percentages for Project Stats"},"stats-percentages/description":{"message":"On the my stuff page, hover over the number of loves, favorites or remixes to view what percent of viewers performed the action."},"clone-counter/title":{"message":"Clone Counter"},"clone-counter/description":{"message":"Displays the total number of clones in the project above, in the stage header."},"colored-shadows/title":{"message":"Colored Shadows"},"colored-shadows/description":{"message":"Replaces the shadow created when you drag a block near another block with the color of the block that is being moved."},"creator-badge/title":{"message":"Author Badge"},"creator-badge/description":{"message":"Adds a badge next to comments written by the author of the project."},"original-buttons/title":{"message":"Original Buttons"},"original-buttons/description":{"message":"Returns the original love, favorite, remix, and view buttons to the Scratch project pages."},"box-shadows/title":{"message":"Content Box Shadows"},"box-shadows/description":{"message":"Adds shadows on all content boxes. When hovering one, the shadow will darken."},"admin-notifications/title":{"message":"Red Admin Message Indicator"},"admin-notifications/description":{"message":"If you have an admin notification from the Scratch Team, the message indicator in the navigation bar will display red instead of orange."},"nicknames/title":{"message":"Nicknames"},"nicknames/description":{"message":"Set nicknames for other Scratchers. Only you can see the nicknames, and their username will be replaced with the nickname when you see their name."},"load-more-forum-posts/title":{"message":"Load More Posts"},"load-more-forum-posts/description":{"message":"Load more posts in the forum without having to switch pages."},"scroll-project-titles/title":{"message":"Scroll Project Titles"},"scroll-project-titles/description":{"message":"Allows you to scroll and view the entire title of projects that you don't own."},"search-context-menus/title":{"message":"Search Context Menus"},"search-context-menus/description":{"message":"Type and search context menus to select an option efficiently. You can also press enter to select the top option."},"hover-user-cards/title":{"message":"User Hover Cards"},"hover-user-cards/description":{"message":"Hover over any username on the website to display the profile picture, username and follower count."},"exact-join-date/title":{"message":"Exact Join Date"},"exact-join-date/description":{"message":"Displays the exact time that a user joined, shown on their profile."},"upload-img-directly/title":{"message":"Direct Image Uploads"},"upload-img-directly/description":{"message":"Allows you to upload images to the Scratch forums for posts and signatures without having to use third party image uploading services."},"leave-studio/title":{"message":"Leave Studio Button"},"leave-studio/description":{"message":"Adds a button to the curators page of any studios you curate or manage that allows you to leave the studio. A confirmation shows first."},"frontpage-curator/title":{"message":"Frontpage Curator Name as Link"},"frontpage-curator/description":{"message":"Makes the name of the Frontpage Curator to a clickable link to his profile."},"minimized-remix-credits/title":{"message":"Minimized Remix Credits"},"minimized-remix-credits/description":{"message":"The remix credit boxes for projects take space from the project Instructions, so this makes the box smaller."},"follows-you/title":{"message":"Show if Following on Profile"},"follows-you/description":{"message":"If a user is following you, it will show next to their username when you visit their profile."},"custom-studio/title":{"message":"Custom Studio Section"},"custom-studio/description":{"message":"On the homepage of the Scratch website, the newest projects from the studio of your choice are displayed above the Featured Projects."},"highlight-unanswered/title":{"message":"Highlight Unanswered Forum Topics"},"highlight-unanswered/description":{"message":"Adds a blue highlight to topics in the forums that have no replies."},"search-assets/title":{"message":"Search Assets"},"search-assets/description":{"message":"Search through costume and sound assets in the editor."},"block-count-in-mystuff/title":{"message":"Block Count in My Stuff"},"block-count-in-mystuff/description":{"message":"Displays the block count for projects on the My Stuff page."},"pause-audio/title":{"message":"Pause Audio"},"pause-audio/description":{"message":"Allows you to pause and resume audio in the sound editor of Scratch projects."},"display-message-count-in-icon/title":{"message":"Display Message Count"},"display-message-count-in-icon/description":{"message":"Displays your current message count in the extension icon for ScratchTools."},"colored-context-menus/title":{"message":"Colored Context Menus"},"colored-context-menus/description":{"message":"Like in Scratch 2.0, colors the context menus based on the color of the block they're for."},"left-side-stage/title":{"message":"Stage on Left Side"},"left-side-stage/description":{"message":"Like in Scratch 2.0, moves the stage to the left side of the editor, rather than keeping it on the right."},"move-project-title-input/title":{"message":"Project Title Above Stage"},"move-project-title-input/description":{"message":"Like in Scratch 2.0, moves the project title input box above the stage, rather than in the navbar. This only applies to the editor."},"hide-disabled-menu-options/title":{"message":"Hide Disabled Context Menu Options"},"hide-disabled-menu-options/description":{"message":"Context menu options in the editor show even if they are disabled and unable to be used, so this feature will hide them if they are."},"follower-count/title":{"message":"Follower Count on Projects"},"follower-count/description":{"message":"Displays the follower count of the project creator on their projects."},"hide-studio-borders/title":{"message":"Hide Studio Frames"},"hide-studio-borders/description":{"message":"Removes the odd frames from around studio images on 2.0 pages."},"hide-textarea-labels/title":{"message":"Hide Project Instructions and Notes and Credits Labels"},"hide-textarea-labels/description":{"message":"The instructions and notes and credits labels take up quite a bit of space where there could be usual information. This removes them."},"default-to-trending/title":{"message":"Search Trending by Default"},"default-to-trending/description":{"message":"Currently, when you search projects on the Scratch website, you automatically search with the popular filter, instead of trending."},"infinite-backpack-scrolling/title":{"message":"Infinite Backpack Scrolling"},"infinite-backpack-scrolling/description":{"message":"Scroll through the backpack until you reach the very end (does take some time to load, but loads automatically)."},"hide-studio-messages/title":{"message":"Hide Studio Activity Messages"},"hide-studio-messages/description":{"message":"Hide the studio activity messages from the messages page- they pile up quickly and can get annoying."},"get-project-tags/title":{"message":"Display Project Tags"},"get-project-tags/description":{"message":"Lists all of the tags used in the project description right below the project notes and credits."},"link-to-propose/title":{"message":"Link Featured Projects to Studio"},"link-to-propose/description":{"message":"Links the Featured Projects box on the homepage to the Propose Projects to Be Featured studio."},"add-last-option-list/title":{"message":"Set List Item to Last"},"add-last-option-list/description":{"message":"Right click a 'get item [number] of [list]' to set it to select the very last item in the selected list."},"cloud-scratchers/title":{"message":"Online Scratchers in Multiplayer Game"},"cloud-scratchers/description":{"message":"On project pages, displays all of the Scratchers currently in that multiplayer game."},"editor-in-two/title":{"message":"2.0 Editor"},"editor-in-two/description":{"message":"Replaces the default 3.0 online project editor with the 2.0 editor. It's nostalgic, really."},"comment-on-closed-profile/title":{"message":"Comment On Profile With Comments Closed"},"comment-on-closed-profile/description":{"message":"If your profile comments are closed, you can now comment on your own profile anyways. Only you can comment on the profile."},"turbowarp-button-in-editor/title":{"message":"Open in TurboWarp from Editor"},"turbowarp-button-in-editor/description":{"message":"Adds a button to the editor so that you can instantly open the current project in TurboWarp."},"sprite-clones/title":{"message":"Sprite Clone Counter"},"sprite-clones/description":{"message":"Displays the clone count for each individual sprite."},"block-log/title":{"message":"Block Log"},"block-log/description":{"message":"Logs and displays all undo information for the block editor when you press ctrl+shift+l."},"scrollable-list-items/title":{"message":"Scrollable List Items"},"scrollable-list-items/description":{"message":"List items that have a value longer than the width of the list itself will get cut off. Now, you can scroll left and right through the list item."},"custom-fonts/title":{"message":"Custom Website Font"},"custom-fonts/description":{"message":"On the Scratch website, you can set the font to whatever font you want, as long as it is on the Google Fonts website. This is case-sensitive."},"project-timer/title":{"message":"Project Timer"},"project-timer/description":{"message":"Displays the amount of time (in seconds) that the project has been running for."},"colored-comments/title":{"message":"Colored Editor Comments"},"colored-comments/description":{"message":"Colors comments in the editor based on the color of their parent block."},"recently-viewed-projects/title":{"message":"Recently Viewed Projects"},"recently-viewed-projects/description":{"message":"Adds a tab to the My Stuff page where you can see a list of the projects that you have recently viewed."},"collapse-blocks/title":{"message":"Collapse Blocks"},"collapse-blocks/description":{"message":"Right-click block menus in the editor include a button that will let you collapse the selected block."},"set-featured-project/title":{"message":"Set Featured Project"},"set-featured-project/description":{"message":"On any project page, you can set your profile's featured project with the click of a button- even unshared projects."},"scratchformat/title":{"message":"ScratchFormat"},"scratchformat/description":{"message":"Format your comments with bold, italic, and more. The comments will be styled to everyone using ScratchTools."},"expand-editor/title":{"message":"Expand Editor"},"expand-editor/description":{"message":"Use the ctrl+e to switch between the default block editor view and one that hides the stage to expand editor itself."},"list-sprites/title":{"message":"Sprite List"},"list-sprites/description":{"message":"Replaces the sprite grid in the editor with a list that includes the block count and position of the sprite."},"check-if-trending/title":{"message":"Check if Trending"},"check-if-trending/description":{"message":"If a project you're viewing is on the trending page, the place on the trending page will be shown next to the share date on the project page."},"link-forum-activity/title":{"message":"Link Users in Forum Activity"},"link-forum-activity/description":{"message":"In the forums' last post section, makes the usernames link to the user's profile."},"remove-topic-and-post/title":{"message":"Hide Forum Category Counts"},"remove-topic-and-post/description":{"message":"Hides the forum homepage topic and post boxes."},"forum-homepage-emojis/title":{"message":"Forum Category Emojis"},"forum-homepage-emojis/description":{"message":"Adds colorful emojis on the forum homepage categories based on their topic."},"remove-collapse-buttons/title":{"message":"Hide Forum Collapse Buttons"},"remove-collapse-buttons/description":{"message":"Hides the collapse buttons on the forum main page."},"pin-projects/title":{"message":"Pin Projects to My Stuff"},"pin-projects/description":{"message":"Pin one of your projects to the top of your My Stuff page with the click of a button. You can unpin your pinned project or switch out your pinned project for another one as well."},"last-key-pressed/title":{"message":"Last Key Pressed"},"last-key-pressed/description":{"message":"On any project page and in the editor, you can view the last key that you have pressed while on that project, according to the project itself. This is good for games such as platformers."},"hide-signatures/title":{"message":"Hide Forum Signatures"},"hide-signatures/description":{"message":"Hides all forum signatures and signature dividers."},"twemoji-in-forums/title":{"message":"Better Forum Emojis"},"twemoji-in-forums/description":{"message":"Replaces the current low resolution forum emojis with high quality Twemojis."},"go-to-parent/title":{"message":"Go to Parent Button"},"go-to-parent/description":{"message":"In the editor for any project that is a remix, you can click a button to go to the editor in the parent project."},"most-popular-project/title":{"message":"Most Popular Project"},"most-popular-project/description":{"message":"Displays the most popular project (by views) of the user on profile pages. You can click on the project to view it."},"editor-dark-mode/title":{"message":"Editor Dark Mode"},"editor-dark-mode/description":{"message":"Switches the editor's light color scheme to a darker one."},"hide-studio-group-icon/title":{"message":"Hide Studio Group Icon"},"hide-studio-group-icon/description":{"message":"Hides the studio group icon, and only shows the studio thumbnail."},"colored-messages/title":{"message":"Colored Messages"},"colored-messages/description":{"message":"Colors your messages based on the type of message, such as loves, favorites, and studio invites."},"full-title/title":{"message":"Full Project Title"},"full-title/description":{"message":"On profile pages, hover over any project title to show the full title."},"fixed-box/title":{"message":"Fix Content Boxes"},"fixed-box/description":{"message":"Makes all sides of boxes on the pages rounded, rather than just the tops."},"user-bio/title":{"message":"User Bio on Hover"},"user-bio/description":{"message":"In profile comments, hover over any username to display the user's bio."},"nfe-project-checker/title":{"message":"NFE Project Checker"},"nfe-project-checker/description":{"message":"On project pages, displays whether the project is Safe, Unreviewed, or NSFE (Not Safe for Everyone)."},"sprite-data/title":{"message":"Display Sprite Data"},"sprite-data/description":{"message":"In the Code, Costumes, and Sounds tab for each sprite, the number of blocks, costumes, and sounds will be displayed for the current sprite."},"idea-generator/title":{"message":"Project Idea Generator"},"idea-generator/description":{"message":"On the Scratch Ideas page, there will be a section where you can generate project ideas if you need some."},"hide-stickies/title":{"message":"Hide Forum Stickies"},"hide-stickies/description":{"message":"Hides the basic stickies from the top of each forum topic."},"nfe-search/title":{"message":"NFE Search"},"nfe-search/description":{"message":"Use a button to search all projects, including NFE ones."},"open-in-new-tab/title":{"message":"Open in New Tab"},"open-in-new-tab/description":{"message":"Automatically opens links on project pages in a new tab."},"unbold-site-text/title":{"message":"Unbold Site Text"},"unbold-site-text/description":{"message":"Makes it so that all text across Scratch is unbolded, and just normal text."},"compact-navbar/title":{"message":"Compact Navbar"},"compact-navbar/description":{"message":"Makes more room on the navigation bar near where your profile dropdown is."},"delete-all/title":{"message":"Delete All Sprites"},"delete-all/description":{"message":"Adds an option in the right-click context menu for sprites. It will delete all sprites (after confirmation to make sure it isn't an accident)."},"round-profile-pictures/title":{"message":"Round Profile Pictures"},"round-profile-pictures/description":{"message":"All profile pictures on the Scratch website will be rounded."},"ocular-link/title":{"message":"Ocular Links in Forums"},"ocular-link/description":{"message":"Adds a link to any user's Ocular page right below their username on a post."},"forum-scratch-team/title":{"message":"Scratch Team Symbol in Forums"},"forum-scratch-team/description":{"message":"Next to the username of any Scratch Team member in the forums, an asterisk (*) is placed at the end of their username."},"remove-editor-icons/title":{"message":"Remove Editor Icons"},"remove-editor-icons/description":{"message":"Removes the icons from the tabs in the editor."},"sprite-watermark/title":{"message":"Remove Sprite Watermark"},"sprite-watermark/description":{"message":"Removes the sprite watermark that shows in the editor."},"compact-editor/title":{"message":"Compact Editor"},"compact-editor/description":{"message":"Makes sprite and backdrop information more compact."},"my-recent-projects/title":{"message":"Replace Scratch News with Recent Projects"},"my-recent-projects/description":{"message":"Replaces the Scratch News section on the homepage with your recently shared projects."},"focus-mode/title":{"message":"Focus Mode"},"focus-mode/description":{"message":"Removes the comments, studio and remix column, header, and footer on project pages when the button is clicked."}}
\ No newline at end of file
diff --git a/features/asset-size/script.js b/features/asset-size/script.js
index 382c7046..c067cc34 100644
--- a/features/asset-size/script.js
+++ b/features/asset-size/script.js
@@ -6,7 +6,7 @@ export default async function ({ feature, console }) {
asset.dataset.ste = "ste-file-size";
let content = asset.querySelector(
- "div[class*='sprite-selector-item_sprite-info_-'] div[class*='sprite-selector-item_sprite-details_']"
+ "div[class*='sprite-selector-item_sprite-info_'] div[class*='sprite-selector-item_sprite-details_']"
);
asset.firstChild.addEventListener("mouseover", function () {
diff --git a/features/chomp-blocks/data.json b/features/chomp-blocks/data.json
index 7a8ca42e..ad8a176e 100644
--- a/features/chomp-blocks/data.json
+++ b/features/chomp-blocks/data.json
@@ -1,5 +1,5 @@
{
- "title": "Extend Wrapped C Blocks",
+ "title": "Extend C Blocks",
"description": "Automatically extends C blocks to wrap around blocks that it is being placed over when dragging.",
"credits": [
{
From 5eda7c7f5e3a86bf6170f4eb5d2455b1ac8f3337 Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Wed, 4 Dec 2024 15:19:33 -0800
Subject: [PATCH 176/253] Request permissions API
---
api/feature.js | 3 +++
api/main.js | 17 +++++++++++++++++
build/index.js | 1 +
build/write-permissions.js | 26 ++++++++++++++++++++++++++
extras/background.js | 23 ++++++++++++++++++++++-
5 files changed, 69 insertions(+), 1 deletion(-)
create mode 100644 build/index.js
create mode 100644 build/write-permissions.js
diff --git a/api/feature.js b/api/feature.js
index 26fe2fb1..8eb4b689 100644
--- a/api/feature.js
+++ b/api/feature.js
@@ -6,6 +6,9 @@ class Feature {
finalFeature = el;
}
});
+ this.requestPermissions = async function(...permissions) {
+ return await ScratchTools.sendMessage("request-perms", permissions)
+ }
this.data = finalFeature;
this.msg = function (string) {
return this.data.localesData[`${this.data.id}/`+string] || `ScratchTools.${this.data.id}.${string}`;
diff --git a/api/main.js b/api/main.js
index 9ae24062..f45ee597 100644
--- a/api/main.js
+++ b/api/main.js
@@ -101,6 +101,23 @@ if (
ScratchTools.type = "Website";
}
+ScratchTools.MESSAGES = []
+ScratchTools.sendMessage = function(id, content) {
+ let uuid = UUID()
+ chrome.runtime.sendMessage(ScratchTools.id, { message: id, content, source: "message-api", uuid });
+ return new Promise((resolve, reject) => {
+ ScratchTools.MESSAGES.push({ message: id, source: "message-api", uuid, resolve });
+ });
+}
+
+function UUID() {
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (char) {
+ const random = Math.random() * 16 | 0;
+ const value = char === 'x' ? random : (random & 0x3 | 0x8);
+ return value.toString(16);
+ });
+}
+
var storagePromises = [];
ScratchTools.storage = {
get: async function (key) {
diff --git a/build/index.js b/build/index.js
new file mode 100644
index 00000000..152e7566
--- /dev/null
+++ b/build/index.js
@@ -0,0 +1 @@
+require("./write-permissions")
\ No newline at end of file
diff --git a/build/write-permissions.js b/build/write-permissions.js
new file mode 100644
index 00000000..b1136f1a
--- /dev/null
+++ b/build/write-permissions.js
@@ -0,0 +1,26 @@
+const fs = require("fs")
+let features = JSON.parse(fs.readFileSync("./features/features.json"))
+let manifest = JSON.parse(fs.readFileSync("./manifest.json"))
+let permissions = ["https://api.scratch.mit.edu"]
+
+for (var i in features) {
+ if (features[i].version === 2) {
+ let feature = JSON.parse(fs.readFileSync(`./features/${features[i].id}/data.json`))
+ if (feature.permissions) {
+ permissions.push(...feature.permissions.filter((perm) => !permissions.includes(perm)))
+ }
+ }
+}
+
+manifest.optional_permissions = permissions.filter((perm) => !checkUrl(perm))
+manifest.optional_host_permissions = permissions.filter((perm) => checkUrl(perm))
+fs.writeFileSync("./manifest.json", JSON.stringify(manifest, null, 2), 'utf8');
+
+function checkUrl(perm) {
+ try {
+ new URL(perm);
+ return true;
+ } catch (_) {
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/extras/background.js b/extras/background.js
index 61eefa65..1e404847 100644
--- a/extras/background.js
+++ b/extras/background.js
@@ -692,7 +692,28 @@ chrome.runtime.onMessageExternal.addListener(async function (
});
}
if (msg === "returnToTab") {
- await chrome.tabs.update(sender.tab.id, {active: true})
+ await chrome.tabs.update(sender.tab.id, { active: true });
+ }
+ if (msg.source === "message-api") {
+ if (msg.message?.startsWith("request-perms")) {
+ let perms = msg.content;
+
+ chrome.permissions.request({ permissions: perms }, async (granted) => {
+ let isComplete = !!granted;
+
+ await chrome.scripting.executeScript({
+ args: [isComplete, msg.uuid],
+ target: { tabId: sender.tab.id },
+ func: sendPermsResponse,
+ world: "MAIN",
+ });
+ function sendPermsResponse(completed, uuid) {
+ ScratchTools.MESSAGES.find((el) => el.uuid === uuid).resolve(
+ completed
+ );
+ }
+ });
+ }
}
if (typeof msg === "object") {
if (msg.message === "storageSet") {
From ca58148fc416b51776438af193432af250b641d5 Mon Sep 17 00:00:00 2001
From: Elip100
Date: Fri, 20 Dec 2024 14:24:18 -0500
Subject: [PATCH 177/253] Grammer fix
---
.github/ISSUE_TEMPLATE/--bug.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/ISSUE_TEMPLATE/--bug.yml b/.github/ISSUE_TEMPLATE/--bug.yml
index 72513211..c5e8de7e 100644
--- a/.github/ISSUE_TEMPLATE/--bug.yml
+++ b/.github/ISSUE_TEMPLATE/--bug.yml
@@ -1,5 +1,5 @@
name: 🐛 Bug
-description: Report a bug for ScratchTool.
+description: Report a bug in ScratchTools.
labels: ["type: bug", "status: needs review"]
body:
From b35118f01adedb22667cf831bf019302ee9d9d6c Mon Sep 17 00:00:00 2001
From: MaterArc <105017592+MaterArc@users.noreply.github.com>
Date: Sat, 28 Dec 2024 11:27:19 -0500
Subject: [PATCH 178/253] Remove Confirmation
Remove the new sprite confirmation feature from Scratch
---
features/remove-confirmation/data.json | 13 +++++++++++++
features/remove-confirmation/script.js | 12 ++++++++++++
features/remove-confirmation/style.css | 4 ++++
3 files changed, 29 insertions(+)
create mode 100644 features/remove-confirmation/data.json
create mode 100644 features/remove-confirmation/script.js
create mode 100644 features/remove-confirmation/style.css
diff --git a/features/remove-confirmation/data.json b/features/remove-confirmation/data.json
new file mode 100644
index 00000000..beaa2dab
--- /dev/null
+++ b/features/remove-confirmation/data.json
@@ -0,0 +1,13 @@
+{
+ "title": "Remove Delete Confirmation",
+ "description": "Removes the delete confirmation prompt when deleting sprites in the Scratch editor.",
+ "credits": [
+ { "username": "MaterArc", "url": "https://scratch.mit.edu/users/MaterArc/" }
+ ],
+ "type": ["Editor"],
+ "tags": ["New", "Featured"],
+ "dynamic": true,
+ "styles": [{ "file": "style.css", "runOn": "/editor/*" }],
+ "scripts": [{ "file": "script.js", "runOn": "/editor/*" }]
+ }
+
\ No newline at end of file
diff --git a/features/remove-confirmation/script.js b/features/remove-confirmation/script.js
new file mode 100644
index 00000000..5aa71290
--- /dev/null
+++ b/features/remove-confirmation/script.js
@@ -0,0 +1,12 @@
+export default async function ({ feature, console }) {
+ ScratchTools.waitForElements("body", () => {
+ document.body.addEventListener("click", () => {
+ ScratchTools.waitForElements(
+ "[class^='delete-confirmation-prompt_ok-button_']",
+ (confirmButton) => {
+ if (feature.self.enabled) confirmButton.click();
+ }
+ );
+ });
+ });
+}
diff --git a/features/remove-confirmation/style.css b/features/remove-confirmation/style.css
new file mode 100644
index 00000000..6175c942
--- /dev/null
+++ b/features/remove-confirmation/style.css
@@ -0,0 +1,4 @@
+[class*="delete-confirmation-prompt_modal-container"] {
+ visibility: hidden;
+ }
+
\ No newline at end of file
From 9cdbc264e318bef570c2ce95d2f946e25b231970 Mon Sep 17 00:00:00 2001
From: MaterArc <105017592+MaterArc@users.noreply.github.com>
Date: Sat, 28 Dec 2024 11:29:03 -0500
Subject: [PATCH 179/253] Update feature.json
---
features/features.json | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/features/features.json b/features/features.json
index caa770ce..779defe0 100644
--- a/features/features.json
+++ b/features/features.json
@@ -1,4 +1,9 @@
[
+ {
+ "version": 2,
+ "id": "remove-confirmation",
+ "versionAdded": "v4.0.0"
+ },
{
"version": 2,
"id": "outline-shape-options",
From 49ce9a5ece19f5782ee482ccc6e249d5c6c24fea Mon Sep 17 00:00:00 2001
From: MaterArc <105017592+MaterArc@users.noreply.github.com>
Date: Sat, 28 Dec 2024 12:21:39 -0500
Subject: [PATCH 180/253] Use `Attribute Selectors` to fix Dark Mode
Refactor feature to utilize Attribute Selectors instead of hashed class names. Previously, the use of hashed class names led to issues as they became outdated, causing the feature to break.
---
features/editor-dark-mode.js | 614 ++++++++++++++++++-----------------
1 file changed, 310 insertions(+), 304 deletions(-)
diff --git a/features/editor-dark-mode.js b/features/editor-dark-mode.js
index 0de48d63..01a11870 100644
--- a/features/editor-dark-mode.js
+++ b/features/editor-dark-mode.js
@@ -1,306 +1,312 @@
if (
- window.location.href.includes("https://scratch.mit.edu/projects/") &&
- window.location.href.includes("/editor")
-) {
- var style = document.createElement("style");
- style.id = "scratchtoolseditor";
- style.innerHTML = `
-/* 3.Darker CSS.
-Built by infinitytec.
-Version 1.8.
-*/
-
-
-/*3.0 Theme Userscript Framework by infinitytec. Released under the MIT license.*/
-/*Set colors for the editor. Names should explain what they are. They will automatically be applied to different parts of the editor. For the purpose of simplification, the red cancel button and the hover/active/focus effects are hard-coded. The effects use filters so they should be good-to-go in most cases.*/
-:root {
- --main-bg: #111111;
- --secondary-bg: #151515;
- --accent: #202020;
- --text: #bfbfbf;
- --editorDarkMode-primary-text: #ffffff;
-}
-
-/*Main UI bar, similar bars, and dropdown menu*/
-.menu-bar_main-menu_3wjWH,
-.modal_header_1h7ps,
-.menu-bar_account-info-group_MeJZP,
-.menu_menu_3k7QT,
-.project-title-input_title-field_en5Gd:focus {
- background: var(--accent);
-}
-
-/*Main background*/
-.gui_body-wrapper_-N0sA,
-.blocklySvg {
- background: var(--main-bg);
-}
-
-/*Scripting area background*/
-.blocklyMainBackground {
- fill: var(--secondary-bg) !important;
-}
-
-/*Right-click & pop-ups*/
-.context-menu_context-menu_2SJM-,
-.blocklyWidgetDiv .goog-menu,
-.Popover-body {
- background: var(--accent) !important;
- color: var(--text) !important;
- border: 1px solid white;
-}
-
-.goog-menuitem-content,
-.color-picker_row-header_173LQ {
- color: var(--text);
-}
-
-/*Highlight*/
-.blocklyWidgetDiv .goog-menuitem-highlight,
-.blocklyWidgetDiv .goog-menuitem-hover,
-.context-menu_menu-item_3cioN:hover {
- background-color: #ffffff33 !important;
-}
-
-/*Palette*/
-.blocklyFlyoutBackground {
- fill: var(--accent) !important;
-}
-
-/*Palette text*/
-.blocklyFlyoutLabelText {
- fill: var(--text) !important;
-}
-
-/*Toolbox, extension connection box*/
-.connection-modal_bottom-area_AHeQ3,
-.connection-modal_body_3YO9j,
-.blocklyToolboxDiv,
-.scratchCategoryMenu {
- background: var(--accent);
- color: var(--text);
-}
-
-/*Selected category*/
-.scratchCategoryMenuItem.categorySelected {
- background: #ffffff22;
-}
-
-/*Sprite and stage selection area*/
-.sprite-selector_sprite-selector_2KgCX,
-.stage-selector_stage-selector_3oWOr,
-.stage-selector_label_1MCfr,
-.stage-selector_count_2QK7D {
- background: var(--accent);
- color: var(--text);
-}
-
-.sprite-info_sprite-info_3EyZh,
-.stage-selector_header_2GVr1,
-.stage-selector_header-title_33xCt,
-.stage-selector_header-title_33xCt,
-.sprite-selector-item_sprite-selector-item_kQm-i:hover {
- background: var(--secondary-bg);
- color: var(--text);
-}
-
-/*Palette Buttons*/
-.blocklyFlyoutButtonBackground {
- fill: var(--accent) !important;
-}
-
-.blocklyFlyoutButtonBackground:hover,
-.blocklyFlyoutButton:hover {
- fill: var(--accent) !important;
- filter: brightness(110%) !important;
-}
-
-blocklyFlyoutButton>text.blocklyText {
- fill: var(--text) !important;
-}
-
-/*Text fill of "Make A" buttons*/
-.blocklyFlyoutButton .blocklyText {
- fill: var(--text) !important;
-}
-
-/*Backpack header*/
-.backpack_backpack-header_6ltCS {
- background: var(--accent);
- color: var(--text);
-}
-
-/*Backpack*/
-.backpack_backpack-list-inner_10a2A {
- background: var(--secondary-bg);
-}
-
-.backpack_backpack-item_hwqzQ,
-.sprite-selector-item_sprite-image-outer_Xs0wN,
-.backpack_backpack-item_hwqzQ>div {
- background: var(--main-bg);
-}
-
-.backpack_backpack-item_hwqzQ img {
- mix-blend-mode: normal;
-}
-
-/*Paint & sound editor sidebar*/
-.selector_list-area_1Xbj_ {
- background: var(--accent);
-}
-
-.selector_new-buttons_2qHDd::before {
- background: none;
-}
-
-/*Paint & sound editor main*/
-.asset-panel_wrapper_366X0 {
- background: var(--secondary-bg);
- color: var(--text);
-}
-
-.sound-editor_effect-button_2zuzT,
-.sound-editor_trim-button_lSENI {
- color: var(--text);
-}
-
-/*Paint and sound editor buttons*/
-img.tool-select-base_tool-select-icon_tJ-rr,
-.sound-editor_trim-button_lSENI {
- filter: brightness(2);
-}
-
-/*Sprite costume selector text*/
-.selector_list-item_3N_u7,
-.sprite-selector-item_sprite-name_1PXjh,
-.sprite-selector-item_sprite-details_2UVpA {
- color: var(--text);
-}
-
-/*Tabs*/
-.gui_tab_27Unf.gui_is-selected_sHAiu {
- background: var(--accent);
- color: var(--text);
-}
-
-.gui_tab_27Unf {
- background: var(--secondary-bg);
- color: var(--text);
-}
-
-.gui_tab_27Unf:hover {
- background: var(--accent);
- filter: brightness(90%);
- color: var(--text);
-}
-
-/*New variable/list/custom block*/
-.prompt_body_18Z-I,
-.custom-procedures_body_SQBv6,
-div.custom-procedures_option-card_BtHt3 {
- background: var(--accent);
- color: var(--text);
-}
-
-.custom-procedures_button-row_2jBu3>button:nth-child(1),
-.prompt_button-row_3Wc5Z>button:nth-child(1),
-.prompt_button-row_3Wc5Z>button:nth-child(1) {
- background: #ff3a5b;
-}
-
-/*Fullscreen view*/
-.stage_stage-wrapper-overlay_fmZuD,
-.stage-header_stage-header-wrapper-overlay_5vfJa {
- background: black;
-}
-
-.stage_stage-overlay-content_ePv_6 {
- border: none;
-}
-
-/*Library and card backgrounds*/
-.library_library-scroll-grid_1jyXm,
-.modal_modal-content_1h3ll.modal_full-screen_FA4cr,
-.card_step-body_2bFkf,
-.card_left-card_1KpEh,
-.card_right-card_3IrbD {
- background: var(--accent);
- color: var(--text);
-}
-
-/*Library items & filter bar*/
-.library-item_library-item-extension_3xus9,
-.library-item_library-item_1DcMO,
-.library_filter-bar_1W0DW {
- background: var(--accent);
-}
-
-.library-item_library-item-extension_3xus9 span,
-.library-item_featured-extension-metadata_3D8E8,
-.library-item_library-item-name_2qMXu {
- color: var(--text) !important;
-}
-
-/*Text input*/
-input[type=text],
-.input_input-form_1Y0wX,
-.prompt_variable-name-text-input_1iu8- {
- background: var(--accent);
- color: var(--text) !important;
-}
-
-input[type=text]:hover,
-input[type=text]:focus {
- background: var(--accent);
- filter: brightness(90%);
-}
-
-/*Buttons (inverted for dark theme)*/
-.blocklyZoom,
-.stage-header_stage-button_hkl9B,
-.sound-editor_round-button_3NLcW,
-.sound-editor_button-group_SFPoV {
- filter: invert(100) hue-rotate(180deg);
-}
-
-/*Set the selected costume/backdrop to have a transparent background as default*/
-.sprite-selector-item_is-selected_24tQj {
- background: transparent !important;
-}
-
-/*Fixing white area around the paint editor*/
-.paint-editor_canvas-container_x2D0a {
- border: 1px solid var(--accent);
- overflow: hidden;
-}
-
-/*Tweaks for updated paint editor*/
-.paper-canvas_paper-canvas_1y588 {
- background-color: var(--secondary-bg);
- border-radius: .4rem;
-}
-
-.paint-editor_canvas-container_x2D0a {
- border: 2px solid var(--accent);
- border-radius: .4rem;
-}
-
-/*Tweaks for users not signed in*/
-.card_card_3GG7C,
-.card_left-card_1KpEh,
-.card_right-card_3IrbD {
- border: 1px solid hsla(216, 49%, 90%, 0.14);
-}
-
-/*Scrollbar*/
-.blocklyScrollbarHandle {
- fill: #CECDCE55;
-}
-`;
- document.body.appendChild(style);
-} else {
- if (document.querySelector("style#scratchtoolseditor") !== null) {
- document.querySelector("style#scratchtoolseditor").remove();
+ window.location.href.includes("https://scratch.mit.edu/projects/") &&
+ window.location.href.includes("/editor")
+ ) {
+ var style = document.createElement("style");
+ style.id = "scratchtoolseditor";
+ style.innerHTML = `
+ /* 3.Darker CSS.
+ Built by infinitytec.
+ Version 1.8. */
+
+ /*3.0 Theme Userscript Framework by infinitytec. Released under the MIT license.*/
+ /*Set colors for the editor. Names should explain what they are. They will automatically be applied to different parts of the editor.
+ For the purpose of simplification, the red cancel button and the hover/active/focus effects are hard-coded. The effects use filters so they should be good-to-go in most cases.*/
+
+ :root {
+ --main-bg: #111111;
+ --secondary-bg: #151515;
+ --accent: #202020;
+ --text: #bfbfbf;
+ --editorDarkMode-primary-text: #ffffff;
+ }
+
+ /*Main UI bar, similar bars, and dropdown menu*/
+ [class^="menu-bar_main-menu_"],
+ [class^="modal_header_"],
+ [class^="menu-bar_account-info-group_"],
+ [class^="menu_menu_"],
+ [class^="project-title-input_title-field_"]:focus {
+ background: var(--accent);
+ }
+
+ /*Main background*/
+ [class^="gui_body-wrapper_"],
+ [class^="blocklySvg"] {
+ background: var(--main-bg);
+ }
+
+ /*Scripting area background*/
+ [class^="blocklyMainBackground"] {
+ fill: var(--secondary-bg) !important;
+ }
+
+ /*Right-click & pop-ups*/
+ [class^="context-menu_context-menu_"],
+ [class^="blocklyWidgetDiv .goog-menu"],
+ [class^="Popover-body"] {
+ background: var(--accent) !important;
+ color: var(--text) !important;
+ border: 1px solid white;
+ }
+
+ [class^="goog-menuitem-content"],
+ [class^="color-picker_row-header_"] {
+ color: var(--text);
+ }
+
+ /*Highlight*/
+ [class^="blocklyWidgetDiv .goog-menuitem-highlight"],
+ [class^="blocklyWidgetDiv .goog-menuitem-hover"],
+ [class^="context-menu_menu-item_"]:hover {
+ background-color: #ffffff33 !important;
+ }
+
+ /*Palette*/
+ [class^="blocklyFlyoutBackground"] {
+ fill: var(--accent) !important;
+ }
+
+ /*Palette text*/
+ [class^="blocklyFlyoutLabelText"] {
+ fill: var(--text) !important;
+ }
+
+ /*Toolbox, extension connection box*/
+ [class^="connection-modal_bottom-area_"],
+ [class^="connection-modal_body_"],
+ [class^="blocklyToolboxDiv"],
+ [class*="scratchCategoryMenuItem"][class*="categorySelected"],
+ [class^="scratchCategoryMenu"] {
+ background: var(--accent);
+ color: var(--text);
+ }
+
+ /*Selected category*/
+ [class^="scratchCategoryMenuItem.categorySelected"] {
+ background: #ffffff22;
+ }
+
+ /*Sprite and stage selection area*/
+ [class^="sprite-selector_sprite-selector_"],
+ [class^="stage-selector_stage-selector_"],
+ [class^="stage-selector_label_"],
+ [class^="stage-selector_count_"] {
+ background: var(--accent);
+ color: var(--text);
+ }
+
+ [class^="sprite-info_sprite-info_"],
+ [class^="stage-selector_header_"],
+ [class^="stage-selector_header-title_"],
+ [class^="sprite-selector-item_sprite-selector-item_"]:hover {
+ background: var(--secondary-bg);
+ color: var(--text);
+ }
+
+ /*Palette Buttons*/
+ [class^="blocklyFlyoutButtonBackground"] {
+ fill: var(--accent) !important;
+ }
+
+ [class^="blocklyFlyoutButtonBackground"]:hover,
+ [class^="blocklyFlyoutButton"]:hover {
+ fill: var(--accent) !important;
+ filter: brightness(110%) !important;
+ }
+
+ [class^="blocklyFlyoutButton"] > text[class^="blocklyText"] {
+ fill: var(--text) !important;
+ }
+
+ /*Text fill of "Make A" buttons*/
+ [class^="blocklyFlyoutButton"] .blocklyText {
+ fill: var(--text) !important;
+ }
+
+ /*Backpack header*/
+ [class^="backpack_backpack-header_"] {
+ background: var(--accent);
+ color: var(--text);
+ }
+
+ /*Backpack*/
+ [class^="backpack_backpack-list-inner_"] {
+ background: var(--secondary-bg);
+ }
+
+ [class^="backpack_backpack-item_"],
+ [class^="sprite-selector-item_sprite-image-outer_"],
+ [class^="backpack_backpack-item_"] > div {
+ background: var(--main-bg);
+ }
+
+ [class^="backpack_backpack-item_"] img {
+ mix-blend-mode: normal;
+ }
+
+ /*Paint & sound editor sidebar*/
+ [class^="selector_list-area_"] {
+ background: var(--accent);
+ }
+
+ [class^="selector_new-buttons_"]::before {
+ background: none;
+ }
+
+ /*Paint & sound editor main*/
+ [class^="asset-panel_wrapper_"] {
+ background: var(--secondary-bg);
+ color: var(--text);
+ }
+
+ [class^="sound-editor_effect-button_"],
+ [class^="sound-editor_trim-button_"] {
+ color: var(--text);
+ }
+
+ /*Paint and sound editor buttons*/
+ [class^="img.tool-select-base_tool-select-icon_"],
+ [class^="sound-editor_trim-button_"] {
+ filter: brightness(2);
+ }
+
+ /*Sprite costume selector text*/
+ [class^="selector_list-item_"],
+ [class^="sprite-selector-item_sprite-name_"],
+ [class^="sprite-selector-item_sprite-details_"] {
+ color: var(--text);
+ }
+
+ /*Tabs*/
+ [class^="react-tabs_react-tabs__tab_"] {
+ background: var(--accent);
+ color: var(--text);
+ }
+
+ [class~="gui_tab_cxXL7"][class~="gui_is-selected_XzCUQ"] {
+ background: var(--accent);
+ color: var(--text);
+ }
+
+ [class*="gui_tab_"]:hover {
+ background: var(--accent);
+ filter: brightness(90%);
+ color: var(--text);
+ }
+
+ [class^="gui_tab_"] {
+ background: var(--secondary-bg);
+ color: var(--text);
+ }
+
+ /*New variable/list/custom block*/
+ [class^="prompt_body_"],
+ [class^="custom-procedures_body_"],
+ [class^="div.custom-procedures_option-card_"] {
+ background: var(--accent);
+ color: var(--text);
+ }
+
+ [class^="custom-procedures_button-row_"] > button:nth-child(1),
+ [class^="prompt_button-row_"] > button:nth-child(1) {
+ background: #ff3a5b;
+ }
+
+ /*Fullscreen view*/
+ [class^="stage_stage-wrapper-overlay_"],
+ [class^="stage-header_stage-header-wrapper-overlay_"] {
+ background: black;
+ }
+
+ [class^="stage_stage-overlay-content_"] {
+ border: none;
+ }
+
+ /*Library and card backgrounds*/
+ [class^="library_library-scroll-grid_"],
+ [class^="modal_modal-content_"].modal_full-screen_,
+ [class^="card_step-body_"],
+ [class^="card_left-card_"],
+ [class^="card_right-card_"] {
+ background: var(--accent);
+ color: var(--text);
+ }
+
+ /*Library items & filter bar*/
+ [class^="library-item_library-item-extension_"],
+ [class^="library-item_library-item_"],
+ [class^="library_filter-bar_"] {
+ background: var(--accent);
+ }
+
+ [class^="library-item_library-item-extension_"] span,
+ [class^="library-item_featured-extension-metadata_"],
+ [class^="library-item_library-item-name_"] {
+ color: var(--text) !important;
+ }
+
+ /*Text input*/
+ input[type="text"],
+ [class^="input_input-form_"],
+ [class^="prompt_variable-name-text-input_"] {
+ background: var(--accent);
+ color: var(--text) !important;
+ }
+
+ input[type="text"]:hover,
+ input[type="text"]:focus {
+ background: var(--accent);
+ filter: brightness(90%);
+ }
+
+ /*Buttons (inverted for dark theme)*/
+ [class^="blocklyZoom"],
+ [class^="stage-header_stage-button_"],
+ [class^="sound-editor_round-button_"],
+ [class^="sound-editor_button-group_"] {
+ filter: invert(100) hue-rotate(180deg);
+ }
+
+ /*Set the selected costume/backdrop to have a transparent background as default*/
+ [class^="sprite-selector-item_is-selected_"] {
+ background: transparent !important;
+ }
+
+ /*Fixing white area around the paint editor*/
+ [class^="paint-editor_canvas-container_"] {
+ border: 1px solid var(--accent);
+ overflow: hidden;
+ }
+
+ /*Tweaks for updated paint editor*/
+ [class^="paper-canvas_paper-canvas_"] {
+ background-color: var(--secondary-bg);
+ border-radius: .4rem;
+ }
+
+ [class^="paint-editor_canvas-container_"] {
+ border: 2px solid var(--accent);
+ border-radius: .4rem;
+ }
+
+ /*Tweaks for users not signed in*/
+ [class^="card_card_"],
+ [class^="card_left-card_"],
+ [class^="card_right-card_"] {
+ border: 1px solid hsla(216, 49%, 90%, 0.14);
+ }
+
+ /*Scrollbar*/
+ [class^="blocklyScrollbarHandle"] {
+ fill: #CECDCE55;
+ }
+ `;
+
+ document.body.appendChild(style);
+ } else {
+ if (document.querySelector("style#scratchtoolseditor") !== null) {
+ document.querySelector("style#scratchtoolseditor").remove();
+ }
}
-}
+
From 22603005e8022050505713b41790af5e3f10ffb3 Mon Sep 17 00:00:00 2001
From: MaterArc <105017592+MaterArc@users.noreply.github.com>
Date: Sun, 29 Dec 2024 12:43:40 -0500
Subject: [PATCH 181/253] Recent Followers and Following
New feature to revert the recent Scratch update that displayed old followers and followings, restoring the view of the most recent ones
---
.../recent-followers-and-following/data.json | 15 +++
.../recent-followers-and-following/script.js | 112 ++++++++++++++++++
2 files changed, 127 insertions(+)
create mode 100644 features/recent-followers-and-following/data.json
create mode 100644 features/recent-followers-and-following/script.js
diff --git a/features/recent-followers-and-following/data.json b/features/recent-followers-and-following/data.json
new file mode 100644
index 00000000..240263c2
--- /dev/null
+++ b/features/recent-followers-and-following/data.json
@@ -0,0 +1,15 @@
+{
+ "title": "Show Recent Followers and Followings",
+ "description": "Displays the most recent followers and followings of a user on their profile page.",
+ "credits": [
+ {
+ "username": "-Brass_Glass-",
+ "url": "https://scratch.mit.edu/users/-Brass_Glass-/"
+ },
+ { "username": "MaterArc", "url": "https://scratch.mit.edu/users/MaterArc/" }
+ ],
+ "type": ["Website"],
+ "tags": ["New", "Featured"],
+ "dynamic": true,
+ "scripts": [{ "file": "script.js", "runOn": "/users/*" }]
+}
diff --git a/features/recent-followers-and-following/script.js b/features/recent-followers-and-following/script.js
new file mode 100644
index 00000000..db82ea36
--- /dev/null
+++ b/features/recent-followers-and-following/script.js
@@ -0,0 +1,112 @@
+export default async function ({ feature, console }) {
+ const username = window.location.pathname.split('/')[2];
+ if (!username) return;
+
+ const followersEndpoint = `https://api.scratch.mit.edu/users/${username}/followers/`;
+ const followingEndpoint = `https://api.scratch.mit.edu/users/${username}/following/`;
+
+ try {
+ const followersResponse = await fetch(followersEndpoint);
+ if (!followersResponse.ok) return;
+
+ const followersData = await followersResponse.json();
+ if (!Array.isArray(followersData)) return;
+
+ const mostRecentFollowers = followersData
+ .slice(0, 9)
+ .filter(follower => follower.username && follower.profile && follower.profile.images)
+ .map(follower => ({
+ username: follower.username,
+ profileImage: follower.profile.images['90x90'] || follower.profile.images['50x50'] || '',
+ }));
+
+ const followingResponse = await fetch(followingEndpoint);
+ if (!followingResponse.ok) return;
+
+ const followingData = await followingResponse.json();
+ if (!Array.isArray(followingData)) return;
+
+ const mostRecentFollowing = followingData
+ .slice(0, 9)
+ .filter(follow => follow.username && follow.profile && follow.profile.images)
+ .map(follow => ({
+ username: follow.username,
+ profileImage: follow.profile.images['90x90'] || follow.profile.images['50x50'] || '',
+ }));
+
+ ScratchTools.waitForElements("#featured", function (allFeaturedElements) {
+ if (allFeaturedElements.length === 0) return;
+
+ const lastFeaturedElement = allFeaturedElements[allFeaturedElements.length - 1];
+ lastFeaturedElement.innerHTML = "";
+
+ mostRecentFollowers.forEach(follower => {
+ const li = document.createElement("li");
+ li.className = "user thumb item";
+
+ const link = document.createElement("a");
+ link.href = `/users/${follower.username}/`;
+ link.title = follower.username;
+
+ const img = document.createElement("img");
+ img.className = "lazy";
+ img.src = follower.profileImage;
+ img.alt = follower.username;
+ img.width = 60;
+ img.height = 60;
+
+ const span = document.createElement("span");
+ span.className = "title";
+
+ const spanLink = document.createElement("a");
+ spanLink.href = `/users/${follower.username}/`;
+ spanLink.textContent = follower.username;
+
+ link.appendChild(img);
+ span.appendChild(spanLink);
+ li.appendChild(link);
+ li.appendChild(span);
+
+ lastFeaturedElement.appendChild(li);
+ });
+
+ if (allFeaturedElements.length > 1) {
+ const secondLastFeaturedElement = allFeaturedElements[allFeaturedElements.length - 2];
+ secondLastFeaturedElement.innerHTML = "";
+
+ mostRecentFollowing.forEach(follow => {
+ const li = document.createElement("li");
+ li.className = "user thumb item";
+
+ const link = document.createElement("a");
+ link.href = `/users/${follow.username}/`;
+ link.title = follow.username;
+
+ const img = document.createElement("img");
+ img.className = "lazy";
+ img.src = follow.profileImage;
+ img.alt = follow.username;
+ img.width = 60;
+ img.height = 60;
+
+ const span = document.createElement("span");
+ span.className = "title";
+
+ const spanLink = document.createElement("a");
+ spanLink.href = `/users/${follow.username}/`;
+ spanLink.textContent = follow.username;
+
+ link.appendChild(img);
+ span.appendChild(spanLink);
+ li.appendChild(link);
+ li.appendChild(span);
+
+ secondLastFeaturedElement.appendChild(li);
+ });
+ }
+ });
+ } catch (error) {
+ return;
+ }
+ }
+
\ No newline at end of file
From d66081dcd7a01bf4b14b8a4c01adf084c1eeab02 Mon Sep 17 00:00:00 2001
From: MaterArc <105017592+MaterArc@users.noreply.github.com>
Date: Sun, 29 Dec 2024 12:44:50 -0500
Subject: [PATCH 182/253] Update features.json
---
features/features.json | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/features/features.json b/features/features.json
index caa770ce..ce8ae54e 100644
--- a/features/features.json
+++ b/features/features.json
@@ -1,4 +1,9 @@
[
+ {
+ "version": 2,
+ "id": "recent-followers-and-following",
+ "versionAdded": "v4.0.0"
+ },
{
"version": 2,
"id": "outline-shape-options",
From f2de1e57ec0764dd012b7bc3ab3758aea723e260 Mon Sep 17 00:00:00 2001
From: MaterArc <105017592+MaterArc@users.noreply.github.com>
Date: Sun, 29 Dec 2024 15:38:47 -0500
Subject: [PATCH 183/253] Update script.js
---
features/recent-followers-and-following/script.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/features/recent-followers-and-following/script.js b/features/recent-followers-and-following/script.js
index db82ea36..d5dac9eb 100644
--- a/features/recent-followers-and-following/script.js
+++ b/features/recent-followers-and-following/script.js
@@ -34,7 +34,7 @@ export default async function ({ feature, console }) {
profileImage: follow.profile.images['90x90'] || follow.profile.images['50x50'] || '',
}));
- ScratchTools.waitForElements("#featured", function (allFeaturedElements) {
+ const allFeaturedElements = document.querySelectorAll("#featured");
if (allFeaturedElements.length === 0) return;
const lastFeaturedElement = allFeaturedElements[allFeaturedElements.length - 1];
@@ -109,4 +109,4 @@ export default async function ({ feature, console }) {
return;
}
}
-
\ No newline at end of file
+
From bc54bfbaf8e765f5fbdcd09537dad759127e4fac Mon Sep 17 00:00:00 2001
From: MaterArc <105017592+MaterArc@users.noreply.github.com>
Date: Sun, 29 Dec 2024 18:51:22 -0500
Subject: [PATCH 184/253] Style new banner link
---
features/original-colors/scratch-www.css | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/features/original-colors/scratch-www.css b/features/original-colors/scratch-www.css
index 242e15dd..2928ba5f 100644
--- a/features/original-colors/scratch-www.css
+++ b/features/original-colors/scratch-www.css
@@ -565,3 +565,7 @@ input[class^="input_input-form_"]:focus {
.studio-status-icon-unselected {
background-color: var(--ste-blue) !important;
}
+
+.banner-wrapper .banner-description p a {
+ color: #fff;
+}
From d8322ae9b9ffc7c3cc3e60e12850ac9da3c14ccb Mon Sep 17 00:00:00 2001
From: MaterArc <105017592+MaterArc@users.noreply.github.com>
Date: Fri, 3 Jan 2025 16:17:21 -0500
Subject: [PATCH 185/253] Fix Syntax Error
---
.../recent-followers-and-following/script.js | 214 +++++++++---------
1 file changed, 106 insertions(+), 108 deletions(-)
diff --git a/features/recent-followers-and-following/script.js b/features/recent-followers-and-following/script.js
index d5dac9eb..f50ca063 100644
--- a/features/recent-followers-and-following/script.js
+++ b/features/recent-followers-and-following/script.js
@@ -1,112 +1,110 @@
export default async function ({ feature, console }) {
- const username = window.location.pathname.split('/')[2];
- if (!username) return;
-
- const followersEndpoint = `https://api.scratch.mit.edu/users/${username}/followers/`;
- const followingEndpoint = `https://api.scratch.mit.edu/users/${username}/following/`;
-
- try {
- const followersResponse = await fetch(followersEndpoint);
- if (!followersResponse.ok) return;
-
- const followersData = await followersResponse.json();
- if (!Array.isArray(followersData)) return;
-
- const mostRecentFollowers = followersData
- .slice(0, 9)
- .filter(follower => follower.username && follower.profile && follower.profile.images)
- .map(follower => ({
- username: follower.username,
- profileImage: follower.profile.images['90x90'] || follower.profile.images['50x50'] || '',
- }));
-
- const followingResponse = await fetch(followingEndpoint);
- if (!followingResponse.ok) return;
-
- const followingData = await followingResponse.json();
- if (!Array.isArray(followingData)) return;
-
- const mostRecentFollowing = followingData
- .slice(0, 9)
- .filter(follow => follow.username && follow.profile && follow.profile.images)
- .map(follow => ({
- username: follow.username,
- profileImage: follow.profile.images['90x90'] || follow.profile.images['50x50'] || '',
- }));
-
- const allFeaturedElements = document.querySelectorAll("#featured");
- if (allFeaturedElements.length === 0) return;
-
- const lastFeaturedElement = allFeaturedElements[allFeaturedElements.length - 1];
- lastFeaturedElement.innerHTML = "";
-
- mostRecentFollowers.forEach(follower => {
- const li = document.createElement("li");
- li.className = "user thumb item";
-
- const link = document.createElement("a");
- link.href = `/users/${follower.username}/`;
- link.title = follower.username;
-
- const img = document.createElement("img");
- img.className = "lazy";
- img.src = follower.profileImage;
- img.alt = follower.username;
- img.width = 60;
- img.height = 60;
-
- const span = document.createElement("span");
- span.className = "title";
-
- const spanLink = document.createElement("a");
- spanLink.href = `/users/${follower.username}/`;
- spanLink.textContent = follower.username;
-
- link.appendChild(img);
- span.appendChild(spanLink);
- li.appendChild(link);
- li.appendChild(span);
-
- lastFeaturedElement.appendChild(li);
- });
-
- if (allFeaturedElements.length > 1) {
- const secondLastFeaturedElement = allFeaturedElements[allFeaturedElements.length - 2];
- secondLastFeaturedElement.innerHTML = "";
-
- mostRecentFollowing.forEach(follow => {
- const li = document.createElement("li");
- li.className = "user thumb item";
-
- const link = document.createElement("a");
- link.href = `/users/${follow.username}/`;
- link.title = follow.username;
-
- const img = document.createElement("img");
- img.className = "lazy";
- img.src = follow.profileImage;
- img.alt = follow.username;
- img.width = 60;
- img.height = 60;
-
- const span = document.createElement("span");
- span.className = "title";
-
- const spanLink = document.createElement("a");
- spanLink.href = `/users/${follow.username}/`;
- spanLink.textContent = follow.username;
-
- link.appendChild(img);
- span.appendChild(spanLink);
- li.appendChild(link);
- li.appendChild(span);
-
- secondLastFeaturedElement.appendChild(li);
- });
- }
+ const username = window.location.pathname.split('/')[2];
+ if (!username) return;
+
+ const followersEndpoint = `https://api.scratch.mit.edu/users/${username}/followers/`;
+ const followingEndpoint = `https://api.scratch.mit.edu/users/${username}/following/`;
+
+ try {
+ const followersResponse = await fetch(followersEndpoint);
+ if (!followersResponse.ok) return;
+
+ const followersData = await followersResponse.json();
+ if (!Array.isArray(followersData)) return;
+
+ const mostRecentFollowers = followersData
+ .slice(0, 9)
+ .filter(follower => follower.username && follower.profile && follower.profile.images)
+ .map(follower => ({
+ username: follower.username,
+ profileImage: follower.profile.images['90x90'] || follower.profile.images['50x50'] || '',
+ }));
+
+ const followingResponse = await fetch(followingEndpoint);
+ if (!followingResponse.ok) return;
+
+ const followingData = await followingResponse.json();
+ if (!Array.isArray(followingData)) return;
+
+ const mostRecentFollowing = followingData
+ .slice(0, 9)
+ .filter(follow => follow.username && follow.profile && follow.profile.images)
+ .map(follow => ({
+ username: follow.username,
+ profileImage: follow.profile.images['90x90'] || follow.profile.images['50x50'] || '',
+ }));
+
+ const allFeaturedElements = document.querySelectorAll("#featured");
+ if (allFeaturedElements.length === 0) return;
+
+ const lastFeaturedElement = allFeaturedElements[allFeaturedElements.length - 1];
+ lastFeaturedElement.innerHTML = "";
+
+ mostRecentFollowers.forEach(follower => {
+ const li = document.createElement("li");
+ li.className = "user thumb item";
+
+ const link = document.createElement("a");
+ link.href = `/users/${follower.username}/`;
+ link.title = follower.username;
+
+ const img = document.createElement("img");
+ img.className = "lazy";
+ img.src = follower.profileImage;
+ img.alt = follower.username;
+ img.width = 60;
+ img.height = 60;
+
+ const span = document.createElement("span");
+ span.className = "title";
+
+ const spanLink = document.createElement("a");
+ spanLink.href = `/users/${follower.username}/`;
+ spanLink.textContent = follower.username;
+
+ link.appendChild(img);
+ span.appendChild(spanLink);
+ li.appendChild(link);
+ li.appendChild(span);
+
+ lastFeaturedElement.appendChild(li);
+ });
+
+ if (allFeaturedElements.length > 1) {
+ const secondLastFeaturedElement = allFeaturedElements[allFeaturedElements.length - 2];
+ secondLastFeaturedElement.innerHTML = "";
+
+ mostRecentFollowing.forEach(follow => {
+ const li = document.createElement("li");
+ li.className = "user thumb item";
+
+ const link = document.createElement("a");
+ link.href = `/users/${follow.username}/`;
+ link.title = follow.username;
+
+ const img = document.createElement("img");
+ img.className = "lazy";
+ img.src = follow.profileImage;
+ img.alt = follow.username;
+ img.width = 60;
+ img.height = 60;
+
+ const span = document.createElement("span");
+ span.className = "title";
+
+ const spanLink = document.createElement("a");
+ spanLink.href = `/users/${follow.username}/`;
+ spanLink.textContent = follow.username;
+
+ link.appendChild(img);
+ span.appendChild(spanLink);
+ li.appendChild(link);
+ li.appendChild(span);
+
+ secondLastFeaturedElement.appendChild(li);
});
- } catch (error) {
- return;
}
+ } catch (error) {
+ return;
}
-
+}
From 8c3e1163c8358100028f736f39b558df62efae06 Mon Sep 17 00:00:00 2001
From: "scratchtools-bot[bot]"
<123264640+scratchtools-bot[bot]@users.noreply.github.com>
Date: Sat, 4 Jan 2025 00:00:20 +0000
Subject: [PATCH 186/253] Updated file.
---
extras/feature-locales/en.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extras/feature-locales/en.json b/extras/feature-locales/en.json
index 8504ab38..594e6f70 100644
--- a/extras/feature-locales/en.json
+++ b/extras/feature-locales/en.json
@@ -1 +1 @@
-{"outline-shape-options/title":{"message":"Customizable Shape Outlines"},"outline-shape-options/description":{"message":"Adds more options in the outline dropdown to allow you to customize the shape of the outline, such as making corners round."},"more-paint-functions/title":{"message":"More Paint Functions"},"more-paint-functions/description":{"message":"Adds new functions to the paint editor. The new functions include unite (combining them into one), subtract (removing one shape from another), exclude (removing the overlap of 2 items), and intersect (removing everything but the overlap of 2 items). Each function only works with 2 items."},"asset-size/title":{"message":"Asset Size"},"asset-size/description":{"message":"Allows you to hover over any asset (costumes and sounds) in the editor to view the file size."},"disable-cloud/title":{"message":"Disable Cloud"},"disable-cloud/description":{"message":"Allows you to disable cloud data on any project. This will still receive cloud data information, but will not send any."},"webp-uploads/title":{"message":"WEBP Image Uploads"},"webp-uploads/description":{"message":"Allows you to upload webp images in the editor for new sprites, costumes and stage backdrops."},"remaining-replies/title":{"message":"Remaining Replies"},"remaining-replies/description":{"message":"Shows how many more replies are allowed in a thread of studio comments."},"video-recorder/title":{"message":"Record Stage"},"video-recorder/description":{"message":"Allows you to record the stage for projects while in the editor or on the project page."},"studio-creation-date/title":{"message":"Studio Creation Date"},"studio-creation-date/description":{"message":"Adds the creation date of the studio to the studio footer."},"explore-filter/title":{"message":"Explore Filter"},"explore-filter/description":{"message":"Customize project and studio search results with filters on the Search, Explore, and Studio pages."},"better-featured-projects/title":{"message":"Better Featured Projects"},"better-featured-projects/description":{"message":"Replaces the Featured Projects section with featured projects curated by ScratchTools users. You can submit your own projects to be featured as well."},"align-to-center/title":{"message":"Align to Center"},"align-to-center/description":{"message":"Allows you to align text in Instructions and Notes & Credits boxes to the center of the input."},"more-editor-fonts/title":{"message":"More Paint Editor Fonts"},"more-editor-fonts/description":{"message":"Allows you to use dozens of extra fonts in the paint editor."},"upload-thumbnail/title":{"message":"Set Thumbnail"},"upload-thumbnail/description":{"message":"Allows you to upload an image or GIF as a project thumbnail, or set the thumbnail to the current stage."},"paint-align/title":{"message":"Align Objects in Paint Editor"},"paint-align/description":{"message":"Adds a button to the paint editor that allows you to align selected items."},"rotate-gradient/title":{"message":"Rotate Gradients"},"rotate-gradient/description":{"message":"Allows you to rotate gradients in any direction in the costume editor. Works in both the vector and bitmap editors."},"change-monitor-opacity/title":{"message":"Custom Monitor Opacity"},"change-monitor-opacity/description":{"message":"Set the opacity of variables and lists on the stage to a custom number."},"project-reactions/title":{"message":"Project Reactions"},"project-reactions/description":{"message":"Allows you to react to projects with different emojis."},"chomp-blocks/title":{"message":"Extend C Blocks"},"chomp-blocks/description":{"message":"Automatically extends C blocks to wrap around blocks that it is being placed over when dragging."},"custom-explore/title":{"message":"Custom Explore Redirect"},"custom-explore/description":{"message":"Automatically redirect to a specific tab on the Explore page."},"stage-in-spritepane/title":{"message":"Stage In Sprite Pane"},"stage-in-spritepane/description":{"message":"Move the stage button to the sprite pane to widen the sprite field."},"better-cloud-history/title":{"message":"Better Cloud History"},"better-cloud-history/description":{"message":"Updates the cloud monitor page to a more modern version with more details. You can click on variable names to sort by that variable."},"sprite-layers/title":{"message":"View Sprite Layers"},"sprite-layers/description":{"message":"Allows you to hover over the show/hide toggle in the sprite properties panel of the editor to view the sprite layers."},"hide-project-tags/title":{"message":"Hide Project Tags"},"hide-project-tags/description":{"message":"Hides all linked tags in the Instructions/Notes and Credits of projects."},"snap-to-grid/title":{"message":"Snap Scripts to Grid"},"snap-to-grid/description":{"message":"Automatically aligns scripts to the dotted grid in the editor when placed."},"select-self/title":{"message":"Select Self"},"select-self/description":{"message":"Allows you to select the current sprite when opening sprite dropdowns, instead of only other sprites."},"sidebar/title":{"message":"Sidebar"},"sidebar/description":{"message":"Adds a sidebar to the Scratch website, rather than just the normal navigation bar at the top of the screen."},"project-version-detector/title":{"message":"Project Version Detector"},"project-version-detector/description":{"message":"Checks when a project was shared and adds a label next to the share date to indicate which version of Scratch was in use at that time."},"fullscreen-explorer/title":{"message":"Fullscreen Project Grids"},"fullscreen-explorer/description":{"message":"Find projects on the big screen by removing the left and right blanks on the Trends, Search, Remix pages."},"project-descriptions/title":{"message":"Summarized Descriptions"},"project-descriptions/description":{"message":"Uses artificial intelligence to summarize project descriptions when you choose to, and shortens long descriptions down to important information, such as gameplay instructions."},"total-stats/title":{"message":"Total User Stats"},"total-stats/description":{"message":"Next to shared projects on a user's profile, displays the total loves, favorites and views that the user has received across all of their shared projects."},"project-miniplayer/title":{"message":"Project Miniplayer"},"project-miniplayer/description":{"message":"Scroll down on the project page and you will automatically see the project miniplayer."},"pin-comments/title":{"message":"Pin Project Comments"},"pin-comments/description":{"message":"Allows you to pin comments on your own projects and see what comments are pinned on other projects."},"download-project/title":{"message":"Download Projects"},"download-project/description":{"message":"Adds a button to project pages that allows you to download the project as an .sb3 file."},"blur-modal/title":{"message":"Blur Modal Backgrounds"},"blur-modal/description":{"message":"Blurs the backgrounds of modals instead of having a colored overlay."},"quick-search/title":{"message":"Quick Search"},"quick-search/description":{"message":"Easily jump between pages on the Scratch website with just the click of Control + K."},"favicon-messages/title":{"message":"Tab Message Count"},"favicon-messages/description":{"message":"Displays your message count in the tab favicon, the Scratch icon at the top of your tab."},"show-emoji-names/title":{"message":"Show Emoji Name"},"show-emoji-names/description":{"message":"Allows you to hover over Scratch emojis in the comments and view their names."},"more-block-themes/title":{"message":"More Block Themes"},"more-block-themes/description":{"message":"Adds additional themes for blocks in the code editor."},"more-key-inputs/title":{"message":"More Key Inputs"},"more-key-inputs/description":{"message":"Adds support for more keys on \"key pressed\" blocks."},"comment-tags/title":{"message":"Editor Comment Tags"},"comment-tags/description":{"message":"Add tags to editor comments to easily organize them."},"profile-flag/title":{"message":"Flag on Profile"},"profile-flag/description":{"message":"Adds flag emojis near selected locations on profile pages."},"follow-on-projects/title":{"message":"Follow on Project Page"},"follow-on-projects/description":{"message":"Follow users directly from the project page instead of going to their profile."},"dark-paint-editor/title":{"message":"Switch Paint Background"},"dark-paint-editor/description":{"message":"Adds a button next to the zoom controls in the paint editor that allows you to switch the background color of the paint editor between light and dark."},"specific-replies/title":{"message":"Specific Reply Messages"},"specific-replies/description":{"message":"In messages related to comments, specifies who a comment was replying to."},"better-trending-thumbnails/title":{"message":"Larger Thumbnails"},"better-trending-thumbnails/description":{"message":"Updates thumbnails on the trending and search pages to be larger and better fit the project/studio box."},"anti-generic/title":{"message":"Anti Generic"},"anti-generic/description":{"message":"On the explore and trending pages, this beta feature automatically hides repetitive projects, along with projects that it expects are generic. This includes projects with a lot of tags, common names, and project duplicates."},"wrap-lists/title":{"message":"Wrap List Items"},"wrap-lists/description":{"message":"Displays text in list items normally without cutting them off if they're too long."},"live-stats/title":{"message":"Live Stats"},"live-stats/description":{"message":"Updates the loves, favorites, remixes, and views on a project live, without having to reload to view the new counts."},"hide-scratch-news/title":{"message":"Hide Scratch News"},"hide-scratch-news/description":{"message":"Hides the Scratch News section on the homepage of the Scratch website."},"watch-later/title":{"message":"Save to Watch Later"},"watch-later/description":{"message":"Save projects you want to view later and they'll appear on a watch later page."},"remove-project-button/title":{"message":"Remove Project Button"},"remove-project-button/description":{"message":"Adds a button to projects in studios that allows you to easily remove it from the studio without opening the menu."},"right-side-flag/title":{"message":"Right Side Flag"},"right-side-flag/description":{"message":"Moves the green flag and the red stop sign to the right side of the stage."},"love-fave-animate/title":{"message":"Love Animations"},"love-fave-animate/description":{"message":"Animates the clicking of the love and favorite buttons on project pages."},"default-to-local/title":{"message":"Default to Local"},"default-to-local/description":{"message":"When creating a variable, sets the default to For This Sprite Only, rather than For All Sprites."},"start-stop-hotkeys/title":{"message":"Green Flag Hotkeys"},"start-stop-hotkeys/description":{"message":"Use Control + G to start or stop a project, depending on whether or not it is running."},"opacity-slider/title":{"message":"Opacity Slider"},"opacity-slider/description":{"message":"Change the opacity of objects in the paint editor."},"more-studios/title":{"message":"More Studios"},"more-studios/description":{"message":"Allows you to add projects to more studios instead of just 20."},"localized-explore/title":{"message":"Projects from Country"},"localized-explore/description":{"message":"On the explore page, makes projects from other countries less visible. This is to only show projects in languages that you understand."},"project-bar/title":{"message":"Project Bar"},"project-bar/description":{"message":"Continue to view the information for a project, even after you scroll down past the notes and credits."},"more-news/title":{"message":"More Scratch News"},"more-news/description":{"message":"On the main page, scroll through the Scratch News section and load more results."},"dumpster-fire/title":{"message":"Dumpster Fire"},"dumpster-fire/description":{"message":"The Scratch homepage is a liar with their \"Featured Projects\" section. This changes the name to the proper form, which is \"Dumpster Fire\"."},"steal-game/title":{"message":"Steal Game"},"steal-game/description":{"message":"Changes the remix button's text to 'Steal game'."},"statistics/title":{"message":"Statistics"},"statistics/description":{"message":"Adds a statistics button on the my stuff page that leads to your ScratchStats profile."},"echo-effect/title":{"message":"Echo Effect"},"echo-effect/description":{"message":"Adds the echo effect back to the Scratch sound editor."},"compact-buttons/title":{"message":"Compact Buttons"},"compact-buttons/description":{"message":"Buttons text gets removed and will get a new icon if it does not have one already."},"message-count/title":{"message":"Message Count"},"message-count/description":{"message":"Displays the user's message count on their profile next to the country."},"move-share-button/title":{"message":"Move Share Button"},"move-share-button/description":{"message":"On project pages, moves the share button next to the See Inside button."},"preview-textboxes/title":{"message":"Preview Textboxes"},"preview-textboxes/description":{"message":"Preview your profile About Me and What I'm Working On, and your projects' Instructions and Notes and Credits, so that you can see what it will look like to other users."},"more-tutorials/title":{"message":"More Tutorials"},"more-tutorials/description":{"message":"On the Ideas page, you can view additional tutorials from other Scratchers."},"simplify-action-buttons/title":{"message":"Simplify Action Buttons"},"simplify-action-buttons/description":{"message":"Displays project action buttons underneath Notes and Credits as their icons."},"slash-to-search/title":{"message":"Slash to Search"},"slash-to-search/description":{"message":"Click the slash key (/) to select the search bar and start typing."},"shared-clipboard/title":{"message":"Shared Clipboard"},"shared-clipboard/description":{"message":"Allows you to copy and paste items between paint editors in different projects."},"hide-footer/title":{"message":"Hide Footer"},"hide-footer/description":{"message":"The footer takes up a lot of unnecessary space. So hide it!"},"original-colors/title":{"message":"Revert to Blue"},"original-colors/description":{"message":"Changes all of the Scratch website's colors back to the original coloring from 3.0, before purple."},"simplify-editor-tabs/title":{"message":"Simplify Editor Tabs"},"simplify-editor-tabs/description":{"message":"Changes editor tabs to icon-only and shows them as a circle"},"live-character-counts/title":{"message":"Live Character Counts"},"live-character-counts/description":{"message":"On forum, studio, and project pages, displays the live character count for textboxes."},"advanced-search/title":{"message":"Search Profiles"},"advanced-search/description":{"message":"When you search for a user, a link to their profile will be at the top of the page."},"studio-links/title":{"message":"Studio Links as Titles"},"studio-links/description":{"message":"Replaces studio links with their titles, all across the Scratch website."},"block-studios/title":{"message":"Block Individual Studio Activity"},"block-studios/description":{"message":"Disable studio activity messages from specific studios."},"block-messages/title":{"message":"Block Users"},"block-messages/description":{"message":"Hide messages from users that you block. Other users won't see that you've blocked them."},"two-colors/title":{"message":"2.0 Block Colors"},"two-colors/description":{"message":"Replaces the colors of the blocks in the editor with the blocks from the 2.0 version of the code editor."},"project-links/title":{"message":"Project Links as Titles"},"project-links/description":{"message":"Replaces project links with their titles, all across the Scratch website."},"emoji-status/title":{"message":"Emoji Statuses"},"emoji-status/description":{"message":"Set the status on your profile to an emoji. Other ScratchTools users will be able to see this status."},"display-name/title":{"message":"Display Names"},"display-name/description":{"message":"Shows display names for Scratchers, and allows you to set your own display name. Display names show next to your username, and aren't limited like usernames are."},"isonline/title":{"message":"Show if User is Online"},"isonline/description":{"message":"On profile pages, displays if a user is online. This will also let other users see if you are online."},"plain-background/title":{"message":"Plain Background"},"plain-background/description":{"message":"Removes the dots from the background of the code editor."},"hide-advertisements/title":{"message":"Hide Ads in Comments"},"hide-advertisements/description":{"message":"Hides advertisements in the comments of profiles, projects, and studios. They can take up a lot of space in the comments."},"hide-block-category-names/title":{"message":"Hide Block Category Names"},"hide-block-category-names/description":{"message":"Changes the block categories in the editor to only show the colors of the categories."},"unlisted-projects/title":{"message":"Unlisted Projects"},"unlisted-projects/description":{"message":"Allows you to generate share links for unshared projects in the editor."},"stats-percentages/title":{"message":"Show Percentages for Project Stats"},"stats-percentages/description":{"message":"On the my stuff page, hover over the number of loves, favorites or remixes to view what percent of viewers performed the action."},"clone-counter/title":{"message":"Clone Counter"},"clone-counter/description":{"message":"Displays the total number of clones in the project above, in the stage header."},"colored-shadows/title":{"message":"Colored Shadows"},"colored-shadows/description":{"message":"Replaces the shadow created when you drag a block near another block with the color of the block that is being moved."},"creator-badge/title":{"message":"Author Badge"},"creator-badge/description":{"message":"Adds a badge next to comments written by the author of the project."},"original-buttons/title":{"message":"Original Buttons"},"original-buttons/description":{"message":"Returns the original love, favorite, remix, and view buttons to the Scratch project pages."},"box-shadows/title":{"message":"Content Box Shadows"},"box-shadows/description":{"message":"Adds shadows on all content boxes. When hovering one, the shadow will darken."},"admin-notifications/title":{"message":"Red Admin Message Indicator"},"admin-notifications/description":{"message":"If you have an admin notification from the Scratch Team, the message indicator in the navigation bar will display red instead of orange."},"nicknames/title":{"message":"Nicknames"},"nicknames/description":{"message":"Set nicknames for other Scratchers. Only you can see the nicknames, and their username will be replaced with the nickname when you see their name."},"load-more-forum-posts/title":{"message":"Load More Posts"},"load-more-forum-posts/description":{"message":"Load more posts in the forum without having to switch pages."},"scroll-project-titles/title":{"message":"Scroll Project Titles"},"scroll-project-titles/description":{"message":"Allows you to scroll and view the entire title of projects that you don't own."},"search-context-menus/title":{"message":"Search Context Menus"},"search-context-menus/description":{"message":"Type and search context menus to select an option efficiently. You can also press enter to select the top option."},"hover-user-cards/title":{"message":"User Hover Cards"},"hover-user-cards/description":{"message":"Hover over any username on the website to display the profile picture, username and follower count."},"exact-join-date/title":{"message":"Exact Join Date"},"exact-join-date/description":{"message":"Displays the exact time that a user joined, shown on their profile."},"upload-img-directly/title":{"message":"Direct Image Uploads"},"upload-img-directly/description":{"message":"Allows you to upload images to the Scratch forums for posts and signatures without having to use third party image uploading services."},"leave-studio/title":{"message":"Leave Studio Button"},"leave-studio/description":{"message":"Adds a button to the curators page of any studios you curate or manage that allows you to leave the studio. A confirmation shows first."},"frontpage-curator/title":{"message":"Frontpage Curator Name as Link"},"frontpage-curator/description":{"message":"Makes the name of the Frontpage Curator to a clickable link to his profile."},"minimized-remix-credits/title":{"message":"Minimized Remix Credits"},"minimized-remix-credits/description":{"message":"The remix credit boxes for projects take space from the project Instructions, so this makes the box smaller."},"follows-you/title":{"message":"Show if Following on Profile"},"follows-you/description":{"message":"If a user is following you, it will show next to their username when you visit their profile."},"custom-studio/title":{"message":"Custom Studio Section"},"custom-studio/description":{"message":"On the homepage of the Scratch website, the newest projects from the studio of your choice are displayed above the Featured Projects."},"highlight-unanswered/title":{"message":"Highlight Unanswered Forum Topics"},"highlight-unanswered/description":{"message":"Adds a blue highlight to topics in the forums that have no replies."},"search-assets/title":{"message":"Search Assets"},"search-assets/description":{"message":"Search through costume and sound assets in the editor."},"block-count-in-mystuff/title":{"message":"Block Count in My Stuff"},"block-count-in-mystuff/description":{"message":"Displays the block count for projects on the My Stuff page."},"pause-audio/title":{"message":"Pause Audio"},"pause-audio/description":{"message":"Allows you to pause and resume audio in the sound editor of Scratch projects."},"display-message-count-in-icon/title":{"message":"Display Message Count"},"display-message-count-in-icon/description":{"message":"Displays your current message count in the extension icon for ScratchTools."},"colored-context-menus/title":{"message":"Colored Context Menus"},"colored-context-menus/description":{"message":"Like in Scratch 2.0, colors the context menus based on the color of the block they're for."},"left-side-stage/title":{"message":"Stage on Left Side"},"left-side-stage/description":{"message":"Like in Scratch 2.0, moves the stage to the left side of the editor, rather than keeping it on the right."},"move-project-title-input/title":{"message":"Project Title Above Stage"},"move-project-title-input/description":{"message":"Like in Scratch 2.0, moves the project title input box above the stage, rather than in the navbar. This only applies to the editor."},"hide-disabled-menu-options/title":{"message":"Hide Disabled Context Menu Options"},"hide-disabled-menu-options/description":{"message":"Context menu options in the editor show even if they are disabled and unable to be used, so this feature will hide them if they are."},"follower-count/title":{"message":"Follower Count on Projects"},"follower-count/description":{"message":"Displays the follower count of the project creator on their projects."},"hide-studio-borders/title":{"message":"Hide Studio Frames"},"hide-studio-borders/description":{"message":"Removes the odd frames from around studio images on 2.0 pages."},"hide-textarea-labels/title":{"message":"Hide Project Instructions and Notes and Credits Labels"},"hide-textarea-labels/description":{"message":"The instructions and notes and credits labels take up quite a bit of space where there could be usual information. This removes them."},"default-to-trending/title":{"message":"Search Trending by Default"},"default-to-trending/description":{"message":"Currently, when you search projects on the Scratch website, you automatically search with the popular filter, instead of trending."},"infinite-backpack-scrolling/title":{"message":"Infinite Backpack Scrolling"},"infinite-backpack-scrolling/description":{"message":"Scroll through the backpack until you reach the very end (does take some time to load, but loads automatically)."},"hide-studio-messages/title":{"message":"Hide Studio Activity Messages"},"hide-studio-messages/description":{"message":"Hide the studio activity messages from the messages page- they pile up quickly and can get annoying."},"get-project-tags/title":{"message":"Display Project Tags"},"get-project-tags/description":{"message":"Lists all of the tags used in the project description right below the project notes and credits."},"link-to-propose/title":{"message":"Link Featured Projects to Studio"},"link-to-propose/description":{"message":"Links the Featured Projects box on the homepage to the Propose Projects to Be Featured studio."},"add-last-option-list/title":{"message":"Set List Item to Last"},"add-last-option-list/description":{"message":"Right click a 'get item [number] of [list]' to set it to select the very last item in the selected list."},"cloud-scratchers/title":{"message":"Online Scratchers in Multiplayer Game"},"cloud-scratchers/description":{"message":"On project pages, displays all of the Scratchers currently in that multiplayer game."},"editor-in-two/title":{"message":"2.0 Editor"},"editor-in-two/description":{"message":"Replaces the default 3.0 online project editor with the 2.0 editor. It's nostalgic, really."},"comment-on-closed-profile/title":{"message":"Comment On Profile With Comments Closed"},"comment-on-closed-profile/description":{"message":"If your profile comments are closed, you can now comment on your own profile anyways. Only you can comment on the profile."},"turbowarp-button-in-editor/title":{"message":"Open in TurboWarp from Editor"},"turbowarp-button-in-editor/description":{"message":"Adds a button to the editor so that you can instantly open the current project in TurboWarp."},"sprite-clones/title":{"message":"Sprite Clone Counter"},"sprite-clones/description":{"message":"Displays the clone count for each individual sprite."},"block-log/title":{"message":"Block Log"},"block-log/description":{"message":"Logs and displays all undo information for the block editor when you press ctrl+shift+l."},"scrollable-list-items/title":{"message":"Scrollable List Items"},"scrollable-list-items/description":{"message":"List items that have a value longer than the width of the list itself will get cut off. Now, you can scroll left and right through the list item."},"custom-fonts/title":{"message":"Custom Website Font"},"custom-fonts/description":{"message":"On the Scratch website, you can set the font to whatever font you want, as long as it is on the Google Fonts website. This is case-sensitive."},"project-timer/title":{"message":"Project Timer"},"project-timer/description":{"message":"Displays the amount of time (in seconds) that the project has been running for."},"colored-comments/title":{"message":"Colored Editor Comments"},"colored-comments/description":{"message":"Colors comments in the editor based on the color of their parent block."},"recently-viewed-projects/title":{"message":"Recently Viewed Projects"},"recently-viewed-projects/description":{"message":"Adds a tab to the My Stuff page where you can see a list of the projects that you have recently viewed."},"collapse-blocks/title":{"message":"Collapse Blocks"},"collapse-blocks/description":{"message":"Right-click block menus in the editor include a button that will let you collapse the selected block."},"set-featured-project/title":{"message":"Set Featured Project"},"set-featured-project/description":{"message":"On any project page, you can set your profile's featured project with the click of a button- even unshared projects."},"scratchformat/title":{"message":"ScratchFormat"},"scratchformat/description":{"message":"Format your comments with bold, italic, and more. The comments will be styled to everyone using ScratchTools."},"expand-editor/title":{"message":"Expand Editor"},"expand-editor/description":{"message":"Use the ctrl+e to switch between the default block editor view and one that hides the stage to expand editor itself."},"list-sprites/title":{"message":"Sprite List"},"list-sprites/description":{"message":"Replaces the sprite grid in the editor with a list that includes the block count and position of the sprite."},"check-if-trending/title":{"message":"Check if Trending"},"check-if-trending/description":{"message":"If a project you're viewing is on the trending page, the place on the trending page will be shown next to the share date on the project page."},"link-forum-activity/title":{"message":"Link Users in Forum Activity"},"link-forum-activity/description":{"message":"In the forums' last post section, makes the usernames link to the user's profile."},"remove-topic-and-post/title":{"message":"Hide Forum Category Counts"},"remove-topic-and-post/description":{"message":"Hides the forum homepage topic and post boxes."},"forum-homepage-emojis/title":{"message":"Forum Category Emojis"},"forum-homepage-emojis/description":{"message":"Adds colorful emojis on the forum homepage categories based on their topic."},"remove-collapse-buttons/title":{"message":"Hide Forum Collapse Buttons"},"remove-collapse-buttons/description":{"message":"Hides the collapse buttons on the forum main page."},"pin-projects/title":{"message":"Pin Projects to My Stuff"},"pin-projects/description":{"message":"Pin one of your projects to the top of your My Stuff page with the click of a button. You can unpin your pinned project or switch out your pinned project for another one as well."},"last-key-pressed/title":{"message":"Last Key Pressed"},"last-key-pressed/description":{"message":"On any project page and in the editor, you can view the last key that you have pressed while on that project, according to the project itself. This is good for games such as platformers."},"hide-signatures/title":{"message":"Hide Forum Signatures"},"hide-signatures/description":{"message":"Hides all forum signatures and signature dividers."},"twemoji-in-forums/title":{"message":"Better Forum Emojis"},"twemoji-in-forums/description":{"message":"Replaces the current low resolution forum emojis with high quality Twemojis."},"go-to-parent/title":{"message":"Go to Parent Button"},"go-to-parent/description":{"message":"In the editor for any project that is a remix, you can click a button to go to the editor in the parent project."},"most-popular-project/title":{"message":"Most Popular Project"},"most-popular-project/description":{"message":"Displays the most popular project (by views) of the user on profile pages. You can click on the project to view it."},"editor-dark-mode/title":{"message":"Editor Dark Mode"},"editor-dark-mode/description":{"message":"Switches the editor's light color scheme to a darker one."},"hide-studio-group-icon/title":{"message":"Hide Studio Group Icon"},"hide-studio-group-icon/description":{"message":"Hides the studio group icon, and only shows the studio thumbnail."},"colored-messages/title":{"message":"Colored Messages"},"colored-messages/description":{"message":"Colors your messages based on the type of message, such as loves, favorites, and studio invites."},"full-title/title":{"message":"Full Project Title"},"full-title/description":{"message":"On profile pages, hover over any project title to show the full title."},"fixed-box/title":{"message":"Fix Content Boxes"},"fixed-box/description":{"message":"Makes all sides of boxes on the pages rounded, rather than just the tops."},"user-bio/title":{"message":"User Bio on Hover"},"user-bio/description":{"message":"In profile comments, hover over any username to display the user's bio."},"nfe-project-checker/title":{"message":"NFE Project Checker"},"nfe-project-checker/description":{"message":"On project pages, displays whether the project is Safe, Unreviewed, or NSFE (Not Safe for Everyone)."},"sprite-data/title":{"message":"Display Sprite Data"},"sprite-data/description":{"message":"In the Code, Costumes, and Sounds tab for each sprite, the number of blocks, costumes, and sounds will be displayed for the current sprite."},"idea-generator/title":{"message":"Project Idea Generator"},"idea-generator/description":{"message":"On the Scratch Ideas page, there will be a section where you can generate project ideas if you need some."},"hide-stickies/title":{"message":"Hide Forum Stickies"},"hide-stickies/description":{"message":"Hides the basic stickies from the top of each forum topic."},"nfe-search/title":{"message":"NFE Search"},"nfe-search/description":{"message":"Use a button to search all projects, including NFE ones."},"open-in-new-tab/title":{"message":"Open in New Tab"},"open-in-new-tab/description":{"message":"Automatically opens links on project pages in a new tab."},"unbold-site-text/title":{"message":"Unbold Site Text"},"unbold-site-text/description":{"message":"Makes it so that all text across Scratch is unbolded, and just normal text."},"compact-navbar/title":{"message":"Compact Navbar"},"compact-navbar/description":{"message":"Makes more room on the navigation bar near where your profile dropdown is."},"delete-all/title":{"message":"Delete All Sprites"},"delete-all/description":{"message":"Adds an option in the right-click context menu for sprites. It will delete all sprites (after confirmation to make sure it isn't an accident)."},"round-profile-pictures/title":{"message":"Round Profile Pictures"},"round-profile-pictures/description":{"message":"All profile pictures on the Scratch website will be rounded."},"ocular-link/title":{"message":"Ocular Links in Forums"},"ocular-link/description":{"message":"Adds a link to any user's Ocular page right below their username on a post."},"forum-scratch-team/title":{"message":"Scratch Team Symbol in Forums"},"forum-scratch-team/description":{"message":"Next to the username of any Scratch Team member in the forums, an asterisk (*) is placed at the end of their username."},"remove-editor-icons/title":{"message":"Remove Editor Icons"},"remove-editor-icons/description":{"message":"Removes the icons from the tabs in the editor."},"sprite-watermark/title":{"message":"Remove Sprite Watermark"},"sprite-watermark/description":{"message":"Removes the sprite watermark that shows in the editor."},"compact-editor/title":{"message":"Compact Editor"},"compact-editor/description":{"message":"Makes sprite and backdrop information more compact."},"my-recent-projects/title":{"message":"Replace Scratch News with Recent Projects"},"my-recent-projects/description":{"message":"Replaces the Scratch News section on the homepage with your recently shared projects."},"focus-mode/title":{"message":"Focus Mode"},"focus-mode/description":{"message":"Removes the comments, studio and remix column, header, and footer on project pages when the button is clicked."}}
\ No newline at end of file
+{"remove-confirmation/title":{"message":"Remove Delete Confirmation"},"remove-confirmation/description":{"message":"Removes the delete confirmation prompt when deleting sprites in the Scratch editor."},"outline-shape-options/title":{"message":"Customizable Shape Outlines"},"outline-shape-options/description":{"message":"Adds more options in the outline dropdown to allow you to customize the shape of the outline, such as making corners round."},"more-paint-functions/title":{"message":"More Paint Functions"},"more-paint-functions/description":{"message":"Adds new functions to the paint editor. The new functions include unite (combining them into one), subtract (removing one shape from another), exclude (removing the overlap of 2 items), and intersect (removing everything but the overlap of 2 items). Each function only works with 2 items."},"asset-size/title":{"message":"Asset Size"},"asset-size/description":{"message":"Allows you to hover over any asset (costumes and sounds) in the editor to view the file size."},"disable-cloud/title":{"message":"Disable Cloud"},"disable-cloud/description":{"message":"Allows you to disable cloud data on any project. This will still receive cloud data information, but will not send any."},"webp-uploads/title":{"message":"WEBP Image Uploads"},"webp-uploads/description":{"message":"Allows you to upload webp images in the editor for new sprites, costumes and stage backdrops."},"remaining-replies/title":{"message":"Remaining Replies"},"remaining-replies/description":{"message":"Shows how many more replies are allowed in a thread of studio comments."},"video-recorder/title":{"message":"Record Stage"},"video-recorder/description":{"message":"Allows you to record the stage for projects while in the editor or on the project page."},"studio-creation-date/title":{"message":"Studio Creation Date"},"studio-creation-date/description":{"message":"Adds the creation date of the studio to the studio footer."},"explore-filter/title":{"message":"Explore Filter"},"explore-filter/description":{"message":"Customize project and studio search results with filters on the Search, Explore, and Studio pages."},"better-featured-projects/title":{"message":"Better Featured Projects"},"better-featured-projects/description":{"message":"Replaces the Featured Projects section with featured projects curated by ScratchTools users. You can submit your own projects to be featured as well."},"align-to-center/title":{"message":"Align to Center"},"align-to-center/description":{"message":"Allows you to align text in Instructions and Notes & Credits boxes to the center of the input."},"more-editor-fonts/title":{"message":"More Paint Editor Fonts"},"more-editor-fonts/description":{"message":"Allows you to use dozens of extra fonts in the paint editor."},"upload-thumbnail/title":{"message":"Set Thumbnail"},"upload-thumbnail/description":{"message":"Allows you to upload an image or GIF as a project thumbnail, or set the thumbnail to the current stage."},"paint-align/title":{"message":"Align Objects in Paint Editor"},"paint-align/description":{"message":"Adds a button to the paint editor that allows you to align selected items."},"rotate-gradient/title":{"message":"Rotate Gradients"},"rotate-gradient/description":{"message":"Allows you to rotate gradients in any direction in the costume editor. Works in both the vector and bitmap editors."},"change-monitor-opacity/title":{"message":"Custom Monitor Opacity"},"change-monitor-opacity/description":{"message":"Set the opacity of variables and lists on the stage to a custom number."},"project-reactions/title":{"message":"Project Reactions"},"project-reactions/description":{"message":"Allows you to react to projects with different emojis."},"chomp-blocks/title":{"message":"Extend C Blocks"},"chomp-blocks/description":{"message":"Automatically extends C blocks to wrap around blocks that it is being placed over when dragging."},"custom-explore/title":{"message":"Custom Explore Redirect"},"custom-explore/description":{"message":"Automatically redirect to a specific tab on the Explore page."},"stage-in-spritepane/title":{"message":"Stage In Sprite Pane"},"stage-in-spritepane/description":{"message":"Move the stage button to the sprite pane to widen the sprite field."},"better-cloud-history/title":{"message":"Better Cloud History"},"better-cloud-history/description":{"message":"Updates the cloud monitor page to a more modern version with more details. You can click on variable names to sort by that variable."},"sprite-layers/title":{"message":"View Sprite Layers"},"sprite-layers/description":{"message":"Allows you to hover over the show/hide toggle in the sprite properties panel of the editor to view the sprite layers."},"hide-project-tags/title":{"message":"Hide Project Tags"},"hide-project-tags/description":{"message":"Hides all linked tags in the Instructions/Notes and Credits of projects."},"snap-to-grid/title":{"message":"Snap Scripts to Grid"},"snap-to-grid/description":{"message":"Automatically aligns scripts to the dotted grid in the editor when placed."},"select-self/title":{"message":"Select Self"},"select-self/description":{"message":"Allows you to select the current sprite when opening sprite dropdowns, instead of only other sprites."},"sidebar/title":{"message":"Sidebar"},"sidebar/description":{"message":"Adds a sidebar to the Scratch website, rather than just the normal navigation bar at the top of the screen."},"project-version-detector/title":{"message":"Project Version Detector"},"project-version-detector/description":{"message":"Checks when a project was shared and adds a label next to the share date to indicate which version of Scratch was in use at that time."},"fullscreen-explorer/title":{"message":"Fullscreen Project Grids"},"fullscreen-explorer/description":{"message":"Find projects on the big screen by removing the left and right blanks on the Trends, Search, Remix pages."},"project-descriptions/title":{"message":"Summarized Descriptions"},"project-descriptions/description":{"message":"Uses artificial intelligence to summarize project descriptions when you choose to, and shortens long descriptions down to important information, such as gameplay instructions."},"total-stats/title":{"message":"Total User Stats"},"total-stats/description":{"message":"Next to shared projects on a user's profile, displays the total loves, favorites and views that the user has received across all of their shared projects."},"project-miniplayer/title":{"message":"Project Miniplayer"},"project-miniplayer/description":{"message":"Scroll down on the project page and you will automatically see the project miniplayer."},"pin-comments/title":{"message":"Pin Project Comments"},"pin-comments/description":{"message":"Allows you to pin comments on your own projects and see what comments are pinned on other projects."},"download-project/title":{"message":"Download Projects"},"download-project/description":{"message":"Adds a button to project pages that allows you to download the project as an .sb3 file."},"blur-modal/title":{"message":"Blur Modal Backgrounds"},"blur-modal/description":{"message":"Blurs the backgrounds of modals instead of having a colored overlay."},"quick-search/title":{"message":"Quick Search"},"quick-search/description":{"message":"Easily jump between pages on the Scratch website with just the click of Control + K."},"favicon-messages/title":{"message":"Tab Message Count"},"favicon-messages/description":{"message":"Displays your message count in the tab favicon, the Scratch icon at the top of your tab."},"show-emoji-names/title":{"message":"Show Emoji Name"},"show-emoji-names/description":{"message":"Allows you to hover over Scratch emojis in the comments and view their names."},"more-block-themes/title":{"message":"More Block Themes"},"more-block-themes/description":{"message":"Adds additional themes for blocks in the code editor."},"more-key-inputs/title":{"message":"More Key Inputs"},"more-key-inputs/description":{"message":"Adds support for more keys on \"key pressed\" blocks."},"comment-tags/title":{"message":"Editor Comment Tags"},"comment-tags/description":{"message":"Add tags to editor comments to easily organize them."},"profile-flag/title":{"message":"Flag on Profile"},"profile-flag/description":{"message":"Adds flag emojis near selected locations on profile pages."},"follow-on-projects/title":{"message":"Follow on Project Page"},"follow-on-projects/description":{"message":"Follow users directly from the project page instead of going to their profile."},"dark-paint-editor/title":{"message":"Switch Paint Background"},"dark-paint-editor/description":{"message":"Adds a button next to the zoom controls in the paint editor that allows you to switch the background color of the paint editor between light and dark."},"specific-replies/title":{"message":"Specific Reply Messages"},"specific-replies/description":{"message":"In messages related to comments, specifies who a comment was replying to."},"better-trending-thumbnails/title":{"message":"Larger Thumbnails"},"better-trending-thumbnails/description":{"message":"Updates thumbnails on the trending and search pages to be larger and better fit the project/studio box."},"anti-generic/title":{"message":"Anti Generic"},"anti-generic/description":{"message":"On the explore and trending pages, this beta feature automatically hides repetitive projects, along with projects that it expects are generic. This includes projects with a lot of tags, common names, and project duplicates."},"wrap-lists/title":{"message":"Wrap List Items"},"wrap-lists/description":{"message":"Displays text in list items normally without cutting them off if they're too long."},"live-stats/title":{"message":"Live Stats"},"live-stats/description":{"message":"Updates the loves, favorites, remixes, and views on a project live, without having to reload to view the new counts."},"hide-scratch-news/title":{"message":"Hide Scratch News"},"hide-scratch-news/description":{"message":"Hides the Scratch News section on the homepage of the Scratch website."},"watch-later/title":{"message":"Save to Watch Later"},"watch-later/description":{"message":"Save projects you want to view later and they'll appear on a watch later page."},"remove-project-button/title":{"message":"Remove Project Button"},"remove-project-button/description":{"message":"Adds a button to projects in studios that allows you to easily remove it from the studio without opening the menu."},"right-side-flag/title":{"message":"Right Side Flag"},"right-side-flag/description":{"message":"Moves the green flag and the red stop sign to the right side of the stage."},"love-fave-animate/title":{"message":"Love Animations"},"love-fave-animate/description":{"message":"Animates the clicking of the love and favorite buttons on project pages."},"default-to-local/title":{"message":"Default to Local"},"default-to-local/description":{"message":"When creating a variable, sets the default to For This Sprite Only, rather than For All Sprites."},"start-stop-hotkeys/title":{"message":"Green Flag Hotkeys"},"start-stop-hotkeys/description":{"message":"Use Control + G to start or stop a project, depending on whether or not it is running."},"opacity-slider/title":{"message":"Opacity Slider"},"opacity-slider/description":{"message":"Change the opacity of objects in the paint editor."},"more-studios/title":{"message":"More Studios"},"more-studios/description":{"message":"Allows you to add projects to more studios instead of just 20."},"localized-explore/title":{"message":"Projects from Country"},"localized-explore/description":{"message":"On the explore page, makes projects from other countries less visible. This is to only show projects in languages that you understand."},"project-bar/title":{"message":"Project Bar"},"project-bar/description":{"message":"Continue to view the information for a project, even after you scroll down past the notes and credits."},"more-news/title":{"message":"More Scratch News"},"more-news/description":{"message":"On the main page, scroll through the Scratch News section and load more results."},"dumpster-fire/title":{"message":"Dumpster Fire"},"dumpster-fire/description":{"message":"The Scratch homepage is a liar with their \"Featured Projects\" section. This changes the name to the proper form, which is \"Dumpster Fire\"."},"steal-game/title":{"message":"Steal Game"},"steal-game/description":{"message":"Changes the remix button's text to 'Steal game'."},"statistics/title":{"message":"Statistics"},"statistics/description":{"message":"Adds a statistics button on the my stuff page that leads to your ScratchStats profile."},"echo-effect/title":{"message":"Echo Effect"},"echo-effect/description":{"message":"Adds the echo effect back to the Scratch sound editor."},"compact-buttons/title":{"message":"Compact Buttons"},"compact-buttons/description":{"message":"Buttons text gets removed and will get a new icon if it does not have one already."},"message-count/title":{"message":"Message Count"},"message-count/description":{"message":"Displays the user's message count on their profile next to the country."},"move-share-button/title":{"message":"Move Share Button"},"move-share-button/description":{"message":"On project pages, moves the share button next to the See Inside button."},"preview-textboxes/title":{"message":"Preview Textboxes"},"preview-textboxes/description":{"message":"Preview your profile About Me and What I'm Working On, and your projects' Instructions and Notes and Credits, so that you can see what it will look like to other users."},"more-tutorials/title":{"message":"More Tutorials"},"more-tutorials/description":{"message":"On the Ideas page, you can view additional tutorials from other Scratchers."},"simplify-action-buttons/title":{"message":"Simplify Action Buttons"},"simplify-action-buttons/description":{"message":"Displays project action buttons underneath Notes and Credits as their icons."},"slash-to-search/title":{"message":"Slash to Search"},"slash-to-search/description":{"message":"Click the slash key (/) to select the search bar and start typing."},"shared-clipboard/title":{"message":"Shared Clipboard"},"shared-clipboard/description":{"message":"Allows you to copy and paste items between paint editors in different projects."},"hide-footer/title":{"message":"Hide Footer"},"hide-footer/description":{"message":"The footer takes up a lot of unnecessary space. So hide it!"},"original-colors/title":{"message":"Revert to Blue"},"original-colors/description":{"message":"Changes all of the Scratch website's colors back to the original coloring from 3.0, before purple."},"simplify-editor-tabs/title":{"message":"Simplify Editor Tabs"},"simplify-editor-tabs/description":{"message":"Changes editor tabs to icon-only and shows them as a circle"},"live-character-counts/title":{"message":"Live Character Counts"},"live-character-counts/description":{"message":"On forum, studio, and project pages, displays the live character count for textboxes."},"advanced-search/title":{"message":"Search Profiles"},"advanced-search/description":{"message":"When you search for a user, a link to their profile will be at the top of the page."},"studio-links/title":{"message":"Studio Links as Titles"},"studio-links/description":{"message":"Replaces studio links with their titles, all across the Scratch website."},"block-studios/title":{"message":"Block Individual Studio Activity"},"block-studios/description":{"message":"Disable studio activity messages from specific studios."},"block-messages/title":{"message":"Block Users"},"block-messages/description":{"message":"Hide messages from users that you block. Other users won't see that you've blocked them."},"two-colors/title":{"message":"2.0 Block Colors"},"two-colors/description":{"message":"Replaces the colors of the blocks in the editor with the blocks from the 2.0 version of the code editor."},"project-links/title":{"message":"Project Links as Titles"},"project-links/description":{"message":"Replaces project links with their titles, all across the Scratch website."},"emoji-status/title":{"message":"Emoji Statuses"},"emoji-status/description":{"message":"Set the status on your profile to an emoji. Other ScratchTools users will be able to see this status."},"display-name/title":{"message":"Display Names"},"display-name/description":{"message":"Shows display names for Scratchers, and allows you to set your own display name. Display names show next to your username, and aren't limited like usernames are."},"isonline/title":{"message":"Show if User is Online"},"isonline/description":{"message":"On profile pages, displays if a user is online. This will also let other users see if you are online."},"plain-background/title":{"message":"Plain Background"},"plain-background/description":{"message":"Removes the dots from the background of the code editor."},"hide-advertisements/title":{"message":"Hide Ads in Comments"},"hide-advertisements/description":{"message":"Hides advertisements in the comments of profiles, projects, and studios. They can take up a lot of space in the comments."},"hide-block-category-names/title":{"message":"Hide Block Category Names"},"hide-block-category-names/description":{"message":"Changes the block categories in the editor to only show the colors of the categories."},"unlisted-projects/title":{"message":"Unlisted Projects"},"unlisted-projects/description":{"message":"Allows you to generate share links for unshared projects in the editor."},"stats-percentages/title":{"message":"Show Percentages for Project Stats"},"stats-percentages/description":{"message":"On the my stuff page, hover over the number of loves, favorites or remixes to view what percent of viewers performed the action."},"clone-counter/title":{"message":"Clone Counter"},"clone-counter/description":{"message":"Displays the total number of clones in the project above, in the stage header."},"colored-shadows/title":{"message":"Colored Shadows"},"colored-shadows/description":{"message":"Replaces the shadow created when you drag a block near another block with the color of the block that is being moved."},"creator-badge/title":{"message":"Author Badge"},"creator-badge/description":{"message":"Adds a badge next to comments written by the author of the project."},"original-buttons/title":{"message":"Original Buttons"},"original-buttons/description":{"message":"Returns the original love, favorite, remix, and view buttons to the Scratch project pages."},"box-shadows/title":{"message":"Content Box Shadows"},"box-shadows/description":{"message":"Adds shadows on all content boxes. When hovering one, the shadow will darken."},"admin-notifications/title":{"message":"Red Admin Message Indicator"},"admin-notifications/description":{"message":"If you have an admin notification from the Scratch Team, the message indicator in the navigation bar will display red instead of orange."},"nicknames/title":{"message":"Nicknames"},"nicknames/description":{"message":"Set nicknames for other Scratchers. Only you can see the nicknames, and their username will be replaced with the nickname when you see their name."},"load-more-forum-posts/title":{"message":"Load More Posts"},"load-more-forum-posts/description":{"message":"Load more posts in the forum without having to switch pages."},"scroll-project-titles/title":{"message":"Scroll Project Titles"},"scroll-project-titles/description":{"message":"Allows you to scroll and view the entire title of projects that you don't own."},"search-context-menus/title":{"message":"Search Context Menus"},"search-context-menus/description":{"message":"Type and search context menus to select an option efficiently. You can also press enter to select the top option."},"hover-user-cards/title":{"message":"User Hover Cards"},"hover-user-cards/description":{"message":"Hover over any username on the website to display the profile picture, username and follower count."},"exact-join-date/title":{"message":"Exact Join Date"},"exact-join-date/description":{"message":"Displays the exact time that a user joined, shown on their profile."},"upload-img-directly/title":{"message":"Direct Image Uploads"},"upload-img-directly/description":{"message":"Allows you to upload images to the Scratch forums for posts and signatures without having to use third party image uploading services."},"leave-studio/title":{"message":"Leave Studio Button"},"leave-studio/description":{"message":"Adds a button to the curators page of any studios you curate or manage that allows you to leave the studio. A confirmation shows first."},"frontpage-curator/title":{"message":"Frontpage Curator Name as Link"},"frontpage-curator/description":{"message":"Makes the name of the Frontpage Curator to a clickable link to his profile."},"minimized-remix-credits/title":{"message":"Minimized Remix Credits"},"minimized-remix-credits/description":{"message":"The remix credit boxes for projects take space from the project Instructions, so this makes the box smaller."},"follows-you/title":{"message":"Show if Following on Profile"},"follows-you/description":{"message":"If a user is following you, it will show next to their username when you visit their profile."},"custom-studio/title":{"message":"Custom Studio Section"},"custom-studio/description":{"message":"On the homepage of the Scratch website, the newest projects from the studio of your choice are displayed above the Featured Projects."},"highlight-unanswered/title":{"message":"Highlight Unanswered Forum Topics"},"highlight-unanswered/description":{"message":"Adds a blue highlight to topics in the forums that have no replies."},"search-assets/title":{"message":"Search Assets"},"search-assets/description":{"message":"Search through costume and sound assets in the editor."},"block-count-in-mystuff/title":{"message":"Block Count in My Stuff"},"block-count-in-mystuff/description":{"message":"Displays the block count for projects on the My Stuff page."},"pause-audio/title":{"message":"Pause Audio"},"pause-audio/description":{"message":"Allows you to pause and resume audio in the sound editor of Scratch projects."},"display-message-count-in-icon/title":{"message":"Display Message Count"},"display-message-count-in-icon/description":{"message":"Displays your current message count in the extension icon for ScratchTools."},"colored-context-menus/title":{"message":"Colored Context Menus"},"colored-context-menus/description":{"message":"Like in Scratch 2.0, colors the context menus based on the color of the block they're for."},"left-side-stage/title":{"message":"Stage on Left Side"},"left-side-stage/description":{"message":"Like in Scratch 2.0, moves the stage to the left side of the editor, rather than keeping it on the right."},"move-project-title-input/title":{"message":"Project Title Above Stage"},"move-project-title-input/description":{"message":"Like in Scratch 2.0, moves the project title input box above the stage, rather than in the navbar. This only applies to the editor."},"hide-disabled-menu-options/title":{"message":"Hide Disabled Context Menu Options"},"hide-disabled-menu-options/description":{"message":"Context menu options in the editor show even if they are disabled and unable to be used, so this feature will hide them if they are."},"follower-count/title":{"message":"Follower Count on Projects"},"follower-count/description":{"message":"Displays the follower count of the project creator on their projects."},"hide-studio-borders/title":{"message":"Hide Studio Frames"},"hide-studio-borders/description":{"message":"Removes the odd frames from around studio images on 2.0 pages."},"hide-textarea-labels/title":{"message":"Hide Project Instructions and Notes and Credits Labels"},"hide-textarea-labels/description":{"message":"The instructions and notes and credits labels take up quite a bit of space where there could be usual information. This removes them."},"default-to-trending/title":{"message":"Search Trending by Default"},"default-to-trending/description":{"message":"Currently, when you search projects on the Scratch website, you automatically search with the popular filter, instead of trending."},"infinite-backpack-scrolling/title":{"message":"Infinite Backpack Scrolling"},"infinite-backpack-scrolling/description":{"message":"Scroll through the backpack until you reach the very end (does take some time to load, but loads automatically)."},"hide-studio-messages/title":{"message":"Hide Studio Activity Messages"},"hide-studio-messages/description":{"message":"Hide the studio activity messages from the messages page- they pile up quickly and can get annoying."},"get-project-tags/title":{"message":"Display Project Tags"},"get-project-tags/description":{"message":"Lists all of the tags used in the project description right below the project notes and credits."},"link-to-propose/title":{"message":"Link Featured Projects to Studio"},"link-to-propose/description":{"message":"Links the Featured Projects box on the homepage to the Propose Projects to Be Featured studio."},"add-last-option-list/title":{"message":"Set List Item to Last"},"add-last-option-list/description":{"message":"Right click a 'get item [number] of [list]' to set it to select the very last item in the selected list."},"cloud-scratchers/title":{"message":"Online Scratchers in Multiplayer Game"},"cloud-scratchers/description":{"message":"On project pages, displays all of the Scratchers currently in that multiplayer game."},"editor-in-two/title":{"message":"2.0 Editor"},"editor-in-two/description":{"message":"Replaces the default 3.0 online project editor with the 2.0 editor. It's nostalgic, really."},"comment-on-closed-profile/title":{"message":"Comment On Profile With Comments Closed"},"comment-on-closed-profile/description":{"message":"If your profile comments are closed, you can now comment on your own profile anyways. Only you can comment on the profile."},"turbowarp-button-in-editor/title":{"message":"Open in TurboWarp from Editor"},"turbowarp-button-in-editor/description":{"message":"Adds a button to the editor so that you can instantly open the current project in TurboWarp."},"sprite-clones/title":{"message":"Sprite Clone Counter"},"sprite-clones/description":{"message":"Displays the clone count for each individual sprite."},"block-log/title":{"message":"Block Log"},"block-log/description":{"message":"Logs and displays all undo information for the block editor when you press ctrl+shift+l."},"scrollable-list-items/title":{"message":"Scrollable List Items"},"scrollable-list-items/description":{"message":"List items that have a value longer than the width of the list itself will get cut off. Now, you can scroll left and right through the list item."},"custom-fonts/title":{"message":"Custom Website Font"},"custom-fonts/description":{"message":"On the Scratch website, you can set the font to whatever font you want, as long as it is on the Google Fonts website. This is case-sensitive."},"project-timer/title":{"message":"Project Timer"},"project-timer/description":{"message":"Displays the amount of time (in seconds) that the project has been running for."},"colored-comments/title":{"message":"Colored Editor Comments"},"colored-comments/description":{"message":"Colors comments in the editor based on the color of their parent block."},"recently-viewed-projects/title":{"message":"Recently Viewed Projects"},"recently-viewed-projects/description":{"message":"Adds a tab to the My Stuff page where you can see a list of the projects that you have recently viewed."},"collapse-blocks/title":{"message":"Collapse Blocks"},"collapse-blocks/description":{"message":"Right-click block menus in the editor include a button that will let you collapse the selected block."},"set-featured-project/title":{"message":"Set Featured Project"},"set-featured-project/description":{"message":"On any project page, you can set your profile's featured project with the click of a button- even unshared projects."},"scratchformat/title":{"message":"ScratchFormat"},"scratchformat/description":{"message":"Format your comments with bold, italic, and more. The comments will be styled to everyone using ScratchTools."},"expand-editor/title":{"message":"Expand Editor"},"expand-editor/description":{"message":"Use the ctrl+e to switch between the default block editor view and one that hides the stage to expand editor itself."},"list-sprites/title":{"message":"Sprite List"},"list-sprites/description":{"message":"Replaces the sprite grid in the editor with a list that includes the block count and position of the sprite."},"check-if-trending/title":{"message":"Check if Trending"},"check-if-trending/description":{"message":"If a project you're viewing is on the trending page, the place on the trending page will be shown next to the share date on the project page."},"link-forum-activity/title":{"message":"Link Users in Forum Activity"},"link-forum-activity/description":{"message":"In the forums' last post section, makes the usernames link to the user's profile."},"remove-topic-and-post/title":{"message":"Hide Forum Category Counts"},"remove-topic-and-post/description":{"message":"Hides the forum homepage topic and post boxes."},"forum-homepage-emojis/title":{"message":"Forum Category Emojis"},"forum-homepage-emojis/description":{"message":"Adds colorful emojis on the forum homepage categories based on their topic."},"remove-collapse-buttons/title":{"message":"Hide Forum Collapse Buttons"},"remove-collapse-buttons/description":{"message":"Hides the collapse buttons on the forum main page."},"pin-projects/title":{"message":"Pin Projects to My Stuff"},"pin-projects/description":{"message":"Pin one of your projects to the top of your My Stuff page with the click of a button. You can unpin your pinned project or switch out your pinned project for another one as well."},"last-key-pressed/title":{"message":"Last Key Pressed"},"last-key-pressed/description":{"message":"On any project page and in the editor, you can view the last key that you have pressed while on that project, according to the project itself. This is good for games such as platformers."},"hide-signatures/title":{"message":"Hide Forum Signatures"},"hide-signatures/description":{"message":"Hides all forum signatures and signature dividers."},"twemoji-in-forums/title":{"message":"Better Forum Emojis"},"twemoji-in-forums/description":{"message":"Replaces the current low resolution forum emojis with high quality Twemojis."},"go-to-parent/title":{"message":"Go to Parent Button"},"go-to-parent/description":{"message":"In the editor for any project that is a remix, you can click a button to go to the editor in the parent project."},"most-popular-project/title":{"message":"Most Popular Project"},"most-popular-project/description":{"message":"Displays the most popular project (by views) of the user on profile pages. You can click on the project to view it."},"editor-dark-mode/title":{"message":"Editor Dark Mode"},"editor-dark-mode/description":{"message":"Switches the editor's light color scheme to a darker one."},"hide-studio-group-icon/title":{"message":"Hide Studio Group Icon"},"hide-studio-group-icon/description":{"message":"Hides the studio group icon, and only shows the studio thumbnail."},"colored-messages/title":{"message":"Colored Messages"},"colored-messages/description":{"message":"Colors your messages based on the type of message, such as loves, favorites, and studio invites."},"full-title/title":{"message":"Full Project Title"},"full-title/description":{"message":"On profile pages, hover over any project title to show the full title."},"fixed-box/title":{"message":"Fix Content Boxes"},"fixed-box/description":{"message":"Makes all sides of boxes on the pages rounded, rather than just the tops."},"user-bio/title":{"message":"User Bio on Hover"},"user-bio/description":{"message":"In profile comments, hover over any username to display the user's bio."},"nfe-project-checker/title":{"message":"NFE Project Checker"},"nfe-project-checker/description":{"message":"On project pages, displays whether the project is Safe, Unreviewed, or NSFE (Not Safe for Everyone)."},"sprite-data/title":{"message":"Display Sprite Data"},"sprite-data/description":{"message":"In the Code, Costumes, and Sounds tab for each sprite, the number of blocks, costumes, and sounds will be displayed for the current sprite."},"idea-generator/title":{"message":"Project Idea Generator"},"idea-generator/description":{"message":"On the Scratch Ideas page, there will be a section where you can generate project ideas if you need some."},"hide-stickies/title":{"message":"Hide Forum Stickies"},"hide-stickies/description":{"message":"Hides the basic stickies from the top of each forum topic."},"nfe-search/title":{"message":"NFE Search"},"nfe-search/description":{"message":"Use a button to search all projects, including NFE ones."},"open-in-new-tab/title":{"message":"Open in New Tab"},"open-in-new-tab/description":{"message":"Automatically opens links on project pages in a new tab."},"unbold-site-text/title":{"message":"Unbold Site Text"},"unbold-site-text/description":{"message":"Makes it so that all text across Scratch is unbolded, and just normal text."},"compact-navbar/title":{"message":"Compact Navbar"},"compact-navbar/description":{"message":"Makes more room on the navigation bar near where your profile dropdown is."},"delete-all/title":{"message":"Delete All Sprites"},"delete-all/description":{"message":"Adds an option in the right-click context menu for sprites. It will delete all sprites (after confirmation to make sure it isn't an accident)."},"round-profile-pictures/title":{"message":"Round Profile Pictures"},"round-profile-pictures/description":{"message":"All profile pictures on the Scratch website will be rounded."},"ocular-link/title":{"message":"Ocular Links in Forums"},"ocular-link/description":{"message":"Adds a link to any user's Ocular page right below their username on a post."},"forum-scratch-team/title":{"message":"Scratch Team Symbol in Forums"},"forum-scratch-team/description":{"message":"Next to the username of any Scratch Team member in the forums, an asterisk (*) is placed at the end of their username."},"remove-editor-icons/title":{"message":"Remove Editor Icons"},"remove-editor-icons/description":{"message":"Removes the icons from the tabs in the editor."},"sprite-watermark/title":{"message":"Remove Sprite Watermark"},"sprite-watermark/description":{"message":"Removes the sprite watermark that shows in the editor."},"compact-editor/title":{"message":"Compact Editor"},"compact-editor/description":{"message":"Makes sprite and backdrop information more compact."},"my-recent-projects/title":{"message":"Replace Scratch News with Recent Projects"},"my-recent-projects/description":{"message":"Replaces the Scratch News section on the homepage with your recently shared projects."},"focus-mode/title":{"message":"Focus Mode"},"focus-mode/description":{"message":"Removes the comments, studio and remix column, header, and footer on project pages when the button is clicked."}}
\ No newline at end of file
From 1a87e031753903467bdcfd40ccdde411c434dbdb Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Mon, 27 Jan 2025 16:51:36 -0800
Subject: [PATCH 187/253] v4.0.0 update screen
---
api/update/changelogs/forum.json | 7 ++
api/update/changelogs/project.json | 63 +++++++++++++
api/update/changelogs/website.json | 28 ++++++
api/update/icons/align.svg | 1 +
api/update/icons/change.svg | 1 +
api/update/icons/countdown.svg | 1 +
api/update/icons/date.svg | 1 +
api/update/icons/extend.svg | 1 +
api/update/icons/filesize.svg | 1 +
api/update/icons/filter.svg | 1 +
api/update/icons/font.svg | 1 +
api/update/icons/gift.svg | 1 +
api/update/icons/gradient.svg | 1 +
api/update/icons/logo.svg | 13 +++
api/update/icons/nocloud.svg | 1 +
api/update/icons/opacity.svg | 1 +
api/update/icons/outline.svg | 1 +
api/update/icons/reaction.svg | 1 +
api/update/icons/record.svg | 1 +
api/update/icons/shapes.svg | 1 +
api/update/icons/thumbnail.svg | 1 +
api/update/icons/upload.svg | 1 +
api/update/icons/variable.svg | 1 +
api/update/index.js | 146 +++++++++++++++++++++++++++++
api/update/style.css | 138 +++++++++++++++++++++++++++
manifest.json | 6 +-
26 files changed, 419 insertions(+), 1 deletion(-)
create mode 100644 api/update/changelogs/forum.json
create mode 100644 api/update/changelogs/project.json
create mode 100644 api/update/changelogs/website.json
create mode 100644 api/update/icons/align.svg
create mode 100644 api/update/icons/change.svg
create mode 100644 api/update/icons/countdown.svg
create mode 100644 api/update/icons/date.svg
create mode 100644 api/update/icons/extend.svg
create mode 100644 api/update/icons/filesize.svg
create mode 100644 api/update/icons/filter.svg
create mode 100644 api/update/icons/font.svg
create mode 100644 api/update/icons/gift.svg
create mode 100644 api/update/icons/gradient.svg
create mode 100644 api/update/icons/logo.svg
create mode 100644 api/update/icons/nocloud.svg
create mode 100644 api/update/icons/opacity.svg
create mode 100644 api/update/icons/outline.svg
create mode 100644 api/update/icons/reaction.svg
create mode 100644 api/update/icons/record.svg
create mode 100644 api/update/icons/shapes.svg
create mode 100644 api/update/icons/thumbnail.svg
create mode 100644 api/update/icons/upload.svg
create mode 100644 api/update/icons/variable.svg
create mode 100644 api/update/index.js
create mode 100644 api/update/style.css
diff --git a/api/update/changelogs/forum.json b/api/update/changelogs/forum.json
new file mode 100644
index 00000000..9a9b0818
--- /dev/null
+++ b/api/update/changelogs/forum.json
@@ -0,0 +1,7 @@
+{
+ "active": false,
+ "title": "Forum Changes for {{ version }}",
+ "description": "",
+ "changes": []
+ }
+
\ No newline at end of file
diff --git a/api/update/changelogs/project.json b/api/update/changelogs/project.json
new file mode 100644
index 00000000..ca32136d
--- /dev/null
+++ b/api/update/changelogs/project.json
@@ -0,0 +1,63 @@
+{
+ "active": true,
+ "title": "Project Page Changes for {{ version }}",
+ "description": "ScratchTools is introducing many new project page and editor features that will revolutionize the way that you use Scratch. You can enable them on the settings page.",
+ "changes": [
+ {
+ "icon": "gradient.svg",
+ "slogan": "Rotate gradient colors in the paint editor"
+ },
+ {
+ "icon": "align.svg",
+ "slogan": "Align shapes and objects in the paint editor"
+ },
+ {
+ "icon": "align.svg",
+ "slogan": "Quickly center text in your project instructions"
+ },
+ {
+ "icon": "extend.svg",
+ "slogan": "Extend C-blocks around code when dragging them"
+ },
+ {
+ "icon": "filesize.svg",
+ "slogan": "View file sizes for any asset"
+ },
+ {
+ "icon": "font.svg",
+ "slogan": "Use dozens of extra fonts in the paint editor"
+ },
+ {
+ "icon": "nocloud.svg",
+ "slogan": "Temporarily disable cloud variables in projects"
+ },
+ {
+ "icon": "opacity.svg",
+ "slogan": "Customize the opacity of stage variable monitors"
+ },
+ {
+ "icon": "outline.svg",
+ "slogan": "Customize and round lines and shape outlines"
+ },
+ {
+ "icon": "reaction.svg",
+ "slogan": "Add and view emoji reactions on any project"
+ },
+ {
+ "icon": "record.svg",
+ "slogan": "Record and save videos of your project stage"
+ },
+ {
+ "icon": "shapes.svg",
+ "slogan": "Unite, subtract, intersect, and exclude shapes"
+ },
+ {
+ "icon": "thumbnail.svg",
+ "slogan": "Upload custom project thumbnails"
+ },
+ {
+ "icon": "upload.svg",
+ "slogan": "Upload WEBP images as costumes and sprites"
+ }
+ ]
+}
diff --git a/api/update/changelogs/website.json b/api/update/changelogs/website.json
new file mode 100644
index 00000000..8e4cd84c
--- /dev/null
+++ b/api/update/changelogs/website.json
@@ -0,0 +1,28 @@
+{
+ "active": true,
+ "title": "Website Changes for {{ version }}",
+ "description": "ScratchTools is introducing many new features for the Scratch website. You can enable them on the settings page.",
+ "changes": [
+ {
+ "icon": "change.svg",
+ "slogan": "Customize what tag is used by default on the explore page"
+ },
+ {
+ "icon": "gift.svg",
+ "slogan": "A ScratchTools selection of featured projects"
+ },
+ {
+ "icon": "filter.svg",
+ "slogan": "Filter through studio, explore, and searched projects"
+ },
+ {
+ "icon": "date.svg",
+ "slogan": "See when a studio was created"
+ },
+ {
+ "icon": "countdown.svg",
+ "slogan": "View how many replies are left in a thread"
+ }
+ ]
+ }
+
\ No newline at end of file
diff --git a/api/update/icons/align.svg b/api/update/icons/align.svg
new file mode 100644
index 00000000..0f181f48
--- /dev/null
+++ b/api/update/icons/align.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/api/update/icons/change.svg b/api/update/icons/change.svg
new file mode 100644
index 00000000..5040be17
--- /dev/null
+++ b/api/update/icons/change.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/api/update/icons/countdown.svg b/api/update/icons/countdown.svg
new file mode 100644
index 00000000..b2483d3d
--- /dev/null
+++ b/api/update/icons/countdown.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/api/update/icons/date.svg b/api/update/icons/date.svg
new file mode 100644
index 00000000..98123090
--- /dev/null
+++ b/api/update/icons/date.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/api/update/icons/extend.svg b/api/update/icons/extend.svg
new file mode 100644
index 00000000..59355358
--- /dev/null
+++ b/api/update/icons/extend.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/api/update/icons/filesize.svg b/api/update/icons/filesize.svg
new file mode 100644
index 00000000..b3887810
--- /dev/null
+++ b/api/update/icons/filesize.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/api/update/icons/filter.svg b/api/update/icons/filter.svg
new file mode 100644
index 00000000..add0849e
--- /dev/null
+++ b/api/update/icons/filter.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/api/update/icons/font.svg b/api/update/icons/font.svg
new file mode 100644
index 00000000..9886d27c
--- /dev/null
+++ b/api/update/icons/font.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/api/update/icons/gift.svg b/api/update/icons/gift.svg
new file mode 100644
index 00000000..ada83f3c
--- /dev/null
+++ b/api/update/icons/gift.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/api/update/icons/gradient.svg b/api/update/icons/gradient.svg
new file mode 100644
index 00000000..b60fe149
--- /dev/null
+++ b/api/update/icons/gradient.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/api/update/icons/logo.svg b/api/update/icons/logo.svg
new file mode 100644
index 00000000..e5f60834
--- /dev/null
+++ b/api/update/icons/logo.svg
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/api/update/icons/nocloud.svg b/api/update/icons/nocloud.svg
new file mode 100644
index 00000000..b550d987
--- /dev/null
+++ b/api/update/icons/nocloud.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/api/update/icons/opacity.svg b/api/update/icons/opacity.svg
new file mode 100644
index 00000000..4f91c12a
--- /dev/null
+++ b/api/update/icons/opacity.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/api/update/icons/outline.svg b/api/update/icons/outline.svg
new file mode 100644
index 00000000..76653e2b
--- /dev/null
+++ b/api/update/icons/outline.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/api/update/icons/reaction.svg b/api/update/icons/reaction.svg
new file mode 100644
index 00000000..939ef3e1
--- /dev/null
+++ b/api/update/icons/reaction.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/api/update/icons/record.svg b/api/update/icons/record.svg
new file mode 100644
index 00000000..19a6067a
--- /dev/null
+++ b/api/update/icons/record.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/api/update/icons/shapes.svg b/api/update/icons/shapes.svg
new file mode 100644
index 00000000..b0546afa
--- /dev/null
+++ b/api/update/icons/shapes.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/api/update/icons/thumbnail.svg b/api/update/icons/thumbnail.svg
new file mode 100644
index 00000000..ba07ba78
--- /dev/null
+++ b/api/update/icons/thumbnail.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/api/update/icons/upload.svg b/api/update/icons/upload.svg
new file mode 100644
index 00000000..ebd22086
--- /dev/null
+++ b/api/update/icons/upload.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/api/update/icons/variable.svg b/api/update/icons/variable.svg
new file mode 100644
index 00000000..73a6a993
--- /dev/null
+++ b/api/update/icons/variable.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/api/update/index.js b/api/update/index.js
new file mode 100644
index 00000000..7c235ca0
--- /dev/null
+++ b/api/update/index.js
@@ -0,0 +1,146 @@
+function getPageType() {
+ let url = new URL(window.location.href);
+ if (document.querySelector("#page-404")) {
+ return null;
+ } else if (url.pathname.startsWith("/projects/")) {
+ return "project";
+ } else if (url.pathname.startsWith("/discuss/")) {
+ return "forum";
+ } else {
+ return "website";
+ }
+}
+
+async function checkUpdate() {
+ let version = chrome.runtime.getManifest().version;
+ let { updateScreens } = await chrome.storage.sync.get("updateScreens");
+
+ if (updateScreens) {
+ let page = getPageType();
+
+ if (page && updateScreens[page] !== version) {
+ updateScreens[page] = version;
+ await chrome.storage.sync.set({
+ updateScreens,
+ });
+ let update = await (
+ await fetch(
+ chrome.runtime.getURL(`/api/update/changelogs/${page}.json`)
+ )
+ ).json();
+ if (update.active) {
+ makeScreen(update);
+ }
+ }
+ } else {
+ await chrome.storage.sync.set({
+ updateScreens: {
+ website: "0",
+ project: "0",
+ forum: "0",
+ },
+ });
+ checkUpdate()
+ }
+}
+checkUpdate();
+
+function makeScreen(update) {
+ console.log(update);
+ if (document.querySelector(".ste-update-bg")) return;
+ let background = Object.assign(document.createElement("div"), {
+ className: "ste-update-bg",
+ });
+
+ let div = Object.assign(document.createElement("div"), {
+ className: "ste-update-box",
+ });
+
+ let topRow = document.createElement("div");
+ topRow.append(
+ Object.assign(document.createElement("img"), {
+ src: chrome.runtime.getURL("/api/update/icons/logo.svg"),
+ })
+ );
+ div.appendChild(topRow);
+
+ let h2 = document.createElement("h2");
+ buildText(h2, update.title);
+ div.appendChild(h2);
+
+ let p = document.createElement("p");
+ p.textContent = update.description;
+ div.appendChild(p);
+
+ let b = document.createElement("b");
+ b.textContent = " Here's what's new:";
+ p.appendChild(b);
+
+ let rows = Object.assign(document.createElement("div"), {
+ className: "rows",
+ });
+
+ for (var i in update.changes) {
+ let row = document.createElement("div");
+ let img = document.createElement("img");
+ img.src = chrome.runtime.getURL(
+ `/api/update/icons/${update.changes[i].icon}`
+ );
+ let slogan = document.createElement("p");
+ slogan.textContent = update.changes[i].slogan;
+ row.append(img, slogan);
+ rows.appendChild(row);
+ }
+
+ div.appendChild(rows);
+
+ let viewMore = document.createElement("div");
+ viewMore.className = "view-more";
+ let viewMoreSpan = viewMore.appendChild(
+ Object.assign(document.createElement("span"), {
+ textContent: "View All",
+ })
+ );
+ div.appendChild(viewMore);
+
+ viewMoreSpan.addEventListener("click", function () {
+ viewMore.remove();
+ rows.style.maxHeight = "none";
+ });
+
+ let button = document.createElement("button");
+ button.textContent = "Continue";
+ button.addEventListener("click", function () {
+ background.remove();
+ div.remove();
+ });
+ background.addEventListener("click", function () {
+ div.remove();
+ background.remove();
+ });
+ div.appendChild(button);
+
+ document.body.appendChild(div);
+ document.body.appendChild(background);
+}
+
+function buildText(element, title) {
+ let blocks = title.split("{{ version }}");
+ console.log(blocks);
+
+ for (var i in blocks) {
+ let span = document.createElement("span");
+ span.textContent = blocks[i];
+ element.appendChild(span);
+
+ if (Number(i) !== Number(blocks.length - 1)) {
+ console.log(i);
+ let version = document.createElement("span");
+ version.textContent = "v" + chrome.runtime.getManifest().version;
+ version.className = "color";
+ element.appendChild(version);
+ }
+ }
+
+ return;
+}
diff --git a/api/update/style.css b/api/update/style.css
new file mode 100644
index 00000000..2654759b
--- /dev/null
+++ b/api/update/style.css
@@ -0,0 +1,138 @@
+@import url("https://fonts.googleapis.com/css2?family=Inter&display=swap");
+
+.ste-update-bg {
+ display: block;
+ position: fixed;
+ left: 0px;
+ top: 0px;
+ z-index: 2147483646;
+ width: 100vw;
+ height: 100vh;
+ background: #00000080;
+}
+
+.ste-update-box {
+ all: unset; /* Reset inherited styles */
+ box-sizing: border-box;
+ position: fixed;
+ left: 50%;
+ top: 50%;
+ transform: translateX(-50%) translateY(-50%);
+ background: white;
+ padding: 32px;
+ border-radius: 12.8px;
+ z-index: 2147483647;
+ width: calc(40 * 16px);
+ max-width: calc(100% - calc(8 * 16px));
+ max-height: calc(100% - calc(8 * 16px));
+ overflow-y: auto;
+ font-size: 16px;
+ line-height: 20px;
+}
+
+.ste-update-box > div:first-child img {
+ height: calc(2 * 16px);
+ float: right;
+}
+
+.ste-update-box * {
+ font-family: "Inter", sans-serif !important;
+ text-shadow: none !important;
+}
+
+.ste-update-box h2 {
+ position: relative;
+ top: calc(.4 * -16px);
+ margin-bottom: 20px;
+ color: black;
+ font-size: calc(2 * 16px);
+}
+
+.ste-update-box .rows div {
+ display: flex;
+ vertical-align: middle;
+ margin-bottom: calc(2 * 16px);
+ align-items: center;
+ break-inside: avoid
+}
+
+.ste-update-box h2 span.color {
+ background: -webkit-linear-gradient(#ff8c2d, #ffb740);
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+}
+
+.ste-update-box .rows div p {
+ color: black;
+ margin: 0px;
+ font-weight: 600;
+ font-size: calc(1 * 16px);
+ margin-left: calc(.8 * 16px);
+}
+
+.ste-update-box > p {
+ color: black;
+ opacity: .6;
+ margin-top: 0px;
+ margin-bottom: calc(1 * 16px);
+ position: relative;
+ top: calc(1 * -16px);
+}
+
+.ste-update-box > p > b {
+ font-weight: 600;
+}
+
+.ste-update-box .rows img {
+ height: calc(2 * 16px);
+}
+
+.ste-update-box .rows {
+ column-count: 2;
+ column-gap: calc(2 * 16px);
+ margin-bottom: calc(2 * 16px);
+ max-height: calc(14 * 16px);
+ overflow-y: hidden;
+}
+
+.ste-update-box > button {
+ background: linear-gradient(0.25turn, #ff8c2d, #ffb740);
+ color: white;
+ width: 100%;
+ outline: none;
+ border: 0px;
+ padding: calc(.8 * 16px);
+ border-radius: calc(.5 * 16px);
+ cursor: pointer;
+ font-weight: 600;
+ transition: background .3s, opacity .3s;
+ line-height: 24px;
+ height: 48px;
+ font-size: 16px;
+}
+
+.ste-update-box > button:hover {
+ background: linear-gradient(0.25turn, #ffb740, #ff8c2d);
+ opacity: .7;
+}
+
+.ste-update-box .view-more {
+ height: calc(5 * 16px);
+ width: 100%;
+ background: linear-gradient(360deg, white, transparent);
+ position: relative;
+ top: calc(-8 * 16px);
+ margin-bottom: calc(-4 * 16px);
+}
+
+.ste-update-box .view-more span {
+ position: absolute;
+ left: 50%;
+ top: calc(50% + calc(3 * 16px));
+ transform: translateX(-50%) translateY(-50%);
+ font-size: calc(1 * 16px);
+ font-weight: 600;
+ color: black;
+ opacity: .6;
+ cursor: pointer;
+}
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
index 66e10786..ca65517a 100644
--- a/manifest.json
+++ b/manifest.json
@@ -32,7 +32,11 @@
],
"run_at": "document_start",
"js": [
- "extras/inject-styles.js"
+ "extras/inject-styles.js",
+ "api/update/index.js"
+ ],
+ "css": [
+ "api/update/style.css"
],
"all_frames": true
}
From f7883818e6022d675a5dba6aef476e86acde9354 Mon Sep 17 00:00:00 2001
From: rgantzos <86856959+rgantzos@users.noreply.github.com>
Date: Mon, 27 Jan 2025 16:59:09 -0800
Subject: [PATCH 188/253] Change to "Get live support"
---
_locales/en/messages.json | 2 +-
extras/index.html | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/_locales/en/messages.json b/_locales/en/messages.json
index e6b5260c..725bacc9 100644
--- a/_locales/en/messages.json
+++ b/_locales/en/messages.json
@@ -6,7 +6,7 @@
"message": "ScratchTools is fully customizable with tons of features, all for making the Scratch website better and easier to use!"
},
"supportButton": {
- "message": "Get support"
+ "message": "Get live support"
},
"feedbackButton": {
"message": "Give feedback"
diff --git a/extras/index.html b/extras/index.html
index 14ce2b14..deecad57 100644
--- a/extras/index.html
+++ b/extras/index.html
@@ -126,7 +126,7 @@
All feat
fill="var(--primary-color)"
/>
- Get supportGet live support