vr — read code and take notes; every call is logged in a private jj sidecar. read a file (line-numbered, relative to a jj revision): vr read FILE whole file vr read FILE:120-180 line range (or FILE:120 for one line) vr read -r REV FILE the file as it is in another jj change search (regex): vr grep PATTERN [PATH] search the working copy vr grep -r REV PATTERN PATH search another change (scope with PATH) take a note while reading (ids count up from 1 per session): vr note -f FILE:10-42 TEXT... about a line range vr note -t struct -f FILE:10-42 TEXT... about a struct/enum/const/fn/... vr note -r REV -f FILE TEXT... about code in another change vr note -reply 12 TEXT... reply to log-wide note #12 vr query -op note shows both the session-local id and the log-wide id used by -reply and vrsite /note/N permalinks. REV is any jj revset; default @ (the working copy). The repo-local revset alias vr_log names the log change. vr creates it lazily as an anonymous child of root(); it never appears in the project working copy. Every new entry records the full target change id and exact target commit id. An existing repo-root vr-log.jsonl is read and imported on the first append; vr leaves that legacy working-tree file for you to remove after migration. The sidecar has no bookmark and is deliberately local-only: a fresh clone will not contain it, so include the jj repository in backups when notes matter.