<?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: Antonin Nvh</title>
    <description>The latest articles on DEV Community by Antonin Nvh (@antonin_nvh_9e0396797d2f2).</description>
    <link>https://dev.to/antonin_nvh_9e0396797d2f2</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%2F2147542%2Ffebe69dd-49e8-44e2-8ab2-c7c4969caf74.png</url>
      <title>DEV Community: Antonin Nvh</title>
      <link>https://dev.to/antonin_nvh_9e0396797d2f2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/antonin_nvh_9e0396797d2f2"/>
    <language>en</language>
    <item>
      <title>I built a live diff monitor for the terminal in Rust</title>
      <dc:creator>Antonin Nvh</dc:creator>
      <pubDate>Sun, 14 Jun 2026 20:29:10 +0000</pubDate>
      <link>https://dev.to/antonin_nvh_9e0396797d2f2/i-built-a-live-diff-monitor-for-the-terminal-in-rust-332p</link>
      <guid>https://dev.to/antonin_nvh_9e0396797d2f2/i-built-a-live-diff-monitor-for-the-terminal-in-rust-332p</guid>
      <description>&lt;h1&gt;
  
  
  I built a live diff monitor for the terminal in Rust
&lt;/h1&gt;

&lt;p&gt;I often want to see what changes while a tool is running, not only after the fact.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git diff&lt;/code&gt; is great when you decide to inspect the current state. It is less convenient when a formatter, generator, script, or refactor is changing files and you want a live view beside your editor.&lt;/p&gt;

&lt;p&gt;That is the workflow Livediff is built for.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/SoCkEt7/Livediff" rel="noopener noreferrer"&gt;https://github.com/SoCkEt7/Livediff&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Demo: &lt;a href="https://socket7.github.io/Livediff/" rel="noopener noreferrer"&gt;https://socket7.github.io/Livediff/&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What Livediff does
&lt;/h2&gt;

&lt;p&gt;Livediff watches a directory and displays file changes in an interactive terminal UI.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cargo &lt;span class="nb"&gt;install &lt;/span&gt;livediff
livediff
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can point it at a specific folder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;livediff ./src
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or ignore noisy paths:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;livediff ./src &lt;span class="nt"&gt;--ignore&lt;/span&gt; &lt;span class="s2"&gt;"*.tmp"&lt;/span&gt; &lt;span class="nt"&gt;--ignore&lt;/span&gt; &lt;span class="s2"&gt;"target/"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why a terminal UI?
&lt;/h2&gt;

&lt;p&gt;I wanted something that could stay open next to an editor or test runner.&lt;/p&gt;

&lt;p&gt;A terminal UI fits that workflow well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no context switch to a separate desktop app;&lt;/li&gt;
&lt;li&gt;low resource usage;&lt;/li&gt;
&lt;li&gt;fast startup;&lt;/li&gt;
&lt;li&gt;works naturally over SSH or inside terminal-heavy setups;&lt;/li&gt;
&lt;li&gt;easy to keep open while scripts run.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The core design
&lt;/h2&gt;

&lt;p&gt;Livediff combines a few pieces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;filesystem notifications for real-time updates;&lt;/li&gt;
&lt;li&gt;diff computation to show what changed;&lt;/li&gt;
&lt;li&gt;ignore handling for &lt;code&gt;.gitignore&lt;/code&gt; and custom patterns;&lt;/li&gt;
&lt;li&gt;a Rust TUI built with &lt;code&gt;ratatui&lt;/code&gt; and &lt;code&gt;crossterm&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;syntax highlighting for a more readable diff view.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is not to replace Git.&lt;/p&gt;

&lt;p&gt;The goal is to give you a live “what is changing right now?” pane while you work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it helps
&lt;/h2&gt;

&lt;p&gt;The tool is useful when you are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tweaking a code generator;&lt;/li&gt;
&lt;li&gt;editing templates that produce files elsewhere;&lt;/li&gt;
&lt;li&gt;watching a refactor touch multiple files;&lt;/li&gt;
&lt;li&gt;comparing formatter output while tuning configuration;&lt;/li&gt;
&lt;li&gt;monitoring docs or config changes during a script run.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I learned building it
&lt;/h2&gt;

&lt;p&gt;The interesting part was not only computing diffs. It was making the interface quiet enough to leave open.&lt;/p&gt;

&lt;p&gt;A watcher can become noisy quickly. The UI has to answer a simple question: what changed, and where should I look first?&lt;/p&gt;

&lt;p&gt;That pushed the project toward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;smart filtering;&lt;/li&gt;
&lt;li&gt;compact file lists;&lt;/li&gt;
&lt;li&gt;readable visual hierarchy;&lt;/li&gt;
&lt;li&gt;event-driven redraws instead of constant polling.&lt;/li&gt;
&lt;/ul&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;cargo &lt;span class="nb"&gt;install &lt;/span&gt;livediff
livediff
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repository: &lt;a href="https://github.com/SoCkEt7/Livediff" rel="noopener noreferrer"&gt;https://github.com/SoCkEt7/Livediff&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Browser demo: &lt;a href="https://socket7.github.io/Livediff/" rel="noopener noreferrer"&gt;https://socket7.github.io/Livediff/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you work in terminal-heavy environments and often need to watch generated or changing files, I would like to know what workflow you would test it on first.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>cli</category>
    </item>
  </channel>
</rss>
