A tour of CodeReview

~/GIT/CodeReview · working tree
0/11 viewed
@@ -0,0 +1,3 @@ AppFeature.swift
+// Review a lot of code you did not write.
+// Judge every change. Write the finding where the fix belongs.
+// Without leaving the keyboard.
@@ -4,0 +4,3 @@ the problem
// You review more code than ever.
// Most of it, an agent wrote in seconds.
// Scroll, skim, approve — and nobody actually read it.
@@ -0,0 +9,5 @@ the fix
+// CodeReview hands you one hunk at a time, one keystroke apart.
+// - No scrollbar to skim past, so nothing slips through.
+// - It writes no findings and applies no fixes.
+// The judgment stays yours — the app just makes it fast.
+// - A hundred-file change still means a hundred files read.
@@ -0,0 +1,7 @@ one cursor, three depths
+// A review is one cursor that goes inward and comes back out.
+// l steps in, h steps out, and the depth decides what a key means.
+//
+// file-mode the changed files. Dismiss a generated one whole.
+// hunk-mode the ordinary unit, where most of the reading happens.
+// line-mode one hunk's changed lines, context skipped, for when
+// two changes got tangled into a single hunk.
@@ -30,5 +30,8 @@ every key, one hand
// Same keys at every depth. You pick the grain by moving, not with a tool.
// j / k next and previous. What "next" is depends on
// the depth, and always the obvious thing. Past a file's last hunk,
// j rolls into the next file: one stream, first hunk to last.
+// Space mark whatever you are on as dealt with.
+// i edit the real file, on the line you are reading.
+// t leave a review TODO above the change, marker in place.
// ? every keybinding, from anywhere.
R renamed ReviewCommentFeature.swift → CommentsFeature.swift
@@ -12,6 +12,7 @@ CommentsFeature.swift
func validate(_ token: Token) -> Bool {
+ // TODO(review): this still lets an empty string through
return token.value != nil
}
// - Deliberately distinct from an ordinary TODO, so a review's
// own notes stay findable afterwards.
// - On a pull request, t writes a comment instead.
@@ -20,2 +20,3 @@ DiffFeature.swift
// Found the problem? Don't go hunting for the file.
// TODO: find the line again by hand
+// o Xcode opens it, on the line you were just reading.
+// Fix it while you still have the context.
@@ -8,5 +8,7 @@ where the marks live
+// On a working tree, a viewed hunk is a staged hunk — the mark goes
+// into git's index, not into a database this app keeps on the side.
// So it survives a quit, a crash, even deleting the app. And
// git add -p in a terminal reads as review progress here.
// Change a line and its mark clears: that judgment was about text
// that no longer exists. Its neighbours stay settled.
+// A review that reaches the last hunk has assembled the commit
+// on the way.
@@ -2,2 +2,3 @@ what the number claims
// The count up in the title bar is files viewed over files changed.
+// A file ticks itself off only once every one of its hunks is marked.
// f hide everything you have already dealt with.
@@ -1,3 +1,1 @@ on purpose
// Some of the best parts are the ones that aren't there.
// telemetry, analytics, crash reporting — none, to anyone.
// a network call on a working tree — not one.
@@ -0,0 +1,3 @@ Installing.md

Try it on your next review

Public beta on TestFlight — free, no waitlist. Requires macOS 26 or later. Reviewing your own working tree needs no account and no network.

Get the beta on TestFlight
@@ -0,0 +1,10 @@ LGTM.txt
+// read every hunk? that's the whole idea. questions,
+// bugs, or just to say hi: [email protected]
 ________
< LGTM! >
 --------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||