<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged chromeextension</title>
<link>https://coderlegion.com/tag/chromeextension</link>
<description>Powered by Question2Answer</description>
<item>
<title>Stop copy-pasting research. Start thinking with AI</title>
<link>https://coderlegion.com/32643/stop-copy-pasting-research-start-thinking-with-ai</link>
<description>&lt;p&gt;Most people waste 40% of their research time switching tabs, copying random quotes, and manually formatting prompts for ChatGPT.&lt;/p&gt;
&lt;p&gt;That friction kills deep work.&lt;/p&gt;
&lt;p&gt;Meet MindContext — your local-first AI research side panel for Chrome.&lt;/p&gt;
&lt;p&gt;💡 Take persistent notes &amp;amp; color-code key quotes as you browse.&lt;br&gt;
⚡ Transfer compiled articles + your thoughts into ChatGPT, Claude, or Gemini in 1 click.&lt;br&gt;
📺 Extract full timestamped YouTube video transcripts instantly.&lt;br&gt;
📁 Group multiple web sources into dedicated Research Projects for cross-source synthesis.&lt;br&gt;
🔒 100% private: All data stays in your browser sandbox. No tracking, no cloud dependencies.&lt;/p&gt;
&lt;p&gt;Try MindContext Free on Chrome Web Store:&lt;br&gt;
👉 &lt;a rel=&quot;nofollow&quot; href=&quot;https://chromewebstore.google.com/detail/mindcontext-ai-research-n/nmagjifaanaaddbogdebppjdcoaignnd?authuser=1&amp;amp;hl&quot;&gt;https://chromewebstore.google.com/detail/mindcontext-ai-research-n/nmagjifaanaaddbogdebppjdcoaignnd?authuser=1&amp;amp;hl&lt;/a&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/32643/stop-copy-pasting-research-start-thinking-with-ai</guid>
<pubDate>Tue, 27 Oct 2026 07:02:56 +0000</pubDate>
</item>
<item>
<title>Copy-pasting research into ChatGPT, Claude, or Gemini is broken!</title>
<link>https://coderlegion.com/31634/copy-pasting-research-into-chatgpt-claude-or-gemini-is-broken</link>
<description>&lt;p&gt;You read 10 articles, highlight sentences, copy fragments into notes, open 5 tabs, and manually assemble prompts.&lt;/p&gt;
&lt;p&gt;It kills your focus. &lt;/p&gt;
&lt;p&gt;So I built MindContext — the local-first AI research copilot for Chrome. 🧵👇&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;1/ 💡 How it works:&lt;br&gt;
While reading any webpage, take instant notes &amp;amp; highlight key quotes directly in a sleek side panel. &lt;/p&gt;
&lt;p&gt;With one click, MindContext compiles your clean article text + thoughts + quotes into a structured AI handoff prompt.&lt;/p&gt;
&lt;p&gt;No formatting hassle. No lost context.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;2/ 🎯 Structured AI Handoffs:&lt;br&gt;
Stop getting generic AI answers. &lt;/p&gt;
&lt;p&gt;Choose from curated prompt frameworks right inside your browser:&lt;br&gt;
• Executive Summary (distinguish facts from hype)&lt;br&gt;
• Critical Analysis &amp;amp; Counterarguments&lt;br&gt;
• Action Items &amp;amp; Next Steps&lt;br&gt;
• Multi-Source Synthesis&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;3/ 🚀 Take it to the next level with MindContext PRO:&lt;/p&gt;
&lt;p&gt;For serious researchers, founders, and knowledge workers:&lt;/p&gt;
&lt;p&gt;📺 YouTube Full Transcripts: Turn 2-hour podcast or technical talk transcripts into structured AI context in 2 seconds.&lt;br&gt;
📁 Unlimited Research Projects: Group notes &amp;amp; quotes across dozens of tabs for comparative cross-source synthesis.&lt;br&gt;
🎨 4-Color Smart Highlighter: Color-code ideas, facts, bugs, or competitors — click any quote to jump directly to its exact spot on the page!&lt;br&gt;
⚡ Saved Chat Links: Automatically routes prompts straight into your ongoing ChatGPT/Claude/Gemini chats instead of spamming new conversations.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;4/ 🔒 100% Privacy-First by Design:&lt;br&gt;
Your notes and research NEVER touch external servers. Everything lives locally in your browser sandbox (&lt;code&gt;chrome.storage.local&lt;/code&gt;). Zero tracking, zero cloud dependencies.&lt;/p&gt;
&lt;p&gt;Try MindContext Free on the Chrome Web Store:&lt;br&gt;
👉 chromewebstore.google.com/detail/mindcontext-ai-research-n/nmagjifaanaaddbogdebppjdcoaignnd&lt;/p&gt;
&lt;p&gt;Unlock Pro for just $24/year (~$2/mo):&lt;br&gt;
⚡ [Link to Lemon Squeezy / Store]&lt;/p&gt;
&lt;h2 id=&quot;buildinpublic-ai-productivity-chatgpt-claude-chromeextension-pkm&quot;&gt;buildinpublic #AI #productivity #ChatGPT #Claude #ChromeExtension #PKM&lt;/h2&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/31634/copy-pasting-research-into-chatgpt-claude-or-gemini-is-broken</guid>
<pubDate>Sun, 18 Oct 2026 17:10:04 +0000</pubDate>
</item>
<item>
<title>From Bug Reproduction to Playwright Test — Without Starting From Scratch</title>
<link>https://coderlegion.com/31304/from-bug-reproduction-to-playwright-test-without-starting-from-scratch</link>
<description>&lt;p&gt;Ever reproduced a bug, documented the steps, and then had to write the same steps all over again as an automated regression test?&lt;/p&gt;
&lt;p&gt;That repetitive workflow is what inspired me to build QA Bug, a Chrome extension designed to turn browser-based bug reproductions into Playwright test drafts.&lt;/p&gt;
&lt;p&gt;🛠️ How it works&lt;/p&gt;
&lt;p&gt;Reproduce the bug — Interact with the website as you normally would.&lt;/p&gt;
&lt;p&gt;Capture the steps — Record browser actions and relevant interactions.&lt;/p&gt;
&lt;p&gt;Add assertions — Define what the test should verify.&lt;/p&gt;
&lt;p&gt;Generate a Playwright test draft — Turn the recorded session into a .spec.ts file that you can review, edit, and adapt to your project.&lt;/p&gt;
&lt;p&gt;The goal isn't to replace QA engineers or magically generate perfect tests. It's to reduce repetitive work between reproducing a bug and creating a starting point for regression automation.&lt;/p&gt;
&lt;p&gt;I'm building this as a practical tool for QA engineers and developers who want to make browser testing less repetitive.&lt;/p&gt;
&lt;p&gt;💬 I'd like your feedback&lt;/p&gt;
&lt;p&gt;Would you use a tool that converts bug reproduction sessions into Playwright test drafts?&lt;/p&gt;
&lt;p&gt;What would you need before trusting the generated tests in a real project?&lt;/p&gt;
&lt;p&gt;Which part of your bug-to-regression workflow takes the most time?&lt;/p&gt;
&lt;p&gt;I'm interested in honest feedback from people who work with manual testing, Playwright, and test automation.&lt;/p&gt;
&lt;p&gt;🔧 I'd rather build something QA engineers actually need than add features nobody uses.&lt;/p&gt;
&lt;p&gt;Chrome Web Store: &lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://chromewebstore.google.com/detail/qa-bug-%E2%86%92-regression-test/khoelciicbkdeieibchdndccdncpelbg?authuser=1&amp;amp;hl=tr&quot;&gt;https://chromewebstore.google.com/detail/qa-bug-→-regression-test/khoelciicbkdeieibchdndccdncpelbg?authuser=1&amp;amp;hl=tr&lt;/a&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/31304/from-bug-reproduction-to-playwright-test-without-starting-from-scratch</guid>
<pubDate>Fri, 16 Oct 2026 07:59:06 +0000</pubDate>
</item>
<item>
<title>Dock: Stops Letting Google Meet Links Open a New Window Every Time</title>
<link>https://coderlegion.com/30244/dock-stops-letting-google-meet-links-open-a-new-window-every-time</link>
<description>&lt;hr&gt;
&lt;p&gt;title: Dock: Stops Letting Google Meet Links Open a New Window Every Time&lt;br&gt;
published: true&lt;br&gt;
date: 2026-09-25 07:46:18 UTC&lt;br&gt;
tags: GoogleWorkspace,GoogleMeet,chromeextension,Productivity&lt;/p&gt;
&lt;h3 id=&quot;canonical-url-https-blog-nandan-dev-dock-stops-letting-google-meet-links-open-a-new-window-every-time&quot;&gt;canonical_url: &lt;a rel=&quot;nofollow&quot; href=&quot;https://blog.nandan.dev/dock-stops-letting-google-meet-links-open-a-new-window-every-time&quot;&gt;https://blog.nandan.dev/dock-stops-letting-google-meet-links-open-a-new-window-every-time&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/c4trk48ckjq8le16k767.png&quot; alt=&quot;Dock OG Image&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;three-workspaces-infinite-windows&quot;&gt;Three Workspaces, infinite windows&lt;/h4&gt;
&lt;p&gt;I have three Google Workspaces: personal Gmail, my own Workspace, and my company's. That means three separate PWAs for Mail, three for Meet, three for Calendar, and so on down the line.&lt;/p&gt;
&lt;p&gt;Here's the thing: every time a Meet link landed in my chat, it opened a brand new window. Not focused an existing one — opened a new one. Multiply that by three accounts and a normal day of meetings, and you end up with a wall of Meet windows and duplicate Gmail tabs you can't tell apart. It got really hard to manage.&lt;/p&gt;
&lt;h4 id=&quot;what-i-built&quot;&gt;What I built&lt;/h4&gt;
&lt;p&gt;So I built Dock. If you click a link and there's already a matching PWA open, Dock redirects you to that window instead of spawning a new one. Gmail, Meet, Calendar, Drive, Docs, Sheets, Slides, or Chat — same idea for all of them. Holding Shift bypasses it for that one click, for the times you actually want a fresh window.&lt;/p&gt;
&lt;p&gt;Dock also helps me manage all my open tabs. Say I've got six Meet windows open across accounts — I can close any of them, for any account, from any screen. It keeps everything decluttered, the mental load is reduced. You don't need five mailboxes open just to check personal email once. One mailbox for personal, one for work, one for the side Workspace — or whatever your split looks like.&lt;/p&gt;
&lt;p&gt;And I gave it a cute mascot: Meet Doc-k&lt;/p&gt;
&lt;p&gt; &lt;img src=&quot;https://cdn.hashnode.com/uploads/covers/628769bf89168247f55ee8b0/f2c1b0a5-a6bc-49f0-a00c-0420a963c906.png&quot; alt=&quot;Doc-k Mascot&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;getting-the-account-right&quot;&gt;Getting the account right&lt;/h4&gt;
&lt;p&gt;The tricky part isn't catching the link. It's knowing &lt;em&gt;which&lt;/em&gt; account's window to send you to. Dock routes to the window for the account the link actually names — via &lt;code&gt;authuser=&lt;/code&gt;, &lt;code&gt;/u/N/&lt;/code&gt;, or a stored mapping — and it keeps a window's identity correct even after you switch accounts from inside the PWA itself. It reuses the already-open window for that account instead of spawning a duplicate.&lt;/p&gt;
&lt;h4 id=&quot;the-switcher&quot;&gt;The switcher&lt;/h4&gt;
&lt;p&gt;Press Ctrl/Cmd+Shift+Space and you get a fuzzy-searchable popup listing every app window, grouped by account. Live calls are surfaced first. One-click close, per window or per whole account.&lt;/p&gt;
&lt;p&gt;A few other things it does:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Each login gets an automatically assigned, editable colour tag, shown on the toolbar icon and in the switcher.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can add your own custom rules for apps Dock doesn't know about — Figma, Notion, whatever — with a match pattern, target behaviour, and account strategy.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Built-in Google Workspace rules can be disabled but not deleted.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rules import/export as JSON.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;no-network-requests&quot;&gt;No network requests&lt;/h4&gt;
&lt;p&gt;It makes no network requests — nothing it does ever leaves your device. All the routing logic runs locally against windows Chrome already knows about.&lt;/p&gt;
&lt;h4 id=&quot;try-it&quot;&gt;Try it&lt;/h4&gt;
&lt;p&gt;I haven't put it in the Chrome Store yet. Not sure I will. So clone the repo, build it yourself, and load it as an unpacked extension: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/sirius93/dock&quot;&gt;github.com/sirius93/dock&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That's the whole idea, and so far it's worked wonders for me. If it works for you too, star the repo or leave feedback — and if enough people find it worth the hassle, I'll look at making it live.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/30244/dock-stops-letting-google-meet-links-open-a-new-window-every-time</guid>
<pubDate>Thu, 08 Oct 2026 09:00:51 +0000</pubDate>
</item>
<item>
<title>Prismwar: a six-color card game with a built-in AI opponent that runs entirely in the browser</title>
<link>https://coderlegion.com/26780/prismwar-a-six-color-card-game-with-a-built-in-ai-opponent-that-runs-entirely-in-the-browser</link>
<description>&lt;p&gt;Hey CoderLegion!&lt;/p&gt;
&lt;p&gt;I've been building &lt;strong&gt;Prismwar&lt;/strong&gt;, an original trading card game you play against a computer opponent right in the browser. If you've played Magic, the shape will feel familiar: five colors of mana, creatures, spells, deckbuilding. Then there's a sixth color, &lt;strong&gt;Purple (&quot;Undertow&quot;)&lt;/strong&gt;, built around disruption.&lt;/p&gt;
&lt;p&gt;It's heading for my browser arcade at play.dhseadev.online and for a Chrome extension. Both run the same game, and neither needs an account.&lt;/p&gt;
&lt;h4 id=&quot;features-&quot;&gt;Features:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A 250-card set, &quot;Refraction&quot;:&lt;/strong&gt; 240 collectible cards plus 10 &lt;strong&gt;Ascendants&lt;/strong&gt;, a new permanent type with loyalty and two abilities. Ascendants can't be pulled from packs. They unlock only through redeem codes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Signed redeem codes:&lt;/strong&gt; codes are signed with ECDSA P-256. The game can verify a code, but it can't create one, because the signing key never ships with it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;8 starter decks:&lt;/strong&gt; one for each of the six colors, plus two dual-color decks (White/Red and Green/Blue). They're all commons-only, and so are the AI's decks, so the opponent can't out-rare you.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tutorial mode&lt;/strong&gt; for learning the rules.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fair packs, with the odds shown in-game:&lt;/strong&gt; slot 4 is guaranteed uncommon or better, slot 5 is rare or better, there's a pity counter for Signature cards, and duplicates are protected. You earn cards a few ways: dust for every finished match, a pack for your first win of the day, and a bonus for win streaks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Collection and crafting:&lt;/strong&gt; your collection is grouped by rarity, and you can craft missing cards with dust.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Procedural pixel art for all 250 cards, with no drawn assets:&lt;/strong&gt; each color has a 5-tone palette, light always comes from the top left, and a card's keywords choose its form (beast, humanoid, flyer, serpent, colossus, wisp). My favorite bug: two unrelated cards had &lt;em&gt;identical&lt;/em&gt; art because the effect sigils had no randomness. Now a build gate hashes the geometry of every card and fails if any two match.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Card interactions:&lt;/strong&gt; click to flip for rules and flavor text, shift-click to enlarge, hover for a quick preview.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generated music:&lt;/strong&gt; three styles (ambient, chiptune, synthwave) built live with Web Audio, with intensity that follows the match. There are no audio files at all.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Game feel:&lt;/strong&gt; particles when cards are cast and screen shake on hits. Sound, music, screen shake and motion each have their own setting, and turning motion off disables the effects.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backup and restore&lt;/strong&gt; for your collection.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Ledger:&lt;/strong&gt; export your collection progress as a generated PNG card to share, or post it to a shared wall.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;tech-stack-&quot;&gt;Tech Stack:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vanilla JavaScript, HTML and CSS&lt;/strong&gt;: no framework&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Canvas 2D&lt;/strong&gt; for card art and the shareable Ledger card&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web Audio API&lt;/strong&gt; for all sound effects and music&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ECDSA P-256&lt;/strong&gt; signatures for redeem codes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chrome Manifest V3&lt;/strong&gt; with a single &lt;code&gt;storage&lt;/code&gt; permission&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Pages&lt;/strong&gt; for the arcade, and &lt;strong&gt;playhtml&lt;/strong&gt; for the shared Ledger wall&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testing:&lt;/strong&gt; a Node unit suite, a sabotage suite that must catch deliberately broken builds (15 of them), and a headless Chromium suite that runs under the production Content Security Policy, both from source and from the packaged extension&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;status&quot;&gt;Status&lt;/h4&gt;
&lt;p&gt;In final prep, not live yet. Links will go here once it deploys:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;More from me: &lt;a rel=&quot;nofollow&quot; href=&quot;https://dhseadev.online/&quot;&gt;https://dhseadev.online/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;i-d-love-your-input&quot;&gt;I'd love your input&lt;/h4&gt;
&lt;p&gt;AI-vs-AI testing says the aggressive starters (the White go-wide deck and the Red burn deck) are the strongest right now, and the Green ramp deck and the White/Red deck are the weakest. If you've balanced a card game before, how would you tune &lt;strong&gt;commons-only&lt;/strong&gt; starter decks without flattening what makes each color different?&lt;/p&gt;
&lt;p&gt;And if you could design a sixth color from scratch, what would it do?&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/26780/prismwar-a-six-color-card-game-with-a-built-in-ai-opponent-that-runs-entirely-in-the-browser</guid>
<pubDate>Fri, 11 Sep 2026 03:51:32 +0000</pubDate>
</item>
<item>
<title>I Auto-Save Every Accepted HackerRank Solution to GitHub — Here's How</title>
<link>https://coderlegion.com/23531/i-auto-save-every-accepted-hackerrank-solution-to-github-heres-how</link>
<description>&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/nfha60qzwacokkqqprde.png&quot; alt=&quot;Cover image showing accepted HackerRank code submissions are automatically captured by PrepPush Chrome extension and are pushed to the user's GitHub.&quot;&gt;&lt;/p&gt;
&lt;p&gt;I practice on &lt;strong&gt;HackerRank&lt;/strong&gt; a lot. The problems are fine, but I kept losing my own work.&lt;/p&gt;
&lt;p&gt;I'd solve something, move on, and weeks later I couldn't remember:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What trick I used&lt;/li&gt;
&lt;li&gt;The time/space complexity of &lt;em&gt;my&lt;/em&gt; solution&lt;/li&gt;
&lt;li&gt;Where I even saved the code&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Copy-pasting into random files didn't scale. I wanted a &lt;strong&gt;GitHub repo that looked like interview prep&lt;/strong&gt;, not a junk drawer.&lt;/p&gt;
&lt;p&gt;So I built &lt;strong&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://chromewebstore.google.com/detail/lkbbmepdmkokiapildnhkimcgnofokdd&quot;&gt;PrepPush&lt;/a&gt;&lt;/strong&gt; — a Chrome extension that watches for &lt;strong&gt;Accepted&lt;/strong&gt; submissions and pushes them to &lt;strong&gt;your&lt;/strong&gt; GitHub repo automatically.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/3u74uwklw9vkcwtwnhac.png&quot; alt=&quot;Screenshot showing the split Chrome window, where the right window showing a HackerRank submission and the left window shows the code submission, including AI analysis as code comments, in the user's dedicated GitHub repository.&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;the-workflow-i-wanted&quot;&gt;The workflow I wanted&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Solve a problem on HackerRank&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Submit Code&lt;/strong&gt; until it's &lt;strong&gt;Accepted&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Code lands on GitHub — organized, labeled, ready to revise before interviews&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;No manual copy-paste. No forgetting which approach was &lt;code&gt;approach1&lt;/code&gt; vs &lt;code&gt;approach2&lt;/code&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;what-shows-up-on-github&quot;&gt;What shows up on GitHub&lt;/h3&gt;
&lt;p&gt;Each accepted solution goes here:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;solutions/{language}/{difficulty}/{problem-slug}/solution-approach1.py
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you solve the same problem with a &lt;strong&gt;different algorithm&lt;/strong&gt;, you get &lt;code&gt;solution-approach2.py&lt;/code&gt;, and so on.&lt;/p&gt;
&lt;p&gt;Re-submitting the &lt;strong&gt;same logic&lt;/strong&gt; updates the same file — no duplicate spam.&lt;/p&gt;
&lt;p&gt;Example header PrepPush adds to the file:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;# Link        https://www.hackerrank.com/challenges/alternating-characters/problem?isFullScreen=true
# Problem     Alternating Characters 
# Difficulty  Easy
# Subdomain   Strings
# Language    python3
# Submitted   2026-07-25, 10:46 a.m.
# Technique   linear-scan-adjacent-comparison
# Time        O(n)
# Space       O(1)
# Insight     The algorithm counts the total number of adjacent character pairs that are identical, which corresponds to the minimum number of deletions required to eliminate all consecutive duplicates.
# Interview   Before: &quot;I could use a stack to track characters and pop duplicates.&quot; After: &quot;A linear scan is more efficient at O(n) time and O(1) space, as we only need to compare each character with its immediate predecessor to identify necessary deletions.&quot;
# Pitfalls    (1) Failing to handle empty strings or single-character strings, which the code explicitly guards against to return zero.  (2) Incorrectly indexing the loop by starting at zero instead of one, which would cause an index out of bounds error when accessing the previous character.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;strong&gt;HackerRank link&lt;/strong&gt; is the first row so you can jump back to the problem anytime.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;how-preppush-captures-submissions&quot;&gt;How PrepPush captures submissions&lt;/h3&gt;
&lt;p&gt;PrepPush runs only on &lt;code&gt;hackerrank.com&lt;/code&gt; — including contest and prep-kit pages.&lt;/p&gt;
&lt;p&gt;When your submission is accepted:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;PrepPush captures the solution from HackerRank's submission data&lt;/li&gt;
&lt;li&gt;It pushes to your GitHub repo (it can create the repo on first push if your token allows)&lt;/li&gt;
&lt;li&gt;Optionally, &lt;strong&gt;Gemini&lt;/strong&gt; adds technique, Big-O, trick, and hint in the header&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A small toast appears on the page when capture succeeds. Open the extension from your toolbar if you want to see status or the AI analysis — push and analysis still run in the background either way.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;one-time-setup-2-minutes-&quot;&gt;One-time setup (~2 minutes)&lt;/h3&gt;
&lt;p&gt;You bring your own keys. PrepPush does not host your code or credentials.&lt;/p&gt;
&lt;h4 id=&quot;1-github-personal-access-token&quot;&gt;1. GitHub personal access token&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Create a &lt;strong&gt;classic&lt;/strong&gt; token with &lt;strong&gt;&lt;code&gt;repo&lt;/code&gt;&lt;/strong&gt; scope&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/settings/tokens/new?scopes=repo&amp;amp;description=PrepPush&quot;&gt;Generate token on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Expiration: &lt;strong&gt;90 days&lt;/strong&gt; or &lt;strong&gt;No expiration&lt;/strong&gt; — your choice&lt;/li&gt;
&lt;li&gt;Paste it in PrepPush &lt;strong&gt;Settings&lt;/strong&gt; → &lt;strong&gt;Test GitHub&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;2-gemini-api-key-optional-&quot;&gt;2. Gemini API key (optional)&lt;/h4&gt;
&lt;p&gt;Only needed if you want AI notes in the file header.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Free tier: &lt;a rel=&quot;nofollow&quot; href=&quot;https://aistudio.google.com/apikey&quot;&gt;Google AI Studio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Paste in PrepPush &lt;strong&gt;Settings&lt;/strong&gt; → &lt;strong&gt;Test AI&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/8id3gzjvubk2ylue9j6a.png&quot; alt=&quot;Settings page of PrepPush Chrome extension containing spaces to insert GitHub token and Gemini key and test each of them out.&quot;&gt;&lt;/p&gt;
&lt;p&gt;That's it. Submit an accepted solution and check your repo.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;why-i-built-it-as-an-extension-not-a-script-&quot;&gt;Why I built it as an extension (not a script)&lt;/h3&gt;
&lt;p&gt;HackerRank doesn't give you a clean &quot;export all my solutions&quot; button for the workflow I cared about.&lt;/p&gt;
&lt;p&gt;I needed something that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fires on &lt;strong&gt;Accepted&lt;/strong&gt; — not on Run/Compile&lt;/li&gt;
&lt;li&gt;Works on &lt;strong&gt;full-screen&lt;/strong&gt; and &lt;strong&gt;prep-kit&lt;/strong&gt; URLs&lt;/li&gt;
&lt;li&gt;Writes to &lt;strong&gt;my&lt;/strong&gt; repo structure, not a third-party server&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A Chrome extension made sense: local keys, no PrepPush backend, you own the data.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;what-i-learned-shipping-it&quot;&gt;What I learned shipping it&lt;/h3&gt;
&lt;p&gt;Early users helped a lot. A few real-world fixes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SQL / DB2&lt;/strong&gt; problems needed correct file paths (&lt;code&gt;.sql&lt;/code&gt;, not &lt;code&gt;.py&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prep-kit&lt;/strong&gt; pages use different APIs than classic challenges — capture had to follow both&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI headers&lt;/strong&gt; had to reference &lt;em&gt;your actual code&lt;/em&gt;, not generic interview tips&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It's a small project (~50 early users) but it solves a real problem for me every week.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;limitations-honest-list-&quot;&gt;Limitations (honest list)&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Topic &lt;/th&gt;&lt;th&gt;Notes&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Platform&lt;/strong&gt; &lt;/td&gt;&lt;td&gt;HackerRank only — not LeetCode or Codeforces&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Trigger&lt;/strong&gt; &lt;/td&gt;&lt;td&gt;Submit Code → &lt;strong&gt;Accepted&lt;/strong&gt; — Run Code doesn't count&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Keys&lt;/strong&gt; &lt;/td&gt;&lt;td&gt;You provide GitHub token + optional Gemini key&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Privacy&lt;/strong&gt; &lt;/td&gt;&lt;td&gt;Keys stay in Chrome on your device — see &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/tridibbanik17/PrepPush/blob/main/PRIVACY.md&quot;&gt;privacy notes&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h3 id=&quot;try-it-1&quot;&gt;Try it&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chrome Web Store:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://chromewebstore.google.com/detail/lkbbmepdmkokiapildnhkimcgnofokdd&quot;&gt;Install PrepPush&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source / issues:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/tridibbanik17/PrepPush&quot;&gt;github.com/tridibbanik17/PrepPush&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Demo video:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.youtube.com/watch?v=dXOZskTX2fM&quot;&gt;YouTube walkthrough&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you use HackerRank for interview prep, I'd love feedback — what breaks, what's missing, what would make this a weekly habit for you.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;PrepPush is an independent project. Not affiliated with HackerRank, GitHub, or Google.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Question for you:&lt;/strong&gt; How do you track HackerRank solutions today — GitHub, Notion, or not at all? I'd love to hear what would make this workflow stick for you.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/23531/i-auto-save-every-accepted-hackerrank-solution-to-github-heres-how</guid>
<pubDate>Sun, 26 Jul 2026 16:55:59 +0000</pubDate>
</item>
</channel>
</rss>