@piwitests/server 0.19.0 → 0.20.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 (418) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{eptP4pGv.js → -f7BAm1H.js} +1 -1
  3. package/.output/public/_nuxt/{Bti38m-M.js → 4gYNA-d4.js} +1 -1
  4. package/.output/public/_nuxt/{CHEFCN8Q.js → 5A6ITZXj.js} +1 -1
  5. package/.output/public/_nuxt/{DoUy4UHi.js → 8PUUncmO.js} +2 -2
  6. package/.output/public/_nuxt/{DS636elg.js → A1pj0VnG.js} +1 -1
  7. package/.output/public/_nuxt/{B9WhzpKO.js → AbmKWFQQ.js} +1 -1
  8. package/.output/public/_nuxt/{rWNTSFD6.js → B3obW6cw.js} +3 -3
  9. package/.output/public/_nuxt/{Bu2aaVIY.js → B7FTvFWq.js} +1 -1
  10. package/.output/public/_nuxt/{CpjgB2aY.js → B8zkOmwo.js} +1 -1
  11. package/.output/public/_nuxt/B96M2gdj.js +1 -0
  12. package/.output/public/_nuxt/{FUXhyidq.js → B99fbi73.js} +1 -1
  13. package/.output/public/_nuxt/{DslPMqfa.js → B9OLmp0f.js} +1 -1
  14. package/.output/public/_nuxt/{BccXfBfI.js → BKkF4pPD.js} +1 -1
  15. package/.output/public/_nuxt/{DP8hfJ9h.js → BT3wGCTI.js} +1 -1
  16. package/.output/public/_nuxt/{B3B9Ii2A.js → BUa0V0Ly.js} +1 -1
  17. package/.output/public/_nuxt/{B3HO8kuh.js → BUkim3TM.js} +1 -1
  18. package/.output/public/_nuxt/{BVaxh6Nl.js → BVc14Ncz.js} +3 -3
  19. package/.output/public/_nuxt/{DW0xl3I6.js → BY0HxR3t.js} +1 -1
  20. package/.output/public/_nuxt/B_xAMWQS.js +2 -0
  21. package/.output/public/_nuxt/{C2_3mdPC.js → BdQoBaOv.js} +1 -1
  22. package/.output/public/_nuxt/{DT53RWbC.js → BdfhYr-u.js} +1 -1
  23. package/.output/public/_nuxt/{CtQBsNUb.js → BgRu_3tT.js} +1 -1
  24. package/.output/public/_nuxt/{SlIRLREZ.js → BiO7RBWb.js} +1 -1
  25. package/.output/public/_nuxt/BicAJ6U8.js +1 -0
  26. package/.output/public/_nuxt/{C7P1UCO2.js → Bm62iDV5.js} +1 -1
  27. package/.output/public/_nuxt/{CZfMdzfk.js → BmUfSNMV.js} +1 -1
  28. package/.output/public/_nuxt/{tvgqrYDd.js → Bnxf8nbZ.js} +1 -1
  29. package/.output/public/_nuxt/{ndShiWE8.js → Bow4tTR0.js} +1 -1
  30. package/.output/public/_nuxt/{D0HNloZ9.js → BrQEE053.js} +1 -1
  31. package/.output/public/_nuxt/{CV9-fTmY.js → BzRRzmwm.js} +1 -1
  32. package/.output/public/_nuxt/{DprVVyUQ.js → C0_yH0N7.js} +1 -1
  33. package/.output/public/_nuxt/{DLSrtpsA.js → C1gTN4Q8.js} +1 -1
  34. package/.output/public/_nuxt/{ClOqkAcc.js → C2hkrSey.js} +1 -1
  35. package/.output/public/_nuxt/{ZFiQCMUB.js → C8e1EbJI.js} +1 -1
  36. package/.output/public/_nuxt/{nv9-6vBK.js → CA9B2HE5.js} +1 -1
  37. package/.output/public/_nuxt/{KnfsST6Y.js → CAAwCT7H.js} +1 -1
  38. package/.output/public/_nuxt/{ybDYeNxd.js → CAvY22RE.js} +1 -1
  39. package/.output/public/_nuxt/{C5iG7O4O.js → CEfS4-oS.js} +1 -1
  40. package/.output/public/_nuxt/{Bp5ELvx9.js → CIoSMkpp.js} +1 -1
  41. package/.output/public/_nuxt/{C95YAaJq.js → CIrFl3MW.js} +1 -1
  42. package/.output/public/_nuxt/{DiOLdHBC.js → CJFtzlQ4.js} +1 -1
  43. package/.output/public/_nuxt/{BX9ZXe98.js → CNyV9YpI.js} +1 -1
  44. package/.output/public/_nuxt/CSJ-eOQM.js +1 -0
  45. package/.output/public/_nuxt/{fVcG504p.js → CTU1mrhq.js} +1 -1
  46. package/.output/public/_nuxt/{279D2RYp.js → CXEH9OPk.js} +1 -1
  47. package/.output/public/_nuxt/CahpB9Z2.js +5 -0
  48. package/.output/public/_nuxt/{B7NBP1C-.js → Cbh--1MW.js} +1 -1
  49. package/.output/public/_nuxt/CeG9pBAD.js +1 -0
  50. package/.output/public/_nuxt/{D55D4EYo.js → CeW8v31b.js} +1 -1
  51. package/.output/public/_nuxt/{BuMC3WjZ.js → CjPfj7ya.js} +1 -1
  52. package/.output/public/_nuxt/{HXerICAi.js → Cnsmicv2.js} +1 -1
  53. package/.output/public/_nuxt/{DgE2YE3R.js → CsLojMwR.js} +1 -1
  54. package/.output/public/_nuxt/{C9_jrmk9.js → Cus22Ud3.js} +2 -2
  55. package/.output/public/_nuxt/{DX-MDGb3.js → CwGWJbiy.js} +1 -1
  56. package/.output/public/_nuxt/{BJ0XQElc.js → Cx6gc2VW.js} +1 -1
  57. package/.output/public/_nuxt/{cHAnlQbv.js → CxyAzHr3.js} +1 -1
  58. package/.output/public/_nuxt/{BxCKKeYs.js → CzAPFPpL.js} +1 -1
  59. package/.output/public/_nuxt/{B33iXw77.js → D--H4jLI.js} +1 -1
  60. package/.output/public/_nuxt/D1POo6S4.js +10 -0
  61. package/.output/public/_nuxt/{BDicZ1gQ.js → D5tke0B5.js} +1 -1
  62. package/.output/public/_nuxt/D8nkF-OO.js +3 -0
  63. package/.output/public/_nuxt/{CzGyac8q.js → DA25RkyK.js} +1 -1
  64. package/.output/public/_nuxt/{CUtJobDm.js → DIB-5fUJ.js} +1 -1
  65. package/.output/public/_nuxt/{BPRffDuo.js → DJmoLeVt.js} +1 -1
  66. package/.output/public/_nuxt/{DGfAxLHV.js → DJxlKFGb.js} +1 -1
  67. package/.output/public/_nuxt/{81InBX9v.js → DMec-OLo.js} +1 -1
  68. package/.output/public/_nuxt/{CK_2LZBS.js → DPCxhHri.js} +1 -1
  69. package/.output/public/_nuxt/{Bn0YQDyy.js → DSqHUrvO.js} +1 -1
  70. package/.output/public/_nuxt/{BqV0l12c.js → DabzhQB1.js} +1 -1
  71. package/.output/public/_nuxt/{BfTuX0wq.js → DdwHkKfV.js} +1 -1
  72. package/.output/public/_nuxt/{C-elpgyr.js → DeY2JkR2.js} +1 -1
  73. package/.output/public/_nuxt/{DEFEpYzn.js → DfgOx_ou.js} +1 -1
  74. package/.output/public/_nuxt/DmkUdSS4.js +1 -0
  75. package/.output/public/_nuxt/{Ar3IelOY.js → DoIREDVb.js} +1 -1
  76. package/.output/public/_nuxt/DpZ1r1HA.js +1 -0
  77. package/.output/public/_nuxt/{Jo8kRmHz.js → Dpd16JVI.js} +1 -1
  78. package/.output/public/_nuxt/{BSIxhGsh.js → DqcKngf3.js} +1 -1
  79. package/.output/public/_nuxt/{BMvCSA6h.js → DrfE8IY0.js} +1 -1
  80. package/.output/public/_nuxt/{eaVkJRSa.js → DsesNydr.js} +1 -1
  81. package/.output/public/_nuxt/{zQyPuvV1.js → DtHJgCS8.js} +1 -1
  82. package/.output/public/_nuxt/Dtd4rC58.js +9 -0
  83. package/.output/public/_nuxt/{NQikbhmK.js → Du2W7Jne.js} +37 -36
  84. package/.output/public/_nuxt/{CDk0q2hV.js → DuwtTfO8.js} +1 -1
  85. package/.output/public/_nuxt/{B44A4LSJ.js → Dy-TJ0Mt.js} +1 -1
  86. package/.output/public/_nuxt/{-09h6CA9.js → Dy86h-7P.js} +1 -1
  87. package/.output/public/_nuxt/{Cdff9XNh.js → Dyeqn3aG.js} +1 -1
  88. package/.output/public/_nuxt/{Dnpkl-1q.js → FaFoMVKo.js} +1 -1
  89. package/.output/public/_nuxt/GPNI1ffD.js +4 -0
  90. package/.output/public/_nuxt/{BCMuIgP5.js → H94BMf3L.js} +1 -1
  91. package/.output/public/_nuxt/HPNQD6v3.js +1 -0
  92. package/.output/public/_nuxt/HXadJrHu.js +2 -0
  93. package/.output/public/_nuxt/{YVN7WG7q.js → KyA_4Ks-.js} +1 -1
  94. package/.output/public/_nuxt/{CYsTqbBS.js → L3kAWB2a.js} +1 -1
  95. package/.output/public/_nuxt/{Dk9fwOCm.js → McL25vkx.js} +2 -2
  96. package/.output/public/_nuxt/Nn93e_Mz.js +1 -0
  97. package/.output/public/_nuxt/UdR3DBPS.js +1 -0
  98. package/.output/public/_nuxt/{SfMRXW25.js → Und3xXFc.js} +1 -1
  99. package/.output/public/_nuxt/_mj6CfPa.js +1 -0
  100. package/.output/public/_nuxt/{BPQoBGg5.js → b-GYfcrQ.js} +1 -1
  101. package/.output/public/_nuxt/{DHDtnj7p.js → bLcjFslv.js} +1 -1
  102. package/.output/public/_nuxt/builds/latest.json +1 -1
  103. package/.output/public/_nuxt/builds/meta/e659b3e1-0e61-4971-940e-10063f9f4763.json +1 -0
  104. package/.output/public/_nuxt/entry.DmptwB51.css +1 -0
  105. package/.output/public/_nuxt/{y17lMTFy.js → hC_z4G8p.js} +1 -1
  106. package/.output/public/_nuxt/{CTxDO9fB.js → hNh4CIL0.js} +1 -1
  107. package/.output/public/_nuxt/{CGNkHojN.js → l5WKbU4h.js} +1 -1
  108. package/.output/public/_nuxt/{DcmZRa_F.js → oAClCn_h.js} +1 -1
  109. package/.output/public/_nuxt/{IvQlbZk6.js → pQqGiNch.js} +1 -1
  110. package/.output/public/_nuxt/ryMzSDUj.js +2 -0
  111. package/.output/server/chunks/_/collect.mjs +1 -1
  112. package/.output/server/chunks/_/markers.mjs +1 -1
  113. package/.output/server/chunks/_/quarantine.mjs +1 -1
  114. package/.output/server/chunks/_/users.mjs +1 -1
  115. package/.output/server/chunks/build/{BrowserBadge-D33lqUcj.mjs → BrowserBadge-MFvBwxmD.mjs} +66 -6
  116. package/.output/server/chunks/build/BrowserBadge-MFvBwxmD.mjs.map +1 -0
  117. package/.output/server/chunks/build/{Checkbox-DvUBGagc.mjs → Checkbox-4Q5d0fa0.mjs} +4 -4
  118. package/.output/server/chunks/build/Checkbox-4Q5d0fa0.mjs.map +1 -0
  119. package/.output/server/chunks/build/CiEnvCard-DB5DvBh1.mjs +1492 -0
  120. package/.output/server/chunks/build/CiEnvCard-DB5DvBh1.mjs.map +1 -0
  121. package/.output/server/chunks/build/CodeBlock-BgE-NSmE.mjs +1 -1
  122. package/.output/server/chunks/build/DashboardSidebarToggle-DCTnHiIv.mjs +1 -1
  123. package/.output/server/chunks/build/{DiagnosisPanel-B646dK4p.mjs → DiagnosisPanel-CALyEmcJ.mjs} +3 -3
  124. package/.output/server/chunks/build/DiagnosisPanel-CALyEmcJ.mjs.map +1 -0
  125. package/.output/server/chunks/build/{EmptyState-Dtlab7S9.mjs → EmptyState-DC2q_7TD.mjs} +3 -3
  126. package/.output/server/chunks/build/EmptyState-DC2q_7TD.mjs.map +1 -0
  127. package/.output/server/chunks/build/{EntityLinks-D3fp57pR.mjs → EntityLinks-BBHWssHH.mjs} +4 -4
  128. package/.output/server/chunks/build/EntityLinks-BBHWssHH.mjs.map +1 -0
  129. package/.output/server/chunks/build/{EnvManagedBadge-Bg3FSiU1.mjs → EnvManagedBadge-UwD2b9v2.mjs} +2 -2
  130. package/.output/server/chunks/build/EnvManagedBadge-UwD2b9v2.mjs.map +1 -0
  131. package/.output/server/chunks/build/{Modal-Ck2XLt8d.mjs → Modal-pSDlXzT3.mjs} +2 -2
  132. package/.output/server/chunks/build/Modal-pSDlXzT3.mjs.map +1 -0
  133. package/.output/server/chunks/build/{OpenInIdeLink-C4MXA8ya.mjs → OpenInIdeLink-CQWKKChd.mjs} +3 -3
  134. package/.output/server/chunks/build/{OpenInIdeLink-C4MXA8ya.mjs.map → OpenInIdeLink-CQWKKChd.mjs.map} +1 -1
  135. package/.output/server/chunks/build/{ProjectTestCasesTable-CxfQ5wtN.mjs → ProjectTestCasesTable-Bo61P5K1.mjs} +8 -8
  136. package/.output/server/chunks/build/{ProjectTestCasesTable-CxfQ5wtN.mjs.map → ProjectTestCasesTable-Bo61P5K1.mjs.map} +1 -1
  137. package/.output/server/chunks/build/{RovingFocusItem-BJSzTBjy.mjs → RovingFocusItem--OEHI2P3.mjs} +2 -2
  138. package/.output/server/chunks/build/RovingFocusItem--OEHI2P3.mjs.map +1 -0
  139. package/.output/server/chunks/build/RunReports-DFLv51TX.mjs +1 -1
  140. package/.output/server/chunks/build/{Select-CUqj50wi.mjs → Select-5DK9frQ7.mjs} +3 -3
  141. package/.output/server/chunks/build/Select-5DK9frQ7.mjs.map +1 -0
  142. package/.output/server/chunks/build/{SelectMenu-Db7osY7J.mjs → SelectMenu-D-2FSqBU.mjs} +939 -7
  143. package/.output/server/chunks/build/{SelectMenu-Db7osY7J.mjs.map → SelectMenu-D-2FSqBU.mjs.map} +1 -1
  144. package/.output/server/chunks/build/{SettingsField-D6iEYbEc.mjs → SettingsField-BZfx4ma1.mjs} +2 -2
  145. package/.output/server/chunks/build/SettingsField-BZfx4ma1.mjs.map +1 -0
  146. package/.output/server/chunks/build/{Slideover-DgCa80mf.mjs → Slideover-D270EZZD.mjs} +3 -3
  147. package/.output/server/chunks/build/Slideover-D270EZZD.mjs.map +1 -0
  148. package/.output/server/chunks/build/{Switch-CgUioOYB.mjs → Switch-B5Fp8ULt.mjs} +2 -2
  149. package/.output/server/chunks/build/Switch-B5Fp8ULt.mjs.map +1 -0
  150. package/.output/server/chunks/build/Table-BRk04Hd2.mjs +1 -1
  151. package/.output/server/chunks/build/{Tabs-Bbsg9wag.mjs → Tabs-BkSOnbaB.mjs} +2 -2
  152. package/.output/server/chunks/build/Tabs-BkSOnbaB.mjs.map +1 -0
  153. package/.output/server/chunks/build/{TestCaseHistoryChart-nMLPhdvD.mjs → TestCaseHistoryChart-CSi64vVA.mjs} +5 -5
  154. package/.output/server/chunks/build/TestCaseHistoryChart-CSi64vVA.mjs.map +1 -0
  155. package/.output/server/chunks/build/{TestStatusBar-j6h2Jp6A.mjs → TestStatusBar-DX3EhlyP.mjs} +2 -2
  156. package/.output/server/chunks/build/TestStatusBar-DX3EhlyP.mjs.map +1 -0
  157. package/.output/server/chunks/build/{Tooltip-BOazooWP.mjs → Tooltip-Dv4htNP6.mjs} +3 -3
  158. package/.output/server/chunks/build/Tooltip-Dv4htNP6.mjs.map +1 -0
  159. package/.output/server/chunks/build/{VisuallyHiddenInput-D6kBJxVd.mjs → VisuallyHiddenInput-BHvzNumK.mjs} +2 -2
  160. package/.output/server/chunks/build/VisuallyHiddenInput-BHvzNumK.mjs.map +1 -0
  161. package/.output/server/chunks/build/{_id_-z5N6HPyC.mjs → _id_-BdG37K7s.mjs} +12 -12
  162. package/.output/server/chunks/build/_id_-BdG37K7s.mjs.map +1 -0
  163. package/.output/server/chunks/build/{_id_-BHh65pfg.mjs → _id_-BdJs7BJZ.mjs} +57 -33
  164. package/.output/server/chunks/build/{_id_-BHh65pfg.mjs.map → _id_-BdJs7BJZ.mjs.map} +1 -1
  165. package/.output/server/chunks/build/{_id_-B78ky13D.mjs → _id_-BxA6IgWr.mjs} +96 -73
  166. package/.output/server/chunks/build/_id_-BxA6IgWr.mjs.map +1 -0
  167. package/.output/server/chunks/build/{_id_-Rzkqx55x.mjs → _id_-C_uSBiyU.mjs} +22 -23
  168. package/.output/server/chunks/build/{_id_-Rzkqx55x.mjs.map → _id_-C_uSBiyU.mjs.map} +1 -1
  169. package/.output/server/chunks/build/{about-CvSP73Ug.mjs → about-BE0UV-8-.mjs} +365 -18
  170. package/.output/server/chunks/build/about-BE0UV-8-.mjs.map +1 -0
  171. package/.output/server/chunks/build/{ai-B4VJ9K1K.mjs → ai-Cn05ch0u.mjs} +9 -9
  172. package/.output/server/chunks/build/{ai-B4VJ9K1K.mjs.map → ai-Cn05ch0u.mjs.map} +1 -1
  173. package/.output/server/chunks/build/{analytics-CJPC6t4L.mjs → analytics-Bo_B_jko.mjs} +20 -21
  174. package/.output/server/chunks/build/analytics-Bo_B_jko.mjs.map +1 -0
  175. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  176. package/.output/server/chunks/build/{default-zvbFgDJG.mjs → default-CbNHaFsy.mjs} +603 -71
  177. package/.output/server/chunks/build/default-CbNHaFsy.mjs.map +1 -0
  178. package/.output/server/chunks/build/{docs-DyuVEgtB.mjs → docs-B_llWMxx.mjs} +6 -6
  179. package/.output/server/chunks/build/{docs-DyuVEgtB.mjs.map → docs-B_llWMxx.mjs.map} +1 -1
  180. package/.output/server/chunks/build/{edit-CFR5g2Qf.mjs → edit-J0asTFg8.mjs} +4 -5
  181. package/.output/server/chunks/build/edit-J0asTFg8.mjs.map +1 -0
  182. package/.output/server/chunks/build/fetch-B4FwBOzu.mjs +1 -1
  183. package/.output/server/chunks/build/{import-CZo3djDi.mjs → import-CS9oylTN.mjs} +4 -4
  184. package/.output/server/chunks/build/import-CS9oylTN.mjs.map +1 -0
  185. package/.output/server/chunks/build/{index-Stqw0dEI.mjs → index-DE45ycdZ.mjs} +9 -9
  186. package/.output/server/chunks/build/index-DE45ycdZ.mjs.map +1 -0
  187. package/.output/server/chunks/build/{index-gCw_y4ZJ.mjs → index-e9skCi-V.mjs} +10 -11
  188. package/.output/server/chunks/build/{index-gCw_y4ZJ.mjs.map → index-e9skCi-V.mjs.map} +1 -1
  189. package/.output/server/chunks/build/{index-D7fe97l3.mjs → index-hGHlmyxj.mjs} +299 -91
  190. package/.output/server/chunks/build/index-hGHlmyxj.mjs.map +1 -0
  191. package/.output/server/chunks/build/isValueEqualOrExist-D2qw9YEr.mjs +1 -1
  192. package/.output/server/chunks/build/login-Da4u1IlW.mjs +1 -1
  193. package/.output/server/chunks/build/{mcp-B3IUvRgD.mjs → mcp-uhVCCwQM.mjs} +339 -10
  194. package/.output/server/chunks/build/mcp-uhVCCwQM.mjs.map +1 -0
  195. package/.output/server/chunks/build/{notifications-abDv0id8.mjs → notifications-fx_qnKGA.mjs} +4 -4
  196. package/.output/server/chunks/build/notifications-fx_qnKGA.mjs.map +1 -0
  197. package/.output/server/chunks/build/{pr-feedback-DjZID6q-.mjs → pr-feedback-X6-70iF0.mjs} +3 -3
  198. package/.output/server/chunks/build/pr-feedback-X6-70iF0.mjs.map +1 -0
  199. package/.output/server/chunks/build/server.mjs +24 -24
  200. package/.output/server/chunks/build/{settings-Du7YqF8i.mjs → settings-CCYe7rsc.mjs} +3 -3
  201. package/.output/server/chunks/build/settings-CCYe7rsc.mjs.map +1 -0
  202. package/.output/server/chunks/build/{storage-B4vzxd8G.mjs → storage-CJEmviCD.mjs} +5 -5
  203. package/.output/server/chunks/build/storage-CJEmviCD.mjs.map +1 -0
  204. package/.output/server/chunks/build/{test-cases-DUvaO1He.mjs → test-cases-thBbAykw.mjs} +9 -9
  205. package/.output/server/chunks/build/test-cases-thBbAykw.mjs.map +1 -0
  206. package/.output/server/chunks/build/{useAiStatus-CWvIo32Q.mjs → useAiStatus-CxjMmDDY.mjs} +8 -8
  207. package/.output/server/chunks/build/useAiStatus-CxjMmDDY.mjs.map +1 -0
  208. package/.output/server/chunks/build/{useCopyRich-BemRsKgv.mjs → useCopyRich-RJKhWoyj.mjs} +74 -44
  209. package/.output/server/chunks/build/useCopyRich-RJKhWoyj.mjs.map +1 -0
  210. package/.output/server/chunks/build/{useDesktopDownload-D49JRQSw.mjs → useDesktopDownload-BepjqxOt.mjs} +2 -2
  211. package/.output/server/chunks/build/useDesktopDownload-BepjqxOt.mjs.map +1 -0
  212. package/.output/server/chunks/build/{useOpenInIde-4GFf-kdi.mjs → useOpenInIde-BbTnPhFA.mjs} +2 -2
  213. package/.output/server/chunks/build/useOpenInIde-BbTnPhFA.mjs.map +1 -0
  214. package/.output/server/chunks/build/{useSettingsNav-C3O866KC.mjs → useSettingsNav-DnQKacz8.mjs} +4 -4
  215. package/.output/server/chunks/build/useSettingsNav-DnQKacz8.mjs.map +1 -0
  216. package/.output/server/chunks/build/useTauri-Kf3HE_42.mjs +11 -0
  217. package/.output/server/chunks/build/useTauri-Kf3HE_42.mjs.map +1 -0
  218. package/.output/server/chunks/build/{wasted-time-lYkx5YO4.mjs → wasted-time-BNTPIyrC.mjs} +4 -4
  219. package/.output/server/chunks/build/wasted-time-BNTPIyrC.mjs.map +1 -0
  220. package/.output/server/chunks/nitro/nitro.mjs +3471 -2802
  221. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  222. package/.output/server/chunks/routes/__piwi/session.get.mjs +1 -1
  223. package/.output/server/chunks/routes/api/desktop/import-local.post.mjs +88 -0
  224. package/.output/server/chunks/routes/api/desktop/import-local.post.mjs.map +1 -0
  225. package/.output/server/chunks/routes/api/failure-clusters/_id/base-commit.patch.mjs +1 -1
  226. package/.output/server/chunks/routes/api/failure-clusters/_id/branches.get.mjs +1 -1
  227. package/.output/server/chunks/routes/api/failure-clusters/_id/commit-diff.get.mjs +1 -1
  228. package/.output/server/chunks/routes/api/failure-clusters/_id/commits.get.mjs +1 -1
  229. package/.output/server/chunks/routes/api/failure-clusters/_id/context.get.mjs +1 -1
  230. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose/stream.post.mjs +1 -1
  231. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnose.post.mjs +1 -1
  232. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnoses.get.mjs +1 -1
  233. package/.output/server/chunks/routes/api/failure-clusters/_id/diagnosis.get.mjs +1 -1
  234. package/.output/server/chunks/routes/api/failure-clusters/_id/export.get.mjs +1 -1
  235. package/.output/server/chunks/routes/api/failure-clusters/_id/extract-cases.post.mjs +1 -1
  236. package/.output/server/chunks/routes/api/failure-clusters/_id/fix-plan.get.mjs +1 -1
  237. package/.output/server/chunks/routes/api/failure-clusters/_id/status.patch.mjs +1 -1
  238. package/.output/server/chunks/routes/api/failure-clusters/_id_.get.mjs +1 -1
  239. package/.output/server/chunks/routes/api/failure-diagnoses/_id/feedback.patch.mjs +1 -1
  240. package/.output/server/chunks/routes/api/files/_...path_.get.mjs +1 -1
  241. package/.output/server/chunks/routes/api/health.get.mjs +1 -1
  242. package/.output/server/chunks/routes/api/index.get2.mjs +1 -1
  243. package/.output/server/chunks/routes/api/index.get3.mjs +1 -1
  244. package/.output/server/chunks/routes/api/index.get4.mjs +1 -1
  245. package/.output/server/chunks/routes/api/index.post2.mjs +1 -1
  246. package/.output/server/chunks/routes/api/index.post3.mjs +1 -1
  247. package/.output/server/chunks/routes/api/index.post4.mjs +1 -1
  248. package/.output/server/chunks/routes/api/index.post5.mjs +1 -1
  249. package/.output/server/chunks/routes/api/links/_id/refresh.post.mjs +1 -1
  250. package/.output/server/chunks/routes/api/links/_id_.delete.mjs +1 -1
  251. package/.output/server/chunks/routes/api/links/_id_.patch.mjs +1 -1
  252. package/.output/server/chunks/routes/api/markers/_id_.delete.mjs +1 -1
  253. package/.output/server/chunks/routes/api/markers/_id_.put.mjs +1 -1
  254. package/.output/server/chunks/routes/api/notifications/stream.get.mjs +1 -1
  255. package/.output/server/chunks/routes/api/projects/_id/cluster-merge-suggestions.get.mjs +1 -1
  256. package/.output/server/chunks/routes/api/projects/_id/failure-clusters.get.mjs +1 -1
  257. package/.output/server/chunks/routes/api/projects/_id/flaky-classify.post.mjs +1 -1
  258. package/.output/server/chunks/routes/api/projects/_id/flaky-tests.get.mjs +1 -1
  259. package/.output/server/chunks/routes/api/projects/_id/latest-run.get.mjs +1 -1
  260. package/.output/server/chunks/routes/api/projects/_id/markers.get.mjs +1 -1
  261. package/.output/server/chunks/routes/api/projects/_id/markers.post.mjs +1 -1
  262. package/.output/server/chunks/routes/api/projects/_id/members.get.mjs +1 -1
  263. package/.output/server/chunks/routes/api/projects/_id/members.put.mjs +1 -1
  264. package/.output/server/chunks/routes/api/projects/_id/performance.get.mjs +1 -1
  265. package/.output/server/chunks/routes/api/projects/_id/quarantine/_testCaseId_.delete.mjs +1 -1
  266. package/.output/server/chunks/routes/api/projects/_id/quarantine.get.mjs +1 -1
  267. package/.output/server/chunks/routes/api/projects/_id/quarantine.post.mjs +1 -1
  268. package/.output/server/chunks/routes/api/projects/_id/slow-tests.get.mjs +1 -1
  269. package/.output/server/chunks/routes/api/projects/_id/spec-health.get.mjs +1 -1
  270. package/.output/server/chunks/routes/api/projects/_id/test-cases.get.mjs +1 -1
  271. package/.output/server/chunks/routes/api/projects/_id/timeout-opportunities.get.mjs +1 -1
  272. package/.output/server/chunks/routes/api/projects/_id_.delete.mjs +1 -1
  273. package/.output/server/chunks/routes/api/projects/_id_.get.mjs +1 -1
  274. package/.output/server/chunks/routes/api/projects/_id_.put.mjs +1 -1
  275. package/.output/server/chunks/routes/api/projects/menu.get.mjs +1 -1
  276. package/.output/server/chunks/routes/api/projects/overview.get.mjs +1 -1
  277. package/.output/server/chunks/routes/api/projects.get.mjs +1 -1
  278. package/.output/server/chunks/routes/api/search.get.mjs +1 -1
  279. package/.output/server/chunks/routes/api/settings/ai/limits.get.mjs +1 -1
  280. package/.output/server/chunks/routes/api/settings/ai/limits.put.mjs +1 -1
  281. package/.output/server/chunks/routes/api/settings/ai/test.post.mjs +1 -1
  282. package/.output/server/chunks/routes/api/settings/ai/usage.get.mjs +1 -1
  283. package/.output/server/chunks/routes/api/settings/ai.get.mjs +1 -1
  284. package/.output/server/chunks/routes/api/settings/ai.put.mjs +1 -1
  285. package/.output/server/chunks/routes/api/settings/pr-feedback.get.mjs +1 -1
  286. package/.output/server/chunks/routes/api/settings/pr-feedback.put.mjs +1 -1
  287. package/.output/server/chunks/routes/api/settings/smtp.get.mjs +1 -1
  288. package/.output/server/chunks/routes/api/settings/timeout-hygiene.get.mjs +1 -1
  289. package/.output/server/chunks/routes/api/settings/timeout-hygiene.put.mjs +1 -1
  290. package/.output/server/chunks/routes/api/settings/wasted-waits.get.mjs +1 -1
  291. package/.output/server/chunks/routes/api/settings/wasted-waits.put.mjs +1 -1
  292. package/.output/server/chunks/routes/api/stream.get.mjs +1 -1
  293. package/.output/server/chunks/routes/api/subscriptions/_id_.delete.mjs +1 -1
  294. package/.output/server/chunks/routes/api/subscriptions/_id_.patch.mjs +1 -1
  295. package/.output/server/chunks/routes/api/tags/_id_.delete.mjs +1 -1
  296. package/.output/server/chunks/routes/api/tags/_id_.put.mjs +1 -1
  297. package/.output/server/chunks/routes/api/test-cases/_id/history.get.mjs +1 -1
  298. package/.output/server/chunks/routes/api/test-cases/_id/stability-trend.get.mjs +1 -1
  299. package/.output/server/chunks/routes/api/test-cases/_id_.get.mjs +1 -1
  300. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnose.post.mjs +1 -1
  301. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis-context.get.mjs +1 -1
  302. package/.output/server/chunks/routes/api/test-run-cases/_id/diagnosis.get.mjs +1 -1
  303. package/.output/server/chunks/routes/api/test-run-cases/_id/export.get.mjs +1 -1
  304. package/.output/server/chunks/routes/api/test-run-cases/_id/traces.get.mjs +1 -1
  305. package/.output/server/chunks/routes/api/test-run-cases/_id_.get.mjs +1 -1
  306. package/.output/server/chunks/routes/api/test-runs/_id/begin.post.mjs +1 -1
  307. package/.output/server/chunks/routes/api/test-runs/_id/case-files.post.mjs +1 -1
  308. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs +5 -3
  309. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/dom-snapshot.get.mjs.map +1 -1
  310. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/environment-diff.get.mjs +1 -1
  311. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-healing.get.mjs +1 -1
  312. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/locator-pick.post.mjs +1 -1
  313. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network-body.get.mjs +1 -1
  314. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-network.get.mjs +1 -1
  315. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/trace-stacks.get.mjs +1 -1
  316. package/.output/server/chunks/routes/api/test-runs/_id/cases/_caseId/visual-diff.get.mjs +1 -1
  317. package/.output/server/chunks/routes/api/test-runs/_id/events.post.mjs +1 -1
  318. package/.output/server/chunks/routes/api/test-runs/_id/failure-groups.get.mjs +1 -1
  319. package/.output/server/chunks/routes/api/test-runs/_id/finish.post.mjs +1 -1
  320. package/.output/server/chunks/routes/api/test-runs/_id/gate.post.mjs +1 -1
  321. package/.output/server/chunks/routes/api/test-runs/_id/heartbeat.post.mjs +1 -1
  322. package/.output/server/chunks/routes/api/test-runs/_id/insights.get.mjs +1 -1
  323. package/.output/server/chunks/routes/api/test-runs/_id/network-requests.get.mjs +1 -1
  324. package/.output/server/chunks/routes/api/test-runs/_id/regression-context.get.mjs +1 -1
  325. package/.output/server/chunks/routes/api/test-runs/_id/stream.get.mjs +1 -1
  326. package/.output/server/chunks/routes/api/test-runs/_id/summary.get.mjs +1 -1
  327. package/.output/server/chunks/routes/api/test-runs/_id_.delete.mjs +1 -1
  328. package/.output/server/chunks/routes/api/test-runs/_id_.get.mjs +1 -1
  329. package/.output/server/chunks/routes/api/test-runs/_id_.patch.mjs +1 -1
  330. package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs +1 -2
  331. package/.output/server/chunks/routes/api/test-runs/import/check.post.mjs.map +1 -1
  332. package/.output/server/chunks/routes/api/test-runs/import.post.mjs +4 -128
  333. package/.output/server/chunks/routes/api/test-runs/import.post.mjs.map +1 -1
  334. package/.output/server/chunks/routes/api/test-runs/recent.get.mjs +1 -1
  335. package/.output/server/chunks/routes/api/test-runs/setup.post.mjs +1 -1
  336. package/.output/server/chunks/routes/api/test-runs/start.post.mjs +1 -1
  337. package/.output/server/chunks/routes/api/test-runs/submit.post.mjs +1 -1
  338. package/.output/server/chunks/routes/api/test-runs/upload.post.mjs +1 -1
  339. package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs +3 -1
  340. package/.output/server/chunks/routes/api/tests/cleanup.delete.mjs.map +1 -1
  341. package/.output/server/chunks/routes/api/traces/check.post.mjs +1 -1
  342. package/.output/server/chunks/routes/api/users/_id/index.post.mjs +1 -1
  343. package/.output/server/chunks/routes/api/users/_id/invite.post.mjs +1 -1
  344. package/.output/server/chunks/routes/api/users/_id/projects.get.mjs +1 -1
  345. package/.output/server/chunks/routes/api/users/_id/projects.put.mjs +1 -1
  346. package/.output/server/chunks/routes/api/version.get.mjs +1 -1
  347. package/.output/server/chunks/routes/mcp.post.mjs +1 -1
  348. package/.output/server/chunks/routes/renderer.mjs +1 -1
  349. package/.output/server/index.mjs +1 -1
  350. package/.output/server/package.json +1 -1
  351. package/package.json +1 -1
  352. package/.output/public/_nuxt/BYDaY0Z7.js +0 -1
  353. package/.output/public/_nuxt/Bc8mOoz9.js +0 -4
  354. package/.output/public/_nuxt/BeLWlVK0.js +0 -1
  355. package/.output/public/_nuxt/BpUaY9nH.js +0 -2
  356. package/.output/public/_nuxt/CHNwfU1y.js +0 -1
  357. package/.output/public/_nuxt/CNFYDQmj.js +0 -1
  358. package/.output/public/_nuxt/CU5S9GCh.js +0 -1
  359. package/.output/public/_nuxt/CrwJAwhk.js +0 -1
  360. package/.output/public/_nuxt/CuSVQEkS.js +0 -3
  361. package/.output/public/_nuxt/CylWPruw.js +0 -1
  362. package/.output/public/_nuxt/DDDpCFpF.js +0 -1
  363. package/.output/public/_nuxt/DVDXJYq2.js +0 -2
  364. package/.output/public/_nuxt/Dgf5N4Ng.js +0 -1
  365. package/.output/public/_nuxt/DiZyJYez.js +0 -1
  366. package/.output/public/_nuxt/OSduWzyz.js +0 -1
  367. package/.output/public/_nuxt/WsxFTEFq.js +0 -10
  368. package/.output/public/_nuxt/aQgs_c6e.js +0 -9
  369. package/.output/public/_nuxt/builds/meta/ab473028-4b37-4884-b243-b8f6e5046e5e.json +0 -1
  370. package/.output/public/_nuxt/dYCKgE-3.js +0 -5
  371. package/.output/public/_nuxt/entry.CPhW41mh.css +0 -1
  372. package/.output/public/_nuxt/g26aVPxc.js +0 -1
  373. package/.output/server/chunks/_/import-runs.mjs +0 -351
  374. package/.output/server/chunks/_/import-runs.mjs.map +0 -1
  375. package/.output/server/chunks/build/BrowserBadge-D33lqUcj.mjs.map +0 -1
  376. package/.output/server/chunks/build/Checkbox-DvUBGagc.mjs.map +0 -1
  377. package/.output/server/chunks/build/CiEnvCard-CrjOM17n.mjs +0 -631
  378. package/.output/server/chunks/build/CiEnvCard-CrjOM17n.mjs.map +0 -1
  379. package/.output/server/chunks/build/DiagnosisPanel-B646dK4p.mjs.map +0 -1
  380. package/.output/server/chunks/build/EmptyState-Dtlab7S9.mjs.map +0 -1
  381. package/.output/server/chunks/build/EntityLinks-D3fp57pR.mjs.map +0 -1
  382. package/.output/server/chunks/build/EnvManagedBadge-Bg3FSiU1.mjs.map +0 -1
  383. package/.output/server/chunks/build/Modal-Ck2XLt8d.mjs.map +0 -1
  384. package/.output/server/chunks/build/RovingFocusItem-BJSzTBjy.mjs.map +0 -1
  385. package/.output/server/chunks/build/Select-CUqj50wi.mjs.map +0 -1
  386. package/.output/server/chunks/build/SettingsField-D6iEYbEc.mjs.map +0 -1
  387. package/.output/server/chunks/build/Slideover-DgCa80mf.mjs.map +0 -1
  388. package/.output/server/chunks/build/Switch-CgUioOYB.mjs.map +0 -1
  389. package/.output/server/chunks/build/Tabs-Bbsg9wag.mjs.map +0 -1
  390. package/.output/server/chunks/build/TestCaseHistoryChart-nMLPhdvD.mjs.map +0 -1
  391. package/.output/server/chunks/build/TestStatusBar-j6h2Jp6A.mjs.map +0 -1
  392. package/.output/server/chunks/build/Tooltip-BOazooWP.mjs.map +0 -1
  393. package/.output/server/chunks/build/VisuallyHiddenInput-D6kBJxVd.mjs.map +0 -1
  394. package/.output/server/chunks/build/_id_-B78ky13D.mjs.map +0 -1
  395. package/.output/server/chunks/build/_id_-z5N6HPyC.mjs.map +0 -1
  396. package/.output/server/chunks/build/about-CvSP73Ug.mjs.map +0 -1
  397. package/.output/server/chunks/build/analytics-CJPC6t4L.mjs.map +0 -1
  398. package/.output/server/chunks/build/default-zvbFgDJG.mjs.map +0 -1
  399. package/.output/server/chunks/build/edit-CFR5g2Qf.mjs.map +0 -1
  400. package/.output/server/chunks/build/import-CZo3djDi.mjs.map +0 -1
  401. package/.output/server/chunks/build/index-D7fe97l3.mjs.map +0 -1
  402. package/.output/server/chunks/build/index-Stqw0dEI.mjs.map +0 -1
  403. package/.output/server/chunks/build/mcp-B3IUvRgD.mjs.map +0 -1
  404. package/.output/server/chunks/build/notifications-abDv0id8.mjs.map +0 -1
  405. package/.output/server/chunks/build/pr-feedback-DjZID6q-.mjs.map +0 -1
  406. package/.output/server/chunks/build/settings-Du7YqF8i.mjs.map +0 -1
  407. package/.output/server/chunks/build/storage-B4vzxd8G.mjs.map +0 -1
  408. package/.output/server/chunks/build/test-cases-DUvaO1He.mjs.map +0 -1
  409. package/.output/server/chunks/build/useAiStatus-CWvIo32Q.mjs.map +0 -1
  410. package/.output/server/chunks/build/useCopyRich-BemRsKgv.mjs.map +0 -1
  411. package/.output/server/chunks/build/useDesktopDownload-D49JRQSw.mjs.map +0 -1
  412. package/.output/server/chunks/build/useOpenInIde-4GFf-kdi.mjs.map +0 -1
  413. package/.output/server/chunks/build/useSettingsNav-C3O866KC.mjs.map +0 -1
  414. package/.output/server/chunks/build/useTauri-lRT8zkLv.mjs +0 -7
  415. package/.output/server/chunks/build/useTauri-lRT8zkLv.mjs.map +0 -1
  416. package/.output/server/chunks/build/virtualizer-Cd1hhlxC.mjs +0 -940
  417. package/.output/server/chunks/build/virtualizer-Cd1hhlxC.mjs.map +0 -1
  418. package/.output/server/chunks/build/wasted-time-lYkx5YO4.mjs.map +0 -1
@@ -1 +1 @@
1
- import{d as T,o as r,c as x,j as p,k as a,p as U,t as E,v as b,i as k,f as _,g as y,m as I,_ as j,h as w,s as N,r as h,H as O,F as S,y as Z,C as D,I as R,l as C,J as H}from"./NQikbhmK.js";import{u as J}from"./Bn0YQDyy.js";const M=[{provider:"jira",tests:[/^https:\/\/([^./]+)\.atlassian\.net\/browse\//i,/^https:\/\/[^/]+\/jira\/software\/c\/projects\//i,/^https:\/\/[^/]+\/.+\/browse\//i],keyExtract:/\/([A-Z][A-Z0-9_]+-\d+)(?:\?|$|#)/i},{provider:"github-issue",tests:[/^https:\/\/github\.com\/[^/]+\/[^/]+\/issues\//i],keyExtract:/\/issues\/(\d+)/},{provider:"github-pr",tests:[/^https:\/\/github\.com\/[^/]+\/[^/]+\/pull\//i],keyExtract:/\/pull\/(\d+)/},{provider:"gitlab-issue",tests:[/^https:\/\/(gitlab\.[^/]+|[^/]+\.gitlab\.io)\/[^/]+\/[^/]+\/-\/issues\//i],keyExtract:/\/issues\/(\d+)/},{provider:"gitlab-mr",tests:[/^https:\/\/(gitlab\.[^/]+|[^/]+\.gitlab\.io)\/[^/]+\/[^/]+\/-\/merge_requests\//i],keyExtract:/\/merge_requests\/(\d+)/},{provider:"bitbucket",tests:[/^https:\/\/bitbucket\.org\/[^/]+\/[^/]+\/pull-requests\//i],keyExtract:/\/pull-requests\/(\d+)/},{provider:"confluence",tests:[/^https:\/\/([^./]+)\.atlassian\.net\/wiki\//i]},{provider:"slack",tests:[/^https:\/\/[^/]+\.slack\.com\//i]},{provider:"linear",tests:[/^https:\/\/linear\.app\//i],keyExtract:/\/([A-Za-z]+-\d+)(?:\/|\?|$|#)/},{provider:"notion",tests:[/^https:\/\/(www\.)?notion\.so\//i]}];function G(t){for(const c of M)if(c.tests.some(e=>e.test(t)))return c.provider;return"generic"}function z(t){return{jira:"i-simple-icons-jira","github-issue":"i-simple-icons-github","github-pr":"i-simple-icons-github","gitlab-issue":"i-simple-icons-gitlab","gitlab-mr":"i-simple-icons-gitlab",bitbucket:"i-simple-icons-bitbucket",confluence:"i-simple-icons-confluence",slack:"i-simple-icons-slack",linear:"i-simple-icons-linear",notion:"i-simple-icons-notion",generic:"i-lucide-link"}[t]}const K={class:"inline-flex items-center gap-1.5 px-2 py-0.5 rounded-full text-xs font-medium bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 group hover:bg-gray-200 dark:hover:bg-gray-700 transition-colors"},Q={key:0,class:"font-mono text-primary font-medium"},W=["title"],X=T({__name:"LinkChip",props:{link:{},removable:{type:Boolean}},emits:["remove"],setup(t,{emit:c}){const e=t,v=c,g=w(()=>e.link.title||e.link.key||e.link.url.replace(/^https?:\/\//,"").slice(0,50)),o=w(()=>z(e.link.provider));return(s,l)=>{const d=U,f=N,m=j;return r(),x("span",K,[p(d,{name:a(o),class:"w-3.5 h-3.5 shrink-0"},null,8,["name"]),t.link.key?(r(),x("span",Q,E(t.link.key),1)):b("",!0),k("span",{class:"max-w-48 truncate",title:t.link.title||t.link.url},E(a(g)),9,W),t.link.statusText?(r(),_(f,{key:1,color:t.link.statusColor||"neutral",variant:"subtle",size:"xs"},{default:y(()=>[I(E(t.link.statusText),1)]),_:1},8,["color"])):b("",!0),p(m,{to:t.link.url,target:"_blank",size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-external-link",class:"opacity-0 group-hover:opacity-100 transition-opacity -my-1"},null,8,["to"]),t.removable?(r(),_(m,{key:2,size:"xs",variant:"ghost",color:"error",icon:"i-lucide-x",class:"opacity-0 group-hover:opacity-100 transition-opacity -my-1",onClick:l[0]||(l[0]=L=>v("remove",t.link.id))})):b("",!0)])}}}),Y=Object.assign(X,{__name:"LinkChip"}),tt={class:"flex flex-wrap items-center gap-1.5"},et={class:"relative"},it={class:"flex justify-end gap-2"},st=T({__name:"EntityLinks",props:{entityType:{},entityId:{},links:{}},emits:["updated"],setup(t,{emit:c}){const e=t,v=c,{copy:g}=J(),o=h(e.links??[]),s=h(""),l=h(!1),d=h(!1),f=w(()=>{try{return s.value?G(s.value):null}catch{return null}}),m=w(()=>f.value?z(f.value):null);async function L(){const n=await $fetch("/api/links",{params:{entityType:e.entityType,entityId:e.entityId}});o.value=n.links}async function B(){if(!(!s.value||d.value)){d.value=!0;try{const n=await $fetch("/api/links",{method:"POST",body:{entityType:e.entityType,entityId:e.entityId,url:s.value}});o.value.push(n.link),s.value="",l.value=!1,v("updated")}catch(n){g(n?.data?.message||"Failed to add link",{toast:!0})}finally{d.value=!1}}}async function V(n){try{await $fetch(`/api/links/${n}`,{method:"DELETE"}),o.value=o.value.filter(i=>i.id!==n),v("updated")}catch{g("Failed to remove link",{toast:!0})}}return O(()=>[e.entityType,e.entityId],()=>{e.links?o.value=e.links:L()},{immediate:!0}),(n,i)=>{const A=Y,$=j,P=R,q=U,F=H;return r(),x("div",tt,[(r(!0),x(S,null,Z(a(o),u=>(r(),_(A,{key:u.id,link:u,removable:"",onRemove:V},null,8,["link"]))),128)),p(F,{open:a(l),"onUpdate:open":i[2]||(i[2]=u=>C(l)?l.value=u:null)},{content:y(()=>[k("form",{class:"p-3 space-y-3 min-w-72",onSubmit:D(B,["prevent"])},[i[5]||(i[5]=k("p",{class:"text-sm font-medium"},"Add link",-1)),k("div",et,[p(P,{modelValue:a(s),"onUpdate:modelValue":i[0]||(i[0]=u=>C(s)?s.value=u:null),placeholder:"https://...",size:"sm",class:"w-full",autofocus:""},null,8,["modelValue"]),a(m)?(r(),_(q,{key:0,name:a(m),class:"absolute right-2.5 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"},null,8,["name"])):b("",!0)]),k("div",it,[p($,{size:"xs",variant:"ghost",color:"neutral",onClick:i[1]||(i[1]=u=>l.value=!1)},{default:y(()=>[...i[3]||(i[3]=[I(" Cancel ",-1)])]),_:1}),p($,{size:"xs",color:"primary",type:"submit",loading:a(d),disabled:!a(s).trim()},{default:y(()=>[...i[4]||(i[4]=[I(" Add ",-1)])]),_:1},8,["loading","disabled"])])],32)]),default:y(()=>[p($,{size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-plus",class:"text-gray-400 hover:text-gray-600 dark:hover:text-gray-300",title:"Add link"})]),_:1},8,["open"])])}}}),ot=Object.assign(st,{__name:"EntityLinks"});export{ot as _};
1
+ import{d as T,o as r,c as x,j as p,k as a,p as U,t as E,v as b,i as k,f as _,g as y,m as I,_ as j,h as w,s as N,r as h,H as O,F as S,y as Z,C as D,I as R,l as C,J as H}from"./Du2W7Jne.js";import{u as J}from"./DSqHUrvO.js";const M=[{provider:"jira",tests:[/^https:\/\/([^./]+)\.atlassian\.net\/browse\//i,/^https:\/\/[^/]+\/jira\/software\/c\/projects\//i,/^https:\/\/[^/]+\/.+\/browse\//i],keyExtract:/\/([A-Z][A-Z0-9_]+-\d+)(?:\?|$|#)/i},{provider:"github-issue",tests:[/^https:\/\/github\.com\/[^/]+\/[^/]+\/issues\//i],keyExtract:/\/issues\/(\d+)/},{provider:"github-pr",tests:[/^https:\/\/github\.com\/[^/]+\/[^/]+\/pull\//i],keyExtract:/\/pull\/(\d+)/},{provider:"gitlab-issue",tests:[/^https:\/\/(gitlab\.[^/]+|[^/]+\.gitlab\.io)\/[^/]+\/[^/]+\/-\/issues\//i],keyExtract:/\/issues\/(\d+)/},{provider:"gitlab-mr",tests:[/^https:\/\/(gitlab\.[^/]+|[^/]+\.gitlab\.io)\/[^/]+\/[^/]+\/-\/merge_requests\//i],keyExtract:/\/merge_requests\/(\d+)/},{provider:"bitbucket",tests:[/^https:\/\/bitbucket\.org\/[^/]+\/[^/]+\/pull-requests\//i],keyExtract:/\/pull-requests\/(\d+)/},{provider:"confluence",tests:[/^https:\/\/([^./]+)\.atlassian\.net\/wiki\//i]},{provider:"slack",tests:[/^https:\/\/[^/]+\.slack\.com\//i]},{provider:"linear",tests:[/^https:\/\/linear\.app\//i],keyExtract:/\/([A-Za-z]+-\d+)(?:\/|\?|$|#)/},{provider:"notion",tests:[/^https:\/\/(www\.)?notion\.so\//i]}];function G(t){for(const c of M)if(c.tests.some(e=>e.test(t)))return c.provider;return"generic"}function z(t){return{jira:"i-simple-icons-jira","github-issue":"i-simple-icons-github","github-pr":"i-simple-icons-github","gitlab-issue":"i-simple-icons-gitlab","gitlab-mr":"i-simple-icons-gitlab",bitbucket:"i-simple-icons-bitbucket",confluence:"i-simple-icons-confluence",slack:"i-simple-icons-slack",linear:"i-simple-icons-linear",notion:"i-simple-icons-notion",generic:"i-lucide-link"}[t]}const K={class:"inline-flex items-center gap-1.5 px-2 py-0.5 rounded-full text-xs font-medium bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 group hover:bg-gray-200 dark:hover:bg-gray-700 transition-colors"},Q={key:0,class:"font-mono text-primary font-medium"},W=["title"],X=T({__name:"LinkChip",props:{link:{},removable:{type:Boolean}},emits:["remove"],setup(t,{emit:c}){const e=t,v=c,g=w(()=>e.link.title||e.link.key||e.link.url.replace(/^https?:\/\//,"").slice(0,50)),o=w(()=>z(e.link.provider));return(s,l)=>{const d=U,f=N,m=j;return r(),x("span",K,[p(d,{name:a(o),class:"w-3.5 h-3.5 shrink-0"},null,8,["name"]),t.link.key?(r(),x("span",Q,E(t.link.key),1)):b("",!0),k("span",{class:"max-w-48 truncate",title:t.link.title||t.link.url},E(a(g)),9,W),t.link.statusText?(r(),_(f,{key:1,color:t.link.statusColor||"neutral",variant:"subtle",size:"xs"},{default:y(()=>[I(E(t.link.statusText),1)]),_:1},8,["color"])):b("",!0),p(m,{to:t.link.url,target:"_blank",size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-external-link",class:"opacity-0 group-hover:opacity-100 transition-opacity -my-1"},null,8,["to"]),t.removable?(r(),_(m,{key:2,size:"xs",variant:"ghost",color:"error",icon:"i-lucide-x",class:"opacity-0 group-hover:opacity-100 transition-opacity -my-1",onClick:l[0]||(l[0]=L=>v("remove",t.link.id))})):b("",!0)])}}}),Y=Object.assign(X,{__name:"LinkChip"}),tt={class:"flex flex-wrap items-center gap-1.5"},et={class:"relative"},it={class:"flex justify-end gap-2"},st=T({__name:"EntityLinks",props:{entityType:{},entityId:{},links:{}},emits:["updated"],setup(t,{emit:c}){const e=t,v=c,{copy:g}=J(),o=h(e.links??[]),s=h(""),l=h(!1),d=h(!1),f=w(()=>{try{return s.value?G(s.value):null}catch{return null}}),m=w(()=>f.value?z(f.value):null);async function L(){const n=await $fetch("/api/links",{params:{entityType:e.entityType,entityId:e.entityId}});o.value=n.links}async function B(){if(!(!s.value||d.value)){d.value=!0;try{const n=await $fetch("/api/links",{method:"POST",body:{entityType:e.entityType,entityId:e.entityId,url:s.value}});o.value.push(n.link),s.value="",l.value=!1,v("updated")}catch(n){g(n?.data?.message||"Failed to add link",{toast:!0})}finally{d.value=!1}}}async function V(n){try{await $fetch(`/api/links/${n}`,{method:"DELETE"}),o.value=o.value.filter(i=>i.id!==n),v("updated")}catch{g("Failed to remove link",{toast:!0})}}return O(()=>[e.entityType,e.entityId],()=>{e.links?o.value=e.links:L()},{immediate:!0}),(n,i)=>{const A=Y,$=j,P=R,q=U,F=H;return r(),x("div",tt,[(r(!0),x(S,null,Z(a(o),u=>(r(),_(A,{key:u.id,link:u,removable:"",onRemove:V},null,8,["link"]))),128)),p(F,{open:a(l),"onUpdate:open":i[2]||(i[2]=u=>C(l)?l.value=u:null)},{content:y(()=>[k("form",{class:"p-3 space-y-3 min-w-72",onSubmit:D(B,["prevent"])},[i[5]||(i[5]=k("p",{class:"text-sm font-medium"},"Add link",-1)),k("div",et,[p(P,{modelValue:a(s),"onUpdate:modelValue":i[0]||(i[0]=u=>C(s)?s.value=u:null),placeholder:"https://...",size:"sm",class:"w-full",autofocus:""},null,8,["modelValue"]),a(m)?(r(),_(q,{key:0,name:a(m),class:"absolute right-2.5 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"},null,8,["name"])):b("",!0)]),k("div",it,[p($,{size:"xs",variant:"ghost",color:"neutral",onClick:i[1]||(i[1]=u=>l.value=!1)},{default:y(()=>[...i[3]||(i[3]=[I(" Cancel ",-1)])]),_:1}),p($,{size:"xs",color:"primary",type:"submit",loading:a(d),disabled:!a(s).trim()},{default:y(()=>[...i[4]||(i[4]=[I(" Add ",-1)])]),_:1},8,["loading","disabled"])])],32)]),default:y(()=>[p($,{size:"xs",variant:"ghost",color:"neutral",icon:"i-lucide-plus",class:"text-gray-400 hover:text-gray-600 dark:hover:text-gray-300",title:"Add link"})]),_:1},8,["open"])])}}}),ot=Object.assign(st,{__name:"EntityLinks"});export{ot as _};
@@ -1 +1 @@
1
- import{d as R,u as q,a as F,b as S,c as g,j as t,g as n,o as i,k as e,f as h,F as T,v as j,i as d,C as A,I as M,l as k,_ as D,m as b,t as x,D as z,p as E,h as V,r as u}from"./NQikbhmK.js";import{_ as L}from"./D0HNloZ9.js";import{_ as O}from"./B9WhzpKO.js";import{_ as G}from"./eptP4pGv.js";import"./CYsTqbBS.js";const H={class:"min-h-screen flex items-center justify-center bg-elevated/50"},J={class:"flex items-center gap-2"},K={class:"text-2xl font-bold"},Q={class:"mt-4 text-center"},te=R({__name:"reset-password",setup(W){const f=q(),U=F(),$=S(),m=V(()=>f.query.token),p=V(()=>f.query.mode==="invite"),o=u(""),c=u(""),r=u(!1),a=u("");async function B(){if(a.value="",!m.value){a.value="Missing reset token";return}if(o.value.length<8){a.value="Password must be at least 8 characters";return}if(o.value!==c.value){a.value="Passwords do not match";return}r.value=!0;try{await $fetch("/api/auth/reset-password",{method:"POST",body:{token:m.value,password:o.value}}),$.add({title:p.value?"Account activated!":"Password reset!",color:"success"}),U.push("/login")}catch(l){const s=l&&typeof l=="object"&&"data"in l?l.data?.message:void 0;a.value=s||"Invalid or expired link"}finally{r.value=!1}}return(l,s)=>{const C=E,v=L,w=M,y=O,I=D,N=z,P=G;return i(),g("div",H,[t(P,{class:"w-full max-w-md"},{header:n(()=>[d("div",J,[t(C,{name:"i-lucide-lock",class:"size-6"}),d("h1",K,x(e(p)?"Set your password":"Reset your password"),1)])]),default:n(()=>[e(m)?(i(),g(T,{key:1},[e(a)?(i(),h(v,{key:0,color:"error",title:e(a),variant:"subtle",class:"mb-4"},null,8,["title"])):j("",!0),d("form",{class:"space-y-4",onSubmit:A(B,["prevent"])},[t(y,{label:"New password",name:"password",required:""},{default:n(()=>[t(w,{modelValue:e(o),"onUpdate:modelValue":s[0]||(s[0]=_=>k(o)?o.value=_:null),type:"password",placeholder:"Min 8 characters",autocomplete:"new-password",disabled:e(r),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),t(y,{label:"Confirm password",name:"confirmPassword",required:""},{default:n(()=>[t(w,{modelValue:e(c),"onUpdate:modelValue":s[1]||(s[1]=_=>k(c)?c.value=_:null),type:"password",placeholder:"Repeat password",autocomplete:"new-password",disabled:e(r),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),t(I,{type:"submit",block:"",loading:e(r)},{default:n(()=>[b(x(e(p)?"Activate account":"Reset password"),1)]),_:1},8,["loading"])],32)],64)):(i(),h(v,{key:0,color:"error",title:"Invalid link",description:"This link is missing or malformed."})),d("div",Q,[t(N,{to:"/login",class:"text-sm text-gray-500 hover:text-gray-700 dark:hover:text-gray-300"},{default:n(()=>[...s[2]||(s[2]=[b(" Back to login ",-1)])]),_:1})])]),_:1})])}}});export{te as default};
1
+ import{d as R,u as q,a as F,b as S,c as g,j as t,g as n,o as i,k as e,f as h,F as T,v as j,i as d,C as A,I as M,l as k,_ as D,m as b,t as x,D as z,p as E,h as V,r as u}from"./Du2W7Jne.js";import{_ as L}from"./BrQEE053.js";import{_ as O}from"./AbmKWFQQ.js";import{_ as G}from"./-f7BAm1H.js";import"./L3kAWB2a.js";const H={class:"min-h-screen flex items-center justify-center bg-elevated/50"},J={class:"flex items-center gap-2"},K={class:"text-2xl font-bold"},Q={class:"mt-4 text-center"},te=R({__name:"reset-password",setup(W){const f=q(),U=F(),$=S(),m=V(()=>f.query.token),p=V(()=>f.query.mode==="invite"),o=u(""),c=u(""),r=u(!1),a=u("");async function B(){if(a.value="",!m.value){a.value="Missing reset token";return}if(o.value.length<8){a.value="Password must be at least 8 characters";return}if(o.value!==c.value){a.value="Passwords do not match";return}r.value=!0;try{await $fetch("/api/auth/reset-password",{method:"POST",body:{token:m.value,password:o.value}}),$.add({title:p.value?"Account activated!":"Password reset!",color:"success"}),U.push("/login")}catch(l){const s=l&&typeof l=="object"&&"data"in l?l.data?.message:void 0;a.value=s||"Invalid or expired link"}finally{r.value=!1}}return(l,s)=>{const C=E,v=L,w=M,y=O,I=D,N=z,P=G;return i(),g("div",H,[t(P,{class:"w-full max-w-md"},{header:n(()=>[d("div",J,[t(C,{name:"i-lucide-lock",class:"size-6"}),d("h1",K,x(e(p)?"Set your password":"Reset your password"),1)])]),default:n(()=>[e(m)?(i(),g(T,{key:1},[e(a)?(i(),h(v,{key:0,color:"error",title:e(a),variant:"subtle",class:"mb-4"},null,8,["title"])):j("",!0),d("form",{class:"space-y-4",onSubmit:A(B,["prevent"])},[t(y,{label:"New password",name:"password",required:""},{default:n(()=>[t(w,{modelValue:e(o),"onUpdate:modelValue":s[0]||(s[0]=_=>k(o)?o.value=_:null),type:"password",placeholder:"Min 8 characters",autocomplete:"new-password",disabled:e(r),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),t(y,{label:"Confirm password",name:"confirmPassword",required:""},{default:n(()=>[t(w,{modelValue:e(c),"onUpdate:modelValue":s[1]||(s[1]=_=>k(c)?c.value=_:null),type:"password",placeholder:"Repeat password",autocomplete:"new-password",disabled:e(r),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),t(I,{type:"submit",block:"",loading:e(r)},{default:n(()=>[b(x(e(p)?"Activate account":"Reset password"),1)]),_:1},8,["loading"])],32)],64)):(i(),h(v,{key:0,color:"error",title:"Invalid link",description:"This link is missing or malformed."})),d("div",Q,[t(N,{to:"/login",class:"text-sm text-gray-500 hover:text-gray-700 dark:hover:text-gray-300"},{default:n(()=>[...s[2]||(s[2]=[b(" Back to login ",-1)])]),_:1})])]),_:1})])}}});export{te as default};
@@ -1,4 +1,4 @@
1
- import{x as U,y as g,z as q,A as Q,B as Z,D as ee,E as V,X as te,C as ne,c as E,d as ae,i as re,e as se,F as $,j as ie,G as R,f as Y,g as X,k as oe,r as O,n as P,s as T,l as W,H as z,I,J as le,K as ce,p as ue,t as he,P as de,v as ye}from"./DX-MDGb3.js";import{d as fe,an as pe,B as ve,K as ge,ad as me,H as K,o as ke,c as xe,h as be,r as Se}from"./NQikbhmK.js";function Ae(p,n,e){var r=null,s=g(!0),l=null,o=q,c=null,m=U(a);p=typeof p=="function"?p:p===void 0?Q:g(+p),n=typeof n=="function"?n:n===void 0?g(0):g(+n),e=typeof e=="function"?e:e===void 0?Z:g(+e);function a(t){var u,x,h,d=(t=ee(t)).length,f,v=!1,b,i=new Array(d),y=new Array(d);for(l==null&&(c=o(b=m())),u=0;u<=d;++u){if(!(u<d&&s(f=t[u],u,t))===v)if(v=!v)x=u,c.areaStart(),c.lineStart();else{for(c.lineEnd(),c.lineStart(),h=u-1;h>=x;--h)c.point(i[h],y[h]);c.lineEnd(),c.areaEnd()}v&&(i[u]=+p(f,u,t),y[u]=+n(f,u,t),c.point(r?+r(f,u,t):i[u],e?+e(f,u,t):y[u]))}if(b)return c=null,b+""||null}function k(){return V().defined(s).curve(o).context(l)}return a.x=function(t){return arguments.length?(p=typeof t=="function"?t:g(+t),r=null,a):p},a.x0=function(t){return arguments.length?(p=typeof t=="function"?t:g(+t),a):p},a.x1=function(t){return arguments.length?(r=t==null?null:typeof t=="function"?t:g(+t),a):r},a.y=function(t){return arguments.length?(n=typeof t=="function"?t:g(+t),e=null,a):n},a.y0=function(t){return arguments.length?(n=typeof t=="function"?t:g(+t),a):n},a.y1=function(t){return arguments.length?(e=t==null?null:typeof t=="function"?t:g(+t),a):e},a.lineX0=a.lineY0=function(){return k().x(p).y(n)},a.lineY1=function(){return k().x(p).y(e)},a.lineX1=function(){return k().x(r).y(n)},a.defined=function(t){return arguments.length?(s=typeof t=="function"?t:g(!!t),a):s},a.curve=function(t){return arguments.length?(o=t,l!=null&&(c=o(l)),a):o},a.context=function(t){return arguments.length?(t==null?l=c=null:c=o(l=t),a):l},a}const De=Object.assign(Object.assign({},te),{color:void 0,curveType:ne.MonotoneX,baseline:()=>0,opacity:1,cursor:null,line:!1,lineColor:void 0,lineWidth:2,lineDashArray:void 0,minHeight1Px:!1,minHeight:void 0,stackMinHeight:!1}),J=E`
1
+ import{x as U,y as g,z as q,A as Q,B as Z,D as ee,E as V,X as te,C as ne,c as E,d as ae,i as re,e as se,F as $,j as ie,G as R,f as Y,g as X,k as oe,r as O,n as P,s as T,l as W,H as z,I,J as le,K as ce,p as ue,t as he,P as de,v as ye}from"./CwGWJbiy.js";import{d as fe,an as pe,B as ve,K as ge,ad as me,H as K,o as ke,c as xe,h as be,r as Se}from"./Du2W7Jne.js";function Ae(p,n,e){var r=null,s=g(!0),l=null,o=q,c=null,m=U(a);p=typeof p=="function"?p:p===void 0?Q:g(+p),n=typeof n=="function"?n:n===void 0?g(0):g(+n),e=typeof e=="function"?e:e===void 0?Z:g(+e);function a(t){var u,x,h,d=(t=ee(t)).length,f,v=!1,b,i=new Array(d),y=new Array(d);for(l==null&&(c=o(b=m())),u=0;u<=d;++u){if(!(u<d&&s(f=t[u],u,t))===v)if(v=!v)x=u,c.areaStart(),c.lineStart();else{for(c.lineEnd(),c.lineStart(),h=u-1;h>=x;--h)c.point(i[h],y[h]);c.lineEnd(),c.areaEnd()}v&&(i[u]=+p(f,u,t),y[u]=+n(f,u,t),c.point(r?+r(f,u,t):i[u],e?+e(f,u,t):y[u]))}if(b)return c=null,b+""||null}function k(){return V().defined(s).curve(o).context(l)}return a.x=function(t){return arguments.length?(p=typeof t=="function"?t:g(+t),r=null,a):p},a.x0=function(t){return arguments.length?(p=typeof t=="function"?t:g(+t),a):p},a.x1=function(t){return arguments.length?(r=t==null?null:typeof t=="function"?t:g(+t),a):r},a.y=function(t){return arguments.length?(n=typeof t=="function"?t:g(+t),e=null,a):n},a.y0=function(t){return arguments.length?(n=typeof t=="function"?t:g(+t),a):n},a.y1=function(t){return arguments.length?(e=t==null?null:typeof t=="function"?t:g(+t),a):e},a.lineX0=a.lineY0=function(){return k().x(p).y(n)},a.lineY1=function(){return k().x(p).y(e)},a.lineX1=function(){return k().x(r).y(n)},a.defined=function(t){return arguments.length?(s=typeof t=="function"?t:g(!!t),a):s},a.curve=function(t){return arguments.length?(o=t,l!=null&&(c=o(l)),a):o},a.context=function(t){return arguments.length?(t==null?l=c=null:c=o(l=t),a):l},a}const De=Object.assign(Object.assign({},te),{color:void 0,curveType:ne.MonotoneX,baseline:()=>0,opacity:1,cursor:null,line:!1,lineColor:void 0,lineWidth:2,lineDashArray:void 0,minHeight1Px:!1,minHeight:void 0,stackMinHeight:!1}),J=E`
2
2
  label: area-component;
3
3
  `,Ce=re`
4
4
  :root {
@@ -1 +1 @@
1
- import{d as a,o as t,c as n,t as o,Q as s,q as c,aj as l}from"./NQikbhmK.js";const r=a({__name:"TagBadge",props:{text:{},color:{},variant:{}},setup(e){return(i,m)=>(t(),n("span",{class:c(["tag-badge inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium whitespace-nowrap",e.variant==="outline"?"tag-badge--outline":""]),style:s({"--tag-color":e.color})},o(e.text),7))}}),p=Object.assign(l(r,[["__scopeId","data-v-58fcc931"]]),{__name:"TagBadge"});export{p as _};
1
+ import{d as a,o as t,c as n,t as o,Q as s,q as c,aj as l}from"./Du2W7Jne.js";const r=a({__name:"TagBadge",props:{text:{},color:{},variant:{}},setup(e){return(i,m)=>(t(),n("span",{class:c(["tag-badge inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium whitespace-nowrap",e.variant==="outline"?"tag-badge--outline":""]),style:s({"--tag-color":e.color})},o(e.text),7))}}),p=Object.assign(l(r,[["__scopeId","data-v-58fcc931"]]),{__name:"TagBadge"});export{p as _};
@@ -1 +1 @@
1
- import{d as v,b5 as I,aA as y,b6 as F,B as g,ad as h,H as K,o as S,f as C,g as i,j as w,k as r,X as B,V as R,h as u,b7 as T,b8 as q,K as k,b9 as x}from"./NQikbhmK.js";var _=v({__name:"RovingFocusItem",props:{tabStopId:{type:String,required:!1},focusable:{type:Boolean,required:!1,default:!0},active:{type:Boolean,required:!1},allowShiftKey:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(d){const n=d,a=I(),f=y(),l=u(()=>n.tabStopId||f),c=u(()=>a.currentTabStopId.value===l.value),{getItems:p,CollectionItem:b}=F();g(()=>{n.focusable&&a.onFocusableItemAdd()}),h(()=>{n.focusable&&a.onFocusableItemRemove()}),K(()=>n.focusable,(e,t)=>{e!==t&&(e?a.onFocusableItemAdd():a.onFocusableItemRemove())});function m(e){if(e.key==="Tab"&&e.shiftKey){a.onItemShiftTab();return}if(e.target!==e.currentTarget)return;const t=T(e,a.orientation.value,a.dir.value);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||!n.allowShiftKey&&e.shiftKey)return;e.preventDefault();let o=[...p().map(s=>s.ref).filter(s=>s.dataset.disabled!=="")];if(t==="last")o.reverse();else if(t==="prev"||t==="next"){t==="prev"&&o.reverse();const s=o.indexOf(e.currentTarget);o=a.loop.value?q(o,s+1):o.slice(s+1)}k(()=>x(o))}}return(e,t)=>(S(),C(r(b),null,{default:i(()=>[w(r(B),{tabindex:c.value?0:-1,"data-orientation":r(a).orientation.value,"data-active":e.active?"":void 0,"data-disabled":e.focusable?void 0:"",as:e.as,"as-child":e.asChild,onMousedown:t[0]||(t[0]=o=>{e.focusable?r(a).onItemFocus(l.value):o.preventDefault()}),onFocus:t[1]||(t[1]=o=>r(a).onItemFocus(l.value)),onKeydown:m},{default:i(()=>[R(e.$slots,"default")]),_:3},8,["tabindex","data-orientation","data-active","data-disabled","as","as-child"])]),_:3}))}}),j=_;export{j as R};
1
+ import{d as v,b6 as I,aB as y,b7 as F,B as g,ad as h,H as K,o as S,f as B,g as i,j as C,k as r,X as w,V as R,h as u,b8 as T,b9 as q,K as k,ba as x}from"./Du2W7Jne.js";var _=v({__name:"RovingFocusItem",props:{tabStopId:{type:String,required:!1},focusable:{type:Boolean,required:!1,default:!0},active:{type:Boolean,required:!1},allowShiftKey:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(d){const n=d,a=I(),f=y(),l=u(()=>n.tabStopId||f),c=u(()=>a.currentTabStopId.value===l.value),{getItems:p,CollectionItem:b}=F();g(()=>{n.focusable&&a.onFocusableItemAdd()}),h(()=>{n.focusable&&a.onFocusableItemRemove()}),K(()=>n.focusable,(e,t)=>{e!==t&&(e?a.onFocusableItemAdd():a.onFocusableItemRemove())});function m(e){if(e.key==="Tab"&&e.shiftKey){a.onItemShiftTab();return}if(e.target!==e.currentTarget)return;const t=T(e,a.orientation.value,a.dir.value);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||!n.allowShiftKey&&e.shiftKey)return;e.preventDefault();let o=[...p().map(s=>s.ref).filter(s=>s.dataset.disabled!=="")];if(t==="last")o.reverse();else if(t==="prev"||t==="next"){t==="prev"&&o.reverse();const s=o.indexOf(e.currentTarget);o=a.loop.value?q(o,s+1):o.slice(s+1)}k(()=>x(o))}}return(e,t)=>(S(),B(r(b),null,{default:i(()=>[C(r(w),{tabindex:c.value?0:-1,"data-orientation":r(a).orientation.value,"data-active":e.active?"":void 0,"data-disabled":e.focusable?void 0:"",as:e.as,"as-child":e.asChild,onMousedown:t[0]||(t[0]=o=>{e.focusable?r(a).onItemFocus(l.value):o.preventDefault()}),onFocus:t[1]||(t[1]=o=>r(a).onItemFocus(l.value)),onKeydown:m},{default:i(()=>[R(e.$slots,"default")]),_:3},8,["tabindex","data-orientation","data-active","data-disabled","as","as-child"])]),_:3}))}}),j=_;export{j as R};
@@ -0,0 +1,2 @@
1
+ import{am as he,h as B,ao as X,r as _,ap as be,d as M,E as se,H as Y,o as s,f as S,g as h,i as m,k as a,s as ne,m as w,t as f,c as l,j as o,_ as ae,v as u,F as G,p as N,l as A,I as ve,y as le,q as V,G as oe,K as ye,B as ke,ac as xe,V as F}from"./Du2W7Jne.js";import{_ as we}from"./BT3wGCTI.js";import{_ as _e}from"./BrQEE053.js";import{_ as ie}from"./A1pj0VnG.js";import{_ as $e}from"./AbmKWFQQ.js";import{_ as Ce}from"./Dpd16JVI.js";import{_ as je}from"./B3obW6cw.js";import{_ as Ie}from"./BUkim3TM.js";import{e as Se,t as Z,u as Ve}from"./BicAJ6U8.js";import{g as Ue,B as ee,A as ze,k as Be,j as Me}from"./DuwtTfO8.js";import{_ as Le}from"./b-GYfcrQ.js";import{_ as Re}from"./Bm62iDV5.js";import{_ as Ee}from"./-f7BAm1H.js";import{_ as Pe}from"./CxyAzHr3.js";const Fe={normal:[],headed:["--headed"],debug:["--debug"],ui:["--ui"]};function Ne(e){const t=new Map;for(const i of e){const n=i.projectName||"";t.has(n)||t.set(n,[]),t.get(n).push(i)}return t}function De(e,t){if(t==="grep"){const r=e.map(g=>Se(g.title));return["--grep",r.length===1?r[0]:`(${r.join("|")})`]}const i=new Set,n=[];for(const r of e){const g=t==="file-line"&&r.line?`${Z(r.filePath)}:${r.line}`:Z(r.filePath);i.has(g)||(i.add(g),n.push(g))}return n}function Te(e){return/[\s"'()|]/.test(e)?`"${e.replace(/"/g,'\\"')}"`:e}function Oe(e,t={}){if(e.length===0)return[];const i=t.mode??"file-line",n=t.runMode??"normal",r=Math.min(1e3,Math.max(1,Math.floor(t.repeatEach??1))),g=[];for(const[d,p]of Ne(e)){const b=De(p,i);d&&b.push(`--project=${d}`),b.push(...Fe[n]),t.trace&&b.push("--trace=on"),r>1&&b.push(`--repeat-each=${r}`),g.push({args:b,display:["playwright","test",...b.map(Te)].join(" ")})}return g}const te=2e3;function Ae(){const e=_("idle"),t=_([]),i=_(null),n=_(0),r=_(0),g=B(()=>e.value==="running");let d=null,p=!1,b=!1,C=[],j=null,v=null;function D(y,k){t.value.push({text:y,error:k}),t.value.length>te&&t.value.splice(0,t.value.length-te)}function T(y){if(y.kind==="exit"){v?.(y.code);return}D(y.line??"",y.kind!=="stdout")}async function L(){if(j)return;const y=be();if(!y)throw new Error("The desktop bridge is unavailable.");j=await y.listen("piwi:local-run",({payload:k})=>{k.id===d?T(k):p&&C.push(k)})}async function R(y,k){const $=X();if(!$)throw new Error("The desktop bridge is unavailable.");const z=new Promise(I=>{v=I});p=!0,C=[];try{d=await $.invoke("desktop_run_local_tests",{projectId:String(y),args:k.args})}finally{p=!1}for(const I of C)I.id===d&&T(I);C=[];const P=await z;return d=null,v=null,P}async function E(y,k){if(!(g.value||k.length===0)){b=!1,t.value=[],i.value=null,r.value=k.length,n.value=0,e.value="running";try{await L();let $=0;for(const[z,P]of k.entries()){if(b)break;n.value=z,k.length>1&&D(`$ ${P.display}`,!1);const I=await R(y,P);if(b)break;I!==0&&($=I??1)}b?e.value="stopped":(i.value=typeof $=="number"?$:1,e.value=$===0?"passed":"failed")}catch($){D(Ue($),!0),e.value="error"}}}async function U(){if(!g.value)return;b=!0;const y=X(),k=d;if(y&&k!=null)try{await y.invoke("desktop_stop_local_tests",{runId:k})}catch{}v?.(null),e.value="stopped"}return he(()=>{g.value&&U(),j?.(),j=null}),{status:e,running:g,lines:t,exitCode:i,stepIndex:n,stepCount:r,start:E,stop:U}}const He={class:"flex items-center gap-2 min-w-0"},qe={class:"space-y-4"},Ge={key:0,class:"space-y-3"},Ke={class:"text-sm text-muted"},Xe={class:"flex items-center justify-between gap-3"},Je={class:"flex items-center gap-2 min-w-0 text-sm"},Qe={class:"text-xs break-all"},We={class:"grid grid-cols-2 gap-3"},Ye={class:"space-y-1"},Ze={key:0,class:"space-y-2"},et={class:"flex items-center justify-between w-full gap-3"},tt={key:1},st={class:"flex items-center gap-2"},nt=M({__name:"DesktopRunLocallyModal",props:oe({projectId:{},projectLabel:{},cases:{}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:["update:open"],setup(e){const t=e,i=se(e,"open"),{link:n,busy:r,pickAndLink:g}=Ve(()=>t.projectId),{status:d,running:p,lines:b,exitCode:C,stepIndex:j,stepCount:v,start:D,stop:T}=Ae(),L=_("file-line"),R=_("normal"),E=_(!1),U=_(1),y=[{label:"File:line",value:"file-line"},{label:"Title (grep)",value:"grep"},{label:"File only",value:"file"}],k=[{label:"Headless",value:"normal"},{label:"Headed",value:"headed"},{label:"Debug (inspector)",value:"debug"},{label:"UI mode",value:"ui"}],$=B(()=>!!n.value?.exists),z=B(()=>Oe(t.cases,{mode:L.value,runMode:R.value,trace:E.value,repeatEach:U.value})),P=B(()=>z.value.map(H=>H.display).join(`
2
+ `)),I=B(()=>{switch(d.value){case"running":return{label:v.value>1?`Running ${j.value+1}/${v.value}…`:"Running…",color:"info"};case"passed":return{label:"Passed",color:"success"};case"failed":return{label:C.value!=null?`Failed (exit ${C.value})`:"Failed",color:"error"};case"stopped":return{label:"Stopped",color:"neutral"};case"error":return{label:"Could not run",color:"error"};default:return null}});async function ce(){await D(t.projectId,z.value)}Y(i,H=>{!H&&p.value&&T()});const K=_(null);return Y(()=>b.value.length,async()=>{await ye(),K.value?.scrollTo({top:K.value.scrollHeight})}),(H,c)=>{const J=N,Q=ne,ue=_e,O=ae,W=ie,q=$e,de=ve,me=Ce,fe=je,ge=Ie;return s(),S(ge,{open:i.value,"onUpdate:open":c[7]||(c[7]=x=>i.value=x),ui:{content:"max-w-2xl"}},{header:h(()=>[m("div",He,[o(J,{name:"i-lucide-monitor-play",class:"size-5 text-primary shrink-0"}),c[8]||(c[8]=m("h2",{class:"text-base font-semibold truncate"},"Run tests locally",-1)),o(Q,{color:"neutral",variant:"subtle",size:"sm"},{default:h(()=>[w(f(e.cases.length)+" test"+f(e.cases.length===1?"":"s"),1)]),_:1})])]),body:h(()=>[m("div",qe,[a($)?(s(),l(G,{key:1},[m("div",Xe,[m("div",Je,[o(J,{name:"i-lucide-folder-check",class:"size-4 text-success shrink-0"}),m("code",Qe,f(a(n)?.path),1)]),o(O,{size:"xs",color:"neutral",variant:"ghost",icon:"i-lucide-folder-search",loading:a(r),disabled:a(p),onClick:a(g)},{default:h(()=>[...c[10]||(c[10]=[w(" Change ",-1)])]),_:1},8,["loading","disabled","onClick"])]),m("div",We,[o(q,{label:"Select tests by",name:"mode"},{default:h(()=>[o(W,{modelValue:a(L),"onUpdate:modelValue":c[0]||(c[0]=x=>A(L)?L.value=x:null),items:y,disabled:a(p),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),o(q,{label:"Browser",name:"runMode"},{default:h(()=>[o(W,{modelValue:a(R),"onUpdate:modelValue":c[1]||(c[1]=x=>A(R)?R.value=x:null),items:k,disabled:a(p),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),o(q,{label:"Repeat each",name:"repeatEach",description:"Run every test N times — flake reproduction."},{default:h(()=>[o(de,{modelValue:a(U),"onUpdate:modelValue":c[2]||(c[2]=x=>A(U)?U.value=x:null),modelModifiers:{number:!0},type:"number",min:"1",max:"1000",disabled:a(p),class:"w-full"},null,8,["modelValue","disabled"])]),_:1}),o(q,{label:"Trace",name:"trace",description:"Force trace recording (--trace=on)."},{default:h(()=>[o(me,{modelValue:a(E),"onUpdate:modelValue":c[3]||(c[3]=x=>A(E)?E.value=x:null),disabled:a(p)},null,8,["modelValue","disabled"])]),_:1})]),m("div",Ye,[c[11]||(c[11]=m("div",{class:"text-xs text-muted"},"Runs in the linked folder",-1)),o(fe,{code:a(P),lang:"sh"},null,8,["code"])]),c[12]||(c[12]=m("p",{class:"text-xs text-muted"}," Results are reported by the folder's own Playwright config — with the Piwi reporter set up, the new run appears in this app automatically. ",-1)),a(d)!=="idle"?(s(),l("div",Ze,[m("div",{ref_key:"outputEl",ref:K,class:"h-64 overflow-y-auto rounded-md bg-zinc-950 p-3"},[(s(!0),l(G,null,le(a(b),(x,pe)=>(s(),l("p",{key:pe,class:V(["font-mono text-xs whitespace-pre-wrap",x.error?"text-red-400":"text-zinc-300"])},f(x.text||" "),3))),128))],512)])):u("",!0)],64)):(s(),l("div",Ge,[m("p",Ke," Link "+f(e.projectLabel||"this project")+" to its local checkout — the folder that contains these tests. Piwi runs that folder's own Playwright with the app's bundled Node, so nothing else needs to be installed. ",1),a(n)&&!a(n).exists?(s(),S(ue,{key:0,color:"warning",variant:"soft",icon:"i-lucide-folder-x",title:"The linked folder no longer exists",description:a(n).path},null,8,["description"])):u("",!0),o(O,{icon:"i-lucide-folder-plus",loading:a(r),onClick:a(g)},{default:h(()=>[...c[9]||(c[9]=[w("Choose folder…",-1)])]),_:1},8,["loading","onClick"])]))])]),footer:h(()=>[m("div",et,[a(I)?(s(),S(Q,{key:0,color:a(I).color,variant:"subtle"},{default:h(()=>[w(f(a(I).label),1)]),_:1},8,["color"])):(s(),l("span",tt)),m("div",st,[o(O,{color:"neutral",variant:"ghost",onClick:c[4]||(c[4]=x=>i.value=!1)},{default:h(()=>[...c[13]||(c[13]=[w("Close",-1)])]),_:1}),a(p)?(s(),S(O,{key:0,color:"error",icon:"i-lucide-square",onClick:c[5]||(c[5]=x=>a(T)())},{default:h(()=>[...c[14]||(c[14]=[w("Stop",-1)])]),_:1})):(s(),S(O,{key:1,icon:"i-lucide-play",disabled:!a($)||a(z).length===0||a(r),onClick:c[6]||(c[6]=x=>ce())},{default:h(()=>[w(f(a(d)==="idle"?"Run":"Run again"),1)]),_:1},8,["disabled"]))])])]),_:1},8,["open"])}}}),at=Object.assign(nt,{__name:"DesktopRunLocallyModal"}),lt={key:0,class:"inline-flex"},ot=M({__name:"DesktopRunLocallyButton",props:{projectId:{},projectLabel:{},cases:{}},setup(e){const t=e,i=_(!1);ke(()=>{i.value=!!X()});const n=_(!1),r=B(()=>i.value&&t.projectId!=null&&t.cases.length>0);return(g,d)=>{const p=ae,b=we,C=at;return a(r)?(s(),l("span",lt,[o(b,{text:"Run these tests on this machine"},{default:h(()=>[o(p,{size:"xs",color:"warning",variant:"subtle",icon:"i-lucide-monitor-play",onClick:d[0]||(d[0]=j=>n.value=!0)},{default:h(()=>[...d[2]||(d[2]=[w(" Run locally ",-1)])]),_:1})]),_:1}),o(C,{open:a(n),"onUpdate:open":d[1]||(d[1]=j=>A(n)?n.value=j:null),"project-id":e.projectId,"project-label":e.projectLabel,cases:e.cases},null,8,["open","project-id","project-label","cases"])])):u("",!0)}}}),cs=Object.assign(ot,{__name:"DesktopRunLocallyButton"}),it={class:"flex items-center gap-2.5"},rt=M({__name:"StatusBlock",props:{status:{},size:{}},setup(e){return(t,i)=>{const n=N,r=ne;return s(),l("div",it,[m("div",{class:V(["shrink-0 rounded-lg flex items-center justify-center",[e.size==="sm"?"size-7":"size-8",{"bg-emerald-100 text-emerald-700 dark:bg-emerald-900/40 dark:text-emerald-400":e.status==="passed","bg-rose-100 text-rose-700 dark:bg-rose-900/40 dark:text-rose-400":e.status==="failed"||e.status==="timedout","bg-zinc-100 text-zinc-600 dark:bg-zinc-800 dark:text-zinc-400":e.status==="cancelled"||e.status==="skipped","bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-400":e.status==="didnotrun","bg-blue-100 text-blue-700 dark:bg-blue-900/40 dark:text-blue-400":e.status==="running"||e.status==="initialising"||e.status==="finalizing"}]])},[o(n,{name:("getStatusIcon"in t?t.getStatusIcon:a(ze))(e.status),class:V([e.size==="sm"?"size-3.5":"size-4.5",{"animate-spin":("isStatusInFlight"in t?t.isStatusInFlight:a(ee))(e.status)}])},null,8,["name","class"])],2),o(r,{color:("getStatusColor"in t?t.getStatusColor:a(Me))(e.status),variant:"subtle",class:"capitalize gap-1 items-center"},{default:h(()=>[("isStatusInFlight"in t?t.isStatusInFlight:a(ee))(e.status)?(s(),S(n,{key:0,name:"i-lucide-loader-circle",class:"size-3 animate-spin shrink-0"})):u("",!0),w(" "+f(("formatStatusLabel"in t?t.formatStatusLabel:a(Be))(e.status)),1)]),_:1},8,["color"])])}}}),us=Object.assign(rt,{__name:"StatusBlock"}),ct={class:"flex items-start justify-between gap-2"},ut={class:"flex items-center gap-2 min-w-0"},dt={class:"min-w-0"},mt={class:"text-sm font-medium inline-flex items-center gap-1"},ft={key:0,class:"text-xs text-gray-400 mt-0.5"},gt={key:0,class:"flex items-center gap-1 shrink-0"},pt=M({__name:"BlockCard",props:{title:{},icon:{},subtitle:{},iconClass:{default:"text-primary"},help:{}},setup(e){return(t,i)=>{const n=N,r=Re,g=Ee;return s(),S(g,{class:"shadow-xs",ui:{header:"px-3 py-2.5 sm:px-3",body:"p-3 sm:p-3"}},xe({header:h(()=>[m("div",ct,[m("div",ut,[e.icon?(s(),S(n,{key:0,name:e.icon,class:V(["w-4 h-4 shrink-0",e.iconClass])},null,8,["name","class"])):u("",!0),m("div",dt,[m("span",mt,[w(f(e.title),1),e.help?(s(),S(r,{key:0,topic:e.help},null,8,["topic"])):u("",!0)]),e.subtitle||t.$slots.subtitle?(s(),l("p",ft,[F(t.$slots,"subtitle",{},()=>[w(f(e.subtitle),1)])])):u("",!0)])]),t.$slots.actions?(s(),l("div",gt,[F(t.$slots,"actions")])):u("",!0)])]),default:h(()=>[F(t.$slots,"default")]),_:2},[t.$slots.footer?{name:"footer",fn:h(()=>[F(t.$slots,"footer")]),key:"0"}:void 0]),1024)}}}),re=Object.assign(pt,{__name:"BlockCard"}),ht={class:"space-y-1.5 text-sm"},bt={key:0,class:"flex items-center gap-x-3 gap-y-1 flex-wrap"},vt={key:0,class:"flex items-center gap-1.5"},yt={class:"font-medium"},kt={key:1,class:"flex items-center gap-1.5"},xt={class:"text-xs font-mono bg-gray-100 dark:bg-gray-800 px-1 rounded"},wt={key:2,class:"flex items-center gap-1.5"},_t={class:"text-gray-600 dark:text-gray-400"},$t={key:1,class:"text-gray-400 text-xs break-words"},Ct=M({__name:"SourceInfoCard",props:{scm:{},class:{}},setup(e){return(t,i)=>{const n=N,r=re;return s(),S(r,{class:V(t.$props.class),title:"Source",icon:"i-lucide-git-branch"},{default:h(()=>[m("div",ht,[e.scm.branch||e.scm.commit||e.scm.author?(s(),l("div",bt,[e.scm.branch?(s(),l("span",vt,[o(n,{name:"i-lucide-git-branch",class:"w-3.5 h-3.5 text-gray-400 shrink-0"}),m("span",yt,f(e.scm.branch),1)])):u("",!0),e.scm.commit?(s(),l("span",kt,[o(n,{name:"i-lucide-git-commit-horizontal",class:"w-3.5 h-3.5 text-gray-400 shrink-0"}),m("code",xt,f(e.scm.commit.length>=8?e.scm.commit.substring(0,8):e.scm.commit),1)])):u("",!0),e.scm.author?(s(),l("span",wt,[o(n,{name:"i-lucide-user",class:"w-3.5 h-3.5 text-gray-400 shrink-0"}),m("span",_t,f(e.scm.author),1)])):u("",!0)])):u("",!0),e.scm.commitMessage?(s(),l("p",$t,f(e.scm.commitMessage),1)):u("",!0)])]),_:1},8,["class"])}}}),ds=Object.assign(Ct,{__name:"SourceInfoCard"}),jt={class:"space-y-1.5 text-sm"},It={key:0,class:"flex items-center gap-x-2 gap-y-1 flex-wrap"},St={key:0,class:"rounded-full border border-default px-2 py-0.5 text-xs bg-elevated/60"},Vt={key:1},Ut={key:1,class:"flex items-center gap-1.5"},zt=["href"],Bt={key:1},Mt={key:2,class:"flex items-center gap-x-1.5 gap-y-1 flex-wrap"},Lt={key:0},Rt={key:1,class:"text-gray-300 dark:text-gray-600"},Et={key:2},Pt={key:3,class:"flex items-center gap-x-1.5 gap-y-1 flex-wrap"},Ft={key:0},Nt={key:1,class:"text-gray-300 dark:text-gray-600"},Dt={key:2},Tt={key:4,class:"flex items-center gap-1.5"},Ot={key:0,class:"tabular-nums"},At={key:0,class:"text-gray-400"},Ht=M({__name:"CiEnvCard",props:{ci:{},environment:{},playwrightVersion:{},reporterVersion:{},browser:{},class:{}},setup(e){return(t,i)=>{const n=N,r=Le,g=re;return s(),S(g,{class:V(t.$props.class),title:"CI / Env",icon:"i-lucide-cloud",help:"run.ci-env"},{default:h(()=>[m("div",jt,[e.environment||e.ci?.provider?(s(),l("div",It,[o(n,{name:"i-lucide-cloud",class:"w-3.5 h-3.5 text-gray-400 shrink-0"}),e.environment?(s(),l("span",St,f(e.environment),1)):u("",!0),e.ci?.provider?(s(),l("span",Vt,f(e.ci.provider),1)):u("",!0)])):u("",!0),e.ci?.buildNumber||e.ci?.buildUrl?(s(),l("div",Ut,[o(n,{name:"i-lucide-hash",class:"w-3.5 h-3.5 text-gray-400 shrink-0"}),e.ci?.buildUrl?(s(),l("a",{key:0,href:e.ci.buildUrl,target:"_blank",class:"text-primary hover:underline"},f(e.ci?.buildNumber?`Build #${e.ci.buildNumber}`:"View build"),9,zt)):(s(),l("span",Bt,"Build #"+f(e.ci.buildNumber),1))])):u("",!0),e.ci?.workflow||e.ci?.jobName?(s(),l("div",Mt,[o(n,{name:"i-lucide-workflow",class:"w-3.5 h-3.5 text-gray-400 shrink-0"}),e.ci?.workflow?(s(),l("span",Lt,f(e.ci.workflow),1)):u("",!0),e.ci?.workflow&&e.ci?.jobName?(s(),l("span",Rt,"·")):u("",!0),e.ci?.jobName?(s(),l("span",Et,f(e.ci.jobName),1)):u("",!0)])):u("",!0),e.playwrightVersion||e.reporterVersion?(s(),l("div",Pt,[o(n,{name:"i-lucide-tag",class:"w-3.5 h-3.5 text-gray-400 shrink-0"}),e.playwrightVersion?(s(),l("span",Ft,"Playwright v"+f(e.playwrightVersion),1)):u("",!0),e.playwrightVersion&&e.reporterVersion?(s(),l("span",Nt,"·")):u("",!0),e.reporterVersion?(s(),l("span",Dt,"Piwi v"+f(e.reporterVersion),1)):u("",!0)])):u("",!0),e.browser?(s(),l("div",Tt,[o(r,{browser:{...e.browser,viewport:void 0},size:"sm"},null,8,["browser"]),e.browser.viewport?(s(),l("span",Ot,[w(f(e.browser.viewport.width)+"×"+f(e.browser.viewport.height)+" ",1),e.browser.deviceScaleFactor&&e.browser.deviceScaleFactor!==1?(s(),l("span",At,"@"+f(e.browser.deviceScaleFactor)+"x",1)):u("",!0)])):u("",!0)])):u("",!0)])]),_:1},8,["class"])}}}),ms=Object.assign(Ht,{__name:"CiEnvCard"}),qt={class:"flex flex-col h-full gap-4 p-1 max-lg:overflow-y-auto lg:overflow-hidden"},Gt={key:0,class:"lg:shrink-0"},Kt={class:"lg:shrink-0 max-lg:sticky max-lg:top-0 max-lg:z-10 max-lg:-mx-1 max-lg:bg-(--ui-bg-canvas) max-lg:px-1 max-lg:py-1.5"},Xt=M({__name:"DetailPageLayout",props:oe({tabItems:{},tabPanelClass:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=e,i=se(e,"modelValue"),n=_(!1),r=B(()=>t.tabItems.find(d=>d.value===i.value)?.icon);function g(d){return["min-h-0","lg:flex-1",t.tabPanelClass?.[d]??"overflow-y-auto","max-lg:!block","max-lg:!overflow-visible"]}return(d,p)=>{const b=N,C=ie,j=Pe;return s(),l("div",qt,[d.$slots.summary?(s(),l("div",Gt,[m("div",{class:V(a(n)?"max-lg:hidden":"")},[F(d.$slots,"summary")],2),m("button",{type:"button",class:"lg:hidden mt-2 w-full flex items-center justify-center gap-1 rounded-md border border-default py-1.5 text-xs font-medium text-muted hover:bg-elevated/60 transition-colors",onClick:p[0]||(p[0]=v=>n.value=!a(n))},[o(b,{name:a(n)?"i-lucide-chevron-down":"i-lucide-chevron-up",class:"size-3.5"},null,8,["name"]),w(" "+f(a(n)?"Show summary":"Hide summary"),1)])])):u("",!0),m("div",Kt,[o(C,{modelValue:i.value,"onUpdate:modelValue":p[1]||(p[1]=v=>i.value=v),items:e.tabItems,icon:a(r),size:"md",class:"w-full sm:hidden"},null,8,["modelValue","items","icon"]),o(j,{modelValue:i.value,"onUpdate:modelValue":p[2]||(p[2]=v=>i.value=v),items:e.tabItems,size:"sm",class:"hidden sm:flex",ui:{list:"overflow-x-auto",trigger:"shrink-0"}},null,8,["modelValue","items"])]),(s(!0),l(G,null,le(e.tabItems,v=>(s(),l(G,{key:v.value},[i.value===v.value?(s(),l("div",{key:0,class:V(g(v.value))},[F(d.$slots,`tab-${v.slot??v.value}`)],2)):u("",!0)],64))),128))])}}}),fs=Object.assign(Xt,{__name:"DetailPageLayout"});export{us as _,ds as a,ms as b,re as c,fs as d,cs as e};
@@ -1,4 +1,4 @@
1
- import { a9 as getFailureCluster, ap as getClusterDiagnosis, av as getTestRunCase, aw as getTestRunCaseTraces, ax as getExecutionDiagnosis, ay as classifyEvidenceFile, az as contentTypeForPath } from '../nitro/nitro.mjs';
1
+ import { ad as getFailureCluster, at as getClusterDiagnosis, az as getTestRunCase, aA as getTestRunCaseTraces, aB as getExecutionDiagnosis, aC as classifyEvidenceFile, aD as contentTypeForPath } from '../nitro/nitro.mjs';
2
2
 
3
3
  function caseSlug(title, executionId) {
4
4
  const base = title.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 60);
@@ -1,4 +1,4 @@
1
- import { aS as markers, t as testRuns } from '../nitro/nitro.mjs';
1
+ import { aW as markers, t as testRuns } from '../nitro/nitro.mjs';
2
2
  import { eq, asc, and, lt, desc } from 'drizzle-orm';
3
3
  import { D as DEFAULT_MARKER_CATEGORY, M as MARKER_CATEGORY_IDS } from './marker-categories.mjs';
4
4
 
@@ -1,5 +1,5 @@
1
1
  import { eq, and, isNull, asc, desc, inArray, gt, sql } from 'drizzle-orm';
2
- import { b0 as testCases, ba as quarantinedTests, t as testRuns, w as testRunsCases } from '../nitro/nitro.mjs';
2
+ import { b4 as testCases, be as quarantinedTests, t as testRuns, w as testRunsCases } from '../nitro/nitro.mjs';
3
3
 
4
4
  const RELEASE_AFTER_CONSECUTIVE_PASSES = 5;
5
5
  const STREAK_SCAN_LIMIT = 30;
@@ -1,4 +1,4 @@
1
- import { D as users, cS as apiKeys } from '../nitro/nitro.mjs';
1
+ import { D as users, cK as apiKeys } from '../nitro/nitro.mjs';
2
2
  import { eq, and } from 'drizzle-orm';
3
3
 
4
4
  async function listUsers(db) {
@@ -1,9 +1,69 @@
1
- import { _ as _sfc_main$1 } from './Tooltip-BOazooWP.mjs';
2
- import { o as _sfc_main$p } from './server.mjs';
3
- import { defineComponent, computed, unref, mergeProps, withCtx, createVNode, useSSRContext } from 'vue';
1
+ import { t as tauriCore } from './useTauri-Kf3HE_42.mjs';
2
+ import { o as _sfc_main$p, j as useToast } from './server.mjs';
3
+ import { defineComponent, computed, unref, mergeProps, withCtx, createVNode, ref, watch, toValue, useSSRContext } from 'vue';
4
+ import { x as getBrowserIcon, y as getBrowserHexColor, e as errorMessage } from './index-CU2nZhAa.mjs';
5
+ import { _ as _sfc_main$1 } from './Tooltip-Dv4htNP6.mjs';
4
6
  import { ssrRenderComponent, ssrRenderAttrs } from 'vue/server-renderer';
5
- import { x as getBrowserIcon, y as getBrowserHexColor } from './index-CU2nZhAa.mjs';
6
7
 
8
+ async function getDesktopProjectLink(projectId) {
9
+ const core = tauriCore();
10
+ if (!core || projectId == null || projectId === "") return null;
11
+ try {
12
+ return await core.invoke("desktop_get_project_link", {
13
+ projectId: String(projectId)
14
+ });
15
+ } catch {
16
+ return null;
17
+ }
18
+ }
19
+ function useDesktopProjectLink(projectId) {
20
+ const toast = useToast();
21
+ const available = ref(false);
22
+ const link = ref(null);
23
+ const busy = ref(false);
24
+ async function refresh() {
25
+ link.value = await getDesktopProjectLink(toValue(projectId));
26
+ }
27
+ watch(
28
+ () => toValue(projectId),
29
+ () => {
30
+ if (available.value) void refresh();
31
+ }
32
+ );
33
+ async function pickAndLink() {
34
+ const core = tauriCore();
35
+ const id = toValue(projectId);
36
+ if (!core || id == null || id === "") return false;
37
+ busy.value = true;
38
+ try {
39
+ const path = await core.invoke("desktop_pick_folder");
40
+ if (!path) return false;
41
+ await core.invoke("desktop_set_project_link", { projectId: String(id), path });
42
+ await refresh();
43
+ return true;
44
+ } catch (error) {
45
+ toast.add({ title: "Could not link the folder", description: errorMessage(error), color: "error" });
46
+ return false;
47
+ } finally {
48
+ busy.value = false;
49
+ }
50
+ }
51
+ async function unlink() {
52
+ const core = tauriCore();
53
+ const id = toValue(projectId);
54
+ if (!core || id == null || id === "") return;
55
+ busy.value = true;
56
+ try {
57
+ await core.invoke("desktop_set_project_link", { projectId: String(id), path: null });
58
+ link.value = null;
59
+ } catch (error) {
60
+ toast.add({ title: "Could not unlink the folder", description: errorMessage(error), color: "error" });
61
+ } finally {
62
+ busy.value = false;
63
+ }
64
+ }
65
+ return { available, link, busy, refresh, pickAndLink, unlink };
66
+ }
7
67
  const _sfc_main = /* @__PURE__ */ defineComponent({
8
68
  __name: "BrowserBadge",
9
69
  __ssrInlineRender: true,
@@ -85,5 +145,5 @@ _sfc_main.setup = (props, ctx) => {
85
145
  };
86
146
  const __nuxt_component_3 = Object.assign(_sfc_main, { __name: "BrowserBadge" });
87
147
 
88
- export { __nuxt_component_3 as _ };
89
- //# sourceMappingURL=BrowserBadge-D33lqUcj.mjs.map
148
+ export { __nuxt_component_3 as _, useDesktopProjectLink as u };
149
+ //# sourceMappingURL=BrowserBadge-MFvBwxmD.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserBadge-MFvBwxmD.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/BrowserBadge-MFvBwxmD.js"],"names":["_sfc_main$2"],"mappings":"","x_google_ignoreList":[0]}
@@ -4,10 +4,10 @@ import { a as useComponentProps, b as useAppConfig, D as useForwardProps, E as r
4
4
  import { i as isValueEqualOrExist } from './isValueEqualOrExist-D2qw9YEr.mjs';
5
5
  import { u as useFormControl } from './useFormControl-CZ9So7iX.mjs';
6
6
  import { u as useForwardScopeId } from './useForwardScopeId-D0ameaSU.mjs';
7
- import { V as VisuallyHiddenInput_default } from './VisuallyHiddenInput-D6kBJxVd.mjs';
8
- import { R as RovingFocusItem_default } from './RovingFocusItem-BJSzTBjy.mjs';
7
+ import { V as VisuallyHiddenInput_default } from './VisuallyHiddenInput-BHvzNumK.mjs';
8
+ import { R as RovingFocusItem_default } from './RovingFocusItem--OEHI2P3.mjs';
9
9
  import { L as Label_default } from './Label-DYDR1Oeh.mjs';
10
- import { dg as isEqual } from '../nitro/nitro.mjs';
10
+ import { d8 as isEqual } from '../nitro/nitro.mjs';
11
11
 
12
12
  const [injectCheckboxGroupRootContext] = /* @__PURE__ */ createContext("CheckboxGroupRoot");
13
13
  function isIndeterminate(checked) {
@@ -743,4 +743,4 @@ _sfc_main.setup = (props, ctx) => {
743
743
  };
744
744
 
745
745
  export { _sfc_main as _ };
746
- //# sourceMappingURL=Checkbox-DvUBGagc.mjs.map
746
+ //# sourceMappingURL=Checkbox-4Q5d0fa0.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox-4Q5d0fa0.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/Checkbox-4Q5d0fa0.js"],"names":["_sfc_main$1"],"mappings":"","x_google_ignoreList":[0]}