@cryptiklemur/lattice 1.46.7 → 2.0.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.
- package/README.md +14 -36
- package/bin/lattice +5 -21
- package/dist/client/assets/abap-DOv5zRgd.js +1 -0
- package/dist/client/assets/actionscript-3-D_b0n2Ff.js +1 -0
- package/dist/client/assets/ada-C6m8O36S.js +1 -0
- package/dist/client/assets/andromeeda-LdzAHaKR.js +1 -0
- package/dist/client/assets/angular-html-BBi1Szz5.js +1 -0
- package/dist/client/assets/angular-ts-2PMpSPqc.js +1 -0
- package/dist/client/assets/apache-CE7PmWoU.js +1 -0
- package/dist/client/assets/apex-DOfNfL0V.js +1 -0
- package/dist/client/assets/apl-B-NEtBvQ.js +1 -0
- package/dist/client/assets/applescript-D4zGaScB.js +1 -0
- package/dist/client/assets/ara-DMoCP0pJ.js +1 -0
- package/dist/client/assets/asciidoc-BkmPq932.js +1 -0
- package/dist/client/assets/asm-ClIKbvsu.js +1 -0
- package/dist/client/assets/astro-mxH1DA5Z.js +1 -0
- package/dist/client/assets/aurora-x-DTcNXZIS.js +1 -0
- package/dist/client/assets/awk-D1ZOsISX.js +1 -0
- package/dist/client/assets/ayu-dark-DpNcORnA.js +1 -0
- package/dist/client/assets/ayu-light-lHqf0ddo.js +1 -0
- package/dist/client/assets/ayu-mirage-Dji5RWiH.js +1 -0
- package/dist/client/assets/ballerina-H14_EqPr.js +1 -0
- package/dist/client/assets/bat-cyb3gF8B.js +1 -0
- package/dist/client/assets/beancount-D84pBacF.js +1 -0
- package/dist/client/assets/berry-B29XeKK4.js +1 -0
- package/dist/client/assets/bibtex-Hs7VvQaV.js +1 -0
- package/dist/client/assets/bicep-CugTE5CQ.js +1 -0
- package/dist/client/assets/bird2-mieRHotO.js +1 -0
- package/dist/client/assets/blade-BUQ9XSm3.js +1 -0
- package/dist/client/assets/bsl-BRmzGEWg.js +1 -0
- package/dist/client/assets/c-DrQixLw7.js +1 -0
- package/dist/client/assets/c3-Dx2gByXW.js +1 -0
- package/dist/client/assets/cadence-CCTSwj3w.js +1 -0
- package/dist/client/assets/cairo-CaIu88t6.js +1 -0
- package/dist/client/assets/catppuccin-frappe-DQrU04q0.js +1 -0
- package/dist/client/assets/catppuccin-latte-B_oiWZka.js +1 -0
- package/dist/client/assets/catppuccin-macchiato-D8VB2qi4.js +1 -0
- package/dist/client/assets/catppuccin-mocha-5vkMJ1Mb.js +1 -0
- package/dist/client/assets/clarity-BbUNTPrg.js +1 -0
- package/dist/client/assets/clojure-Bcw7lCta.js +1 -0
- package/dist/client/assets/cmake-DM0FE-T9.js +1 -0
- package/dist/client/assets/cobol-42amjOMh.js +1 -0
- package/dist/client/assets/codeowners-CBvEPOlS.js +1 -0
- package/dist/client/assets/codeql-CjS8Tp16.js +1 -0
- package/dist/client/assets/coffee-CMSEUKyy.js +1 -0
- package/dist/client/assets/common-lisp-BCx4dVK8.js +1 -0
- package/dist/client/assets/coq-Ddo7YIsR.js +1 -0
- package/dist/client/assets/cpp-C4yJBzl2.js +1 -0
- package/dist/client/assets/crystal-DZ27EoiA.js +1 -0
- package/dist/client/assets/csharp-Kzd7Ey2d.js +1 -0
- package/dist/client/assets/css-CdQwkSNm.js +1 -0
- package/dist/client/assets/csv-DGwgERVJ.js +1 -0
- package/dist/client/assets/cue-CMabdDG0.js +1 -0
- package/dist/client/assets/cypher-CJUzJAhQ.js +1 -0
- package/dist/client/assets/d-BvLF4qGs.js +1 -0
- package/dist/client/assets/dark-plus-BMwvn5lx.js +1 -0
- package/dist/client/assets/dart-DxXbDeKR.js +1 -0
- package/dist/client/assets/dax-BvrCypuS.js +1 -0
- package/dist/client/assets/desktop-BEul_kAS.js +1 -0
- package/dist/client/assets/diff-B7rhrwA5.js +1 -0
- package/dist/client/assets/dist-CBRIe7YG.js +153 -0
- package/dist/client/assets/docker-9Zbx0dQX.js +1 -0
- package/dist/client/assets/dotenv-C0epktMv.js +1 -0
- package/dist/client/assets/dracula-CBD4ckb0.js +1 -0
- package/dist/client/assets/dracula-soft-CuGBZj_h.js +1 -0
- package/dist/client/assets/dream-maker-D6UB367x.js +1 -0
- package/dist/client/assets/edge-J8VemHZC.js +1 -0
- package/dist/client/assets/elixir-DU66qSn_.js +1 -0
- package/dist/client/assets/elm-8cz1JjRg.js +1 -0
- package/dist/client/assets/emacs-lisp-DFyMFAZA.js +1 -0
- package/dist/client/assets/erb-DMl63J6s.js +1 -0
- package/dist/client/assets/erlang-LvhGhZI3.js +1 -0
- package/dist/client/assets/everforest-dark-BhFNrp2k.js +1 -0
- package/dist/client/assets/everforest-light-CpIbZ9aT.js +1 -0
- package/dist/client/assets/fennel-CH1ohGYX.js +1 -0
- package/dist/client/assets/fish-D2X4h_sR.js +1 -0
- package/dist/client/assets/fluent-B_In4uB6.js +1 -0
- package/dist/client/assets/fortran-fixed-form-BXvkHMbK.js +1 -0
- package/dist/client/assets/fortran-free-form-Bw_JZ1tj.js +1 -0
- package/dist/client/assets/fsharp-uxIU8dwY.js +1 -0
- package/dist/client/assets/gdresource-DkI-mZL2.js +1 -0
- package/dist/client/assets/gdscript-DDro0rs8.js +1 -0
- package/dist/client/assets/gdshader-DkUeC1ld.js +1 -0
- package/dist/client/assets/genie-khT2hrp-.js +1 -0
- package/dist/client/assets/gherkin-CPELKal0.js +1 -0
- package/dist/client/assets/git-commit-a3TktZ3A.js +1 -0
- package/dist/client/assets/git-rebase-DjlZL8cj.js +1 -0
- package/dist/client/assets/github-dark-DQp1Qkx5.js +1 -0
- package/dist/client/assets/github-dark-default-BroO-mT3.js +1 -0
- package/dist/client/assets/github-dark-dimmed-D8UZ8uTL.js +1 -0
- package/dist/client/assets/github-dark-high-contrast-CM0RRMCj.js +1 -0
- package/dist/client/assets/github-light-BRTmX4Ht.js +1 -0
- package/dist/client/assets/github-light-default-dl7biQ4g.js +1 -0
- package/dist/client/assets/github-light-high-contrast-Cvzq8ZXJ.js +1 -0
- package/dist/client/assets/gleam-7UVjplRF.js +1 -0
- package/dist/client/assets/glimmer-js-Fu7vOQY-.js +1 -0
- package/dist/client/assets/glimmer-ts-AJljRs0A.js +1 -0
- package/dist/client/assets/glsl-CfodGzSv.js +1 -0
- package/dist/client/assets/gn-EcrZPIZo.js +1 -0
- package/dist/client/assets/gnuplot-CcsFlqcz.js +1 -0
- package/dist/client/assets/go-TqNfhUhh.js +1 -0
- package/dist/client/assets/graphql-C8GPKPx1.js +1 -0
- package/dist/client/assets/groovy-bfrzFpSZ.js +1 -0
- package/dist/client/assets/gruvbox-dark-hard-CBFL_VqK.js +1 -0
- package/dist/client/assets/gruvbox-dark-medium-Dn18r-Yz.js +1 -0
- package/dist/client/assets/gruvbox-dark-soft-DUyKWd02.js +1 -0
- package/dist/client/assets/gruvbox-light-hard-DV9RwKs4.js +1 -0
- package/dist/client/assets/gruvbox-light-medium-Ba-VIg48.js +1 -0
- package/dist/client/assets/gruvbox-light-soft-CVIZMKFx.js +1 -0
- package/dist/client/assets/hack-Gp6OuE21.js +1 -0
- package/dist/client/assets/haml-BOyG6GfM.js +1 -0
- package/dist/client/assets/handlebars-B9IoVRxd.js +1 -0
- package/dist/client/assets/haskell-DzEtL6Zk.js +1 -0
- package/dist/client/assets/haxe-wLDEcRoz.js +1 -0
- package/dist/client/assets/hcl-C1fs3gTM.js +1 -0
- package/dist/client/assets/hjson-B4b85MZo.js +1 -0
- package/dist/client/assets/hlsl-JhqkHhML.js +1 -0
- package/dist/client/assets/horizon-DMOEeSnA.js +1 -0
- package/dist/client/assets/horizon-bright-CPVackS9.js +1 -0
- package/dist/client/assets/houston-DSlR9wH9.js +1 -0
- package/dist/client/assets/html-CFrSukiU.js +1 -0
- package/dist/client/assets/html-derivative-D0_gRK_M.js +1 -0
- package/dist/client/assets/http-D4MmFixi.js +1 -0
- package/dist/client/assets/hurl-D1xbk-LS.js +1 -0
- package/dist/client/assets/hxml-Bdi_kWeE.js +1 -0
- package/dist/client/assets/hy-uAHU8420.js +1 -0
- package/dist/client/assets/imba-CPCwfD-G.js +1 -0
- package/dist/client/assets/index-DrTbNMzI.css +2 -0
- package/dist/client/assets/index-ZIuI5BCP.js +284 -0
- package/dist/client/assets/ini-2Ew1Qzj6.js +1 -0
- package/dist/client/assets/java-CfPMY1Dv.js +1 -0
- package/dist/client/assets/javascript-B8vNHeqm.js +1 -0
- package/dist/client/assets/jinja-CF0K8bFV.js +1 -0
- package/dist/client/assets/jison-BP7my5TL.js +1 -0
- package/dist/client/assets/json-TeXNjpMZ.js +1 -0
- package/dist/client/assets/json5-Dl8gAgq4.js +1 -0
- package/dist/client/assets/jsonc-C9b23pMf.js +1 -0
- package/dist/client/assets/jsonl-DkF3QjsY.js +1 -0
- package/dist/client/assets/jsonnet-DH4UkOBo.js +1 -0
- package/dist/client/assets/jssm-CBV9_O8o.js +1 -0
- package/dist/client/assets/jsx-C86NmHc2.js +1 -0
- package/dist/client/assets/julia-C58U_aQP.js +1 -0
- package/dist/client/assets/just-h6Vco8Qu.js +1 -0
- package/dist/client/assets/kanagawa-dragon-DLDXA4f2.js +1 -0
- package/dist/client/assets/kanagawa-lotus-qAvw6eOU.js +1 -0
- package/dist/client/assets/kanagawa-wave-DFO_g5Mb.js +1 -0
- package/dist/client/assets/kdl-BQl-X5Uf.js +1 -0
- package/dist/client/assets/kotlin-d6oenWPH.js +1 -0
- package/dist/client/assets/kusto-Cpu9Tdho.js +1 -0
- package/dist/client/assets/laserwave-Bbquw0Nf.js +1 -0
- package/dist/client/assets/latex-DRsNisjT.js +1 -0
- package/dist/client/assets/lean-CvyEisyW.js +1 -0
- package/dist/client/assets/less-B9RQiV1N.js +1 -0
- package/dist/client/assets/light-plus-Ch1Usv7R.js +1 -0
- package/dist/client/assets/liquid-C9jXC9M7.js +1 -0
- package/dist/client/assets/llvm-DtrwjsAs.js +1 -0
- package/dist/client/assets/log-JKbKuM4J.js +1 -0
- package/dist/client/assets/logo-BsxZM_eb.js +1 -0
- package/dist/client/assets/lua-BUYvdn-F.js +1 -0
- package/dist/client/assets/luau-D9oeBRnv.js +1 -0
- package/dist/client/assets/make-DLuqI3Sa.js +1 -0
- package/dist/client/assets/markdown-hfQzyr6v.js +1 -0
- package/dist/client/assets/marko-BqB4tqw-.js +1 -0
- package/dist/client/assets/material-theme-darker-yvetTWEr.js +1 -0
- package/dist/client/assets/material-theme-kX26WiJU.js +1 -0
- package/dist/client/assets/material-theme-lighter-L4j3qddN.js +1 -0
- package/dist/client/assets/material-theme-ocean-BnNk1wNQ.js +1 -0
- package/dist/client/assets/material-theme-palenight-W0qbGyud.js +1 -0
- package/dist/client/assets/matlab-Cz4xBfaA.js +1 -0
- package/dist/client/assets/mdc-C8Rs68Nw.js +1 -0
- package/dist/client/assets/mdx-Crds6sJw.js +1 -0
- package/dist/client/assets/mermaid-Bk1sayFm.js +1 -0
- package/dist/client/assets/min-dark-DK6uq44k.js +1 -0
- package/dist/client/assets/min-light-lr1QiEOE.js +1 -0
- package/dist/client/assets/mipsasm-D3Vr1VJI.js +1 -0
- package/dist/client/assets/mojo-D3ai4ATt.js +1 -0
- package/dist/client/assets/monokai-DZSWSdmN.js +1 -0
- package/dist/client/assets/moonbit-c7XV1V8w.js +1 -0
- package/dist/client/assets/move--lg8RSZu.js +1 -0
- package/dist/client/assets/narrat-Bn_PlXDl.js +1 -0
- package/dist/client/assets/nextflow-DXxhyYjQ.js +1 -0
- package/dist/client/assets/nextflow-groovy-CUrXbMOF.js +1 -0
- package/dist/client/assets/nginx-Dj6E3HRL.js +1 -0
- package/dist/client/assets/night-owl-DnKT96OJ.js +1 -0
- package/dist/client/assets/night-owl-light-gVSh6ltn.js +1 -0
- package/dist/client/assets/nim-BizJb4iF.js +1 -0
- package/dist/client/assets/nix-DE1Q2B1F.js +1 -0
- package/dist/client/assets/nord-CbYaE7ZY.js +1 -0
- package/dist/client/assets/nushell-BBFYNdNE.js +1 -0
- package/dist/client/assets/objective-c-mc6rHp-y.js +1 -0
- package/dist/client/assets/objective-cpp-D96wcRis.js +1 -0
- package/dist/client/assets/ocaml-Ddt3E4VO.js +1 -0
- package/dist/client/assets/odin-BUZTfc03.js +1 -0
- package/dist/client/assets/one-dark-pro-CLMO01es.js +1 -0
- package/dist/client/assets/one-light-27sfjFDM.js +1 -0
- package/dist/client/assets/openscad-C-XxCD_t.js +1 -0
- package/dist/client/assets/pascal-BvJwb9Ca.js +1 -0
- package/dist/client/assets/perl-DnJAtWNn.js +1 -0
- package/dist/client/assets/php-BeY_VEeb.js +1 -0
- package/dist/client/assets/pkl-DtSDxyR8.js +1 -0
- package/dist/client/assets/plastic-Dd1-4HJb.js +1 -0
- package/dist/client/assets/plsql-CgEVu7mV.js +1 -0
- package/dist/client/assets/po-BNFx8QMG.js +1 -0
- package/dist/client/assets/poimandres-DdZFFINT.js +1 -0
- package/dist/client/assets/polar-DcGwqI2v.js +1 -0
- package/dist/client/assets/postcss-BgFCg0uM.js +1 -0
- package/dist/client/assets/powerquery-BNMZnWRc.js +1 -0
- package/dist/client/assets/powershell-CeNh_gMu.js +1 -0
- package/dist/client/assets/prisma-C4wKi9Xs.js +1 -0
- package/dist/client/assets/prolog-DcNkIfZZ.js +1 -0
- package/dist/client/assets/proto-BqsNb_Ru.js +1 -0
- package/dist/client/assets/pug-DXhFbVDh.js +1 -0
- package/dist/client/assets/puppet-BLvi8DVC.js +1 -0
- package/dist/client/assets/purescript-B_tjgp5s.js +1 -0
- package/dist/client/assets/python-xLLWlBd0.js +1 -0
- package/dist/client/assets/qml-CngzXsz8.js +1 -0
- package/dist/client/assets/qmldir-CDe6ORFD.js +1 -0
- package/dist/client/assets/qss-CvW7b9vz.js +1 -0
- package/dist/client/assets/r-BMmy9apu.js +1 -0
- package/dist/client/assets/racket-CA2oKVL1.js +1 -0
- package/dist/client/assets/raku-D9dEetfn.js +1 -0
- package/dist/client/assets/razor-kIo5DNUk.js +1 -0
- package/dist/client/assets/red-Cj1vpJ_n.js +1 -0
- package/dist/client/assets/reg-CHsE82Pk.js +1 -0
- package/dist/client/assets/regexp-BIa5IayX.js +1 -0
- package/dist/client/assets/rel-SUS6CYTF.js +1 -0
- package/dist/client/assets/riscv-xyAKa3qa.js +1 -0
- package/dist/client/assets/ron-D5BrJbC5.js +1 -0
- package/dist/client/assets/rose-pine-Dd0RAvir.js +1 -0
- package/dist/client/assets/rose-pine-dawn-CeS_2jlO.js +1 -0
- package/dist/client/assets/rose-pine-moon-CQrvtQEF.js +1 -0
- package/dist/client/assets/rosmsg-Bie95NPX.js +1 -0
- package/dist/client/assets/rst-McWv3WP0.js +1 -0
- package/dist/client/assets/ruby-CkenUDKe.js +1 -0
- package/dist/client/assets/rust-CAON_J-7.js +1 -0
- package/dist/client/assets/sas-Dgn9Yrr5.js +1 -0
- package/dist/client/assets/sass-CKkv3rB4.js +1 -0
- package/dist/client/assets/scala-BADlfUbE.js +1 -0
- package/dist/client/assets/scheme-Bv8vdcS_.js +1 -0
- package/dist/client/assets/scss-Tfn9jzBB.js +1 -0
- package/dist/client/assets/sdbl-TUdAkzzL.js +1 -0
- package/dist/client/assets/shaderlab-C5utLNvK.js +1 -0
- package/dist/client/assets/shellscript-vGpgBWOS.js +1 -0
- package/dist/client/assets/shellsession-7CA0dOzR.js +1 -0
- package/dist/client/assets/slack-dark-BeQrlvP4.js +1 -0
- package/dist/client/assets/slack-ochin-DaA1aBiy.js +1 -0
- package/dist/client/assets/smalltalk-C1k1DVft.js +1 -0
- package/dist/client/assets/snazzy-light-C9Bzvwcg.js +1 -0
- package/dist/client/assets/solarized-dark--ZJpQY8O.js +1 -0
- package/dist/client/assets/solarized-light-wzNWfjF2.js +1 -0
- package/dist/client/assets/solidity-CaEDdWYR.js +1 -0
- package/dist/client/assets/soy-DbBURueN.js +1 -0
- package/dist/client/assets/sparql-nVt1Q8sD.js +1 -0
- package/dist/client/assets/splunk-mpBjmHRA.js +1 -0
- package/dist/client/assets/sql-BJGtbEM8.js +1 -0
- package/dist/client/assets/ssh-config-DqmSAS3N.js +1 -0
- package/dist/client/assets/stata-L0kV9FQT.js +1 -0
- package/dist/client/assets/stylus-mNYBrtqL.js +1 -0
- package/dist/client/assets/surrealql-C17jcHRl.js +1 -0
- package/dist/client/assets/svelte-B5_CmVcu.js +1 -0
- package/dist/client/assets/swift-BXoR6L-y.js +1 -0
- package/dist/client/assets/synthwave-84-ybvkLGau.js +1 -0
- package/dist/client/assets/system-verilog-BnyrpGlO.js +1 -0
- package/dist/client/assets/systemd-BBVr_qxh.js +1 -0
- package/dist/client/assets/talonscript-l0qUQn2r.js +1 -0
- package/dist/client/assets/tasl-BzcMwPTS.js +1 -0
- package/dist/client/assets/tcl-CQgtyMkG.js +1 -0
- package/dist/client/assets/templ-C5f2EORt.js +1 -0
- package/dist/client/assets/terraform-BgPqtSWN.js +1 -0
- package/dist/client/assets/tex-DvaBtCMN.js +1 -0
- package/dist/client/assets/tokyo-night-BZt2NwCl.js +1 -0
- package/dist/client/assets/toml-CpHBCfVl.js +1 -0
- package/dist/client/assets/ts-tags-DlZzQdBU.js +1 -0
- package/dist/client/assets/tsv-DYxH1-vL.js +1 -0
- package/dist/client/assets/tsx-DaLOIju9.js +1 -0
- package/dist/client/assets/turtle-DdFFvP5J.js +1 -0
- package/dist/client/assets/twig-BB7320dl.js +1 -0
- package/dist/client/assets/typescript-D8B-VgXj.js +1 -0
- package/dist/client/assets/typespec-CHOxKRtr.js +1 -0
- package/dist/client/assets/typst-C0VS9TQm.js +1 -0
- package/dist/client/assets/v-CfOPGXPl.js +1 -0
- package/dist/client/assets/vala-DYqHmNOK.js +1 -0
- package/dist/client/assets/vb-DUBgqZ02.js +1 -0
- package/dist/client/assets/verilog-BxybH_AY.js +1 -0
- package/dist/client/assets/vesper-BDlBlJR-.js +1 -0
- package/dist/client/assets/vhdl-DBoxxi7I.js +1 -0
- package/dist/client/assets/viml-C8vROCgw.js +1 -0
- package/dist/client/assets/vitesse-black-CUBzmgJa.js +1 -0
- package/dist/client/assets/vitesse-dark-COrLBgkv.js +1 -0
- package/dist/client/assets/vitesse-light-ThZGgLQK.js +1 -0
- package/dist/client/assets/vue-DylGFDrG.js +1 -0
- package/dist/client/assets/vue-html-Dt8r3B9y.js +1 -0
- package/dist/client/assets/vue-vine-DdN02uhY.js +1 -0
- package/dist/client/assets/vyper-D08CaD4o.js +1 -0
- package/dist/client/assets/wasm-CoVafRYN.js +1 -0
- package/dist/client/assets/wasm-DiIFv9DE.js +1 -0
- package/dist/client/assets/wenyan-GlRgAbTB.js +1 -0
- package/dist/client/assets/wgsl-BmWpQFqb.js +1 -0
- package/dist/client/assets/wikitext-Axug2vPC.js +1 -0
- package/dist/client/assets/wit-Dk1fPIaK.js +1 -0
- package/dist/client/assets/wolfram-DMhXlmnL.js +1 -0
- package/dist/client/assets/xml-CBEuB6I0.js +1 -0
- package/dist/client/assets/xsl-CuhlgDL5.js +1 -0
- package/dist/client/assets/yaml-Da6ymghi.js +1 -0
- package/dist/client/assets/zenscript-x7PXwj2_.js +1 -0
- package/dist/client/assets/zig-BlD2NI35.js +1 -0
- package/dist/client/index.html +21 -0
- package/dist/client/manifest.webmanifest +1 -0
- package/dist/client/registerSW.js +1 -0
- package/dist/client/sw-push.js +53 -0
- package/dist/client/sw.js +1 -0
- package/dist/client/workbox-b51dd497.js +1 -0
- package/{client/index.html → index.html} +1 -1
- package/package.json +62 -14
- package/public/icons/icon-192.svg +11 -0
- package/public/icons/icon-512.svg +11 -0
- package/public/sw-push.js +53 -0
- package/{client/src → src/client}/components/analytics/AnalyticsView.tsx +70 -78
- package/{client/src → src/client}/components/analytics/ChartCard.tsx +8 -2
- package/{client/src → src/client}/components/analytics/QuickStats.tsx +12 -10
- package/{client/src → src/client}/components/analytics/charts/ActivityCalendar.tsx +5 -3
- package/{client/src → src/client}/components/analytics/charts/CacheEfficiencyChart.tsx +1 -1
- package/{client/src → src/client}/components/analytics/charts/ContextUtilizationChart.tsx +33 -25
- package/{client/src → src/client}/components/analytics/charts/CostAreaChart.tsx +4 -4
- package/{client/src → src/client}/components/analytics/charts/CostDistributionChart.tsx +1 -0
- package/{client/src → src/client}/components/analytics/charts/CostDonutChart.tsx +1 -0
- package/{client/src → src/client}/components/analytics/charts/CumulativeCostChart.tsx +1 -0
- package/{client/src → src/client}/components/analytics/charts/HourlyHeatmap.tsx +5 -3
- package/{client/src → src/client}/components/analytics/charts/ProjectRadar.tsx +30 -26
- package/{client/src → src/client}/components/analytics/charts/ResponseTimeScatter.tsx +16 -10
- package/{client/src → src/client}/components/analytics/charts/SessionBubbleChart.tsx +23 -16
- package/{client/src → src/client}/components/analytics/charts/SessionTimeline.tsx +5 -3
- package/{client/src → src/client}/components/analytics/charts/TokenFlowChart.tsx +3 -3
- package/{client/src → src/client}/components/analytics/charts/ToolSunburst.tsx +26 -23
- package/{client/src → src/client}/components/chat/ChatView.tsx +65 -96
- package/src/client/components/chat/ElicitationCard.tsx +235 -0
- package/{client/src → src/client}/components/chat/Message.tsx +261 -8
- package/{client/src → src/client}/components/chat/ModelSelector.tsx +29 -8
- package/src/client/components/settings/Appearance.tsx +275 -0
- package/{client/src → src/client}/components/settings/BudgetSettings.tsx +6 -2
- package/{client/src → src/client}/components/settings/Notifications.tsx +35 -0
- package/src/client/components/settings/ThemePreview.tsx +140 -0
- package/src/client/components/settings/ThemeWizard.tsx +405 -0
- package/{client/src → src/client}/components/sidebar/ProjectRail.tsx +43 -169
- package/{client/src → src/client}/components/sidebar/SessionList.tsx +27 -49
- package/{client/src → src/client}/components/sidebar/Sidebar.tsx +2 -6
- package/src/client/components/sidebar/UserIsland.tsx +282 -0
- package/{client/src → src/client}/components/sidebar/UserMenu.tsx +4 -2
- package/src/client/components/ui/ContextMenu.tsx +153 -0
- package/{client/src → src/client}/components/ui/PopupMenu.tsx +4 -2
- package/src/client/components/ui/SaveFooter.tsx +63 -0
- package/{client/src → src/client}/components/workspace/TabBar.tsx +17 -64
- package/{client/src → src/client}/hooks/useAnalytics.ts +17 -8
- package/src/client/hooks/usePushNotifications.ts +92 -0
- package/{client/src → src/client}/hooks/useSession.ts +123 -49
- package/{client/src → src/client}/hooks/useWebSocket.ts +0 -3
- package/src/client/lib/theme-derive.ts +196 -0
- package/{client/src → src/client}/stores/analytics.ts +20 -6
- package/{client/src → src/client}/stores/session.ts +63 -15
- package/{client/src → src/client}/stores/sidebar.ts +3 -1
- package/{client/src → src/client}/themes/index.ts +26 -0
- package/{server/src → src/server}/analytics/engine.ts +87 -30
- package/src/server/assets.ts +45 -0
- package/src/server/daemon.ts +547 -0
- package/{server/src → src/server}/handlers/analytics.ts +13 -8
- package/{server/src → src/server}/handlers/chat.ts +83 -1
- package/{server/src → src/server}/handlers/mesh.ts +3 -2
- package/{server/src → src/server}/handlers/plugins.ts +10 -13
- package/{server/src → src/server}/handlers/session.ts +7 -16
- package/{server/src → src/server}/handlers/settings.ts +3 -0
- package/{server/src → src/server}/handlers/skills.ts +7 -9
- package/src/server/handlers/themes.ts +121 -0
- package/{server/src → src/server}/handlers/update.ts +5 -23
- package/{server/src → src/server}/index.ts +100 -134
- package/{server/src → src/server}/mesh/connector.ts +1 -1
- package/{server/src → src/server}/project/context-breakdown.ts +4 -5
- package/{server/src → src/server}/project/pty-worker.cjs +1 -1
- package/{server/src → src/server}/project/sdk-bridge.ts +526 -428
- package/{server/src → src/server}/project/session.ts +117 -42
- package/{server/src → src/server}/project/terminal.ts +7 -24
- package/src/server/project/warmup.ts +285 -0
- package/src/server/push.ts +121 -0
- package/src/server/runtime.ts +1 -0
- package/src/server/tui.ts +103 -0
- package/{server/src → src/server}/update-checker.ts +10 -10
- package/{server/src → src/server}/ws/broadcast.ts +8 -8
- package/{server/src → src/server}/ws/router.ts +21 -25
- package/{shared/src → src/shared}/analytics.ts +1 -0
- package/{shared/src → src/shared}/constants.ts +1 -0
- package/{shared/src → src/shared}/messages.ts +151 -15
- package/{shared/src → src/shared}/models.ts +7 -1
- package/tsconfig.json +7 -8
- package/{client/vite.config.ts → vite.config.ts} +14 -18
- package/.editorconfig +0 -12
- package/.github/workflows/ci.yml +0 -81
- package/.github/workflows/release.yml +0 -87
- package/.impeccable.md +0 -66
- package/.releaserc.json +0 -33
- package/.serena/memories/code_style_and_conventions.md +0 -35
- package/.serena/memories/project_overview.md +0 -51
- package/.serena/memories/suggested_commands.md +0 -32
- package/.serena/memories/task_completion_checklist.md +0 -15
- package/.serena/project.yml +0 -152
- package/CLAUDE.md +0 -71
- package/CONTRIBUTING.md +0 -93
- package/bun.lock +0 -2246
- package/bunfig.toml +0 -2
- package/client/package.json +0 -43
- package/client/src/components/settings/Appearance.tsx +0 -152
- package/client/src/components/sidebar/UserIsland.tsx +0 -136
- package/client/src/components/ui/SaveFooter.tsx +0 -38
- package/client/tsconfig.json +0 -18
- package/install.sh +0 -71
- package/playwright.config.ts +0 -19
- package/scripts/build-binary.ts +0 -157
- package/scripts/postinstall.js +0 -31
- package/server/package.json +0 -24
- package/server/src/_generated/embedded-assets.ts +0 -2
- package/server/src/assets.ts +0 -69
- package/server/src/daemon.ts +0 -442
- package/server/src/runtime.ts +0 -4
- package/server/tsconfig.json +0 -20
- package/shared/package.json +0 -11
- package/shared/tsconfig.json +0 -15
- package/tests/accessibility.spec.ts +0 -77
- package/tests/keyboard-shortcuts.spec.ts +0 -70
- package/tests/message-actions.spec.ts +0 -112
- package/tests/onboarding.spec.ts +0 -72
- package/tests/session-flow.spec.ts +0 -117
- package/tests/session-preview.spec.ts +0 -83
- package/themes/amoled.json +0 -20
- package/themes/ayu-light.json +0 -9
- package/themes/catppuccin-latte.json +0 -9
- package/themes/catppuccin-mocha.json +0 -9
- package/themes/clay-light.json +0 -10
- package/themes/clay.json +0 -10
- package/themes/dracula.json +0 -9
- package/themes/everforest-light.json +0 -9
- package/themes/everforest.json +0 -9
- package/themes/github-light.json +0 -9
- package/themes/gruvbox-dark.json +0 -9
- package/themes/gruvbox-light.json +0 -9
- package/themes/monokai.json +0 -9
- package/themes/nord-light.json +0 -9
- package/themes/nord.json +0 -9
- package/themes/one-dark.json +0 -9
- package/themes/one-light.json +0 -9
- package/themes/rose-pine-dawn.json +0 -9
- package/themes/rose-pine.json +0 -9
- package/themes/solarized-dark.json +0 -9
- package/themes/solarized-light.json +0 -9
- package/themes/tokyo-night-light.json +0 -9
- package/themes/tokyo-night.json +0 -9
- package/tp.js +0 -19
- /package/{client/public → dist/client}/icons/icon-192.svg +0 -0
- /package/{client/public → dist/client}/icons/icon-512.svg +0 -0
- /package/{client/src → src/client}/App.tsx +0 -0
- /package/{client/src → src/client}/commands.ts +0 -0
- /package/{client/src → src/client}/components/analytics/PeriodSelector.tsx +0 -0
- /package/{client/src → src/client}/components/analytics/chartTokens.ts +0 -0
- /package/{client/src → src/client}/components/analytics/charts/DailySummaryCards.tsx +0 -0
- /package/{client/src → src/client}/components/analytics/charts/NodeFleetOverview.tsx +0 -0
- /package/{client/src → src/client}/components/analytics/charts/PermissionBreakdown.tsx +0 -0
- /package/{client/src → src/client}/components/analytics/charts/SessionComplexityList.tsx +0 -0
- /package/{client/src → src/client}/components/analytics/charts/TokenSankeyChart.tsx +0 -0
- /package/{client/src → src/client}/components/analytics/charts/ToolTreemap.tsx +0 -0
- /package/{client/src → src/client}/components/auth/PassphrasePrompt.tsx +0 -0
- /package/{client/src → src/client}/components/chat/AttachmentChips.tsx +0 -0
- /package/{client/src → src/client}/components/chat/ChatInput.tsx +0 -0
- /package/{client/src → src/client}/components/chat/CommandPalette.tsx +0 -0
- /package/{client/src → src/client}/components/chat/PermissionModeSelector.tsx +0 -0
- /package/{client/src → src/client}/components/chat/PromptQuestion.tsx +0 -0
- /package/{client/src → src/client}/components/chat/StatusBar.tsx +0 -0
- /package/{client/src → src/client}/components/chat/TodoCard.tsx +0 -0
- /package/{client/src → src/client}/components/chat/ToolGroup.tsx +0 -0
- /package/{client/src → src/client}/components/chat/ToolResultRenderer.tsx +0 -0
- /package/{client/src → src/client}/components/chat/VoiceRecorder.tsx +0 -0
- /package/{client/src → src/client}/components/chat/toolSummary.ts +0 -0
- /package/{client/src → src/client}/components/dashboard/DashboardView.tsx +0 -0
- /package/{client/src → src/client}/components/dashboard/ProjectDashboardView.tsx +0 -0
- /package/{client/src → src/client}/components/mesh/NodeBadge.tsx +0 -0
- /package/{client/src → src/client}/components/mesh/PairingDialog.tsx +0 -0
- /package/{client/src → src/client}/components/project-settings/ProjectClaude.tsx +0 -0
- /package/{client/src → src/client}/components/project-settings/ProjectEnvironment.tsx +0 -0
- /package/{client/src → src/client}/components/project-settings/ProjectGeneral.tsx +0 -0
- /package/{client/src → src/client}/components/project-settings/ProjectMcp.tsx +0 -0
- /package/{client/src → src/client}/components/project-settings/ProjectMemory.tsx +0 -0
- /package/{client/src → src/client}/components/project-settings/ProjectNotifications.tsx +0 -0
- /package/{client/src → src/client}/components/project-settings/ProjectPermissions.tsx +0 -0
- /package/{client/src → src/client}/components/project-settings/ProjectPlugins.tsx +0 -0
- /package/{client/src → src/client}/components/project-settings/ProjectRules.tsx +0 -0
- /package/{client/src → src/client}/components/project-settings/ProjectSettingsView.tsx +0 -0
- /package/{client/src → src/client}/components/project-settings/ProjectSkills.tsx +0 -0
- /package/{client/src → src/client}/components/settings/ClaudeSettings.tsx +0 -0
- /package/{client/src → src/client}/components/settings/Editor.tsx +0 -0
- /package/{client/src → src/client}/components/settings/Environment.tsx +0 -0
- /package/{client/src → src/client}/components/settings/GlobalMcp.tsx +0 -0
- /package/{client/src → src/client}/components/settings/GlobalMemory.tsx +0 -0
- /package/{client/src → src/client}/components/settings/GlobalPlugins.tsx +0 -0
- /package/{client/src → src/client}/components/settings/GlobalRules.tsx +0 -0
- /package/{client/src → src/client}/components/settings/GlobalSkills.tsx +0 -0
- /package/{client/src → src/client}/components/settings/MeshStatus.tsx +0 -0
- /package/{client/src → src/client}/components/settings/SettingsView.tsx +0 -0
- /package/{client/src → src/client}/components/settings/SkillMarketplace.tsx +0 -0
- /package/{client/src → src/client}/components/settings/mcp-shared.tsx +0 -0
- /package/{client/src → src/client}/components/settings/skill-shared.tsx +0 -0
- /package/{client/src → src/client}/components/setup/SetupWizard.tsx +0 -0
- /package/{client/src → src/client}/components/sidebar/AddProjectModal.tsx +0 -0
- /package/{client/src → src/client}/components/sidebar/NodeSettingsModal.tsx +0 -0
- /package/{client/src → src/client}/components/sidebar/ProjectDropdown.tsx +0 -0
- /package/{client/src → src/client}/components/sidebar/SearchFilter.tsx +0 -0
- /package/{client/src → src/client}/components/sidebar/SettingsSidebar.tsx +0 -0
- /package/{client/src → src/client}/components/ui/CommandPalette.tsx +0 -0
- /package/{client/src → src/client}/components/ui/ErrorBoundary.tsx +0 -0
- /package/{client/src → src/client}/components/ui/IconPicker.tsx +0 -0
- /package/{client/src → src/client}/components/ui/KeyboardShortcuts.tsx +0 -0
- /package/{client/src → src/client}/components/ui/LatticeLogomark.tsx +0 -0
- /package/{client/src → src/client}/components/ui/NodeDisconnectedOverlay.tsx +0 -0
- /package/{client/src → src/client}/components/ui/Toast.tsx +0 -0
- /package/{client/src → src/client}/components/ui/UpdateBanner.tsx +0 -0
- /package/{client/src → src/client}/components/ui/UpdatePrompt.tsx +0 -0
- /package/{client/src → src/client}/components/workspace/BookmarksView.tsx +0 -0
- /package/{client/src → src/client}/components/workspace/FileBrowser.tsx +0 -0
- /package/{client/src → src/client}/components/workspace/FileTree.tsx +0 -0
- /package/{client/src → src/client}/components/workspace/FileViewer.tsx +0 -0
- /package/{client/src → src/client}/components/workspace/NoteCard.tsx +0 -0
- /package/{client/src → src/client}/components/workspace/NotesView.tsx +0 -0
- /package/{client/src → src/client}/components/workspace/ScheduledTasksView.tsx +0 -0
- /package/{client/src → src/client}/components/workspace/SplitPane.tsx +0 -0
- /package/{client/src → src/client}/components/workspace/TaskCard.tsx +0 -0
- /package/{client/src → src/client}/components/workspace/TaskEditModal.tsx +0 -0
- /package/{client/src → src/client}/components/workspace/TerminalInstance.tsx +0 -0
- /package/{client/src → src/client}/components/workspace/TerminalView.tsx +0 -0
- /package/{client/src → src/client}/components/workspace/WorkspaceView.tsx +0 -0
- /package/{client/src → src/client}/hooks/useAttachments.ts +0 -0
- /package/{client/src → src/client}/hooks/useBookmarks.ts +0 -0
- /package/{client/src → src/client}/hooks/useEditorConfig.ts +0 -0
- /package/{client/src → src/client}/hooks/useFocusTrap.ts +0 -0
- /package/{client/src → src/client}/hooks/useIdleDetection.ts +0 -0
- /package/{client/src → src/client}/hooks/useInstallPrompt.ts +0 -0
- /package/{client/src → src/client}/hooks/useMesh.ts +0 -0
- /package/{client/src → src/client}/hooks/useNotifications.ts +0 -0
- /package/{client/src → src/client}/hooks/useOnline.ts +0 -0
- /package/{client/src → src/client}/hooks/useProjectSettings.ts +0 -0
- /package/{client/src → src/client}/hooks/useProjects.ts +0 -0
- /package/{client/src → src/client}/hooks/useSaveState.ts +0 -0
- /package/{client/src → src/client}/hooks/useSidebar.ts +0 -0
- /package/{client/src → src/client}/hooks/useSkills.ts +0 -0
- /package/{client/src → src/client}/hooks/useSpinnerVerb.ts +0 -0
- /package/{client/src → src/client}/hooks/useSwipeDrawer.ts +0 -0
- /package/{client/src → src/client}/hooks/useTheme.ts +0 -0
- /package/{client/src → src/client}/hooks/useTimeTick.ts +0 -0
- /package/{client/src → src/client}/hooks/useVoiceRecorder.ts +0 -0
- /package/{client/src → src/client}/hooks/useWorkspace.ts +0 -0
- /package/{client/src → src/client}/lib/workspace-url.ts +0 -0
- /package/{client/src → src/client}/main.tsx +0 -0
- /package/{client/src → src/client}/providers/WebSocketProvider.tsx +0 -0
- /package/{client/src → src/client}/router.tsx +0 -0
- /package/{client/src → src/client}/stores/bookmarks.ts +0 -0
- /package/{client/src → src/client}/stores/mesh.ts +0 -0
- /package/{client/src → src/client}/stores/theme.ts +0 -0
- /package/{client/src → src/client}/stores/workspace.ts +0 -0
- /package/{client/src → src/client}/styles/global.css +0 -0
- /package/{client/src → src/client}/styles/theme-vars.css +0 -0
- /package/{client/src → src/client}/utils/editorUrl.ts +0 -0
- /package/{client/src → src/client}/utils/findDuplicateKeys.ts +0 -0
- /package/{client/src → src/client}/utils/formatSessionTitle.ts +0 -0
- /package/{client/src → src/client}/vite-env.d.ts +0 -0
- /package/{server/src → src/server}/auth/passphrase.ts +0 -0
- /package/{server/src → src/server}/config.ts +0 -0
- /package/{server/src → src/server}/features/ralph-loop.ts +0 -0
- /package/{server/src → src/server}/features/scheduler.ts +0 -0
- /package/{server/src → src/server}/features/sticky-notes.ts +0 -0
- /package/{server/src → src/server}/handlers/attachment.ts +0 -0
- /package/{server/src → src/server}/handlers/bookmarks.ts +0 -0
- /package/{server/src → src/server}/handlers/editor.ts +0 -0
- /package/{server/src → src/server}/handlers/fs.ts +0 -0
- /package/{server/src → src/server}/handlers/loop.ts +0 -0
- /package/{server/src → src/server}/handlers/memory.ts +0 -0
- /package/{server/src → src/server}/handlers/notes.ts +0 -0
- /package/{server/src → src/server}/handlers/project-settings.ts +0 -0
- /package/{server/src → src/server}/handlers/scheduler.ts +0 -0
- /package/{server/src → src/server}/handlers/terminal.ts +0 -0
- /package/{server/src → src/server}/identity.ts +0 -0
- /package/{server/src → src/server}/logger.ts +0 -0
- /package/{server/src → src/server}/mesh/crypto.ts +0 -0
- /package/{server/src → src/server}/mesh/discovery.ts +0 -0
- /package/{server/src → src/server}/mesh/pairing.ts +0 -0
- /package/{server/src → src/server}/mesh/peers.ts +0 -0
- /package/{server/src → src/server}/mesh/proxy.ts +0 -0
- /package/{server/src → src/server}/mesh/session-sync.ts +0 -0
- /package/{server/src → src/server}/project/bookmarks.ts +0 -0
- /package/{server/src → src/server}/project/file-browser.ts +0 -0
- /package/{server/src → src/server}/project/project-files.ts +0 -0
- /package/{server/src → src/server}/project/registry.ts +0 -0
- /package/{server/src → src/server}/tls.ts +0 -0
- /package/{server/src → src/server}/ws/server.ts +0 -0
- /package/{shared/src → src/shared}/index.ts +0 -0
- /package/{shared/src → src/shared}/project-settings.ts +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AnalyticsPayload } from "./analytics.js";
|
|
1
|
+
import type { AnalyticsPayload, AnalyticsSectionName } from "./analytics.js";
|
|
2
2
|
import type {
|
|
3
3
|
FileEntry,
|
|
4
4
|
HistoryMessage,
|
|
@@ -86,11 +86,45 @@ export interface ChatPermissionResponseMessage {
|
|
|
86
86
|
alwaysAllowScope?: "session" | "project";
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
export interface
|
|
90
|
-
type: "chat:
|
|
89
|
+
export interface ChatRewindPreviewMessage {
|
|
90
|
+
type: "chat:rewind_preview";
|
|
91
91
|
messageUuid: string;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
+
export interface ChatRewindExecuteMessage {
|
|
95
|
+
type: "chat:rewind_execute";
|
|
96
|
+
messageUuid: string;
|
|
97
|
+
mode: "both" | "files" | "chat";
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export interface ChatRewindPreviewResultMessage {
|
|
101
|
+
type: "chat:rewind_preview_result";
|
|
102
|
+
messageUuid: string;
|
|
103
|
+
canRewind: boolean;
|
|
104
|
+
error?: string;
|
|
105
|
+
filesChanged?: number;
|
|
106
|
+
insertions?: number;
|
|
107
|
+
deletions?: number;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export interface ChatRewindExecuteResultMessage {
|
|
111
|
+
type: "chat:rewind_execute_result";
|
|
112
|
+
messageUuid: string;
|
|
113
|
+
success: boolean;
|
|
114
|
+
error?: string;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export interface ChatMessageUuidMessage {
|
|
118
|
+
type: "chat:message_uuid";
|
|
119
|
+
uuid: string;
|
|
120
|
+
messageType: "user" | "assistant";
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export interface ChatSetModelMessage {
|
|
124
|
+
type: "chat:set_model";
|
|
125
|
+
model: string;
|
|
126
|
+
}
|
|
127
|
+
|
|
94
128
|
export interface ChatCancelMessage {
|
|
95
129
|
type: "chat:cancel";
|
|
96
130
|
}
|
|
@@ -425,11 +459,6 @@ export interface ProjectSettingsErrorMessage {
|
|
|
425
459
|
message: string;
|
|
426
460
|
}
|
|
427
461
|
|
|
428
|
-
export interface SessionStopExternalMessage {
|
|
429
|
-
type: "session:stop_external";
|
|
430
|
-
sessionId: string;
|
|
431
|
-
}
|
|
432
|
-
|
|
433
462
|
export interface BudgetOverrideMessage {
|
|
434
463
|
type: "budget:override";
|
|
435
464
|
}
|
|
@@ -452,6 +481,18 @@ export interface AnalyticsDataMessage {
|
|
|
452
481
|
data: AnalyticsPayload;
|
|
453
482
|
}
|
|
454
483
|
|
|
484
|
+
export interface AnalyticsSectionMessage {
|
|
485
|
+
type: "analytics:section";
|
|
486
|
+
requestId: string;
|
|
487
|
+
section: AnalyticsSectionName;
|
|
488
|
+
data: Partial<AnalyticsPayload>;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
export interface AnalyticsCompleteMessage {
|
|
492
|
+
type: "analytics:complete";
|
|
493
|
+
requestId: string;
|
|
494
|
+
}
|
|
495
|
+
|
|
455
496
|
export interface AnalyticsErrorMessage {
|
|
456
497
|
type: "analytics:error";
|
|
457
498
|
scope: "global" | "project" | "session";
|
|
@@ -533,17 +574,66 @@ export interface UpdateApplyMessage {
|
|
|
533
574
|
type: "update:apply";
|
|
534
575
|
}
|
|
535
576
|
|
|
577
|
+
export interface ThemeListCustomMessage {
|
|
578
|
+
type: "theme:list_custom";
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
export interface ThemeSaveMessage {
|
|
582
|
+
type: "theme:save";
|
|
583
|
+
name: string;
|
|
584
|
+
author: string;
|
|
585
|
+
variant: "dark" | "light";
|
|
586
|
+
colors: Record<string, string>;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
export interface ThemeDeleteMessage {
|
|
590
|
+
type: "theme:delete";
|
|
591
|
+
name: string;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
export interface ChatElicitationRequestMessage {
|
|
595
|
+
type: "chat:elicitation_request";
|
|
596
|
+
requestId: string;
|
|
597
|
+
serverName: string;
|
|
598
|
+
message: string;
|
|
599
|
+
mode: "form" | "url";
|
|
600
|
+
url?: string | null;
|
|
601
|
+
requestedSchema?: Record<string, unknown> | null;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
export interface ChatElicitationResponseMessage {
|
|
605
|
+
type: "chat:elicitation_response";
|
|
606
|
+
requestId: string;
|
|
607
|
+
action: "accept" | "decline";
|
|
608
|
+
content?: Record<string, unknown>;
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
export interface WarmupModelsMessage {
|
|
612
|
+
type: "warmup:models";
|
|
613
|
+
models: Array<{ value: string; displayName: string }>;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
export interface WarmupAccountMessage {
|
|
617
|
+
type: "warmup:account";
|
|
618
|
+
email?: string;
|
|
619
|
+
organization?: string;
|
|
620
|
+
subscriptionType?: string;
|
|
621
|
+
apiKeySource?: string;
|
|
622
|
+
apiProvider?: string;
|
|
623
|
+
}
|
|
624
|
+
|
|
536
625
|
export type ClientMessage =
|
|
537
626
|
| SessionCreateMessage
|
|
538
627
|
| SessionActivateMessage
|
|
539
628
|
| SessionRenameMessage
|
|
540
629
|
| SessionDeleteMessage
|
|
541
630
|
| SessionListRequestMessage
|
|
542
|
-
| SessionStopExternalMessage
|
|
543
631
|
| ChatSendMessage
|
|
544
632
|
| ChatPermissionResponseMessage
|
|
545
|
-
| ChatRewindMessage
|
|
546
633
|
| ChatCancelMessage
|
|
634
|
+
| ChatSetModelMessage
|
|
635
|
+
| ChatRewindPreviewMessage
|
|
636
|
+
| ChatRewindExecuteMessage
|
|
547
637
|
| FsListMessage
|
|
548
638
|
| FsReadMessage
|
|
549
639
|
| FsWriteMessage
|
|
@@ -608,7 +698,11 @@ export type ClientMessage =
|
|
|
608
698
|
| PluginDiscoverMessage
|
|
609
699
|
| PluginErrorsMessage
|
|
610
700
|
| UpdateCheckMessage
|
|
611
|
-
| UpdateApplyMessage
|
|
701
|
+
| UpdateApplyMessage
|
|
702
|
+
| ChatElicitationResponseMessage
|
|
703
|
+
| ThemeListCustomMessage
|
|
704
|
+
| ThemeSaveMessage
|
|
705
|
+
| ThemeDeleteMessage;
|
|
612
706
|
|
|
613
707
|
export interface SessionListMessage {
|
|
614
708
|
type: "session:list";
|
|
@@ -636,17 +730,20 @@ export interface SessionHistoryMessage {
|
|
|
636
730
|
messages: HistoryMessage[];
|
|
637
731
|
title?: string;
|
|
638
732
|
interrupted?: boolean;
|
|
639
|
-
busy?: boolean;
|
|
640
|
-
busyOwner?: "cli" | "lattice";
|
|
641
733
|
totalMessages?: number;
|
|
642
734
|
hasMore?: boolean;
|
|
643
735
|
}
|
|
644
736
|
|
|
737
|
+
export interface SessionLoadingProgressMessage {
|
|
738
|
+
type: "session:loading_progress";
|
|
739
|
+
sessionId: string;
|
|
740
|
+
fileSize: number | null;
|
|
741
|
+
}
|
|
742
|
+
|
|
645
743
|
export interface SessionBusyMessage {
|
|
646
744
|
type: "session:busy";
|
|
647
745
|
sessionId: string;
|
|
648
746
|
busy: boolean;
|
|
649
|
-
busyOwner?: "cli" | "lattice";
|
|
650
747
|
}
|
|
651
748
|
|
|
652
749
|
export interface ChatUserMessage {
|
|
@@ -1027,6 +1124,21 @@ export interface UpdateApplyResultMessage {
|
|
|
1027
1124
|
message?: string;
|
|
1028
1125
|
}
|
|
1029
1126
|
|
|
1127
|
+
export interface ThemeCustomListMessage {
|
|
1128
|
+
type: "theme:custom_list";
|
|
1129
|
+
themes: Array<{ name: string; author: string; variant: string; filename: string; colors: Record<string, string> }>;
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
export interface ThemeSavedMessage {
|
|
1133
|
+
type: "theme:saved";
|
|
1134
|
+
theme: { name: string; author: string; variant: string; filename: string; colors: Record<string, string> };
|
|
1135
|
+
}
|
|
1136
|
+
|
|
1137
|
+
export interface ThemeDeletedMessage {
|
|
1138
|
+
type: "theme:deleted";
|
|
1139
|
+
filename: string;
|
|
1140
|
+
}
|
|
1141
|
+
|
|
1030
1142
|
export type ServerMessage =
|
|
1031
1143
|
| SessionListMessage
|
|
1032
1144
|
| SessionCreatedMessage
|
|
@@ -1091,6 +1203,8 @@ export type ServerMessage =
|
|
|
1091
1203
|
| ChatTodoUpdateMessage
|
|
1092
1204
|
| ChatPlanModeMessage
|
|
1093
1205
|
| AnalyticsDataMessage
|
|
1206
|
+
| AnalyticsSectionMessage
|
|
1207
|
+
| AnalyticsCompleteMessage
|
|
1094
1208
|
| AnalyticsErrorMessage
|
|
1095
1209
|
| SessionPreviewMessage
|
|
1096
1210
|
| SessionHistoryPageResultMessage
|
|
@@ -1107,7 +1221,29 @@ export type ServerMessage =
|
|
|
1107
1221
|
| PluginDiscoverResultMessage
|
|
1108
1222
|
| PluginErrorsResultMessage
|
|
1109
1223
|
| UpdateStatusMessage
|
|
1110
|
-
| UpdateApplyResultMessage
|
|
1224
|
+
| UpdateApplyResultMessage
|
|
1225
|
+
| ChatElicitationRequestMessage
|
|
1226
|
+
| ChatRewindPreviewResultMessage
|
|
1227
|
+
| ChatRewindExecuteResultMessage
|
|
1228
|
+
| ChatMessageUuidMessage
|
|
1229
|
+
| WarmupModelsMessage
|
|
1230
|
+
| WarmupAccountMessage
|
|
1231
|
+
| ChatRateLimitMessage
|
|
1232
|
+
| ThemeCustomListMessage
|
|
1233
|
+
| ThemeSavedMessage
|
|
1234
|
+
| ThemeDeletedMessage
|
|
1235
|
+
| SessionLoadingProgressMessage;
|
|
1236
|
+
|
|
1237
|
+
export interface ChatRateLimitMessage {
|
|
1238
|
+
type: "chat:rate_limit";
|
|
1239
|
+
status: "allowed" | "allowed_warning" | "rejected";
|
|
1240
|
+
utilization?: number;
|
|
1241
|
+
resetsAt?: number;
|
|
1242
|
+
rateLimitType?: string;
|
|
1243
|
+
overageStatus?: string;
|
|
1244
|
+
overageResetsAt?: number;
|
|
1245
|
+
isUsingOverage?: boolean;
|
|
1246
|
+
}
|
|
1111
1247
|
|
|
1112
1248
|
export interface BudgetStatusMessage {
|
|
1113
1249
|
type: "budget:status";
|
|
@@ -61,7 +61,7 @@ export interface Attachment {
|
|
|
61
61
|
lineCount?: number;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
export type HistoryMessageType = "user" | "assistant" | "tool_start" | "tool_result" | "permission_request" | "prompt_question" | "todo_update";
|
|
64
|
+
export type HistoryMessageType = "user" | "assistant" | "tool_start" | "tool_result" | "permission_request" | "prompt_question" | "todo_update" | "elicitation" | "compact_summary";
|
|
65
65
|
|
|
66
66
|
export interface HistoryMessage {
|
|
67
67
|
type: HistoryMessageType;
|
|
@@ -95,6 +95,12 @@ export interface HistoryMessage {
|
|
|
95
95
|
status: "pending" | "in_progress" | "completed";
|
|
96
96
|
priority: "high" | "medium" | "low";
|
|
97
97
|
}>;
|
|
98
|
+
elicitationMode?: "form" | "url";
|
|
99
|
+
elicitationServerName?: string;
|
|
100
|
+
elicitationMessage?: string;
|
|
101
|
+
elicitationUrl?: string | null;
|
|
102
|
+
elicitationSchema?: Record<string, unknown> | null;
|
|
103
|
+
elicitationStatus?: "pending" | "accepted" | "declined";
|
|
98
104
|
}
|
|
99
105
|
|
|
100
106
|
export interface PeerInfo {
|
package/tsconfig.json
CHANGED
|
@@ -8,16 +8,15 @@
|
|
|
8
8
|
"esModuleInterop": true,
|
|
9
9
|
"allowSyntheticDefaultImports": true,
|
|
10
10
|
"resolveJsonModule": true,
|
|
11
|
-
"declaration": true,
|
|
12
|
-
"declarationMap": true,
|
|
13
11
|
"sourceMap": true,
|
|
14
|
-
"
|
|
15
|
-
"
|
|
12
|
+
"jsx": "react-jsx",
|
|
13
|
+
"paths": {
|
|
14
|
+
"@lattice/shared": ["./src/shared/index.ts"]
|
|
15
|
+
},
|
|
16
|
+
"types": ["node"]
|
|
16
17
|
},
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
{ "path": "./server" },
|
|
20
|
-
{ "path": "./client" }
|
|
18
|
+
"include": [
|
|
19
|
+
"src/**/*"
|
|
21
20
|
],
|
|
22
21
|
"exclude": [
|
|
23
22
|
"node_modules",
|
|
@@ -1,9 +1,17 @@
|
|
|
1
|
+
import { resolve } from "node:path";
|
|
1
2
|
import { defineConfig } from "vite";
|
|
2
3
|
import react from "@vitejs/plugin-react";
|
|
3
4
|
import tailwindcss from "@tailwindcss/vite";
|
|
4
5
|
import { VitePWA } from "vite-plugin-pwa";
|
|
5
6
|
|
|
6
7
|
export default defineConfig({
|
|
8
|
+
root: ".",
|
|
9
|
+
publicDir: "public",
|
|
10
|
+
resolve: {
|
|
11
|
+
alias: {
|
|
12
|
+
"@lattice/shared": resolve(__dirname, "src/shared/index.ts"),
|
|
13
|
+
},
|
|
14
|
+
},
|
|
7
15
|
plugins: [
|
|
8
16
|
tailwindcss(),
|
|
9
17
|
react(),
|
|
@@ -50,26 +58,14 @@ export default defineConfig({
|
|
|
50
58
|
},
|
|
51
59
|
}),
|
|
52
60
|
],
|
|
61
|
+
build: {
|
|
62
|
+
outDir: "dist/client",
|
|
63
|
+
},
|
|
53
64
|
server: {
|
|
54
65
|
host: "0.0.0.0",
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
"/ws": {
|
|
58
|
-
target: "ws://localhost:" + (process.env.LATTICE_PORT || "17654"),
|
|
59
|
-
ws: true,
|
|
60
|
-
configure: function (proxy) {
|
|
61
|
-
proxy.on("error", function () {});
|
|
62
|
-
proxy.on("proxyReqWs", function (_proxyReq, _req, socket) {
|
|
63
|
-
socket.on("error", function () {});
|
|
64
|
-
});
|
|
65
|
-
},
|
|
66
|
-
},
|
|
67
|
-
"/api": {
|
|
68
|
-
target: "http://localhost:" + (process.env.LATTICE_PORT || "17654"),
|
|
69
|
-
configure: function (proxy) {
|
|
70
|
-
proxy.on("error", function () {});
|
|
71
|
-
},
|
|
72
|
-
},
|
|
66
|
+
hmr: {
|
|
67
|
+
host: "localhost",
|
|
73
68
|
},
|
|
69
|
+
open: true,
|
|
74
70
|
},
|
|
75
71
|
});
|
package/.editorconfig
DELETED
package/.github/workflows/ci.yml
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
name: CI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches:
|
|
6
|
-
- main
|
|
7
|
-
pull_request:
|
|
8
|
-
branches:
|
|
9
|
-
- main
|
|
10
|
-
|
|
11
|
-
jobs:
|
|
12
|
-
typecheck:
|
|
13
|
-
name: Typecheck
|
|
14
|
-
runs-on: ubuntu-latest
|
|
15
|
-
steps:
|
|
16
|
-
- name: Checkout
|
|
17
|
-
uses: actions/checkout@v5
|
|
18
|
-
|
|
19
|
-
- name: Setup Bun
|
|
20
|
-
uses: oven-sh/setup-bun@v2
|
|
21
|
-
with:
|
|
22
|
-
bun-version: latest
|
|
23
|
-
|
|
24
|
-
- name: Setup Node.js
|
|
25
|
-
uses: actions/setup-node@v4
|
|
26
|
-
with:
|
|
27
|
-
node-version: 22
|
|
28
|
-
|
|
29
|
-
- name: Cache bun install
|
|
30
|
-
uses: actions/cache@v4
|
|
31
|
-
with:
|
|
32
|
-
path: ~/.bun/install/cache
|
|
33
|
-
key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}
|
|
34
|
-
restore-keys: |
|
|
35
|
-
${{ runner.os }}-bun-
|
|
36
|
-
|
|
37
|
-
- name: Install dependencies
|
|
38
|
-
run: bun install --frozen-lockfile
|
|
39
|
-
|
|
40
|
-
- name: Build shared types
|
|
41
|
-
run: bunx tsc -p shared/tsconfig.json
|
|
42
|
-
|
|
43
|
-
- name: Typecheck server
|
|
44
|
-
run: bunx tsc --noEmit -p server/tsconfig.json
|
|
45
|
-
|
|
46
|
-
- name: Typecheck client
|
|
47
|
-
run: bunx tsc --noEmit -p client/tsconfig.json
|
|
48
|
-
|
|
49
|
-
build:
|
|
50
|
-
name: Build
|
|
51
|
-
runs-on: ubuntu-latest
|
|
52
|
-
steps:
|
|
53
|
-
- name: Checkout
|
|
54
|
-
uses: actions/checkout@v5
|
|
55
|
-
|
|
56
|
-
- name: Setup Bun
|
|
57
|
-
uses: oven-sh/setup-bun@v2
|
|
58
|
-
with:
|
|
59
|
-
bun-version: latest
|
|
60
|
-
|
|
61
|
-
- name: Setup Node.js
|
|
62
|
-
uses: actions/setup-node@v4
|
|
63
|
-
with:
|
|
64
|
-
node-version: 22
|
|
65
|
-
|
|
66
|
-
- name: Cache bun install
|
|
67
|
-
uses: actions/cache@v4
|
|
68
|
-
with:
|
|
69
|
-
path: ~/.bun/install/cache
|
|
70
|
-
key: ${{ runner.os }}-bun-${{ hashFiles('bun.lock') }}
|
|
71
|
-
restore-keys: |
|
|
72
|
-
${{ runner.os }}-bun-
|
|
73
|
-
|
|
74
|
-
- name: Install dependencies
|
|
75
|
-
run: bun install --frozen-lockfile
|
|
76
|
-
|
|
77
|
-
- name: Build client
|
|
78
|
-
run: cd client && npx vite build
|
|
79
|
-
|
|
80
|
-
# Playwright tests require a running server (localhost:7654)
|
|
81
|
-
# Run locally with: bunx playwright test
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
name: Release
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches:
|
|
6
|
-
- main
|
|
7
|
-
|
|
8
|
-
permissions:
|
|
9
|
-
contents: write
|
|
10
|
-
issues: write
|
|
11
|
-
pull-requests: write
|
|
12
|
-
id-token: write
|
|
13
|
-
|
|
14
|
-
jobs:
|
|
15
|
-
release:
|
|
16
|
-
name: Release
|
|
17
|
-
runs-on: ubuntu-latest
|
|
18
|
-
environment: npm
|
|
19
|
-
outputs:
|
|
20
|
-
new_release_published: ${{ steps.semantic.outputs.new_release_published }}
|
|
21
|
-
new_release_version: ${{ steps.semantic.outputs.new_release_version }}
|
|
22
|
-
steps:
|
|
23
|
-
- name: Checkout
|
|
24
|
-
uses: actions/checkout@v5
|
|
25
|
-
with:
|
|
26
|
-
fetch-depth: 0
|
|
27
|
-
|
|
28
|
-
- name: Setup Bun
|
|
29
|
-
uses: oven-sh/setup-bun@v2
|
|
30
|
-
with:
|
|
31
|
-
bun-version: latest
|
|
32
|
-
|
|
33
|
-
- name: Setup Node.js
|
|
34
|
-
uses: actions/setup-node@v5
|
|
35
|
-
with:
|
|
36
|
-
node-version: 24
|
|
37
|
-
|
|
38
|
-
- name: Install dependencies
|
|
39
|
-
run: bun install --frozen-lockfile
|
|
40
|
-
|
|
41
|
-
- name: Build
|
|
42
|
-
run: bun run build
|
|
43
|
-
|
|
44
|
-
- name: Release
|
|
45
|
-
id: semantic
|
|
46
|
-
env:
|
|
47
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
48
|
-
run: |
|
|
49
|
-
npx semantic-release
|
|
50
|
-
TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
|
51
|
-
if [ -n "$TAG" ]; then
|
|
52
|
-
VERSION="${TAG#v}"
|
|
53
|
-
echo "new_release_published=true" >> $GITHUB_OUTPUT
|
|
54
|
-
echo "new_release_version=$VERSION" >> $GITHUB_OUTPUT
|
|
55
|
-
else
|
|
56
|
-
echo "new_release_published=false" >> $GITHUB_OUTPUT
|
|
57
|
-
fi
|
|
58
|
-
|
|
59
|
-
build-binaries:
|
|
60
|
-
name: Build ${{ matrix.target }}
|
|
61
|
-
needs: release
|
|
62
|
-
if: needs.release.outputs.new_release_published == 'true'
|
|
63
|
-
runs-on: ubuntu-latest
|
|
64
|
-
strategy:
|
|
65
|
-
matrix:
|
|
66
|
-
target: [linux-x64, linux-arm64, darwin-x64, darwin-arm64]
|
|
67
|
-
steps:
|
|
68
|
-
- name: Checkout
|
|
69
|
-
uses: actions/checkout@v5
|
|
70
|
-
with:
|
|
71
|
-
ref: v${{ needs.release.outputs.new_release_version }}
|
|
72
|
-
|
|
73
|
-
- name: Setup Bun
|
|
74
|
-
uses: oven-sh/setup-bun@v2
|
|
75
|
-
with:
|
|
76
|
-
bun-version: latest
|
|
77
|
-
|
|
78
|
-
- name: Install dependencies
|
|
79
|
-
run: bun install --frozen-lockfile
|
|
80
|
-
|
|
81
|
-
- name: Build binary
|
|
82
|
-
run: bun scripts/build-binary.ts --target=${{ matrix.target }} --version=${{ needs.release.outputs.new_release_version }}
|
|
83
|
-
|
|
84
|
-
- name: Upload to GitHub Release
|
|
85
|
-
env:
|
|
86
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
87
|
-
run: gh release upload "v${{ needs.release.outputs.new_release_version }}" "dist/lattice-${{ matrix.target }}" --clobber
|
package/.impeccable.md
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
# Lattice Design Context
|
|
2
|
-
|
|
3
|
-
## Users
|
|
4
|
-
Single developer managing Claude Code across multiple machines. They're power users who value efficiency, keyboard shortcuts, and information density. They interact with Lattice as a command center — monitoring sessions, browsing files, running terminals, and chatting with Claude across their fleet of nodes.
|
|
5
|
-
|
|
6
|
-
## Brand Personality
|
|
7
|
-
**Precise. Technical. Calm.**
|
|
8
|
-
|
|
9
|
-
Lattice is a quiet authority — confident without being loud, technical without being intimidating. It respects the developer's attention and gets out of the way. Every pixel earns its place.
|
|
10
|
-
|
|
11
|
-
## Emotional Goals
|
|
12
|
-
- **Control & Mastery**: "I have my entire fleet at my fingertips." The interface should communicate that the user is in command — clear status, predictable behavior, immediate feedback.
|
|
13
|
-
- **Trust & Reliability**: "I can depend on this." Stability over novelty. Consistent patterns. No surprises. Professional confidence in every interaction.
|
|
14
|
-
|
|
15
|
-
## Aesthetic Direction
|
|
16
|
-
- **Dark-first**: Deep, low-chroma backgrounds with precise accent colors. Light themes available but dark is the native habitat.
|
|
17
|
-
- **Monospace DNA**: JetBrains Mono for headings and emphasis gives Lattice its terminal-rooted identity. IBM Plex Sans for readable body text.
|
|
18
|
-
- **Topological motif**: The lattice grid (dot-grid backgrounds, node connection lines, the 2x2 logomark) is the recurring visual thread.
|
|
19
|
-
- **Three surface tiers**: Chrome (sidebar/headers, `base-200`), Stage (chat area, `base-100` with dot-grid), Elevated (panels/modals, `base-300` with shadow).
|
|
20
|
-
- **OKLCH color space**: Perceptually consistent colors across all 23 base16 themes.
|
|
21
|
-
- **Utilitarian density**: Information-rich without clutter. Compact spacing, small type sizes, efficient use of space.
|
|
22
|
-
|
|
23
|
-
## Anti-patterns
|
|
24
|
-
- No gratuitous animations or transitions — motion serves function only
|
|
25
|
-
- No rounded-everything bubbly aesthetic — keep edges intentional
|
|
26
|
-
- No pastel-heavy palettes in dark mode — maintain contrast authority
|
|
27
|
-
- No emoji icons — lucide-react only
|
|
28
|
-
- No "AI slop" aesthetics — avoid generic Inter/purple-gradient patterns
|
|
29
|
-
|
|
30
|
-
## Design Principles
|
|
31
|
-
|
|
32
|
-
1. **Earn every pixel**: Nothing decorative without function. If an element doesn't help the user understand state, take action, or navigate, remove it.
|
|
33
|
-
2. **Quiet confidence**: The interface communicates competence through consistency and precision, not through visual loudness or novelty.
|
|
34
|
-
3. **State is sacred**: Connection status, session state, node health — these must be instantly legible. Use color, position, and subtle animation to make state changes unmissable without being alarming.
|
|
35
|
-
4. **Dense but breathable**: Pack information efficiently but maintain clear visual hierarchy through type scale, opacity, and spacing — not through excessive whitespace.
|
|
36
|
-
5. **Theme-native**: Never hardcode colors. Every visual decision flows through CSS variables and the active base16 theme. A component should look correct in all 23 themes without special-casing.
|
|
37
|
-
|
|
38
|
-
## Accessibility Requirements
|
|
39
|
-
- **WCAG AA** minimum contrast ratios
|
|
40
|
-
- **Reduced motion**: Respect `prefers-reduced-motion` — disable non-essential animations, keep functional transitions minimal
|
|
41
|
-
- **High contrast**: Support a dedicated high-contrast theme option for low-vision users
|
|
42
|
-
- **Color blind safe**: Status indicators (online/offline, success/error/warning) must be distinguishable without relying on hue alone — use shape, icon, or label as secondary signal
|
|
43
|
-
- **Mobile & responsive**: Support touch targets, responsive layouts, and gesture navigation for tablet/mobile use
|
|
44
|
-
- **Keyboard-first**: All actions reachable via keyboard; visible focus indicators
|
|
45
|
-
|
|
46
|
-
## Typography Scale
|
|
47
|
-
| Role | Font | Size | Weight | Tracking |
|
|
48
|
-
|------|------|------|--------|----------|
|
|
49
|
-
| Section label | JetBrains Mono | 11-12px | Bold | wider/widest, uppercase |
|
|
50
|
-
| Body text | IBM Plex Sans | 14px | Regular | normal |
|
|
51
|
-
| Secondary text | IBM Plex Sans | 13px | Regular | normal |
|
|
52
|
-
| Muted/hint | IBM Plex Sans | 11px | Regular | normal |
|
|
53
|
-
| Code/terminal | JetBrains Mono | 14px | Regular | normal |
|
|
54
|
-
| Heading emphasis | JetBrains Mono | 17px | Bold | normal |
|
|
55
|
-
|
|
56
|
-
## Spacing Patterns
|
|
57
|
-
- Standard padding: `px-4`, `py-2.5`, `gap-2`-`gap-3`
|
|
58
|
-
- Compact list items: `px-3`, `py-1.5`
|
|
59
|
-
- Input fields: `px-3`, `py-2.5`, `rounded-xl`
|
|
60
|
-
- Section spacing: `pt-4`, `pb-2`
|
|
61
|
-
|
|
62
|
-
## Component Patterns
|
|
63
|
-
- **Buttons**: daisyUI `btn` with ghost/primary/accent variants. Icon buttons use `btn-ghost btn-xs btn-square`.
|
|
64
|
-
- **Inputs**: `bg-base-300 border border-base-content/15 rounded-xl`, focus: `border-primary`
|
|
65
|
-
- **Opacity hierarchy**: `/70` secondary, `/40` muted labels, `/30` hints, `/15`-`/20` borders
|
|
66
|
-
- **Surfaces**: Three tiers — chrome (`base-200`), stage (`base-100` + dot-grid), elevated (`base-300` + shadow)
|
package/.releaserc.json
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"branches": [
|
|
3
|
-
"main",
|
|
4
|
-
{
|
|
5
|
-
"name": "alpha",
|
|
6
|
-
"prerelease": true
|
|
7
|
-
}
|
|
8
|
-
],
|
|
9
|
-
"plugins": [
|
|
10
|
-
[
|
|
11
|
-
"@semantic-release/commit-analyzer",
|
|
12
|
-
{
|
|
13
|
-
"preset": "angular"
|
|
14
|
-
}
|
|
15
|
-
],
|
|
16
|
-
[
|
|
17
|
-
"@semantic-release/release-notes-generator",
|
|
18
|
-
{
|
|
19
|
-
"preset": "angular"
|
|
20
|
-
}
|
|
21
|
-
],
|
|
22
|
-
[
|
|
23
|
-
"@semantic-release/npm",
|
|
24
|
-
{
|
|
25
|
-
"pkgRoot": ".",
|
|
26
|
-
"npmPublish": true
|
|
27
|
-
}
|
|
28
|
-
],
|
|
29
|
-
[
|
|
30
|
-
"@semantic-release/github"
|
|
31
|
-
]
|
|
32
|
-
]
|
|
33
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# Code Style and Conventions
|
|
2
|
-
|
|
3
|
-
## JavaScript/TypeScript
|
|
4
|
-
- Use `const`/`let` (NOT `var`)
|
|
5
|
-
- Use named function declarations, not arrow functions — except for anonymous callbacks where arrows are fine
|
|
6
|
-
- ESM throughout (server + client)
|
|
7
|
-
- Follow .editorconfig: 2-space indent, LF line endings, UTF-8
|
|
8
|
-
|
|
9
|
-
## Icons
|
|
10
|
-
- Use `lucide-react` for ALL icons
|
|
11
|
-
- Import individually: `import { Settings, Moon } from "lucide-react"`
|
|
12
|
-
- No emojis for icons or in UI
|
|
13
|
-
|
|
14
|
-
## Comments
|
|
15
|
-
- No section separator comments (// ========)
|
|
16
|
-
- No organizational header comments
|
|
17
|
-
- Keep code clean without visual separators
|
|
18
|
-
|
|
19
|
-
## Design System
|
|
20
|
-
- See `.impeccable.md` for comprehensive design guidelines
|
|
21
|
-
- Dark-first with 23 base16 themes via OKLCH CSS variables
|
|
22
|
-
- Tailwind + daisyUI component framework
|
|
23
|
-
- Typography: JetBrains Mono (headings/code), IBM Plex Sans (body)
|
|
24
|
-
- Three surface tiers: Chrome (base-200), Stage (base-100 + dot-grid), Elevated (base-300 + shadow)
|
|
25
|
-
- Never hardcode colors — always use CSS variables/theme tokens
|
|
26
|
-
- WCAG AA contrast, prefers-reduced-motion, keyboard-first
|
|
27
|
-
|
|
28
|
-
## Types
|
|
29
|
-
- `HistoryMessage` uses a discriminated union type (`HistoryMessageType`)
|
|
30
|
-
- Shared types in `shared/src/models.ts`
|
|
31
|
-
- Message protocol in `shared/src/messages.ts`
|
|
32
|
-
- All `var` in existing code is legacy — new code should use `const`/`let`
|
|
33
|
-
|
|
34
|
-
## Pre-existing Errors
|
|
35
|
-
- DO NOT EVER LEAVE PRE-EXISTING ERRORS. FIX THEM.
|