A customizable new-tab page extension for Chromium and Firefox.
- Online demo: https://new-tab-gamma.vercel.app/
- Firefox Add-ons: https://addons.mozilla.org/zh-TW/firefox/addon/moranjianghe-s-new-tab/
- Multiple search engines support (Google, Bing, DuckDuckGo, etc.)
- Customizable favorite websites and folder groups
- Configurable via YAML file
- Cross-browser internal URL compatibility (keep
chrome://format in config)- Chromium: open
chrome://...directly - Firefox: map selected
chrome://...entries to extension pages and read data via extension APIs
- Chromium: open
- Refreshed design language with responsive layout and modal settings
- 3 locales:
zh-CN,zh-TW,en-US
The extension uses a YAML configuration file to manage search engines and favorite sites.
Example:
searchEngines:
- name: "Google"
url: "https://www.google.com/search?q=%s"
favoriteSites:
- name: "browser history"
url: "chrome://history/"
- name: "browser bookmarks"
url: "chrome://bookmarks/"
- name: "YouTube"
url: "https://www.youtube.com"- Keep
public/config.yamlin Chrome URL style (chrome://history/,chrome://bookmarks/). - Firefox blocks direct opening of many privileged
about:*pages from extension scripts. - To provide equivalent behavior, this project maps:
chrome://history/->firefox/history.html(useshistoryAPI)chrome://bookmarks/->firefox/bookmarks.html(usesbookmarksAPI)
- Required Firefox permissions:
tabs,history,bookmarks.
# Install dependencies
npm install
# Run dev server
npm run dev
# Build web app
npm run build
# Build Chromium extension package
npm run extension
# Build Firefox extension package
npm run extension:firefoxChromium:
- Run
npm run extension - Open extensions page and load unpacked
dist/
Firefox:
- Run
npm run extension:firefox - Open
about:debugging#/runtime/this-firefox - Click "Load Temporary Add-on..." and choose
dist/manifest.json
- This repo currently uses build output (
dist/) directly for local testing. - If you build for both browsers, the latest command overwrites
dist/.