<?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: Breno Alvim</title>
    <description>The latest articles on DEV Community by Breno Alvim (@brenoalvim).</description>
    <link>https://dev.to/brenoalvim</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%2F851831%2F87b13fe4-a946-4702-a478-7bddabb3aaaa.png</url>
      <title>DEV Community: Breno Alvim</title>
      <link>https://dev.to/brenoalvim</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/brenoalvim"/>
    <language>en</language>
    <item>
      <title>EchoPort: a real-time localhost port scanner for people who run too many dev servers</title>
      <dc:creator>Breno Alvim</dc:creator>
      <pubDate>Fri, 18 Sep 2026 01:49:38 +0000</pubDate>
      <link>https://dev.to/brenoalvim/echoport-a-real-time-localhost-port-scanner-for-people-who-run-too-many-dev-servers-3ng1</link>
      <guid>https://dev.to/brenoalvim/echoport-a-real-time-localhost-port-scanner-for-people-who-run-too-many-dev-servers-3ng1</guid>
      <description>&lt;p&gt;I run a lot of projects in parallel (ADHD? We'll never know) and half the time I open a new terminal, forget which port the last three services landed on, and end up guessing between 3000, 5173, and 8080 until something loads. So I built EchoPort: it scans localhost and shows you what's alive right now, no config file, no manual port list to maintain.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;EchoPort scans your machine's localhost ports and shows which dev services are running. Three scan modes, depending on how much you want to sweep:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Default&lt;/strong&gt;: 8 essential ports (3000, 5173, 8080, and the other usual suspects)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Common&lt;/strong&gt;: around 50 ports and variations, covering React, Vite, Django, Rails, Storybook, and similar dev servers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;All&lt;/strong&gt;: sweeps the full 65,535 port range&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Noise filtering
&lt;/h2&gt;

&lt;p&gt;Some Windows services (SSDP, WSDAPI, WinRM, Delivery Optimization) respond to HTTP requests and show up as false positives on a full scan. EchoPort filters the known offenders by default. If you want to see one anyway, you can add it back manually.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preferences that stick
&lt;/h2&gt;

&lt;p&gt;Scan mode, auto-refresh, interval, and any manually added ports persist in the browser. Close the tab, come back later, and it's exactly how you left it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack
&lt;/h2&gt;

&lt;p&gt;React, TypeScript, Vite, Tailwind CSS. Nothing exotic, just fast to run and easy to read.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Opens at &lt;code&gt;http://localhost:5173&lt;/code&gt;. It's local by design, since it's scanning your own machine.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/obrenoalvim/echoport" rel="noopener noreferrer"&gt;https://github.com/obrenoalvim/echoport&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What's your current trick for keeping track of which dev server is on which port?&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>showdev</category>
      <category>software</category>
      <category>tools</category>
    </item>
    <item>
      <title>win-mute: an open-source switch for Windows AI, telemetry, and bloatware (Windows 10/11)</title>
      <dc:creator>Breno Alvim</dc:creator>
      <pubDate>Fri, 11 Sep 2026 18:50:07 +0000</pubDate>
      <link>https://dev.to/brenoalvim/win-mute-an-open-source-switch-for-windows-ai-telemetry-and-bloatware-windows-1011-1oil</link>
      <guid>https://dev.to/brenoalvim/win-mute-an-open-source-switch-for-windows-ai-telemetry-and-bloatware-windows-1011-1oil</guid>
      <description>&lt;p&gt;I'm tired of Windows shipping things I never asked for: AI features turned on by default, telemetry I can't fully see, bloatware I uninstall every time I set up a new machine. So I built a PowerShell toolkit that shuts all of it off in one place, on both Windows 10 and 11.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;win-mute&lt;/strong&gt; ships 72 tweaks across 6 categories:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Covers&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;Copilot, Recall, Click To Do, Cortana, Bing web search, generative fill, Search Highlights, clipboard Suggested Actions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Telemetry&lt;/td&gt;
&lt;td&gt;Diagnostic data level, DiagTrack, advertising ID, activity history, CEIP, error reporting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Services&lt;/td&gt;
&lt;td&gt;Retail Demo, Maps broker, Fax, Windows Search indexing, Remote Registry, Xbox services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ScheduledTasks&lt;/td&gt;
&lt;td&gt;CEIP, Application Experience, feedback prompts, autochk telemetry, WER queue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bloatware&lt;/td&gt;
&lt;td&gt;25 inbox Appx apps (Xbox apps, Bing Weather/News, Solitaire, Skype, Teams consumer, etc.)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Privacy&lt;/td&gt;
&lt;td&gt;Start/lock screen ads, "Recommended" section, classic right-click menu, taskbar Chat icon, Widgets, OneDrive nags, sponsored app auto-install, and more&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Each tweak is a plain PowerShell object with &lt;code&gt;Apply&lt;/code&gt;, &lt;code&gt;Revert&lt;/code&gt;, and &lt;code&gt;Test&lt;/code&gt; script blocks, touching the same levers those closed-source tools use: Group Policy registry keys, service startup types, scheduled tasks, Appx package removal. Nothing hidden, &lt;code&gt;modules/*.ps1&lt;/code&gt; reads like a list of ingredients.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two rounds of "what do people actually complain about"
&lt;/h2&gt;

&lt;p&gt;Instead of guessing which toggles matter, I searched Reddit and tech-press roundups for real Windows 10/11 complaints (2025-2026) and matched each one to a confirmed registry fix before it went into the code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Windows 11 backlash&lt;/strong&gt;: the gutted right-click menu, Start menu ad badges, forced "Recommended" feed, taskbar Chat icon, silently auto-installed sponsored apps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Windows 10 pain post end-of-support&lt;/strong&gt; (Oct 2025): the recurring "Upgrade to Windows 11" nag on machines staying on 10 for ESU, Bing hijacking the taskbar search box, the People icon nobody asked for, Edge re-planting its desktop shortcut after every update.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Windows 10 vs 11, auto-detected
&lt;/h2&gt;

&lt;p&gt;No version picker. &lt;code&gt;Get-WindowsMajor&lt;/code&gt; checks the build number, and tweaks that only exist on one OS (Copilot, Recall, the classic context menu fix, Widgets) disappear automatically on the other. 64 of the 72 tweaks apply on Windows 10, 70 on Windows 11.&lt;/p&gt;

&lt;h2&gt;
  
  
  CLI and GUI
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Interactive picker&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;\Invoke-WinMute.ps1&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# No prompts, one or more categories&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;\Invoke-WinMute.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Categories&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;AI&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;Telemetry&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-All&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Only the tweaks with zero functional downside&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;\Invoke-WinMute.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-All&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-SafeOnly&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Full rollback&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;\Invoke-WinMute.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Undo&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For anyone who doesn't want to touch PowerShell, &lt;code&gt;START-GUI.bat&lt;/code&gt; opens a WPF window that self-elevates, shows one big "Apply now" button for the recommended safe tweaks, and tucks the full checklist behind "Customize". It switches between English and Portuguese with one click, no restart needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "will I lose anything" question
&lt;/h2&gt;

&lt;p&gt;I went back through all 72 tweaks specifically checking for that. None of them touch personal files, they only flip registry values, service startup type, or scheduled task state, or uninstall a Store app (which removes that app's own local cache, never your Documents or photos). Found one real gap in the audit: forcing "let apps run in background" off globally can stop mail/chat apps from showing live notifications, so I reclassified that one from Safe to Moderate instead of leaving it in the one-click bucket. A System Restore point gets created by default before any change, as a second safety net.&lt;/p&gt;

&lt;p&gt;One thing left alone on purpose: forced Windows Update and auto-restart behavior. Turning that off trades a UX annoyance for unpatched security holes, and that trade isn't worth it even under &lt;code&gt;-All&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/obrenoalvim/win-mute
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;MIT licensed, PowerShell only, no external dependency. Repo: &lt;a href="https://github.com/obrenoalvim/win-mute" rel="noopener noreferrer"&gt;https://github.com/obrenoalvim/win-mute&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What's the Windows "feature" you'd disable first if you could?&lt;/p&gt;

&lt;p&gt;Ps: I'm building BloodLink, a free platform connecting blood donors to donation campaigns.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>privacy</category>
      <category>tools</category>
    </item>
    <item>
      <title>Unblock: a Claude Code skill that keeps trying when a web lookup fails</title>
      <dc:creator>Breno Alvim</dc:creator>
      <pubDate>Fri, 04 Sep 2026 20:10:07 +0000</pubDate>
      <link>https://dev.to/brenoalvim/unblock-a-claude-code-skill-that-keeps-trying-when-a-web-lookup-fails-32g1</link>
      <guid>https://dev.to/brenoalvim/unblock-a-claude-code-skill-that-keeps-trying-when-a-web-lookup-fails-32g1</guid>
      <description>&lt;p&gt;A web search fails. You retry it. It fails again, same way. That loop wastes turns and gets nothing done, so I built a skill that skips the retry and moves on instead.&lt;/p&gt;

&lt;p&gt;Unblock is a Claude Code skill for exactly that moment: a search, scrape, or crawl gets blocked, rate limited, hit with a CAPTCHA, or just returns nothing. Instead of trying the same tool again, it moves to the next one in a fixed order, through 13 free tools, until one gets through.&lt;/p&gt;

&lt;h2&gt;
  
  
  The order matters
&lt;/h2&gt;

&lt;p&gt;The chain runs most general and robust first, then narrows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;agent-reach&lt;/strong&gt; — multi-platform router (Xiaohongshu, X, Bilibili, Reddit, GitHub, YouTube, LinkedIn, RSS, general web)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;last30days&lt;/strong&gt; — recent discussion from Reddit, X, YouTube, TikTok, HN, GitHub&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;crawler&lt;/strong&gt; — Jina Reader, then Scrapling stealth browser, turns a URL into clean markdown&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;web-scraping&lt;/strong&gt; — checks the site first, then picks traffic interception, sitemap, API, or DOM scraping&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;web-scraping-automation&lt;/strong&gt; — Playwright/requests plus generic REST and GraphQL calls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;playwright-web-scraper&lt;/strong&gt; — multi-page structured extraction, rate-limited, respects robots.txt&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;web-scraper&lt;/strong&gt; — multi-strategy extractor for tables, lists, prices, contacts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;site-crawler&lt;/strong&gt; — straightforward multi-page crawl&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;scraping-skills&lt;/strong&gt; — bundle of academic and ethical scraping techniques&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;scrapy-web-scraping&lt;/strong&gt; — Scrapy framework for large multi-page crawls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;news-extractor&lt;/strong&gt; — extraction tuned for news and articles across 12 sites&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scrapling&lt;/strong&gt; (Python library, last resort) — write and run a short stealth-fetch script&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;claude-in-chrome&lt;/strong&gt; — live browser automation for sites needing login, interaction, or real rendering&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A block or an empty result sends it to the next tool. It never retries the same one twice. When the chain finishes, it reports which tool worked, or that all 13 failed.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's left out, on purpose
&lt;/h2&gt;

&lt;p&gt;Anything that needs an API key, a paid tier, or an account: firecrawl-scrape, x402-based tools, proxy-vendor skills. The whole chain stays free, no signup anywhere in it.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to skip it
&lt;/h2&gt;

&lt;p&gt;A plain factual question that a normal web search already answers doesn't need this. Save it for sites that fight back: paywalls, bot walls, JS-heavy pages, social platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;No install:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Read &lt;a href="https://github.com/obrenoalvim/unblock" rel="noopener noreferrer"&gt;https://github.com/obrenoalvim/unblock&lt;/a&gt; and follow the Unblock skill."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As a plugin, available in every session:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin marketplace add obrenoalvim/unblock
/plugin install unblock@unblock
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then ask for it, or let it trigger on its own next time a search, scrape, or crawl blocks.&lt;/p&gt;

&lt;p&gt;Each tool in the chain needs its own install to run that step. Skip an install and the chain moves past it.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/obrenoalvim/unblock" rel="noopener noreferrer"&gt;https://github.com/obrenoalvim/unblock&lt;/a&gt; (MIT)&lt;/p&gt;

&lt;p&gt;What's the web lookup that blocks you most often?&lt;/p&gt;

&lt;p&gt;Ps: I'm building BloodLink, a free platform connecting blood donors to donation campaigns.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>claude</category>
      <category>tools</category>
      <category>webscraping</category>
    </item>
    <item>
      <title>no-watermark: your text may already carry an invisible mark, here's how to check</title>
      <dc:creator>Breno Alvim</dc:creator>
      <pubDate>Mon, 17 Aug 2026 16:23:58 +0000</pubDate>
      <link>https://dev.to/brenoalvim/no-watermark-your-text-may-already-carry-an-invisible-mark-heres-how-to-check-40hh</link>
      <guid>https://dev.to/brenoalvim/no-watermark-your-text-may-already-carry-an-invisible-mark-heres-how-to-check-40hh</guid>
      <description>&lt;p&gt;Anthropic confirmed it this month: Claude now embeds an imperceptible watermark into the text it generates. Quoting their own help center article, "you won't see it, and it doesn't change the meaning, quality, or readability." It travels with the text through copy-paste, and it covers the Claude app, Claude Code, Claude Cowork, Claude Tag, the API, and the AWS/Google Cloud/Microsoft Foundry integrations, worldwide. Files get signed C2PA provenance metadata on top of that. The trigger is Anthropic signing Article 50(2) of the EU AI Act, the Code of Practice on Transparency of AI-Generated Content. Models shipped from August 2, 2026 onward carry the mark from day one, and older models are getting it retrofitted.&lt;/p&gt;

&lt;p&gt;This isn't unique to Claude. Invisible-character watermarking has been circulating in AI-generated text for a while: zero-width space/joiner, variation selectors, tag-block encoding, bidi controls, anomalous non-ASCII spaces, alternate line-break characters. None of it shows up on screen. All of it survives a copy-paste into your document, your PR description, your customer email.&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://github.com/obrenoalvim/no-watermark" rel="noopener noreferrer"&gt;no-watermark&lt;/a&gt; to inspect and strip that layer through deterministic character normalization, not a model guessing at patterns.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it strips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Format characters: zero-width space/joiner/non-joiner, word joiner, BOM, bidi controls&lt;/li&gt;
&lt;li&gt;Variation selectors (U+FE00-FE0F, U+E0100-E01EF)&lt;/li&gt;
&lt;li&gt;Tag block characters (U+E0000-E007F)&lt;/li&gt;
&lt;li&gt;Anomalous spaces: all 16 non-ASCII Unicode "Zs" space characters, normalized to a regular space&lt;/li&gt;
&lt;li&gt;Line separator variants: NEL, LINE SEPARATOR, PARAGRAPH SEPARATOR, converted to newlines&lt;/li&gt;
&lt;li&gt;Soft hyphens, Mongolian vowel separator, combining grapheme joiner&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On top of the invisible-character layer, it also targets stylistic AI-writing tells that trip detectors: overused em dashes, formulaic structure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Safety guards
&lt;/h2&gt;

&lt;p&gt;Zero-width joiners are also how legitimate emoji sequences work (family, couple, flag combos), and ZWNJ has real linguistic use in Indic scripts. Both are preserved by default. Pass &lt;code&gt;--no-emoji-guard&lt;/code&gt; if you want unconditional removal instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it doesn't do
&lt;/h2&gt;

&lt;p&gt;Anthropic's own writeup admits their mark isn't proof of authorship, just a signal content "may have been processed by Claude," and it breaks under heavy editing, paraphrasing, translation. My tool has a similar boundary: statistical token-distribution watermarking (Kirchenbauer-style green/red list methods) is out of scope. That kind of mark isn't a set of extra characters, it's a bias in which tokens got picked during generation, so removing it requires paraphrasing, not character stripping.&lt;/p&gt;

&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;

nowatermark detect suspicious.txt
nowatermark clean suspicious.txt &lt;span class="nt"&gt;-o&lt;/span&gt; clean.txt &lt;span class="nt"&gt;--report&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"text"&lt;/span&gt; | nowatermark clean -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python, tested with pytest, MIT licensed. Ships with a Claude Code skill, so you can run detection straight from a conversation and see what's embedded in the text you're working with.&lt;/p&gt;

&lt;p&gt;It's early and functional, and the invisible-marking landscape just got a lot more mainstream. Repo's at &lt;a href="https://github.com/obrenoalvim/no-watermark" rel="noopener noreferrer"&gt;https://github.com/obrenoalvim/no-watermark&lt;/a&gt;. Issues and PRs welcome. Have you checked what's hiding in text you've copied from an AI tool recently?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>llm</category>
      <category>privacy</category>
    </item>
    <item>
      <title>Claude Terminal Hub: stop hunting for folders to resume Claude Code sessions</title>
      <dc:creator>Breno Alvim</dc:creator>
      <pubDate>Fri, 14 Aug 2026 21:06:42 +0000</pubDate>
      <link>https://dev.to/brenoalvim/claude-terminal-hub-stop-hunting-for-folders-to-resume-claude-code-sessions-2p4j</link>
      <guid>https://dev.to/brenoalvim/claude-terminal-hub-stop-hunting-for-folders-to-resume-claude-code-sessions-2p4j</guid>
      <description>&lt;p&gt;Every time I went back to an old Claude Code session, the process was the same: open Explorer, remember which folder that project lived in, open a terminal there, type &lt;code&gt;claude --resume &amp;lt;id&amp;gt;&lt;/code&gt; from memory or paste it from somewhere. I got tired of it and built &lt;strong&gt;Claude Terminal Hub&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;It's a Windows desktop app, built with Electron, that lists your recent Claude Code sessions from every project on the machine in a single screen. It reads the &lt;code&gt;.jsonl&lt;/code&gt; files Claude Code writes to &lt;code&gt;~/.claude/projects&lt;/code&gt;, zero configuration needed. Each session shows an AI-generated title and the last prompt sent, sorted by recent activity.&lt;/p&gt;

&lt;p&gt;One click on a session opens a terminal panel in the right folder, already running &lt;code&gt;claude --resume&lt;/code&gt;. You can keep up to 4 panels open side by side, each one a real PowerShell process via &lt;code&gt;node-pty&lt;/code&gt;, not a fake console. Arrow keys, &lt;code&gt;vim&lt;/code&gt;, the Claude Code TUI itself, all work normally inside the panel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Under the hood
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Main process (Node) reads only the first and last KB of each &lt;code&gt;.jsonl&lt;/code&gt; file, not the full transcript, to list sessions fast even with a large session history.&lt;/li&gt;
&lt;li&gt;A narrow &lt;code&gt;contextBridge&lt;/code&gt; between main and renderer, no broad IPC surface.&lt;/li&gt;
&lt;li&gt;React frontend, one &lt;code&gt;xterm.js&lt;/code&gt; instance per terminal panel.&lt;/li&gt;
&lt;li&gt;Each panel spawns a real PowerShell process through &lt;code&gt;node-pty&lt;/code&gt;, so shell state, arrow keys, and TUIs behave like a native terminal.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting it
&lt;/h2&gt;

&lt;p&gt;Windows installer ready (NSIS), no admin rights required. Open source on GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/obrenoalvim/claude-terminal-hub" rel="noopener noreferrer"&gt;https://github.com/obrenoalvim/claude-terminal-hub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Does anyone else miss multiplexing Claude Code terminals like this, or already solved it a different way?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>electron</category>
      <category>software</category>
      <category>tools</category>
    </item>
  </channel>
</rss>
