HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
rivo
tview
Go2018–2026
rivo / tview

tview

Terminal UI library with rich, interactive widgets — written in Golang

15Distinct people
15Mentions
0Explicit recommenders
14.1KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Terminal UI library with rich, interactive widgets — written in Golang

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year15 dated mentions

Observed mentions: 2018-01-12 07:08:06 UTC to 2026-01-23 17:03:01 UTC.

0123452018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC110
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC211
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC505
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC101
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC110
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC312
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC202

What Hacker News says

15 sources
acc_10000·Nov 20, 2025Submission

Show HN: Lazygotest – Terminal UI for running Go tests interactively

Hi HN! I'm the creator of lazygotest. I built this because I love lazygit's UX and wanted the same smooth experience for Go testing. Instead of switching between terminal and editor, or scrolling through verbose test output, you can now: Browse packages and tests with vim-style navigation (j/k, gg/G) Run tests with Enter and watch real-time results in split panes Track test history and quickly rerun failed tests with 'r' Filter tests with '/' to focus on what matters Technical highlights: Built with tview (https://github.com/rivo/tview) for the TUI framework Catppuccin Mocha color scheme, WCAG 2.1 AA compliant for accessibility Auto-detects go.mod by walking up parent directories Supports Docker for isolated testing environments The interface has 4 panes: Packages (left), Tests (top-right), History (middle-ri
Read the rest
ght), and Log (bottom). The status bar shows context-sensitive keyboard shortcuts. Looking for contributors! Here are some areas where I'd love help: CI/CD integration: GitHub Actions workflow for running tests in lazygotest Benchmark mode: Support for go test -bench with visual graphs Coverage visualization: Show code coverage % per package/test Test generation: Auto-generate table-driven tests from function signatures Plugin system: Allow custom commands and key bindings If you're interested in contributing, the codebase follows Clean Architecture with clear separation between domain/application/infrastructure layers. PRs are welcome – I aim for small, focused changes (≤20 lines when possible) with tests included. I'd love to hear your feedback, especially from fellow gophers who spend a lot of time running tests! Install: go install -tags tview github.com/YuminosukeSato/lazygotest/cmd/lazygotest@latest
1 points · Open discussion
I've had Claude tell me that I've reached the maximum messages for a session, which was painful. Having said that it was a good circuit breaker, Claude was stuck on three wrong solutions to an issue, and having to re explain it meant that I realised what the bug was without further input from Claude edit: FTR where Claude was stuck (and where it helped me) First, I have a TUI application, written in Go, that is using https://github.com/rivo/tview - I chose tview basically at random, having no background in any of the TUI libraries available, but tview looked like it was easy to understand. I had written some of the code, but it wasn't doing what I wanted of it. I had gotten Gemini to help me, but it still wasn't doing what I wanted. Claude first suggested that the application needed to be refactored to make it into an Event Driven MVC T
Read the rest
UI app, which I absolutely agreed with. Claude counselled me on my understanding of the Run() command, and how it was a blocking call (which I hadn't realised). The refactor/re-architecture fixed the way things were being run a great deal. However I still had a bug that I could not fix, and Claude was equally stumped (as was Gemini) When I clicked on any of the components in a flex row, the first component behaved as though it was the one that was clicked. When I clicked on any of the components in another flex row the last one behaved as though it was the one that had been clicked. Claude repeatedly told me that the problem was that the closure that used the index of components (inside a loop) was the problem. This was outright wrong because 1. That bug has been fixed in Go. 2. The code I was sharing with Claude had the "fix" of local := index - meaning that the local version should have been correct 3. I repeatedly showed Claude logs (that it suggested I create) that showed that ALL of the components were in fact receiving the click event. The second solution that Claude was fixated on was that th components overlapped one another inside the flex box. This was partially incorrect. I told Claude that I could visually see that the components weren't overlapping. I also told Claude that there were borders around each component that clearly weren't overlapping. I gave Claude debug logs that showed that the mouse click co-ordinates were inside a single component. The third issue that Claude claimed was the problem was a click propagation bug in the library. Claude repeated these claims several times, despite me showing that it wasn't either of the first two things, and I could not find a bug/issue for the third. The circuit breaking made me stop and think about things, and I realised that all I really had to do was say inside the box "If a click event has been received AND (and this was the fix) You (the component) now have focus then behave". What I suspect is happening is that the flex box container receives the click, and then tells all of its children that a click happened. What disappoints me is, if what I suspect is true, then I would have expected Claude to have known that either from the tview documentation OR from reading the tview code (Claude does seem well acquainted with the library) If my suspicion is correct then the second and third issues Claude claimed were causing me the bug were partially true, that is the flex container is on top of the components, which is an overlap, just not the components themselves overlapping. The second partial correctness is that the way that the click is being propagated to the components seems to be that the flex box container is telling all of its child components that a click occurred. This isn't really a bug, it's likely well documented (as if I would RTFM...) or clear from the code.
In GPT-5: Overdue, overhyped and underwhelming. And that's not the worst of it

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.