Casey judges TJ's GUI built on top of Neovim
- YT :: https://www.youtube.com/watch?v=xEctWipNiJA
- Original title :: 🚨🚨 TheStandup: Casey Judges GUI GUI in TUI. Is this the future?🚨🚨
An episode of TheStandup, recorded on Prime's 40th birthday and opposite an Apple event. The premise: last week Casey Muratori said a TUI popup is not a GUI, so TJ DeVries spent under ten days building an actual GUI frontend for Neovim and brought it to be rated on a scale where 0 is TUI and 10 is GUI. Roughly the first third is standup banter; the demo and the critique are the substance.
Before the demo
The running gags: a mock HR complaint about TrashDev loitering at a supermarket Pokémon machine (with photographic evidence of the "no loitering" sign, and a described technique of standing to the side of the camera and doing laps of the self-checkout), a wheatgrass shot that tastes, by consensus, like a lawnmower, and TJ appearing in old-age makeup done by the same artist who worked on a film he priced at $800,000 — which everyone heard as $800 million.
The one technically interesting thread: everyone built fishing games for each other with agents. TJ's is a pixel-art cozy game that, on save, opens a fake Google login and then reveals you have been phished — the game is called Misdirection, and it genuinely scared a colleague, who rated it zero. Prime went for the "cinematic" AAA approach, spent about $800 (roughly $300 of it trying to make the A key move the character left rather than right, with Fable 5.1 Max), and produced a demo with rain falling upwards, waves travelling in two directions, and a sun in the night sky. His conclusion: one-shot vibe-coded slop demos are a nightmare to edit; you have to build up slowly.
What the Neovim GUI is
Neovim can run embedded — instead of drawing itself to a terminal it reports its state to a host program and consumes events back. TJ's frontend uses that, rendering with GPUI (Zed's immediate-mode Rust framework). A separate subsystem runs Bun so plugin-level widgets are written in JavaScript and hot-reload without recompiling the editor; anything that stabilises gets rewritten into Rust. Casey counts the language stack: C (Neovim), Rust (GPUI layer), JavaScript (Bun), Lua (Neovim config, callable from the GUI). TJ's disclaimer on how any of it works: ask the LLM, "we've just been vibing".
Features demoed:
- A native right-click context menu, justified as a place for actions used once a month that don't deserve a keybinding — and useful when debugging.
- A floating Markdown preview that is the same buffer, live-editable from either side, with images, checklists, highlighted code and rendered tables. Prime's motivation: LLMs love tables and sequence diagrams, and you cannot read either in Vim. Rendering updates through a Neovim byte-change callback into tree-sitter and back.
- LSP hovers that overlay text and connect to their icon — something a character grid genuinely can't do, since you can't layer.
- Peek windows where navigating with j/k skips the injected lines rather than treating them as buffer content.
- The feature Casey specifically demanded: literal arrows drawn from a symbol to each of its references, across a large file.
- A live colour-scheme editor with hover states, revert, a discard-changes dialog, and drag-without-lag.
- Doom, which TJ himself dismisses as just a renderer, not integration.
- A brain-rot panel (Subway Surfers, the Minecraft circle-runner, soap cutting), a Cursor SDK chat browser, and a Linear board usable from inside the editor. The Linear view has no webhooks yet, so Prime moving a ticket on his own screen didn't sync.
Asked whether other editors already do this, TJ's answer is that Emacs almost certainly has every one of these features — with Prime adding "at 0.001 frames a second", and TJ conceding the point is separate.
The verdict
Casey gives it a 7. The arrows were the selling point — the thing that finally felt integrated rather than layered. His criticisms: too much emphasis on things that pop over the top, no animation, and nothing where typing a line of code produces a graphical thing beside it. He also holds his ground on the framing: usefulness was never a valid criterion, because the point of a GUI is that it does weird things to announce itself as a GUI. Mini-maps, animated text, delayed typing — all useless, and the last one anti-useful.
TrashDev gives it a 6: everything looked like a modal popup, and he wants something like VS Code's mini-map (immediately shouted down by both Prime and TJ as the dumbest feature ever shipped).
Prime also gives it a 6. His complaint is that the Cursor chat took no advantage of being a GUI at all, and that the one quintessential GUI feature present in every GUI he uses was missing: visible user input lag. TJ promises a fully animated "Prime mode" with a 100ms keystroke delay for next time, which he estimates would have scored an 8 or 9.
TJ's rebuttal is that Prime, of all people, reads Markdown tables and sequence diagrams in the editor and should have valued the live-editable preview higher. He also notes that if he'd put a Pikachu anywhere in it, Trash would have given it a 10 — which spirals into the episode's best idea: card packs you have to rip open to unlock features, and the legendary pull being that you have to read the code yourself.
Next week
A game jam between the three of them, judged by Casey as a stack rank rather than absolute scores. Constraint: digging, scooping, or clearing out a container. Prime's will be multiplayer, and tokens will be burned.