{"id":51675722,"url":"https://github.com/jamditis/link-sweepr","last_synced_at":"2026-07-15T05:33:39.501Z","repository":{"id":368904324,"uuid":"1287261559","full_name":"jamditis/link-sweepr","owner":"jamditis","description":"Keep chosen domains out of your Microsoft Edge and Google Chrome browsing history. Manifest V3, local-only, nothing leaves your device.","archived":false,"fork":false,"pushed_at":"2026-07-02T21:36:13.000Z","size":60,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-02T23:23:47.145Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jamditis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-07-02T14:22:23.000Z","updated_at":"2026-07-02T21:36:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jamditis/link-sweepr","commit_stats":null,"previous_names":["jamditis/history-domain-filter","jamditis/link-sweepr"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/jamditis/link-sweepr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamditis%2Flink-sweepr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamditis%2Flink-sweepr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamditis%2Flink-sweepr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamditis%2Flink-sweepr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jamditis","download_url":"https://codeload.github.com/jamditis/link-sweepr/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamditis%2Flink-sweepr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35493169,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-15T02:00:06.706Z","response_time":131,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-15T05:33:38.739Z","updated_at":"2026-07-15T05:33:39.486Z","avatar_url":"https://github.com/jamditis.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/wordmark.png\" alt=\"LinkSweepr\" width=\"480\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Keep chosen domains out of your browsing history, automatically, on-device.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://chrome.google.com/webstore/detail/flebgmilmmjcmkdkkemacmgkbcoholok\"\u003e\u003cimg src=\"https://img.shields.io/chrome-web-store/v/flebgmilmmjcmkdkkemacmgkbcoholok?label=Chrome%20Web%20Store\" alt=\"Chrome Web Store\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/jamditis/link-sweepr/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/jamditis/link-sweepr/ci.yml?branch=main\u0026label=CI\" alt=\"CI status\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/jamditis/link-sweepr\" alt=\"License: MIT\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/jamditis/link-sweepr/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/jamditis/link-sweepr?sort=semver\u0026display_name=tag\" alt=\"Latest release\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# LinkSweepr\n\nA Microsoft Edge and Google Chrome extension (Manifest V3). You list the domains;\nLinkSweepr removes each visit to those domains, all their subdomains, and every\npath under them from history the moment it is recorded. The sites keep working\nnormally and you stay signed in - they just leave no trail in the history page or\nthe address bar. Everything runs locally, and nothing is ever sent anywhere.\n\n## Get it\n\nLinkSweepr is live on the [Chrome Web Store](https://chrome.google.com/webstore/detail/flebgmilmmjcmkdkkemacmgkbcoholok).\nIt installs on both Google Chrome and Microsoft Edge, since Edge adds Chrome Web Store extensions directly. You can\nalso [install it from source](#install-for-development).\n\nProject site and full guide: \u003chttps://jamditis.github.io/link-sweepr/\u003e\n\n## How it works\n\n- Reads a domain list you edit on the options page, stored locally in\n  `chrome.storage.local`.\n- On each visit to a matching domain, deletes that entry from history, including\n  same-page navigations inside single-page apps.\n- On install, on browser startup, on a periodic alarm, and whenever you change\n  the list, sweeps existing history for matches and removes them.\n\n## Managing the list\n\n- **Options page** - one domain per line. A live preview shows the distinct\n  domains that will be filtered and flags any line that does not resolve to a\n  domain. Changes save automatically. You can export the list to a text file and\n  import one back to move it between machines.\n- **Toolbar popup** - click the toolbar icon to see how many domains are\n  filtered and block the current site in one click. Blocking a site adds its\n  domain to the list; the current page is left alone for internal pages like\n  `chrome://` or `edge://`, which cannot be filtered.\n\n## Privacy\n\nEverything runs locally. LinkSweepr does not transmit, sync, or share any\nbrowsing data with any server or third party. Its only stored data is the domain\nlist you enter, held in your browser's local extension storage. The full policy\nis at \u003chttps://jamditis.github.io/link-sweepr/privacy.html\u003e.\n\n## Install for development\n\n1. Open `edge://extensions` or `chrome://extensions`.\n2. Turn on Developer mode.\n3. Choose Load unpacked, and select this folder.\n4. Open the extension's options and add domains, one per line.\n\n## Development\n\n- Zero build step for the extension: plain Manifest V3, no bundler and no runtime\n  dependencies.\n- Domain normalization, matching, and the list operations that back the options\n  preview and the popup live in one shared module, `domain.js`, so the preview\n  and the block action agree with what the sweep actually does. The service\n  worker pulls it in with `importScripts`; the pages load it with a `\u003cscript\u003e`\n  tag; the tests require it directly.\n- Icons are generated into the PNG sizes the manifest references: 16 and 32 from\n  `icons/mark.svg` (a simplified broom-and-link mark that stays legible at\n  toolbar sizes), 48 and 128 from `icons/linksweepr.png` (the full logo, its\n  white background flood-filled to transparent). Regenerate them with\n  `npm run icons` after editing a source (needs the dev-only `sharp` dependency;\n  the committed PNGs mean CI does not run this).\n- Unit tests: `npm test` (Node's test runner with a `chrome.history` mock).\n- Package for the stores: `npm run package` assembles the extension into\n  `dist/ext` and writes `dist/link-sweepr-\u003cversion\u003e.zip`.\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for the development guide and\n[SECURITY.md](SECURITY.md) for reporting a vulnerability.\n\n## Status\n\nLive on the Chrome Web Store, which installs on both Google Chrome and Microsoft\nEdge. Changes are tracked in [CHANGELOG.md](CHANGELOG.md).\n\n## License\n\n[MIT](LICENSE) (c) 2026 Joe Amditis.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamditis%2Flink-sweepr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjamditis%2Flink-sweepr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamditis%2Flink-sweepr/lists"}