@juspay/shooter 1.6.1 → 1.7.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/build/client/_app/immutable/assets/0.BafSE-sr.css +1 -0
- package/build/client/_app/immutable/assets/0.BafSE-sr.css.br +0 -0
- package/build/client/_app/immutable/assets/0.BafSE-sr.css.gz +0 -0
- package/build/client/_app/immutable/assets/1.B_AnTlN1.css +1 -0
- package/build/client/_app/immutable/assets/1.B_AnTlN1.css.br +0 -0
- package/build/client/_app/immutable/assets/1.B_AnTlN1.css.gz +0 -0
- package/build/client/_app/immutable/assets/{2.Dk9NfqnS.css → 2.DjiwkLqE.css} +1 -1
- package/build/client/_app/immutable/assets/2.DjiwkLqE.css.br +0 -0
- package/build/client/_app/immutable/assets/2.DjiwkLqE.css.gz +0 -0
- package/build/client/_app/immutable/assets/4.D4EDSN4H.css +1 -0
- package/build/client/_app/immutable/assets/4.D4EDSN4H.css.br +0 -0
- package/build/client/_app/immutable/assets/4.D4EDSN4H.css.gz +0 -0
- package/build/client/_app/immutable/assets/6.DzV0p3l-.css +1 -0
- package/build/client/_app/immutable/assets/6.DzV0p3l-.css.br +0 -0
- package/build/client/_app/immutable/assets/6.DzV0p3l-.css.gz +0 -0
- package/build/client/_app/immutable/assets/7.CEbRAOOf.css +1 -0
- package/build/client/_app/immutable/assets/7.CEbRAOOf.css.br +0 -0
- package/build/client/_app/immutable/assets/7.CEbRAOOf.css.gz +0 -0
- package/build/client/_app/immutable/assets/8.BhoBXADL.css +1 -0
- package/build/client/_app/immutable/assets/8.BhoBXADL.css.br +0 -0
- package/build/client/_app/immutable/assets/8.BhoBXADL.css.gz +0 -0
- package/build/client/_app/immutable/assets/9.v5KA95xm.css +1 -0
- package/build/client/_app/immutable/assets/9.v5KA95xm.css.br +0 -0
- package/build/client/_app/immutable/assets/9.v5KA95xm.css.gz +0 -0
- package/build/client/_app/immutable/assets/ChatView.Bnlg-oAF.css +1 -0
- package/build/client/_app/immutable/assets/ChatView.Bnlg-oAF.css.br +0 -0
- package/build/client/_app/immutable/assets/ChatView.Bnlg-oAF.css.gz +0 -0
- package/build/client/_app/immutable/assets/ColorPicker.Hf6zQzuB.css +1 -0
- package/build/client/_app/immutable/assets/ColorPicker.Hf6zQzuB.css.br +0 -0
- package/build/client/_app/immutable/assets/ColorPicker.Hf6zQzuB.css.gz +0 -0
- package/build/client/_app/immutable/chunks/{DlnAjkg1.js → 1R757KKW.js} +1 -1
- package/build/client/_app/immutable/chunks/1R757KKW.js.br +0 -0
- package/build/client/_app/immutable/chunks/{DlnAjkg1.js.gz → 1R757KKW.js.gz} +0 -0
- package/build/client/_app/immutable/chunks/3MMtouT7.js +2 -0
- package/build/client/_app/immutable/chunks/3MMtouT7.js.br +0 -0
- package/build/client/_app/immutable/chunks/3MMtouT7.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{Dc_Gg2H6.js → 82KkiYvP.js} +1 -1
- package/build/client/_app/immutable/chunks/82KkiYvP.js.br +0 -0
- package/build/client/_app/immutable/chunks/82KkiYvP.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CGMJxf7r.js → B-XSrufh.js} +1 -1
- package/build/client/_app/immutable/chunks/B-XSrufh.js.br +0 -0
- package/build/client/_app/immutable/chunks/B-XSrufh.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BCwT4WOg.js +60 -0
- package/build/client/_app/immutable/chunks/BCwT4WOg.js.br +0 -0
- package/build/client/_app/immutable/chunks/BCwT4WOg.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BTu-2gkj.js +21 -0
- package/build/client/_app/immutable/chunks/BTu-2gkj.js.br +0 -0
- package/build/client/_app/immutable/chunks/BTu-2gkj.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bn-6X1BO.js +5 -0
- package/build/client/_app/immutable/chunks/Bn-6X1BO.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bn-6X1BO.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BsNWiLas.js +1 -0
- package/build/client/_app/immutable/chunks/BsNWiLas.js.br +0 -0
- package/build/client/_app/immutable/chunks/BsNWiLas.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C0VhPQz3.js +3 -0
- package/build/client/_app/immutable/chunks/C0VhPQz3.js.br +0 -0
- package/build/client/_app/immutable/chunks/C0VhPQz3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CG453M9q.js +5 -0
- package/build/client/_app/immutable/chunks/CG453M9q.js.br +0 -0
- package/build/client/_app/immutable/chunks/CG453M9q.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CMQw-Fc-.js +1 -0
- package/build/client/_app/immutable/chunks/CMQw-Fc-.js.br +0 -0
- package/build/client/_app/immutable/chunks/CMQw-Fc-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CRXYOhph.js +5 -0
- package/build/client/_app/immutable/chunks/CRXYOhph.js.br +0 -0
- package/build/client/_app/immutable/chunks/CRXYOhph.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CSjf4fBs.js +2 -0
- package/build/client/_app/immutable/chunks/CSjf4fBs.js.br +0 -0
- package/build/client/_app/immutable/chunks/CSjf4fBs.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CJFjKwJ7.js → Ce0VRwE1.js} +1 -1
- package/build/client/_app/immutable/chunks/Ce0VRwE1.js.br +0 -0
- package/build/client/_app/immutable/chunks/Ce0VRwE1.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DFPEaIHz.js +1 -0
- package/build/client/_app/immutable/chunks/DFPEaIHz.js.br +0 -0
- package/build/client/_app/immutable/chunks/DFPEaIHz.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DQM017d5.js +1 -0
- package/build/client/_app/immutable/chunks/DQM017d5.js.br +0 -0
- package/build/client/_app/immutable/chunks/DQM017d5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dqgg-a0I.js +1 -0
- package/build/client/_app/immutable/chunks/Dqgg-a0I.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dqgg-a0I.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DzuS5Nbr.js +6 -0
- package/build/client/_app/immutable/chunks/DzuS5Nbr.js.br +0 -0
- package/build/client/_app/immutable/chunks/DzuS5Nbr.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.BBj54tOn.js +2 -0
- package/build/client/_app/immutable/entry/app.BBj54tOn.js.br +0 -0
- package/build/client/_app/immutable/entry/app.BBj54tOn.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.hE8cZTT9.js +1 -0
- package/build/client/_app/immutable/entry/start.hE8cZTT9.js.br +2 -0
- package/build/client/_app/immutable/entry/start.hE8cZTT9.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.tGEagUxT.js +7 -0
- package/build/client/_app/immutable/nodes/0.tGEagUxT.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.tGEagUxT.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.CTMQXGCN.js +1 -0
- package/build/client/_app/immutable/nodes/1.CTMQXGCN.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.CTMQXGCN.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2._DiTJ6NZ.js +13 -0
- package/build/client/_app/immutable/nodes/2._DiTJ6NZ.js.br +0 -0
- package/build/client/_app/immutable/nodes/2._DiTJ6NZ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.CsY6J5HS.js → 3.BpFIHCgE.js} +3 -3
- package/build/client/_app/immutable/nodes/3.BpFIHCgE.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.BpFIHCgE.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.BcK1571T.js +16 -0
- package/build/client/_app/immutable/nodes/4.BcK1571T.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.BcK1571T.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.DRvLQ5NR.js +1 -0
- package/build/client/_app/immutable/nodes/5.DRvLQ5NR.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.DRvLQ5NR.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.BnaLvG49.js +1 -0
- package/build/client/_app/immutable/nodes/6.BnaLvG49.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BnaLvG49.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.C9odxWmO.js +4 -0
- package/build/client/_app/immutable/nodes/7.C9odxWmO.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.C9odxWmO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.CT86dtkE.js +2 -0
- package/build/client/_app/immutable/nodes/8.CT86dtkE.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.CT86dtkE.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.JmYAqwbO.js +2 -0
- package/build/client/_app/immutable/nodes/9.JmYAqwbO.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.JmYAqwbO.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/server/chunks/{0-DC2VLooL.js → 0-9YbbJhFw.js} +4 -4
- package/build/server/chunks/0-9YbbJhFw.js.map +1 -0
- package/build/server/chunks/1-DULDAXgW.js +9 -0
- package/build/server/chunks/1-DULDAXgW.js.map +1 -0
- package/build/server/chunks/2-vevFT-GW.js +21 -0
- package/build/server/chunks/2-vevFT-GW.js.map +1 -0
- package/build/server/chunks/3-Bp3qDEwZ.js +21 -0
- package/build/server/chunks/3-Bp3qDEwZ.js.map +1 -0
- package/build/server/chunks/4-DXZnoGK3.js +23 -0
- package/build/server/chunks/4-DXZnoGK3.js.map +1 -0
- package/build/server/chunks/{5-BBIP1PzX.js → 5-Bj49x3to.js} +4 -4
- package/build/server/chunks/5-Bj49x3to.js.map +1 -0
- package/build/server/chunks/6-BsyQ_s8I.js +9 -0
- package/build/server/chunks/6-BsyQ_s8I.js.map +1 -0
- package/build/server/chunks/7-B2i23jNm.js +9 -0
- package/build/server/chunks/7-B2i23jNm.js.map +1 -0
- package/build/server/chunks/8-BHREyW3X.js +9 -0
- package/build/server/chunks/8-BHREyW3X.js.map +1 -0
- package/build/server/chunks/9-BqFD2wVL.js +9 -0
- package/build/server/chunks/9-BqFD2wVL.js.map +1 -0
- package/build/server/chunks/{Button-WKgiLWZI.js → Button-DPcpECFE.js} +18 -11
- package/build/server/chunks/Button-DPcpECFE.js.map +1 -0
- package/build/server/chunks/Icon-C2-613_Z.js +29 -0
- package/build/server/chunks/Icon-C2-613_Z.js.map +1 -0
- package/build/server/chunks/{close-BGlLztTb.js → Input-M7rFN1IJ.js} +25 -14
- package/build/server/chunks/Input-M7rFN1IJ.js.map +1 -0
- package/build/server/chunks/Pill-CbH1G79Z.js +57 -0
- package/build/server/chunks/Pill-CbH1G79Z.js.map +1 -0
- package/build/server/chunks/Shimmer-BrakrBeG.js +10 -0
- package/build/server/chunks/Shimmer-BrakrBeG.js.map +1 -0
- package/build/server/chunks/{_error.svelte-DkIwmECt.js → _error.svelte-BfckZRui.js} +24 -6
- package/build/server/chunks/_error.svelte-BfckZRui.js.map +1 -0
- package/build/server/chunks/_layout.svelte-B6wbenkT.js +73 -0
- package/build/server/chunks/_layout.svelte-B6wbenkT.js.map +1 -0
- package/build/server/chunks/{_page.svelte-fcX09N4d.js → _page.svelte-BRz-x9-s.js} +9 -9
- package/build/server/chunks/_page.svelte-BRz-x9-s.js.map +1 -0
- package/build/server/chunks/{_page.svelte-JIkgFUFf.js → _page.svelte-CKydRPy6.js} +5 -5
- package/build/server/chunks/_page.svelte-CKydRPy6.js.map +1 -0
- package/build/server/chunks/{_page.svelte-DDSzYLUs.js → _page.svelte-COFpm-S2.js} +49 -27
- package/build/server/chunks/_page.svelte-COFpm-S2.js.map +1 -0
- package/build/server/chunks/{_page.svelte-Y9-O5a5w.js → _page.svelte-CwCypx0G.js} +36 -37
- package/build/server/chunks/_page.svelte-CwCypx0G.js.map +1 -0
- package/build/server/chunks/{_page.svelte-CpL3R-VI.js → _page.svelte-D1Iaycsm.js} +11 -11
- package/build/server/chunks/_page.svelte-D1Iaycsm.js.map +1 -0
- package/build/server/chunks/_page.svelte-DKdaYz0t.js +70 -0
- package/build/server/chunks/_page.svelte-DKdaYz0t.js.map +1 -0
- package/build/server/chunks/{_page.svelte-Cmuco1mC.js → _page.svelte-DfZBq0p5.js} +58 -52
- package/build/server/chunks/_page.svelte-DfZBq0p5.js.map +1 -0
- package/build/server/chunks/_page.svelte-io210vyT.js +117 -0
- package/build/server/chunks/_page.svelte-io210vyT.js.map +1 -0
- package/build/server/chunks/{_server.ts-Ds_SUGC3.js → _server.ts-BQarRaho.js} +86 -73
- package/build/server/chunks/_server.ts-BQarRaho.js.map +1 -0
- package/build/server/chunks/cache-tQqq4VCX.js +35 -0
- package/build/server/chunks/cache-tQqq4VCX.js.map +1 -0
- package/build/server/chunks/{client-DRtPDkMh.js → client-Do_WijF3.js} +4 -4
- package/build/server/chunks/{client-DRtPDkMh.js.map → client-Do_WijF3.js.map} +1 -1
- package/build/server/chunks/client2-DQ2fYrJe.js +7 -0
- package/build/server/chunks/{client2-bqqmu0b7.js.map → client2-DQ2fYrJe.js.map} +1 -1
- package/build/server/chunks/close-DR469d4F.js +4 -0
- package/build/server/chunks/close-DR469d4F.js.map +1 -0
- package/build/server/chunks/{index-DP9bWJrR.js → index-BHoOpAe1.js} +2 -2
- package/build/server/chunks/{index-DP9bWJrR.js.map → index-BHoOpAe1.js.map} +1 -1
- package/build/server/chunks/{index-server-BUmV4MIG.js → index-server-BVf8_1QW.js} +2 -2
- package/build/server/chunks/{index-server-BUmV4MIG.js.map → index-server-BVf8_1QW.js.map} +1 -1
- package/build/server/chunks/{index2-D5Y19GKR.js → index2-CKh4I94n.js} +2 -2
- package/build/server/chunks/{index2-D5Y19GKR.js.map → index2-CKh4I94n.js.map} +1 -1
- package/build/server/chunks/{root-CATOR_0t.js → root-CW7Ox2wn.js} +2 -2
- package/build/server/chunks/{root-CATOR_0t.js.map → root-CW7Ox2wn.js.map} +1 -1
- package/build/server/chunks/settings-Dv3Esboo.js +4 -0
- package/build/server/chunks/settings-Dv3Esboo.js.map +1 -0
- package/build/server/chunks/{state.svelte-CftllyvC.js → state.svelte-Cg5VK5nH.js} +3 -3
- package/build/server/chunks/{state.svelte-CftllyvC.js.map → state.svelte-Cg5VK5nH.js.map} +1 -1
- package/build/server/chunks/{stores-BjL57aOK.js → stores-D6TajUdj.js} +4 -4
- package/build/server/chunks/{stores-BjL57aOK.js.map → stores-D6TajUdj.js.map} +1 -1
- package/build/server/index.js +4 -4
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +12 -12
- package/build/server/manifest.js.map +1 -1
- package/package.json +2 -2
- package/src/app.css +128 -18
- package/src/lib/assets/icons/dashboard.svg +6 -0
- package/src/lib/modules/client/common/index.ts +0 -5
- package/src/lib/modules/client/terminal/ChatView.svelte +20 -37
- package/src/lib/modules/client/terminal/ConnectionStatus.svelte +7 -17
- package/src/lib/modules/client/terminal/LaunchSheet.svelte +83 -153
- package/src/lib/modules/client/terminal/QuickKeys.svelte +4 -4
- package/src/lib/modules/server/sessions/jsonl-reader.ts +103 -92
- package/src/lib/theme.css +125 -5
- package/src/lib/types/terminal-client.ts +1 -1
- package/src/routes/+error.svelte +9 -25
- package/src/routes/+layout.svelte +52 -78
- package/src/routes/+page.svelte +55 -40
- package/src/routes/config/+page.svelte +13 -28
- package/src/routes/project/+page.svelte +12 -9
- package/src/routes/session/[id]/+page.svelte +12 -38
- package/src/routes/terminals/+page.svelte +22 -118
- package/src/routes/terminals/[id]/+page.svelte +33 -42
- package/build/client/_app/immutable/assets/0.BhZOCxO4.css +0 -1
- package/build/client/_app/immutable/assets/0.BhZOCxO4.css.br +0 -0
- package/build/client/_app/immutable/assets/0.BhZOCxO4.css.gz +0 -0
- package/build/client/_app/immutable/assets/1.BYutk3aU.css +0 -1
- package/build/client/_app/immutable/assets/1.BYutk3aU.css.br +0 -0
- package/build/client/_app/immutable/assets/1.BYutk3aU.css.gz +0 -0
- package/build/client/_app/immutable/assets/2.Dk9NfqnS.css.br +0 -0
- package/build/client/_app/immutable/assets/2.Dk9NfqnS.css.gz +0 -0
- package/build/client/_app/immutable/assets/4.D5l1JxgO.css +0 -1
- package/build/client/_app/immutable/assets/4.D5l1JxgO.css.br +0 -0
- package/build/client/_app/immutable/assets/4.D5l1JxgO.css.gz +0 -0
- package/build/client/_app/immutable/assets/6.BFUut--w.css +0 -1
- package/build/client/_app/immutable/assets/6.BFUut--w.css.br +0 -0
- package/build/client/_app/immutable/assets/6.BFUut--w.css.gz +0 -0
- package/build/client/_app/immutable/assets/7.BTOx7yt7.css +0 -1
- package/build/client/_app/immutable/assets/7.BTOx7yt7.css.br +0 -0
- package/build/client/_app/immutable/assets/7.BTOx7yt7.css.gz +0 -0
- package/build/client/_app/immutable/assets/8.eZGZN-BF.css +0 -1
- package/build/client/_app/immutable/assets/8.eZGZN-BF.css.br +0 -0
- package/build/client/_app/immutable/assets/8.eZGZN-BF.css.gz +0 -0
- package/build/client/_app/immutable/assets/9.DwS5ZHBh.css +0 -1
- package/build/client/_app/immutable/assets/9.DwS5ZHBh.css.br +0 -0
- package/build/client/_app/immutable/assets/9.DwS5ZHBh.css.gz +0 -0
- package/build/client/_app/immutable/assets/ChatView.CwWbzIL-.css +0 -1
- package/build/client/_app/immutable/assets/ChatView.CwWbzIL-.css.br +0 -0
- package/build/client/_app/immutable/assets/ChatView.CwWbzIL-.css.gz +0 -0
- package/build/client/_app/immutable/assets/Phone.FQEfwCX2.css +0 -1
- package/build/client/_app/immutable/assets/Phone.FQEfwCX2.css.br +0 -0
- package/build/client/_app/immutable/assets/Phone.FQEfwCX2.css.gz +0 -0
- package/build/client/_app/immutable/assets/markdown.Dc-OSJWY.css +0 -1
- package/build/client/_app/immutable/assets/markdown.Dc-OSJWY.css.br +0 -0
- package/build/client/_app/immutable/assets/markdown.Dc-OSJWY.css.gz +0 -0
- package/build/client/_app/immutable/chunks/1mEchsPO.js +0 -1
- package/build/client/_app/immutable/chunks/1mEchsPO.js.br +0 -0
- package/build/client/_app/immutable/chunks/1mEchsPO.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B7X-vhXI.js +0 -1
- package/build/client/_app/immutable/chunks/B7X-vhXI.js.br +0 -0
- package/build/client/_app/immutable/chunks/B7X-vhXI.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BRkqKgVG.js +0 -1
- package/build/client/_app/immutable/chunks/BRkqKgVG.js.br +0 -0
- package/build/client/_app/immutable/chunks/BRkqKgVG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BfJ-f-Tu.js +0 -1
- package/build/client/_app/immutable/chunks/BfJ-f-Tu.js.br +0 -2
- package/build/client/_app/immutable/chunks/BfJ-f-Tu.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CGMJxf7r.js.br +0 -0
- package/build/client/_app/immutable/chunks/CGMJxf7r.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CJFjKwJ7.js.br +0 -0
- package/build/client/_app/immutable/chunks/CJFjKwJ7.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CNH2HlKj.js +0 -20
- package/build/client/_app/immutable/chunks/CNH2HlKj.js.br +0 -0
- package/build/client/_app/immutable/chunks/CNH2HlKj.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CVtJ6yRM.js +0 -1
- package/build/client/_app/immutable/chunks/CVtJ6yRM.js.br +0 -0
- package/build/client/_app/immutable/chunks/CVtJ6yRM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CaiJSUi3.js +0 -1
- package/build/client/_app/immutable/chunks/CaiJSUi3.js.br +0 -0
- package/build/client/_app/immutable/chunks/CaiJSUi3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CmczWE_d.js +0 -41
- package/build/client/_app/immutable/chunks/CmczWE_d.js.br +0 -0
- package/build/client/_app/immutable/chunks/CmczWE_d.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CsgHjHGZ.js +0 -1
- package/build/client/_app/immutable/chunks/CsgHjHGZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/CsgHjHGZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CtrCjGZT.js +0 -1
- package/build/client/_app/immutable/chunks/CtrCjGZT.js.br +0 -0
- package/build/client/_app/immutable/chunks/CtrCjGZT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DDiOVAd8.js +0 -61
- package/build/client/_app/immutable/chunks/DDiOVAd8.js.br +0 -0
- package/build/client/_app/immutable/chunks/DDiOVAd8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DVl0sebP.js +0 -2
- package/build/client/_app/immutable/chunks/DVl0sebP.js.br +0 -0
- package/build/client/_app/immutable/chunks/DVl0sebP.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dc_Gg2H6.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dc_Gg2H6.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DlnAjkg1.js.br +0 -0
- package/build/client/_app/immutable/chunks/YKoRJzXZ.js +0 -3
- package/build/client/_app/immutable/chunks/YKoRJzXZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/YKoRJzXZ.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CFPgQOa8.js +0 -2
- package/build/client/_app/immutable/entry/app.CFPgQOa8.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CFPgQOa8.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BnJOVqhI.js +0 -1
- package/build/client/_app/immutable/entry/start.BnJOVqhI.js.br +0 -2
- package/build/client/_app/immutable/entry/start.BnJOVqhI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.DR-BBF5r.js +0 -1
- package/build/client/_app/immutable/nodes/0.DR-BBF5r.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.DR-BBF5r.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.CNm6rAwf.js +0 -1
- package/build/client/_app/immutable/nodes/1.CNm6rAwf.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.CNm6rAwf.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.B08usYzr.js +0 -13
- package/build/client/_app/immutable/nodes/2.B08usYzr.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.B08usYzr.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.CsY6J5HS.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CsY6J5HS.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.B_pbOZoD.js +0 -4
- package/build/client/_app/immutable/nodes/4.B_pbOZoD.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.B_pbOZoD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.CdLPNo5-.js +0 -1
- package/build/client/_app/immutable/nodes/5.CdLPNo5-.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.CdLPNo5-.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.CbQQ3FtZ.js +0 -1
- package/build/client/_app/immutable/nodes/6.CbQQ3FtZ.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.CbQQ3FtZ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.CCKgiNNk.js +0 -4
- package/build/client/_app/immutable/nodes/7.CCKgiNNk.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.CCKgiNNk.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.C7AaheUD.js +0 -2
- package/build/client/_app/immutable/nodes/8.C7AaheUD.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.C7AaheUD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.DfL9kMC4.js +0 -2
- package/build/client/_app/immutable/nodes/9.DfL9kMC4.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.DfL9kMC4.js.gz +0 -0
- package/build/server/chunks/0-DC2VLooL.js.map +0 -1
- package/build/server/chunks/1-XJaf8Jvf.js +0 -9
- package/build/server/chunks/1-XJaf8Jvf.js.map +0 -1
- package/build/server/chunks/2-D4Cx-1QL.js +0 -21
- package/build/server/chunks/2-D4Cx-1QL.js.map +0 -1
- package/build/server/chunks/3-CVhIEP-u.js +0 -21
- package/build/server/chunks/3-CVhIEP-u.js.map +0 -1
- package/build/server/chunks/4-0UE_6Ep-.js +0 -23
- package/build/server/chunks/4-0UE_6Ep-.js.map +0 -1
- package/build/server/chunks/5-BBIP1PzX.js.map +0 -1
- package/build/server/chunks/6-QFSbzRMP.js +0 -9
- package/build/server/chunks/6-QFSbzRMP.js.map +0 -1
- package/build/server/chunks/7-CZ_YGjMV.js +0 -9
- package/build/server/chunks/7-CZ_YGjMV.js.map +0 -1
- package/build/server/chunks/8-Xe2Rugb4.js +0 -9
- package/build/server/chunks/8-Xe2Rugb4.js.map +0 -1
- package/build/server/chunks/9-IwHpC4SO.js +0 -9
- package/build/server/chunks/9-IwHpC4SO.js.map +0 -1
- package/build/server/chunks/Button-WKgiLWZI.js.map +0 -1
- package/build/server/chunks/EmptyState-BUBqASsp.js +0 -26
- package/build/server/chunks/EmptyState-BUBqASsp.js.map +0 -1
- package/build/server/chunks/Icon-BNBAg85a.js +0 -36
- package/build/server/chunks/Icon-BNBAg85a.js.map +0 -1
- package/build/server/chunks/Shimmer-C4uBVwxz.js +0 -10
- package/build/server/chunks/Shimmer-C4uBVwxz.js.map +0 -1
- package/build/server/chunks/_error.svelte-DkIwmECt.js.map +0 -1
- package/build/server/chunks/_layout.svelte-DllETxmJ.js +0 -62
- package/build/server/chunks/_layout.svelte-DllETxmJ.js.map +0 -1
- package/build/server/chunks/_page.svelte-BZSdLKE_.js +0 -118
- package/build/server/chunks/_page.svelte-BZSdLKE_.js.map +0 -1
- package/build/server/chunks/_page.svelte-Cmuco1mC.js.map +0 -1
- package/build/server/chunks/_page.svelte-Co5sF7W-.js +0 -102
- package/build/server/chunks/_page.svelte-Co5sF7W-.js.map +0 -1
- package/build/server/chunks/_page.svelte-CpL3R-VI.js.map +0 -1
- package/build/server/chunks/_page.svelte-DDSzYLUs.js.map +0 -1
- package/build/server/chunks/_page.svelte-JIkgFUFf.js.map +0 -1
- package/build/server/chunks/_page.svelte-Y9-O5a5w.js.map +0 -1
- package/build/server/chunks/_page.svelte-fcX09N4d.js.map +0 -1
- package/build/server/chunks/_server.ts-Ds_SUGC3.js.map +0 -1
- package/build/server/chunks/client2-bqqmu0b7.js +0 -7
- package/build/server/chunks/close-BGlLztTb.js.map +0 -1
- package/build/server/chunks/html-FW6Ia4bL.js +0 -8
- package/build/server/chunks/html-FW6Ia4bL.js.map +0 -1
- package/src/lib/modules/client/common/Card.svelte +0 -19
- package/src/lib/modules/client/common/EmptyState.svelte +0 -18
- package/src/lib/modules/client/common/Icon.svelte +0 -57
- package/src/lib/modules/client/common/StatusBadge.svelte +0 -36
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import type { CreateTerminalResponse, LaunchSheetProps, Preset } from '$lib/types';
|
|
3
3
|
|
|
4
|
-
import { Banner, Button, Choicebox, Input, Select } from '@juspay/svelte-ui-components';
|
|
4
|
+
import { Banner, Button, Choicebox, Input, Select, Sheet } from '@juspay/svelte-ui-components';
|
|
5
5
|
import { onMount } from 'svelte';
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
// eslint-disable-next-line prefer-const -- open is mutated via bind:open from parent
|
|
8
|
+
let { apiKey, onClose, onLaunch, open = $bindable(false) }: LaunchSheetProps = $props();
|
|
8
9
|
|
|
9
10
|
const presets: Preset[] = [
|
|
10
11
|
{ args: [], command: 'claude', label: 'Claude Code' },
|
|
@@ -107,174 +108,103 @@
|
|
|
107
108
|
}
|
|
108
109
|
}
|
|
109
110
|
|
|
110
|
-
function handleBackdropClick(event: MouseEvent): void {
|
|
111
|
-
if (event.target === event.currentTarget) {
|
|
112
|
-
onClose();
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
111
|
|
|
116
|
-
function handleKeydown(event: KeyboardEvent): void {
|
|
117
|
-
if (!open) {
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
if (event.key === 'Escape') {
|
|
121
|
-
onClose();
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
112
|
</script>
|
|
125
113
|
|
|
126
|
-
<
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
<
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
{preset.label}
|
|
150
|
-
</Choicebox>
|
|
151
|
-
{/each}
|
|
152
|
-
</div>
|
|
114
|
+
<Sheet
|
|
115
|
+
bind:open
|
|
116
|
+
side="bottom"
|
|
117
|
+
title="New Terminal"
|
|
118
|
+
onclose={onClose}
|
|
119
|
+
classes="launch-sheet"
|
|
120
|
+
>
|
|
121
|
+
{#snippet content()}
|
|
122
|
+
<div class="section">
|
|
123
|
+
<span class="section-label">Quick Launch</span>
|
|
124
|
+
<div class="preset-grid">
|
|
125
|
+
{#each presets as preset, i (preset.label)}
|
|
126
|
+
<Choicebox
|
|
127
|
+
mode="radio"
|
|
128
|
+
selected={selectedPreset === i}
|
|
129
|
+
onclick={() => {
|
|
130
|
+
selectPreset(i);
|
|
131
|
+
}}
|
|
132
|
+
classes="preset-choice"
|
|
133
|
+
>
|
|
134
|
+
{preset.label}
|
|
135
|
+
</Choicebox>
|
|
136
|
+
{/each}
|
|
153
137
|
</div>
|
|
138
|
+
</div>
|
|
154
139
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
140
|
+
<div class="section">
|
|
141
|
+
<span class="section-label">Working Directory</span>
|
|
142
|
+
<Select
|
|
143
|
+
items={projectPaths.length > 0
|
|
144
|
+
? projectPaths.map((p) => ({ id: p, label: p }))
|
|
145
|
+
: [{ id: '', label: 'No recent projects' }]}
|
|
146
|
+
value={selectedCwd ? [selectedCwd] : projectPaths.length > 0 ? [projectPaths[0]] : ['']}
|
|
147
|
+
placeholder="Select a project"
|
|
148
|
+
onchange={(value) => {
|
|
149
|
+
selectedCwd = value[0] || '';
|
|
150
|
+
}}
|
|
151
|
+
classes="launch-select"
|
|
152
|
+
/>
|
|
153
|
+
<div class="custom-cwd-group">
|
|
154
|
+
<Input
|
|
155
|
+
label="Or enter a custom path"
|
|
156
|
+
bind:value={customCwd}
|
|
157
|
+
dataType="text"
|
|
158
|
+
placeholder="/path/to/project"
|
|
159
|
+
classes="input-mono launch-input"
|
|
167
160
|
/>
|
|
168
|
-
<div class="custom-cwd-group">
|
|
169
|
-
<Input
|
|
170
|
-
label="Or enter a custom path"
|
|
171
|
-
bind:value={customCwd}
|
|
172
|
-
dataType="text"
|
|
173
|
-
placeholder="/path/to/project"
|
|
174
|
-
classes="input-mono launch-input"
|
|
175
|
-
/>
|
|
176
|
-
</div>
|
|
177
161
|
</div>
|
|
178
|
-
|
|
179
|
-
<Button
|
|
180
|
-
classes="btn-launch"
|
|
181
|
-
disabled={launching}
|
|
182
|
-
onclick={handleLaunch}
|
|
183
|
-
showLoader={launching}
|
|
184
|
-
text={launching ? 'Launching...' : 'Launch Terminal'}
|
|
185
|
-
/>
|
|
186
|
-
|
|
187
|
-
{#if launchError}
|
|
188
|
-
<Banner text={launchError} classes="banner-error launch-error-banner" />
|
|
189
|
-
{/if}
|
|
190
162
|
</div>
|
|
191
|
-
</div>
|
|
192
|
-
{/if}
|
|
193
163
|
|
|
194
|
-
<
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
align-items: flex-end;
|
|
202
|
-
justify-content: center;
|
|
203
|
-
}
|
|
164
|
+
<Button
|
|
165
|
+
classes="btn-launch"
|
|
166
|
+
disabled={launching}
|
|
167
|
+
onclick={handleLaunch}
|
|
168
|
+
showLoader={launching}
|
|
169
|
+
text={launching ? 'Launching...' : 'Launch Terminal'}
|
|
170
|
+
/>
|
|
204
171
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
max-height: 90vh;
|
|
211
|
-
overflow-y: auto;
|
|
212
|
-
padding: var(--space-4) var(--space-5)
|
|
213
|
-
calc(var(--space-8, 32px) + env(safe-area-inset-bottom, 0px));
|
|
214
|
-
animation: slideUp 0.25s ease;
|
|
215
|
-
}
|
|
172
|
+
{#if launchError}
|
|
173
|
+
<Banner text={launchError} classes="banner-error launch-error-banner" />
|
|
174
|
+
{/if}
|
|
175
|
+
{/snippet}
|
|
176
|
+
</Sheet>
|
|
216
177
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
@keyframes fadeScale {
|
|
239
|
-
from {
|
|
240
|
-
opacity: 0;
|
|
241
|
-
transform: scale(0.96);
|
|
242
|
-
}
|
|
243
|
-
to {
|
|
244
|
-
opacity: 1;
|
|
245
|
-
transform: scale(1);
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
.handle-bar {
|
|
251
|
-
display: flex;
|
|
252
|
-
justify-content: center;
|
|
253
|
-
padding-bottom: var(--space-3);
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
.handle {
|
|
257
|
-
width: 36px;
|
|
258
|
-
height: 4px;
|
|
259
|
-
border-radius: var(--radius-full);
|
|
260
|
-
background: var(--ds-gray-500);
|
|
178
|
+
<style>
|
|
179
|
+
:global(.launch-sheet) {
|
|
180
|
+
--sheet-overlay-z-index: 200;
|
|
181
|
+
--sheet-overlay-background: rgba(0, 0, 0, 0.6);
|
|
182
|
+
--sheet-background: var(--ds-gray-100);
|
|
183
|
+
--sheet-z-index: 201;
|
|
184
|
+
--sheet-max-height: 90vh;
|
|
185
|
+
--sheet-height: auto;
|
|
186
|
+
--sheet-border: none;
|
|
187
|
+
--sheet-box-shadow: 0 -4px 24px rgba(0, 0, 0, 0.3);
|
|
188
|
+
--sheet-header-padding: var(--space-4) var(--space-5);
|
|
189
|
+
--sheet-header-background: var(--ds-gray-100);
|
|
190
|
+
--sheet-header-border-bottom: none;
|
|
191
|
+
--sheet-title-font-size: var(--text-xl);
|
|
192
|
+
--sheet-title-font-weight: 600;
|
|
193
|
+
--sheet-title-color: var(--text-primary);
|
|
194
|
+
--sheet-close-button-color: var(--text-secondary);
|
|
195
|
+
--sheet-close-button-hover-background: var(--component-bg-hover);
|
|
196
|
+
--sheet-content-padding: 0 var(--space-5) calc(var(--space-8, 32px) + env(safe-area-inset-bottom, 0px));
|
|
261
197
|
}
|
|
262
198
|
|
|
263
|
-
/*
|
|
199
|
+
/* Desktop: override bottom sheet to appear as centered modal */
|
|
264
200
|
@media (min-width: 768px) {
|
|
265
|
-
.
|
|
266
|
-
|
|
201
|
+
:global(.launch-sheet) {
|
|
202
|
+
--sheet-max-height: 80vh;
|
|
203
|
+
--sheet-width: 480px;
|
|
204
|
+
--sheet-max-width: 90vw;
|
|
267
205
|
}
|
|
268
206
|
}
|
|
269
207
|
|
|
270
|
-
.sheet-title {
|
|
271
|
-
font-size: var(--text-xl);
|
|
272
|
-
font-weight: 600;
|
|
273
|
-
color: var(--text-primary);
|
|
274
|
-
margin-bottom: var(--space-5);
|
|
275
|
-
letter-spacing: var(--tracking-tight);
|
|
276
|
-
}
|
|
277
|
-
|
|
278
208
|
.section {
|
|
279
209
|
margin-bottom: var(--space-4);
|
|
280
210
|
}
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
:global(.btn-quick-key) {
|
|
47
|
-
--button-color:
|
|
48
|
-
--button-text-color:
|
|
47
|
+
--button-color: var(--ds-gray-200);
|
|
48
|
+
--button-text-color: var(--ds-gray-700);
|
|
49
49
|
--button-border: 1px solid var(--ds-gray-400);
|
|
50
|
-
--button-hover-color:
|
|
51
|
-
--button-hover-text-color:
|
|
50
|
+
--button-hover-color: var(--ds-gray-300);
|
|
51
|
+
--button-hover-text-color: var(--text-primary);
|
|
52
52
|
--button-hover-border: 1px solid var(--ds-gray-400);
|
|
53
53
|
--button-height: 44px;
|
|
54
54
|
--button-padding: 0 var(--space-3);
|
|
@@ -103,16 +103,29 @@ export function getSessionConversation(
|
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
+
// Deduplicate messages by ID — JSONL files can contain duplicate entries
|
|
107
|
+
// (e.g., from compaction or streaming). Keep the last occurrence since it
|
|
108
|
+
// has the most complete content.
|
|
109
|
+
const seenIds = new Set<string>();
|
|
110
|
+
const deduped: ConversationMessage[] = [];
|
|
111
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
112
|
+
if (!seenIds.has(messages[i].id)) {
|
|
113
|
+
seenIds.add(messages[i].id);
|
|
114
|
+
deduped.push(messages[i]);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
deduped.reverse();
|
|
118
|
+
|
|
106
119
|
// If no explicit offset, return the LAST `limit` messages (most recent conversation)
|
|
107
|
-
if (offset === 0 &&
|
|
108
|
-
let startIdx =
|
|
120
|
+
if (offset === 0 && deduped.length > limit) {
|
|
121
|
+
let startIdx = deduped.length - limit;
|
|
109
122
|
// Adjust to start at a 'user' message boundary so we don't clip mid-turn
|
|
110
|
-
while (startIdx > 0 && startIdx <
|
|
123
|
+
while (startIdx > 0 && startIdx < deduped.length && deduped[startIdx].role !== 'user') {
|
|
111
124
|
startIdx--;
|
|
112
125
|
}
|
|
113
|
-
return
|
|
126
|
+
return deduped.slice(startIdx);
|
|
114
127
|
}
|
|
115
|
-
return
|
|
128
|
+
return deduped.slice(offset, offset + limit);
|
|
116
129
|
} catch (error) {
|
|
117
130
|
console.error('[sessions] Failed to parse session JSONL:', error);
|
|
118
131
|
return [];
|
|
@@ -277,37 +290,39 @@ function getProjectDir(): string {
|
|
|
277
290
|
|
|
278
291
|
function listSessionsForProject(projectDir: string): SessionInfo[] {
|
|
279
292
|
const indexPath = path.join(projectDir, 'sessions-index.json');
|
|
293
|
+
const hasIndex = fs.existsSync(indexPath);
|
|
280
294
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
}
|
|
295
|
+
const indexedIds = new Set<string>();
|
|
296
|
+
const sessions: SessionInfo[] = [];
|
|
284
297
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
298
|
+
// Phase 1: Read from sessions-index.json if it exists
|
|
299
|
+
if (hasIndex) {
|
|
300
|
+
try {
|
|
301
|
+
const raw = fs.readFileSync(indexPath, 'utf-8');
|
|
302
|
+
const index = JSON.parse(raw) as {
|
|
303
|
+
entries: {
|
|
304
|
+
created?: string;
|
|
305
|
+
firstPrompt?: string;
|
|
306
|
+
gitBranch?: string;
|
|
307
|
+
isSidechain?: boolean;
|
|
308
|
+
messageCount?: number;
|
|
309
|
+
modified?: string;
|
|
310
|
+
projectPath?: string;
|
|
311
|
+
sessionId: string;
|
|
312
|
+
summary?: string;
|
|
313
|
+
}[];
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
for (const entry of index.entries) {
|
|
317
|
+
if (entry.isSidechain) {
|
|
318
|
+
continue;
|
|
319
|
+
}
|
|
320
|
+
const jsonlFile = path.join(projectDir, `${entry.sessionId}.jsonl`);
|
|
321
|
+
if (!fs.existsSync(jsonlFile)) {
|
|
322
|
+
continue;
|
|
323
|
+
}
|
|
309
324
|
indexedIds.add(entry.sessionId);
|
|
310
|
-
|
|
325
|
+
sessions.push({
|
|
311
326
|
created: entry.created || '',
|
|
312
327
|
gitBranch: entry.gitBranch || '',
|
|
313
328
|
id: entry.sessionId,
|
|
@@ -317,72 +332,68 @@ function listSessionsForProject(projectDir: string): SessionInfo[] {
|
|
|
317
332
|
source: 'claude-code' as const,
|
|
318
333
|
summary: entry.summary || '',
|
|
319
334
|
title: cleanTitle(entry.firstPrompt || entry.summary || 'Untitled Session'),
|
|
320
|
-
};
|
|
321
|
-
}
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
} catch (error) {
|
|
338
|
+
console.error('[sessions] Failed to read sessions index:', error);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
322
341
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
const lineEnd = nl === -1 ? content.length : nl;
|
|
348
|
-
const line = content.substring(countPos, lineEnd);
|
|
349
|
-
if (line.includes('"type":"user"') || line.includes('"type":"assistant"')) {
|
|
350
|
-
messageCount++;
|
|
351
|
-
}
|
|
352
|
-
if (nl === -1) {
|
|
353
|
-
break;
|
|
354
|
-
}
|
|
355
|
-
countPos = nl + 1;
|
|
342
|
+
// Phase 2: Scan for JSONL files not in the index (or all files when no index exists)
|
|
343
|
+
try {
|
|
344
|
+
const files = fs.readdirSync(projectDir);
|
|
345
|
+
for (const file of files) {
|
|
346
|
+
if (!file.endsWith('.jsonl')) {
|
|
347
|
+
continue;
|
|
348
|
+
}
|
|
349
|
+
const sessionId = file.replace('.jsonl', '');
|
|
350
|
+
if (indexedIds.has(sessionId)) {
|
|
351
|
+
continue;
|
|
352
|
+
}
|
|
353
|
+
const filePath = path.join(projectDir, file);
|
|
354
|
+
const stat = fs.statSync(filePath);
|
|
355
|
+
let firstPrompt = 'Active Session';
|
|
356
|
+
let messageCount = 0;
|
|
357
|
+
try {
|
|
358
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
359
|
+
let countPos = 0;
|
|
360
|
+
while (countPos < content.length) {
|
|
361
|
+
const nl = content.indexOf('\n', countPos);
|
|
362
|
+
const lineEnd = nl === -1 ? content.length : nl;
|
|
363
|
+
const line = content.substring(countPos, lineEnd);
|
|
364
|
+
if (line.includes('"type":"user"') || line.includes('"type":"assistant"')) {
|
|
365
|
+
messageCount++;
|
|
356
366
|
}
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
firstPrompt = prompt;
|
|
367
|
+
if (nl === -1) {
|
|
368
|
+
break;
|
|
360
369
|
}
|
|
361
|
-
|
|
362
|
-
// ignore read errors
|
|
370
|
+
countPos = nl + 1;
|
|
363
371
|
}
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
modified: stat.mtime.toISOString(),
|
|
371
|
-
projectPath: '',
|
|
372
|
-
source: 'claude-code' as const,
|
|
373
|
-
summary: '',
|
|
374
|
-
title: cleanTitle(firstPrompt),
|
|
375
|
-
});
|
|
372
|
+
const prompt = findFirstUserPrompt(content);
|
|
373
|
+
if (prompt) {
|
|
374
|
+
firstPrompt = prompt;
|
|
375
|
+
}
|
|
376
|
+
} catch {
|
|
377
|
+
// ignore read errors
|
|
376
378
|
}
|
|
377
|
-
} catch {
|
|
378
|
-
// ignore scan errors
|
|
379
|
-
}
|
|
380
379
|
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
380
|
+
sessions.push({
|
|
381
|
+
created: stat.birthtime.toISOString(),
|
|
382
|
+
gitBranch: '',
|
|
383
|
+
id: sessionId,
|
|
384
|
+
messageCount,
|
|
385
|
+
modified: stat.mtime.toISOString(),
|
|
386
|
+
projectPath: '',
|
|
387
|
+
source: 'claude-code' as const,
|
|
388
|
+
summary: '',
|
|
389
|
+
title: cleanTitle(firstPrompt),
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
} catch {
|
|
393
|
+
// ignore scan errors
|
|
385
394
|
}
|
|
395
|
+
|
|
396
|
+
return sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());
|
|
386
397
|
}
|
|
387
398
|
|
|
388
399
|
function readCwdFromProjectDir(projectDir: string, sessions: SessionInfo[]): string {
|
package/src/lib/theme.css
CHANGED
|
@@ -421,13 +421,13 @@
|
|
|
421
421
|
}
|
|
422
422
|
|
|
423
423
|
.pill-live {
|
|
424
|
-
--pill-background:
|
|
425
|
-
--pill-color:
|
|
426
|
-
--pill-border: 1px solid
|
|
424
|
+
--pill-background: var(--ds-green-alpha-200);
|
|
425
|
+
--pill-color: var(--ds-green-700);
|
|
426
|
+
--pill-border: 1px solid var(--ds-green-alpha-400);
|
|
427
427
|
--pill-font-size: 0.7rem;
|
|
428
428
|
--pill-padding: 2px 10px;
|
|
429
|
-
--pill-hover-background:
|
|
430
|
-
--pill-hover-color:
|
|
429
|
+
--pill-hover-background: var(--ds-green-alpha-200);
|
|
430
|
+
--pill-hover-color: var(--ds-green-700);
|
|
431
431
|
--pill-cursor: default;
|
|
432
432
|
font-weight: 700;
|
|
433
433
|
letter-spacing: 0.05em;
|
|
@@ -506,6 +506,126 @@
|
|
|
506
506
|
--pill-cursor: inherit;
|
|
507
507
|
}
|
|
508
508
|
|
|
509
|
+
/* ===== Icon Sizes ===== */
|
|
510
|
+
.icon-14 {
|
|
511
|
+
--icon-width: 14px;
|
|
512
|
+
--icon-height: 14px;
|
|
513
|
+
--icon-padding: 0;
|
|
514
|
+
--icon-container-paddding: 0;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
.icon-16 {
|
|
518
|
+
--icon-width: 16px;
|
|
519
|
+
--icon-height: 16px;
|
|
520
|
+
--icon-padding: 0;
|
|
521
|
+
--icon-container-paddding: 0;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
.icon-18 {
|
|
525
|
+
--icon-width: 18px;
|
|
526
|
+
--icon-height: 18px;
|
|
527
|
+
--icon-padding: 0;
|
|
528
|
+
--icon-container-paddding: 0;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
.icon-24 {
|
|
532
|
+
--icon-width: 24px;
|
|
533
|
+
--icon-height: 24px;
|
|
534
|
+
--icon-padding: 0;
|
|
535
|
+
--icon-container-paddding: 0;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
.icon-26 {
|
|
539
|
+
--icon-width: 26px;
|
|
540
|
+
--icon-height: 26px;
|
|
541
|
+
--icon-padding: 0;
|
|
542
|
+
--icon-container-paddding: 0;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
/* ===== RelativeTime ===== */
|
|
546
|
+
.terminal-time {
|
|
547
|
+
--relative-time-font-size: var(--text-xs);
|
|
548
|
+
--relative-time-color: var(--text-tertiary);
|
|
549
|
+
--relative-time-font-weight: 400;
|
|
550
|
+
white-space: nowrap;
|
|
551
|
+
flex-shrink: 0;
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
/* ===== Status Badge Pill Variants ===== */
|
|
555
|
+
|
|
556
|
+
.pill-status-online {
|
|
557
|
+
--pill-background: var(--ds-green-100);
|
|
558
|
+
--pill-color: var(--ds-green-900);
|
|
559
|
+
--pill-font-size: var(--text-xs);
|
|
560
|
+
--pill-font-weight: 500;
|
|
561
|
+
--pill-padding: 0 var(--space-3);
|
|
562
|
+
--pill-border-radius: var(--radius-full);
|
|
563
|
+
--pill-hover-background: var(--ds-green-100);
|
|
564
|
+
--pill-hover-color: var(--ds-green-900);
|
|
565
|
+
--pill-cursor: default;
|
|
566
|
+
height: 26px;
|
|
567
|
+
text-transform: uppercase;
|
|
568
|
+
letter-spacing: 0.02em;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
.pill-status-offline {
|
|
572
|
+
--pill-background: var(--ds-red-100);
|
|
573
|
+
--pill-color: var(--ds-red-900);
|
|
574
|
+
--pill-font-size: var(--text-xs);
|
|
575
|
+
--pill-font-weight: 500;
|
|
576
|
+
--pill-padding: 0 var(--space-3);
|
|
577
|
+
--pill-border-radius: var(--radius-full);
|
|
578
|
+
--pill-hover-background: var(--ds-red-100);
|
|
579
|
+
--pill-hover-color: var(--ds-red-900);
|
|
580
|
+
--pill-cursor: default;
|
|
581
|
+
height: 26px;
|
|
582
|
+
text-transform: uppercase;
|
|
583
|
+
letter-spacing: 0.02em;
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
.pill-status-degraded {
|
|
587
|
+
--pill-background: var(--ds-amber-100);
|
|
588
|
+
--pill-color: var(--ds-amber-900);
|
|
589
|
+
--pill-font-size: var(--text-xs);
|
|
590
|
+
--pill-font-weight: 500;
|
|
591
|
+
--pill-padding: 0 var(--space-3);
|
|
592
|
+
--pill-border-radius: var(--radius-full);
|
|
593
|
+
--pill-hover-background: var(--ds-amber-100);
|
|
594
|
+
--pill-hover-color: var(--ds-amber-900);
|
|
595
|
+
--pill-cursor: default;
|
|
596
|
+
height: 26px;
|
|
597
|
+
text-transform: uppercase;
|
|
598
|
+
letter-spacing: 0.02em;
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
.pill-status-unknown {
|
|
602
|
+
--pill-background: var(--ds-gray-300);
|
|
603
|
+
--pill-color: var(--text-secondary);
|
|
604
|
+
--pill-font-size: var(--text-xs);
|
|
605
|
+
--pill-font-weight: 500;
|
|
606
|
+
--pill-padding: 0 var(--space-3);
|
|
607
|
+
--pill-border-radius: var(--radius-full);
|
|
608
|
+
--pill-hover-background: var(--ds-gray-300);
|
|
609
|
+
--pill-hover-color: var(--text-secondary);
|
|
610
|
+
--pill-cursor: default;
|
|
611
|
+
height: 26px;
|
|
612
|
+
text-transform: uppercase;
|
|
613
|
+
letter-spacing: 0.02em;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
.pill-status-online::before,
|
|
617
|
+
.pill-status-offline::before,
|
|
618
|
+
.pill-status-degraded::before,
|
|
619
|
+
.pill-status-unknown::before {
|
|
620
|
+
content: '';
|
|
621
|
+
display: inline-block;
|
|
622
|
+
width: 6px;
|
|
623
|
+
height: 6px;
|
|
624
|
+
border-radius: 50%;
|
|
625
|
+
background: currentColor;
|
|
626
|
+
flex-shrink: 0;
|
|
627
|
+
}
|
|
628
|
+
|
|
509
629
|
/* ===== Shimmer Variant Classes ===== */
|
|
510
630
|
|
|
511
631
|
.shimmer-header {
|