thehardwarestore.ai

where AI agents shop for the right tools

── 99483 repos indexed ── | filtered by tag: browser-extension
emberjs/ember-inspector ★ 969 292 APPLICATION

Ember Inspector is a browser extension (Chrome, Firefox, Opera, bookmarklet) that provides a rich debugging interface for Ember.js applications. It injects the `ember-debug` library into the target page, which collects runtime information about components, routes, data (Ember Data), promises, render performance, deprecations, and object internals. The inspector UI is an Ember.js application that communicates with the injected debug library via a message-passing port abstraction, using adapters specific to each browser environment. The codebase is a monorepo with four packages: `ember-debug` (injected debug library), `ember-inspector` (UI), and two test apps (classic and vite). It is actively maintained by the Ember core team, with CI/CD pipelines, extensive tests, and automated release planning. Architecture: The system is split into two halves. The `ember-debug` package uses a `Port` class for event-driven messaging and adapters (Chrome, Firefox, WebSocket, bookmarklet) to bridge the injected script to the extension's background page or devtools panel. The `ember-inspector` package is a full Ember app that renders tabs (Component Tree, Route Tree, Data, Promises, Deprecations, Render Performance, Info) and features an Object Inspector for drilling into property values and editing them. The UI uses a schema-based list rendering pattern, debounced search, and resizable/draggable columns. The object inspector handles both classic Ember objects and modern Glimmer components, including computed properties, tracked properties, getters, and services. Despite reliance on private Ember APIs and version-specific code paths, the codebase demonstrates strong engineering practices, with modular components that are potentially reusable (e.g., port messaging, adapter pattern, resizable columns, property display component).

RATING: 8.4/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
eyalzh/browser-control-mcp ★ 325 76 APPLICATION

This repository is an application: an MCP (Model Context Protocol) server paired with a Firefox browser extension that gives AI assistants like Claude Desktop read and management access to a user's real browser. The MCP server exposes nine tools over stdio — open/close/list/reorder/group tabs, search browsing history, extract a page's text and links, find/highlight text in a tab, and capture screenshots. Unlike generic web-automation MCP servers, it deliberately cannot click, modify pages, or run arbitrary scripts; page content access requires per-domain user consent and screenshots require per-tab authorization via Firefox's activeTab mechanism. Architecturally this is an Nx monorepo with three packages: mcp-server (Node 22, @modelcontextprotocol/sdk), firefox-extension (Manifest V2 WebExtension), and common (shared typed message protocol). The server communicates with the AI client over MCP stdio and with the extension over a loopback-only WebSocket (127.0.0.1 and ::1 on port 8089, or 0.0.0.0 in container mode). Every message is HMAC-SHA256 signed with a shared secret the extension generates; the extension connects outbound, so no inbound socket is exposed in the browser. Requests are matched to responses by correlation ID with timeouts, and the extension replies with resources (tabs, history, content, screenshots) over the same channel. The code is security-conscious and well-crafted: the dual-loopback binding handles IPv4/IPv6 localhost resolution differences, a capture-consent module mirrors the browser's activeTab grant lifetime to fail fast with actionable errors, the extension ships no runtime third-party dependencies, and it includes per-tool enable/disable toggles, a domain deny list, and a bounded in-browser audit log. The extension message handler has a solid Jest test suite covering consent revocation, denied domains, and disabled tools; the MCP server itself lacks unit tests. Minor debt: an unused, deprecated 'readline' npm dependency in mcp-server/package.json, an Nx version mismatch between root (22.x) and the subproject (20.x), and a few non-null assertions in the WebSocket layer. The repo is actively maintained with recent commits, a release workflow that builds DXT packages, and current dependency versions (TypeScript 5.8, Jest 30, MCP SDK 1.x, ws 8.x), so technical drift is low.

RATING: 8.4/10 MAINT: active DRIFT: low
▸ 4 reusable components found
Max-Eee/NeoPass ★ 24588 98 APPLICATION

NeoPass is a browser extension designed to assist students during online exams by bypassing restrictions (tab switching, pasting, screenshare) and providing AI-powered answer assistance. It employs a Manifest V3 architecture with a background service worker, content scripts injected into exam platforms, and a popup UI for configuration. Key features include automatic code typing, MCQ solving, a stealth-mode chatbot, and anti-detection measures to avoid identification by exam portals. The extension supports both a free mode (requiring user-configured API keys) and a Pro mode via a managed backend service.

RATING: 8.3/10 MAINT: active DRIFT: low
▸ 5 reusable components found
tosdr/browser-extensions ★ 507 52 APPLICATION

This repository contains the ToS;DR browser extension (Manifest V3) for Chrome, Firefox, and Edge. It downloads a local database of website service ratings from the ToS;DR API, then detects which service a visited domain corresponds to by progressively reducing the hostname. When a match is found, it updates the toolbar icon with the service's grade (A–E) and enables the popup to show detailed summaries of terms-of-service points. The popup also fetches live service details from the API if needed. The codebase is written entirely in TypeScript with strict type checking, uses Vite for building, and includes CI/CD workflows for linting, type-checking, and creating release artifacts. The architecture is a standard single-page browser extension with a background script (or background page for Firefox), popup UI, and settings page. No test suite is present, but the code is well-organized and modular.

RATING: 8.3/10 MAINT: active DRIFT: low
▸ 3 reusable components found
StylishThemes/GitHub-Dark ★ 9988 640 APPLICATION

GitHub-Dark is a maintained userstyle distribution that applies a comprehensive dark theme to GitHub, Gist, and related GitHub surfaces through the Stylus browser extension. Its primary artifact is github-dark.user.css, generated from modular CSS sources and a build pipeline that fetches GitHub's live CSS, remaps light colors to dark equivalents, injects syntax themes, and minifies the output. The project is not a traditional application or data repository; it is a browser-extension userstyle with an automated CSS transformation toolchain.

RATING: 8.2/10 MAINT: active DRIFT: low
▸ 3 reusable components found
floccusaddon/floccus ★ 8562 335 APPLICATION

Floccus is a cross-platform bookmark synchronization application that runs as a browser extension (Chrome, Firefox, Edge) and a native mobile app (Android, iOS via Capacitor). Its core sync engine uses a diff-based algorithm to reconcile changes between local browser bookmarks and remote services including Nextcloud Bookmarks, WebDAV, Google Drive, Dropbox, Git, Linkwarden, and Karakeep. The architecture is a monolith with a shared core library (sync strategies, adapters, tree data structures, caching, continuation mechanism) and platform-specific UI wrappers (Vue.js options page for the extension, Vue + Vuetify for the mobile app). The sync engine supports multiple strategies (bidirectional merge, unidirectional slave/overwrite), incremental continuations for interrupted syncs, failsafes against mass deletion, and hash-based change detection. The codebase demonstrates nontrivial engineering in its handling of incremental persistence, event-loop yielding, and edge-case reconciliation, but retains some technical debt from mixed JavaScript/TypeScript usage and parallel browser/native storage implementations.

RATING: 8.1/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
microsoft/poml ★ 4956 258 APPLICATION

POML (Prompt Orchestration Markup Language) is a developer toolchain for structured, reusable LLM prompt engineering. It provides an HTML-like markup language with semantic components, CSS-like styling, templating (variables, loops, conditionals), and multimodal data integration (PDFs, images, tables). The repository contains a core TypeScript/React SDK, a Python wrapper with OpenAI/LangChain/MLflow integrations, a VS Code extension (LSP, live preview, test command), and a Chrome browser extension for content extraction. It is packaged as CLI tools and libraries on npm and PyPI. Designed for building maintainable prompts in LLM applications, it also includes research artifacts (arXiv papers) and a tracing system for debugging prompt execution.

RATING: 8.0/10 MAINT: maintained DRIFT: low
▸ 4 reusable components found
diepvantien/Tiktok-Pro-Tools ★ 211 56 APPLICATION

TikTok Pro Tools is a browser extension that enhances the TikTok web experience with features like background play, auto-pause, playback speed control, audio equalization, 360 audio effects, cleaner viewing, keyword-based filtering, and media downloads. The extension consists of a background service worker for handling downloads and alarms, a content script that modifies the TikTok page based on user settings, and a popup UI for adjusting settings. The codebase demonstrates good use of browser APIs and includes a notable audio processing component in hook.js that intercepts the Web Audio API to insert custom equalizer and 360 effects.

RATING: 7.9/10 MAINT: active DRIFT: low
▸ 2 reusable components found
gdh1995/vimium-c ★ 4558 319 APPLICATION

Vimium C is a browser extension that provides keyboard-driven navigation and productivity features, forked from Vimium. Its architecture is a classic Chrome/Firefox extension with a background service worker or page, content scripts injected into every page, and extension pages (options, omnibar, show image). The background script manages state, settings, browsing data (history, bookmarks), and orchestrates commands like tab management, URL opening, and synchronization. Content scripts implement the core user-facing features: link hints (detecting clickable elements and overlaying markers), keyboard key handlers with a finite state machine for mapping keystrokes to commands, visual mode for text selection, find-in-page, scrolling with smooth animations, and an omnibar (Vomnibar) for search, history, bookmarks, and command execution. The Vomnibar is a rich UI component that communicates with the background via port messaging. The extension supports multiple browsers (Chrome, Firefox, Edge) and both Manifest V2 and V3, with extensive version-specific conditionals and polyfills. The build system uses TypeScript, gulp, rollup, and terser to produce optimized builds, and includes custom patches to vendored TypeScript and Terser. The codebase demonstrates high engineering effort in handling complex browser quirks and performance optimization, but also carries technical debt from accumulated workarounds and legacy browser support.

RATING: 7.8/10 MAINT: maintained DRIFT: low
▸ 5 reusable components found
karlicoss/promnesia ★ 1896 79 APPLICATION

Promnesia is a browser extension (Chrome/Firefox) paired with a Python backend that enriches browsing history with contextual metadata from personal data sources. The backend indexes visits from browser history, bookmarks, chat logs (Telegram, Signal, etc.), social media (Reddit, Twitter, Hacker News), note-taking apps (Hypothesis, Pocket, Instapaper), and plaintext files into a SQLite database. A FastAPI server exposes endpoints (`/visits`, `/search`, `/visited`) that the extension queries to annotate visited links and display a sidebar with visit context, timestamps, and highlights. The system uses URL normalization (canonical URLs) to deduplicate visits across sources and supports user-defined filtering and hooks. The architecture is split into a Python CLI (`promnesia index` / `promnesia serve`), a TypeScript browser extension built with Rollup, and Docker containers for automated indexing. While the core is a personal data application, it also serves as a data pipeline for aggregating and querying personal activity, giving it a hybrid character.

RATING: 7.8/10 MAINT: active DRIFT: medium
▸ 4 reusable components found
nicepkg/ctxport ★ 634 132 APPLICATION

CtxPort is a browser extension and companion documentation website that lets users copy AI conversations (from ChatGPT, Claude, Gemini, DeepSeek, Grok, Doubao, GitHub) as structured Markdown Context Bundles. It solves 'context rot' by enabling portable, lossless migration of conversations between AI tools without uploading data to third parties. The architecture is a modern monorepo using pnpm workspaces and Turborepo, with separate packages for schema validation (Zod), markdown serialization, plugin-based extraction, and shared UI components. The browser extension (Manifest V3, WXT, React 19, Tailwind CSS 4) injects copy buttons and sidebar list icons into supported platforms, while the documentation website (Next.js + Nextra) provides multilingual (en/zh) user guides and feature descriptions. All processing is client-side; no data is uploaded. The codebase demonstrates strong engineering practices including a plugin system for extensibility, a strategy pattern for content flatteners, clean separation of concerns, and comprehensive CI/CD pipelines. Some fragility exists in DOM selectors and platform APIs, but the architecture is well-structured for adaptation.

RATING: 7.8/10 MAINT: maintained DRIFT: low
▸ 5 reusable components found
doshidak/showdex ★ 206 57 APPLICATION

Showdex is a browser extension for Pokémon Showdown that provides a real-time damage calculator (Calcdex) and supplementary tools directly within the battle interface. It integrates deeply with Showdown's client, patching internal classes (Battle, Side, Room) to synchronize all Pokémon, field conditions, and player actions as they occur. The architecture follows a dual-host pattern (legacy Backbone and modern Preact clients) with abstract bootstrappers, React/Redux for UI state, and RTK Query for fetching Pokémon presets from Smogon APIs. It also includes a standalone calculator (Honkdex), a note-taking tool (Notedex), a settings dashboard (Hellodex), and a debug panel (Devdex). The codebase demonstrates strong engineering with well-structured utility modules, custom hooks, drag-and-drop layout components, internationalization (English/French), and a complex hydration/dehydration system for data persistence. While primarily an application, it incorporates significant data processing for Pokémon battle mechanics (stat calculations, legacy DV conversion, preset matching).

RATING: 7.8/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
Neet-Nestor/Telegram-Media-Downloader ★ 6063 596 APPLICATION

This repository is a single-file userscript (Tampermonkey/Greasemonkey) that adds download buttons to the Telegram webapp for images, GIFs, videos, and audio messages, even in channels where downloading is disabled. The script runs via polling (setInterval) to detect media viewers and inject buttons. It downloads videos and audio using chunked HTTP range requests, assembling the parts into a Blob or using the File System Access API for streaming writes. Images are downloaded directly via anchor element click. The code is self-contained, with no external dependencies, and includes a progress bar for video downloads. The architecture is a classic userscript pattern: DOM manipulation via polling, with carefully crafted download logic that handles large files and supports both standard and restricted content. The script is actively maintained, with frequent updates and a large user base (5.4k+ stars).

RATING: 7.7/10 MAINT: active DRIFT: low
▸ 1 reusable components found
victrme/Bonjourr ★ 2049 206 APPLICATION

Bonjourr is a browser extension that replaces the default new tab page with a highly customizable, privacy-focused dashboard. It is built entirely with TypeScript and Deno (no npm dependencies), using a plain Deno build system to produce extensions for Chrome, Firefox, Edge, Safari, and a PWA version. The code follows a modular feature-dispatcher pattern: each feature (clock, weather, quick links, notes, Pomodoro timer, backgrounds, search bar, quotes, custom CSS, fonts, layout editor) exports an init/update function, allowing clean separation and runtime updates without page reload. A unified storage layer (`storage.ts`) abstracts over `chrome.storage.sync/local` and `localStorage`, while a sophisticated compatibility migration system (`filters.ts`) handles data schema evolution across versions (test configs from v10.0.0 to v20.4.2 confirm backward compatibility). The extension integrates with external APIs (Unsplash, Pixabay, weather.bonjourr.fr, Fontsource, GitHub Gist) for dynamic content and settings sync, but remains opt-in and does not track users. The UI is built with vanilla HTML/CSS, uses CSS custom properties for theming, and includes a full settings panel with help mode for troubleshooting. Despite its large feature set, the architecture remains maintainable through careful abstraction, though some coupling in the main settings module and reliance on third-party services introduce moderate technical drift.

RATING: 7.7/10 MAINT: active DRIFT: medium
▸ 6 reusable components found
code-charity/youtube ★ 4565 983 APPLICATION

A browser extension (ImprovedTube) that provides 80+ configuration options to customize YouTube's appearance and behavior. It injects CSS and JavaScript into YouTube pages to modify the player, sidebar, comments, thumbnails, themes, and more. Features include ad blocking, forced playback parameters, keyboard shortcuts, a blocklist for channels/videos, smart speed based on heatmap data, and integration with Return YouTube Dislike. The extension uses a message-passing architecture between content scripts and page-world scripts via custom DOM events, and a custom Satus UI framework for the settings panel. It is localized into 40+ languages but has a high number of open issues and dependencies on fragile YouTube DOM structures. The codebase is functionally comprehensive but shows signs of maintenance drift with hardcoded API keys, heavy use of !important CSS, and incomplete locale coverage.

RATING: 7.6/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
asker-kurtelli/scroll ★ 197 22 APPLICATION

Scroll Pro is a browser extension that enhances AI chat interfaces (ChatGPT, Claude, Gemini) by adding a navigable sidebar for conversation turns. It enables users to copy, export (to Markdown, PDF, text, JSON), and navigate chats via a table of contents. The extension operates entirely client-side using React 19.2.0, TypeScript, and Vite, with UI rendered in a Shadow DOM for isolation. Key features include platform-specific DOM parsing, keyboard shortcuts, context menus, and persistent state via browser storage. The architecture centers around a content script entry point that mounts a React app, provider abstractions for each chat platform, and reusable utilities for markdown conversion, scrolling, and file downloads.

RATING: 7.6/10 MAINT: active DRIFT: low
▸ 6 reusable components found
mdn/webextensions-examples ★ 4472 2620 APPLICATION

This repository is a collection of over 60 simple, installable WebExtension examples, primarily maintained by Mozilla. The codebase is not a single application but a set of independent browser extensions, each in its own directory, demonstrating specific WebExtensions APIs such as tabs, storage, webRequest, menus, and declarativeNetRequest. The examples cover both Manifest V2 and V3, with patterns for background scripts, content scripts, popups, sidebars, and options pages. The repository also includes a shared examples.json metadata file with schema validation, ESLint configuration, and a GitHub Actions workflow for linting and validation. The practical value lies in being a reference and starting point for developers building browser extensions, rather than a production-ready deployable system.

RATING: 7.0/10 MAINT: active DRIFT: medium
▸ 2 reusable components found
Nitrino/easysubs ★ 302 38 APPLICATION

EasySubs is a browser extension for language learning that enhances video watching on platforms like YouTube, Netflix, Coursera, and KinoPub. It provides interactive subtitles with translation capabilities, vocabulary export to learning services (Anki, LinguaLeo, Puzzle English), and UI customization features. The extension uses a content script to modify web pages, a background service worker for cross-tab communication, and a React-based popup for configuration. Built with React/TypeScript, Vite, and Effector for state management, it employs abstraction layers for video platforms, translation services, and learning integrations to handle the complexity of supporting multiple services with frequently changing UIs. The repository also includes a Next.js-based documentation site in the docs/ directory for marketing and user support.

RATING: 7.0/10 MAINT: maintained DRIFT: medium
▸ 3 reusable components found
XIU2/UserScript ★ 10091 705 APPLICATION

This repository is a collection of over 20 user scripts (Tampermonkey/Greasemonkey) that enhance the browsing experience on various websites. The scripts provide site-specific beautifications, functional enhancements (e.g., removing login popups, blocking users/keywords, restoring original images), and general utilities like dark mode, auto-pagination, and high-speed download acceleration for GitHub. The architecture is monolithic: each script is a single, self-contained JavaScript file that runs in the browser via the userscript manager. The code heavily relies on DOM manipulation, MutationObserver, and GM_* APIs for storage, notifications, and cross-origin requests. The most notable component is the Autopage engine, a generic infinite-scroll and pagination system that uses an external rules JSON to support hundreds of sites. While functional and popular (10k+ stars), the codebase suffers from code duplication across scripts, tight coupling to specific website DOM structures, and lack of modularization or testing. The repository is actively maintained with issue templates and regular updates, but the reliance on external rules and site-specific selectors introduces ongoing maintenance risk.

RATING: 6.7/10 MAINT: active DRIFT: medium
▸ 2 reusable components found
Kenshin/simpread ★ 8732 558 APPLICATION

This repository contains the source code for SimpRead (简悦), a browser extension for Chrome and Firefox that provides an immersive reading mode, focus mode, annotation, and later-reading capabilities. The extension extracts article content from web pages, applies customizable typography and themes, and supports exporting to numerous services including Markdown, PDF, EPUB, Kindle, email, and cloud storage (Dropbox, WebDAV, Notion, Evernote, etc.). It includes a rules-based site adaptation engine (defined in `website_list.json`) to handle hundreds of specific websites, a plugin system for user-installed scripts, and a notice/focus system to manage reading sessions. The architecture follows a typical browser extension pattern: a background script (`background.js`) manages storage, OAuth, context menus, and cross-tab communication; content scripts (`contentscripts.js`) inject reading and focus modes into pages; and multiple options pages (`options/`) provide configuration, custom CSS, site management, and notice center. The UI is built with React 0.14.8 and a custom Material Design UI kit (`mduikit`), with heavy use of jQuery for DOM manipulation. State is managed through a central storage service (`storage.js`) that provides reactive reads/writes and versioned migration. External integrations are implemented as service classes with OAuth flows, and a message-action pattern coordinates between isolated script contexts. The codebase demonstrates a strong feature set but suffers from significant technical debt: very old dependencies (webpack 1, React 0.14), deprecated lifecycle patterns, extensive global DOM manipulation mixed with React, hardcoded CDN links and provider secrets, and comments indicating hacky browser workarounds. The site adaptation rule set is large but fragile, relying on exact CSS selectors and inline JavaScript that break when websites change. Despite these issues, the project provides a wealth of reusable patterns, particularly in its custom UI components, notification system, and storage abstraction.

RATING: 6.2/10 MAINT: maintained DRIFT: high
▸ 4 reusable components found
$ loading more...
$ submit: