kajji 0.1.1 → 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 (3) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +143 -0
  3. package/package.json +5 -5
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 eliaskc
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,143 @@
1
+ ![kajji ascii art](./assets/kajji.png)
2
+
3
+ A simple [jj](https://github.com/martinvonz/jj) terminal UI with custom diff rendering.
4
+
5
+ ![normal mode](./assets/normal-mode.png)
6
+
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
+
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
+
11
+ ![diff mode](./assets/diff-mode.png)
12
+
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
+
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.
16
+
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 😌)).
18
+
19
+ ## Installation
20
+
21
+ > **Requirements**: [jj](https://github.com/martinvonz/jj)
22
+
23
+ ```bash
24
+ # recommended (standalone binary, no dependencies)
25
+ curl -fsSL https://raw.githubusercontent.com/eliaskc/kajji/main/install.sh | bash
26
+
27
+ # or via package manager
28
+ npm install -g kajji
29
+ bun install -g kajji
30
+ pnpm add -g kajji
31
+ yarn global add kajji
32
+
33
+ # or run directly without installing
34
+ npx kajji
35
+ bunx kajji
36
+ ```
37
+
38
+ ### From source
39
+
40
+ > **Requirements**: [Bun](https://bun.sh)
41
+
42
+ ```bash
43
+ git clone https://github.com/eliaskc/kajji.git
44
+ cd kajji
45
+ bun install
46
+ bun dev
47
+ ```
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
+
80
+ ## Usage
81
+
82
+ Run `kajji` in any jj repository:
83
+
84
+ ```bash
85
+ kajji # current directory
86
+ kajji /path/to/repo # specific directory
87
+ ```
88
+
89
+ ### Keybindings
90
+
91
+ | Key | Action |
92
+ | --- | ------ |
93
+ | `j` / `k` | Move down / up |
94
+ | `Tab` | Cycle focus between panels |
95
+ | `Enter` | Drill into commit / file |
96
+ | `Escape` | Back / close modal |
97
+ | `ctrl+x` | Toggle focus mode (normal / diff) |
98
+ | `ctrl+o` | Open recent repository |
99
+ | `?` | Show help with fuzzy search |
100
+ | `q` | Quit |
101
+
102
+ ### Operations
103
+
104
+ | Key | Action |
105
+ | --- | ------ |
106
+ | `n` | New change |
107
+ | `e` | Edit change |
108
+ | `d` | Describe change |
109
+ | `s` | Squash into parent |
110
+ | `a` | Abandon change |
111
+ | `r` | Rebase |
112
+ | `S` | Split |
113
+ | `u` / `U` | Undo / redo |
114
+ | `f` / `F` | Git fetch / fetch all |
115
+ | `p` / `P` | Git push / push all |
116
+
117
+ ### Bookmarks
118
+
119
+ | Key | Action |
120
+ | --- | ------ |
121
+ | `c` | Create bookmark |
122
+ | `d` | Delete bookmark |
123
+ | `r` | Rename bookmark |
124
+ | `b` | Set bookmark on commit |
125
+ | `m` | Move bookmark |
126
+
127
+ See [PROJECT](./context/PROJECT.md) for the full roadmap.
128
+
129
+ ## Built With
130
+
131
+ - [OpenTUI](https://github.com/sst/opentui) + [SolidJS](https://www.solidjs.com/) - Modern TypeScript TUI framework
132
+ - [Bun](https://bun.sh) - Fast JavaScript runtime
133
+ - [jj (Jujutsu)](https://github.com/martinvonz/jj) - Git-compatible VCS
134
+
135
+ ## Related Projects
136
+
137
+ - [lazygit](https://github.com/jesseduffield/lazygit) - The inspiration for this project
138
+ - [jjui](https://github.com/idursun/jjui) - Go-based jj TUI
139
+ - [lazyjj](https://github.com/Cretezy/lazyjj) - Rust-based jj TUI
140
+
141
+ ## License
142
+
143
+ MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kajji",
3
- "version": "0.1.1",
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.1.1",
13
- "kajji-darwin-x64": "0.1.1",
14
- "kajji-linux-x64": "0.1.1",
15
- "kajji-linux-arm64": "0.1.1"
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",