ColorStation is a performance-first color picker extension for Microsoft Edge (Manifest V3).
It starts instantly from the toolbar, samples visible pixels using viewport capture, and provides a precision loupe workflow with persistent local history.
- Key Features
- How It Works
- Requirements
- Local Development
- How To Use
- Keyboard Shortcuts
- Options
- Troubleshooting
- Security and Limitations
- Project Structure
- Build and Package
- Microsoft Edge Add-ons Submission
- Publish to GitHub (Open Source)
- Scripts
- Privacy and Permissions
- License
- Direct action UX: click extension icon -> picker starts immediately (no popup gate).
- Precision overlay:
- reticle + loupe
- live HEX / RGB / HSL readout
- sampling modes
1x1,3x3,5x5,11x11,25x25
- Adaptive capture strategy:
- robust viewport sampling with
chrome.tabs.captureVisibleTab - adaptive recapture for moving surfaces (video/canvas/animated image targets)
- robust viewport sampling with
- Strong copy confirmation and post-pick actions (
Pick again,History,Exit). - Local-first storage (no telemetry, no external API calls).
- Persistent history limited to the latest 5 colors.
- User triggers picker from toolbar icon or command (
Alt+Shift+C). - Background worker ensures content script is present on the active tab.
- Content script enters pick mode and captures visible tab for sampling.
- Pointer movement updates reticle/loupe and reads pixel color from the latest capture buffer.
- On click, color is copied and saved to local history, then post-pick controls appear.
- Node.js 20+ (recommended)
- npm 10+
- Microsoft Edge (Chromium-based)
npm install
npm run typecheck
npm run buildLoad unpacked extension from:
dist/
- Click the ColorStation toolbar icon, or
- Press
Alt+Shift+C
The picker enters live mode immediately.
- Move cursor over any visible pixel.
- Use loupe preview for precision.
- Click once to confirm selection.
- Selected color is copied immediately (default format from options).
- A large
Color Copiedconfirmation appears.
After confirmation, use floating actions:
Pick again-> re-enter pick modeHistory-> open recent 5 colors, click a row to copyExit-> fully remove overlay and listeners
In pick mode:
Esc-> exitSpace-> cycle sampling modeG-> toggle pixel grid+/--> zoom loupe in/out
Global command (manifest command):
Alt+Shift+C-> start picker
Available in the extension options page:
- Default copy format (
HEX,RGB,HSL) - Default sampling size
- Default grid state
- Prefer native EyeDropper fallback
Open options page by either:
- right-clicking the extension icon ->
Extension options, or - opening
edge://extensions, selecting ColorStation, thenExtension options.
- Reload the extension in
edge://extensions. - Make sure you loaded the unpacked extension from
dist/.
- This is expected on restricted/protected contexts.
- Try regular web pages first, or use the native EyeDropper fallback if available.
- Re-run
npm run build. - Reload extension and hard-refresh the target tab.
- ColorStation does not bypass browser security boundaries.
- Some pages/surfaces may block capture (browser internal pages, protected/DRM surfaces, restricted contexts).
- On blocked contexts, the extension fails gracefully.
public/
manifest.json
icons/
src/
background/
service_worker.ts
content/
content_script.ts
options/
main.ts
style.css
shared/
constants.ts
storage.ts
types.ts
scripts/
generate-icons.mjs
Build production artifacts:
npm run buildOutput directory:
dist/
Create zip package for store upload:
cd dist
zip -r ../colorstation-edge.zip .
cd ..Checklist before upload:
- Run
npm run typecheckandnpm run build. - Verify extension works via unpacked load in Edge.
- Confirm
manifest.jsonis MV3 and permissions are minimal. - Ensure no remote code execution, no external scripts, no tracking.
- Upload
colorstation-edge.zipto Edge Add-ons Partner Center.
If this repo is not connected yet:
git init
git add .
git commit -m "feat: initial ColorStation release"
git branch -M main
git remote add origin https://github.com/<your-username>/<your-repo>.git
git push -u origin mainIf remote is already configured:
git add .
git commit -m "chore: refine release for Edge store"
git pushnpm run typecheck-> TypeScript validationnpm run build-> generate icons + production buildnpm run dev-> build in watch modenpm run clean-> removedist/
See: