kajji 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +46 -34
  2. package/package.json +5 -5
package/README.md CHANGED
@@ -1,44 +1,20 @@
1
- # kajji
1
+ ![kajji ascii art](./assets/kajji.png)
2
2
 
3
- > The rudder for your jj
3
+ A simple [jj](https://github.com/martinvonz/jj) terminal UI with custom diff rendering.
4
4
 
5
- A simple terminal UI for [Jujutsu](https://github.com/martinvonz/jj), inspired by [lazygit](https://github.com/jesseduffield/lazygit). Built with [OpenTUI](https://github.com/sst/opentui) and [SolidJS](https://www.solidjs.com/).
5
+ ![normal mode](./assets/normal-mode.png)
6
6
 
7
- ![kajji screenshot](./assets/kajji.png)
7
+ Reviewing local code has never been as prominent as it is today. Coding agents are writing line upon line, and your sorry eyes are the ones that need to trudge through it.
8
8
 
9
- While learning jj I found myself coming back to lazygit to view diffs and traverse the changes I'd made quickly and easily, which has become increasingly important to me with the rise of coding agents. While there are existing jj TUIs, none quite scratched that lazygit itch.
9
+ Kajji makes this new reality less painful with polished jj navigation and manipulation alongside Shiki-powered diff rendering with syntax highlighting and word-level diffs. To allow for jj's log to get the real estate it deserves when you're looking at the diff, while also allowing the width required for side-by-side diff rendering, kajji has two view modes: normal and diff. Switch with ctrl+x and try it out.
10
10
 
11
- Kajji is my attempt to bring the simplicity and polish of lazygit to jj, while also leveraging coding agents effectively and building a TUI for the first time.
11
+ ![diff mode](./assets/diff-mode.png)
12
12
 
13
- > Disclaimer: almost all code in this project has been written by coding agents (primarily Claude Opus 4.5 through [OpenCode](https://github.com/sst/opencode)).
13
+ Why build this? While learning jj I found myself coming back to lazygit to do this quickly and easily - the options for jj didn't quite scratch that lazygit itch of speed, simplicity and polish.
14
14
 
15
- ## Principles
16
-
17
- - **Polish & simplicity** - Do less, but do it well.
18
- - **Intuitive UX** - Sensible defaults, consistent patterns.
19
- - **Snappy** - If it feels slow, it's a bug.
20
-
21
- ## Features
22
-
23
- **Core jj operations:**
24
- - [x] View commit log with graph
25
- - [x] View diffs (difftastic, delta, etc.)
26
- - [x] New / edit / describe / squash / abandon
27
- - [x] Undo / redo with preview
28
- - [x] Bookmarks (create, delete, rename, move)
29
- - [x] Git fetch / push
30
- - [x] Operation log with restore
31
- - [ ] Rebase
32
- - [ ] Split
33
- - [ ] Conflict resolution
15
+ Kajji is my attempt to bring the UX of lazygit to jj, while also aiming for top-class diff rendering and exploring leveraging coding agents effectively. I'm building this for myself first and foremost, but I hope it can be helpful to others too.
34
16
 
35
- **TUI polish:**
36
- - [x] Vim-style navigation (j/k, ctrl+u/d)
37
- - [x] Mouse support (click, double-click, scroll)
38
- - [x] Collapsible file tree with status colors
39
- - [x] Help palette with fuzzy search (`?`)
40
- - [ ] Multi-select for batch operations
41
- - [ ] Search and filter
17
+ > Disclaimer: almost all code in this project has been written by coding agents (primarily Claude Opus 4.5 through [OpenCode](https://github.com/sst/opencode) (100% via API of course 😌)).
42
18
 
43
19
  ## Installation
44
20
 
@@ -70,12 +46,44 @@ bun install
70
46
  bun dev
71
47
  ```
72
48
 
49
+ ## Principles
50
+
51
+ - **Polish & simplicity** - Do less, but do it well.
52
+ - **Intuitive UX** - Sensible defaults, consistent patterns.
53
+ - **Snappy** - If it feels slow, it's a bug.
54
+
55
+ ## Features
56
+
57
+ **Core jj operations:**
58
+ - [x] View commit log with graph
59
+ - [x] View diffs with syntax highlighting and word-level emphasis
60
+ - [x] New / edit / describe / squash / abandon
61
+ - [x] Rebase with revision picker
62
+ - [x] Split (suspends TUI for jj's native split)
63
+ - [x] Undo / redo with preview
64
+ - [x] Bookmarks (create, delete, rename, move)
65
+ - [x] Git fetch / push
66
+ - [x] Operation log with restore
67
+ - [ ] Conflict resolution
68
+
69
+ **TUI polish:**
70
+ - [x] Vim-style navigation (j/k, ctrl+u/d)
71
+ - [x] Mouse support (click, double-click, scroll)
72
+ - [x] Collapsible file tree with status colors
73
+ - [x] Help palette with fuzzy search (`?`)
74
+ - [x] Focus modes for normal browsing vs diff viewing
75
+ - [x] Recent repository switcher
76
+ - [x] Automatic update notifications
77
+ - [ ] Multi-select for batch operations
78
+ - [ ] Search and filter
79
+
73
80
  ## Usage
74
81
 
75
82
  Run `kajji` in any jj repository:
76
83
 
77
84
  ```bash
78
- kajji
85
+ kajji # current directory
86
+ kajji /path/to/repo # specific directory
79
87
  ```
80
88
 
81
89
  ### Keybindings
@@ -86,6 +94,8 @@ kajji
86
94
  | `Tab` | Cycle focus between panels |
87
95
  | `Enter` | Drill into commit / file |
88
96
  | `Escape` | Back / close modal |
97
+ | `ctrl+x` | Toggle focus mode (normal / diff) |
98
+ | `ctrl+o` | Open recent repository |
89
99
  | `?` | Show help with fuzzy search |
90
100
  | `q` | Quit |
91
101
 
@@ -98,6 +108,8 @@ kajji
98
108
  | `d` | Describe change |
99
109
  | `s` | Squash into parent |
100
110
  | `a` | Abandon change |
111
+ | `r` | Rebase |
112
+ | `S` | Split |
101
113
  | `u` / `U` | Undo / redo |
102
114
  | `f` / `F` | Git fetch / fetch all |
103
115
  | `p` / `P` | Git push / push all |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kajji",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "A terminal UI for Jujutsu: the rudder for your jj",
5
5
  "bin": {
6
6
  "kajji": "./bin/kajji"
@@ -9,10 +9,10 @@
9
9
  "postinstall": "node ./script/postinstall.mjs"
10
10
  },
11
11
  "optionalDependencies": {
12
- "kajji-darwin-arm64": "0.2.0",
13
- "kajji-darwin-x64": "0.2.0",
14
- "kajji-linux-x64": "0.2.0",
15
- "kajji-linux-arm64": "0.2.0"
12
+ "kajji-darwin-arm64": "0.3.0",
13
+ "kajji-darwin-x64": "0.3.0",
14
+ "kajji-linux-x64": "0.3.0",
15
+ "kajji-linux-arm64": "0.3.0"
16
16
  },
17
17
  "repository": {
18
18
  "type": "git",