@hermannbjorgvin/kirby-desktop 1.0.0-beta.5
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.
- package/README.md +57 -0
- package/launcher.mjs +42 -0
- package/main/main.js +13193 -0
- package/package.json +40 -0
- package/preload/preload.cjs +143 -0
- package/renderer/assets/abap-Dg923wIy.js +1 -0
- package/renderer/assets/actionscript-3-CqOcUQ0w.js +1 -0
- package/renderer/assets/ada-CTi7YQtL.js +1 -0
- package/renderer/assets/ahk-BJYYIeOs.js +1 -0
- package/renderer/assets/ahk2-BLfzmBxo.js +1 -0
- package/renderer/assets/andromeeda-CT0vplkN.js +1 -0
- package/renderer/assets/angular-html-DX9ZP5JV.js +1 -0
- package/renderer/assets/angular-ts-1O2hJJmY.js +1 -0
- package/renderer/assets/apache-PcO-DBxQ.js +1 -0
- package/renderer/assets/apex-B4ts4Pdn.js +1 -0
- package/renderer/assets/apl-Dz5ncP8G.js +1 -0
- package/renderer/assets/applescript-Ds_W2jPS.js +1 -0
- package/renderer/assets/ara-C1--7J61.js +1 -0
- package/renderer/assets/asciidoc-DaaWi4fn.js +1 -0
- package/renderer/assets/asm-CTFRnVOM.js +1 -0
- package/renderer/assets/astro-BWgTGUF8.js +1 -0
- package/renderer/assets/aurora-x-C0VKFdlO.js +1 -0
- package/renderer/assets/awk-CrWgQKhV.js +1 -0
- package/renderer/assets/ayu-dark-wZ6ORhBL.js +1 -0
- package/renderer/assets/ayu-light-xXLJ_Ch1.js +1 -0
- package/renderer/assets/ayu-mirage-CQckA_sP.js +1 -0
- package/renderer/assets/ballerina-a0yOSyc5.js +1 -0
- package/renderer/assets/bat-C1qk1Jq1.js +1 -0
- package/renderer/assets/beancount-dPJi_gci.js +1 -0
- package/renderer/assets/berry-CVKoklHx.js +1 -0
- package/renderer/assets/bibtex-DRcCXNgM.js +1 -0
- package/renderer/assets/bicep-jWz-hQ8I.js +1 -0
- package/renderer/assets/bird2-wc5D5_X9.js +1 -0
- package/renderer/assets/blade-DFktsHST.js +1 -0
- package/renderer/assets/bsl-BtUDvyR4.js +1 -0
- package/renderer/assets/c-BG-tZi7o.js +1 -0
- package/renderer/assets/c3-R-USHpyF.js +1 -0
- package/renderer/assets/cadence-BuaeHeSu.js +1 -0
- package/renderer/assets/cairo-BYiDgOF2.js +1 -0
- package/renderer/assets/catppuccin-frappe-CquLvoVK.js +1 -0
- package/renderer/assets/catppuccin-latte-G5tdnGFo.js +1 -0
- package/renderer/assets/catppuccin-macchiato-BZRq1pKO.js +1 -0
- package/renderer/assets/catppuccin-mocha-Bbf5uIw6.js +1 -0
- package/renderer/assets/chapel-D6IdCptL.js +1 -0
- package/renderer/assets/clarity-BJ-KISir.js +1 -0
- package/renderer/assets/clojure-KnfDkB_V.js +1 -0
- package/renderer/assets/cmake-bh2MLnkv.js +1 -0
- package/renderer/assets/cobol-DbURsbuN.js +1 -0
- package/renderer/assets/codeowners-CtwIM3TN.js +1 -0
- package/renderer/assets/codeql-D164juXQ.js +1 -0
- package/renderer/assets/coffee-Bk-z6oI_.js +1 -0
- package/renderer/assets/common-lisp-DXc9XcIM.js +1 -0
- package/renderer/assets/coq-BIZj6HM_.js +1 -0
- package/renderer/assets/cpp-C-tF_bWl.js +1 -0
- package/renderer/assets/crystal-Dvqzbpz8.js +1 -0
- package/renderer/assets/csharp-CFxe5pRo.js +1 -0
- package/renderer/assets/css-Br67jR8j.js +1 -0
- package/renderer/assets/csv-D5aBhKLr.js +1 -0
- package/renderer/assets/cue-WCin6O4e.js +1 -0
- package/renderer/assets/cypher-DYQk2G82.js +1 -0
- package/renderer/assets/d-DVc-yF-l.js +1 -0
- package/renderer/assets/dark-plus-DLU5INA3.js +1 -0
- package/renderer/assets/dart-ByalkS20.js +1 -0
- package/renderer/assets/dax-oldcCaJg.js +1 -0
- package/renderer/assets/desktop-DZfyBMgF.js +1 -0
- package/renderer/assets/diff-jW5kmiru.js +1 -0
- package/renderer/assets/diff-worker-cT02HnWg.js +154 -0
- package/renderer/assets/docker-DG9neUKd.js +1 -0
- package/renderer/assets/dotenv-Bea-FkXq.js +1 -0
- package/renderer/assets/dracula-XcYHBZy6.js +1 -0
- package/renderer/assets/dracula-soft-BPeX9gxW.js +1 -0
- package/renderer/assets/dream-maker-DAHQwpwp.js +1 -0
- package/renderer/assets/edge-DTiORMU5.js +1 -0
- package/renderer/assets/elixir-DnIH90qd.js +1 -0
- package/renderer/assets/elm-BjIDgKzz.js +1 -0
- package/renderer/assets/emacs-lisp-Ckw2FTkV.js +1 -0
- package/renderer/assets/erb-CazEJMPD.js +1 -0
- package/renderer/assets/erlang-DNeY46SW.js +1 -0
- package/renderer/assets/everforest-dark-WOub3wle.js +1 -0
- package/renderer/assets/everforest-light-DCUg8VH8.js +1 -0
- package/renderer/assets/fennel-DBMsxtrh.js +1 -0
- package/renderer/assets/fish-BxskpYPN.js +1 -0
- package/renderer/assets/fluent-Bwo2XpEt.js +1 -0
- package/renderer/assets/fortran-fixed-form-DFFnVrrY.js +1 -0
- package/renderer/assets/fortran-free-form-DB5N_DgY.js +1 -0
- package/renderer/assets/fsharp-DRAF1jsN.js +1 -0
- package/renderer/assets/gdresource-B0Kp4-ms.js +1 -0
- package/renderer/assets/gdscript-DKyjuXKv.js +1 -0
- package/renderer/assets/gdshader-G7X6ysY3.js +1 -0
- package/renderer/assets/genie-DSsjfZMX.js +1 -0
- package/renderer/assets/gherkin-Cl2Fw-_0.js +1 -0
- package/renderer/assets/git-commit-CJPsQObV.js +1 -0
- package/renderer/assets/git-rebase-DeZqv4fp.js +1 -0
- package/renderer/assets/github-dark-BQV5ugrc.js +1 -0
- package/renderer/assets/github-dark-default-DLWDM7FH.js +1 -0
- package/renderer/assets/github-dark-dimmed-D1FmiR_p.js +1 -0
- package/renderer/assets/github-dark-high-contrast-BilLoi0o.js +1 -0
- package/renderer/assets/github-light-Rcb2q3L5.js +1 -0
- package/renderer/assets/github-light-default-CQ75esMw.js +1 -0
- package/renderer/assets/github-light-high-contrast-CRF1wyLy.js +1 -0
- package/renderer/assets/gleam-BeBqoPwE.js +1 -0
- package/renderer/assets/glimmer-js-F_qk9EQT.js +1 -0
- package/renderer/assets/glimmer-ts-Dhzi-GJU.js +1 -0
- package/renderer/assets/glsl-BOG9l2nV.js +1 -0
- package/renderer/assets/gn-Dxr0sSUf.js +1 -0
- package/renderer/assets/gnuplot-CtW3R_Hz.js +1 -0
- package/renderer/assets/go-B7VTfpnm.js +1 -0
- package/renderer/assets/graphql-B6XHM4uj.js +1 -0
- package/renderer/assets/groovy-DFxE31Qs.js +1 -0
- package/renderer/assets/gruvbox-dark-hard-C37G1gbc.js +1 -0
- package/renderer/assets/gruvbox-dark-medium-C3G9m3TV.js +1 -0
- package/renderer/assets/gruvbox-dark-soft-eZmcmZ9I.js +1 -0
- package/renderer/assets/gruvbox-light-hard-BYj-vz_3.js +1 -0
- package/renderer/assets/gruvbox-light-medium-BdQlDiiF.js +1 -0
- package/renderer/assets/gruvbox-light-soft-BGNwjiRh.js +1 -0
- package/renderer/assets/hack-jRhjsWHJ.js +1 -0
- package/renderer/assets/haml-C4vGXCDX.js +1 -0
- package/renderer/assets/handlebars-BsldGL5W.js +1 -0
- package/renderer/assets/haskell-BfdhR_WN.js +1 -0
- package/renderer/assets/haxe-wmAaY_mP.js +1 -0
- package/renderer/assets/hcl-B6OePqme.js +1 -0
- package/renderer/assets/hjson-D2jn7IRw.js +1 -0
- package/renderer/assets/hlsl-MKeth5V9.js +1 -0
- package/renderer/assets/horizon-bright-BVMyA0so.js +1 -0
- package/renderer/assets/horizon-cslQss18.js +1 -0
- package/renderer/assets/houston-RHIKkNfR.js +1 -0
- package/renderer/assets/html-BW_6VhB7.js +1 -0
- package/renderer/assets/html-derivative-BxANmYVz.js +1 -0
- package/renderer/assets/http-CG3jvXcS.js +1 -0
- package/renderer/assets/hurl-CxQrh4RI.js +1 -0
- package/renderer/assets/hxml-In6F2XHE.js +1 -0
- package/renderer/assets/hy-DI6mCUnw.js +1 -0
- package/renderer/assets/imba-D-Pk5S0X.js +1 -0
- package/renderer/assets/index-BtxbtBAs.css +1 -0
- package/renderer/assets/index-vGfeijvJ.js +86 -0
- package/renderer/assets/ini-Dix3pTmg.js +1 -0
- package/renderer/assets/java-BTDmaRNO.js +1 -0
- package/renderer/assets/javascript-WyGyM1wV.js +1 -0
- package/renderer/assets/jinja-CGKoJZuT.js +1 -0
- package/renderer/assets/jison-B9XHrcYJ.js +1 -0
- package/renderer/assets/json-B8JryHcM.js +1 -0
- package/renderer/assets/json5-Cdatmj9n.js +1 -0
- package/renderer/assets/jsonc-CvUCa1o5.js +1 -0
- package/renderer/assets/jsonl-9I_GBd5L.js +1 -0
- package/renderer/assets/jsonnet-XoenQ2oc.js +1 -0
- package/renderer/assets/jssm-CWE2S0Z5.js +1 -0
- package/renderer/assets/jsx-8cLv2Six.js +1 -0
- package/renderer/assets/julia-CHsXSRRi.js +1 -0
- package/renderer/assets/just-BhMjiL1x.js +1 -0
- package/renderer/assets/kanagawa-dragon-elpLL9d7.js +1 -0
- package/renderer/assets/kanagawa-lotus-qwxsXd6N.js +1 -0
- package/renderer/assets/kanagawa-wave-CmHwPSUq.js +1 -0
- package/renderer/assets/kdl-CMbyIXjQ.js +1 -0
- package/renderer/assets/kotlin-BQy537ds.js +1 -0
- package/renderer/assets/kusto-Bh6esMjd.js +1 -0
- package/renderer/assets/laserwave-si7wuSrt.js +1 -0
- package/renderer/assets/latex-l4EWm08Q.js +1 -0
- package/renderer/assets/lean-C4RHkN41.js +1 -0
- package/renderer/assets/less-XNfgnZC7.js +1 -0
- package/renderer/assets/light-plus-g_Fi9vkG.js +1 -0
- package/renderer/assets/liquid-VEiCTF4k.js +1 -0
- package/renderer/assets/llvm-CQZjIlnZ.js +1 -0
- package/renderer/assets/log-CcaF_xNv.js +1 -0
- package/renderer/assets/logo-D9WQLoKQ.js +1 -0
- package/renderer/assets/lua-8Av-h-ns.js +1 -0
- package/renderer/assets/luau-CmQFRJk_.js +1 -0
- package/renderer/assets/make-DXVx14cr.js +1 -0
- package/renderer/assets/markdown-DX-TNHnc.js +1 -0
- package/renderer/assets/marko-6XzqJfhW.js +1 -0
- package/renderer/assets/material-theme-CIJ3cGaW.js +1 -0
- package/renderer/assets/material-theme-darker-BWg3m1GB.js +1 -0
- package/renderer/assets/material-theme-lighter-DR8HWMN7.js +1 -0
- package/renderer/assets/material-theme-ocean-CZf9pk28.js +1 -0
- package/renderer/assets/material-theme-palenight-BF01YeZy.js +1 -0
- package/renderer/assets/matlab-DzreyMvm.js +1 -0
- package/renderer/assets/mdc-DRPSCe6f.js +1 -0
- package/renderer/assets/mdx-C2fqO2XY.js +1 -0
- package/renderer/assets/mermaid-B3PwCbv_.js +1 -0
- package/renderer/assets/min-dark-DhfaepVE.js +1 -0
- package/renderer/assets/min-light-6xx0uMgm.js +1 -0
- package/renderer/assets/mipsasm-yE_Aqo9y.js +1 -0
- package/renderer/assets/mojo-CrzByxs8.js +1 -0
- package/renderer/assets/monokai-CfflZzqd.js +1 -0
- package/renderer/assets/moonbit-GUn1DCOq.js +1 -0
- package/renderer/assets/move-DgW29s8x.js +1 -0
- package/renderer/assets/narrat-DXUZ_ZkW.js +1 -0
- package/renderer/assets/nextflow-D9i3Mg89.js +1 -0
- package/renderer/assets/nextflow-groovy-BtKenbWl.js +1 -0
- package/renderer/assets/nginx-DSXkacNc.js +1 -0
- package/renderer/assets/night-owl-EdP2Hztp.js +1 -0
- package/renderer/assets/night-owl-light-Bk-lYVyk.js +1 -0
- package/renderer/assets/nim-D9lokC5T.js +1 -0
- package/renderer/assets/nix-Ckjrpg0r.js +1 -0
- package/renderer/assets/nord-BAu0wM6c.js +1 -0
- package/renderer/assets/nsis-C1FUr9r5.js +1 -0
- package/renderer/assets/nushell-D7aJuCS6.js +1 -0
- package/renderer/assets/objective-c-BoaBTdtz.js +1 -0
- package/renderer/assets/objective-cpp-DstR8hNy.js +1 -0
- package/renderer/assets/ocaml-DTbn2Hv7.js +1 -0
- package/renderer/assets/odin-Bxc4S6Xn.js +1 -0
- package/renderer/assets/one-dark-pro-utPxbBbJ.js +1 -0
- package/renderer/assets/one-light-BuCQ22aO.js +1 -0
- package/renderer/assets/openscad-CXHpNBsb.js +1 -0
- package/renderer/assets/org-DcqggXXW.js +1 -0
- package/renderer/assets/pascal-Sr-XLSE6.js +1 -0
- package/renderer/assets/perl-CP_GSK0L.js +1 -0
- package/renderer/assets/php-CNeTOyEV.js +1 -0
- package/renderer/assets/pkl-CRusufhw.js +1 -0
- package/renderer/assets/plastic-CXnNNlFZ.js +1 -0
- package/renderer/assets/plsql-Dbm3tV2N.js +1 -0
- package/renderer/assets/po-LG0lFwH4.js +1 -0
- package/renderer/assets/poimandres-BrOVMvuE.js +1 -0
- package/renderer/assets/polar-DjOs3GWb.js +1 -0
- package/renderer/assets/postcss-GRRkWn2F.js +1 -0
- package/renderer/assets/powerquery-DHf-dtTS.js +1 -0
- package/renderer/assets/powershell-CUnxWBRw.js +1 -0
- package/renderer/assets/prisma-HKDfktb8.js +1 -0
- package/renderer/assets/prolog-9JcfiY6I.js +1 -0
- package/renderer/assets/proto-dqx_Sj2i.js +1 -0
- package/renderer/assets/pug-kUpeg2wB.js +1 -0
- package/renderer/assets/puppet-Di57VbSS.js +1 -0
- package/renderer/assets/purescript-BgpM7rDH.js +1 -0
- package/renderer/assets/python-B6Ihcp-E.js +1 -0
- package/renderer/assets/qml-DmGQGbca.js +1 -0
- package/renderer/assets/qmldir-DXd9s5XC.js +1 -0
- package/renderer/assets/qss-B7NnhfIi.js +1 -0
- package/renderer/assets/r-C2sK8mqY.js +1 -0
- package/renderer/assets/racket-CeDx7KO2.js +1 -0
- package/renderer/assets/raku-BMJwmrCS.js +1 -0
- package/renderer/assets/razor-C2a5o_rD.js +1 -0
- package/renderer/assets/rbs-BNdQsBCU.js +1 -0
- package/renderer/assets/red-D0qvOrrt.js +1 -0
- package/renderer/assets/reg-Cvyu2Gnx.js +1 -0
- package/renderer/assets/regexp-DK-WlHNu.js +1 -0
- package/renderer/assets/rel-BlqNHz8k.js +1 -0
- package/renderer/assets/riscv-C5dpdlr7.js +1 -0
- package/renderer/assets/ron-j5NfrB3z.js +1 -0
- package/renderer/assets/rose-pine-B13eftVv.js +1 -0
- package/renderer/assets/rose-pine-dawn-BcSoidev.js +1 -0
- package/renderer/assets/rose-pine-moon-QhZovmiB.js +1 -0
- package/renderer/assets/rosmsg-ZkSIzPhc.js +1 -0
- package/renderer/assets/rst-CgFL6KOR.js +1 -0
- package/renderer/assets/ruby-CoSFdlpl.js +1 -0
- package/renderer/assets/rust-CxuBE0J8.js +1 -0
- package/renderer/assets/sas-DPMpzP9X.js +1 -0
- package/renderer/assets/sass-bfEVHPJ8.js +1 -0
- package/renderer/assets/scala-DT3kbCHL.js +1 -0
- package/renderer/assets/scheme-OJppFQF3.js +1 -0
- package/renderer/assets/scss-n48HZsmL.js +1 -0
- package/renderer/assets/sdbl-CvZs3G9c.js +1 -0
- package/renderer/assets/shaderlab-CEJedz68.js +1 -0
- package/renderer/assets/shellscript-DgJyDXW6.js +1 -0
- package/renderer/assets/shellsession-DSlzxnCM.js +1 -0
- package/renderer/assets/slack-dark-CWRQmTmo.js +1 -0
- package/renderer/assets/slack-ochin-DO_ok7XK.js +1 -0
- package/renderer/assets/smalltalk-De6KzMWc.js +1 -0
- package/renderer/assets/smithy-BVTkKWO9.js +1 -0
- package/renderer/assets/snazzy-light-B5llO_gK.js +1 -0
- package/renderer/assets/solarized-dark-BWFpDpV1.js +1 -0
- package/renderer/assets/solarized-light-eZCMDrWD.js +1 -0
- package/renderer/assets/solidity-SYSxO-p1.js +1 -0
- package/renderer/assets/soy-DEV4yxgM.js +1 -0
- package/renderer/assets/sparql-BJh4JEw-.js +1 -0
- package/renderer/assets/splunk-h-bNAnbk.js +1 -0
- package/renderer/assets/sql-Dq2MiB0T.js +1 -0
- package/renderer/assets/ssh-config-CywOjoXH.js +1 -0
- package/renderer/assets/stata-BcICKvEt.js +1 -0
- package/renderer/assets/stylus-CIg617SB.js +1 -0
- package/renderer/assets/surrealql-CWlK9SzL.js +1 -0
- package/renderer/assets/svelte-B-Z8GLL9.js +1 -0
- package/renderer/assets/swift-CGD9CJBj.js +1 -0
- package/renderer/assets/synthwave-84-DRVv-_m_.js +1 -0
- package/renderer/assets/system-verilog-CG_VWOG3.js +1 -0
- package/renderer/assets/systemd-DKMPPZjB.js +1 -0
- package/renderer/assets/talonscript-eRuyeYHl.js +1 -0
- package/renderer/assets/tasl-B9CVvjfG.js +1 -0
- package/renderer/assets/tcl-Bq9dbVAF.js +1 -0
- package/renderer/assets/templ-W185oS4p.js +1 -0
- package/renderer/assets/terraform-CAp711iT.js +1 -0
- package/renderer/assets/tex-DNkCctwf.js +1 -0
- package/renderer/assets/tokyo-night-BvwC8l2v.js +1 -0
- package/renderer/assets/toml-Ms459DBw.js +1 -0
- package/renderer/assets/ts-tags-xUT7JH_c.js +1 -0
- package/renderer/assets/tsv-BFtm7NXx.js +1 -0
- package/renderer/assets/tsx-D6116Ycy.js +1 -0
- package/renderer/assets/turtle-DpRhbQZY.js +1 -0
- package/renderer/assets/twig-k5g5DPXm.js +1 -0
- package/renderer/assets/typescript-BqvgUolh.js +1 -0
- package/renderer/assets/typespec-B09nCZui.js +1 -0
- package/renderer/assets/typst-BBBqdJEp.js +1 -0
- package/renderer/assets/v-DUsAht2M.js +1 -0
- package/renderer/assets/vala-z59IxkFd.js +1 -0
- package/renderer/assets/vb-A7jYO8Gn.js +1 -0
- package/renderer/assets/verilog-jqltjd44.js +1 -0
- package/renderer/assets/vesper-DxfWgk_t.js +1 -0
- package/renderer/assets/vhdl-DJCsFYgn.js +1 -0
- package/renderer/assets/viml-pbKHW3Ia.js +1 -0
- package/renderer/assets/vitesse-black-B_BYPdvp.js +1 -0
- package/renderer/assets/vitesse-dark-DOSOf2Sz.js +1 -0
- package/renderer/assets/vitesse-light-gUX51GpB.js +1 -0
- package/renderer/assets/vue-D2T8AFdP.js +1 -0
- package/renderer/assets/vue-html-zEfNEgpj.js +1 -0
- package/renderer/assets/vue-vine-DQRWX4iy.js +1 -0
- package/renderer/assets/vyper-DpazWNpx.js +1 -0
- package/renderer/assets/wasm-CFi-k9--.js +1 -0
- package/renderer/assets/wenyan-CYFFG9DK.js +1 -0
- package/renderer/assets/wgsl-CxjTZs-b.js +1 -0
- package/renderer/assets/wikitext-Bx2qct8O.js +1 -0
- package/renderer/assets/wit-DDW3hD69.js +1 -0
- package/renderer/assets/wolfram-pu21K997.js +1 -0
- package/renderer/assets/wterm-Coe9fLBZ.wasm +0 -0
- package/renderer/assets/xml-BkAJuBCc.js +1 -0
- package/renderer/assets/xsl-C6UUWSil.js +1 -0
- package/renderer/assets/yaml-Bopit2L3.js +1 -0
- package/renderer/assets/zenscript-BIAKq-aR.js +1 -0
- package/renderer/assets/zig-bSFrHQ7n.js +1 -0
- package/renderer/index.html +14 -0
package/README.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Kirby Desktop
|
|
2
|
+
|
|
3
|
+
A desktop app for running AI coding agents across git worktrees, with pull-request review built in.
|
|
4
|
+
|
|
5
|
+
Kirby gives every branch its own worktree and its own agent session, and puts them in tabs. A pull request opens as a review workspace: the diff with inline comment threads on one side, the agent's terminal on the other. Agents can write draft review comments that you walk through and post. Sessions run under tmux when available, so they survive closing the app.
|
|
6
|
+
|
|
7
|
+
This is the GUI. The terminal UI ships separately as [`@hermannbjorgvin/kirby`](https://www.npmjs.com/package/@hermannbjorgvin/kirby) and shares the same core — install it too, because it is also how review agents write their comments (see Requirements).
|
|
8
|
+
|
|
9
|
+
> Beta. Expect rough edges, and pin a version if you depend on it.
|
|
10
|
+
|
|
11
|
+
## Install
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
npm install -g @hermannbjorgvin/kirby-desktop@beta
|
|
15
|
+
npm install -g @hermannbjorgvin/kirby # for agent-written reviews
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Then, from inside any git repository:
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
kirby-desktop
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Launching from a repository opens it directly; launching from anywhere else brings up the repository picker.
|
|
25
|
+
|
|
26
|
+
## Requirements
|
|
27
|
+
|
|
28
|
+
- **Node.js 20+** and **git**.
|
|
29
|
+
- **A build toolchain on Linux.** `node-pty` ships prebuilt binaries for macOS and Windows, but not Linux, so npm compiles it during install. On Debian/Ubuntu: `sudo apt install build-essential python3`. macOS needs the Xcode command line tools (`xcode-select --install`); most machines already have them.
|
|
30
|
+
- **An agent CLI** on your `PATH` — `claude`, `codex`, `copilot`, `gemini` or `opencode`. Configurable in Settings.
|
|
31
|
+
- **`kirby` on your `PATH`, for agent-written reviews.** A review agent records its comments by running `kirby util add-comment`, which ships in the [terminal UI package](https://www.npmjs.com/package/@hermannbjorgvin/kirby). Without it the agent reviews the diff and has nowhere to put what it found. Everything else here works without it.
|
|
32
|
+
- **`tmux` (optional, recommended).** With it, agent sessions keep running when you quit and are reattached next launch.
|
|
33
|
+
- **`gh` or `az` (optional)** for pull-request features, on GitHub and Azure DevOps respectively.
|
|
34
|
+
|
|
35
|
+
Installing pulls Electron's binary (~100–200 MB) on first install.
|
|
36
|
+
|
|
37
|
+
### Windows
|
|
38
|
+
|
|
39
|
+
Run it under WSL 2, which gives you the unix environment the agent and tmux backends expect. WSLg renders the app as a normal Windows window. Keep your repositories on the Linux filesystem (`~/code/...`) rather than `/mnt/c/...` — git across the filesystem boundary is dramatically slower.
|
|
40
|
+
|
|
41
|
+
## What it does
|
|
42
|
+
|
|
43
|
+
- **Worktree per branch.** Check out any branch as a worktree from the command palette; remove it (branch and session included) when you're done. Merged branches are cleaned up automatically, unless an agent is still working in one.
|
|
44
|
+
- **Agent sessions in tabs.** Launch an agent on a branch, watch it work, and keep its scrollback when you switch tabs. Tabs show when an agent is busy and flag it when it finishes something you haven't looked at.
|
|
45
|
+
- **Pull request review.** Whole-file diffs with folding, split and unified views, and word-level highlighting. Comment threads render inline, including images behind provider auth. Reply, resolve and submit your verdict without leaving the app.
|
|
46
|
+
- **Agent-written reviews.** Launch an agent to review a PR and it writes draft comments anchored to lines, through `kirby util add-comment` (see Requirements). Step through them by severity, edit or discard, and post.
|
|
47
|
+
|
|
48
|
+
## Configuration
|
|
49
|
+
|
|
50
|
+
Settings live in the app (⌘, / Ctrl+,) and are stored in `~/.kirby/`. Provider credentials, the agent command, keybinding preset (Normie or Vim), terminal backend and poll intervals are all configurable there.
|
|
51
|
+
|
|
52
|
+
## Links
|
|
53
|
+
|
|
54
|
+
- [Source](https://github.com/HermannBjorgvin/kirby)
|
|
55
|
+
- [Issues](https://github.com/HermannBjorgvin/kirby/issues)
|
|
56
|
+
|
|
57
|
+
MIT
|
package/launcher.mjs
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Global-install entry point for kirby-desktop (`bin` in the dist
|
|
3
|
+
// package.json). Spawns the Electron binary against this app
|
|
4
|
+
// directory. Mirrors dev.mjs's SUID-sandbox fallback: npm-installed
|
|
5
|
+
// Electron often can't use its setuid helper, and crashing with
|
|
6
|
+
// SIGTRAP is a terrible first-run experience.
|
|
7
|
+
import { spawn } from 'node:child_process';
|
|
8
|
+
import { statSync } from 'node:fs';
|
|
9
|
+
import { createRequire } from 'node:module';
|
|
10
|
+
import { dirname, join } from 'node:path';
|
|
11
|
+
import { fileURLToPath } from 'node:url';
|
|
12
|
+
|
|
13
|
+
const require = createRequire(import.meta.url);
|
|
14
|
+
const appDir = dirname(fileURLToPath(import.meta.url));
|
|
15
|
+
const electron = require('electron'); // string: path to the electron binary
|
|
16
|
+
const { version } = require(join(appDir, 'package.json'));
|
|
17
|
+
|
|
18
|
+
const args = [];
|
|
19
|
+
try {
|
|
20
|
+
const st = statSync(
|
|
21
|
+
join(appDir, 'node_modules', 'electron', 'dist', 'chrome-sandbox')
|
|
22
|
+
);
|
|
23
|
+
if (!(st.uid === 0 && (st.mode & 0o4755) === 0o4755)) {
|
|
24
|
+
console.warn(
|
|
25
|
+
'[kirby-desktop] SUID sandbox unavailable — launching with --no-sandbox'
|
|
26
|
+
);
|
|
27
|
+
args.push('--no-sandbox');
|
|
28
|
+
}
|
|
29
|
+
} catch {
|
|
30
|
+
args.push('--no-sandbox');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const child = spawn(electron, [...args, appDir], {
|
|
34
|
+
stdio: 'inherit',
|
|
35
|
+
// Launching from inside a repo auto-opens that repo.
|
|
36
|
+
env: {
|
|
37
|
+
...process.env,
|
|
38
|
+
KIRBY_START_DIR: process.cwd(),
|
|
39
|
+
KIRBY_DESKTOP_VERSION: version,
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
child.on('close', (code) => process.exit(code ?? 0));
|