Show HN: Ec – a terminal Git conflict resolver inspired by IntelliJ

Show HN (score: 6)
Found: February 04, 2026
ID: 3229

Description

CLI Tool
Show HN: Ec – a terminal Git conflict resolver inspired by IntelliJ Hi HN, I built ec because my friends who are new to development kept getting stuck on Git conflicts.

Most TUI merge tools felt hard to use or non-intuitive for them. The only flow they found easy was the IntelliJ (JetBrains) conflict resolver, so I recreated that experience in the terminal.

ec is a terminal-native, 3-pane conflict resolver with a focused, step-by-step flow. If you try it and leave feedback, I would be really grateful. Thanks!

Repo: https://github.com/chojs23/ec

More from Show

Show HN: Emmtrix ONNX-to-C Code Generator for Edge AI Deployment

Show HN: Emmtrix ONNX-to-C Code Generator for Edge AI Deployment Hi HN, we wanted to share our open source ONNX-to-C code generator. It translates ONNX models into C code for deployment on embedded systems. We developed it for use with emmtrix Code Vectorizer (<a href="https:&#x2F;&#x2F;www.emmtrix.com&#x2F;tools&#x2F;emmtrix-code-vectorizer" rel="nofollow">https:&#x2F;&#x2F;www.emmtrix.com&#x2F;tools&#x2F;emmtrix-code-vectorizer</a>) which optimizes the generated code for various embedded architectures. The ONNX-to-C code generator can however also be used standalone to generate plain C code. In contrast to many other tools, it makes deployment trivial since the generated code is fully standalone and no additional runtime is required.

Show HN: SHDL – A minimal hardware description language built from logic gates

Show HN: SHDL – A minimal hardware description language built from logic gates Hi, everyone!<p>I built SHDL (Simple Hardware Description Language) as an experiment in stripping hardware description down to its absolute fundamentals.<p>In SHDL, there are no arithmetic operators, no implicit bit widths, and no high-level constructs. You build everything explicitly from logic gates and wires, and then compose larger components hierarchically. The goal is not synthesis or performance, but understanding: what digital systems actually look like when abstractions are removed.<p>SHDL is accompanied by PySHDL, a Python interface that lets you load circuits, poke inputs, step the simulation, and observe outputs. Under the hood, SHDL compiles circuits to C for fast execution, but the language itself remains intentionally small and transparent.<p>This is not meant to replace Verilog or VHDL. It’s aimed at: - learning digital logic from first principles - experimenting with HDL and language design - teaching or visualizing how complex hardware emerges from simple gates.<p>I would especially appreciate feedback on: - the language design choices - what feels unnecessarily restrictive vs. educationally valuable - whether this kind of “anti-abstraction” HDL is useful to you.<p>Repo: <a href="https:&#x2F;&#x2F;github.com&#x2F;rafa-rrayes&#x2F;SHDL" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;rafa-rrayes&#x2F;SHDL</a><p>Python package: PySHDL on PyPI<p>To make this concrete, here are a few small working examples written in SHDL:<p>1. Full Adder<p>component FullAdder(A, B, Cin) -&gt; (Sum, Cout) {<p><pre><code> x1: XOR; a1: AND; x2: XOR; a2: AND; o1: OR; connect { A -&gt; x1.A; B -&gt; x1.B; A -&gt; a1.A; B -&gt; a1.B; x1.O -&gt; x2.A; Cin -&gt; x2.B; x1.O -&gt; a2.A; Cin -&gt; a2.B; a1.O -&gt; o1.A; a2.O -&gt; o1.B; x2.O -&gt; Sum; o1.O -&gt; Cout; }</code></pre> }<p>2. 16 bit register<p># clk must be high for two cycles to store a value<p>component Register16(In[16], clk) -&gt; (Out[16]) {<p><pre><code> &gt;i[16]{ a1{i}: AND; a2{i}: AND; not1{i}: NOT; nor1{i}: NOR; nor2{i}: NOR; } connect { &gt;i[16]{ # Capture on clk In[{i}] -&gt; a1{i}.A; In[{i}] -&gt; not1{i}.A; not1{i}.O -&gt; a2{i}.A; clk -&gt; a1{i}.B; clk -&gt; a2{i}.B; a1{i}.O -&gt; nor1{i}.A; a2{i}.O -&gt; nor2{i}.A; nor1{i}.O -&gt; nor2{i}.B; nor2{i}.O -&gt; nor1{i}.B; nor2{i}.O -&gt; Out[{i}]; } }</code></pre> }<p>3. 16-bit Ripple-Carry Adder<p>use fullAdder::{FullAdder};<p>component Adder16(A[16], B[16], Cin) -&gt; (Sum[16], Cout) {<p><pre><code> &gt;i[16]{ fa{i}: FullAdder; } connect { A[1] -&gt; fa1.A; B[1] -&gt; fa1.B; Cin -&gt; fa1.Cin; fa1.Sum -&gt; Sum[1]; &gt;i[2,16]{ A[{i}] -&gt; fa{i}.A; B[{i}] -&gt; fa{i}.B; fa{i-1}.Cout -&gt; fa{i}.Cin; fa{i}.Sum -&gt; Sum[{i}]; } fa16.Cout -&gt; Cout; } }</code></pre>

Show HN: Externalized Properties, a modern Java configuration library

Show HN: Externalized Properties, a modern Java configuration library Externalized Properties is powerful configuration library which supports resolution of properties from external sources such as files, databases, git repositories, and any custom sources

Show HN: 83 browser-use trajectories, visualized

Show HN: 83 browser-use trajectories, visualized Hey all, Justin here. I previously built Phind, the AI search engine for developers.<p>One of the biggest problems we had there was figuring out what went wrong with bad searches. We had tons of searches per day, but less than 1% of users gave any explicit feedback. So we were either manually digging through searches or making general system improvements and hoping they helped.<p>This problem gets harder with agents. Traces are longer and more complex. It takes more effort to review them, so I&#x27;m building a tool that lets you analyze LLM outputs directly to help developers of LLM apps and agents understand where things are breaking and why.<p>I&#x27;ve put together a demo using browser-use agent traces (gpt-5): <a href="https:&#x2F;&#x2F;trails-red.vercel.app&#x2F;viewer" rel="nofollow">https:&#x2F;&#x2F;trails-red.vercel.app&#x2F;viewer</a><p>It&#x27;s early, but I have lots of ideas - live querying of past failures for currently-running agents, preference models to expand sparse signal data.<p>Would love feedback on the demo. Also if you&#x27;re building agents and have 10k+ traces per day that you&#x27;re not looking at but would like to, I&#x27;d love to talk.

No other tools from this source yet.