| ⏪ Live Seek | Rewind or fast-forward ±10 seconds on live streams — the control Hotstar removed. |
| 💎 Glassmorphism UI | Frosted-glass buttons with subtle backdrop blur blend seamlessly into the player. |
| 🌊 Rich Animations | Ripple, icon-nudge, and floating feedback labels on every seek. |
| ⌨️ Keyboard Shortcuts | ← / → arrow keys work too — no mouse needed. |
| 📱 Responsive | Buttons auto-resize on smaller viewports (≤ 600 px). |
| 🔌 Zero Permissions | No host permissions, no network requests, no data collected. |
| ♿ Accessible | Proper aria-label attributes and keyboard-navigable buttons. |
| 🔄 SPA-Aware | A MutationObserver watches Hotstar's React state — the overlay appears and cleans up as you navigate. |
Note
The extension is not on the Chrome Web Store. Install it in two minutes via Developer mode — no account needed.
- Go to the Releases page and download
chrome.zip. - Unzip the file anywhere (e.g.
~/Downloads/bbls-chrome/). - Open
chrome://extensionsin your browser. - Toggle on Developer mode (top-right corner).
- Click Load unpacked → select the unzipped folder.
- Done — navigate to any Hotstar live stream to see the buttons.
Tip
To update: download the new chrome.zip from the latest release, replace the folder contents, and click the ↻ refresh icon on the extension card.
Get the extension from the official Firefox Add-ons store:
Alternatively, download firefox.zip from the latest release
and load it via about:debugging — see Development → Firefox below.
-
Install Tampermonkey or Violentmonkey.
-
Open the direct install link:
Your script manager will prompt you to confirm the install.
| Key | Action |
|---|---|
← Arrow Left |
Rewind 10 seconds |
→ Arrow Right |
Fast-forward 10 seconds |
Note
Shortcuts are suppressed when focus is inside a text field so they don't interfere with Hotstar's own inputs (e.g. search).
- Node.js ≥ 18
zipCLI (pre-installed on macOS and Linux; on Windows use WSL or Git Bash)
git clone https://github.com/ramvignesh-b/bbls.git
cd bbls
npm run buildAfter a successful build, dist/ will contain:
dist/
├── bbls.user.js # Tampermonkey / GreasyFork userscript
├── chrome.zip # Chrome extension (load unpacked via chrome://extensions)
└── firefox.zip # Firefox add-on (AMO / load temporary add-on)
- Run
npm run build. - Open
chrome://extensions→ enable Developer mode. - Click Load unpacked → select
dist/chrome/. - Navigate to
https://www.hotstar.com/in/video/live/watch/anything.
- Run
npm run build. - Open
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on → select
dist/firefox/manifest.json.
All pipelines are triggered by pushing a semver tag:
# Bump version in package.json and both manifests, then:
git tag v1.2.3
git push origin v1.2.3The release.yml workflow will:
- Build all artifacts.
- Create a GitHub Release with
bbls.user.js,chrome.zip, andfirefox.zipattached. - Sign and submit
firefox.zipto Firefox AMO (requiresAMO_JWT_ISSUER+AMO_JWT_SECRETsecrets). - Push
bbls.user.jsto thedistbranch so Tampermonkey users get automatic updates.
Note
chrome.zip is bundled in every release for users to install manually — see Option 1.
bbls/
├── .github/workflows/
│ ├── ci.yml # Build check on every push/PR
│ ├── release.yml # Orchestrate full release on v* tags
│ ├── firefox.yml # Firefox AMO (manual dispatch)
│ └── greasyfork.yml # GreasyFork dist-branch sync (manual dispatch)
├── src/
│ ├── core.js # Content script — the extension behaviour
│ ├── manifest.chrome.json # Manifest V3 for Chrome
│ └── manifest.firefox.json # Manifest V3 for Firefox (+ gecko settings)
├── icons/ # Icon set (16, 32, 48, 128 px)
├── screenshots/ # Store listing assets
├── scripts/
│ └── build.mjs # Zero-dependency Node build script
├── CHANGELOG.md
├── LICENSE
└── README.md
Bug reports and feature requests are welcome — please open an issue.
For code changes:
- Fork the repo and create a branch:
git checkout -b fix/my-fix - Make your changes in
src/core.js. - Run
npm run buildand verify the build succeeds. - Open a pull request — CI will validate the build automatically.
MIT © RamVignesh B
