├── 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 |
--------------------------------------------------------------------------------
/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 | 
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 | `;
32 |
33 | const toggleOffSVG = `
34 | `;
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 |
--------------------------------------------------------------------------------