├── icons ├── icon16.png ├── icon48.png └── icon128.png ├── toggle-off-svgrepo-com.svg ├── toggle-on-fill-svgrepo-com.svg ├── manifest.json ├── README.md ├── LICENSE └── content.js /icons/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SilentDemonSD/GCProgressToggle/main/icons/icon16.png -------------------------------------------------------------------------------- /icons/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SilentDemonSD/GCProgressToggle/main/icons/icon48.png -------------------------------------------------------------------------------- /icons/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SilentDemonSD/GCProgressToggle/main/icons/icon128.png -------------------------------------------------------------------------------- /toggle-off-svgrepo-com.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /toggle-on-fill-svgrepo-com.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 3, 3 | "name": "CloudSkillsBoost Progress Checker", 4 | "version": "1.1", 5 | "description": "Enables the check my progress button for CloudSkillsBoost Labs", 6 | "permissions": [ 7 | "activeTab" 8 | ], 9 | "content_scripts": [ 10 | { 11 | "matches": [ 12 | "https://www.cloudskillsboost.google/games/*", 13 | "https://www.skills.google/games/*" 14 | ], 15 | "js": [ 16 | "content.js" 17 | ] 18 | } 19 | ], 20 | "icons": { 21 | "16": "icons/icon16.png", 22 | "48": "icons/icon48.png", 23 | "128": "icons/icon128.png" 24 | } 25 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CloudSkillBoost Progress Checker - Browser Extension Installation Guide 2 | 3 | Follow these simple steps to install the CloudSkillBoost Progress Checker as a **Browser extension** on your browser: 4 | 5 | **Step 1:** Download the `.zip` file named `GCProgressToggle.zip` to your local system ([*click here to download*](https://codeload.github.com/SilentDemonSD/GCProgressToggle/zip/refs/heads/main)). 6 | 7 | **Step 2:** Once downloaded, open the `.zip` file in your File Explorer and `**extract**` its contents. 8 | 9 | **Step 3:** Open your Chrome browser and navigate to the Extensions tab by entering `chrome://extensions/` in the address bar. Enable `Developer Mode` by toggling the switch in the upper right corner. Next, click on the `Load Unpacked` button and select the folder extracted in `Step 2`. 10 | ![Step 3 Screenshot](https://github.com/user-attachments/assets/3d4811e6-88a1-43c7-8a43-c3b9d65eb4fd) 11 | 12 | **Step 4:** **Congratulations!** You've successfully installed the Arcade Points Calculator as a Chrome extension. 13 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Silent Demon SD ( MysterySD ) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /content.js: -------------------------------------------------------------------------------- 1 | const currentUrl = window.location.pathname; 2 | 3 | if (currentUrl.includes('/leaderboard')) { 4 | console.log('Extension disabled on leaderboard page.'); 5 | } else { 6 | const assessmentElement = document.querySelector('.lab-assessment__tab.js-open-lab-assessment-panel'); 7 | const leaderboardElement = document.querySelector('ql-leaderboard-container'); 8 | const assessmentPanel = document.querySelector('.lab-assessment__panel.js-lab-assessment-panel'); 9 | const accountSectionScroll = document.querySelector('.control-panel-section'); 10 | const mainWrapper = document.querySelector('body.games-labs-show .l-main-wrapper'); 11 | 12 | let showingLeaderboard = false; 13 | 14 | function updateUI(showingLeaderboard) { 15 | if (showingLeaderboard) { 16 | if (leaderboardElement) leaderboardElement.style.display = 'block'; 17 | if (assessmentPanel) assessmentPanel.style.display = 'none'; 18 | if (assessmentElement) assessmentElement.style.display = 'none'; 19 | if (mainWrapper) mainWrapper.style.paddingRight = '64px'; 20 | } else { 21 | if (leaderboardElement) leaderboardElement.style.display = 'none'; 22 | if (assessmentPanel) assessmentPanel.style.display = 'block'; 23 | if (assessmentElement) assessmentElement.style.display = 'block'; 24 | if (mainWrapper) mainWrapper.style.paddingRight = '0px'; 25 | } 26 | } 27 | function createToggleUI() { 28 | const toggleOnSVG = ` 29 | 30 | 31 | `; 32 | 33 | const toggleOffSVG = ` 34 | 35 | 36 | `; 37 | 38 | let showingLeaderboard = true; 39 | 40 | const toggleContainer = document.createElement('div'); 41 | Object.assign(toggleContainer.style, { 42 | position: 'fixed', 43 | bottom: '20px', 44 | right: '20px', 45 | zIndex: '1000', 46 | backgroundColor: '#34A853', 47 | padding: '10px', 48 | borderRadius: '50%', 49 | boxShadow: '0 4px 12px rgba(0,0,0,0.2)', 50 | cursor: 'pointer', 51 | display: 'flex', 52 | justifyContent: 'center', 53 | alignItems: 'center', 54 | width: '56px', 55 | height: '56px', 56 | transition: 'transform 0.3s ease, box-shadow 0.3s ease', 57 | }); 58 | 59 | const iconContainer = document.createElement('div'); 60 | iconContainer.innerHTML = toggleOffSVG; 61 | iconContainer.title = 'Show Assessment'; 62 | iconContainer.style.pointerEvents = 'none'; 63 | 64 | toggleContainer.addEventListener('mouseenter', () => { 65 | toggleContainer.style.transform = 'scale(1.15)'; 66 | toggleContainer.style.boxShadow = '0 6px 16px rgba(0,0,0,0.3)'; 67 | }); 68 | 69 | toggleContainer.addEventListener('mouseleave', () => { 70 | toggleContainer.style.transform = 'scale(1)'; 71 | toggleContainer.style.boxShadow = '0 4px 12px rgba(0,0,0,0.2)'; 72 | }); 73 | 74 | toggleContainer.addEventListener('click', () => { 75 | showingLeaderboard = !showingLeaderboard; 76 | iconContainer.innerHTML = showingLeaderboard ? toggleOffSVG : toggleOnSVG; 77 | iconContainer.title = showingLeaderboard ? 'Show Assessment' : 'Show Leaderboard'; 78 | updateUI(showingLeaderboard); 79 | }); 80 | 81 | toggleContainer.appendChild(iconContainer); 82 | document.body.appendChild(toggleContainer); 83 | } 84 | 85 | updateUI(showingLeaderboard); 86 | 87 | if (leaderboardElement && assessmentPanel) { 88 | createToggleUI(); 89 | console.log('Extension enabled Succesfully!'); 90 | } 91 | } 92 | --------------------------------------------------------------------------------