Repository navigation
Releases: kunkka19xx/lgtm
Release list
Lgtm 0.1.6
Upgrade
brew upgrade kunkka19xx/tap/lgtmOthers: the README or the guide.
Stacked pull requests
<Space>lp marks a request built on another one with its base, #12 ▸ feat-first-half feat: the second half, so the stack reads off the list. The trunk goes unsaid. A base branch that was merged and deleted, or force-pushed past, still opens: lgtm fetches the commit when the branch is gone.
A checkout is followed, not asked about
Your agent runs git checkout -b fix/thing and lgtm re-diffs against the branch it is now on, says now on fix/thing and moves the badge. Comments are kept per branch in .lgtm/branch-<name>.jsonl, so the ones written on main come back when you check it out again instead of re-anchoring onto code they were never about. The old comments.jsonl is adopted once.
Config without a restart
:config editopens your config in$EDITORand re-reads it when you come back.:config edit repoopens.lgtm/config.toml.:config reloadre-reads it in place.<C-y>in the?popup copies the selected row as the[keys]line that would bind it, every spelling included.
Also
- Chinese.
[ui] language = "zh", thanks @LuckTerence. - Shell and
.envsyntax highlighting, the latter thanks @sanglam2806. - Lists hold one size as the selection moves instead of growing and shrinking under your eye;
[ui] fixed_list = falsebrings the old fit back. Thanks @sanglam2806. - Replies: answer your own remark in its thread,
<C-p>posts just one to the request, and the comment keys are the same everywhere. - Japanese text measures and wraps by its real width.
- The GitHub code is now behind a forge interface, the first step toward GitLab and Codeberg.
What's Changed
- fix: issue with japenese chars by @kunkka19xx in #44
- feat: serve things for clients like mobile and web by @kunkka19xx in #45
- feat: syntax highlight for shell by @kunkka19xx in #46
- chore: reply comment fix by @kunkka19xx in #49
- fix: branch refresh by @kunkka19xx in #50
- feat: reload config in app, modify help popup by @kunkka19xx in #51
- chore: refactor gh.zig by @kunkka19xx in #52
- support syntax highlight for env by @sanglam2806 in #53
- add fixed size popup in default setting by @sanglam2806 in #56
- feat: lgtm works with stacked prs by @kunkka19xx in #57
- feat(i18n): add Simplified Chinese UI support (Closes #29) by @LuckTerence in #58
New Contributors
- @LuckTerence made their first contribution in #58
Full Changelog: v0.1.5...v0.1.6
v0.1.5 Replace git with lgtm!
Upgrade
brew upgrade kunkka19xx/tap/lgtmOthers: the README or the guide.
Use it instead of git
alias git=lgtm holds. What lgtm cannot express it hands to git verbatim, terminal and exit code included, so add -p, commit, rebase -i and log -p all work. What it answers itself:
| you type | you get |
|---|---|
git diff |
the review, in the pane |
git status |
one table: what changed, by how much, when |
git risk |
what the change did to the tests |
| everything else | git's, unchanged |
lgtm git <command> always reaches the real one.
lgtm risk
The one question git cannot answer. A deleted test, an added skip, a body that stopped asserting: git diff shows all three as lines, and lines are the part of a diff people skim.
src/auth.zig 2 tests removed, 3 fewer assertions
5 − test "rejects an expired token" {
src/parse.go 1 skip added
4 + t.Skip("flaky in CI")
Exits 1 when something was weakened, so CI can ask too: lgtm risk --base origin/main. In the pane it is the same scan ]w walks. By content, never by path. Zig, Go, Python, JavaScript, TypeScript, Rust, Swift.
lgtm status
One table, printed and gone.
● R src/core/{old => new}/app.zig +3 −3 2h ago
src/ui/
◐ M ├─ app.zig +12 −4 27m ago
○ A └─ status.zig +210 0 just now
● all of it staged, ◐ some, ○ none, ? untracked. A directory with more than one changed file becomes a header, which is what makes the shape of a turn visible. Piped, it flattens back to whole paths, so lgtm status | grep src/ui keeps working.
Conversations on a pull request
<Space>vcopens the thread. Every message, author and age on each, yours marked(you).<CR>edits,rreplies,ddeletes.- A conversation is one row under the line, not one per message. Five stacked would be most of an eighty-column pane spent saying there are five.
- Your own remarks edit and delete where they live, on the request. Somebody else's is refused.
- A
suggestionblock is drawn as the edit it is, signed and coloured the way the diff signs it. <C-s>says who asked for what: the request's remarks go to your agent alongside yours, each with its author, as3 of mine, 4 from the request.
A commit is a turn
<Space>lt on a request lists the commits it was built from and ]t [t walk them, newest first. Read-only: comments go on the whole request, where their line numbers mean something to GitHub.
Also
- Markdown, with the hunk header naming the section:
@@ #4 | Installbeats@@ #4in somebody's README. SQL too, thanks @sanglam2806. - Japanese.
[ui] language = "ja"draws every notice, list and badge in it. - The wheel scrolls the review inside tmux. Hold
Shiftto select as before, or[ui] scroll_lines = 0to hand the mouse back. lgtm themesprints the bundled ones.:tireddrops the screen on the floor.
What's Changed
- fix: scroll works for tmux by @kunkka19xx in #24
- fun: what we do when we're tired? by @kunkka19xx in #26
- fix: increase bundle size limit by @kunkka19xx in #30
- chore: update test fixtures by @kunkka19xx in #31
- feat: syntax highlight support for SQL by @sanglam2806 in #33
- docs: Add pr and issue templates by @kunkka19xx in #34
- feat: edit your own comment, view comment by @kunkka19xx in #32
- PR made up by @kunkka19xx in #35
- feat: turns in a PR by @kunkka19xx in #37
- ui: Add Japanese Language by @kunkka19xx in #38
- feat: better status report by @kunkka19xx in #39
- feat: replace git by @kunkka19xx in #40
- feat: PR's comments enhancement by @kunkka19xx in #41
- feat: markdown support by @kunkka19xx in #42
- release: v0.1.5 by @kunkka19xx in #43
New Contributors
- @sanglam2806 made their first contribution in #33
Full Changelog: v0.1.4...v0.1.5
v0.1.4 PR review
Review pull requests
lgtm --pr 123, or:pr 123without restarting.:pr offcomes back.<Space>lplists the open ones.:pr list allincludes merged and closed.- Remarks already on the request come down with the diff, with their authors.
:post,:approve,:request-changeshand yours back as one review.<C-p>posts a single one.<Space>gcwrites a suggestion the author applies with one click.
Needs gh, logged in. Nothing else changes without it.
Also
- Syntax highlighting for JSON, YAML, TOML and Dockerfiles.
- Multi-line lists in
config.toml, with comments and a trailing comma. Thanks @khongtrunght. - A preview panel beside every list: the pane's screen, the remark, the head of a file's diff.
- A spinner while
ghruns, so the pane never looks frozen.
Upgrade
brew upgrade kunkka19xx/tap/lgtmOthers: see the README or the guide.
DEMO
lgtm-pr.mov
What's Changed
- feat: syntax highlight for json by @kunkka19xx in #13
- feat: Multiple preview panels by @kunkka19xx in #14
- feat: PR review with lgtm by @kunkka19xx in #17
- chore: multiline lists in config by @khongtrunght in #16
- feat: posting comments to a PR by @kunkka19xx in #19
- feat: list PRs of a repo by @kunkka19xx in #20
- feat: syntax highlight for docker, yaml, toml by @kunkka19xx in #21
- refactor: break down app.zig by @kunkka19xx in #22
- prep: loading animation, prepare for release by @kunkka19xx in #23
New Contributors
- @khongtrunght made their first contribution in #16
Full Changelog: v0.1.3...v0.1.4
v0.1.3
Support
- C, C++, C#, lua
- Fix bugs: git while using lgtm, moving files
- Add a popup to connect to agent chat session (worked with tmux, i didn't test others)
- Expanding, Folding lines in a file
Upgrade:
- Macos brew
brew upgrade kunkka19xx/tap/lgtm- Others: Read Readme or user guide
What's Changed
- chore: update guide by @kunkka19xx in #7
- feat: syntax highlight for lua by @kunkka19xx in #8
- feat: expand hidden lines by @kunkka19xx in #9
- feat: syntax highlight for c classes by @kunkka19xx in #11
- feat: v0.1.3 by @kunkka19xx in #12
Full Changelog: v0.1.2...v0.1.3
v0.1.2 Java Support
Fix
- Indent issue with golang. Thank @dont-wait for the finding
Add
- Java code highlight support
What's Changed
- chore: fix indent by @kunkka19xx in #5
- feat: java support by @kunkka19xx in #6
New Contributors
- @kunkka19xx made their first contribution in #5
Full Changelog: v0.1.1...v0.1.2
v0.1.1 Themes switching and bugs fixed
Pick a theme without leaving the pane, and two things that used to look broken.
Themes, from inside lgtm
:theme takes a name and <Tab> walks the seven bundled ones, so you can see each one on your own diff instead of guessing from a screenshot.
terminal catppuccin tokyo-night gruvbox dracula rose-pine kanagawa
:theme kanagawa
:theme on its own tells you which one is on. :colorscheme and :colo do the same thing if that is what your fingers type. It lasts for the session, and the status line hands you the config line to keep it.
Images no longer come out as noise
A new PNG used to be rendered as its bytes, which buried the rest of the review under a screen of garbage. Anything that is not text now gets one row instead:
logo.png
PNG image | 1200x630 | 8.5 KB
Kind, size, and pixel dimensions for PNG, JPEG, GIF, BMP and WebP. A deleted binary says so. The +0 -0 is gone from those rows, since counting lines in a file that has none was never telling you anything.
Highlighting for files outside the review
A file opened with <Space>F that your agent has not touched used to render plain. It is highlighted now, like everything else. Costs about a tenth of a millisecond per thousand lines, once, then it is cached.
Building from source
make dev installs the working tree as lgtm-dev, so it sits beside a released lgtm instead of shadowing it. make clean-dev takes it away again.
Install
# macOS and Linux, arm64 and x86_64 - checksum-verified, no sudo
curl -fsSL https://raw.githubusercontent.com/kunkka19xx/lgtm/main/scripts/install.sh | sh
brew install kunkka19xx/tap/lgtm # macOS
paru -S lgtm-bin # Arch, or lgtm-git to build main or `yay -S lgtm-bin`
nix run github:kunkka19xx/lgtm # Nix
nix profile add --refresh github:kunkka19xx/lgtmThen run lgtm in any git repository, in a pane next to your agent. ? lists every key.
Verify a download against SHA256SUMS below.
Full Changelog: v0.1.0...v0.1.1
lgtm v0.1.0
Read what your agent wrote - before you say LGTM.
A terminal diff reviewer for agentic coding. It runs in a pane beside your agent, shows what changed as it changes, and lets you point at exact lines when you reply.
lgtm is what you type after reviewing. This is the tool that lets you mean it.
Screen.Recording.2026-09-05.at.1.20.58.mov
Install
# macOS and Linux, arm64 and x86_64 - checksum-verified, no sudo
curl -fsSL https://raw.githubusercontent.com/kunkka19xx/lgtm/main/scripts/install.sh | sh
brew install kunkka19xx/tap/lgtm # macOS
paru -S lgtm-bin # Arch, or lgtm-git to build main
nix run github:kunkka19xx/lgtm #Nix
nix profile add github:kunkka19xx/lgtmThen run lgtm in any git repository, in a pane next to your agent. ? lists every key.
You also need git. tmux is optional.
Status
Pre-alpha, and used daily by its author. It started as a Go tool for reading diffs in a terminal; this is a rewrite in Zig, rebuilt around a coding agent rather than a person. The loop works end to end.
Verify a download against SHA256SUMS below.
Full Changelog: https://github.com/kunkka19xx/lgtm/commits/v0.1.0