- Open Chrome and go to
chrome://extensions. - Turn on
Developer mode. - Click
Load unpacked. - Select the cloned
rudolphrepository folder. - Open a new tab. Chrome should load Rudolph as the new-tab page.
After editing files, return to chrome://extensions and click the reload button on the Rudolph extension card, then open a new tab again.
Rudolph is a customizable Chrome new-tab dashboard for tracking market symbols. It shows live quote data, after-hours movement, and draggable chart widgets for intraday, monthly, yearly, and all-time views.
The dashboard stores layout, selected symbols, hidden widgets, theme, and appearance preferences locally in the browser. It does not require a backend service.
- Live stock watchlist with search and removable tracked symbols.
- Default fresh-install watchlist using broad popular market symbols.
- Header quote summary with regular and extended-hours prices.
- Draggable and resizable Gridstack dashboard widgets.
- Chart.js visualizations for hour, day, month, year, and all-time ranges.
- Theme families for Samsung OneUI, Apple Liquid Glass, Cisco Momentum, Windows Fluent, Google Material, and IBM Carbon.
- Independent appearance mode:
Auto,Light, orDark. - Auto appearance follows Chrome/system color settings where supported.
Stock data is fetched directly from Yahoo Finance endpoints declared in manifest.json:
"host_permissions": [
"https://query1.finance.yahoo.com/*"
]The app includes graceful fallback behavior for chart and quote loading, and shows placeholders while data is still loading.
This project is plain HTML, CSS, and JavaScript. There is no build step required for normal extension development.
Useful checks:
node --test test/extended-hours.test.js
node --test test/package-release.test.js
node --check js/app.jsUseful local preview:
python3 -m http.server 8765Then open:
http://127.0.0.1:8765/index.html
The extension entrypoint is newtab.html; index.html is useful for local browser preview.
Semantic version tracking lives in VERSION, and manifest.json must use the same version.
Create the Chrome extension package:
./package.shThis creates one installable extension zip in dist/, with manifest.json at the zip root:
dist/Rudolph-<version>-chrome-extension.zip
Create a signed semantic version tag and publish a GitHub release:
GITHUB_TOKEN=... ./release.shThe release script:
- Reads
VERSION. - Requires
manifest.jsonto matchVERSION. - Creates a signed tag named
v<VERSION>. - Pushes the tag to
origin. - Packages the extension.
- Creates a GitHub release with generated release notes.
- Uploads the single extension zip as the release asset.
Preview without creating tags or releases:
./release.sh --dry-runThis repository is intended to be public and personal. Avoid company-specific defaults, private links, private logic, or personally identifiable information in committed source.