Skip to content

Latest commit

Β 

History

189 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Scaler++

Bypass companion-mode on campus WiFi, download lecture recordings as audio/video/transcript, sync lectures with google Calendar, get LeetCode links on assignments & declutter your Scaler dashboard β€” all in one lightweight Chrome extension.

Chrome Web Store


πŸš€ ENHANCEMENTS

🧠 AI Lecture Summary

Adds a "Summary" tab on the session page that shows an AI-generated summary of the lecture β€” Topics taught, Notes, Deadlines, and Announcements β€” built from the lecture transcript.

⬇️ Lecture Downloader & πŸ“ AI Transcription

Download recorded lectures directly from the Scaler recordings page as audio, video, or transcript (using your own custom API key for providers like Deepgram, Groq, OpenAI, or ElevenLabs).

πŸ›‘οΈ Smart Companion Bypass

Bypass Scaler's companion-mode when joining with SST's campus wifi.

Credits - PHATWalrus

πŸ”΄ Live Stream Recorder & βͺ DVR

Rewind the live lecture.

πŸ“… Google Calendar Sync

Automatically adds your upcoming Scaler classes directly to your Google Calendar β€” no manual entry needed.

πŸš€ Direct Join Session

Replaces the "View Details" text on live class cards with a direct "Join Session" button.

πŸšͺ Classroom Tag

Scaler never tells you which room a class is in. This adds a room tag to every dashboard class card β€” one chip reading Room : 1A β€” built from students voting on where the class actually is. Click it to see how many people said what, and to add your own answer.

Voting opens 24 h before a class. A guess from the room's own history holds the tag until live votes clearly disagree: one person can never move it, two people must agree, and a voter's ballot is weighted by how often their past votes matched reality. Votes are tied to your Scaler account, and you can change yours whenever the room changes β€” every earlier answer is kept. See docs/classroom-vote.md.

οΏ½ Subject Sort

Automatically organizes your curriculum subjects into Core and Other categories for a cleaner learning experience.

πŸ”— LeetCode Integration for Assignments

Automatically detects assignment problems and adds a direct link to the corresponding LeetCode problem with intelligent caching for instant results.

Credits - Siddhanth kapoor

πŸ“¦ Assignment Export

Export your assignment problems, MCQs, and written code directly to formatted Markdown files for offline review or archiving.

  • Click Export to download the current problem.
  • Select Export All (ZIP) to seamlessly scrape and package your entire assignment session into a cleanly structured ZIP archive.
  • Runs 100% locally in your browser. No backend required. Supports Coding, Single Correct, and Multiple Correct MCQs.

πŸ“˜ Lecture Info

Show session metadata (title, date, instructor/company, rating) directly on class session pages and dashboard cards for quick reference.

πŸ§‘β€πŸ« Instructor Info

Display instructor name, company and role on dashboard class cards and inside a dedicated "Instructor Info" tab on the session page.

🎯 Practice Mode

Automatically resets the code editor in assignments if not touched for 5+ hours. Includes a customizable auto-disable timer (1–30 days) and tracks manual resets to prevent accidental spoilers.

πŸ” Instant Problem Search

Search from all the problems instantly by name, topic, type, or day.

πŸ† Contest Leaderboard

Always shows a clickable "View Leaderboard" link on contest pages, even during active contests when it's normally disabled.

πŸ” Global Spotlight Search

Press Alt + / (Option + / on Mac) or click the Search button in the Scaler header to open a floating Apple-style search bar. Instantly find and jump to Classes, Problems, or Events from anywhere on Scaler.

🎨 Dark Mode & Elegant Themes

Recolor the entire Scaler website with a single click. Open the popup β†’ Appearance β†’ pick a theme: Dark, Midnight, Dracula, Nord, Warm Sepia, or Solarized (or Light / Off for the native look). Themes apply instantly, sync across your devices, and keep images, videos and the sticky header working correctly.

The Midnight theme ports the look of refact0r/midnight-discord β€” its blue-gray darkness, its Figtree font (bundled, SIL OFL 1.1) and its rounded corners.

🧹 CLEANER DASHBOARD

🌍 Global Elements (All Pages)

  • Refer & Earn - Hide the β‚Ή referral button in the header.
  • Scaler Coins - Remove the coin counter and store link.
  • Popups & Widgets - Auto-hide referral modals and floating notebook buttons.
  • Auto-Close - Automatically dismisses referral/NSET popups as they appear.

πŸ“‹ Dashboard (Todos) & Sidebar

  • Promotional Cards - Hide "2025 Revisited", referral banners, and promo cards.
  • Counters & Stats - Hide live referral counters and recording carousels.
  • Smart Mess Fee - Hidden by default, auto-shows whenever the submission form link is live.
  • Clean Sidebar - Remove store links and "Refer Friends" badges.

✨ KEY BENEFITS

  • βœ… Instant Apply - Settings take effect immediately without a page reload.
  • βœ… Smart Bypass - Companion mode bypassed on-demand with zero permanent overhead.
  • βœ… Lecture Downloads - Download 2-hour recordings as lightweight audio, full video, or fully local AI transcripts.
  • βœ… Smart Caching - LeetCode links load instantly on revisits (20-50Γ— faster).
  • βœ… Lightweight & Fast - Native performance with no external dependencies.
  • βœ… Privacy Centric - No data collection; works entirely via local storage.
  • βœ… Sync Support - Your preferences are saved automatically across devices.

πŸ› οΈ Installation

  1. Install from the Chrome Web Store or load unpacked in Developer Mode.
  2. Open chrome://extensions/ and enable Developer Mode.
  3. Click on "Load unpacked" and select the extension folder.

πŸ—οΈ Architecture

extension-main/
β”œβ”€β”€ manifest.json
β”œβ”€β”€ popup.html / popup.css / popup.js
β”œβ”€β”€ background/
β”‚   β”œβ”€β”€ background.js        ← Service worker entry point (importScripts only)
β”‚   β”œβ”€β”€ companionBypass.js   ← Smart Companion Bypass logic
β”‚   β”œβ”€β”€ classroomProxy.js    ← Crowdsourced classroom tag API proxy
β”‚   β”œβ”€β”€ leetcodeLink.js      ← LeetCode search & verification
    β”œβ”€β”€ calendarSync.js      ← Sync classes directly into Google Calendar
β”‚   β”œβ”€β”€ summaryProxy.js      ← AI summary cache + LLM proxy (CSP-safe)
β”‚   └── videoTracker.js      ← M3U8 stream capture & download initiation
└── content/
    β”œβ”€β”€ content.js           ← Entry point & message handler
    β”œβ”€β”€ core/                ← settings, styleInjector, urlObserver
    β”œβ”€β”€ cleaner/             ← selectors, cleanerEngine, modalHandler, sidebarHandler
    β”œβ”€β”€ features/
    β”‚   β”œβ”€β”€ videoDownloader/  ← Lecture download & transcript module
    β”‚   β”‚   β”œβ”€β”€ videoDownloader.js    ← Button injection & recording detection
    β”‚   β”‚   β”œβ”€β”€ videoProcessor.html   ← Download progress UI
    β”‚   β”‚   β”œβ”€β”€ videoProcessor.js     ← Concurrent HLS downloader engine
    β”‚   β”‚   β”œβ”€β”€ transcriptProcessor.html ← Dedicated transcription UI
    β”‚   β”‚   β”œβ”€β”€ transcriptProcessor.js   ← Client-side transcript orchestrator
    β”‚   β”‚   β”œβ”€β”€ customAudioTranscriber.js ← Custom STT API adapters (Deepgram, Groq, etc)
    β”‚   β”‚   └── modeBadge.js          ← Audio/Video mode badge
    β”‚   β”œβ”€β”€ liveStreamRecorder/ ← Live recording & DVR module
    β”‚   β”‚   β”œβ”€β”€ liveStreamRecorder.js ← Main logic & UI injection
    β”‚   β”‚   β”œβ”€β”€ recorderBridge.js     ← Page context Agora handler
    β”‚   β”‚   └── liveStreamRecorder.css ← Custom player styles
    β”‚   β”œβ”€β”€ classroomVote/     ← Crowdsourced classroom tag module
    β”‚   β”‚   β”œβ”€β”€ classroomLogic.js ← Vote window, card parsing, tag copy (pure, tested)
    β”‚   β”‚   └── classroomVote.js  ← Tag injection, room picker, teardown
    β”‚   β”œβ”€β”€ lectureInfo.js / instructorInfo.js ← Session/dashboard metadata & instructor tab
    β”‚   β”œβ”€β”€ lectureSummary.js ← AI lecture summary tab (topics/notes/deadlines/announcements)
    β”‚   β”œβ”€β”€ themeManager.js   ← Site-wide Dark Mode & theme engine (root-filter recipes)
    β”‚   β”œβ”€β”€ problemSearch, practiceMode, leetcodeLink, spotlightSearch,
    β”‚   β”‚   joinClassButton, companionBypass, subjectSort, contestLeaderboard
    └── utils/               ← domUtils, stringUtils

tests/                       ← jsdom + node:test suite for content features (see tests/README.md)

πŸ§ͺ Testing

Unit + integration tests for the content-script features live in Scaler++/tests and run on Node's built-in test runner with jsdom (no Jest):

cd Scaler++/tests
npm install      # one-time: installs jsdom
npm test         # runs the full suite

Coverage includes the string/DOM utilities, join-class time logic, custom-message selection, the Instructor Info tab/dashboard tagging, and the full AI Lecture Summary flow (cached render, Generate-button states, and the generate→cache path). A smoke.test.js loads the entire manifest content-script bundle in one scope and asserts every feature entrypoint is wired up — so newly added content scripts are covered automatically. See tests/README.md for details.


Made with ❀️ by Scaler community for the Scaler community.

Focus on what matters β€” your learning journey!

About

extension for scaler.com to remove unwanted things and add wanted things

Resources

Contributing

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages