diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 6eeb8f7..0000000 Binary files a/.DS_Store and /dev/null differ diff --git a/ChatMultiAI-extension.zip b/ChatMultiAI-extension.zip new file mode 100644 index 0000000..fec8b7a Binary files /dev/null and b/ChatMultiAI-extension.zip differ diff --git a/README.md b/README.md index 14e2bc8..6b11583 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,31 @@ # ChatMultiAI Send prompts to multiple AI assistants at once - [Chrome web store - ChatMultiAI](https://chromewebstore.google.com/detail/chatmultiai/jlmpfilkbghnodgcgdbkhebbllanpfbf?authuser=0&hl=en) +## Install (Manual, from GitHub) +1. Download the latest release ZIP from GitHub Releases: https://github.com/inspiretelapps/ChatMultiAI/releases +2. Unzip the file. +3. Open `chrome://extensions`. +4. Enable **Developer mode** and click **Load unpacked**. +5. Select the unzipped folder. -![Screenshot 2025-04-01 at 16.20.36.png](images/Screenshot%202025-04-01%20at%2016.20.36.png) -![Screenshot 2025-04-01 at 16.21.52.png](images/Screenshot%202025-04-01%20at%2016.21.52.png) +**Release ZIP name:** The asset is published as `ChatMultiAI-extension.zip` in each GitHub Release. +## Release Checklist (ZIP) +1. Run `scripts/release-zip.sh` to build and package the ZIP. +2. Publish a GitHub Release and upload `ChatMultiAI-extension.zip`. + +## Recent Changes + +### Fork Updates (inspiretelapps) + +- **Fixed Grok integration**: Implemented a main-world script approach to properly handle Grok's React-based input. Uses contenteditable element detection and clipboard paste simulation for reliable prompt filling. +- **Removed model chooser**: Simplified the interface by removing the model selection dropdown - the extension now works with the default model on each AI platform. +- **Updated chat window styling**: Changed the background of the chat window for a cleaner look. +- **Removed DeepSeek support**: Focused on the four main AI providers (ChatGPT, Claude, Gemini, Grok). + +## Supported AI Providers + +- ChatGPT +- Claude +- Gemini +- Grok diff --git a/chat-multi-ai/assets/automation.svg b/chat-multi-ai/assets/automation.svg new file mode 100644 index 0000000..cd33e98 --- /dev/null +++ b/chat-multi-ai/assets/automation.svg @@ -0,0 +1,3 @@ + + + diff --git a/chat-multi-ai/assets/icon.png b/chat-multi-ai/assets/icon.png index dfe0c2f..5510e3f 100644 Binary files a/chat-multi-ai/assets/icon.png and b/chat-multi-ai/assets/icon.png differ diff --git a/chat-multi-ai/package.json b/chat-multi-ai/package.json index faf7a11..2329374 100644 --- a/chat-multi-ai/package.json +++ b/chat-multi-ai/package.json @@ -44,14 +44,20 @@ "manifest": { "permissions": [ "sidePanel", - "tabs" + "tabs", + "scripting" ], "host_permissions": [ "https://chatgpt.com/*", "https://grok.com/*", - "https://chat.deepseek.com/*", "https://claude.ai/*", "https://gemini.google.com/*" + ], + "web_accessible_resources": [ + { + "resources": ["grok-main-world.*.js"], + "matches": ["https://grok.com/*"] + } ] } } diff --git a/chat-multi-ai/src/background.ts b/chat-multi-ai/src/background.ts index 18abb01..9ac368d 100644 --- a/chat-multi-ai/src/background.ts +++ b/chat-multi-ai/src/background.ts @@ -12,7 +12,6 @@ const getDomainFromUrl = (url: string): string => { // Extract base domain for matching if (hostname.includes('chatgpt.com')) return 'chatgpt.com' if (hostname.includes('grok.com')) return 'grok.com' - if (hostname.includes('chat.deepseek.com')) return 'chat.deepseek.com' if (hostname.includes('claude.ai')) return 'claude.ai' if (hostname.includes('gemini.google.com')) return 'gemini.google.com' return hostname diff --git a/chat-multi-ai/src/components/ui/textarea.tsx b/chat-multi-ai/src/components/ui/textarea.tsx index e56b0af..76c8c6a 100644 --- a/chat-multi-ai/src/components/ui/textarea.tsx +++ b/chat-multi-ai/src/components/ui/textarea.tsx @@ -9,7 +9,7 @@ const Textarea = React.forwardRef< return (