<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: starwing</title>
    <description>The latest articles on DEV Community by starwing (@starwing).</description>
    <link>https://dev.to/starwing</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3860962%2Fb06b3858-c122-40cc-b8f1-d1854447b280.jpeg</url>
      <title>DEV Community: starwing</title>
      <link>https://dev.to/starwing</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/starwing"/>
    <language>en</language>
    <item>
      <title>I was tired of switching tabs to compare ChatGPT, Gemini &amp; Copilot. So I built a &lt;1MB Chrome extension to run them all in parallel.</title>
      <dc:creator>starwing</dc:creator>
      <pubDate>Sat, 04 Apr 2026 13:07:58 +0000</pubDate>
      <link>https://dev.to/starwing/i-was-tired-of-switching-tabs-to-compare-chatgpt-gemini-copilot-so-i-built-a-1mb-chrome-22nn</link>
      <guid>https://dev.to/starwing/i-was-tired-of-switching-tabs-to-compare-chatgpt-gemini-copilot-so-i-built-a-1mb-chrome-22nn</guid>
      <description>&lt;p&gt;hey guys! 👋 &lt;/p&gt;

&lt;p&gt;I wanted to share a side project I recently open-sourced: &lt;strong&gt;EasyChat&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;As a developer who relies heavily on AI, I found myself constantly frustrated by a very specific problem: when tackling a tricky issue, I often want to ask ChatGPT, Gemini, and DeepSeek the exact same question to compare their answers. But hopping between 3 different browser tabs, copy-pasting the prompt, and losing track of historical context felt incredibly clunky. Oh, and burning through expensive API quotas wasn't ideal either.&lt;/p&gt;

&lt;p&gt;So, I built a lightweight Chrome Side Panel extension to solve this once and for all. It's &lt;strong&gt;under 1MB&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/starwingChen/easyChat" rel="noopener noreferrer"&gt;https://github.com/starwingChen/easyChat&lt;/a&gt; (It's fully open-source, I'd really appreciate a star if you find it useful! ✨)&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Why I think you'll like it
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;EasyChat&lt;/strong&gt; lets you chat with multiple top-tier AI models side-by-side right from a Chrome sidebar. &lt;/p&gt;

&lt;h3&gt;
  
  
  1. 🤖 100% Free Web-scraping + API Support (No paywalls or hidden limits)
&lt;/h3&gt;

&lt;p&gt;This is the best part: &lt;code&gt;ChatGPT&lt;/code&gt;, &lt;code&gt;Gemini&lt;/code&gt;, &lt;code&gt;Perplexity&lt;/code&gt;, and &lt;code&gt;Copilot&lt;/code&gt; are simulated through &lt;strong&gt;web requests&lt;/strong&gt;. So as long as you are logged into their web interfaces in your browser, the extension piggybacks off your active session. This means &lt;strong&gt;zero API cost&lt;/strong&gt;, and it doesn't drain your API credits. &lt;br&gt;
It also supports standard API key configs for models like &lt;code&gt;DeepSeek&lt;/code&gt; and &lt;code&gt;Qwen&lt;/code&gt; if you prefer the API route.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. ⚡ True Parallel Answers &amp;amp; Multi-Layout
&lt;/h3&gt;

&lt;p&gt;You type one prompt, and the extension broadcasts it to all active bots simultaneously. It supports draggable layouts (1 grid, 2 vertical, 2 horizontal, 3 grid, 4 grid). Put ChatGPT on the left, Gemini on the right, and drop DeepSeek at the bottom. You can instantly spot which one is hallucinating.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. ⌨️ Snappy &amp;amp; Distraction-Free
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Keyboard Shortcut:&lt;/strong&gt; &lt;code&gt;Alt&lt;/code&gt;+&lt;code&gt;J&lt;/code&gt; toggles the sidebar instantly. No need to click extension icons.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;History Snapshots:&lt;/strong&gt; Your parallel sessions are saved as read-only snapshots, so you can always look back at your comparisons.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Bloat:&lt;/strong&gt; It's insanely fast and does exactly what it needs to do without the fluff.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🛠️ For the nerds (Here's how I made it)
&lt;/h2&gt;

&lt;p&gt;If you're a dev interested in MV3 or AI coding, you might find the repository interesting. &lt;strong&gt;The codebase was 100% written by an AI agent!&lt;/strong&gt; I personally only focused on the overarching architecture design and reverse-engineering the authentication APIs (my design docs are in &lt;code&gt;.rules&lt;/code&gt;).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tech Stack:&lt;/strong&gt; &lt;code&gt;React 19&lt;/code&gt; + &lt;code&gt;Tailwind CSS v4&lt;/code&gt; + &lt;code&gt;Vite&lt;/code&gt;, built for Chrome Manifest V3. Kept it lightweight with SCSS and Radix-UI headless components rather than heavy UI libraries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architecture design:&lt;/strong&gt; Strictly uses Domain-Driven Design concepts. All bots (web-based or API) are abstracted under a generic &lt;code&gt;BaseBotAdapter&lt;/code&gt; so the UI layer never cares about network protocols. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web Simulation bypasses:&lt;/strong&gt; For complex auths like Copilot, it uses MV3's &lt;code&gt;declarativeNetRequest&lt;/code&gt; to dynamically rewrite WebSocket headers.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;I built this simply because I wanted to "ask a quick question" without breaking my workflow. If you think this workflow could help you, give it a try! &lt;/p&gt;

&lt;p&gt;I'd love to hear your feedback, feature requests, or if you want to contribute by adding more bots. Let me know what you guys think! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxfzj16nky97x1vod558k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxfzj16nky97x1vod558k.png" alt=" " width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
