terminal user interface to jujutsu. Focused on speed and clarity
9
fork

Configure Feed

Select the types of activity you want to include in your feed.

log

+78
+23
jj_tui/lib/test/jj_log.json
··· 1 + 2 + {"commit_id":"eb18e72467676c4561bd84dd7b3818f56798f615","parents":["0c7424083cb13984968e9a2445ebcda7fc529367"],"change_id":"oyksztqkrlptsrtqypkuwywprkommwyw","description":"1\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-02T09:18:41+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-05T19:42:18+08:00"}} 3 + {"commit_id":"d790353859e26e1eac6e2cd609a3314e1e0eed00","parents":["1ece15f3968dacd34d6b82f9f75bf8ad48517727","c117fb6e86e4d289d192fd2671780ea29430996b"],"change_id":"ryytrytktumkkzknwwutqztmvuxlzzzt","description":"22\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-02T09:18:25+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-05T19:42:18+08:00"}} 4 + {"commit_id":"c117fb6e86e4d289d192fd2671780ea29430996b","parents":["9f7d1f591375e75373d51030ba5fff1a8ab0bbaf"],"change_id":"qxpnouvlkkknpwupwlottoutzortmmzz","description":"1\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-02T09:18:16+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-05T19:42:18+08:00"}} 5 + {"commit_id":"9f7d1f591375e75373d51030ba5fff1a8ab0bbaf","parents":["88fe78b7b02bdda96e091b0a5eb4269a4db4b5cb"],"change_id":"lrrvvvpkpwznkwulrmynxqpmzmzpuwwt","description":"222\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-02T09:17:28+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-05T19:42:18+08:00"}} 6 + {"commit_id":"88fe78b7b02bdda96e091b0a5eb4269a4db4b5cb","parents":["d71b56f2092397adc186797175e1799e8262d12f"],"change_id":"pqplusztrmmklmosskmxlkkpksqolmtl","description":"222\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-02T09:18:10+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-05T19:42:18+08:00"}} 7 + {"commit_id":"6bd8e68976a7701a1231f336f74c5edc9c2cbaed","parents":["d71b56f2092397adc186797175e1799e8262d12f","0c7424083cb13984968e9a2445ebcda7fc529367","1ece15f3968dacd34d6b82f9f75bf8ad48517727","2654e022a51769299a0351f034073f1ef2252c28"],"change_id":"owrxkmrkzqmsrkmpnotoptsxmsupnzyq","description":"22\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2025-12-23T18:27:14+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-05T19:42:18+08:00"}} 8 + {"commit_id":"d71b56f2092397adc186797175e1799e8262d12f","parents":["0c7424083cb13984968e9a2445ebcda7fc529367","1ece15f3968dacd34d6b82f9f75bf8ad48517727"],"change_id":"sqvmzllpqtqvvswlkkpvxuquputsowwt","description":"1\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2025-12-23T18:27:16+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-05T19:42:18+08:00"}} 9 + {"commit_id":"0c7424083cb13984968e9a2445ebcda7fc529367","parents":["2654e022a51769299a0351f034073f1ef2252c28"],"change_id":"nqvkmksporsourrpzqwtvrpvllnnpvus","description":"1\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2025-12-23T18:25:55+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-05T19:42:18+08:00"}} 10 + {"commit_id":"2271919927f7b342b6ef51fe8732dd0653aa3496","parents":["ec28d2ea113664b05a196ceea9779fc485a676d2"],"change_id":"uunkomlmyuszvyxvrrnoqpwwqynomlpq","description":"2\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-02T09:16:53+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-02T09:16:53+08:00"}} 11 + {"commit_id":"1ece15f3968dacd34d6b82f9f75bf8ad48517727","parents":["2654e022a51769299a0351f034073f1ef2252c28"],"change_id":"wyxswxtpvsypppknvrzmltvnypsyuqtm","description":"1\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2025-12-23T18:25:36+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-02T09:13:06+08:00"}} 12 + {"commit_id":"2654e022a51769299a0351f034073f1ef2252c28","parents":["af63945d4563be2dc9d0b37592417f38ae5b6a8e","67a7da0d9c3f6d995e60a867b0c33af5a5cf99cf"],"change_id":"lqvvmmrvqlwxwvxmpnunslvrnrutluoz","description":"22\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2025-12-23T17:57:41+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-02T09:13:06+08:00"}} 13 + {"commit_id":"ec28d2ea113664b05a196ceea9779fc485a676d2","parents":["af63945d4563be2dc9d0b37592417f38ae5b6a8e","67a7da0d9c3f6d995e60a867b0c33af5a5cf99cf"],"change_id":"pxnknktulrwtrqptkktsopqzpwxunnym","description":"2\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2025-12-23T17:51:25+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-02T09:13:06+08:00"}} 14 + {"commit_id":"67a7da0d9c3f6d995e60a867b0c33af5a5cf99cf","parents":["3386e4f5827ccb7f05473f09217b9d9107bf4192"],"change_id":"urrykmzkmrtulnzsousvkuytxotplyku","description":"1\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2025-12-23T17:51:16+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-02T09:13:06+08:00"}} 15 + {"commit_id":"3386e4f5827ccb7f05473f09217b9d9107bf4192","parents":["d9b6e8ee3c3082659c392b819ef34607c5306dfc"],"change_id":"qwpmxoltwxskqtpzxuxtkuyrstuymvlt","description":"wip:5\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2025-12-23T16:12:50+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-02T09:13:06+08:00"}} 16 + {"commit_id":"d9b6e8ee3c3082659c392b819ef34607c5306dfc","parents":["a8f75d20713496cacfffec5a3669976a14ff7f86","74a5db23865de05e3b05ebed4904413fe9791bcb","832b8aafa20c8fc6b3663da9a72f2623551a3087"],"change_id":"pymnwxmzqlxpmszpsupxlxosnvtwxsrx","description":"3\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2025-12-23T16:12:38+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-02T09:13:06+08:00"}} 17 + {"commit_id":"a8f75d20713496cacfffec5a3669976a14ff7f86","parents":["af63945d4563be2dc9d0b37592417f38ae5b6a8e"],"change_id":"punyqstqnuttlxnoyyyxylqwqxwpxtln","description":"66\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2025-12-23T16:56:33+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-02T09:13:06+08:00"}} 18 + {"commit_id":"74a5db23865de05e3b05ebed4904413fe9791bcb","parents":["af63945d4563be2dc9d0b37592417f38ae5b6a8e"],"change_id":"xxyqrwlsvqtsmxrsyrxymonrlltskzrt","description":"22\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2025-12-23T16:12:43+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-02T08:59:32+08:00"}} 19 + {"commit_id":"8e6225509a1144b6ddae51163a6878e2df96be3f","parents":["af63945d4563be2dc9d0b37592417f38ae5b6a8e"],"change_id":"uslsksyxmwsspownwxsqkoqxvwzyvwss","description":"1\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-02T08:57:51+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2026-01-02T08:57:51+08:00"}} 20 + {"commit_id":"c5f072c36ee17ff1f35a7b171d5d8fd536e7eb42","parents":["af63945d4563be2dc9d0b37592417f38ae5b6a8e"],"change_id":"toyqvunsxtyyxrzpryuwxnwtvttoqqwv","description":"2\\\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2025-12-23T17:53:22+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2025-12-23T17:53:22+08:00"}} 21 + {"commit_id":"832b8aafa20c8fc6b3663da9a72f2623551a3087","parents":["af63945d4563be2dc9d0b37592417f38ae5b6a8e"],"change_id":"nulwxyuovkzqopkyslmvumtlvmqozvtt","description":"2\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2025-12-23T16:11:00+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2025-12-23T16:11:00+08:00"}} 22 + {"commit_id":"af63945d4563be2dc9d0b37592417f38ae5b6a8e","parents":["0000000000000000000000000000000000000000"],"change_id":"ykkkpqptrszzqyzmrlqkzszxlkuuyqsk","description":"1\n","author":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2025-12-23T16:10:54+08:00"},"committer":{"name":"Eli Dowling","email":"eli.jambu@gmail.com","timestamp":"2025-12-23T16:10:54+08:00"}} 23 + {"commit_id":"0000000000000000000000000000000000000000","parents":[],"change_id":"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz","description":"","author":{"name":"","email":"","timestamp":"1970-01-01T00:00:00Z"},"committer":{"name":"","email":"","timestamp":"1970-01-01T00:00:00Z"}}
+55
scripts/update_render_jj_graph_test_data.sh
··· 1 + #!/usr/bin/env bash 2 + set -euo pipefail 3 + 4 + # Regenerate the JSONL fixture used by `jj_tui/lib/render_jj_graph_tests.ml`. 5 + # 6 + # Usage: 7 + # ./scripts/update_render_jj_graph_test_data.sh [REVSET] [OUTFILE] 8 + # 9 + # Defaults: 10 + # REVSET = 'all()' 11 + # OUTFILE = 'test/jj_log.json' 12 + # 13 + # Notes: 14 + # - Output is JSONL (one JSON object per line). 15 + # - `wip` is a heuristic derived from the description's first line starting with "wip:". 16 + 17 + REVSET="${1:-all()}" 18 + OUTFILE="${2:-test/jj_log.json}" 19 + 20 + echo "Updating $OUTFILE with revset: $REVSET" >&2 21 + 22 + TEMPLATE=$(cat <<'JJTEMPLATE' 23 + '{' 24 + ++ '"commit_id":' ++ json(commit_id) 25 + ++ ',"parents":[' ++ parents.map(|c| json(c.commit_id())).join(",") ++ ']' 26 + ++ ',"change_id":' ++ json(change_id) 27 + ++ ',"description":' ++ json(description) 28 + ++ ',"author":{"name":' ++ json(author.name()) 29 + ++ ',"email":' ++ json(author.email()) 30 + ++ ',"timestamp":' ++ json(author.timestamp()) 31 + ++ '}' 32 + ++ ',"committer":{"name":' ++ json(committer.name()) 33 + ++ ',"email":' ++ json(committer.email()) 34 + ++ ',"timestamp":' ++ json(committer.timestamp()) 35 + ++ '}' 36 + ++ ',"working_copy":' ++ json(current_working_copy) 37 + ++ ',"immutable":' ++ json(immutable) 38 + ++ ',"wip":' ++ json(description.first_line().starts_with("wip:")) 39 + ++ '} 40 + ' 41 + JJTEMPLATE 42 + ) 43 + 44 + if [[ "${VERBOSE:-0}" == "1" ]]; then 45 + echo "TEMPLATE: $TEMPLATE" >&2 46 + fi 47 + 48 + mkdir -p "$(dirname "$OUTFILE")" 49 + # We want a stable "top-to-bottom" order like `jj log`, but without graph text. 50 + # Write to a temp file first so parse errors don't clobber the existing fixture. 51 + tmp_out="${OUTFILE}.tmp" 52 + jj log --no-graph -r "$REVSET" -T "$TEMPLATE" > "$tmp_out" 53 + mv "$tmp_out" "$OUTFILE" 54 + 55 + echo "Wrote $OUTFILE" >&2