a very good jj gui
0
fork

Configure Feed

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

fix: use percentage strings for ResizablePanel sizes (v4 treats numbers as pixels)

+16 -7
+1
.gitignore
··· 41 41 42 42 # Tauri 43 43 apps/desktop/src-tauri/target/ 44 + .drift
+4 -4
apps/desktop/src/components/AppShell.tsx
··· 785 785 > 786 786 <ResizablePanel 787 787 id="app-shell-revisions" 788 - defaultSize={isNarrowScreen ? 40 : sidebarWidth} 789 - minSize={isNarrowScreen ? 20 : MIN_SIDEBAR_WIDTH} 790 - maxSize={isNarrowScreen ? 60 : MAX_SIDEBAR_WIDTH} 788 + defaultSize={isNarrowScreen ? "40%" : `${sidebarWidth}%`} 789 + minSize={isNarrowScreen ? "20%" : `${MIN_SIDEBAR_WIDTH}%`} 790 + maxSize={isNarrowScreen ? "60%" : `${MAX_SIDEBAR_WIDTH}%`} 791 791 > 792 792 <section 793 793 ref={revisionsPanelRef} ··· 821 821 withHandle 822 822 orientation={isNarrowScreen ? "vertical" : "horizontal"} 823 823 /> 824 - <ResizablePanel id="app-shell-diff" defaultSize={isNarrowScreen ? 60 : (100 - sidebarWidth)} minSize={30}> 824 + <ResizablePanel id="app-shell-diff" defaultSize={isNarrowScreen ? "60%" : `${100 - sidebarWidth}%`} minSize="30%"> 825 825 <aside className="h-full" aria-label="Diff viewer"> 826 826 <Profiler id="DiffPanel" onRender={onRenderCallback}> 827 827 <PrerenderedDiffPanel
+3 -1
apps/desktop/src/hooks/useKeyboard.ts
··· 227 227 } 228 228 229 229 const altMatch = modifiers.alt === undefined ? !event.altKey : event.altKey === modifiers.alt; 230 + // When shift is not explicitly specified, don't enforce shift state — 231 + // event.key already reflects the shifted character (e.g., "?" vs "/") 230 232 const shiftMatch = 231 - modifiers.shift === undefined ? !event.shiftKey : event.shiftKey === modifiers.shift; 233 + modifiers.shift === undefined ? true : event.shiftKey === modifiers.shift; 232 234 233 235 if (metaCtrlMatch && altMatch && shiftMatch) { 234 236 event.preventDefault();
+7 -2
bun.lock
··· 5 5 "": { 6 6 "name": "tatami", 7 7 "dependencies": { 8 + "react-grab": "^0.1.14", 8 9 "shiki": "^3.21.0", 9 10 }, 10 11 "devDependencies": { ··· 1212 1213 1213 1214 "react-dom": ["react-dom@19.2.3", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.3" } }, "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg=="], 1214 1215 1215 - "react-grab": ["react-grab@0.0.98", "", { "dependencies": { "bippy": "^0.5.28", "solid-js": "^1.9.10" }, "bin": { "react-grab": "dist/cli.cjs" } }, "sha512-PChqv7DWRpsUw+eBqMFNwzhG0vlMv/RXbAuEGrFD3R53k+tKM6B0zgnN4jgIPvDSYEUmni3ApN1IerHOWCIuRQ=="], 1216 + "react-grab": ["react-grab@0.1.14", "", { "dependencies": { "bippy": "^0.5.30", "solid-js": "^1.9.10" }, "peerDependencies": { "react": ">=17.0.0" }, "optionalPeers": ["react"] }, "sha512-oSJYQbUbb7CQeZhyoIFc+0HVvZrHjcjdi92QnxbOCvAyDzjjIsUx5l+zfWHlsPQlpv3qXR7Caf/uYYiQcWePQQ=="], 1216 1217 1217 1218 "react-refresh": ["react-refresh@0.18.0", "", {}, "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw=="], 1218 1219 ··· 1538 1539 1539 1540 "cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], 1540 1541 1542 + "desktop/react-grab": ["react-grab@0.0.98", "", { "dependencies": { "bippy": "^0.5.28", "solid-js": "^1.9.10" }, "bin": { "react-grab": "dist/cli.cjs" } }, "sha512-PChqv7DWRpsUw+eBqMFNwzhG0vlMv/RXbAuEGrFD3R53k+tKM6B0zgnN4jgIPvDSYEUmni3ApN1IerHOWCIuRQ=="], 1543 + 1541 1544 "desktop/vite": ["vite@7.3.1", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA=="], 1542 1545 1543 1546 "desktop/vite-plugin-agentation": ["vite-plugin-agentation@file:../agentation/vite-plugin", { "devDependencies": { "@types/node": "^22.0.0", "tsup": "^8.0.0", "typescript": "^5.0.0", "vite": "^6.0.0" }, "peerDependencies": { "agentation": "*", "vite": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }], ··· 1554 1557 1555 1558 "prompts/kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="], 1556 1559 1557 - "react-grab/bippy": ["bippy@0.5.28", "", { "dependencies": { "@types/react-reconciler": "^0.28.9" }, "peerDependencies": { "react": ">=17.0.1" } }, "sha512-n3UosYu2KoCQDeAw/zSyjoJksT2viBwGhmEgIdCcGXUQgQsmSJc1Hr7s9eneawAlTI2rbKV4gNFUOaotpLfdgA=="], 1560 + "react-grab/bippy": ["bippy@0.5.30", "", { "dependencies": { "@types/react-reconciler": "^0.28.9" }, "peerDependencies": { "react": ">=17.0.1" } }, "sha512-8CFmJAHD3gmTLDOCDHuWhjm1nxHSFZdlGoWtak9r53Uxn36ynOjxBLyxXHh/7h/XiKLyPvfdXa0gXWcD9o9lLQ=="], 1558 1561 1559 1562 "recast/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], 1560 1563 ··· 1595 1598 "cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], 1596 1599 1597 1600 "cross-spawn/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], 1601 + 1602 + "desktop/react-grab/bippy": ["bippy@0.5.28", "", { "dependencies": { "@types/react-reconciler": "^0.28.9" }, "peerDependencies": { "react": ">=17.0.1" } }, "sha512-n3UosYu2KoCQDeAw/zSyjoJksT2viBwGhmEgIdCcGXUQgQsmSJc1Hr7s9eneawAlTI2rbKV4gNFUOaotpLfdgA=="], 1598 1603 1599 1604 "desktop/vite/esbuild": ["esbuild@0.27.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.2", "@esbuild/android-arm": "0.27.2", "@esbuild/android-arm64": "0.27.2", "@esbuild/android-x64": "0.27.2", "@esbuild/darwin-arm64": "0.27.2", "@esbuild/darwin-x64": "0.27.2", "@esbuild/freebsd-arm64": "0.27.2", "@esbuild/freebsd-x64": "0.27.2", "@esbuild/linux-arm": "0.27.2", "@esbuild/linux-arm64": "0.27.2", "@esbuild/linux-ia32": "0.27.2", "@esbuild/linux-loong64": "0.27.2", "@esbuild/linux-mips64el": "0.27.2", "@esbuild/linux-ppc64": "0.27.2", "@esbuild/linux-riscv64": "0.27.2", "@esbuild/linux-s390x": "0.27.2", "@esbuild/linux-x64": "0.27.2", "@esbuild/netbsd-arm64": "0.27.2", "@esbuild/netbsd-x64": "0.27.2", "@esbuild/openbsd-arm64": "0.27.2", "@esbuild/openbsd-x64": "0.27.2", "@esbuild/openharmony-arm64": "0.27.2", "@esbuild/sunos-x64": "0.27.2", "@esbuild/win32-arm64": "0.27.2", "@esbuild/win32-ia32": "0.27.2", "@esbuild/win32-x64": "0.27.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw=="], 1600 1605
+1
package.json
··· 20 20 "typescript": "^5.3.3" 21 21 }, 22 22 "dependencies": { 23 + "react-grab": "^0.1.14", 23 24 "shiki": "^3.21.0" 24 25 } 25 26 }