@piwitests/server 0.16.0 → 0.18.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 (208) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{Dz55UR7w.js → 36cXPVrY.js} +1 -1
  3. package/.output/public/_nuxt/{IFqRT_xJ.js → 87SGk1nu.js} +1 -1
  4. package/.output/public/_nuxt/{bAfTAihV.js → AjuKBlzz.js} +1 -1
  5. package/.output/public/_nuxt/{1AB111xL.js → B1CB30tg.js} +1 -1
  6. package/.output/public/_nuxt/{Br2K9yi_.js → B6IHiVa1.js} +1 -1
  7. package/.output/public/_nuxt/{iwD5atI2.js → B6rt3IcG.js} +1 -1
  8. package/.output/public/_nuxt/{Bvfmwzgw.js → BAaSmp8J.js} +1 -1
  9. package/.output/public/_nuxt/{DRtTLQri.js → BAkJhSAW.js} +1 -1
  10. package/.output/public/_nuxt/{DuBBqqbF.js → BCArQk0c.js} +1 -1
  11. package/.output/public/_nuxt/{BV83yObd.js → BEB2Mv6B.js} +1 -1
  12. package/.output/public/_nuxt/BFjmLXYo.js +8 -0
  13. package/.output/public/_nuxt/BJltXwHg.js +1 -0
  14. package/.output/public/_nuxt/{CuYYdFBL.js → BKaU95es.js} +1 -1
  15. package/.output/public/_nuxt/{2xvsvjLO.js → BReNbog6.js} +1 -1
  16. package/.output/public/_nuxt/{DJS3Bf50.js → BTYiG93l.js} +1 -1
  17. package/.output/public/_nuxt/{k-z_VVTK.js → BUMZHDRC.js} +1 -1
  18. package/.output/public/_nuxt/BVDBIVAQ.js +1 -0
  19. package/.output/public/_nuxt/{JCFZINev.js → B_aSGB8S.js} +1 -1
  20. package/.output/public/_nuxt/{e1zUTrBb.js → BaDv5D7A.js} +1 -1
  21. package/.output/public/_nuxt/{DjZKuUMz.js → BdHdHyop.js} +1 -1
  22. package/.output/public/_nuxt/{CJFqA_QW.js → BfoG8R5a.js} +1 -1
  23. package/.output/public/_nuxt/{CgoAUz76.js → Bi3i470l.js} +1 -1
  24. package/.output/public/_nuxt/Bi9DO8jm.js +1 -0
  25. package/.output/public/_nuxt/{BS0gKVuF.js → BiX7c2qU.js} +1 -1
  26. package/.output/public/_nuxt/{-KQO1A4C.js → BoC6qaRF.js} +4 -4
  27. package/.output/public/_nuxt/{CSYJwpXG.js → BsDB_eCd.js} +1 -1
  28. package/.output/public/_nuxt/{B43OGXzV.js → BuuvTH9e.js} +1 -1
  29. package/.output/public/_nuxt/{BRKa6EQR.js → C11lmBd4.js} +1 -1
  30. package/.output/public/_nuxt/C4AfzZER.js +47 -0
  31. package/.output/public/_nuxt/{BBdfPriC.js → C7ZVzS0K.js} +1 -1
  32. package/.output/public/_nuxt/{CQeMb57w.js → C8cz5feG.js} +1 -1
  33. package/.output/public/_nuxt/{Dzz9_Z0u.js → C9EpbPNU.js} +1 -1
  34. package/.output/public/_nuxt/{qzAP_nm7.js → C9ahP7km.js} +1 -1
  35. package/.output/public/_nuxt/{N3pCB6-m.js → CBEM3L1q.js} +1 -1
  36. package/.output/public/_nuxt/{C1K3r_fc.js → CCsl9MOZ.js} +1 -1
  37. package/.output/public/_nuxt/{BpceIssd.js → CCw3Tx4S.js} +1 -1
  38. package/.output/public/_nuxt/{B3NbDoBP.js → CGq9qR-0.js} +1 -1
  39. package/.output/public/_nuxt/{BoRFLTAO.js → CLdGRzLL.js} +1 -1
  40. package/.output/public/_nuxt/{BZekCf_x.js → CP0vUzbd.js} +1 -1
  41. package/.output/public/_nuxt/CPZ5wygb.js +1 -0
  42. package/.output/public/_nuxt/{CTdvGdc2.js → CRcjGmf7.js} +1 -1
  43. package/.output/public/_nuxt/{B2lYFco4.js → CRpbGS75.js} +1 -1
  44. package/.output/public/_nuxt/CTgM5Fke.js +2 -0
  45. package/.output/public/_nuxt/{DcCNnjKl.js → CU3W9YrI.js} +1 -1
  46. package/.output/public/_nuxt/{BIksQZfR.js → CUDeMcEK.js} +1 -1
  47. package/.output/public/_nuxt/{BpNqHxg2.js → CYIR2GbL.js} +1 -1
  48. package/.output/public/_nuxt/{ze9-Ill2.js → Ccit_CX1.js} +1 -1
  49. package/.output/public/_nuxt/CiPH-swI.js +1 -0
  50. package/.output/public/_nuxt/{BkDfdHFm.js → ClIKZ4qY.js} +1 -1
  51. package/.output/public/_nuxt/{BVW5qIDP.js → ClVRQpP_.js} +1 -1
  52. package/.output/public/_nuxt/CmbjAoQu.js +1 -0
  53. package/.output/public/_nuxt/Cx65B3c3.js +1 -0
  54. package/.output/public/_nuxt/{B3sNtVnf.js → D1ttGJfs.js} +1 -1
  55. package/.output/public/_nuxt/{DuMv-ugy.js → D3MWm6JP.js} +1 -1
  56. package/.output/public/_nuxt/{BPKwYP2Q.js → D3SYPlEB.js} +28 -28
  57. package/.output/public/_nuxt/{BGYbnqA7.js → D4SFgXAf.js} +1 -1
  58. package/.output/public/_nuxt/D51_cB9D.js +1 -0
  59. package/.output/public/_nuxt/{DbeHHTk-.js → D8YZvjas.js} +1 -1
  60. package/.output/public/_nuxt/{DgYM3eyi.js → DB3ljns7.js} +1 -1
  61. package/.output/public/_nuxt/{Bzl2H_vl.js → DC51KKt4.js} +1 -1
  62. package/.output/public/_nuxt/{BR9H8k-L.js → DCMFuzDI.js} +1 -1
  63. package/.output/public/_nuxt/{mfzslNx_.js → DIA_NAIv.js} +1 -1
  64. package/.output/public/_nuxt/{CKB_doYB.js → DM_YaJgJ.js} +1 -1
  65. package/.output/public/_nuxt/{BuZOa2M3.js → DOr_4nln.js} +2 -2
  66. package/.output/public/_nuxt/{oNq5pd3r.js → DRE6Aqqp.js} +1 -1
  67. package/.output/public/_nuxt/{CMYQpoOI.js → DVgMaBxD.js} +1 -1
  68. package/.output/public/_nuxt/{C3r_Sv1p.js → DaewB_zT.js} +1 -1
  69. package/.output/public/_nuxt/{DdbrJwT-.js → Db_-yjYg.js} +1 -1
  70. package/.output/public/_nuxt/{CpO-ABDW.js → Dbg8z684.js} +1 -1
  71. package/.output/public/_nuxt/{DOuoR2Pk.js → DcfRfTaA.js} +1 -1
  72. package/.output/public/_nuxt/{BpIsBP5g.js → Dm1_3W9g.js} +1 -1
  73. package/.output/public/_nuxt/{ABGJk0pu.js → DnThe2U0.js} +1 -1
  74. package/.output/public/_nuxt/{C38aZbFJ.js → Do6zIWQf.js} +1 -1
  75. package/.output/public/_nuxt/{B7yG1G_l.js → DoFSKAvY.js} +1 -1
  76. package/.output/public/_nuxt/{C8RBRg7I.js → DoYgYLOd.js} +1 -1
  77. package/.output/public/_nuxt/{BIf1R_fu.js → Doul3p1_.js} +1 -1
  78. package/.output/public/_nuxt/{BQrSEuzu.js → DraETso1.js} +1 -1
  79. package/.output/public/_nuxt/{DszOHBMG.js → Dwp3GkV-.js} +1 -1
  80. package/.output/public/_nuxt/{DqnyWaSQ.js → Dy4TloG3.js} +1 -1
  81. package/.output/public/_nuxt/{DfcAIbcX.js → EltzgiyS.js} +1 -1
  82. package/.output/public/_nuxt/{D2jhe9JK.js → HTQtMbWb.js} +1 -1
  83. package/.output/public/_nuxt/{xUrLy-Zn.js → KYucVFu7.js} +1 -1
  84. package/.output/public/_nuxt/TBDx0s9p.js +3 -0
  85. package/.output/public/_nuxt/{BdFEUAlx.js → Tt5LX5Y-.js} +1 -1
  86. package/.output/public/_nuxt/{d5ZB3uxF.js → Vnfkr1pJ.js} +1 -1
  87. package/.output/public/_nuxt/{DIkLLyR6.js → WAaPPk0g.js} +2 -2
  88. package/.output/public/_nuxt/builds/latest.json +1 -1
  89. package/.output/public/_nuxt/builds/meta/ed1db2e5-9865-4231-9605-4edd5272e164.json +1 -0
  90. package/.output/public/_nuxt/{DhA17dqR.js → empGC_x-.js} +1 -1
  91. package/.output/public/_nuxt/entry.ChQMshd4.css +1 -0
  92. package/.output/public/_nuxt/{nCjfWTGm.js → l0QnzFNM.js} +1 -1
  93. package/.output/public/_nuxt/{l0gdGdar.js → lowCGL2S.js} +1 -1
  94. package/.output/public/_nuxt/{DL20rwkA.js → mlAADjK3.js} +1 -1
  95. package/.output/public/_nuxt/{D33On6AX.js → n-QWmQgc.js} +1 -1
  96. package/.output/public/_nuxt/{CoHGrO41.js → oFIS9u6t.js} +2 -2
  97. package/.output/public/_nuxt/{BY4oA2IH.js → oWY3I9uX.js} +1 -1
  98. package/.output/public/_nuxt/{D4VpoHDP.js → q0DPzLKN.js} +1 -1
  99. package/.output/public/_nuxt/{uKeO2H7F.js → quV6tp4n.js} +1 -1
  100. package/.output/public/_nuxt/{B33X4zrC.js → riEUDnED.js} +1 -1
  101. package/.output/public/_nuxt/{mGJLLqyN.js → rm7OkgDG.js} +1 -1
  102. package/.output/public/_nuxt/uaqMzXqE.js +5 -0
  103. package/.output/public/_nuxt/{DAWn6Z7h.js → va1mwSm9.js} +1 -1
  104. package/.output/public/_nuxt/{DCpmQ47_.js → wGpfdK6o.js} +1 -1
  105. package/.output/public/_nuxt/{Bb64FEFL.js → wQZj69OY.js} +1 -1
  106. package/.output/public/_nuxt/wgcgHmRR.js +1 -0
  107. package/.output/public/sw.js +1 -1
  108. package/.output/server/chunks/build/{Checkbox-7ZiMz60w.mjs → Checkbox-cVOSIY93.mjs} +2 -2
  109. package/.output/server/chunks/build/Checkbox-cVOSIY93.mjs.map +1 -0
  110. package/.output/server/chunks/build/{CiEnvCard-DNxBVvx4.mjs → CiEnvCard-DXPOhdSG.mjs} +2 -2
  111. package/.output/server/chunks/build/CiEnvCard-DXPOhdSG.mjs.map +1 -0
  112. package/.output/server/chunks/build/DataLocationCard-D6xSOrme.mjs +102 -0
  113. package/.output/server/chunks/build/DataLocationCard-D6xSOrme.mjs.map +1 -0
  114. package/.output/server/chunks/build/{ProjectTestCasesTable-9418EI8J.mjs → ProjectTestCasesTable-9Ia825h8.mjs} +2 -2
  115. package/.output/server/chunks/build/ProjectTestCasesTable-9Ia825h8.mjs.map +1 -0
  116. package/.output/server/chunks/build/{Select-COwTIQlV.mjs → Select-ppPz926C.mjs} +3 -2
  117. package/.output/server/chunks/build/Select-ppPz926C.mjs.map +1 -0
  118. package/.output/server/chunks/build/{SelectMenu-BkyAHFCM.mjs → SelectMenu-799c_Ils.mjs} +2 -2
  119. package/.output/server/chunks/build/{SelectMenu-BkyAHFCM.mjs.map → SelectMenu-799c_Ils.mjs.map} +1 -1
  120. package/.output/server/chunks/build/{Switch-htSKgC38.mjs → Switch-xQQ3_ME1.mjs} +2 -2
  121. package/.output/server/chunks/build/Switch-xQQ3_ME1.mjs.map +1 -0
  122. package/.output/server/chunks/build/{_id_-CnwAyvvS.mjs → _id_-B2yirIuA.mjs} +5 -4
  123. package/.output/server/chunks/build/{_id_-CnwAyvvS.mjs.map → _id_-B2yirIuA.mjs.map} +1 -1
  124. package/.output/server/chunks/build/{_id_-BDqvTM9D.mjs → _id_-B4V5fop6.mjs} +5 -4
  125. package/.output/server/chunks/build/{_id_-BDqvTM9D.mjs.map → _id_-B4V5fop6.mjs.map} +1 -1
  126. package/.output/server/chunks/build/{_id_-Dy67M9Dj.mjs → _id_-bWcP2xFl.mjs} +8 -7
  127. package/.output/server/chunks/build/{_id_-Dy67M9Dj.mjs.map → _id_-bWcP2xFl.mjs.map} +1 -1
  128. package/.output/server/chunks/build/about-CoJjvUwM.mjs +733 -0
  129. package/.output/server/chunks/build/about-CoJjvUwM.mjs.map +1 -0
  130. package/.output/server/chunks/build/{ai-V3YOh3yx.mjs → ai-7jdaPOmj.mjs} +6 -5
  131. package/.output/server/chunks/build/{ai-V3YOh3yx.mjs.map → ai-7jdaPOmj.mjs.map} +1 -1
  132. package/.output/server/chunks/build/{analytics-BBlAEmj5.mjs → analytics-B276WPeU.mjs} +7 -6
  133. package/.output/server/chunks/build/{analytics-BBlAEmj5.mjs.map → analytics-B276WPeU.mjs.map} +1 -1
  134. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  135. package/.output/server/chunks/build/{default-BfMirIgG.mjs → default-BSzdkM_L.mjs} +9 -7
  136. package/.output/server/chunks/build/default-BSzdkM_L.mjs.map +1 -0
  137. package/.output/server/chunks/build/{docs-DtNcJCyb.mjs → docs-BN_x1OW3.mjs} +53 -8
  138. package/.output/server/chunks/build/{docs-DtNcJCyb.mjs.map → docs-BN_x1OW3.mjs.map} +1 -1
  139. package/.output/server/chunks/build/{edit-Dsf11mL5.mjs → edit-C9Z7oZeu.mjs} +5 -4
  140. package/.output/server/chunks/build/edit-C9Z7oZeu.mjs.map +1 -0
  141. package/.output/server/chunks/build/handleAndDispatchCustomEvent-Bk_AVSSo.mjs +13 -0
  142. package/.output/server/chunks/build/handleAndDispatchCustomEvent-Bk_AVSSo.mjs.map +1 -0
  143. package/.output/server/chunks/build/{index-DzEgjHlB.mjs → index-BK9PTRpd.mjs} +24 -8
  144. package/.output/server/chunks/build/{index-DzEgjHlB.mjs.map → index-BK9PTRpd.mjs.map} +1 -1
  145. package/.output/server/chunks/build/{index-BgpEKTSq.mjs → index-DVUtBexc.mjs} +9 -8
  146. package/.output/server/chunks/build/{index-BgpEKTSq.mjs.map → index-DVUtBexc.mjs.map} +1 -1
  147. package/.output/server/chunks/build/{mcp-CXwa3xU3.mjs → mcp-_o6cMS6m.mjs} +347 -158
  148. package/.output/server/chunks/build/mcp-_o6cMS6m.mjs.map +1 -0
  149. package/.output/server/chunks/build/{notifications-hJj8tbAT.mjs → notifications-Dzm9c0u_.mjs} +4 -3
  150. package/.output/server/chunks/build/notifications-Dzm9c0u_.mjs.map +1 -0
  151. package/.output/server/chunks/build/server.mjs +17 -17
  152. package/.output/server/chunks/build/{settings-metadata-Cp0dx0vm.mjs → settings-metadata-B0wo5R-W.mjs} +3 -1
  153. package/.output/server/chunks/build/settings-metadata-B0wo5R-W.mjs.map +1 -0
  154. package/.output/server/chunks/build/{settings-Ci_7EXYQ.mjs → settings-pNyPBXVa.mjs} +4 -3
  155. package/.output/server/chunks/build/settings-pNyPBXVa.mjs.map +1 -0
  156. package/.output/server/chunks/build/{storage-CM-Pd-9E.mjs → storage-XelzuyPy.mjs} +16 -182
  157. package/.output/server/chunks/build/storage-XelzuyPy.mjs.map +1 -0
  158. package/.output/server/chunks/build/{test-cases-DkGQB027.mjs → test-cases-pmOxi-AN.mjs} +5 -4
  159. package/.output/server/chunks/build/test-cases-pmOxi-AN.mjs.map +1 -0
  160. package/.output/server/chunks/build/useFormControl-BLpq1s4O.mjs +9 -0
  161. package/.output/server/chunks/build/useFormControl-BLpq1s4O.mjs.map +1 -0
  162. package/.output/server/chunks/build/useIsDesktop-BS13spVj.mjs +9 -0
  163. package/.output/server/chunks/build/useIsDesktop-BS13spVj.mjs.map +1 -0
  164. package/.output/server/chunks/build/{useSettingsNav-D2knPCqF.mjs → useSettingsNav-NjI2seBy.mjs} +5 -3
  165. package/.output/server/chunks/build/useSettingsNav-NjI2seBy.mjs.map +1 -0
  166. package/.output/server/chunks/build/useTauri-lRT8zkLv.mjs +7 -0
  167. package/.output/server/chunks/build/useTauri-lRT8zkLv.mjs.map +1 -0
  168. package/.output/server/chunks/build/{virtualizer-0-UBy7xl.mjs → virtualizer-ZaqK4guJ.mjs} +3 -2
  169. package/.output/server/chunks/build/virtualizer-ZaqK4guJ.mjs.map +1 -0
  170. package/.output/server/chunks/build/{wasted-time-L4kBV5Nh.mjs → wasted-time-CguAF9zc.mjs} +2 -2
  171. package/.output/server/chunks/build/wasted-time-CguAF9zc.mjs.map +1 -0
  172. package/.output/server/chunks/nitro/nitro.mjs +664 -649
  173. package/.output/server/package.json +1 -1
  174. package/package.json +1 -1
  175. package/.output/public/_nuxt/B6Jp7fpa.js +0 -46
  176. package/.output/public/_nuxt/BP_SWi7S.js +0 -1
  177. package/.output/public/_nuxt/Bf62wdzp.js +0 -1
  178. package/.output/public/_nuxt/C219JuBV.js +0 -1
  179. package/.output/public/_nuxt/CCRRqXez.js +0 -1
  180. package/.output/public/_nuxt/CX1dcT4v.js +0 -1
  181. package/.output/public/_nuxt/CdME81ij.js +0 -2
  182. package/.output/public/_nuxt/Dsk4Ic18.js +0 -7
  183. package/.output/public/_nuxt/HoKG9cc2.js +0 -1
  184. package/.output/public/_nuxt/Kc7La4sL.js +0 -5
  185. package/.output/public/_nuxt/WctJXszi.js +0 -3
  186. package/.output/public/_nuxt/builds/meta/5182c9fb-56a6-4df2-9685-4020a08ce7a5.json +0 -1
  187. package/.output/public/_nuxt/entry.BsmKRJzR.css +0 -1
  188. package/.output/public/_nuxt/jIF87ALb.js +0 -1
  189. package/.output/server/chunks/build/Checkbox-7ZiMz60w.mjs.map +0 -1
  190. package/.output/server/chunks/build/CiEnvCard-DNxBVvx4.mjs.map +0 -1
  191. package/.output/server/chunks/build/ProjectTestCasesTable-9418EI8J.mjs.map +0 -1
  192. package/.output/server/chunks/build/Select-COwTIQlV.mjs.map +0 -1
  193. package/.output/server/chunks/build/Switch-htSKgC38.mjs.map +0 -1
  194. package/.output/server/chunks/build/about-FB9PYAHK.mjs +0 -313
  195. package/.output/server/chunks/build/about-FB9PYAHK.mjs.map +0 -1
  196. package/.output/server/chunks/build/default-BfMirIgG.mjs.map +0 -1
  197. package/.output/server/chunks/build/edit-Dsf11mL5.mjs.map +0 -1
  198. package/.output/server/chunks/build/mcp-CXwa3xU3.mjs.map +0 -1
  199. package/.output/server/chunks/build/notifications-hJj8tbAT.mjs.map +0 -1
  200. package/.output/server/chunks/build/settings-Ci_7EXYQ.mjs.map +0 -1
  201. package/.output/server/chunks/build/settings-metadata-Cp0dx0vm.mjs.map +0 -1
  202. package/.output/server/chunks/build/storage-CM-Pd-9E.mjs.map +0 -1
  203. package/.output/server/chunks/build/test-cases-DkGQB027.mjs.map +0 -1
  204. package/.output/server/chunks/build/useFormControl-DFTjniPG.mjs +0 -19
  205. package/.output/server/chunks/build/useFormControl-DFTjniPG.mjs.map +0 -1
  206. package/.output/server/chunks/build/useSettingsNav-D2knPCqF.mjs.map +0 -1
  207. package/.output/server/chunks/build/virtualizer-0-UBy7xl.mjs.map +0 -1
  208. package/.output/server/chunks/build/wasted-time-L4kBV5Nh.mjs.map +0 -1
@@ -0,0 +1,733 @@
1
+ import { _ as __nuxt_component_11 } from './SectionCard-COd9TuDq.mjs';
2
+ import { _ as __nuxt_component_1, a as __nuxt_component_2 } from './StatTile-D61Vzo6e.mjs';
3
+ import { _ as __nuxt_component_0 } from './DataLocationCard-D6xSOrme.mjs';
4
+ import { W as _sfc_main$l, o as _sfc_main$p, r as useRuntimeConfig, m as _sfc_main$k, j as useToast } from './server.mjs';
5
+ import { _ as __nuxt_component_5$1 } from './CodeBlock-BGwNmJ8J.mjs';
6
+ import { defineComponent, withAsyncContext, computed, mergeProps, withCtx, unref, createVNode, openBlock, createBlock, createCommentVNode, createTextVNode, toDisplayString, ref, useSSRContext } from 'vue';
7
+ import { ssrRenderAttrs, ssrRenderComponent, ssrInterpolate } from 'vue/server-renderer';
8
+ import { u as useCopy } from './useCopy-BQQKcwlq.mjs';
9
+ import { _ as _sfc_main$4 } from './Switch-xQQ3_ME1.mjs';
10
+ import { t as tauriCore } from './useTauri-lRT8zkLv.mjs';
11
+ import { a as __nuxt_component_9 } from './HelpHint-YEMWtKu1.mjs';
12
+ import { f as formatRelativeTime } from './index-CULN3-en.mjs';
13
+ import { u as useIsDesktop } from './useIsDesktop-BS13spVj.mjs';
14
+ import { u as useFetch } from './fetch-8kznMtBM.mjs';
15
+ import './Card-BQP_oZkQ.mjs';
16
+ import '../nitro/nitro.mjs';
17
+ import 'node:crypto';
18
+ import 'drizzle-orm';
19
+ import 'path';
20
+ import 'fs/promises';
21
+ import 'zlib';
22
+ import 'util';
23
+ import 'pixelmatch';
24
+ import 'sharp';
25
+ import '@anthropic-ai/sdk';
26
+ import 'nodemailer';
27
+ import 'node:util';
28
+ import 'rou3';
29
+ import 'fs';
30
+ import '@aws-sdk/client-s3';
31
+ import 'node:http';
32
+ import 'node:https';
33
+ import 'node:events';
34
+ import 'node:buffer';
35
+ import 'node:fs';
36
+ import 'node:path';
37
+ import 'drizzle-orm/libsql/sqlite3';
38
+ import 'drizzle-orm/sqlite-core';
39
+ import 'drizzle-orm/pg-core';
40
+ import 'url';
41
+ import 'node:async_hooks';
42
+ import 'node:zlib';
43
+ import 'consola';
44
+ import 'node:url';
45
+ import '@iconify/utils';
46
+ import 'vue-router';
47
+ import '@iconify/vue';
48
+ import 'tailwindcss/colors';
49
+ import 'tailwind-variants';
50
+ import '@iconify/utils/lib/css/icon';
51
+ import 'perfect-debounce';
52
+ import '@floating-ui/vue';
53
+ import 'aria-hidden';
54
+ import '../routes/renderer.mjs';
55
+ import 'vue-bundle-renderer/runtime';
56
+ import 'unhead/server';
57
+ import 'devalue';
58
+ import 'unhead/plugins';
59
+ import 'unhead/utils';
60
+ import 'highlight.js/lib/core';
61
+ import 'highlight.js/lib/languages/typescript';
62
+ import 'highlight.js/lib/languages/javascript';
63
+ import 'highlight.js/lib/languages/bash';
64
+ import 'highlight.js/lib/languages/json';
65
+ import 'highlight.js/lib/languages/diff';
66
+ import './Label-DBvbHd3A.mjs';
67
+ import './useFormControl-BLpq1s4O.mjs';
68
+ import './useForwardScopeId-D0ameaSU.mjs';
69
+ import './VisuallyHiddenInput-C9eJVpPW.mjs';
70
+ import './help-content-DmFnuhNu.mjs';
71
+ import 'date-fns';
72
+ import '@vue/shared';
73
+
74
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
75
+ __name: "DesktopReporterCard",
76
+ __ssrInlineRender: true,
77
+ props: {
78
+ url: {},
79
+ token: {}
80
+ },
81
+ setup(__props) {
82
+ const props = __props;
83
+ const { copy } = useCopy();
84
+ const snippet = computed(
85
+ () => `reporter: [
86
+ ['@piwitests/reporter', {
87
+ serverUrl: '${props.url}',
88
+ projectName: 'my-project',
89
+ apiKey: '${props.token}',
90
+ }],
91
+ ],`
92
+ );
93
+ return (_ctx, _push, _parent, _attrs) => {
94
+ const _component_SectionCard = __nuxt_component_11;
95
+ const _component_UButton = _sfc_main$k;
96
+ const _component_CodeBlock = __nuxt_component_5$1;
97
+ _push(ssrRenderComponent(_component_SectionCard, mergeProps({
98
+ icon: "i-lucide-upload",
99
+ title: "Send results to this app"
100
+ }, _attrs), {
101
+ subtitle: withCtx((_, _push2, _parent2, _scopeId) => {
102
+ if (_push2) {
103
+ _push2(` Point the Playwright reporter at this desktop app. The access token is a local secret — prefer passing it via a <code${_scopeId}>PIWI_API_KEY</code> env var rather than committing it. `);
104
+ } else {
105
+ return [
106
+ createTextVNode(" Point the Playwright reporter at this desktop app. The access token is a local secret — prefer passing it via a "),
107
+ createVNode("code", null, "PIWI_API_KEY"),
108
+ createTextVNode(" env var rather than committing it. ")
109
+ ];
110
+ }
111
+ }),
112
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
113
+ if (_push2) {
114
+ _push2(`<div class="space-y-3 text-sm"${_scopeId}><div class="space-y-1"${_scopeId}><div class="text-muted"${_scopeId}>Access token</div><div class="flex items-start gap-2"${_scopeId}><code class="text-xs break-all flex-1"${_scopeId}>${ssrInterpolate(__props.token)}</code>`);
115
+ _push2(ssrRenderComponent(_component_UButton, {
116
+ icon: "i-lucide-copy",
117
+ color: "neutral",
118
+ variant: "ghost",
119
+ size: "xs",
120
+ "aria-label": "Copy access token",
121
+ onClick: ($event) => unref(copy)(__props.token, { toast: true })
122
+ }, null, _parent2, _scopeId));
123
+ _push2(`</div></div><div class="space-y-1"${_scopeId}><div class="text-muted"${_scopeId}>playwright.config.ts</div>`);
124
+ _push2(ssrRenderComponent(_component_CodeBlock, {
125
+ code: unref(snippet),
126
+ lang: "typescript"
127
+ }, null, _parent2, _scopeId));
128
+ _push2(`</div></div>`);
129
+ } else {
130
+ return [
131
+ createVNode("div", { class: "space-y-3 text-sm" }, [
132
+ createVNode("div", { class: "space-y-1" }, [
133
+ createVNode("div", { class: "text-muted" }, "Access token"),
134
+ createVNode("div", { class: "flex items-start gap-2" }, [
135
+ createVNode("code", { class: "text-xs break-all flex-1" }, toDisplayString(__props.token), 1),
136
+ createVNode(_component_UButton, {
137
+ icon: "i-lucide-copy",
138
+ color: "neutral",
139
+ variant: "ghost",
140
+ size: "xs",
141
+ "aria-label": "Copy access token",
142
+ onClick: ($event) => unref(copy)(__props.token, { toast: true })
143
+ }, null, 8, ["onClick"])
144
+ ])
145
+ ]),
146
+ createVNode("div", { class: "space-y-1" }, [
147
+ createVNode("div", { class: "text-muted" }, "playwright.config.ts"),
148
+ createVNode(_component_CodeBlock, {
149
+ code: unref(snippet),
150
+ lang: "typescript"
151
+ }, null, 8, ["code"])
152
+ ])
153
+ ])
154
+ ];
155
+ }
156
+ }),
157
+ _: 1
158
+ }, _parent));
159
+ };
160
+ }
161
+ });
162
+ const _sfc_setup$3 = _sfc_main$3.setup;
163
+ _sfc_main$3.setup = (props, ctx) => {
164
+ const ssrContext = useSSRContext();
165
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/desktop/DesktopReporterCard.vue");
166
+ return _sfc_setup$3 ? _sfc_setup$3(props, ctx) : void 0;
167
+ };
168
+ const __nuxt_component_4 = Object.assign(_sfc_main$3, { __name: "DesktopReporterCard" });
169
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
170
+ __name: "DesktopMcpCard",
171
+ __ssrInlineRender: true,
172
+ props: {
173
+ url: {},
174
+ token: {}
175
+ },
176
+ setup(__props) {
177
+ const props = __props;
178
+ const { copy } = useCopy();
179
+ const mcpUrl = computed(() => `${props.url}/mcp`);
180
+ const claudeCodeSnippet = computed(
181
+ () => `claude mcp add --transport http piwi ${mcpUrl.value} \\
182
+ --header "Authorization: Bearer ${props.token}"`
183
+ );
184
+ return (_ctx, _push, _parent, _attrs) => {
185
+ const _component_SectionCard = __nuxt_component_11;
186
+ const _component_UButton = _sfc_main$k;
187
+ const _component_CodeBlock = __nuxt_component_5$1;
188
+ _push(ssrRenderComponent(_component_SectionCard, mergeProps({
189
+ icon: "i-lucide-plug",
190
+ title: "Connect an AI assistant (MCP)"
191
+ }, _attrs), {
192
+ subtitle: withCtx((_, _push2, _parent2, _scopeId) => {
193
+ if (_push2) {
194
+ _push2(` This app exposes a local MCP endpoint. Point your client at the URL below and authenticate with the access token — it is the Bearer token, even though sign-in is off. `);
195
+ } else {
196
+ return [
197
+ createTextVNode(" This app exposes a local MCP endpoint. Point your client at the URL below and authenticate with the access token — it is the Bearer token, even though sign-in is off. ")
198
+ ];
199
+ }
200
+ }),
201
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
202
+ if (_push2) {
203
+ _push2(`<div class="space-y-3 text-sm"${_scopeId}><div class="space-y-1"${_scopeId}><div class="text-muted"${_scopeId}>MCP URL</div><div class="flex items-start gap-2"${_scopeId}><code class="text-xs break-all flex-1"${_scopeId}>${ssrInterpolate(unref(mcpUrl))}</code>`);
204
+ _push2(ssrRenderComponent(_component_UButton, {
205
+ icon: "i-lucide-copy",
206
+ color: "neutral",
207
+ variant: "ghost",
208
+ size: "xs",
209
+ "aria-label": "Copy MCP URL",
210
+ onClick: ($event) => unref(copy)(unref(mcpUrl), { toast: true })
211
+ }, null, _parent2, _scopeId));
212
+ _push2(`</div></div><div class="space-y-1"${_scopeId}><div class="text-muted"${_scopeId}>Access token</div><div class="flex items-start gap-2"${_scopeId}><code class="text-xs break-all flex-1"${_scopeId}>${ssrInterpolate(__props.token)}</code>`);
213
+ _push2(ssrRenderComponent(_component_UButton, {
214
+ icon: "i-lucide-copy",
215
+ color: "neutral",
216
+ variant: "ghost",
217
+ size: "xs",
218
+ "aria-label": "Copy access token",
219
+ onClick: ($event) => unref(copy)(__props.token, { toast: true })
220
+ }, null, _parent2, _scopeId));
221
+ _push2(`</div></div><div class="space-y-1"${_scopeId}><div class="text-muted"${_scopeId}>Claude Code</div>`);
222
+ _push2(ssrRenderComponent(_component_CodeBlock, {
223
+ code: unref(claudeCodeSnippet),
224
+ lang: "sh"
225
+ }, null, _parent2, _scopeId));
226
+ _push2(`</div></div>`);
227
+ } else {
228
+ return [
229
+ createVNode("div", { class: "space-y-3 text-sm" }, [
230
+ createVNode("div", { class: "space-y-1" }, [
231
+ createVNode("div", { class: "text-muted" }, "MCP URL"),
232
+ createVNode("div", { class: "flex items-start gap-2" }, [
233
+ createVNode("code", { class: "text-xs break-all flex-1" }, toDisplayString(unref(mcpUrl)), 1),
234
+ createVNode(_component_UButton, {
235
+ icon: "i-lucide-copy",
236
+ color: "neutral",
237
+ variant: "ghost",
238
+ size: "xs",
239
+ "aria-label": "Copy MCP URL",
240
+ onClick: ($event) => unref(copy)(unref(mcpUrl), { toast: true })
241
+ }, null, 8, ["onClick"])
242
+ ])
243
+ ]),
244
+ createVNode("div", { class: "space-y-1" }, [
245
+ createVNode("div", { class: "text-muted" }, "Access token"),
246
+ createVNode("div", { class: "flex items-start gap-2" }, [
247
+ createVNode("code", { class: "text-xs break-all flex-1" }, toDisplayString(__props.token), 1),
248
+ createVNode(_component_UButton, {
249
+ icon: "i-lucide-copy",
250
+ color: "neutral",
251
+ variant: "ghost",
252
+ size: "xs",
253
+ "aria-label": "Copy access token",
254
+ onClick: ($event) => unref(copy)(__props.token, { toast: true })
255
+ }, null, 8, ["onClick"])
256
+ ])
257
+ ]),
258
+ createVNode("div", { class: "space-y-1" }, [
259
+ createVNode("div", { class: "text-muted" }, "Claude Code"),
260
+ createVNode(_component_CodeBlock, {
261
+ code: unref(claudeCodeSnippet),
262
+ lang: "sh"
263
+ }, null, 8, ["code"])
264
+ ])
265
+ ])
266
+ ];
267
+ }
268
+ }),
269
+ _: 1
270
+ }, _parent));
271
+ };
272
+ }
273
+ });
274
+ const _sfc_setup$2 = _sfc_main$2.setup;
275
+ _sfc_main$2.setup = (props, ctx) => {
276
+ const ssrContext = useSSRContext();
277
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/desktop/DesktopMcpCard.vue");
278
+ return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
279
+ };
280
+ const __nuxt_component_5 = Object.assign(_sfc_main$2, { __name: "DesktopMcpCard" });
281
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
282
+ __name: "DesktopServiceCard",
283
+ __ssrInlineRender: true,
284
+ setup(__props) {
285
+ const toast = useToast();
286
+ const loading = ref(true);
287
+ const available = ref(false);
288
+ const busy = ref(false);
289
+ const runInBackground = ref(false);
290
+ const startOnLogin = ref(false);
291
+ async function setRunInBackground(value) {
292
+ const core = tauriCore();
293
+ if (!core) return;
294
+ busy.value = true;
295
+ try {
296
+ await core.invoke("desktop_set_run_in_background", { enabled: value });
297
+ runInBackground.value = value;
298
+ } catch {
299
+ toast.add({ title: 'Could not update "Run in background"', color: "error" });
300
+ } finally {
301
+ busy.value = false;
302
+ }
303
+ }
304
+ async function setStartOnLogin(value) {
305
+ const core = tauriCore();
306
+ if (!core) return;
307
+ busy.value = true;
308
+ try {
309
+ await core.invoke("desktop_set_start_on_login", { enabled: value });
310
+ startOnLogin.value = value;
311
+ } catch {
312
+ toast.add({ title: 'Could not update "Start on login"', color: "error" });
313
+ } finally {
314
+ busy.value = false;
315
+ }
316
+ }
317
+ return (_ctx, _push, _parent, _attrs) => {
318
+ const _component_SectionCard = __nuxt_component_11;
319
+ const _component_UIcon = _sfc_main$p;
320
+ const _component_USwitch = _sfc_main$4;
321
+ _push(ssrRenderComponent(_component_SectionCard, mergeProps({
322
+ icon: "i-lucide-monitor-cog",
323
+ title: "Desktop app"
324
+ }, _attrs), {
325
+ subtitle: withCtx((_, _push2, _parent2, _scopeId) => {
326
+ if (_push2) {
327
+ _push2(` Keep Piwi running in the background and start it automatically when you log in. `);
328
+ } else {
329
+ return [
330
+ createTextVNode(" Keep Piwi running in the background and start it automatically when you log in. ")
331
+ ];
332
+ }
333
+ }),
334
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
335
+ if (_push2) {
336
+ if (unref(loading)) {
337
+ _push2(`<div class="flex items-center gap-2 text-sm text-muted"${_scopeId}>`);
338
+ _push2(ssrRenderComponent(_component_UIcon, {
339
+ name: "i-lucide-loader-2",
340
+ class: "size-4 animate-spin"
341
+ }, null, _parent2, _scopeId));
342
+ _push2(` Checking… </div>`);
343
+ } else if (unref(available)) {
344
+ _push2(`<div class="space-y-4"${_scopeId}><div class="flex items-start justify-between gap-4"${_scopeId}><div class="space-y-0.5"${_scopeId}><p class="text-sm font-medium"${_scopeId}>Run in background</p><p class="text-xs text-muted"${_scopeId}>Closing the window keeps the server running in the tray instead of quitting.</p></div>`);
345
+ _push2(ssrRenderComponent(_component_USwitch, {
346
+ "model-value": unref(runInBackground),
347
+ disabled: unref(busy),
348
+ "onUpdate:modelValue": setRunInBackground
349
+ }, null, _parent2, _scopeId));
350
+ _push2(`</div><div class="flex items-start justify-between gap-4"${_scopeId}><div class="space-y-0.5"${_scopeId}><p class="text-sm font-medium"${_scopeId}>Start on login</p><p class="text-xs text-muted"${_scopeId}> Launch Piwi automatically (hidden in the tray) when you sign in to your computer. </p></div>`);
351
+ _push2(ssrRenderComponent(_component_USwitch, {
352
+ "model-value": unref(startOnLogin),
353
+ disabled: unref(busy),
354
+ "onUpdate:modelValue": setStartOnLogin
355
+ }, null, _parent2, _scopeId));
356
+ _push2(`</div></div>`);
357
+ } else {
358
+ _push2(`<div class="space-y-1 text-sm text-muted"${_scopeId}><p${_scopeId}>Manage these from the Piwi tray icon:</p><p class="text-xs"${_scopeId}> Right-click the Piwi icon in your system tray for <strong${_scopeId}>Run in background</strong> and <strong${_scopeId}>Start on login</strong>. On Windows the icon may be hidden under the “show hidden icons” arrow (▲) next to the clock — drag it onto the taskbar to keep it in view. </p></div>`);
359
+ }
360
+ } else {
361
+ return [
362
+ unref(loading) ? (openBlock(), createBlock("div", {
363
+ key: 0,
364
+ class: "flex items-center gap-2 text-sm text-muted"
365
+ }, [
366
+ createVNode(_component_UIcon, {
367
+ name: "i-lucide-loader-2",
368
+ class: "size-4 animate-spin"
369
+ }),
370
+ createTextVNode(" Checking… ")
371
+ ])) : unref(available) ? (openBlock(), createBlock("div", {
372
+ key: 1,
373
+ class: "space-y-4"
374
+ }, [
375
+ createVNode("div", { class: "flex items-start justify-between gap-4" }, [
376
+ createVNode("div", { class: "space-y-0.5" }, [
377
+ createVNode("p", { class: "text-sm font-medium" }, "Run in background"),
378
+ createVNode("p", { class: "text-xs text-muted" }, "Closing the window keeps the server running in the tray instead of quitting.")
379
+ ]),
380
+ createVNode(_component_USwitch, {
381
+ "model-value": unref(runInBackground),
382
+ disabled: unref(busy),
383
+ "onUpdate:modelValue": setRunInBackground
384
+ }, null, 8, ["model-value", "disabled"])
385
+ ]),
386
+ createVNode("div", { class: "flex items-start justify-between gap-4" }, [
387
+ createVNode("div", { class: "space-y-0.5" }, [
388
+ createVNode("p", { class: "text-sm font-medium" }, "Start on login"),
389
+ createVNode("p", { class: "text-xs text-muted" }, " Launch Piwi automatically (hidden in the tray) when you sign in to your computer. ")
390
+ ]),
391
+ createVNode(_component_USwitch, {
392
+ "model-value": unref(startOnLogin),
393
+ disabled: unref(busy),
394
+ "onUpdate:modelValue": setStartOnLogin
395
+ }, null, 8, ["model-value", "disabled"])
396
+ ])
397
+ ])) : (openBlock(), createBlock("div", {
398
+ key: 2,
399
+ class: "space-y-1 text-sm text-muted"
400
+ }, [
401
+ createVNode("p", null, "Manage these from the Piwi tray icon:"),
402
+ createVNode("p", { class: "text-xs" }, [
403
+ createTextVNode(" Right-click the Piwi icon in your system tray for "),
404
+ createVNode("strong", null, "Run in background"),
405
+ createTextVNode(" and "),
406
+ createVNode("strong", null, "Start on login"),
407
+ createTextVNode(". On Windows the icon may be hidden under the “show hidden icons” arrow (▲) next to the clock — drag it onto the taskbar to keep it in view. ")
408
+ ])
409
+ ]))
410
+ ];
411
+ }
412
+ }),
413
+ _: 1
414
+ }, _parent));
415
+ };
416
+ }
417
+ });
418
+ const _sfc_setup$1 = _sfc_main$1.setup;
419
+ _sfc_main$1.setup = (props, ctx) => {
420
+ const ssrContext = useSSRContext();
421
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/desktop/DesktopServiceCard.vue");
422
+ return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
423
+ };
424
+ const __nuxt_component_6 = Object.assign(_sfc_main$1, { __name: "DesktopServiceCard" });
425
+ const _sfc_main = /* @__PURE__ */ defineComponent({
426
+ __name: "about",
427
+ __ssrInlineRender: true,
428
+ async setup(__props) {
429
+ let __temp, __restore;
430
+ const config = useRuntimeConfig();
431
+ const isDesktop = useIsDesktop();
432
+ const { data: versionInfo } = ([__temp, __restore] = withAsyncContext(() => useFetch(
433
+ "/api/version",
434
+ "$mIoGdvWYhF"
435
+ /* nuxt-injected */
436
+ )), __temp = await __temp, __restore(), __temp);
437
+ const { data: stats } = ([__temp, __restore] = withAsyncContext(() => useFetch(
438
+ "/api/admin/stats",
439
+ {
440
+ immediate: isDesktop,
441
+ default: () => null
442
+ },
443
+ "$IuuLVEbWlE"
444
+ /* nuxt-injected */
445
+ )), __temp = await __temp, __restore(), __temp);
446
+ const { data: reporterConfig } = ([__temp, __restore] = withAsyncContext(() => useFetch(
447
+ "/api/desktop/reporter-config",
448
+ {
449
+ immediate: isDesktop,
450
+ default: () => null
451
+ },
452
+ "$A4rSe7BAN_"
453
+ /* nuxt-injected */
454
+ )), __temp = await __temp, __restore(), __temp);
455
+ const appVersion = config.public.appVersion;
456
+ const buildSha = config.public.buildSha;
457
+ const buildTime = config.public.buildTime;
458
+ const nodeVersion = config.public.nodeVersion;
459
+ const authEnabled = config.public.authEnabled;
460
+ const shortSha = computed(() => buildSha ? buildSha.slice(0, 7) : null);
461
+ const dbBackendLabel = computed(() => {
462
+ const backend = versionInfo.value?.dbBackend;
463
+ if (backend === "postgresql") return "PostgreSQL";
464
+ if (backend === "sqlite") return "SQLite";
465
+ return backend ?? null;
466
+ });
467
+ return (_ctx, _push, _parent, _attrs) => {
468
+ const _component_SectionCard = __nuxt_component_11;
469
+ const _component_StatTileGrid = __nuxt_component_1;
470
+ const _component_StatTile = __nuxt_component_2;
471
+ const _component_DataLocationCard = __nuxt_component_0;
472
+ const _component_DesktopReporterCard = __nuxt_component_4;
473
+ const _component_DesktopMcpCard = __nuxt_component_5;
474
+ const _component_DesktopServiceCard = __nuxt_component_6;
475
+ const _component_DocLink = __nuxt_component_9;
476
+ const _component_ULink = _sfc_main$l;
477
+ const _component_UIcon = _sfc_main$p;
478
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "space-y-6" }, _attrs))}>`);
479
+ _push(ssrRenderComponent(_component_SectionCard, {
480
+ icon: "i-lucide-info",
481
+ title: "Application"
482
+ }, {
483
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
484
+ if (_push2) {
485
+ _push2(ssrRenderComponent(_component_StatTileGrid, null, {
486
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
487
+ if (_push3) {
488
+ _push3(ssrRenderComponent(_component_StatTile, {
489
+ label: "Version",
490
+ value: `v${unref(appVersion)}`
491
+ }, null, _parent3, _scopeId2));
492
+ if (unref(shortSha)) {
493
+ _push3(ssrRenderComponent(_component_StatTile, {
494
+ label: "Build",
495
+ value: unref(shortSha),
496
+ hint: unref(buildSha)
497
+ }, null, _parent3, _scopeId2));
498
+ } else {
499
+ _push3(`<!---->`);
500
+ }
501
+ if (unref(buildTime)) {
502
+ _push3(ssrRenderComponent(_component_StatTile, {
503
+ label: "Built",
504
+ value: ("formatRelativeTime" in _ctx ? _ctx.formatRelativeTime : unref(formatRelativeTime))(unref(buildTime)),
505
+ hint: unref(buildTime)
506
+ }, null, _parent3, _scopeId2));
507
+ } else {
508
+ _push3(`<!---->`);
509
+ }
510
+ _push3(ssrRenderComponent(_component_StatTile, {
511
+ label: "Node.js",
512
+ value: unref(nodeVersion)
513
+ }, null, _parent3, _scopeId2));
514
+ _push3(ssrRenderComponent(_component_StatTile, {
515
+ label: "Database",
516
+ value: unref(dbBackendLabel)
517
+ }, null, _parent3, _scopeId2));
518
+ _push3(ssrRenderComponent(_component_StatTile, {
519
+ label: "Authentication",
520
+ value: unref(authEnabled) ? "Enabled" : "Disabled"
521
+ }, null, _parent3, _scopeId2));
522
+ } else {
523
+ return [
524
+ createVNode(_component_StatTile, {
525
+ label: "Version",
526
+ value: `v${unref(appVersion)}`
527
+ }, null, 8, ["value"]),
528
+ unref(shortSha) ? (openBlock(), createBlock(_component_StatTile, {
529
+ key: 0,
530
+ label: "Build",
531
+ value: unref(shortSha),
532
+ hint: unref(buildSha)
533
+ }, null, 8, ["value", "hint"])) : createCommentVNode("", true),
534
+ unref(buildTime) ? (openBlock(), createBlock(_component_StatTile, {
535
+ key: 1,
536
+ label: "Built",
537
+ value: ("formatRelativeTime" in _ctx ? _ctx.formatRelativeTime : unref(formatRelativeTime))(unref(buildTime)),
538
+ hint: unref(buildTime)
539
+ }, null, 8, ["value", "hint"])) : createCommentVNode("", true),
540
+ createVNode(_component_StatTile, {
541
+ label: "Node.js",
542
+ value: unref(nodeVersion)
543
+ }, null, 8, ["value"]),
544
+ createVNode(_component_StatTile, {
545
+ label: "Database",
546
+ value: unref(dbBackendLabel)
547
+ }, null, 8, ["value"]),
548
+ createVNode(_component_StatTile, {
549
+ label: "Authentication",
550
+ value: unref(authEnabled) ? "Enabled" : "Disabled"
551
+ }, null, 8, ["value"])
552
+ ];
553
+ }
554
+ }),
555
+ _: 1
556
+ }, _parent2, _scopeId));
557
+ } else {
558
+ return [
559
+ createVNode(_component_StatTileGrid, null, {
560
+ default: withCtx(() => [
561
+ createVNode(_component_StatTile, {
562
+ label: "Version",
563
+ value: `v${unref(appVersion)}`
564
+ }, null, 8, ["value"]),
565
+ unref(shortSha) ? (openBlock(), createBlock(_component_StatTile, {
566
+ key: 0,
567
+ label: "Build",
568
+ value: unref(shortSha),
569
+ hint: unref(buildSha)
570
+ }, null, 8, ["value", "hint"])) : createCommentVNode("", true),
571
+ unref(buildTime) ? (openBlock(), createBlock(_component_StatTile, {
572
+ key: 1,
573
+ label: "Built",
574
+ value: ("formatRelativeTime" in _ctx ? _ctx.formatRelativeTime : unref(formatRelativeTime))(unref(buildTime)),
575
+ hint: unref(buildTime)
576
+ }, null, 8, ["value", "hint"])) : createCommentVNode("", true),
577
+ createVNode(_component_StatTile, {
578
+ label: "Node.js",
579
+ value: unref(nodeVersion)
580
+ }, null, 8, ["value"]),
581
+ createVNode(_component_StatTile, {
582
+ label: "Database",
583
+ value: unref(dbBackendLabel)
584
+ }, null, 8, ["value"]),
585
+ createVNode(_component_StatTile, {
586
+ label: "Authentication",
587
+ value: unref(authEnabled) ? "Enabled" : "Disabled"
588
+ }, null, 8, ["value"])
589
+ ]),
590
+ _: 1
591
+ })
592
+ ];
593
+ }
594
+ }),
595
+ _: 1
596
+ }, _parent));
597
+ if (unref(isDesktop)) {
598
+ _push(`<!--[-->`);
599
+ if (unref(stats)) {
600
+ _push(ssrRenderComponent(_component_DataLocationCard, {
601
+ database: unref(stats).databaseLocation,
602
+ storage: unref(stats).storageLocation
603
+ }, null, _parent));
604
+ } else {
605
+ _push(`<!---->`);
606
+ }
607
+ if (unref(reporterConfig)) {
608
+ _push(ssrRenderComponent(_component_DesktopReporterCard, {
609
+ url: unref(reporterConfig).url,
610
+ token: unref(reporterConfig).token
611
+ }, null, _parent));
612
+ } else {
613
+ _push(`<!---->`);
614
+ }
615
+ if (unref(reporterConfig)) {
616
+ _push(ssrRenderComponent(_component_DesktopMcpCard, {
617
+ url: unref(reporterConfig).url,
618
+ token: unref(reporterConfig).token
619
+ }, null, _parent));
620
+ } else {
621
+ _push(`<!---->`);
622
+ }
623
+ _push(ssrRenderComponent(_component_DesktopServiceCard, null, null, _parent));
624
+ _push(`<!--]-->`);
625
+ } else {
626
+ _push(`<!---->`);
627
+ }
628
+ _push(ssrRenderComponent(_component_SectionCard, {
629
+ icon: "i-lucide-book-open",
630
+ title: "Resources"
631
+ }, {
632
+ default: withCtx((_, _push2, _parent2, _scopeId) => {
633
+ if (_push2) {
634
+ _push2(`<div class="flex flex-wrap items-center gap-x-6 gap-y-3 text-sm"${_scopeId}>`);
635
+ _push2(ssrRenderComponent(_component_DocLink, { to: "" }, {
636
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
637
+ if (_push3) {
638
+ _push3(`Documentation`);
639
+ } else {
640
+ return [
641
+ createTextVNode("Documentation")
642
+ ];
643
+ }
644
+ }),
645
+ _: 1
646
+ }, _parent2, _scopeId));
647
+ _push2(ssrRenderComponent(_component_DocLink, { to: "api" }, {
648
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
649
+ if (_push3) {
650
+ _push3(`API reference`);
651
+ } else {
652
+ return [
653
+ createTextVNode("API reference")
654
+ ];
655
+ }
656
+ }),
657
+ _: 1
658
+ }, _parent2, _scopeId));
659
+ _push2(ssrRenderComponent(_component_ULink, {
660
+ to: "https://github.com/piwitests/platform",
661
+ target: "_blank",
662
+ rel: "noopener noreferrer",
663
+ class: "inline-flex items-center gap-1 text-primary hover:underline"
664
+ }, {
665
+ default: withCtx((_2, _push3, _parent3, _scopeId2) => {
666
+ if (_push3) {
667
+ _push3(` GitHub `);
668
+ _push3(ssrRenderComponent(_component_UIcon, {
669
+ name: "i-lucide-external-link",
670
+ class: "w-3.5 h-3.5 shrink-0"
671
+ }, null, _parent3, _scopeId2));
672
+ } else {
673
+ return [
674
+ createTextVNode(" GitHub "),
675
+ createVNode(_component_UIcon, {
676
+ name: "i-lucide-external-link",
677
+ class: "w-3.5 h-3.5 shrink-0"
678
+ })
679
+ ];
680
+ }
681
+ }),
682
+ _: 1
683
+ }, _parent2, _scopeId));
684
+ _push2(`</div>`);
685
+ } else {
686
+ return [
687
+ createVNode("div", { class: "flex flex-wrap items-center gap-x-6 gap-y-3 text-sm" }, [
688
+ createVNode(_component_DocLink, { to: "" }, {
689
+ default: withCtx(() => [
690
+ createTextVNode("Documentation")
691
+ ]),
692
+ _: 1
693
+ }),
694
+ createVNode(_component_DocLink, { to: "api" }, {
695
+ default: withCtx(() => [
696
+ createTextVNode("API reference")
697
+ ]),
698
+ _: 1
699
+ }),
700
+ createVNode(_component_ULink, {
701
+ to: "https://github.com/piwitests/platform",
702
+ target: "_blank",
703
+ rel: "noopener noreferrer",
704
+ class: "inline-flex items-center gap-1 text-primary hover:underline"
705
+ }, {
706
+ default: withCtx(() => [
707
+ createTextVNode(" GitHub "),
708
+ createVNode(_component_UIcon, {
709
+ name: "i-lucide-external-link",
710
+ class: "w-3.5 h-3.5 shrink-0"
711
+ })
712
+ ]),
713
+ _: 1
714
+ })
715
+ ])
716
+ ];
717
+ }
718
+ }),
719
+ _: 1
720
+ }, _parent));
721
+ _push(`</div>`);
722
+ };
723
+ }
724
+ });
725
+ const _sfc_setup = _sfc_main.setup;
726
+ _sfc_main.setup = (props, ctx) => {
727
+ const ssrContext = useSSRContext();
728
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/settings/about.vue");
729
+ return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
730
+ };
731
+
732
+ export { _sfc_main as default };
733
+ //# sourceMappingURL=about-CoJjvUwM.mjs.map