Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,8 @@ $RECYCLE.BIN/
# Custom
# ==================================================
.idea
.wxt/
.output/
dist/
packages/
storage/
Expand Down
67 changes: 0 additions & 67 deletions app/manifest.json

This file was deleted.

54 changes: 0 additions & 54 deletions app/scripts/background.ts

This file was deleted.

96 changes: 0 additions & 96 deletions app/scripts/content.ts

This file was deleted.

17 changes: 0 additions & 17 deletions app/styles/content.css

This file was deleted.

56 changes: 56 additions & 0 deletions entrypoints/background.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
export default defineBackground(() => {
const injectContentToTab = async (tab: chrome.tabs.Tab): Promise<void> => {
// Skip if URL is undefined
if (!tab.url) {
return;
}

// Skip if tab is discarded
if (tab.discarded) {
return;
}

// Skip if tab ID is undefined
if (tab.id === undefined) {
return;
}

// Skip if not a GitHub URL
if (!tab.url.startsWith('https://github.com/')) {
return;
}

try {
const manifest = chrome.runtime.getManifest();

// Inject CSS
if (manifest.content_scripts?.[0]?.css) {
await chrome.scripting.insertCSS({
target: { tabId: tab.id },
files: manifest.content_scripts[0].css,
});
}

// Inject JavaScript
if (manifest.content_scripts?.[0]?.js) {
await chrome.scripting.executeScript({
target: { tabId: tab.id },
files: manifest.content_scripts[0].js,
});
}
} catch (error) {
console.error('Error injecting content script:', error);
}
};

// Inject content scripts to existing GitHub tabs when extension is installed/updated
chrome.tabs.query({ url: 'https://github.com/*' }, async (tabs: chrome.tabs.Tab[]) => {
for (const tab of tabs) {
try {
await injectContentToTab(tab);
} catch (e) {
console.error(e);
}
}
});
Comment on lines 2 to 55

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This script for programmatically injecting the content script appears to be a holdover from the previous build system and is likely redundant. Modern browsers automatically inject manifest-defined content scripts into existing, matching tabs upon extension installation or update.

Furthermore, the current implementation is brittle as it relies on the specific structure of the auto-generated manifest (manifest.content_scripts[0]).

Recommendation:

  1. Remove the logic inside defineBackground.
  2. Remove the "scripting" permission from wxt.config.ts as it will no longer be needed. This reduces the extension's permission footprint, which is a security best practice.
  // This logic has been removed as it is redundant.
  // Browsers automatically inject content scripts on install/update.
  // The "scripting" permission in `wxt.config.ts` should also be removed.

});
Loading
Loading