@piwitests/server 0.22.1 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{B_mN5eMV.js → 2yLW7WU0.js} +1 -1
  3. package/.output/public/_nuxt/{DK7xciFW.js → 499RbBSX.js} +1 -1
  4. package/.output/public/_nuxt/{CJEp4i0N.js → 5QBnDbs_.js} +1 -1
  5. package/.output/public/_nuxt/{cSeAgciy.js → 5SkLJHl8.js} +1 -1
  6. package/.output/public/_nuxt/{CrOA9onF.js → 6sA-GK37.js} +1 -1
  7. package/.output/public/_nuxt/{C0v6l4pr.js → 6vX5JdHr.js} +1 -1
  8. package/.output/public/_nuxt/{DOBSrxzY.js → 7_9fts7T.js} +1 -1
  9. package/.output/public/_nuxt/{DBhdObsO.js → 9_aJhhcm.js} +1 -1
  10. package/.output/public/_nuxt/{BtaTvcz6.js → AQ86C4c2.js} +1 -1
  11. package/.output/public/_nuxt/{HwFFbACq.js → B070fjS-.js} +1 -1
  12. package/.output/public/_nuxt/B0tmRAhY.js +1 -0
  13. package/.output/public/_nuxt/{CkKCKAYp.js → B2L0-Lzp.js} +2 -2
  14. package/.output/public/_nuxt/{BNAHBHbY.js → B3AG2m76.js} +1 -1
  15. package/.output/public/_nuxt/{BTvE9qca.js → B3G-TIoP.js} +1 -1
  16. package/.output/public/_nuxt/{B2a-Phk3.js → B4mZElvM.js} +1 -1
  17. package/.output/public/_nuxt/{2VtBYkNh.js → B7tiBVLW.js} +1 -1
  18. package/.output/public/_nuxt/{4yvOL9PC.js → BAbrtVp3.js} +1 -1
  19. package/.output/public/_nuxt/{_VzR8bwc.js → BDUfBn3i.js} +1 -1
  20. package/.output/public/_nuxt/{CZ9ThISn.js → BFYkWpPx.js} +1 -1
  21. package/.output/public/_nuxt/{BH-ym1CI.js → BM5BPKlc.js} +1 -1
  22. package/.output/public/_nuxt/{CI_q0F1O.js → BNyTWIad.js} +3 -3
  23. package/.output/public/_nuxt/{BqCiYSVY.js → BOvtXn3m.js} +1 -1
  24. package/.output/public/_nuxt/BVyjw9Bi.js +1 -0
  25. package/.output/public/_nuxt/{BhH0TNTi.js → BZFiz2UB.js} +1 -1
  26. package/.output/public/_nuxt/BZOykMLD.js +1 -0
  27. package/.output/public/_nuxt/{CWoSSKhQ.js → B_JSV0yG.js} +1 -1
  28. package/.output/public/_nuxt/{CWw9WGlv.js → B_MVJP17.js} +1 -1
  29. package/.output/public/_nuxt/{Cwwe5bRS.js → Bag08cIY.js} +1 -1
  30. package/.output/public/_nuxt/{BQzG26t0.js → Bb2mDqKr.js} +1 -1
  31. package/.output/public/_nuxt/{CobveFaj.js → BfcMJBTf.js} +1 -1
  32. package/.output/public/_nuxt/{BmJUhCIO.js → BjMo2tKC.js} +1 -1
  33. package/.output/public/_nuxt/{DOLeth7M.js → BjOFxi54.js} +1 -1
  34. package/.output/public/_nuxt/{DXXnDejN.js → Bj_v57Zu.js} +1 -1
  35. package/.output/public/_nuxt/{Hot1UcKY.js → Bq4_kqIp.js} +1 -1
  36. package/.output/public/_nuxt/{CNcu4khZ.js → Bsc11YIJ.js} +1 -1
  37. package/.output/public/_nuxt/{BlRWlfdD.js → BtZNYmZO.js} +1 -1
  38. package/.output/public/_nuxt/{x8w_1_rn.js → BuGAn4f7.js} +1 -1
  39. package/.output/public/_nuxt/{COP3KBCA.js → BwwfasRt.js} +1 -1
  40. package/.output/public/_nuxt/{BQOWm9mQ.js → C2_7XZo0.js} +1 -1
  41. package/.output/public/_nuxt/{DSvBQHzW.js → C6t4kxaa.js} +1 -1
  42. package/.output/public/_nuxt/{SBmMTKQb.js → C77tM5Hz.js} +1 -1
  43. package/.output/public/_nuxt/{DDN2tt0a.js → C9I1Dp3S.js} +1 -1
  44. package/.output/public/_nuxt/{t-juTK3X.js → CAoQUDI4.js} +1 -1
  45. package/.output/public/_nuxt/{DQnsFoJn.js → CBJFORiZ.js} +1 -1
  46. package/.output/public/_nuxt/{b_yFgp5S.js → CC8wk-N0.js} +1 -1
  47. package/.output/public/_nuxt/{D0ROfwV0.js → CEai-PWF.js} +1 -1
  48. package/.output/public/_nuxt/{BKJetfRH.js → CF_eDZHu.js} +1 -1
  49. package/.output/public/_nuxt/{Sgis3xif.js → CGDPUNcO.js} +1 -1
  50. package/.output/public/_nuxt/{6-ivqM_I.js → CIQeRUSy.js} +1 -1
  51. package/.output/public/_nuxt/{Cf52zHyB.js → CLWMETf9.js} +1 -1
  52. package/.output/public/_nuxt/{h49q_GXF.js → CNu3kken.js} +42 -42
  53. package/.output/public/_nuxt/{Bt4FLbe0.js → CPQRQqXU.js} +1 -1
  54. package/.output/public/_nuxt/{DwyFnMoY.js → CTTmX4gy.js} +1 -1
  55. package/.output/public/_nuxt/{D6Mo5HeX.js → CUOS6S13.js} +1 -1
  56. package/.output/public/_nuxt/{Bb7Uckln.js → CYhm2FBS.js} +1 -1
  57. package/.output/public/_nuxt/{DWEkQ7bl.js → CdEzDaDI.js} +1 -1
  58. package/.output/public/_nuxt/{DLNNAYfu.js → Ce47NgZw.js} +1 -1
  59. package/.output/public/_nuxt/{BFcdtAzg.js → Ce89VyHE.js} +1 -1
  60. package/.output/public/_nuxt/{PdEEuEsg.js → Ce_j5NtN.js} +1 -1
  61. package/.output/public/_nuxt/{BtSJxOdh.js → CfhOanaF.js} +1 -1
  62. package/.output/public/_nuxt/Ck_fTH5z.js +4 -0
  63. package/.output/public/_nuxt/{By5qkOq8.js → Clg2Qx0r.js} +1 -1
  64. package/.output/public/_nuxt/{B6s20NbT.js → CmTzxoQt.js} +1 -1
  65. package/.output/public/_nuxt/{9P8iHISX.js → CvVbKrcH.js} +1 -1
  66. package/.output/public/_nuxt/Cz7SCzdW.js +1 -0
  67. package/.output/public/_nuxt/{B9kt7ySS.js → D1Ucra3E.js} +1 -1
  68. package/.output/public/_nuxt/{DGyGmFem.js → D3SJGdl4.js} +1 -1
  69. package/.output/public/_nuxt/D7fxV-UA.js +1 -0
  70. package/.output/public/_nuxt/{BZnfiR67.js → D7t0Dn3h.js} +1 -1
  71. package/.output/public/_nuxt/{DtSn2Q9-.js → DAhv9aNg.js} +1 -1
  72. package/.output/public/_nuxt/{CMhK1PvI.js → DBWM_xs-.js} +1 -1
  73. package/.output/public/_nuxt/DCE2_MKD.js +2 -0
  74. package/.output/public/_nuxt/DFfqRQxk.js +1 -0
  75. package/.output/public/_nuxt/{Dj-TetcW.js → DJzFYrBt.js} +1 -1
  76. package/.output/public/_nuxt/{x8YSyy4c.js → DNKZmhbX.js} +1 -1
  77. package/.output/public/_nuxt/{CDh_Qt7h.js → DNqm5cWU.js} +1 -1
  78. package/.output/public/_nuxt/{C9p0YCAi.js → DTrPCv7R.js} +1 -1
  79. package/.output/public/_nuxt/{nANaAHCd.js → DXkFgrsT.js} +1 -1
  80. package/.output/public/_nuxt/{B0hK-xDF.js → DYjxDsYC.js} +1 -1
  81. package/.output/public/_nuxt/{D4UlSVir.js → DZ-KbUZi.js} +1 -1
  82. package/.output/public/_nuxt/{DzM9oeLa.js → DZECGgZm.js} +1 -1
  83. package/.output/public/_nuxt/{iubpj2qv.js → Dbf8eT28.js} +1 -1
  84. package/.output/public/_nuxt/{CD3R-ggS.js → DeewM3Wg.js} +1 -1
  85. package/.output/public/_nuxt/{CAZpjzvB.js → DgEa6_av.js} +1 -1
  86. package/.output/public/_nuxt/DiWxW-w3.js +2 -0
  87. package/.output/public/_nuxt/{DpalT0nH.js → DmqCquDx.js} +1 -1
  88. package/.output/public/_nuxt/{CoPntblj.js → DnxrNGE_.js} +1 -1
  89. package/.output/public/_nuxt/{Cd8r0xk5.js → DprkT7rM.js} +1 -1
  90. package/.output/public/_nuxt/{BjU3HZuS.js → DuBtaw3j.js} +1 -1
  91. package/.output/public/_nuxt/DylyATWU.js +2 -0
  92. package/.output/public/_nuxt/{CRPt9SfB.js → FJTsZ5Aa.js} +1 -1
  93. package/.output/public/_nuxt/{DHUT-BKj.js → HIGGZ_c-.js} +1 -1
  94. package/.output/public/_nuxt/{DLn-VPtK.js → HbnAkiyK.js} +1 -1
  95. package/.output/public/_nuxt/{czXrP7NB.js → LTMoFvEY.js} +1 -1
  96. package/.output/public/_nuxt/{DsX5CCb5.js → PDSNX4Te.js} +1 -1
  97. package/.output/public/_nuxt/{BfS8BZTO.js → QZYo3ErV.js} +1 -1
  98. package/.output/public/_nuxt/{kfFeu9tK.js → RkNtgoTD.js} +1 -1
  99. package/.output/public/_nuxt/Wk7ZKG4B.js +1 -0
  100. package/.output/public/_nuxt/{9N6hSApy.js → Ya8ZzWuY.js} +1 -1
  101. package/.output/public/_nuxt/{B09ddw9C.js → ZLfZolDM.js} +1 -1
  102. package/.output/public/_nuxt/{3xlGO1qT.js → a8Z6VC7V.js} +1 -1
  103. package/.output/public/_nuxt/{CCP6Tyle.js → axj2iIDK.js} +1 -1
  104. package/.output/public/_nuxt/builds/latest.json +1 -1
  105. package/.output/public/_nuxt/builds/meta/6d1766a0-0aba-46b8-9d97-7dd174130359.json +1 -0
  106. package/.output/public/_nuxt/dUPMBJ4f.js +1 -0
  107. package/.output/public/_nuxt/{DS2ANCQh.js → eT2oObCh.js} +1 -1
  108. package/.output/public/_nuxt/entry.D_eWXrnD.css +1 -0
  109. package/.output/public/_nuxt/{CkyMZI-0.js → jR2xm3_t.js} +1 -1
  110. package/.output/public/_nuxt/{BDQCwxpX.js → jxc14CqP.js} +1 -1
  111. package/.output/public/_nuxt/{Gik813Ek.js → kWnH8yJq.js} +1 -1
  112. package/.output/public/_nuxt/{BYB8NVJZ.js → mi22nGUC.js} +1 -1
  113. package/.output/public/_nuxt/{BVN50jIb.js → oSLbl-p0.js} +1 -1
  114. package/.output/public/_nuxt/{CBZD8ym8.js → pZbe82l5.js} +1 -1
  115. package/.output/public/_nuxt/roaTZkYi.js +1 -0
  116. package/.output/public/_nuxt/{BUMoU50-.js → sqqg4oXL.js} +1 -1
  117. package/.output/public/_nuxt/xZQGtnVA.js +1 -0
  118. package/.output/server/chunks/build/{Alert-DAb8nKVs.mjs → Alert-He-UxEt6.mjs} +2 -2
  119. package/.output/server/chunks/build/Alert-He-UxEt6.mjs.map +1 -0
  120. package/.output/server/chunks/build/{Breadcrumb-DJp5WvUM.mjs → Breadcrumb-DEP2dVCZ.mjs} +3 -3
  121. package/.output/server/chunks/build/Breadcrumb-DEP2dVCZ.mjs.map +1 -0
  122. package/.output/server/chunks/build/{BreadcrumbNav-BrQwfL8G.mjs → BreadcrumbNav-y6nMDYcR.mjs} +3 -3
  123. package/.output/server/chunks/build/BreadcrumbNav-y6nMDYcR.mjs.map +1 -0
  124. package/.output/server/chunks/build/{BrowserBadge-Djw_e_I9.mjs → BrowserBadge-DIASU8Gf.mjs} +6 -66
  125. package/.output/server/chunks/build/BrowserBadge-DIASU8Gf.mjs.map +1 -0
  126. package/.output/server/chunks/build/{ChartCard-B2gd_8HP.mjs → ChartCard-ZTsCvItQ.mjs} +2 -2
  127. package/.output/server/chunks/build/ChartCard-ZTsCvItQ.mjs.map +1 -0
  128. package/.output/server/chunks/build/{Checkbox-C1khEdTh.mjs → Checkbox-BisdHf8n.mjs} +6 -6
  129. package/.output/server/chunks/build/Checkbox-BisdHf8n.mjs.map +1 -0
  130. package/.output/server/chunks/build/{CodeBlock-CjnDrO3Y.mjs → CodeBlock-B8BNtZAe.mjs} +2 -2
  131. package/.output/server/chunks/build/CodeBlock-B8BNtZAe.mjs.map +1 -0
  132. package/.output/server/chunks/build/{DashboardNavbar-DYtmVlhy.mjs → DashboardNavbar-D7-3zBUU.mjs} +3 -3
  133. package/.output/server/chunks/build/DashboardNavbar-D7-3zBUU.mjs.map +1 -0
  134. package/.output/server/chunks/build/{DashboardSidebarToggle-BPNxODwj.mjs → DashboardSidebarToggle-C3HdHvlE.mjs} +2 -2
  135. package/.output/server/chunks/build/DashboardSidebarToggle-C3HdHvlE.mjs.map +1 -0
  136. package/.output/server/chunks/build/{DataLocationCard-2B-sVSMr.mjs → DataLocationCard-CC2-lHiP.mjs} +3 -3
  137. package/.output/server/chunks/build/DataLocationCard-CC2-lHiP.mjs.map +1 -0
  138. package/.output/server/chunks/build/{MetaStripGroup-BBByVvpR.mjs → DesktopRunLocallyButton-iNzrDsEs.mjs} +601 -623
  139. package/.output/server/chunks/build/DesktopRunLocallyButton-iNzrDsEs.mjs.map +1 -0
  140. package/.output/server/chunks/build/{DiagnosisPanel-D6QO30FQ.mjs → DiagnosisPanel-BVb2LgHu.mjs} +5 -5
  141. package/.output/server/chunks/build/DiagnosisPanel-BVb2LgHu.mjs.map +1 -0
  142. package/.output/server/chunks/build/{DiagnosisResult-ujB5Lt2A.mjs → DiagnosisResult-xVgZlfKK.mjs} +8 -8
  143. package/.output/server/chunks/build/DiagnosisResult-xVgZlfKK.mjs.map +1 -0
  144. package/.output/server/chunks/build/{EntityLinks-F8_kC-IH.mjs → EntityLinks-Dzn73fbq.mjs} +2 -2
  145. package/.output/server/chunks/build/EntityLinks-Dzn73fbq.mjs.map +1 -0
  146. package/.output/server/chunks/build/{EnvManagedBadge-D6e-10M9.mjs → EnvManagedBadge-C-agmABK.mjs} +3 -3
  147. package/.output/server/chunks/build/EnvManagedBadge-C-agmABK.mjs.map +1 -0
  148. package/.output/server/chunks/build/{FeatureUnavailable-BMw4euTk.mjs → FeatureUnavailable-DHFkwI7t.mjs} +2 -2
  149. package/.output/server/chunks/build/FeatureUnavailable-DHFkwI7t.mjs.map +1 -0
  150. package/.output/server/chunks/build/{FormField-QptK0rPg.mjs → FormField-GYHKiSI6.mjs} +2 -2
  151. package/.output/server/chunks/build/FormField-GYHKiSI6.mjs.map +1 -0
  152. package/.output/server/chunks/build/{GetStartedWizard-DxT8T14Y.mjs → GetStartedWizard-BpcGYsm2.mjs} +3 -3
  153. package/.output/server/chunks/build/GetStartedWizard-BpcGYsm2.mjs.map +1 -0
  154. package/.output/server/chunks/build/{HelpHint-C5Ru8BCc.mjs → HelpHint-plioHKA0.mjs} +2 -2
  155. package/.output/server/chunks/build/HelpHint-plioHKA0.mjs.map +1 -0
  156. package/.output/server/chunks/build/MetaStripGroup-A0a72vt5.mjs +193 -0
  157. package/.output/server/chunks/build/MetaStripGroup-A0a72vt5.mjs.map +1 -0
  158. package/.output/server/chunks/build/{Modal-BacZmQCX.mjs → Modal-hKLvVFNp.mjs} +2 -2
  159. package/.output/server/chunks/build/Modal-hKLvVFNp.mjs.map +1 -0
  160. package/.output/server/chunks/build/{NavigationMenu-sTiKSWDm.mjs → NavigationMenu-RfBOyS32.mjs} +4 -4
  161. package/.output/server/chunks/build/NavigationMenu-RfBOyS32.mjs.map +1 -0
  162. package/.output/server/chunks/build/{OpenInIdeLink-Crc8y0Yx.mjs → OpenInIdeLink-Jp6SzEtD.mjs} +4 -4
  163. package/.output/server/chunks/build/{OpenInIdeLink-Crc8y0Yx.mjs.map → OpenInIdeLink-Jp6SzEtD.mjs.map} +1 -1
  164. package/.output/server/chunks/build/{ProjectTestCasesTable-DwjqZ2i5.mjs → ProjectTestCasesTable-DxOTfhi4.mjs} +8 -8
  165. package/.output/server/chunks/build/{ProjectTestCasesTable-DwjqZ2i5.mjs.map → ProjectTestCasesTable-DxOTfhi4.mjs.map} +1 -1
  166. package/.output/server/chunks/build/{RovingFocusItem--OEHI2P3.mjs → RovingFocusItem-BOSx1Z9Z.mjs} +2 -2
  167. package/.output/server/chunks/build/RovingFocusItem-BOSx1Z9Z.mjs.map +1 -0
  168. package/.output/server/chunks/build/{SectionCard-C753B3Yo.mjs → SectionCard-DHAFvJxm.mjs} +2 -2
  169. package/.output/server/chunks/build/SectionCard-DHAFvJxm.mjs.map +1 -0
  170. package/.output/server/chunks/build/{Select-BAyYwPuo.mjs → Select-CEyw7HGK.mjs} +3 -3
  171. package/.output/server/chunks/build/Select-CEyw7HGK.mjs.map +1 -0
  172. package/.output/server/chunks/build/{SelectMenu-zE_AhMX8.mjs → SelectMenu-C02Hs2_F.mjs} +4 -4
  173. package/.output/server/chunks/build/{SelectMenu-zE_AhMX8.mjs.map → SelectMenu-C02Hs2_F.mjs.map} +1 -1
  174. package/.output/server/chunks/build/{Separator-BbgCfKKJ.mjs → Separator-lrN70ODV.mjs} +2 -2
  175. package/.output/server/chunks/build/Separator-lrN70ODV.mjs.map +1 -0
  176. package/.output/server/chunks/build/{SettingsField-D-VriK9X.mjs → SettingsField-tRmytcEJ.mjs} +5 -5
  177. package/.output/server/chunks/build/SettingsField-tRmytcEJ.mjs.map +1 -0
  178. package/.output/server/chunks/build/{Slideover-CNbGvbUF.mjs → Slideover-D6cRIqch.mjs} +3 -3
  179. package/.output/server/chunks/build/Slideover-D6cRIqch.mjs.map +1 -0
  180. package/.output/server/chunks/build/{Switch-DdkA3Fii.mjs → Switch-R2n82ncQ.mjs} +4 -4
  181. package/.output/server/chunks/build/Switch-R2n82ncQ.mjs.map +1 -0
  182. package/.output/server/chunks/build/{Table-CfDVAuUJ.mjs → Table-qZdnm9t2.mjs} +2 -2
  183. package/.output/server/chunks/build/Table-qZdnm9t2.mjs.map +1 -0
  184. package/.output/server/chunks/build/{Tabs-BCOhHEB9.mjs → Tabs-BDP7MWl4.mjs} +3 -3
  185. package/.output/server/chunks/build/Tabs-BDP7MWl4.mjs.map +1 -0
  186. package/.output/server/chunks/build/{TestStatusBar-wquHQqtp.mjs → TestStatusBar-CvsmKJ4D.mjs} +2 -2
  187. package/.output/server/chunks/build/TestStatusBar-CvsmKJ4D.mjs.map +1 -0
  188. package/.output/server/chunks/build/{Textarea-Ohs6QTXf.mjs → Textarea-DpmpM-lN.mjs} +2 -2
  189. package/.output/server/chunks/build/Textarea-DpmpM-lN.mjs.map +1 -0
  190. package/.output/server/chunks/build/{Tooltip-BRBnl4pE.mjs → Tooltip-BI3WQErw.mjs} +2 -2
  191. package/.output/server/chunks/build/Tooltip-BI3WQErw.mjs.map +1 -0
  192. package/.output/server/chunks/build/{VisuallyHiddenInput-BHvzNumK.mjs → VisuallyHiddenInput-D4E5aJCQ.mjs} +2 -2
  193. package/.output/server/chunks/build/VisuallyHiddenInput-D4E5aJCQ.mjs.map +1 -0
  194. package/.output/server/chunks/build/{_id_-CGs0u8Fr.mjs → _id_-CrGTZymJ.mjs} +70 -41
  195. package/.output/server/chunks/build/{_id_-CGs0u8Fr.mjs.map → _id_-CrGTZymJ.mjs.map} +1 -1
  196. package/.output/server/chunks/build/{_id_-BesWjK_d.mjs → _id_-D7UtAIPR.mjs} +34 -31
  197. package/.output/server/chunks/build/{_id_-BesWjK_d.mjs.map → _id_-D7UtAIPR.mjs.map} +1 -1
  198. package/.output/server/chunks/build/{_id_-CQ0lolEK.mjs → _id_-T965GKYC.mjs} +58 -15
  199. package/.output/server/chunks/build/_id_-T965GKYC.mjs.map +1 -0
  200. package/.output/server/chunks/build/{_id_-D1-06Fcl.mjs → _id_-wiULjAVc.mjs} +43 -39
  201. package/.output/server/chunks/build/{_id_-D1-06Fcl.mjs.map → _id_-wiULjAVc.mjs.map} +1 -1
  202. package/.output/server/chunks/build/{about-DdyOj-dj.mjs → about-B3V_OEiu.mjs} +5 -5
  203. package/.output/server/chunks/build/about-B3V_OEiu.mjs.map +1 -0
  204. package/.output/server/chunks/build/{account-7aVMKekZ.mjs → account-DpBdYE46.mjs} +6 -6
  205. package/.output/server/chunks/build/account-DpBdYE46.mjs.map +1 -0
  206. package/.output/server/chunks/build/{ai-zw3T9b5u.mjs → ai-DYhpzbqp.mjs} +15 -15
  207. package/.output/server/chunks/build/{ai-zw3T9b5u.mjs.map → ai-DYhpzbqp.mjs.map} +1 -1
  208. package/.output/server/chunks/build/{analytics-CeCzKwEX.mjs → analytics-CZJEU0an.mjs} +17 -17
  209. package/.output/server/chunks/build/{analytics-CeCzKwEX.mjs.map → analytics-CZJEU0an.mjs.map} +1 -1
  210. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  211. package/.output/server/chunks/build/{default-CkyAx_Mu.mjs → default-DO1izI2V.mjs} +504 -88
  212. package/.output/server/chunks/build/default-DO1izI2V.mjs.map +1 -0
  213. package/.output/server/chunks/build/{docs-Dhj-wEks.mjs → docs-C8bndVXg.mjs} +11 -11
  214. package/.output/server/chunks/build/{docs-Dhj-wEks.mjs.map → docs-C8bndVXg.mjs.map} +1 -1
  215. package/.output/server/chunks/build/{edit-CVz_gdoe.mjs → edit-BdfF9er2.mjs} +12 -12
  216. package/.output/server/chunks/build/edit-BdfF9er2.mjs.map +1 -0
  217. package/.output/server/chunks/build/{fetch-Be-j7hF1.mjs → fetch-tkz5_OA-.mjs} +2 -2
  218. package/.output/server/chunks/build/fetch-tkz5_OA-.mjs.map +1 -0
  219. package/.output/server/chunks/build/{forgot-password-CwdjL7BO.mjs → forgot-password-swZRcvXE.mjs} +3 -3
  220. package/.output/server/chunks/build/forgot-password-swZRcvXE.mjs.map +1 -0
  221. package/.output/server/chunks/build/{import-DyQEw4V3.mjs → import-B27Sv7h5.mjs} +10 -10
  222. package/.output/server/chunks/build/import-B27Sv7h5.mjs.map +1 -0
  223. package/.output/server/chunks/build/{index-DcnICCZU.mjs → index-BdZmxLtC.mjs} +17 -17
  224. package/.output/server/chunks/build/{index-DcnICCZU.mjs.map → index-BdZmxLtC.mjs.map} +1 -1
  225. package/.output/server/chunks/build/{index-D7Bmj6bq.mjs → index-C7m32bRI.mjs} +9 -9
  226. package/.output/server/chunks/build/index-C7m32bRI.mjs.map +1 -0
  227. package/.output/server/chunks/build/{index-DghAFpNR.mjs → index-vRwzDXLs.mjs} +30 -29
  228. package/.output/server/chunks/build/{index-DghAFpNR.mjs.map → index-vRwzDXLs.mjs.map} +1 -1
  229. package/.output/server/chunks/build/{isValueEqualOrExist-D2qw9YEr.mjs → isValueEqualOrExist-D4lZ8uRY.mjs} +2 -2
  230. package/.output/server/chunks/build/isValueEqualOrExist-D4lZ8uRY.mjs.map +1 -0
  231. package/.output/server/chunks/build/{login-rXKF63j6.mjs → login-hxCF06JT.mjs} +4 -4
  232. package/.output/server/chunks/build/login-hxCF06JT.mjs.map +1 -0
  233. package/.output/server/chunks/build/{mcp-ByNvFy4o.mjs → mcp-BVW1llyW.mjs} +11 -11
  234. package/.output/server/chunks/build/mcp-BVW1llyW.mjs.map +1 -0
  235. package/.output/server/chunks/build/{notifications-CbLAZnKJ.mjs → notifications-Dn-evqXM.mjs} +11 -11
  236. package/.output/server/chunks/build/notifications-Dn-evqXM.mjs.map +1 -0
  237. package/.output/server/chunks/build/{performance-C93MEPaZ.mjs → performance-CV8qm94u.mjs} +10 -10
  238. package/.output/server/chunks/build/performance-CV8qm94u.mjs.map +1 -0
  239. package/.output/server/chunks/build/{pr-feedback-DKCB0bDE.mjs → pr-feedback-gKDz8LyA.mjs} +9 -9
  240. package/.output/server/chunks/build/pr-feedback-gKDz8LyA.mjs.map +1 -0
  241. package/.output/server/chunks/build/{reset-password-BBoHKMqD.mjs → reset-password-DtEISa1I.mjs} +3 -3
  242. package/.output/server/chunks/build/reset-password-DtEISa1I.mjs.map +1 -0
  243. package/.output/server/chunks/build/server.mjs +85 -31
  244. package/.output/server/chunks/build/{settings-DiG0JjzC.mjs → settings-BJDnuLpc.mjs} +8 -8
  245. package/.output/server/chunks/build/settings-BJDnuLpc.mjs.map +1 -0
  246. package/.output/server/chunks/build/{setup-0-1O6Hjz.mjs → setup-BO9tXa_G.mjs} +14 -14
  247. package/.output/server/chunks/build/{setup-0-1O6Hjz.mjs.map → setup-BO9tXa_G.mjs.map} +1 -1
  248. package/.output/server/chunks/build/{storage-3JiFJ843.mjs → storage-zN92cA9q.mjs} +10 -10
  249. package/.output/server/chunks/build/storage-zN92cA9q.mjs.map +1 -0
  250. package/.output/server/chunks/build/{tags-CqYcp7js.mjs → tags-CJFnoyQc.mjs} +5 -5
  251. package/.output/server/chunks/build/tags-CJFnoyQc.mjs.map +1 -0
  252. package/.output/server/chunks/build/{test-cases-y1HSgPX2.mjs → test-cases-0Q6rT73d.mjs} +18 -18
  253. package/.output/server/chunks/build/test-cases-0Q6rT73d.mjs.map +1 -0
  254. package/.output/server/chunks/build/{test-functions-D2ju95Ly.mjs → test-functions-DVRJgiWo.mjs} +8 -8
  255. package/.output/server/chunks/build/test-functions-DVRJgiWo.mjs.map +1 -0
  256. package/.output/server/chunks/build/{useCopyRich-CVFeYfkG.mjs → useCopyRich-CZxJ7IY_.mjs} +12 -12
  257. package/.output/server/chunks/build/{useCopyRich-CVFeYfkG.mjs.map → useCopyRich-CZxJ7IY_.mjs.map} +1 -1
  258. package/.output/server/chunks/build/useDesktopLocalRuns-k7Gw3Fv3.mjs +319 -0
  259. package/.output/server/chunks/build/useDesktopLocalRuns-k7Gw3Fv3.mjs.map +1 -0
  260. package/.output/server/chunks/build/useDesktopProjectLink-WwLte59P.mjs +67 -0
  261. package/.output/server/chunks/build/useDesktopProjectLink-WwLte59P.mjs.map +1 -0
  262. package/.output/server/chunks/build/{useFormControl-CZ9So7iX.mjs → useFormControl-8skMOTIf.mjs} +2 -2
  263. package/.output/server/chunks/build/useFormControl-8skMOTIf.mjs.map +1 -0
  264. package/.output/server/chunks/build/{useOpenInIde--6Me0WlL.mjs → useOpenInIde-D74FmDNg.mjs} +2 -2
  265. package/.output/server/chunks/build/useOpenInIde-D74FmDNg.mjs.map +1 -0
  266. package/.output/server/chunks/build/{users-IdmY9JZV.mjs → users-C9bjOBde.mjs} +6 -6
  267. package/.output/server/chunks/build/users-C9bjOBde.mjs.map +1 -0
  268. package/.output/server/chunks/nitro/nitro.mjs +734 -720
  269. package/.output/server/package.json +1 -1
  270. package/package.json +1 -1
  271. package/.output/public/_nuxt/B-6GGrhr.js +0 -1
  272. package/.output/public/_nuxt/B9FSuKdA.js +0 -1
  273. package/.output/public/_nuxt/BaDhDBCV.js +0 -1
  274. package/.output/public/_nuxt/Be4c943G.js +0 -2
  275. package/.output/public/_nuxt/BpUXqOVj.js +0 -2
  276. package/.output/public/_nuxt/CScusXhF.js +0 -1
  277. package/.output/public/_nuxt/Cot8fIp5.js +0 -2
  278. package/.output/public/_nuxt/D4oheDIm.js +0 -4
  279. package/.output/public/_nuxt/DslnXfcH.js +0 -1
  280. package/.output/public/_nuxt/builds/meta/28bca36d-5571-4157-b1b8-7f62c934eed6.json +0 -1
  281. package/.output/public/_nuxt/entry.BAvBQY-h.css +0 -1
  282. package/.output/public/_nuxt/hzsG6cAc.js +0 -1
  283. package/.output/public/_nuxt/jjOqY9Tv.js +0 -1
  284. package/.output/public/_nuxt/xbO0VmDX.js +0 -1
  285. package/.output/server/chunks/build/Alert-DAb8nKVs.mjs.map +0 -1
  286. package/.output/server/chunks/build/Breadcrumb-DJp5WvUM.mjs.map +0 -1
  287. package/.output/server/chunks/build/BreadcrumbNav-BrQwfL8G.mjs.map +0 -1
  288. package/.output/server/chunks/build/BrowserBadge-Djw_e_I9.mjs.map +0 -1
  289. package/.output/server/chunks/build/ChartCard-B2gd_8HP.mjs.map +0 -1
  290. package/.output/server/chunks/build/Checkbox-C1khEdTh.mjs.map +0 -1
  291. package/.output/server/chunks/build/CodeBlock-CjnDrO3Y.mjs.map +0 -1
  292. package/.output/server/chunks/build/DashboardNavbar-DYtmVlhy.mjs.map +0 -1
  293. package/.output/server/chunks/build/DashboardSidebarToggle-BPNxODwj.mjs.map +0 -1
  294. package/.output/server/chunks/build/DataLocationCard-2B-sVSMr.mjs.map +0 -1
  295. package/.output/server/chunks/build/DiagnosisPanel-D6QO30FQ.mjs.map +0 -1
  296. package/.output/server/chunks/build/DiagnosisResult-ujB5Lt2A.mjs.map +0 -1
  297. package/.output/server/chunks/build/EntityLinks-F8_kC-IH.mjs.map +0 -1
  298. package/.output/server/chunks/build/EnvManagedBadge-D6e-10M9.mjs.map +0 -1
  299. package/.output/server/chunks/build/FeatureUnavailable-BMw4euTk.mjs.map +0 -1
  300. package/.output/server/chunks/build/FormField-QptK0rPg.mjs.map +0 -1
  301. package/.output/server/chunks/build/GetStartedWizard-DxT8T14Y.mjs.map +0 -1
  302. package/.output/server/chunks/build/HelpHint-C5Ru8BCc.mjs.map +0 -1
  303. package/.output/server/chunks/build/MetaStripGroup-BBByVvpR.mjs.map +0 -1
  304. package/.output/server/chunks/build/Modal-BacZmQCX.mjs.map +0 -1
  305. package/.output/server/chunks/build/NavigationMenu-sTiKSWDm.mjs.map +0 -1
  306. package/.output/server/chunks/build/RovingFocusItem--OEHI2P3.mjs.map +0 -1
  307. package/.output/server/chunks/build/SectionCard-C753B3Yo.mjs.map +0 -1
  308. package/.output/server/chunks/build/Select-BAyYwPuo.mjs.map +0 -1
  309. package/.output/server/chunks/build/Separator-BbgCfKKJ.mjs.map +0 -1
  310. package/.output/server/chunks/build/SettingsField-D-VriK9X.mjs.map +0 -1
  311. package/.output/server/chunks/build/Slideover-CNbGvbUF.mjs.map +0 -1
  312. package/.output/server/chunks/build/Switch-DdkA3Fii.mjs.map +0 -1
  313. package/.output/server/chunks/build/Table-CfDVAuUJ.mjs.map +0 -1
  314. package/.output/server/chunks/build/Tabs-BCOhHEB9.mjs.map +0 -1
  315. package/.output/server/chunks/build/TestStatusBar-wquHQqtp.mjs.map +0 -1
  316. package/.output/server/chunks/build/Textarea-Ohs6QTXf.mjs.map +0 -1
  317. package/.output/server/chunks/build/Tooltip-BRBnl4pE.mjs.map +0 -1
  318. package/.output/server/chunks/build/VisuallyHiddenInput-BHvzNumK.mjs.map +0 -1
  319. package/.output/server/chunks/build/_id_-CQ0lolEK.mjs.map +0 -1
  320. package/.output/server/chunks/build/about-DdyOj-dj.mjs.map +0 -1
  321. package/.output/server/chunks/build/account-7aVMKekZ.mjs.map +0 -1
  322. package/.output/server/chunks/build/default-CkyAx_Mu.mjs.map +0 -1
  323. package/.output/server/chunks/build/edit-CVz_gdoe.mjs.map +0 -1
  324. package/.output/server/chunks/build/fetch-Be-j7hF1.mjs.map +0 -1
  325. package/.output/server/chunks/build/forgot-password-CwdjL7BO.mjs.map +0 -1
  326. package/.output/server/chunks/build/import-DyQEw4V3.mjs.map +0 -1
  327. package/.output/server/chunks/build/index-D7Bmj6bq.mjs.map +0 -1
  328. package/.output/server/chunks/build/isValueEqualOrExist-D2qw9YEr.mjs.map +0 -1
  329. package/.output/server/chunks/build/login-rXKF63j6.mjs.map +0 -1
  330. package/.output/server/chunks/build/mcp-ByNvFy4o.mjs.map +0 -1
  331. package/.output/server/chunks/build/notifications-CbLAZnKJ.mjs.map +0 -1
  332. package/.output/server/chunks/build/performance-C93MEPaZ.mjs.map +0 -1
  333. package/.output/server/chunks/build/pr-feedback-DKCB0bDE.mjs.map +0 -1
  334. package/.output/server/chunks/build/reset-password-BBoHKMqD.mjs.map +0 -1
  335. package/.output/server/chunks/build/settings-DiG0JjzC.mjs.map +0 -1
  336. package/.output/server/chunks/build/storage-3JiFJ843.mjs.map +0 -1
  337. package/.output/server/chunks/build/tags-CqYcp7js.mjs.map +0 -1
  338. package/.output/server/chunks/build/test-cases-y1HSgPX2.mjs.map +0 -1
  339. package/.output/server/chunks/build/test-functions-D2ju95Ly.mjs.map +0 -1
  340. package/.output/server/chunks/build/useFormControl-CZ9So7iX.mjs.map +0 -1
  341. package/.output/server/chunks/build/useOpenInIde--6Me0WlL.mjs.map +0 -1
  342. package/.output/server/chunks/build/users-IdmY9JZV.mjs.map +0 -1
@@ -1,21 +1,21 @@
1
1
  import { j as useToast, o as _sfc_main$p, v as __nuxt_component_12, n as _sfc_main$7$1, m as _sfc_main$k$1, r as useRuntimeConfig, w as _sfc_main$8$1, G as refreshNuxtData, H as _export_sfc, _ as _sfc_main$d$1 } from './server.mjs';
2
- import { _ as __nuxt_component_2$1, a as __nuxt_component_9 } from './HelpHint-C5Ru8BCc.mjs';
3
- import { _ as _sfc_main$o } from './Separator-BbgCfKKJ.mjs';
2
+ import { _ as __nuxt_component_2$1, a as __nuxt_component_9 } from './HelpHint-plioHKA0.mjs';
3
+ import { _ as _sfc_main$o } from './Separator-lrN70ODV.mjs';
4
4
  import { ref, defineComponent, mergeProps, unref, withCtx, withDirectives, createVNode, renderSlot, vShow, withKeys, withModifiers, openBlock, createBlock, createCommentVNode, createTextVNode, toDisplayString, Fragment, computed, resolveDynamicComponent, createSlots, renderList, isRef, nextTick, useModel, watch, mergeModels, useSSRContext } from 'vue';
5
5
  import { ssrRenderAttrs, ssrRenderComponent, ssrRenderStyle, ssrRenderSlot, ssrRenderAttr, ssrInterpolate, ssrRenderVNode, ssrRenderList, ssrRenderClass, ssrRenderTeleport } from 'vue/server-renderer';
6
6
  import { u as useDesktopDownload } from './useDesktopDownload-Dyf0fR47.mjs';
7
- import { u as useFetch, a as useCopy } from './fetch-Be-j7hF1.mjs';
7
+ import { u as useFetch, a as useCopy } from './fetch-tkz5_OA-.mjs';
8
8
  import { f as formatRelativeTime, m as getTraceViewerUrl, n as fileApiUrl, o as parsePatchLines, q as patchLineClass, e as errorMessage, u as getFileApiPath } from './index-ByWTzqF6.mjs';
9
- import { _ as _sfc_main$l } from './Alert-DAb8nKVs.mjs';
9
+ import { _ as _sfc_main$l } from './Alert-He-UxEt6.mjs';
10
10
  import { dY as recommendLocatorFix, ah as formatBytes } from '../nitro/nitro.mjs';
11
- import { _ as __nuxt_component_11 } from './SectionCard-C753B3Yo.mjs';
12
- import { _ as _sfc_main$q } from './Modal-BacZmQCX.mjs';
13
- import { _ as _sfc_main$m } from './Tabs-BCOhHEB9.mjs';
14
- import { _ as _sfc_main$n } from './Tooltip-BRBnl4pE.mjs';
15
- import { _ as __nuxt_component_5 } from './CodeBlock-CjnDrO3Y.mjs';
16
- import { _ as __nuxt_component_1$3 } from './OpenInIdeLink-Crc8y0Yx.mjs';
11
+ import { _ as __nuxt_component_11 } from './SectionCard-DHAFvJxm.mjs';
12
+ import { _ as _sfc_main$q } from './Modal-hKLvVFNp.mjs';
13
+ import { _ as _sfc_main$m } from './Tabs-BDP7MWl4.mjs';
14
+ import { _ as _sfc_main$n } from './Tooltip-BI3WQErw.mjs';
15
+ import { _ as __nuxt_component_5 } from './CodeBlock-B8BNtZAe.mjs';
16
+ import { _ as __nuxt_component_1$3 } from './OpenInIdeLink-Jp6SzEtD.mjs';
17
17
  import { _ as _sfc_main$k } from './Card--Ike7sYc.mjs';
18
- import { u as useFoldedState } from './DiagnosisResult-ujB5Lt2A.mjs';
18
+ import { u as useFoldedState } from './DiagnosisResult-xVgZlfKK.mjs';
19
19
 
20
20
  const CAPTURED_ATTRIBUTES = [
21
21
  "id",
@@ -5295,4 +5295,4 @@ function useCopyRich(options = {}) {
5295
5295
  }
5296
5296
 
5297
5297
  export { __nuxt_component_25 as _, __nuxt_component_19 as a, __nuxt_component_20 as b, __nuxt_component_21 as c, __nuxt_component_27 as d, __nuxt_component_6 as e, isVideoFile as f, __nuxt_component_1$1 as g, __nuxt_component_2 as h, isImageFile as i, __nuxt_component_3$1 as j, __nuxt_component_4$1 as k, __nuxt_component_3 as l, __nuxt_component_4 as m, __nuxt_component_24 as n, __nuxt_component_1$2 as o, __nuxt_component_1 as p, __nuxt_component_3$2 as q, __nuxt_component_4$2 as r, stripAnsi as s, useCopyRich as u };
5298
- //# sourceMappingURL=useCopyRich-CVFeYfkG.mjs.map
5298
+ //# sourceMappingURL=useCopyRich-CZxJ7IY_.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useCopyRich-CVFeYfkG.mjs","sources":["../../../../../../packages/core/src/locator-generation.ts","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/useCopyRich-CVFeYfkG.js"],"names":["_sfc_main$k","_sfc_main$l","_sfc_main$m","_sfc_main$n","_sfc_main$o","_sfc_main$p","_sfc_main$r","_sfc_main$s","_sfc_main$t","_sfc_main$u"],"mappings":"","x_google_ignoreList":[1]}
1
+ {"version":3,"file":"useCopyRich-CZxJ7IY_.mjs","sources":["../../../../../../packages/core/src/locator-generation.ts","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/useCopyRich-CZxJ7IY_.js"],"names":["_sfc_main$k","_sfc_main$l","_sfc_main$m","_sfc_main$n","_sfc_main$o","_sfc_main$p","_sfc_main$r","_sfc_main$s","_sfc_main$t","_sfc_main$u"],"mappings":"","x_google_ignoreList":[1]}
@@ -0,0 +1,319 @@
1
+ import { e as escapeGrep, t as toPosixPath } from './useOpenInIde-D74FmDNg.mjs';
2
+ import { J as useState } from './server.mjs';
3
+ import { computed } from 'vue';
4
+ import { t as tauriCore, a as tauriEvent } from './useTauri-Kf3HE_42.mjs';
5
+ import { e as errorMessage } from './index-ByWTzqF6.mjs';
6
+
7
+ const RUN_MODE_FLAGS = {
8
+ normal: [],
9
+ headed: ["--headed"],
10
+ debug: ["--debug"],
11
+ ui: ["--ui"]
12
+ };
13
+ function groupByProject(cases) {
14
+ const groups = /* @__PURE__ */ new Map();
15
+ for (const c of cases) {
16
+ const key = c.projectName || "";
17
+ if (!groups.has(key)) groups.set(key, []);
18
+ groups.get(key).push(c);
19
+ }
20
+ return groups;
21
+ }
22
+ function specArgs(cases, mode) {
23
+ if (mode === "grep") {
24
+ const escaped = cases.map((c) => escapeGrep(c.title));
25
+ return ["--grep", escaped.length === 1 ? escaped[0] : `(${escaped.join("|")})`];
26
+ }
27
+ const seen = /* @__PURE__ */ new Set();
28
+ const specs = [];
29
+ for (const c of cases) {
30
+ const spec = mode === "file-line" && c.line ? `${toPosixPath(c.filePath)}:${c.line}` : toPosixPath(c.filePath);
31
+ if (seen.has(spec)) continue;
32
+ seen.add(spec);
33
+ specs.push(spec);
34
+ }
35
+ return specs;
36
+ }
37
+ function displayArg(arg) {
38
+ return /[\s"'()|]/.test(arg) ? `"${arg.replace(/"/g, '\\"')}"` : arg;
39
+ }
40
+ function buildLocalRunPlan(cases, options = {}) {
41
+ if (cases.length === 0) return [];
42
+ const mode = options.mode ?? "file-line";
43
+ const runMode = options.runMode ?? "normal";
44
+ const repeatEach = Math.min(1e3, Math.max(1, Math.floor(options.repeatEach ?? 1)));
45
+ const steps = [];
46
+ for (const [project, projectCases] of groupByProject(cases)) {
47
+ const args = specArgs(projectCases, mode);
48
+ if (project) args.push(`--project=${project}`);
49
+ args.push(...RUN_MODE_FLAGS[runMode]);
50
+ if (options.trace) args.push("--trace=on");
51
+ if (repeatEach > 1) args.push(`--repeat-each=${repeatEach}`);
52
+ steps.push({ args, display: ["playwright", "test", ...args.map(displayArg)].join(" ") });
53
+ }
54
+ return steps;
55
+ }
56
+ function localRunProgressLabel(run) {
57
+ if (run.progressTotal) return `Running ${run.progressDone}/${run.progressTotal}…`;
58
+ return run.steps.length > 1 ? `Running ${run.stepIndex + 1}/${run.steps.length}…` : "Running…";
59
+ }
60
+ const DEFAULT_LOCAL_RUN_OPTIONS = {
61
+ mode: "file-line",
62
+ runMode: "normal",
63
+ trace: false,
64
+ repeatEach: 1
65
+ };
66
+ const LOCAL_RUN_MODE_ITEMS = [
67
+ { label: "Headless", value: "normal", icon: "i-lucide-square-terminal" },
68
+ { label: "Headed", value: "headed", icon: "i-lucide-app-window" },
69
+ { label: "Debug (inspector)", value: "debug", icon: "i-lucide-bug" },
70
+ { label: "UI mode", value: "ui", icon: "i-lucide-layout-grid" }
71
+ ];
72
+ const RETRY_MODE_ITEMS = [
73
+ { label: "File:line", value: "file-line" },
74
+ { label: "Title (grep)", value: "grep" },
75
+ { label: "File only", value: "file" }
76
+ ];
77
+ const MAX_LINES = 2e3;
78
+ const MAX_FINISHED = 15;
79
+ const OPTIONS_STORAGE_KEY = "piwi:desktop-local-run-options";
80
+ let nextKey = 1;
81
+ let unlisten = null;
82
+ let startingSteps = 0;
83
+ let pendingEvents = [];
84
+ const runByShellId = /* @__PURE__ */ new Map();
85
+ const exitResolvers = /* @__PURE__ */ new Map();
86
+ const PROGRESS_TOTAL_RE = /^Running (\d+) tests? using \d+ workers?$/;
87
+ const PROGRESS_RESULT_RE = /^\s{1,6}(?:✓|✘|✗|x|ok|-)\s+\d+\s/;
88
+ function useDesktopLocalRuns() {
89
+ const runs = useState("desktop-local-runs", () => []);
90
+ const trayOpen = useState("desktop-local-runs-tray", () => false);
91
+ const optionsByProject = useState("desktop-local-run-options", () => ({}));
92
+ const activeCount = computed(() => runs.value.filter((r) => r.status === "running").length);
93
+ function getProjectOptions(projectId) {
94
+ return { ...DEFAULT_LOCAL_RUN_OPTIONS, ...optionsByProject.value[String(projectId)] };
95
+ }
96
+ function saveProjectOptions(projectId, patch) {
97
+ const next = { ...getProjectOptions(projectId), ...patch };
98
+ optionsByProject.value = { ...optionsByProject.value, [String(projectId)]: next };
99
+ try {
100
+ localStorage.setItem(OPTIONS_STORAGE_KEY, JSON.stringify(optionsByProject.value));
101
+ } catch {
102
+ }
103
+ }
104
+ function pushLine(run, text, error) {
105
+ run.lines.push({ text, error });
106
+ if (run.lines.length > MAX_LINES) run.lines.splice(0, run.lines.length - MAX_LINES);
107
+ if (error) return;
108
+ const total = PROGRESS_TOTAL_RE.exec(text);
109
+ if (total) {
110
+ run.progressTotal = (run.progressTotal ?? 0) + Number(total[1]);
111
+ } else if (PROGRESS_RESULT_RE.test(text)) {
112
+ run.progressDone = Math.min(run.progressDone + 1, run.progressTotal ?? run.progressDone + 1);
113
+ }
114
+ }
115
+ function dispatch(run, payload) {
116
+ if (payload.kind === "exit") {
117
+ exitResolvers.get(payload.id)?.(payload.code);
118
+ return;
119
+ }
120
+ pushLine(run, payload.line ?? "", payload.kind !== "stdout");
121
+ }
122
+ async function ensureListener() {
123
+ if (unlisten) return;
124
+ const events = tauriEvent();
125
+ if (!events) throw new Error("The desktop bridge is unavailable.");
126
+ unlisten = await events.listen("piwi:local-run", ({ payload }) => {
127
+ const run = runByShellId.get(payload.id);
128
+ if (run) dispatch(run, payload);
129
+ else if (startingSteps > 0) pendingEvents.push(payload);
130
+ });
131
+ }
132
+ async function runStep(run, step) {
133
+ const core = tauriCore();
134
+ if (!core) throw new Error("The desktop bridge is unavailable.");
135
+ startingSteps += 1;
136
+ let shellId;
137
+ try {
138
+ shellId = await core.invoke("desktop_run_local_tests", {
139
+ projectId: run.projectId,
140
+ args: step.args
141
+ });
142
+ } catch (error) {
143
+ startingSteps -= 1;
144
+ throw error;
145
+ }
146
+ const exit = new Promise((resolve) => exitResolvers.set(shellId, resolve));
147
+ runByShellId.set(shellId, run);
148
+ run.shellId = shellId;
149
+ const mine = pendingEvents.filter((p) => p.id === shellId);
150
+ pendingEvents = startingSteps > 1 ? pendingEvents.filter((p) => p.id !== shellId) : [];
151
+ startingSteps -= 1;
152
+ for (const payload of mine) dispatch(run, payload);
153
+ const code = await exit;
154
+ runByShellId.delete(shellId);
155
+ exitResolvers.delete(shellId);
156
+ run.shellId = null;
157
+ return code;
158
+ }
159
+ async function drive(run) {
160
+ try {
161
+ await ensureListener();
162
+ let worst = 0;
163
+ for (const [index, step] of run.steps.entries()) {
164
+ if (run.stopRequested) break;
165
+ run.stepIndex = index;
166
+ if (run.steps.length > 1) pushLine(run, `$ ${step.display}`, false);
167
+ const code = await runStep(run, step);
168
+ if (run.stopRequested) break;
169
+ if (code !== 0) worst = code ?? 1;
170
+ }
171
+ if (run.stopRequested) {
172
+ run.status = "stopped";
173
+ } else {
174
+ run.exitCode = typeof worst === "number" ? worst : 1;
175
+ run.status = worst === 0 ? "passed" : "failed";
176
+ }
177
+ } catch (error) {
178
+ pushLine(run, errorMessage(error), true);
179
+ run.status = "error";
180
+ } finally {
181
+ run.finishedAt = Date.now();
182
+ notifyFinished(run);
183
+ trimFinished();
184
+ }
185
+ }
186
+ function notifyFinished(run) {
187
+ if (run.status === "stopped") return;
188
+ const label = run.projectLabel || "Local run";
189
+ const tests = `${run.cases.length} test${run.cases.length === 1 ? "" : "s"}`;
190
+ const seconds = Math.max(1, Math.round(((run.finishedAt ?? Date.now()) - run.startedAt) / 1e3));
191
+ notifyUnfocused(run, label, tests, seconds);
192
+ run.piwiRunId == null ? [] : [
193
+ {
194
+ label: `Open run #${run.piwiRunId}`,
195
+ color: "neutral",
196
+ variant: "outline",
197
+ onClick: () => {
198
+ }
199
+ }
200
+ ];
201
+ if (run.status === "passed") ;
202
+ else if (run.status === "failed") ;
203
+ else ;
204
+ }
205
+ function notifyUnfocused(run, label, tests, seconds) {
206
+ if (typeof Notification === "undefined" || Notification.permission !== "granted") return;
207
+ if (!(void 0).hidden && (void 0).hasFocus()) return;
208
+ const title = run.status === "passed" ? "Local run passed" : run.status === "failed" ? "Local run failed" : "Local run could not start";
209
+ const body = run.status === "failed" ? `${label} — exit ${run.exitCode ?? 1} after ${seconds}s` : `${label} — ${tests} in ${seconds}s`;
210
+ try {
211
+ new Notification(title, { body });
212
+ } catch {
213
+ }
214
+ }
215
+ function trimFinished() {
216
+ const finished = runs.value.filter((r) => r.status !== "running");
217
+ if (finished.length <= MAX_FINISHED) return;
218
+ const drop = new Set(finished.slice(MAX_FINISHED).map((r) => r.key));
219
+ runs.value = runs.value.filter((r) => !drop.has(r.key));
220
+ }
221
+ function startRun(input) {
222
+ if (!tauriCore() || input.cases.length === 0) return null;
223
+ const options = { ...getProjectOptions(input.projectId), ...input.options };
224
+ const steps = buildLocalRunPlan(input.cases, options);
225
+ if (steps.length === 0) return null;
226
+ if (input.persistOptions !== false) saveProjectOptions(input.projectId, options);
227
+ const run = {
228
+ key: nextKey++,
229
+ projectId: String(input.projectId),
230
+ projectLabel: input.projectLabel ?? null,
231
+ cases: input.cases.map((c) => ({ ...c })),
232
+ options,
233
+ steps,
234
+ stepIndex: 0,
235
+ status: "running",
236
+ lines: [],
237
+ exitCode: null,
238
+ startedAt: Date.now(),
239
+ finishedAt: null,
240
+ shellId: null,
241
+ stopRequested: false,
242
+ progressTotal: null,
243
+ progressDone: 0,
244
+ piwiRunId: null,
245
+ piwiRunBaseline: null
246
+ };
247
+ runs.value = [run, ...runs.value];
248
+ const tracked = runs.value[0];
249
+ trayOpen.value = true;
250
+ void captureBaseline(tracked);
251
+ void drive(tracked);
252
+ return tracked;
253
+ }
254
+ async function captureBaseline(run) {
255
+ try {
256
+ const latest = await $fetch(`/api/projects/${run.projectId}/latest-run`);
257
+ run.piwiRunBaseline = latest?.id ?? 0;
258
+ } catch {
259
+ }
260
+ }
261
+ async function correlatePiwiRuns() {
262
+ const cutoff = Date.now() - 2 * 6e4;
263
+ for (const run of runs.value) {
264
+ if (run.piwiRunId != null || run.piwiRunBaseline == null) continue;
265
+ if (run.status !== "running" && (run.finishedAt ?? 0) < cutoff) continue;
266
+ try {
267
+ const latest = await $fetch(`/api/projects/${run.projectId}/latest-run`);
268
+ if (latest && latest.id > run.piwiRunBaseline) run.piwiRunId = latest.id;
269
+ } catch {
270
+ }
271
+ }
272
+ }
273
+ function rerun(run) {
274
+ return startRun({
275
+ projectId: run.projectId,
276
+ projectLabel: run.projectLabel,
277
+ cases: run.cases,
278
+ options: run.options,
279
+ persistOptions: false
280
+ });
281
+ }
282
+ async function stopRun(run) {
283
+ if (run.status !== "running") return;
284
+ run.stopRequested = true;
285
+ const core = tauriCore();
286
+ const shellId = run.shellId;
287
+ if (core && shellId != null) {
288
+ try {
289
+ await core.invoke("desktop_stop_local_tests", { runId: shellId });
290
+ } catch {
291
+ }
292
+ exitResolvers.get(shellId)?.(null);
293
+ }
294
+ }
295
+ function clearFinished() {
296
+ runs.value = runs.value.filter((r) => r.status === "running");
297
+ }
298
+ function latestForProject(projectId) {
299
+ if (projectId == null) return void 0;
300
+ const id = String(projectId);
301
+ return runs.value.find((r) => r.projectId === id);
302
+ }
303
+ return {
304
+ runs,
305
+ trayOpen,
306
+ activeCount,
307
+ startRun,
308
+ rerun,
309
+ stopRun,
310
+ clearFinished,
311
+ latestForProject,
312
+ getProjectOptions,
313
+ saveProjectOptions,
314
+ correlatePiwiRuns
315
+ };
316
+ }
317
+
318
+ export { LOCAL_RUN_MODE_ITEMS as L, RETRY_MODE_ITEMS as R, buildLocalRunPlan as b, localRunProgressLabel as l, useDesktopLocalRuns as u };
319
+ //# sourceMappingURL=useDesktopLocalRuns-k7Gw3Fv3.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDesktopLocalRuns-k7Gw3Fv3.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/useDesktopLocalRuns-k7Gw3Fv3.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
@@ -0,0 +1,67 @@
1
+ import { t as tauriCore } from './useTauri-Kf3HE_42.mjs';
2
+ import { j as useToast } from './server.mjs';
3
+ import { ref, watch, toValue } from 'vue';
4
+ import { e as errorMessage } from './index-ByWTzqF6.mjs';
5
+
6
+ async function getDesktopProjectLink(projectId) {
7
+ const core = tauriCore();
8
+ if (!core || projectId == null || projectId === "") return null;
9
+ try {
10
+ return await core.invoke("desktop_get_project_link", {
11
+ projectId: String(projectId)
12
+ });
13
+ } catch {
14
+ return null;
15
+ }
16
+ }
17
+ function useDesktopProjectLink(projectId) {
18
+ const toast = useToast();
19
+ const available = ref(false);
20
+ const link = ref(null);
21
+ const busy = ref(false);
22
+ async function refresh() {
23
+ link.value = await getDesktopProjectLink(toValue(projectId));
24
+ }
25
+ watch(
26
+ () => toValue(projectId),
27
+ () => {
28
+ if (available.value) void refresh();
29
+ }
30
+ );
31
+ async function pickAndLink() {
32
+ const core = tauriCore();
33
+ const id = toValue(projectId);
34
+ if (!core || id == null || id === "") return false;
35
+ busy.value = true;
36
+ try {
37
+ const path = await core.invoke("desktop_pick_folder");
38
+ if (!path) return false;
39
+ await core.invoke("desktop_set_project_link", { projectId: String(id), path });
40
+ await refresh();
41
+ return true;
42
+ } catch (error) {
43
+ toast.add({ title: "Could not link the folder", description: errorMessage(error), color: "error" });
44
+ return false;
45
+ } finally {
46
+ busy.value = false;
47
+ }
48
+ }
49
+ async function unlink() {
50
+ const core = tauriCore();
51
+ const id = toValue(projectId);
52
+ if (!core || id == null || id === "") return;
53
+ busy.value = true;
54
+ try {
55
+ await core.invoke("desktop_set_project_link", { projectId: String(id), path: null });
56
+ link.value = null;
57
+ } catch (error) {
58
+ toast.add({ title: "Could not unlink the folder", description: errorMessage(error), color: "error" });
59
+ } finally {
60
+ busy.value = false;
61
+ }
62
+ }
63
+ return { available, link, busy, refresh, pickAndLink, unlink };
64
+ }
65
+
66
+ export { useDesktopProjectLink as u };
67
+ //# sourceMappingURL=useDesktopProjectLink-WwLte59P.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDesktopProjectLink-WwLte59P.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/useDesktopProjectLink-WwLte59P.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
@@ -1,9 +1,9 @@
1
1
  import { computed, toValue } from 'vue';
2
- import { aI as unrefElement } from './server.mjs';
2
+ import { aK as unrefElement } from './server.mjs';
3
3
 
4
4
  function useFormControl(el) {
5
5
  return computed(() => toValue(el) ? Boolean(unrefElement(el)?.closest("form")) : true);
6
6
  }
7
7
 
8
8
  export { useFormControl as u };
9
- //# sourceMappingURL=useFormControl-CZ9So7iX.mjs.map
9
+ //# sourceMappingURL=useFormControl-8skMOTIf.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormControl-8skMOTIf.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/useFormControl-8skMOTIf.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
@@ -1,4 +1,4 @@
1
- import { L as useLocalStorage, j as useToast, J as useState } from './server.mjs';
1
+ import { N as useLocalStorage, j as useToast, J as useState } from './server.mjs';
2
2
  import { computed } from 'vue';
3
3
 
4
4
  const MAX_CMD_LENGTH = 4096;
@@ -182,4 +182,4 @@ function useOpenInIde() {
182
182
  }
183
183
 
184
184
  export { IDE_METHOD_LABELS as I, JETBRAINS_PRODUCTS as J, VSCODE_SCHEME_LABELS as V, buildRetryCommand as b, escapeGrep as e, toPosixPath as t, useOpenInIde as u };
185
- //# sourceMappingURL=useOpenInIde--6Me0WlL.mjs.map
185
+ //# sourceMappingURL=useOpenInIde-D74FmDNg.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOpenInIde-D74FmDNg.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/useOpenInIde-D74FmDNg.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}
@@ -1,15 +1,15 @@
1
- import { _ as _sfc_main$1 } from './Alert-DAb8nKVs.mjs';
2
- import { _ as __nuxt_component_11 } from './SectionCard-C753B3Yo.mjs';
1
+ import { _ as _sfc_main$1 } from './Alert-He-UxEt6.mjs';
2
+ import { _ as __nuxt_component_11 } from './SectionCard-DHAFvJxm.mjs';
3
3
  import { j as useToast, x as useAuth, m as _sfc_main$k, n as _sfc_main$7, o as _sfc_main$p, s as __nuxt_component_7, r as useRuntimeConfig } from './server.mjs';
4
4
  import { _ as __nuxt_component_3 } from './TableScroller-DMcdCVrH.mjs';
5
- import { _ as _sfc_main$2 } from './Table-CfDVAuUJ.mjs';
5
+ import { _ as _sfc_main$2 } from './Table-qZdnm9t2.mjs';
6
6
  import { p as prettyDateFormat, w as createSortHeader } from './index-ByWTzqF6.mjs';
7
7
  import { defineComponent, withAsyncContext, computed, ref, reactive, unref, withCtx, createVNode, openBlock, createBlock, createCommentVNode, toDisplayString, createTextVNode, useSSRContext } from 'vue';
8
8
  import { ssrRenderComponent, ssrInterpolate } from 'vue/server-renderer';
9
9
  import { z } from 'zod';
10
- import { u as useFetch, a as useCopy } from './fetch-Be-j7hF1.mjs';
10
+ import { u as useFetch, a as useCopy } from './fetch-tkz5_OA-.mjs';
11
11
  import './Card--Ike7sYc.mjs';
12
- import './HelpHint-C5Ru8BCc.mjs';
12
+ import './HelpHint-plioHKA0.mjs';
13
13
  import './help-content-C876a9WD.mjs';
14
14
  import '../nitro/nitro.mjs';
15
15
  import 'node:crypto';
@@ -744,4 +744,4 @@ _sfc_main.setup = (props, ctx) => {
744
744
  };
745
745
 
746
746
  export { _sfc_main as default };
747
- //# sourceMappingURL=users-IdmY9JZV.mjs.map
747
+ //# sourceMappingURL=users-C9bjOBde.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users-C9bjOBde.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/users-C9bjOBde.js"],"names":["_sfc_main$3","_sfc_main$5","_sfc_main$4"],"mappings":"","x_google_ignoreList":[0]}