diff --git a/recipes/80lv/icon.svg b/recipes/80lv/icon.svg
new file mode 100644
index 000000000..ce81ac1ee
--- /dev/null
+++ b/recipes/80lv/icon.svg
@@ -0,0 +1,63 @@
+
+
diff --git a/recipes/80lv/index.js b/recipes/80lv/index.js
new file mode 100644
index 000000000..dd41f7287
--- /dev/null
+++ b/recipes/80lv/index.js
@@ -0,0 +1 @@
+module.exports = Ferdium => Ferdium;
diff --git a/recipes/80lv/package.json b/recipes/80lv/package.json
new file mode 100644
index 000000000..fb6d5dd9b
--- /dev/null
+++ b/recipes/80lv/package.json
@@ -0,0 +1,9 @@
+{
+ "id": "80lv",
+ "name": "80LV",
+ "version": "1.0.1",
+ "license": "MIT",
+ "config": {
+ "serviceURL": "https://80.lv"
+ }
+}
diff --git a/recipes/80lv/webview.js b/recipes/80lv/webview.js
new file mode 100644
index 000000000..11192196b
--- /dev/null
+++ b/recipes/80lv/webview.js
@@ -0,0 +1,9 @@
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : { default: obj };
+}
+
+const _path = _interopRequireDefault(require('path'));
+
+module.exports = Ferdium => {
+ Ferdium.injectCSS(_path.default.join(__dirname, 'service.css'));
+};
diff --git a/recipes/cara/icon.svg b/recipes/cara/icon.svg
new file mode 100644
index 000000000..dd0b7c125
--- /dev/null
+++ b/recipes/cara/icon.svg
@@ -0,0 +1,33 @@
+
+
diff --git a/recipes/cara/index.js b/recipes/cara/index.js
new file mode 100644
index 000000000..dd41f7287
--- /dev/null
+++ b/recipes/cara/index.js
@@ -0,0 +1 @@
+module.exports = Ferdium => Ferdium;
diff --git a/recipes/cara/package.json b/recipes/cara/package.json
new file mode 100644
index 000000000..7a5e9ae76
--- /dev/null
+++ b/recipes/cara/package.json
@@ -0,0 +1,9 @@
+{
+ "id": "cara",
+ "name": "Cara",
+ "version": "1.0.1",
+ "license": "MIT",
+ "config": {
+ "serviceURL": "https://cara.app"
+ }
+}
diff --git a/recipes/cara/webview.js b/recipes/cara/webview.js
new file mode 100644
index 000000000..11192196b
--- /dev/null
+++ b/recipes/cara/webview.js
@@ -0,0 +1,9 @@
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : { default: obj };
+}
+
+const _path = _interopRequireDefault(require('path'));
+
+module.exports = Ferdium => {
+ Ferdium.injectCSS(_path.default.join(__dirname, 'service.css'));
+};
diff --git a/recipes/claude-ai/icon.svg b/recipes/claude-ai/icon.svg
new file mode 100644
index 000000000..342d40be8
--- /dev/null
+++ b/recipes/claude-ai/icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/recipes/claude-ai/index.js b/recipes/claude-ai/index.js
new file mode 100644
index 000000000..dd41f7287
--- /dev/null
+++ b/recipes/claude-ai/index.js
@@ -0,0 +1 @@
+module.exports = Ferdium => Ferdium;
diff --git a/recipes/claude-ai/package.json b/recipes/claude-ai/package.json
new file mode 100644
index 000000000..713ec604e
--- /dev/null
+++ b/recipes/claude-ai/package.json
@@ -0,0 +1,9 @@
+{
+ "id": "claude-ai",
+ "name": "claude.ai",
+ "version": "1.0.1",
+ "license": "MIT",
+ "config": {
+ "serviceURL": "https://claude.ai"
+ }
+}
diff --git a/recipes/claude-ai/webview.js b/recipes/claude-ai/webview.js
new file mode 100644
index 000000000..a471ad398
--- /dev/null
+++ b/recipes/claude-ai/webview.js
@@ -0,0 +1,13 @@
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : { default: obj };
+}
+
+const _path = _interopRequireDefault(require('path'));
+
+module.exports = Ferdium => {
+ Ferdium.handleDarkMode(isEnabled => {
+ localStorage.setItem('theme', isEnabled ? 'dark' : 'light');
+ });
+
+ Ferdium.injectCSS(_path.default.join(__dirname, 'service.css'));
+};
diff --git a/recipes/daily-dev/icon.svg b/recipes/daily-dev/icon.svg
new file mode 100644
index 000000000..b184c2b1e
--- /dev/null
+++ b/recipes/daily-dev/icon.svg
@@ -0,0 +1,77 @@
+
+
diff --git a/recipes/daily-dev/index.js b/recipes/daily-dev/index.js
new file mode 100644
index 000000000..dd41f7287
--- /dev/null
+++ b/recipes/daily-dev/index.js
@@ -0,0 +1 @@
+module.exports = Ferdium => Ferdium;
diff --git a/recipes/daily-dev/package.json b/recipes/daily-dev/package.json
new file mode 100644
index 000000000..005aaa095
--- /dev/null
+++ b/recipes/daily-dev/package.json
@@ -0,0 +1,9 @@
+{
+ "id": "daily-dev",
+ "name": "Daily.dev",
+ "version": "1.0.1",
+ "license": "MIT",
+ "config": {
+ "serviceURL": "https://app.daily.dev"
+ }
+}
diff --git a/recipes/daily-dev/webview.js b/recipes/daily-dev/webview.js
new file mode 100644
index 000000000..11192196b
--- /dev/null
+++ b/recipes/daily-dev/webview.js
@@ -0,0 +1,9 @@
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : { default: obj };
+}
+
+const _path = _interopRequireDefault(require('path'));
+
+module.exports = Ferdium => {
+ Ferdium.injectCSS(_path.default.join(__dirname, 'service.css'));
+};
diff --git a/recipes/google-gemini/icon.svg b/recipes/google-gemini/icon.svg
new file mode 100644
index 000000000..787c83710
--- /dev/null
+++ b/recipes/google-gemini/icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/recipes/google-gemini/index.js b/recipes/google-gemini/index.js
new file mode 100644
index 000000000..dd41f7287
--- /dev/null
+++ b/recipes/google-gemini/index.js
@@ -0,0 +1 @@
+module.exports = Ferdium => Ferdium;
diff --git a/recipes/google-gemini/package.json b/recipes/google-gemini/package.json
new file mode 100644
index 000000000..bec6cb569
--- /dev/null
+++ b/recipes/google-gemini/package.json
@@ -0,0 +1,9 @@
+{
+ "id": "google-gemini",
+ "name": "Google Gemini",
+ "version": "1.0.1",
+ "license": "MIT",
+ "config": {
+ "serviceURL": "https://gemini.google.com"
+ }
+}
diff --git a/recipes/google-gemini/webview.js b/recipes/google-gemini/webview.js
new file mode 100644
index 000000000..a358f8055
--- /dev/null
+++ b/recipes/google-gemini/webview.js
@@ -0,0 +1,21 @@
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : { default: obj };
+}
+
+const _path = _interopRequireDefault(require('path'));
+
+module.exports = Ferdium => {
+ if (
+ location.hostname === 'workspace.google.com' &&
+ location.href.includes('products/gemini/')
+ ) {
+ location.href =
+ 'https://accounts.google.com/AccountChooser?continue=https://gemini.google.com/u/0/';
+ }
+
+ Ferdium.handleDarkMode(isEnabled => {
+ localStorage.setItem('theme', isEnabled ? 'dark' : 'light');
+ });
+
+ Ferdium.injectCSS(_path.default.join(__dirname, 'service.css'));
+};
diff --git a/recipes/quora/icon.svg b/recipes/quora/icon.svg
new file mode 100644
index 000000000..496907759
--- /dev/null
+++ b/recipes/quora/icon.svg
@@ -0,0 +1,27 @@
+
+
diff --git a/recipes/quora/index.js b/recipes/quora/index.js
new file mode 100644
index 000000000..dd41f7287
--- /dev/null
+++ b/recipes/quora/index.js
@@ -0,0 +1 @@
+module.exports = Ferdium => Ferdium;
diff --git a/recipes/quora/package.json b/recipes/quora/package.json
new file mode 100644
index 000000000..0f1afae62
--- /dev/null
+++ b/recipes/quora/package.json
@@ -0,0 +1,9 @@
+{
+ "id": "quora",
+ "name": "Quora",
+ "version": "1.0.1",
+ "license": "MIT",
+ "config": {
+ "serviceURL": "https://www.quora.com"
+ }
+}
diff --git a/recipes/quora/webview.js b/recipes/quora/webview.js
new file mode 100644
index 000000000..11192196b
--- /dev/null
+++ b/recipes/quora/webview.js
@@ -0,0 +1,9 @@
+function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : { default: obj };
+}
+
+const _path = _interopRequireDefault(require('path'));
+
+module.exports = Ferdium => {
+ Ferdium.injectCSS(_path.default.join(__dirname, 'service.css'));
+};