Skip to content
Open
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
27 changes: 27 additions & 0 deletions browserExtensions/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Use Ubuntu 22.04 base
FROM ubuntu:22.04

# Install bash explicitly (Ubuntu images usually have it, but to be safe)
RUN apt-get update && apt-get install -y bash

# Create the Firefox extension folder
RUN mkdir -p ~/snap/firefox/common/.mozilla/firefox/gw5l1ir8.default/

# Create the Microsoft Edge extension folder
RUN mkdir -p ~/.config/microsoft-edge/Default/

# App for putting scalibr binary inside the container
RUN mkdir -p /app

# Copy local Firefox extension files into the container
COPY extensionFiles/firefox/ /root/snap/firefox/common/.mozilla/firefox/gw5l1ir8.default/extensions/

# Copy local Firefox extension files into the container
COPY extensionFiles/edge/ /root/.config/microsoft-edge/Default/Extensions/

# Set working directory (optional)
WORKDIR /app

# Default command: start bash so the container stays alive interactively
CMD ["/bin/bash"]

10 changes: 10 additions & 0 deletions browserExtensions/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# OSV-Scalibr: Browser Extractor

This directory contains the test Dockerfile for testing OSV-Scalibr Browser Extractor plugin. It is the enhancement for the existing plugin to support Microsoft Edge and Mozilla Firefox extensions.

## Setup

```sh
docker build -t browser-extensions-test .
docker run -it --rm -v $(pwd):/app browser-extensions-test (to put scalibr binary inside the container)
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
{
"action": {
"default_icon": "src/icon/toolbar/icon32.png",
"default_popup": "src/popup.html",
"default_title": "Grammarly"
},
"background": {
"service_worker": "sw.js"
},
"content_scripts": [ {
"all_frames": true,
"css": [ "src/css/Grammarly-fonts.styles.css" ],
"exclude_globs": [ "*docs.google.com*" ],
"exclude_matches": [ "*://outlook.live.com/*", "*://*.outlook.live.com/*", "*://outlook.office.com/*", "*://*.outlook.office.com/*", "*://*.atlassian.net/*", "*://mail.google.com/*", "*://*.mail.google.com/*", "*://quora.com/*", "*://*.quora.com/*", "*://*.slack.com/*", "*://*.blackboard.com/*", "*://*.blogger.com/*", "*://publish.buffer.com/*", "*://*.publish.buffer.com/*", "*://facebook.com/*", "*://*.facebook.com/*", "*://calendar.google.com/*", "*://*.calendar.google.com/*", "*://keep.google.com/*", "*://*.keep.google.com/*", "*://intercom.io/*", "*://*.intercom.io/*", "*://linkedin.com/*", "*://*.linkedin.com/*", "*://medium.com/*", "*://*.medium.com/*", "*://messenger.com/*", "*://*.messenger.com/*", "*://teams.microsoft.com/*", "*://*.teams.microsoft.com/*", "*://translate.google.com/*", "*://*.translate.google.com/*", "*://reddit.com/*", "*://*.reddit.com/*", "*://youtube.com/*", "*://*.youtube.com/*", "*://twitter.com/*", "*://*.twitter.com/*", "*://x.com/*", "*://*.x.com/*", "*://*.lightning.force.com/*", "*://trello.com/*", "*://*.trello.com/*", "*://upwork.com/*", "*://*.upwork.com/*", "*://web.whatsapp.com/*", "*://*.web.whatsapp.com/*", "*://wix.com/*", "*://*.wix.com/*", "*://wordpress.com/*", "*://*.wordpress.com/*", "*://*.zendesk.com/*", "*://wattpad.com/*", "*://*.wattpad.com/*", "*://onlinechatdashboard.com/*", "*://*.onlinechatdashboard.com/*", "*://wordcounter.net/*", "*://*.wordcounter.net/*", "*://fiverr.com/*", "*://*.fiverr.com/*", "*://educationperfect.com/*", "*://*.educationperfect.com/*", "*://apclassroom.collegeboard.org/*", "*://*.apclassroom.collegeboard.org/*", "*://studio.youtube.com/*", "*://*.studio.youtube.com/*", "*://chat.google.com/*", "*://*.chat.google.com/*", "*://twitch.tv/*", "*://*.twitch.tv/*", "*://papago.naver.com/*", "*://*.papago.naver.com/*", "*://readworks.org/*", "*://*.readworks.org/*", "*://app.nearpod.com/*", "*://*.app.nearpod.com/*", "*://mail.aol.com/*", "*://*.mail.aol.com/*", "*://github.com/*", "*://*.github.com/*", "*://coursera.org/*", "*://*.coursera.org/*", "*://commonlit.org/*", "*://*.commonlit.org/*", "*://classroom.google.com/*", "*://*.classroom.google.com/*", "*://app.seesaw.me/*", "*://*.app.seesaw.me/*", "*://forms.office.com/*", "*://*.forms.office.com/*", "*://docs.google.com/document/*" ],
"js": [ "src/js/Grammarly-check.styles.js", "src/js/Grammarly-check.js" ],
"match_about_blank": true,
"matches": [ "\u003Call_urls>" ],
"run_at": "document_idle"
}, {
"all_frames": true,
"css": [ "src/css/Grammarly-fonts.styles.css" ],
"exclude_globs": [ "*docs.google.com*" ],
"js": [ "src/js/Grammarly.styles.js", "src/js/Grammarly.js" ],
"match_about_blank": true,
"matches": [ "*://*.atlassian.net/*", "*://mail.google.com/*", "*://*.mail.google.com/*", "*://quora.com/*", "*://*.quora.com/*", "*://*.slack.com/*", "*://*.blackboard.com/*", "*://*.blogger.com/*", "*://publish.buffer.com/*", "*://*.publish.buffer.com/*", "*://facebook.com/*", "*://*.facebook.com/*", "*://calendar.google.com/*", "*://*.calendar.google.com/*", "*://keep.google.com/*", "*://*.keep.google.com/*", "*://intercom.io/*", "*://*.intercom.io/*", "*://linkedin.com/*", "*://*.linkedin.com/*", "*://medium.com/*", "*://*.medium.com/*", "*://messenger.com/*", "*://*.messenger.com/*", "*://teams.microsoft.com/*", "*://*.teams.microsoft.com/*", "*://translate.google.com/*", "*://*.translate.google.com/*", "*://reddit.com/*", "*://*.reddit.com/*", "*://youtube.com/*", "*://*.youtube.com/*", "*://twitter.com/*", "*://*.twitter.com/*", "*://x.com/*", "*://*.x.com/*", "*://*.lightning.force.com/*", "*://trello.com/*", "*://*.trello.com/*", "*://upwork.com/*", "*://*.upwork.com/*", "*://web.whatsapp.com/*", "*://*.web.whatsapp.com/*", "*://wix.com/*", "*://*.wix.com/*", "*://wordpress.com/*", "*://*.wordpress.com/*", "*://*.zendesk.com/*", "*://wattpad.com/*", "*://*.wattpad.com/*", "*://onlinechatdashboard.com/*", "*://*.onlinechatdashboard.com/*", "*://wordcounter.net/*", "*://*.wordcounter.net/*", "*://fiverr.com/*", "*://*.fiverr.com/*", "*://educationperfect.com/*", "*://*.educationperfect.com/*", "*://apclassroom.collegeboard.org/*", "*://*.apclassroom.collegeboard.org/*", "*://studio.youtube.com/*", "*://*.studio.youtube.com/*", "*://chat.google.com/*", "*://*.chat.google.com/*", "*://twitch.tv/*", "*://*.twitch.tv/*", "*://papago.naver.com/*", "*://*.papago.naver.com/*", "*://readworks.org/*", "*://*.readworks.org/*", "*://app.nearpod.com/*", "*://*.app.nearpod.com/*", "*://mail.aol.com/*", "*://*.mail.aol.com/*", "*://github.com/*", "*://*.github.com/*", "*://coursera.org/*", "*://*.coursera.org/*", "*://commonlit.org/*", "*://*.commonlit.org/*", "*://classroom.google.com/*", "*://*.classroom.google.com/*", "*://app.seesaw.me/*", "*://*.app.seesaw.me/*", "*://forms.office.com/*", "*://*.forms.office.com/*" ],
"run_at": "document_idle"
}, {
"all_frames": true,
"css": [ "src/css/Grammarly-fonts.styles.css" ],
"exclude_globs": [ "*docs.google.com*" ],
"js": [ "src/js/Grammarly.styles.js", "src/js/Grammarly.js" ],
"match_about_blank": false,
"matches": [ "*://outlook.live.com/*", "*://*.outlook.live.com/*", "*://outlook.office.com/*", "*://*.outlook.office.com/*" ],
"run_at": "document_idle"
}, {
"all_frames": false,
"css": [ "src/css/Grammarly-fonts.styles.css" ],
"js": [ "src/js/Grammarly-gDocs.styles.js", "src/js/Grammarly-gDocs.js" ],
"matches": [ "*://docs.google.com/document/*" ],
"run_at": "document_idle"
}, {
"all_frames": false,
"js": [ "src/js/Grammarly-gDocsEarlyInjector.js" ],
"matches": [ "*://docs.google.com/document/*" ],
"run_at": "document_start"
}, {
"all_frames": true,
"exclude_matches": [ "*://docs.google.com/document/*" ],
"js": [ "src/js/Grammarly-gDocsIframeCs.js" ],
"match_about_blank": true,
"matches": [ "*://docs.google.com/*" ],
"run_at": "document_idle"
}, {
"all_frames": false,
"js": [ "src/js/Grammarly-overleafStartContentScript.js" ],
"matches": [ "https://*.overleaf.com/*" ],
"run_at": "document_start"
} ],
"content_security_policy": {
"extension_pages": "default-src 'none'; font-src 'self' data:; img-src * data: blob:; media-src https://assets.extension.grammarly.com; script-src 'self'; style-src 'self' 'unsafe-inline'; frame-src 'self' https://d3ttvzt45fz9bg.cloudfront.net https://coda.io https://docs.superhuman.com; connect-src https://auth.grammarly.com https://assets.grammarly.com/ https://data.grammarly.com https://capi.grammarly.com https://dox.grammarly.com https://institution.grammarly.com wss://capi.grammarly.com https://gnar.grammarly.com https://in.grammarly.com https://f-log.grammarly.io https://f-log-extension.grammarly.io https://f-log-editor.grammarly.io https://f-log-inkwell.grammarly.io https://config.extension.grammarly.com https://chipmunk.grammarly.com https://treatment.grammarly.com https://gates.grammarly.com https://goldengate.grammarly.com https://femetrics.grammarly.io https://extension.femetrics.grammarly.io https://inkwell.femetrics.grammarly.io https://rwsgfy.grammarly.com https://assets.extension.grammarly.com https://api.iterable.com https://skills.grammarly.com https://skills-proxy.grammarly.com https://gateway.grammarly.com https://coda.grammarly.com https://coda.io https://codahosted.io https://gr-core-prod-assistant-file.s3.amazonaws.com https://gr-core-prod-assistant-file.s3.us-east-1.amazonaws.com https://gr-core-prod-go-chat-attachment.s3.amazonaws.com https://gr-core-prod-go-chat-attachment.s3.us-east-1.amazonaws.com https://gr-preprod-core-assistant-file.s3.amazonaws.com https://gr-preprod-core-assistant-file.s3.us-east-1.amazonaws.com https://gr-preprod-core-go-chat-attachment.s3.amazonaws.com https://gr-preprod-core-go-chat-attachment.s3.us-east-1.amazonaws.com https://gr-qa-core-assistant-file.s3.amazonaws.com https://gr-qa-core-assistant-file.s3.us-east-1.amazonaws.com https://gr-qa-core-go-chat-attachment.s3.amazonaws.com https://gr-qa-core-go-chat-attachment.s3.us-east-1.amazonaws.com https://subscription.grammarly.com https://id.superhuman.com https://gnar.superhuman.com https://capi.superhuman.com https://data.superhuman.com https://gateway.superhuman.com https://dox.superhuman.com https://institution.superhuman.com https://in.superhuman.com https://f-log-extension.superhuman.io https://f-log-editor.superhuman.io https://f-log-inkwell.superhuman.io https://config.extension.superhuman.com https://chipmunk.superhuman.com https://treatment.superhuman.com https://gates.superhuman.com https://subscription.superhuman.com ; report-uri https://f-log-extension.grammarly.io/logv2; "
},
"description": "Grammarly for Edge helps you write with confidence. Get AI support for grammar, clarity, and tone, from first draft to final edit.",
"externally_connectable": {
"matches": [ "https://*.grammarly.com/*" ]
},
"host_permissions": [ "http://*/*", "https://*/*" ],
"icons": {
"128": "src/icon/app/icon-128.png",
"16": "src/icon/sidepanel/icon16.png",
"32": "src/icon/sidepanel/icon32.png",
"48": "src/icon/app/icon-48.png"
},
"key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7qxHBdy17inyypagVy4qvbPuYrEMVd/P4e+dRAceSjpetXLLXUXRq0SpW65Q7KOkUwqGMQCTL6iQLCaV1g7IPy4nT7DfMI4HXrWsuVaN8qKmexwYGwwQC2K0UguVb8T3tzEgIGfRRkhfMQXYXXzIe8VW2XA8aRBCNWIPXxM7F/lCEi0CoRxpFhFs448SNea05eEoT/RthitHORYleZf8cE5BDk0B1wh23ScmeixIN1Jd3Oriqz+0oVcrMaBatF30H23S2NtZh2z2wBVetpXMoAwoWKm3gLvH1M6k/WrOC9RHLMZFRrTqCjl8SGmvaqdT+/6IX/5OdUBFAGlI0HiKbQIDAQAB",
"manifest_version": 3,
"minimum_chrome_version": "88",
"name": "Grammarly: AI Writing and Grammar Checker App",
"optional_permissions": [ "clipboardRead" ],
"permissions": [ "scripting", "sidePanel", "tabs", "notifications", "cookies", "identity", "storage" ],
"short_name": "Superhuman Go (Beta)",
"side_panel": {
"default_path": "src/sidePanel.html"
},
"storage": {
"managed_schema": "src/schema.json"
},
"update_url": "https://edge.microsoft.com/extensionwebstorebase/v1/crx",
"version": "14.1138.0",
"web_accessible_resources": [ {
"matches": [ "http://*/*", "https://*/*" ],
"resources": [ "src/fonts/*.woff", "src/fonts/*.woff2", "src/images/*.png", "src/images/*.svg", "src/images/*.jpg", "src/images/*.gif", "src/images/*.webp", "src/js/*.js", "src/css/*.css", "src/icon/toolbar/*.png", "src/icon/toolbar/superhuman_go/*.png", "src/icon/app/*.png", "src/inkwell/index.html", "src/inkwell/assets/*.js" ]
} ]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"appDesc": {
"message": "ChatGPT, DeepSeek, Gemini, Claude, Grok ሁሉም በአንድ AI ጎን ባር ውስጥ፣ ለAI ፍለጋ፣ ማንበብ እና መጻፍ።"
},
"appDescEdge": {
"message": "ChatGPT አጠገብ ቦርድ: ChatGPT, GPT-4o, Claude3, & Gemini እንደ የረጅም የAI ፍለጋ፣ ንባብ እና መጻፍ ለመጠቀም።"
},
"appName": {
"message": "Sider: ከሁሉም AI ጋር ይወያዩ: GPT-5, Claude, DeepSeek, Gemini, Grok"
},
"appNameEdge": {
"message": "ሳይደር፡ ኤአይ አጠገር ከሁሉም ሞዴሎች ጋር"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"appDesc": {
"message": "ChatGPT, DeepSeek, Gemini, Claude, Grok الكل في شريط جانبي واحد للذكاء الاصطناعي، للبحث والقراءة والكتابة بالذكاء الاصطناعي."
},
"appDescEdge": {
"message": "شريط جانبي ChatGPT: استخدم ChatGPT، GPT-4o، Claude3، & Gemini للبحث المتقدم بالذكاء الاصطناعي، القراءة، والكتابة."
},
"appName": {
"message": "Sider: تحدث مع جميع الذكاء الاصطناعي: GPT-5, Claude, DeepSeek, Gemini, Grok"
},
"appNameEdge": {
"message": "سايدر: شريط جانبي للذكاء الاصطناعي مع جميع النماذج"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"appDesc": {
"message": "ChatGPT, DeepSeek, Gemini, Claude, Grok всички в една AI странична лента за AI търсене, четене и писане."
},
"appDescEdge": {
"message": "ChatGPT странична лента: Използвайте ChatGPT, GPT-4o, Claude3, & Gemini за напреднало AI търсене, четене и писане."
},
"appName": {
"message": "Sider: Чатете с всички AI: GPT-5, Claude, DeepSeek, Gemini, Grok"
},
"appNameEdge": {
"message": "Sider: AI странична лента с всички модели"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"appDesc": {
"message": "ChatGPT, DeepSeek, Gemini, Claude, Grok সব একটি AI সাইডবারে, AI অনুসন্ধান, পড়া এবং লেখার জন্য।"
},
"appDescEdge": {
"message": "ChatGPT সাইডবার: উন্নত AI অনুসন্ধান, পড়া, এবং লেখার জন্য ChatGPT, GPT-4o, Claude3, & Gemini ব্যবহার করুন।"
},
"appName": {
"message": "Sider: সব AI এর সাথে চ্যাট করুন: GPT-5, Claude, DeepSeek, Gemini, Grok"
},
"appNameEdge": {
"message": "সাইডার: সমস্ত মডেলের সাথে এআই সাইডবার"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"appDesc": {
"message": "ChatGPT, DeepSeek, Gemini, Claude, Grok tot en una barra lateral d'IA, per a cerca d'IA, lectura i escriptura."
},
"appDescEdge": {
"message": "Barra lateral de ChatGPT: Utilitza ChatGPT, GPT-4o, Claude3, & Gemini per a cerques avançades amb IA, llegir i escriure."
},
"appName": {
"message": "Sider: Xateja amb totes les IA: GPT-5, Claude, DeepSeek, Gemini, Grok"
},
"appNameEdge": {
"message": "Sider: Barra lateral d'IA amb tots els models"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"appDesc": {
"message": "ChatGPT, DeepSeek, Gemini, Claude, Grok vše v jednom AI postranním panelu pro AI vyhledávání, čtení a psaní."
},
"appDescEdge": {
"message": "Boční panel ChatGPT: Použijte ChatGPT, GPT-4o, Claude3, & Gemini pro pokročilé vyhledávání, čtení a psaní s využitím AI."
},
"appName": {
"message": "Sider: Chatujte se všemi AI: GPT-5, Claude, DeepSeek, Gemini, Grok"
},
"appNameEdge": {
"message": "Sider: AI postranní panel se všemi modely"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"appDesc": {
"message": "ChatGPT, DeepSeek, Gemini, Claude, Grok alt i én AI-sidebar til AI-søgning, læsning og skrivning."
},
"appDescEdge": {
"message": "ChatGPT Sidebar: Brug ChatGPT, GPT-4o, Claude3, & Gemini til avanceret AI-søgning, læsning og skrivning."
},
"appName": {
"message": "Sider: Chat med alle AI: GPT-5, Claude, DeepSeek, Gemini, Grok"
},
"appNameEdge": {
"message": "Sider: AI-sidebjælke med alle modeller"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"appDesc": {
"message": "ChatGPT, DeepSeek, Gemini, Claude, Grok alles in einer KI-Seitenleiste für KI-Suche, Lesen und Schreiben."
},
"appDescEdge": {
"message": "ChatGPT Seitenleiste: Verbessern Sie Workflows mit GPT-4o, Claude3, Gemini 1.5 für AI-Suche und -Schreiben."
},
"appName": {
"message": "Sider: Chatte mit allen KI: GPT-5, Claude, DeepSeek, Gemini, Grok"
},
"appNameEdge": {
"message": "Sider: KI-Seitenleiste mit allen Modellen"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"appDesc": {
"message": "ChatGPT, DeepSeek, Gemini, Claude, Grok όλα σε μία πλαϊνή μπάρα AI, για αναζήτηση AI, ανάγνωση και γραφή."
},
"appDescEdge": {
"message": "Πλευρική Στήλη ChatGPT: Χρησιμοποιήστε το ChatGPT, GPT-4o, Claude3, & Gemini για προηγμένη αναζήτηση, ανάγνωση και γραφή AI."
},
"appName": {
"message": "Sider: Συνομιλήστε με όλα τα AI: GPT-5, Claude, DeepSeek, Gemini, Grok"
},
"appNameEdge": {
"message": "Sider: Πλευρική γραμμή AI με όλα τα μοντέλα"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"appDesc": {
"message": "ChatGPT, DeepSeek, Gemini, Claude, Grok all in one AI sidebar, for AI search, read, and write."
},
"appDescEdge": {
"message": "AI sidebar support chat with all AI models (DeepSeek, Gemini, Claude, etc.) for advanced AI search, read, and write."
},
"appName": {
"message": "Sider: Chat with all AI: GPT-5, Claude, DeepSeek, Gemini, Grok"
},
"appNameEdge": {
"message": "Sider: AI sidebar with all models"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"appDesc": {
"message": "ChatGPT, DeepSeek, Gemini, Claude, Grok all in one AI sidebar, for AI search, read, and write."
},
"appDescEdge": {
"message": "AI sidebar support chat with all AI models (DeepSeek, Gemini, Claude, etc.) for advanced AI search, read, and write."
},
"appName": {
"message": "Sider: Chat with all AI: GPT-5, Claude, DeepSeek, Gemini, Grok"
},
"appNameEdge": {
"message": "Sider: AI sidebar with all models"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"appDesc": {
"message": "ChatGPT, DeepSeek, Gemini, Claude, Grok all in one AI sidebar, for AI search, read, and write."
},
"appDescEdge": {
"message": "AI sidebar support chat with all AI models (DeepSeek, Gemini, Claude, etc.) for advanced AI search, read, and write."
},
"appName": {
"message": "Sider: Chat with all AI: GPT-5, Claude, DeepSeek, Gemini, Grok"
},
"appNameEdge": {
"message": "Sider: AI sidebar with all models"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"appDesc": {
"message": "ChatGPT, DeepSeek, Gemini, Claude, Grok todo en una barra lateral de IA, para búsqueda de IA, lectura y escritura."
},
"appDescEdge": {
"message": "ChatGPT Barra lateral: Mejora flujos con GPT-4o, Claude3, Gemini 1.5 para búsqueda y escritura AI."
},
"appName": {
"message": "Sider: Chatea con todas las IA: GPT-5, Claude, DeepSeek, Gemini, Grok"
},
"appNameEdge": {
"message": "Sider: barra lateral de IA con todos los modelos"
}
}
Loading