<?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: Ruhul Amin</title>
    <description>The latest articles on DEV Community by Ruhul Amin (@tuhin1122).</description>
    <link>https://dev.to/tuhin1122</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3988354%2F7265a3b0-79b2-491c-aa6b-e6103e1cfa1e.png</url>
      <title>DEV Community: Ruhul Amin</title>
      <link>https://dev.to/tuhin1122</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tuhin1122"/>
    <language>en</language>
    <item>
      <title>EnvGuard 3.0: Environment Guardian, CI &amp; 99% Smaller</title>
      <dc:creator>Ruhul Amin</dc:creator>
      <pubDate>Sun, 12 Jul 2026 12:00:03 +0000</pubDate>
      <link>https://dev.to/tuhin1122/envguard-30-environment-guardian-ci-99-smaller-45ld</link>
      <guid>https://dev.to/tuhin1122/envguard-30-environment-guardian-ci-99-smaller-45ld</guid>
      <description>&lt;p&gt;Missing keys and inconsistent values aren't the only risk in .env files. The bigger danger is accidentally committing a real API key or secret to Git.&lt;/p&gt;

&lt;p&gt;EnvGuard 3.0.0 focuses on preventing that while introducing better environment validation—and the extension package is now 99.6% smaller.&lt;/p&gt;

&lt;p&gt;🚨 Secret Detection &amp;amp; Leak Prevention&lt;br&gt;
EnvGuard now detects common credentials including:&lt;/p&gt;

&lt;p&gt;AWS Access Keys&lt;br&gt;
Stripe Live Keys&lt;br&gt;
GitHub Tokens&lt;br&gt;
Slack Tokens&lt;br&gt;
Google API Keys&lt;br&gt;
Private Keys&lt;br&gt;
JWTs&lt;br&gt;
Generic secret-like values&lt;/p&gt;

&lt;p&gt;Template files (.env.example, .env.sample, etc.) and placeholder values are ignored to reduce false positives.&lt;/p&gt;

&lt;p&gt;If a file contains real secrets and isn't protected by .gitignore, EnvGuard warns you before those credentials accidentally end up in Git.&lt;/p&gt;

&lt;p&gt;📋 Schema Validation&lt;/p&gt;

&lt;p&gt;Add an envguard.schema.json file to define rules for your environment variables.You can validate:&lt;br&gt;
Required keys&lt;br&gt;
Numbers&lt;br&gt;
Booleans&lt;br&gt;
URLs&lt;br&gt;
Emails&lt;br&gt;
Regex patterns&lt;br&gt;
Enum values&lt;/p&gt;

&lt;p&gt;Validation errors appear directly inside VS Code and are also used by the CLI and Git hooks.&lt;/p&gt;

&lt;p&gt;🔄 .env.example Auto Sync&lt;br&gt;
Keeping .env.example updated is now automatic.EnvGuard can:&lt;br&gt;
Preserve comments and ordering&lt;br&gt;
Remove deleted keys&lt;br&gt;
Add new keys&lt;br&gt;
Keep existing placeholder values&lt;br&gt;
Enable auto-sync to regenerate the file every time a .env file is saved.&lt;/p&gt;

&lt;p&gt;⚙️ CI Support&lt;br&gt;
The bundled CLI now supports:&lt;br&gt;
node dist/cli/validate.js --ci --json&lt;br&gt;
--ci : Fails the pipeline on validation errors.&lt;br&gt;
--json : Outputs machine-readable validation results.&lt;br&gt;
The same validation rules now run consistently in VS Code, Git hooks, and CI pipelines.&lt;/p&gt;

&lt;p&gt;📦 99.6% Smaller Package&lt;br&gt;
The biggest improvement wasn't a feature—it was packaging.&lt;br&gt;
EnvGuard 2.0 shipped as a ~29.4 MB extension because development dependencies were accidentally included by:&lt;/p&gt;

&lt;p&gt;Bundling with esbuild&lt;br&gt;
Shipping only compiled files&lt;br&gt;
Excluding unnecessary dependencies&lt;br&gt;
Tightening .vscodeignore&lt;/p&gt;

&lt;p&gt;the package shrank to ~103 KB.&lt;br&gt;
Version Package Size&lt;br&gt;
2.0.0   ~29.4 MB&lt;br&gt;
3.0.0   ~103 KB&lt;br&gt;
That's roughly a 99.6% reduction with no functionality removed.&lt;/p&gt;

&lt;p&gt;Try It&lt;br&gt;
Update EnvGuard to 3.0.&lt;br&gt;
Test secret detection with a fake credential.&lt;br&gt;
Generate an envguard.schema.json.&lt;br&gt;
Sync your .env.example.&lt;br&gt;
Run the CLI in CI with --ci --json.&lt;/p&gt;

&lt;p&gt;Everything still runs 100% locally.&lt;/p&gt;

&lt;p&gt;No telemetry&lt;br&gt;
No network calls&lt;br&gt;
No accounts&lt;br&gt;
Your secrets never leave your machine&lt;/p&gt;

&lt;p&gt;If these new features help prevent even one leaked credential or broken deployment, they've done their job. 🛡️&lt;/p&gt;

&lt;p&gt;— Tuhin&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>productivity</category>
      <category>devtools</category>
      <category>opnesource</category>
    </item>
    <item>
      <title>EnvGuard Update: Catch Broken .env Files Before They Ever Reach Production</title>
      <dc:creator>Ruhul Amin</dc:creator>
      <pubDate>Mon, 22 Jun 2026 09:13:36 +0000</pubDate>
      <link>https://dev.to/tuhin1122/envguard-update-catch-broken-env-files-before-they-ever-reach-production-51a6</link>
      <guid>https://dev.to/tuhin1122/envguard-update-catch-broken-env-files-before-they-ever-reach-production-51a6</guid>
      <description>&lt;p&gt;Two new features in EnvGuard — live inline diagnostics in the editor and a git pre-push validation hook — turn 'works on my machine' env bugs into errors you see before you push.&lt;/p&gt;

&lt;p&gt;If you've ever shipped a deploy that fell over because .env.production was missing a key that existed in your local .env, this update is for you.&lt;/p&gt;

&lt;p&gt;The latest release adds two new lines of defense so a missing or empty environment variable stops being a runtime surprise and becomes something you see while you're typing and before you push:&lt;/p&gt;

&lt;p&gt;Inline Diagnostics — live, ESLint-style squiggles right inside your .env files.&lt;br&gt;
Pre-Push Validation Hook — a git pre-push hook that validates your environment files automatically on every git push.&lt;br&gt;
Both are built on the same idea EnvGuard has always had: .env.example is your contract. It declares which keys are required. Everything else is checked against it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inline Diagnostics — like ESLint, but for your .env
Until now, EnvGuard surfaced problems in the sidebar and report panel. Useful, but you had to go look. The new diagnostics service brings validation directly into the editor, the same way a linter underlines your code.&lt;/li&gt;
&lt;/ol&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb4gm0kpsfs9whciobgav.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb4gm0kpsfs9whciobgav.png" alt=" " width="800" height="145"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open any .env / .env.* file and EnvGuard treats the .env.example sitting in the same directory as the source of truth for required keys, then underlines two kinds of problems:&lt;/p&gt;

&lt;p&gt;Missing required variable — a key defined in .env.example is absent → squiggle on the first line.&lt;br&gt;
Empty required value — a required key is present but blank (KEY=) → squiggle on that key's exact line, with the key token highlighted.&lt;/p&gt;

&lt;h1&gt;
  
  
  .env.example  (the contract)
&lt;/h1&gt;

&lt;p&gt;DATABASE_URL=&lt;br&gt;
REDIS_HOST=&lt;br&gt;
STRIPE_KEY=&lt;/p&gt;

&lt;h1&gt;
  
  
  .env  (what you actually have)
&lt;/h1&gt;

&lt;p&gt;DATABASE_URL=postgres://localhost/dev&lt;br&gt;
REDIS_HOST=            # ⚠ "REDIS_HOST" is empty but required by .env.example&lt;br&gt;
                       # ⚠ Missing required variable "STRIPE_KEY"&lt;br&gt;
It updates as you type&lt;br&gt;
Findings refresh live — no save required. The service parses the live document text, debounced at 300ms so it stays smooth while you type. And because the baseline matters too, editing .env.example re-lints every open env file: add a key to the template and every .env that's now missing it lights up instantly.&lt;/p&gt;

&lt;p&gt;The .env.example template itself is never linted (it's the contract, not a target), and non-dotenv files (.properties, .yml) are left alone.&lt;/p&gt;

&lt;p&gt;Configurable&lt;br&gt;
Setting Default Description&lt;br&gt;
envguard.diagnostics.enabled    true    Turn inline diagnostics on/off&lt;br&gt;
envguard.diagnostics.severity   warning error, warning, information, or hint&lt;br&gt;
Change the severity and every open file re-lints immediately — set it to error if you want missing env vars to scream at you in red.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pre-Push Validation Hook — stop bad config at the gate
Inline diagnostics help you. But what about the teammate who didn't notice the squiggle, or the CI config that drifted? That's what the pre-push hook is for: a last automatic checkpoint that runs on every git push, before anything reaches the remote.&lt;/li&gt;
&lt;/ol&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3tifnb4bm2iqaq896q4l.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3tifnb4bm2iqaq896q4l.png" alt=" " width="800" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you can't see just press crtl+shift+p and search this you'll find it.&lt;/p&gt;

&lt;p&gt;It have two mode.By default it is warn mode and if want to change to Strict mode then:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Opne the settings in code editor and serach " envguard hook mode"&lt;/li&gt;
&lt;li&gt;here you see option change as it is.&lt;/li&gt;
&lt;/ol&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flzrij04v3ys1hv81x4j3.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flzrij04v3ys1hv81x4j3.png" alt=" " width="800" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Run EnvGuard: Install Pre-Push Hook from the Command Palette (or click the 🛡 button on the Environment Files view) and EnvGuard writes a .git/hooks/pre-push for you. From then on, git push runs three checks across all your discovered env files:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1kmxoi08nga5y0urw1te.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1kmxoi08nga5y0urw1te.png" alt=" " width="298" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Missing variables — a required key (from .env.example) is absent from an env file.&lt;br&gt;
Empty values — a required key is present but has no value (KEY=).&lt;br&gt;
Consistency — a key exists in some env files but is missing from others (e.g. REDIS_HOST defined in .env but not in .env.production).&lt;br&gt;
$ git push&lt;br&gt;
EnvGuard: ⚠ Missing variables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;STRIPE_KEY
EnvGuard: ⚠ Empty values:&lt;/li&gt;
&lt;li&gt;REDIS_HOST
EnvGuard: ⚠ Inconsistent keys across env files:&lt;/li&gt;
&lt;li&gt;SESSION_SECRET (missing from: .env.production)
Two modes: nudge or block
Set envguard.gitHook.mode in Settings:&lt;/li&gt;
&lt;/ul&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fua90mstsbzgykjsz6mwr.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fua90mstsbzgykjsz6mwr.png" alt=" " width="585" height="126"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Start in warn to build trust, flip to strict once your team is ready to enforce it. And you don't have to reinstall to switch — changing the mode automatically rewrites the installed hook. EnvGuard watches the setting and updates the script in place.&lt;/p&gt;

&lt;p&gt;It plays nicely with your existing hooks&lt;br&gt;
If you already have a pre-push hook, EnvGuard backs it up to pre-push.envguard-backup before installing, and restores it on uninstall. Run EnvGuard: Uninstall Pre-Push Hook and you're exactly back where you started.&lt;/p&gt;

&lt;p&gt;The interesting part: one validator, two homes&lt;br&gt;
Here's the architecture detail I'm proud of. A git hook runs in plain Node, from a shell, outside the VS Code extension host — there's no vscode module to import. The extension, obviously, runs inside it. So how do you avoid writing the validation logic twice?&lt;/p&gt;

&lt;p&gt;You don't duplicate it. The actual validation lives in a small, VS Code-free PrePushValidationService that only consumes plain EnvFile data models and reuses the existing ComparisonService for all the diffing. No new comparison logic was written — the pre-push checks are the same engine that powers the sidebar audit.&lt;/p&gt;

&lt;p&gt;That pure service is then driven by two thin entry points:&lt;/p&gt;

&lt;p&gt;Inside the extension, it's wired up in extension.ts like every other feature.&lt;br&gt;
For the hook, a tiny standalone CLI (out/cli/validate.js) walks the repo with Node's fs (mirroring the extension's discovery include/exclude rules), runs the same validator, and prints results.&lt;br&gt;
The generated hook is just:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgk5b4jtvihcvkrkelep4.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgk5b4jtvihcvkrkelep4.png" alt=" " width="522" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A couple of deliberate safety choices baked into that CLI:&lt;/p&gt;

&lt;p&gt;A hook must never crash a legitimate push. Unreadable or unparseable files are skipped silently, and any unexpected error in the validator exits 0 (push proceeds) rather than blocking you over a bug in my code. Only an actual finding in strict mode exits non-zero.&lt;br&gt;
Cross-platform paths. The hook script is POSIX sh (git runs it via the bundled shell even on Windows), so the CLI path is forward-slashed regardless of OS.&lt;br&gt;
This is the same "pure logic never imports vscode" rule EnvGuard has followed from day one — and it's exactly what made shipping a CLI a small addition instead of a rewrite.&lt;/p&gt;

&lt;p&gt;Try it&lt;br&gt;
Install / update EnvGuard from the extension market.&lt;br&gt;
Open a project with a .env.example and a .env.&lt;br&gt;
Watch the inline squiggles appear as you edit.&lt;br&gt;
Run EnvGuard: Install Pre-Push Hook, then git push and see it validate.&lt;br&gt;
Everything still runs 100% locally — no telemetry, no network, no accounts. Your secrets never leave your machine.&lt;/p&gt;

&lt;p&gt;The project is open source. If pre-push validation or live diagnostics save you one broken deploy, that's a win. Try it out, and let me know what you'd want guarded next. 🛡️&lt;/p&gt;

&lt;p&gt;— Tuhin&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Screen Studio: A Free Screen Recorder &amp; Screenshot Editor That Never Touches the Internet</title>
      <dc:creator>Ruhul Amin</dc:creator>
      <pubDate>Sun, 21 Jun 2026 09:58:54 +0000</pubDate>
      <link>https://dev.to/tuhin1122/i-built-a-100-offline-screenshot-screen-recorder-chrome-extension--5820</link>
      <guid>https://dev.to/tuhin1122/i-built-a-100-offline-screenshot-screen-recorder-chrome-extension--5820</guid>
      <description>&lt;p&gt;For the last few months I've been building Screen Studio — a Chrome extension that captures screenshots, records your screen, and lets you edit and export videos without ever sending a single byte to a server.&lt;/p&gt;

&lt;p&gt;No backend. No account. No tracking. No cloud upload. Everything happens locally on your own machine.&lt;/p&gt;

&lt;p&gt;In this post I'll walk you through every feature, show you the actual UI, and explain the one thing most people get wrong about browser extensions: where your files are really stored.&lt;/p&gt;

&lt;p&gt;It's completely free, and I'd genuinely love your feedback before the final release. 🙏&lt;/p&gt;

&lt;p&gt;🎯 What It Does (in one line)&lt;br&gt;
Capture screenshots, record your screen + webcam + mic, edit the recording on a real timeline, and export to PNG / JPG / PDF / WebM / MP4 / GIF — all offline.&lt;/p&gt;

&lt;p&gt;Let me show you each part.&lt;/p&gt;

&lt;p&gt;The Popup — Your Control Center&lt;br&gt;
The moment you click the extension icon, you get everything in one clean panel.&lt;/p&gt;

&lt;p&gt;Screen Studio popup UI — capture modes on top, screen recording options below.&lt;/p&gt;

&lt;p&gt;Capture Modes:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fazagj7phbej2vly7x92u.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fazagj7phbej2vly7x92u.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📸 Visible Area — grab exactly what's on screen&lt;br&gt;
✂️ Custom Region — drag-select any part of the page&lt;br&gt;
📄 Full Page — captures the entire scrolling page, stitched into one tall image&lt;br&gt;
Choose your format: PNG (lossless) or JPEG (smaller files)&lt;br&gt;
Screen Recording — 4 sources:&lt;/p&gt;

&lt;p&gt;🗂️ Tab — record just the current browser tab&lt;br&gt;
🖥️ Screen — your entire desktop&lt;br&gt;
🪟 Window — a single app window&lt;br&gt;
🎥 Webcam — camera-only recording&lt;br&gt;
Plus two toggles that make tutorials look professional:&lt;/p&gt;

&lt;p&gt;🎙️ Microphone audio — narrate while you record&lt;br&gt;
🎥 Webcam bubble — a draggable, circular camera overlay (great for classroom &amp;amp; YouTube tutorials)&lt;br&gt;
Everything also has keyboard shortcuts — Ctrl+Shift+S for visible capture, Ctrl+Shift+F for full page, Ctrl+Shift+E for region, and Alt+Shift+V to start/stop recording.&lt;/p&gt;

&lt;p&gt;The Screenshot Editor — Annotate Before You Share&lt;br&gt;
After a capture, the screenshot opens straight into a full editor. No "save then open another app" — it's instant.&lt;/p&gt;

&lt;p&gt;The editor: annotation tools on the left, live canvas in the center, layers panel on the right.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6purloh8yagqmsyu5k6v.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6purloh8yagqmsyu5k6v.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What you can do here:&lt;/p&gt;

&lt;p&gt;✏️ Draw, arrow, rectangle, circle, line to point things out&lt;br&gt;
🔤 Add text labels&lt;br&gt;
🌫️ Blur / pixelate sensitive info (passwords, emails, tokens)&lt;br&gt;
✂️ Crop to the perfect frame&lt;br&gt;
🎨 Pick colors and stroke width&lt;br&gt;
🗂️ Layers panel — every annotation is a separate, editable layer (non-destructive!)&lt;br&gt;
↩️ Full undo / redo history&lt;br&gt;
📤 Export to PNG, JPG, or PDF — or copy straight to clipboard&lt;br&gt;
This is built on a real canvas engine, so your edits never bake into the image until you export. Change your mind anytime.&lt;/p&gt;

&lt;p&gt;The Vault — Your Private Local Library&lt;br&gt;
Every screenshot and recording is saved into the Vault — a searchable library that lives inside your browser, on your disk.&lt;/p&gt;

&lt;p&gt;The Vault: storage meter at the top, searchable grid of all your captures below.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1tqfdrw8huvh0oeytpg8.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1tqfdrw8huvh0oeytpg8.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Features:&lt;/p&gt;

&lt;p&gt;🔍 Search by name or date&lt;br&gt;
🏷️ Filter by Screenshots / Videos / All&lt;br&gt;
↕️ Sort by date&lt;br&gt;
📊 A live storage meter so you always know how much space you're using&lt;br&gt;
▶️ Click any video to jump into the editor&lt;br&gt;
And here's the important part most people don't know about 👇&lt;/p&gt;

&lt;p&gt;💾 Where Are Your Files Actually Stored? (The Honest Answer)&lt;br&gt;
This is the part I'm most proud of, because it's where privacy and performance meet.&lt;/p&gt;

&lt;p&gt;Your captures are not saved to some company's cloud. They're written to IndexedDB, which the browser stores on your local SSD/hard drive. That's why everything is instant and works even with zero internet.&lt;/p&gt;

&lt;p&gt;But here's the nuance between browsers:&lt;/p&gt;

&lt;p&gt;🟢 On Chrome&lt;br&gt;
Chrome reports your real, available disk space. If you have 200 GB free on your SSD, the extension can use a big chunk of that. You can record long sessions and store dozens of videos. Your hardware is the only real limit. As a runaway-capture safety rail, a single recording is capped at 2 hours.&lt;/p&gt;

&lt;p&gt;🔵 On Brave&lt;br&gt;
Brave does something clever for privacy / anti-fingerprinting: it fakes the storage quota at a fixed ~2 GB for every site, no matter how big your actual drive is. Websites can't probe your real disk size to identify you.&lt;/p&gt;

&lt;p&gt;That's great for privacy — but it means the same recording that fits easily on Chrome can hit a wall on Brave. So Screen Studio detects Brave at runtime and adapts: it caps a single recording at 1 hour, so the take always saves cleanly to the Vault instead of dying mid-recording when the faked ~2 GB quota fills up.&lt;/p&gt;

&lt;p&gt;TL;DR: Your files live on your SSD. Chrome gives you your full disk (2 h max per take). Brave protects your privacy by faking a ~2 GB cap — and Screen Studio detects it and stops cleanly at 1 h so you never lose a recording.&lt;/p&gt;

&lt;p&gt;The Video Editor — Edit &amp;amp; Export Without Leaving the Browser&lt;br&gt;
Recordings open into a proper, timeline-based video editor. This isn't a toy trimmer — it's a multi-track editor.&lt;/p&gt;

&lt;p&gt;The recording editor: clip controls on the left, multi-track timeline at the bottom with video, audio, music, and overlay lanes.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fztxtff68ugw04tc7304w.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fztxtff68ugw04tc7304w.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What you can do:&lt;/p&gt;

&lt;p&gt;⚡ Speed control — 0.5× to 2× playback&lt;br&gt;
✂️ Split at playhead and trim clips&lt;br&gt;
➕ Merge multiple videos together&lt;br&gt;
🎵 Add background music (separate audio track with waveform)&lt;br&gt;
🔇 Mute the original recorded sound&lt;br&gt;
🔤 Text overlays that appear at chosen moments&lt;br&gt;
🌫️ Blur overlays to hide sensitive info in the video&lt;br&gt;
🎚️ Independent audio, music, and overlay lanes on the timeline&lt;br&gt;
The export engine is the secret weapon:&lt;/p&gt;

&lt;p&gt;Exports use WebCodecs (the modern, GPU-accelerated browser video API) via mediabunny — no ffmpeg, no WebAssembly bloat, no server round-trip&lt;br&gt;
Export to WebM, MP4, or GIF&lt;br&gt;
If you made no edits, WebM does a lossless passthrough — it hands back the original recording untouched, basically instant&lt;br&gt;
Edited timelines re-encode locally (VP9/VP8 + Opus for WebM, H.264 + AAC for MP4) on your own GPU/CPU — your video never leaves your computer&lt;br&gt;
🔒 Why "Offline" Actually Matters Here&lt;br&gt;
A lot of extensions say "private" but quietly upload your data. Screen Studio is built so it physically can't:&lt;/p&gt;

&lt;p&gt;✅ host_permissions is empty — it doesn't have blanket access to your browsing (full-page capture asks for access only on the tab you're on)&lt;br&gt;
✅ A strict Content-Security-Policy blocks loading any external script&lt;br&gt;
✅ connect-src is locked to local sources — no analytics, no phone-home&lt;br&gt;
✅ No login, no account, no email required&lt;br&gt;
If you're recording a classroom session, a client demo, or anything sensitive — it never touches the internet.&lt;/p&gt;

&lt;p&gt;💸 The Price: Free&lt;br&gt;
Right now, Screen Studio is 100% free. Every feature in this post — capture, annotate, blur, record, multi-track editing, MP4/WebM/GIF export, the Vault — all free, no paywall, no watermark.&lt;/p&gt;

&lt;p&gt;🙏 I'd Love Your Feedback&lt;br&gt;
I just submitted Screen Studio to the Chrome Web Store (v0.9.0, beta), and before the wider launch I want to hear from real developers and creators:&lt;/p&gt;

&lt;p&gt;Would you use this for tutorials / bug reports / classroom recording?&lt;br&gt;
What feature is missing that would make it a daily driver?&lt;br&gt;
Anything confusing in the UI?&lt;br&gt;
Drop a comment below — every bit of feedback helps me ship a better v1. 👇&lt;/p&gt;

&lt;p&gt;If you build, teach, or report bugs for a living, this was made for you. Thanks for reading! 🚀&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Protect Your .env Files Like a Pro</title>
      <dc:creator>Ruhul Amin</dc:creator>
      <pubDate>Wed, 17 Jun 2026 06:19:17 +0000</pubDate>
      <link>https://dev.to/tuhin1122/protect-your-env-files-like-a-pro-4237</link>
      <guid>https://dev.to/tuhin1122/protect-your-env-files-like-a-pro-4237</guid>
      <description>&lt;p&gt;I Built My First VS Code Extension(EnvGuard) &lt;/p&gt;

&lt;p&gt;A few weeks ago, I noticed a problem that almost every developer faces sooner or later: configuration drift.&lt;/p&gt;

&lt;p&gt;You add a new environment variable to your local &lt;code&gt;.env&lt;/code&gt; file, everything works perfectly, and then deployment fails because the same variable is missing from &lt;code&gt;.env.production&lt;/code&gt; or &lt;code&gt;.env.example&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;After dealing with this issue multiple times, I decided to build a solution.&lt;/p&gt;

&lt;p&gt;Today, I'm excited to share (EnvGuard), my first published VS Code extension.&lt;/p&gt;

&lt;p&gt;🎥 Video Tutorial&lt;/p&gt;

&lt;p&gt;I've created a step-by-step tutorial showing how to install and use EnvGuard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/posts/ruhul-amin-tuhin-abbabb2aa_envguard-vscode-visualstudiocode-ugcPost-7472891012936556544-YdfH/?utm_source=share&amp;amp;utm_medium=member_desktop&amp;amp;rcm=ACoAAEqO428BAevCyevkSQyim8vBXytMVDTLxFE" rel="noopener noreferrer"&gt;https://www.linkedin.com/posts/ruhul-amin-tuhin-abbabb2aa_envguard-vscode-visualstudiocode-ugcPost-7472891012936556544-YdfH/?utm_source=share&amp;amp;utm_medium=member_desktop&amp;amp;rcm=ACoAAEqO428BAevCyevkSQyim8vBXytMVDTLxFE&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you prefer watching rather than reading, the video covers everything from installation to comparing environment files.&lt;/p&gt;

&lt;p&gt;What Is EnvGuard?&lt;/p&gt;

&lt;p&gt;EnvGuard is a framework-agnostic environment file manager designed for developers working with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Laravel&lt;/li&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Spring Boot&lt;/li&gt;
&lt;li&gt;.NET&lt;/li&gt;
&lt;li&gt;And many other frameworks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Its goal is simple:&lt;br&gt;
Help developers detect missing configuration keys before they become production problems.**&lt;/p&gt;

&lt;p&gt;The Problem&lt;/p&gt;

&lt;p&gt;Imagine this situation:&lt;br&gt;
.env&lt;br&gt;
APP_NAME=MyApp&lt;br&gt;
STRIPE_SECRET=xxxx&lt;br&gt;
MAIL_HOST=smtp.example.com&lt;/p&gt;

&lt;p&gt;.env.production&lt;br&gt;
APP_NAME=MyApp&lt;br&gt;
MAIL_HOST=smtp.example.com&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;STRIPE_SECRET&lt;/code&gt; key is missing.&lt;/p&gt;

&lt;p&gt;Everything works locally, but production crashes when payment functionality is used.This type of issue is surprisingly common in development teams.EnvGuard helps catch these problems before deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;p&gt;🔍 Smart Environment File Discovery&lt;br&gt;
EnvGuard automatically scans your workspace and finds configuration files such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.env&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.env.local&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.env.production&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.env.test&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;application.properties&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;application.yml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;application.yaml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It intelligently skips folders like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;node_modules&lt;/li&gt;
&lt;li&gt;vendor&lt;/li&gt;
&lt;li&gt;build directories&lt;/li&gt;
&lt;li&gt;virtual environments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;to keep scans fast.&lt;/p&gt;

&lt;p&gt;⚖️ Side-by-Side Comparison&lt;/p&gt;

&lt;p&gt;Compare two configuration files instantly.&lt;/p&gt;

&lt;p&gt;EnvGuard highlights:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Missing keys&lt;/li&gt;
&lt;li&gt;Extra keys&lt;/li&gt;
&lt;li&gt;Different values&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it easy to identify inconsistencies across environments.&lt;/p&gt;

&lt;p&gt;🚨 Missing Key Detection&lt;/p&gt;

&lt;p&gt;One of my favorite features.&lt;/p&gt;

&lt;p&gt;EnvGuard audits environment files and immediately warns you when keys exist in one file but are missing from another.&lt;/p&gt;

&lt;p&gt;This helps prevent deployment failures caused by forgotten configuration updates.&lt;/p&gt;

&lt;p&gt;📊 Export Reports&lt;/p&gt;

&lt;p&gt;Need to share issues with your team?&lt;/p&gt;

&lt;p&gt;EnvGuard can export audit results into a JSON report for easy collaboration.&lt;/p&gt;

&lt;p&gt;🎯 Click-to-Navigate&lt;/p&gt;

&lt;p&gt;When EnvGuard detects an issue, simply click the item.&lt;/p&gt;

&lt;p&gt;VS Code will automatically jump to the exact file and line number where the problem exists.&lt;/p&gt;

&lt;p&gt;No manual searching required.&lt;/p&gt;

&lt;p&gt;Privacy First&lt;/p&gt;

&lt;p&gt;Since environment files often contain sensitive information, security was a top priority.&lt;/p&gt;

&lt;p&gt;EnvGuard:&lt;/p&gt;

&lt;p&gt;✅ Processes everything locally&lt;/p&gt;

&lt;p&gt;✅ Makes zero external network requests&lt;/p&gt;

&lt;p&gt;✅ Collects no telemetry&lt;/p&gt;

&lt;p&gt;✅ Requires no account&lt;/p&gt;

&lt;p&gt;Your secrets never leave your machine.&lt;/p&gt;

&lt;p&gt;How To Get Started&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install EnvGuard from the VS Code Marketplace.&lt;/li&gt;
&lt;li&gt;Open the EnvGuard sidebar.&lt;/li&gt;
&lt;li&gt;Scan your workspace.&lt;/li&gt;
&lt;li&gt;Compare environment files.&lt;/li&gt;
&lt;li&gt;Review missing keys and inconsistencies.&lt;/li&gt;
&lt;li&gt;Fix issues before they reach production.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Lessons Learned Building My First Extension&lt;/p&gt;

&lt;p&gt;Building EnvGuard taught me a lot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VS Code extension architecture&lt;/li&gt;
&lt;li&gt;Workspace file scanning&lt;/li&gt;
&lt;li&gt;Configuration parsing&lt;/li&gt;
&lt;li&gt;Publishing to the marketplace&lt;/li&gt;
&lt;li&gt;Developer-focused UX design&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The biggest lesson was that building the extension is only half the job.&lt;/p&gt;

&lt;p&gt;The other half is documentation, tutorials, feedback, and continuous improvement.&lt;/p&gt;

&lt;p&gt;What's Next?&lt;/p&gt;

&lt;p&gt;I'm actively working on improvements and new features.&lt;/p&gt;

&lt;p&gt;Some ideas include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enhanced comparison views&lt;/li&gt;
&lt;li&gt;Better reporting&lt;/li&gt;
&lt;li&gt;Additional configuration formats&lt;/li&gt;
&lt;li&gt;Team collaboration improvements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have suggestions, I'd love to hear them.&lt;/p&gt;

&lt;p&gt;Try EnvGuard&lt;/p&gt;

&lt;p&gt;If you're a developer who works with multiple environments, give EnvGuard a try.&lt;/p&gt;

&lt;p&gt;Feedback, feature requests, and bug reports are always welcome.&lt;/p&gt;

&lt;p&gt;Thanks for reading and supporting my first developer tool project!&lt;/p&gt;

&lt;p&gt;Happy coding.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>showdev</category>
      <category>tooling</category>
      <category>vscode</category>
    </item>
  </channel>
</rss>
