Skip to content

jk manual

Create and reshape changes

Describe, create, edit, abandon, squash, and restore changes with explicit operands.

Start with a small mutable change you can recognize by its description and diff. The log’s a menu contains revision actions. Move the cursor and marks before opening that menu: their roles differ between actions, and the working-copy change is a separate object.

Give a change a useful description

Select the revision and press a m. The inline editor starts with its existing description.

  1. Edit the summary with the arrow keys and ordinary text editing controls.
  2. Press Ctrl-j to add a line break. Enter alone saves.
  3. Press Enter to run describe, or Esc to discard the draft.
  4. Open the revision with Enter from the log and verify the complete description.

Ctrl-u clears the editor. Ctrl-z undoes an edit to the text; Ctrl-Shift-z redoes it. These are editor operations before saving, separate from repository undo. Describing rewrites the selected change’s metadata and can rewrite descendants as jj propagates that change. It does not commit the cursor’s files into a new revision.

If jj rejects the description update, the editor retains the draft. Inspect the failure in C and correct the repository problem before saving again. To reverse a successful save, inspect its operation and use the recovery workflow.

Start a new change

Use New when you want a fresh working-copy change on one or several existing parents. With no marks, the cursor is the parent. With marks, the ordered marked revisions are the parents.

  1. Press c to clear old marks if you want a single parent.
  2. Select the parent, or mark each intended parent with Space in the desired order.
  3. Press a n. This executes immediately; there is no confirmation dialog.
  4. Verify that @ and the selection move to the new change and that its parent edges are correct.
  5. Press a m to describe the new work, then edit files in your normal editor.

Multiple parents create a merge change. Its file content can contain conflicts that need resolution. The action resolves the chosen parents to exact commit IDs before running jj new. A stale, ambiguous, or divergent marked change must be reselected instead of being silently replaced by a different revision.

Esc can cancel the action menu before you choose New; it cannot cancel an already executed New. Use operation recovery if you created the wrong change. Advanced creation options, including insertion and a message supplied with creation, require a noninteractive command such as :new -m 'Start follow-up' @. Read the displayed command and confirm its operands before pressing Enter in command mode, because command mode executes directly.

Resume editing an existing change

Use Edit when the files in this workspace should belong to an existing mutable change. Select it in the log and press a e. Edit runs immediately, updates the workspace’s @, and changes its files to that change’s content.

Verify the @ marker, press s to inspect status, and inspect d before making more file edits. Other changes stay in the repository. An immutable target is rejected by jj; read the error instead of assuming the working copy moved. The action menu can be cancelled with Esc before choosing Edit. For a successful but unintended switch, inspect the operation and undo it before continuing work.

Abandon a change

Abandon removes a change from the visible graph and rebases its descendants according to jj’s rules. It differs from deleting a bookmark, which removes a name, and forgetting a workspace, which removes workspace metadata.

Select a change and press a a. jk checks whether it is empty. An empty change is abandoned immediately. A non-empty change, or an unsuccessful emptiness check, opens a confirmation with Cancel selected.

  1. Read the revision identity and summary.
  2. Use Left/Right or Tab to select View diff, then Enter to inspect the patch.
  3. In the embedded diff, Enter or Esc returns to the summary; n cancels abandonment.
  4. In the summary, choose Abandon and press Enter, or press y to confirm directly.
  5. Verify that the change disappears and that its descendants have the intended parents.

In the summary, n or Esc cancels. Enlarge a terminal that cannot display the decision controls; confirmation is disabled there. After a successful abandonment, use operation recovery to restore an unintentionally abandoned change.

The embedded diff uses a fixed Git format and jk addition/deletion colors. It does not inherit the normal diff view’s configured presentation. If that makes the content harder to review, cancel, inspect the change with d, then reopen abandonment. This presentation gap is tracked in the UX audit.

The native flow abandons one revision. Multi-revision abandonment is a captured command-mode form; its Enter key executes without this native confirmation.

Combine changes with whole-change squash

Use squash to move the content of one or more changes into an existing destination. Begin with mutable source changes and a distinct destination. Review each source’s diff first.

  1. Clear unrelated marks with c.
  2. Mark each source with Space, in the order you want it listed.
  3. Move the cursor to the destination without marking it.
  4. Press a s to open the preview.
  5. Check every Source, the Destination, whole changes, and keep destination description.
  6. Press Enter to execute, or Esc to cancel without squashing.
  7. Inspect the destination’s diff and description, then inspect the graph for removed sources or rewritten descendants.

Squash moves entire change contents. It keeps the destination description and lets jj handle emptied sources and descendants. File-list selection, folded hunks, and diff search do not narrow its scope. The graph reselects the destination after success.

A missing source mark, a destination also marked as a source, duplicate sources, or a stale marked revision prevents preparation. Clear or repair those marks and reopen the preview. An immutable revision or a jj execution failure remains inspectable in C. If changing immutable history is intentional, Run Options provides a command-scoped override.

If the result is wrong, inspect the resulting operation before undoing. For only some files, use an explicit noninteractive jj command with a fileset; native file and hunk squash are unavailable. Interactive selection requires leaving jk for a foreground tool.

Restore a whole tree into the working copy

Use Restore when @ should receive all paths from another revision. For example, a mutable working copy may contain an unwanted experiment, and an earlier revision has the tree you want back.

  1. Press c to clear marks. Restore rejects marked inputs because it has one source.
  2. Select the revision whose complete tree you want to copy.
  3. Press a r and check the exact source, the @ destination, and all paths scope.
  4. Press Enter to execute, or Esc to cancel.
  5. Inspect s and the diff of @, including files deleted or recreated by the copy.

Restore copies tree content; it does not move the working-copy parent or adopt the source description. It can replace existing working-copy edits. The source is frozen to an exact commit, while the native destination is the current workspace’s @. Restore’s Run Options keep the latest operation so @ does not become a historical working copy by accident.

On failure, inspect C, refresh if another process changed the repository, and select again. Use operation recovery after an unwanted successful restore. A selected diff file does not limit this operation. Filesets, alternate destinations, --changes-in, and hunk restore have no native form; use an explicit noninteractive jj command for supported fileset forms or leave jk for interactive selection.

Finish or split work outside these native forms

Commit, split, absorb, duplicate, revert, and conflict resolution do not have native action dialogs. Use noninteractive commands where available. commit acts on the working copy, regardless of which revision is under the log cursor. Foreground editors, diff tools, and merge tools require leaving jk.

Watch the workflow

Remove an empty change and recover it

Remove an empty change and recover it · 0:20 · MP4
Screenshots and terminal evidence
Remove an empty change and recover it: abandon empty action
abandon empty action · Terminal state and styles (JSON)
Read the terminal text
jk jj
›  @  tyskztmk [email protected] 2026-01-01 12:00:00 9b2e071b
·  │  (empty) Empty checkpoint
   ○  ruvyrrtt [email protected] 2026-01-01 12:00:00 407e4d00
   │  Experiment with forecast caching
   ○  kpxnkrzm [email protected] 2026-01-01 12:00:00 844cab80
   │  Configure request timeouts
   ○  wsuulvqr [email protected] 2026-01-01 12:00:00 f09a0843
   │  Add the forecast endpoint
   ○  spxmzzxu [email protected] 2026-01-01 12:00:00 9c125dc3
   │  Document the forecast service
   ◆  Actions

      Change actions:
      > m  Describe revision  local rewrite · enter saves
        n  New change         local rewrite · runs now
        e  Edit change        local rewrite · runs now
        s  Squash revisions   local rewrite · preview
        a  Abandon revision   destructive · checks first
        r  Restore all paths  destructive · preview

      History and recovery:
        u  Undo               local rewrite · runs now
        U  Redo               local rewrite · runs now

      Safety cues show whether actions preview, save, or run now; inspection views stay read-only.
      j/k or arrows move   enter open   action key select   esc close
Remove an empty change and recover it: abandon empty replacement
abandon empty replacement · Terminal state and styles (JSON)
Read the terminal text
jk jj
›  @  rmrllutm [email protected] 2026-01-01 12:00:00 568b6b6f
·  │  (empty) (no description set)
   ○  ruvyrrtt [email protected] 2026-01-01 12:00:00 407e4d00
   │  Experiment with forecast caching
   ○  kpxnkrzm [email protected] 2026-01-01 12:00:00 844cab80
   │  Configure request timeouts
   ○  wsuulvqr [email protected] 2026-01-01 12:00:00 f09a0843
   │  Add the forecast endpoint
   ○  spxmzzxu [email protected] 2026-01-01 12:00:00 9c125dc3
   │  Document the forecast service
   ◆  zzzzzzzz root() 00000000


























? help  H home  L log  r refresh  enter open  d diff  v evolog  s status  space mark  o ops  ...  q quit
Remove an empty change and recover it: abandon empty undone
abandon empty undone · Terminal state and styles (JSON)
Read the terminal text
jk jj
›  @  tyskztmk [email protected] 2026-01-01 12:00:00 9b2e071b
·  │  (empty) Empty checkpoint
   ○  ruvyrrtt [email protected] 2026-01-01 12:00:00 407e4d00
   │  Experiment with forecast caching
   ○  kpxnkrzm [email protected] 2026-01-01 12:00:00 844cab80
   │  Configure request timeouts
   ○  wsuulvqr [email protected] 2026-01-01 12:00:00 f09a0843
   │  Add the forecast endpoint
   ○  spxmzzxu [email protected] 2026-01-01 12:00:00 9c125dc3
   │  Document the forecast service
   ◆  zzzzzzzz root() 00000000


























? help  H home  L log  r refresh  enter open  d diff  v evolog  s status  space mark  o ops  ...  q quit

Binary, tool versions, and file hashes · Accepted pixel, text/style, and video review · action-diagnostics/bin/dependencies.log · action-diagnostics/tape-1.log · Outcome assertions 1 · Outcome assertions 2

All retained evidence (43 files)

Includes source tapes, original helper scripts, fixture details, terminal states, and logs.

Other recorded forms and recovery paths (11)

Cancel when the empty-change check fails

Cancel when the empty-change check fails · 0:11 · MP4
Screenshots and terminal evidence
Cancel when the empty-change check fails: abandon probe failure warning
abandon probe failure warning · Terminal state and styles (JSON)
Read the terminal text
jk jj
›  @  mkvkmoop [email protected] 2026-01-01 12:00:00 ecf9b78d
·  │  (empty) Empty checkpoint
   ○  xvnznxup [email protected] 2026-01-01 12:00:00 8250b3cd
   │  Experiment with forecast caching
   ○  rxvmruwk [email protected] 2026-01-01 12:00:00 4466d9ef
   │  Configure request timeouts
   ○  opkkuzyv [email protected] 2026-01-01 12:00:00 cc423d1c
   │  Add the forecast endpoint
   ○  npummrwv ale   Abandon this change?
   │  Document the
   ◆  zzzzzzzz roo   @ mkvkmoop  Empty checkpoint

                     Couldn't check whether this change is empty. Review its
                     contents before abandoning.


                     Abandon removes this change and its edits from history.
                     No descendant changes will be rebased.
                     Recover with Undo in the action menu.


                         View diff        > Cancel <        Abandon change


                     Tab/←/→ choose · Enter/Space select
                     y abandon · n/Esc cancel
Cancel when the empty-change check fails: abandon probe failure cancelled
abandon probe failure cancelled · Terminal state and styles (JSON)
Read the terminal text
jk jj
›  @  mkvkmoop [email protected] 2026-01-01 12:00:00 ecf9b78d
·  │  (empty) Empty checkpoint
   ○  xvnznxup [email protected] 2026-01-01 12:00:00 8250b3cd
   │  Experiment with forecast caching
   ○  rxvmruwk [email protected] 2026-01-01 12:00:00 4466d9ef
   │  Configure request timeouts
   ○  opkkuzyv [email protected] 2026-01-01 12:00:00 cc423d1c
   │  Add the forecast endpoint
   ○  npummrwv [email protected] 2026-01-01 12:00:00 2e81daa5
   │  Document the forecast service
   ◆  zzzzzzzz root() 00000000


























? help  H home  L log  r refresh  enter open  d diff  v evolog  s status  space mark  o ops  ...  q quit

Binary, tool versions, and file hashes · Accepted pixel, text/style, and video review · action-diagnostics/bin/dependencies.log · action-diagnostics/tape-1.log · Outcome assertions 1

All retained evidence (40 files)

Includes source tapes, original helper scripts, fixture details, terminal states, and logs.

Review a patch before abandoning it

Review a patch before abandoning it · 0:39 · MP4
Screenshots and terminal evidence
Review a patch before abandoning it: abandon review decision
abandon review decision · Terminal state and styles (JSON)
Read the terminal text
jk jj
   @  wnpknrpx [email protected] 2026-01-01 12:00:00 3a3ef9e7
   │  Document cache metrics
   ○  kuyrlyoz [email protected] 2026-01-01 12:00:00 f5422ec2
   │  Add cache metrics
›  ○  qsnqxlpq [email protected] 2026-01-01 12:00:00 67e96905
·  │  Tune forecast caching
   ○  wsvsvmyk [email protected] 2026-01-01 12:00:00 59c895e3
   │  Configure re   Abandon this change?
   ○  wtuuzyss dem
   │  Add the fore   qsnqxlpq  Tune forecast caching
   ○  ynzzxuyy ale
   │  Document the   Changes to abandon (3 files):
   ◆  zzzzzzzz roo
                     D  README.md                                           +0 −3
                     M  config.json                                         +1 −1
                     A  src/cache.js                                        +5 −0

                     Abandon removes this change and its edits from history.
                     2 descendant changes will be rebased onto its parents.
                     Recover with Undo in the action menu.


                         View diff        > Cancel <        Abandon change


                     Tab/←/→ choose · Enter/Space select
                     y abandon · n/Esc cancel
Review a patch before abandoning it: abandon review diff
abandon review diff · Terminal state and styles (JSON)
Read the terminal text
jk jj
   @  wnpknrpx dem   Changes to abandon
   │  Document cac
   ○  kuyrlyoz dem   qsnqxlpq  Tune forecast caching
   │  Add cache me
›  ○  qsnqxlpq dem   diff --git a/README.md b/README.md                             ▲
·  │  Tune forecas   deleted file mode 100644                                       █
   ○  wsvsvmyk dem   index 7ff332c830..0000000000                                   █
   │  Configure re   --- a/README.md                                                █
   ○  wtuuzyss dem   +++ /dev/null                                                  █
   │  Add the fore   @@ -1,3 +0,0 @@                                                █
   ○  ynzzxuyy ale   -# Forecast service                                            █
   │  Document the   -                                                              █
   ◆  zzzzzzzz roo   -A small service for local weather forecasts.                  █
                     diff --git a/config.json b/config.json                         █
                     index f8aed8a9c3..ce5492e67d 100644                            █
                     --- a/config.json                                              █
                     +++ b/config.json                                              ║
                     @@ -1,4 +1,4 @@                                                ║
                      {                                                             ║
                        "requestTimeoutMs": 3000,                                   ║
                     -  "cacheTtlSeconds": 60                                       ║
                     +  "cacheTtlSeconds": 120                                      ║
                      }                                                             ║
                     diff --git a/src/cache.js b/src/cache.js                       ║
                     new file mode 100644                                           ║
                     index 0000000000..af2729bede                                   ║
                     --- /dev/null                                                  ║
                     +++ b/src/cache.js                                             ║
                     @@ -0,0 +1,5 @@                                                ▼



                        > Back <

                     ↑/↓ PgUp/PgDn scroll · Esc/Enter back
Review a patch before abandoning it: abandon review abandoned
abandon review abandoned · Terminal state and styles (JSON)
Read the terminal text
jk jj
›  @  wnpknrpx [email protected] 2026-01-01 12:00:00 1b815f1f
·  │  Document cache metrics
   ○  kuyrlyoz [email protected] 2026-01-01 12:00:00 e91ecd68
   │  Add cache metrics
   ○  wsvsvmyk [email protected] 2026-01-01 12:00:00 59c895e3
   │  Configure request timeouts
   ○  wtuuzyss [email protected] 2026-01-01 12:00:00 19027ff4
   │  Add the forecast endpoint
   ○  ynzzxuyy [email protected] 2026-01-01 12:00:00 75117cf1
   │  Document the forecast service
   ◆  zzzzzzzz root() 00000000


























? help  H home  L log  r refresh  enter open  d diff  v evolog  s status  space mark  o ops  ...  q quit
Review a patch before abandoning it: abandon review restored
abandon review restored · Terminal state and styles (JSON)
Read the terminal text
jk jj
›  @  wnpknrpx [email protected] 2026-01-01 12:00:00 3a3ef9e7
·  │  Document cache metrics
   ○  kuyrlyoz [email protected] 2026-01-01 12:00:00 f5422ec2
   │  Add cache metrics
   ○  qsnqxlpq [email protected] 2026-01-01 12:00:00 67e96905
   │  Tune forecast caching
   ○  wsvsvmyk [email protected] 2026-01-01 12:00:00 59c895e3
   │  Configure request timeouts
   ○  wtuuzyss [email protected] 2026-01-01 12:00:00 19027ff4
   │  Add the forecast endpoint
   ○  ynzzxuyy [email protected] 2026-01-01 12:00:00 75117cf1
   │  Document the forecast service
   ◆  zzzzzzzz root() 00000000
























? help  H home  L log  r refresh  enter open  d diff  v evolog  s status  space mark  o ops  ...  q quit

Binary, tool versions, and file hashes · Accepted pixel, text/style, and video review · action-diagnostics/bin/dependencies.log · action-diagnostics/tape-1.log · Outcome assertions 1 · Outcome assertions 2 · Outcome assertions 3

All retained evidence (46 files)

Includes source tapes, original helper scripts, fixture details, terminal states, and logs.

Inspect an immutable edit failure

Inspect an immutable edit failure · 0:20 · MP4
Screenshots and terminal evidence
Inspect an immutable edit failure: change edit failure error
change edit failure error · Terminal state and styles (JSON)
Read the terminal text
jk jj
   @  koyvzlsk [email protected] 2026-01-01 12:00:00 68d8fc6f
   │  Experiment with forecast caching
   ○  kkxzvplo [email protected] 2026-01-01 12:00:00 a418b882
   │  Configure request timeouts
   ○  zovumuvm [email protected] 2026-01-01 12:00:00 854f9909
   │  Add the forecast endpoint
   ○  ttwyvpty [email protected] 2026-01-01 12:00:00 719f7a39
   │  Document the forecast service
›  ◆  zzzzzzzz root() 00000000




























jj edit failed: Error: The …  ? help  H home  L log  r refresh  enter open  d diff  ...  q quit
Inspect an immutable edit failure: change edit failure history
change edit failure history · Terminal state and styles (JSON)
Read the terminal text
jk Command 3
Command: jj --no-pager --color always --repository /home/runner/work/jk/jk/target/forecast-demo.K8Ua30 e
Source: log unknown
Status: exit 1
Duration: 20 ms
Operation: none
Summary: exit 1: Error: The root commit 000000000000 is immutable

Stdout:
  bytes: 0
  lines: 0
  truncated: no
  redacted: no
  <empty>

Stderr:
  bytes: 71
  lines: 1
  truncated: no
  redacted: no

Error: The root commit 000000000000 is immutable
















? help  V options  r refresh  j/k line  space page  q quit

Binary, tool versions, and file hashes · Accepted pixel, text/style, and video review · action-diagnostics/bin/dependencies.log · action-diagnostics/tape-1.log · Outcome assertions 1

All retained evidence (42 files)

Includes source tapes, original helper scripts, fixture details, terminal states, and logs.

Describe work and start the next change

Describe work and start the next change · 0:56 · MP4
Screenshots and terminal evidence
Describe work and start the next change: change lifecycle cancel
change lifecycle cancel · Terminal state and styles (JSON)
Read the terminal text
jk jj
›  @  nqlpxyqm [email protected] 2026-01-01 12:00:00 16640ceb
·  │  Experiment with forecast caching
   ○  rsmxpoux [email protected] 2026-01-01 12:00:00 f3feb0fe
   │  Configure request timeouts
   ○  uvvtqqqv [email protected] 2026-01-01 12:00:00 67f04040
   │  Add the forecast endpoint
   ○  ornxyotn [email protected] 2026-01-01 12:00:00 4072393a
   │  Document the forecast service
   ◆  zzzzzzzz root() 00000000





             Describe revision
             Revision: nqlpxyqm

             Discard this draft


             Enter save · Esc cancel · Ctrl-j newline · Ctrl-u clear · arrows move
Describe work and start the next change: change lifecycle multiline
change lifecycle multiline · Terminal state and styles (JSON)
Read the terminal text
jk jj
›  @  nqlpxyqm [email protected] 2026-01-01 12:00:00 16640ceb
·  │  Experiment with forecast caching
   ○  rsmxpoux [email protected] 2026-01-01 12:00:00 f3feb0fe
   │  Configure request timeouts
   ○  uvvtqqqv [email protected] 2026-01-01 12:00:00 67f04040
   │  Add the forecast endpoint
   ○  ornxyotn [email protected] 2026-01-01 12:00:00 4072393a
   │  Document the forecast service
   ◆  zzzzzzzz root() 00000000





             Describe revision
             Revision: nqlpxyqm

             Tune forecast cache lifetime

             Keep cached forecasts fresh.

             Enter save · Esc cancel · Ctrl-j newline · Ctrl-u clear · arrows move
Describe work and start the next change: change lifecycle new
change lifecycle new · Terminal state and styles (JSON)
Read the terminal text
jk jj
›  @  kktmzuom [email protected] 2026-01-01 12:00:00 d181e409
·  │  (empty) (no description set)
   ○  nqlpxyqm [email protected] 2026-01-01 12:00:00 5c37b73c
   │  Tune forecast cache lifetime
   ○  rsmxpoux [email protected] 2026-01-01 12:00:00 f3feb0fe
   │  Configure request timeouts
   ○  uvvtqqqv [email protected] 2026-01-01 12:00:00 67f04040
   │  Add the forecast endpoint
   ○  ornxyotn [email protected] 2026-01-01 12:00:00 4072393a
   │  Document the forecast service
   ◆  zzzzzzzz root() 00000000


























? help  H home  L log  r refresh  enter open  d diff  v evolog  s status  space mark  o ops  ...  q quit
Describe work and start the next change: change lifecycle recovered
change lifecycle recovered · Terminal state and styles (JSON)
Read the terminal text
jk jj
›  @  nqlpxyqm [email protected] 2026-01-01 12:00:00 5c37b73c
·  │  Tune forecast cache lifetime
   ○  rsmxpoux [email protected] 2026-01-01 12:00:00 f3feb0fe
   │  Configure request timeouts
   ○  uvvtqqqv [email protected] 2026-01-01 12:00:00 67f04040
   │  Add the forecast endpoint
   ○  ornxyotn [email protected] 2026-01-01 12:00:00 4072393a
   │  Document the forecast service
   ◆  zzzzzzzz root() 00000000




























? help  H home  L log  r refresh  enter open  d diff  v evolog  s status  space mark  o ops  ...  q quit

Binary, tool versions, and file hashes · Accepted pixel, text/style, and video review · action-diagnostics/bin/dependencies.log · action-diagnostics/tape-1.log · Outcome assertions 1 · Outcome assertions 2 · Outcome assertions 3

All retained evidence (48 files)

Includes source tapes, original helper scripts, fixture details, terminal states, and logs.

Finish changes with noninteractive jj commands

Finish changes with noninteractive jj commands · 1:09 · MP4
Screenshots and terminal evidence
Finish changes with noninteractive jj commands: command alternatives commit
command alternatives commit · Terminal state and styles (JSON)
Read the terminal text
jk jj --no-pager --color always --repository /home/runner/work/jk/jk/target/forecast-demo.bVeJwf commit
Command: jj --no-pager --color always --repository /home/runner/work/jk/jk/target/forecast-demo.bVeJwf c
Status: success

Stdout:
<empty>

Stderr:
Working copy  (@) now at: vqpwptwu 08abaccf (empty) (no description set)
Parent commit (@-)      : suxmowpm c9fa0f6c Finalize forecast caching

Actions: e edit/retry command   : run another jj command


























? help  V options  r refresh  j/k line  space page  q quit
Finish changes with noninteractive jj commands: command alternatives duplicate
command alternatives duplicate · Terminal state and styles (JSON)
Read the terminal text
jk jj --no-pager --color always --repository /home/runner/work/jk/jk/target/forecast-demo.bVeJwf duplica
Command: jj --no-pager --color always --repository /home/runner/work/jk/jk/target/forecast-demo.bVeJwf d
Status: success

Stdout:
<empty>

Stderr:
Duplicated 08d06a583f6f as oqxnnwrv c896d636 Experiment with forecast caching

Actions: e edit/retry command   : run another jj command



























? help  V options  r refresh  j/k line  space page  q quit
Finish changes with noninteractive jj commands: command alternatives revert
command alternatives revert · Terminal state and styles (JSON)
Read the terminal text
jk jj --no-pager --color always --repository /home/runner/work/jk/jk/target/forecast-demo.bVeJwf revert
Command: jj --no-pager --color always --repository /home/runner/work/jk/jk/target/forecast-demo.bVeJwf r
Status: success

Stdout:
<empty>

Stderr:
Reverted 1 commits as follows:
  qkrppyln 8617efc1 Revert "Experiment with forecast caching"

Actions: e edit/retry command   : run another jj command


























? help  V options  r refresh  j/k line  space page  q quit
Finish changes with noninteractive jj commands: command alternatives absorb
command alternatives absorb · Terminal state and styles (JSON)
Read the terminal text
jk jj --no-pager --color always --repository /home/runner/work/jk/jk/target/forecast-demo.bVeJwf absorb
Command: jj --no-pager --color always --repository /home/runner/work/jk/jk/target/forecast-demo.bVeJwf a
Status: success

Stdout:
<empty>

Stderr:
Absorbed changes into 1 revisions:
  mtzqzntl 9f95ffb1 Configure request timeouts
Rebased 1 descendant commits.
Working copy  (@) now at: suxmowpm 2070a45c Experiment with forecast caching
Parent commit (@-)      : mtzqzntl 9f95ffb1 Configure request timeouts
Remaining changes:
A src/cache.js

Actions: e edit/retry command   : run another jj command





















? help  V options  r refresh  j/k line  space page  q quit

Binary, tool versions, and file hashes · Accepted pixel, text/style, and video review · action-diagnostics/bin/dependencies.log · action-diagnostics/tape-1.log · Outcome assertions 1 · Outcome assertions 2 · Outcome assertions 3 · Outcome assertions 4

All retained evidence (49 files)

Includes source tapes, original helper scripts, fixture details, terminal states, and logs.

Split and restore selected files

Split and restore selected files · 0:38 · MP4
Screenshots and terminal evidence
Split and restore selected files: command filesets split output
command filesets split output · Terminal state and styles (JSON)
Read the terminal text
jk jj --no-pager --color always --repository /home/runner/work/jk/jk/target/forecast-demo.BM4h8p split -
Command: jj --no-pager --color always --repository /home/runner/work/jk/jk/target/forecast-demo.BM4h8p s
Status: success

Stdout:
<empty>

Stderr:
Selected changes : yokznrqw 01b61ce0 Separate cache policy
Remaining changes: pqxyrvmx 73f351d1 Experiment with forecast caching
Working copy  (@) now at: pqxyrvmx 73f351d1 Experiment with forecast caching
Parent commit (@-)      : yokznrqw 01b61ce0 Separate cache policy

Actions: e edit/retry command   : run another jj command
























? help  V options  r refresh  j/k line  space page  q quit
Split and restore selected files: command filesets split graph
command filesets split graph · Terminal state and styles (JSON)
Read the terminal text
jk jj
   @  pqxyrvmx [email protected] 2026-01-01 12:00:00 73f351d1
   │  Experiment with forecast caching
›  ○  yokznrqw [email protected] 2026-01-01 12:00:00 01b61ce0
·  │  Separate cache policy
   ○  oqysmzlr [email protected] 2026-01-01 12:00:00 b34d7568
   │  Configure request timeouts
   ○  vzvnkxkw [email protected] 2026-01-01 12:00:00 bd5c3187
   │  Add the forecast endpoint
   ○  lsstlszs [email protected] 2026-01-01 12:00:00 f2740001
   │  Document the forecast service
   ◆  zzzzzzzz root() 00000000


























? help  H home  L log  r refresh  enter open  d diff  v evolog  s status  space mark  o ops  ...  q quit
Split and restore selected files: command filesets restore output
command filesets restore output · Terminal state and styles (JSON)
Read the terminal text
jk jj --no-pager --color always --repository /home/runner/work/jk/jk/target/forecast-demo.BM4h8p restore
Command: jj --no-pager --color always --repository /home/runner/work/jk/jk/target/forecast-demo.BM4h8p r
Status: success

Stdout:
<empty>

Stderr:
Working copy  (@) now at: yokznrqw ad06aa30 Experiment with forecast caching
Parent commit (@-)      : oqysmzlr b34d7568 Configure request timeouts
Added 0 files, modified 1 files, removed 0 files

Actions: e edit/retry command   : run another jj command

























? help  V options  r refresh  j/k line  space page  q quit
Split and restore selected files: command filesets retained
command filesets retained · Terminal state and styles (JSON)
Read the terminal text
jk jj diff -r yokznrqw
›  Added regular file src/cache.js: | 5 +++++  [file 1/1]
           1: const forecasts = new Map();
           2:
           3: export function remember(city, forecast) {
           4:   forecasts.set(city, forecast);
           5: }































file 1/1 src/cache.js  f files  [/] file  { } hunk  ? help

Binary, tool versions, and file hashes · Accepted pixel, text/style, and video review · action-diagnostics/bin/dependencies.log · action-diagnostics/tape-1.log · Outcome assertions 1 · Outcome assertions 2

All retained evidence (47 files)

Includes source tapes, original helper scripts, fixture details, terminal states, and logs.

Create a merge from ordered parents

Create a merge from ordered parents · 0:21 · MP4
Screenshots and terminal evidence
Create a merge from ordered parents: new parents ordered
new parents ordered · Terminal state and styles (JSON)
Read the terminal text
jk jj
 * @  umvnknwz [email protected] 2026-01-01 12:00:00 ef07ed51
   │  Experiment with forecast caching
›* │ ○  lmznruqt [email protected] 2026-01-01 12:00:00 32f7a649
   ├─╯  Document cache policy
   ○  pwnyxvux [email protected] 2026-01-01 12:00:00 8effc773
   │  Configure request timeouts
   ○  stowqwrl [email protected] 2026-01-01 12:00:00 1ce5202d
   │  Add the forecast endpoint
   ○  urlssylt [email protected] 2026-01-01 12:00:00 dee57915
   │  Document the forecast service
   ◆  zzzzzzzz root() 00000000


























mark 2/2  ? help  H home  L log  r refresh  enter open  d diff  v evolog  s status  space mark  o ops  …
Create a merge from ordered parents: new parents merged
new parents merged · Terminal state and styles (JSON)
Read the terminal text
jk jj
›  @    txqlxlql [email protected] 2026-01-01 12:00:00 a5d9e99d
   ├─╮  (empty) (no description set)
 * │ ○  lmznruqt [email protected] 2026-01-01 12:00:00 32f7a649
   │ │  Document cache policy
 * ○ │  umvnknwz [email protected] 2026-01-01 12:00:00 ef07ed51
   ├─╯  Experiment with forecast caching
   ○  pwnyxvux [email protected] 2026-01-01 12:00:00 8effc773
   │  Configure request timeouts
   ○  stowqwrl [email protected] 2026-01-01 12:00:00 1ce5202d
   │  Add the forecast endpoint
   ○  urlssylt [email protected] 2026-01-01 12:00:00 dee57915
   │  Document the forecast service
   ◆  zzzzzzzz root() 00000000
























2 marked  ? help  H home  L log  r refresh  enter open  d diff  v evolog  s status  space mark  o ops  …
Create a merge from ordered parents: new parents undone
new parents undone · Terminal state and styles (JSON)
Read the terminal text
jk jj
›  @  umvnknwz [email protected] 2026-01-01 12:00:00 ef07ed51
·  │  Experiment with forecast caching
   │ ○  lmznruqt [email protected] 2026-01-01 12:00:00 32f7a649
   ├─╯  Document cache policy
   ○  pwnyxvux [email protected] 2026-01-01 12:00:00 8effc773
   │  Configure request timeouts
   ○  stowqwrl [email protected] 2026-01-01 12:00:00 1ce5202d
   │  Add the forecast endpoint
   ○  urlssylt [email protected] 2026-01-01 12:00:00 dee57915
   │  Document the forecast service
   ◆  zzzzzzzz root() 00000000


























? help  H home  L log  r refresh  enter open  d diff  v evolog  s status  space mark  o ops  ...  q quit

Binary, tool versions, and file hashes · Accepted pixel, text/style, and video review · action-diagnostics/bin/dependencies.log · action-diagnostics/tape-1.log · Outcome assertions 1 · Outcome assertions 2

All retained evidence (45 files)

Includes source tapes, original helper scripts, fixture details, terminal states, and logs.

Correct ambiguous source selections

Correct ambiguous source selections · 0:12 · MP4
Screenshots and terminal evidence
Correct ambiguous source selections: manual invalid operands rebase
manual invalid operands rebase · Terminal state and styles (JSON)
Read the terminal text
jk jj
 * @  vumxryqq [email protected] 2026-01-01 12:00:00 5531bbe8
   │  Rebase source
›* │ ○  ttwltuyw [email protected] 2026-01-01 12:00:00 59bb7820
   ├─╯  Rebase destination
   ○  qqwoxool [email protected] 2026-01-01 12:00:00 3f7e45c7
   │  Rebase base
   ◆  zzzzzzzz root() 00000000






























mark 2/2  Rebase source is ambiguous:…  ? help  H home  L log  r refresh  enter open  d diff  ...  q qu…
Correct ambiguous source selections: manual invalid operands restore
manual invalid operands restore · Terminal state and styles (JSON)
Read the terminal text
jk jj
 * @  vumxryqq [email protected] 2026-01-01 12:00:00 5531bbe8
   │  Rebase source
›* │ ○  ttwltuyw [email protected] 2026-01-01 12:00:00 59bb7820
   ├─╯  Rebase destination
   ○  qqwoxool [email protected] 2026-01-01 12:00:00 3f7e45c7
   │  Rebase base
   ◆  zzzzzzzz root() 00000000






























mark 2/2  Restore needs one source re…  ? help  H home  L log  r refresh  enter open  d diff  ...  q qu…
Correct ambiguous source selections: manual invalid operands squash
manual invalid operands squash · Terminal state and styles (JSON)
Read the terminal text
jk jj
   @  vumxryqq [email protected] 2026-01-01 12:00:00 5531bbe8
   │  Rebase source
›  │ ○  ttwltuyw [email protected] 2026-01-01 12:00:00 59bb7820
   ├─╯  Rebase destination
   ○  qqwoxool [email protected] 2026-01-01 12:00:00 3f7e45c7
   │  Rebase base
   ◆  zzzzzzzz root() 00000000






























Mark at least one source re…  ? help  H home  L log  r refresh  enter open  d diff  ...  q quit

Binary, tool versions, and file hashes · Accepted pixel, text/style, and video review · action-diagnostics/bin/dependencies.log · action-diagnostics/tape-1.log · Outcome assertions 1

All retained evidence (44 files)

Includes source tapes, original helper scripts, fixture details, terminal states, and logs.

Restore the working copy and recover its content

Restore the working copy and recover its content · 0:20 · MP4
Screenshots and terminal evidence
Restore the working copy and recover its content: manual restore preview
manual restore preview · Terminal state and styles (JSON)
Read the terminal text
jk jj
   @  rqwnnsru [email protected] 2026-01-01 12:00:00 1e36af2a
   │  Restore working content
›  ○  utrtrmnp [email protected] 2026-01-01 12:00:00 1b5a0b97
·  │  Restore base
   ◆  zzzzzzzz root() 00000000






              Restore all paths

              Source: 1b5a0b97f2521ed2b27ad7ffbf4c8f89dc2c3255
              Destination: @ (working copy)
              Affected content: all paths

              ! Changes local files or history.

              Command
              jj --no-pager --color always --repository
              /home/runner/work/jk/jk/target/manual-fixtures/restore.RifzV3/workflows.KjyL
              LA/restore restore --from 1b5a0b97f2521ed2b27ad7ffbf4c8f89dc2c3255 --into @


              enter run  y copy  esc cancel  o options
Restore the working copy and recover its content: manual restore success
manual restore success · Terminal state and styles (JSON)
Read the terminal text
jk jj
   @  rqwnnsru [email protected] 2026-01-01 12:00:00 57db5c38
   │  (empty) Restore working content
›  ○  utrtrmnp [email protected] 2026-01-01 12:00:00 1b5a0b97
·  │  Restore base
   ◆  zzzzzzzz root() 00000000































                                                                ✓ Restored all paths into working copy
? help  H home  L log  r refresh  enter open  d diff  v evolog  s status  space mark  o ops  ...  q quit
Restore the working copy and recover its content: manual restore recovered
manual restore recovered · Terminal state and styles (JSON)
Read the terminal text
jk jj
›  @  rqwnnsru [email protected] 2026-01-01 12:00:00 1e36af2a
·  │  Restore working content
   ○  utrtrmnp [email protected] 2026-01-01 12:00:00 1b5a0b97
   │  Restore base
   ◆  zzzzzzzz root() 00000000































                                                                                     ✓ Undid operation
? help  H home  L log  r refresh  enter open  d diff  v evolog  s status  space mark  o ops  ...  q quit

Binary, tool versions, and file hashes · Accepted pixel, text/style, and video review · action-diagnostics/bin/dependencies.log · action-diagnostics/tape-1.log · Outcome assertions 1 · Outcome assertions 2 · Outcome assertions 3

All retained evidence (44 files)

Includes source tapes, original helper scripts, fixture details, terminal states, and logs.

Combine several sources into one change

Combine several sources into one change · 0:21 · MP4
Screenshots and terminal evidence
Combine several sources into one change: manual squash multiple preview
manual squash multiple preview · Terminal state and styles (JSON)
Read the terminal text
jk jj
 * @  wrxwmpnk [email protected] 2026-01-01 12:00:00 009f2ef4
   │  Squash second source
 * ○  qspvuztq [email protected] 2026-01-01 12:00:00 98549241
   │  Squash source
›  ○  qzokrkon [email protected] 2026-01-01 12:00:00 ee6cccab
·  │  Squash destination
   ◆  zzzzzzzz root() 00000000


              jj squash into ee6cccab815b86ef822a0e58accb16fadcec07d1

              Source 1: 009f2ef4df11a52d27e4bfe389a215e964b9988e
              Source 2: 9854924186b049144f7b767ee5d0ad6ac018eed9
              Destination: ee6cccab815b86ef822a0e58accb16fadcec07d1
              Scope: whole changes
              Message: keep destination description

              ! Rewrites local history.

              Command
              jj --no-pager --color always --repository
              /home/runner/work/jk/jk/target/manual-fixtures/squash-multiple.7PW1Z9/workfl
              ows.pl823U/squash squash --from 009f2ef4df11a52d27e4bfe389a215e964b9988e
              --from 9854924186b049144f7b767ee5d0ad6ac018eed9 --into
              ee6cccab815b86ef822a0e58accb16fadcec07d1 --use-destination-message


              enter run  y copy  esc cancel  o options
Combine several sources into one change: manual squash multiple success
manual squash multiple success · Terminal state and styles (JSON)
Read the terminal text
jk jj
   @  tpnyooxs [email protected] 2026-01-01 12:00:00 fd3de8b5
   │  (empty) (no description set)
›  ○  qzokrkon [email protected] 2026-01-01 12:00:00 18f8b8db
·  │  Squash destination
   ◆  zzzzzzzz root() 00000000































                                                      ✓ Squashed source changes · a u undo · C history
? help  H home  L log  r refresh  enter open  d diff  v evolog  s status  space mark  o ops  ...  q quit
Combine several sources into one change: manual squash multiple recovered
manual squash multiple recovered · Terminal state and styles (JSON)
Read the terminal text
jk jj
›  @  wrxwmpnk [email protected] 2026-01-01 12:00:00 009f2ef4
·  │  Squash second source
   ○  qspvuztq [email protected] 2026-01-01 12:00:00 98549241
   │  Squash source
   ○  qzokrkon [email protected] 2026-01-01 12:00:00 ee6cccab
   │  Squash destination
   ◆  zzzzzzzz root() 00000000





























                                                                                     ✓ Undid operation
? help  H home  L log  r refresh  enter open  d diff  v evolog  s status  space mark  o ops  ...  q quit

Binary, tool versions, and file hashes · Accepted pixel, text/style, and video review · action-diagnostics/bin/dependencies.log · action-diagnostics/tape-1.log · Outcome assertions 1 · Outcome assertions 2 · Outcome assertions 3

All retained evidence (44 files)

Includes source tapes, original helper scripts, fixture details, terminal states, and logs.

Combine one source with an existing change

Combine one source with an existing change · 0:20 · MP4
Screenshots and terminal evidence
Combine one source with an existing change: manual squash preview
manual squash preview · Terminal state and styles (JSON)
Read the terminal text
jk jj
 * @  pwxzmmpu [email protected] 2026-01-01 12:00:00 ebc4b7e4
   │  Squash source
›  ○  tzwuonrv [email protected] 2026-01-01 12:00:00 7be6b114
·  │  Squash destination
   ◆  zzzzzzzz root() 00000000





              jj squash into 7be6b114f42f77b7ea48930f480f931168734843

              Source 1: ebc4b7e488c694a26159973b9d802467e883cdee
              Destination: 7be6b114f42f77b7ea48930f480f931168734843
              Scope: whole changes
              Message: keep destination description

              ! Rewrites local history.

              Command
              jj --no-pager --color always --repository
              /home/runner/work/jk/jk/target/manual-fixtures/squash.wp39hi/workflows.kibey
              N/squash squash --from ebc4b7e488c694a26159973b9d802467e883cdee --into
              7be6b114f42f77b7ea48930f480f931168734843 --use-destination-message


              enter run  y copy  esc cancel  o options
Combine one source with an existing change: manual squash success
manual squash success · Terminal state and styles (JSON)
Read the terminal text
jk jj
   @  zxnzyktr [email protected] 2026-01-01 12:00:00 5d4f2965
   │  (empty) (no description set)
›  ○  tzwuonrv [email protected] 2026-01-01 12:00:00 74e3e883
·  │  Squash destination
   ◆  zzzzzzzz root() 00000000































                                                      ✓ Squashed source changes · a u undo · C history
? help  H home  L log  r refresh  enter open  d diff  v evolog  s status  space mark  o ops  ...  q quit
Combine one source with an existing change: manual squash recovered
manual squash recovered · Terminal state and styles (JSON)
Read the terminal text
jk jj
›  @  pwxzmmpu [email protected] 2026-01-01 12:00:00 ebc4b7e4
·  │  Squash source
   ○  tzwuonrv [email protected] 2026-01-01 12:00:00 7be6b114
   │  Squash destination
   ◆  zzzzzzzz root() 00000000































                                                                                     ✓ Undid operation
? help  H home  L log  r refresh  enter open  d diff  v evolog  s status  space mark  o ops  ...  q quit

Binary, tool versions, and file hashes · Accepted pixel, text/style, and video review · action-diagnostics/bin/dependencies.log · action-diagnostics/tape-1.log · Outcome assertions 1 · Outcome assertions 2 · Outcome assertions 3

All retained evidence (46 files)

Includes source tapes, original helper scripts, fixture details, terminal states, and logs.