{"id":13484916,"url":"https://github.com/devidw/tabgod","last_synced_at":"2025-08-20T18:33:47.823Z","repository":{"id":221251627,"uuid":"753854706","full_name":"devidw/tabgod","owner":"devidw","description":"execute any javascript on any chromium tabs - cross-tab parallel execution","archived":false,"fork":false,"pushed_at":"2024-02-15T21:59:43.000Z","size":1940,"stargazers_count":157,"open_issues_count":0,"forks_count":8,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-10-18T21:04:30.879Z","etag":null,"topics":["browser-extension","chrome-devtools-extension","chrome-extension","devtool","devtools","devtools-extension","extension-chrome","tabs-management"],"latest_commit_sha":null,"homepage":"https://chromewebstore.google.com/detail/hllgifenolhiihoihflfghkfaefpjdbg","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devidw.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}},"created_at":"2024-02-06T23:03:08.000Z","updated_at":"2024-10-06T00:40:15.000Z","dependencies_parsed_at":"2024-10-31T16:58:25.883Z","dependency_job_id":"d68bfab1-16da-4e57-9494-e1c75608d78a","html_url":"https://github.com/devidw/tabgod","commit_stats":{"total_commits":12,"total_committers":2,"mean_commits":6.0,"dds":0.08333333333333337,"last_synced_commit":"0e3868606ebbb9bec1394e0ee64ef2717fdaa1ed"},"previous_names":["devidw/tabgod"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devidw%2Ftabgod","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devidw%2Ftabgod/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devidw%2Ftabgod/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devidw%2Ftabgod/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devidw","download_url":"https://codeload.github.com/devidw/tabgod/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230445927,"owners_count":18227060,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["browser-extension","chrome-devtools-extension","chrome-extension","devtool","devtools","devtools-extension","extension-chrome","tabs-management"],"created_at":"2024-07-31T17:01:38.749Z","updated_at":"2024-12-19T14:08:04.189Z","avatar_url":"https://github.com/devidw.png","language":"TypeScript","readme":"\u003ch1 align=\"center\"\u003e\n  \u003ca href=\"https://chromewebstore.google.com/detail/hllgifenolhiihoihflfghkfaefpjdbg\"\u003e\n    \u003cimg src=\"https://storage.googleapis.com/web-dev-uploads/image/WlD8wC6g8khYWPJUsQceQkhXSlv1/UV4C4ybeBTsZt43U4xis.png\" width=\"128\"\u003e\n    \u003cbr /\u003e\n    \u003cimg src=\"./tabgod.png\" width=\"128\" height=\"128\" /\u003e\n    \u003cbr /\u003e\n    tabgod\n  \u003c/a\u003e\n\u003c/h1\u003e\n\nexecute _any_ javascript on _any_ chromium tabs\n\n- adds options page with `tabgod()` function\n\n```ts\nasync function tabgod(\n  tabFilterFunc: (tab: chrome.tabs.Tab, ...args: unknown[]) =\u003e boolean,\n  exeFunc: (...args: unknown[]) =\u003e unknown,\n  options?: {\n    tabFilterArgs?: unknown[];\n    exeArgs?: unknown[];\n    evalAdd?: string;\n  },\n): Promise\u003c{ tabId: number; result: unknown }[]\u003e {\n  //\n}\n```\n\n## examples\n\nhaving chatgpt and pi talk to each other\n\nhttps://github.com/devidw/tabgod/assets/68775926/d103bf67-5ed6-4e34-bb96-7b35d42f9d2d\n\nsearching same query on multiple search engines\n\n![](./examples/search/demo.gif)\n\n## usage\n\n1. open extensions options page\n2. open devtools console\n3. use provided `tabgod()` function\n   1. choose execution targets by writing a filter function that will\n      include/excluce tabs based on defined criteria\n      - https://developer.chrome.com/docs/extensions/reference/api/tabs#type-Tab\n   2. write any js to execute in world of targeted tabs\n\n```js\ntabgod(\n  (tab) =\u003e tab.url.includes(\"example.org\"),\n  () =\u003e document.body.style.background = \"pink\",\n);\n```\n\n## notes on first release\n\n- initial idea was to make tabgod function available in all devtools consoles\n  for easy and direct access for developers right from every console\n- the implementation added tabgod to the global window object\n- however this introduced a serious security issue, since this has made the\n  function available to websites also, allowing them to interact with other tabs,\n  destroying the idea of secure tab origins\n- thanks to\n  [danielsmc pointing it out](https://github.com/devidw/tabgod/issues/1#issue-2124285330)\n- this has been immediately addressed by moving the function only to the options\n  page of the extension, and not accepting external connections in the service\n  worker\n","funding_links":[],"categories":["TypeScript","chrome-extension"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevidw%2Ftabgod","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevidw%2Ftabgod","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevidw%2Ftabgod/lists"}