@nivora/matrix 0.3.12 → 0.4.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 (270) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +10 -7
  3. package/.next/build-manifest.json +6 -6
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/react-loadable-manifest.json +251 -6
  6. package/.next/routes-manifest.json +20 -0
  7. package/.next/server/app/_global-error/page.js +2 -2
  8. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  9. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/_global-error.html +2 -2
  11. package/.next/server/app/_global-error.rsc +7 -7
  12. package/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  13. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +2 -2
  14. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +3 -3
  15. package/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
  16. package/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  17. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/.next/server/app/_not-found/page.js +2 -2
  19. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  20. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  21. package/.next/server/app/_not-found.html +1 -1
  22. package/.next/server/app/_not-found.rsc +11 -11
  23. package/.next/server/app/_not-found.segments/_full.segment.rsc +11 -11
  24. package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  25. package/.next/server/app/_not-found.segments/_index.segment.rsc +6 -6
  26. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  27. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  28. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  29. package/.next/server/app/favicon.ico/route.js +1 -1
  30. package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  31. package/.next/server/app/matrix/page.js +2 -2
  32. package/.next/server/app/matrix/page.js.nft.json +1 -1
  33. package/.next/server/app/matrix/page_client-reference-manifest.js +1 -1
  34. package/.next/server/app/page.js +2 -2
  35. package/.next/server/app/page.js.nft.json +1 -1
  36. package/.next/server/app/page_client-reference-manifest.js +1 -1
  37. package/.next/server/app/releases/[id]/page.js +7 -245
  38. package/.next/server/app/releases/[id]/page.js.nft.json +1 -1
  39. package/.next/server/app/releases/[id]/page_client-reference-manifest.js +1 -1
  40. package/.next/server/app/releases/page.js +2 -240
  41. package/.next/server/app/releases/page.js.nft.json +1 -1
  42. package/.next/server/app/releases/page_client-reference-manifest.js +1 -1
  43. package/.next/server/app/specs/[id]/page.js +2 -2
  44. package/.next/server/app/specs/[id]/page.js.nft.json +1 -1
  45. package/.next/server/app/specs/[id]/page_client-reference-manifest.js +1 -1
  46. package/.next/server/app/traceability/archive/page.js +1 -1
  47. package/.next/server/app/traceability/archive/page.js.nft.json +1 -1
  48. package/.next/server/app/traceability/archive/page_client-reference-manifest.js +1 -1
  49. package/.next/server/app/traceability/design/[id]/page.js +2 -0
  50. package/.next/server/app/traceability/design/[id]/page.js.nft.json +1 -0
  51. package/.next/server/app/traceability/design/[id]/page_client-reference-manifest.js +1 -0
  52. package/.next/server/app/traceability/design/new/page.js +2 -0
  53. package/.next/server/app/traceability/design/new/page.js.nft.json +1 -0
  54. package/.next/server/app/traceability/design/new/page_client-reference-manifest.js +1 -0
  55. package/.next/server/app/traceability/design/page.js +2 -0
  56. package/.next/server/app/traceability/design/page.js.nft.json +1 -0
  57. package/.next/server/app/traceability/design/page_client-reference-manifest.js +1 -0
  58. package/.next/server/app/traceability/fs/[id]/page.js +3 -3
  59. package/.next/server/app/traceability/fs/[id]/page.js.nft.json +1 -1
  60. package/.next/server/app/traceability/fs/[id]/page_client-reference-manifest.js +1 -1
  61. package/.next/server/app/traceability/fs/page.js +2 -2
  62. package/.next/server/app/traceability/fs/page.js.nft.json +1 -1
  63. package/.next/server/app/traceability/fs/page_client-reference-manifest.js +1 -1
  64. package/.next/server/app/traceability/page.js +2 -2
  65. package/.next/server/app/traceability/page.js.nft.json +1 -1
  66. package/.next/server/app/traceability/page_client-reference-manifest.js +1 -1
  67. package/.next/server/app/traceability/risk/[id]/page.js +1 -1
  68. package/.next/server/app/traceability/risk/[id]/page.js.nft.json +1 -1
  69. package/.next/server/app/traceability/risk/[id]/page_client-reference-manifest.js +1 -1
  70. package/.next/server/app/traceability/risk/page.js +2 -2
  71. package/.next/server/app/traceability/risk/page.js.nft.json +1 -1
  72. package/.next/server/app/traceability/risk/page_client-reference-manifest.js +1 -1
  73. package/.next/server/app/traceability/urs/[id]/page.js +2 -2
  74. package/.next/server/app/traceability/urs/[id]/page.js.nft.json +1 -1
  75. package/.next/server/app/traceability/urs/[id]/page_client-reference-manifest.js +1 -1
  76. package/.next/server/app/traceability/urs/page.js +1 -1
  77. package/.next/server/app/traceability/urs/page.js.nft.json +1 -1
  78. package/.next/server/app/traceability/urs/page_client-reference-manifest.js +1 -1
  79. package/.next/server/app-paths-manifest.json +10 -7
  80. package/.next/server/chunks/1001.js +41 -0
  81. package/.next/server/chunks/1030.js +1 -0
  82. package/.next/server/chunks/1058.js +1 -0
  83. package/.next/server/chunks/120.js +1 -0
  84. package/.next/server/chunks/1205.js +1 -0
  85. package/.next/server/chunks/1272.js +1 -0
  86. package/.next/server/chunks/1361.js +62 -0
  87. package/.next/server/chunks/1687.js +1 -0
  88. package/.next/server/chunks/2002.js +262 -0
  89. package/.next/server/chunks/2146.js +1 -0
  90. package/.next/server/chunks/{476.js → 2160.js} +2 -2
  91. package/.next/server/chunks/2325.js +60 -0
  92. package/.next/server/chunks/2590.js +60 -0
  93. package/.next/server/chunks/3274.js +136 -0
  94. package/.next/server/chunks/{445.js → 3445.js} +1 -1
  95. package/.next/server/chunks/3504.js +1 -0
  96. package/.next/server/chunks/3870.js +1 -0
  97. package/.next/server/chunks/4322.js +43 -0
  98. package/.next/server/chunks/4379.js +5 -0
  99. package/.next/server/chunks/4405.js +63 -0
  100. package/.next/server/chunks/4643.js +1 -0
  101. package/.next/server/chunks/4694.js +55 -0
  102. package/.next/server/chunks/4696.js +1 -0
  103. package/.next/server/chunks/4977.js +1 -0
  104. package/.next/server/chunks/515.js +1 -0
  105. package/.next/server/chunks/{658.js → 5352.js} +63 -2
  106. package/.next/server/chunks/5460.js +201 -0
  107. package/.next/server/chunks/549.js +1 -0
  108. package/.next/server/chunks/5899.js +36 -0
  109. package/.next/server/chunks/5935.js +24 -0
  110. package/.next/server/chunks/5943.js +93 -0
  111. package/.next/server/chunks/6164.js +1 -0
  112. package/.next/server/chunks/6265.js +1 -0
  113. package/.next/server/chunks/6346.js +1 -0
  114. package/.next/server/chunks/6542.js +148 -0
  115. package/.next/server/chunks/6589.js +24 -0
  116. package/.next/server/chunks/6658.js +236 -0
  117. package/.next/server/chunks/6980.js +1 -0
  118. package/.next/server/chunks/7135.js +1 -0
  119. package/.next/server/chunks/720.js +1 -0
  120. package/.next/server/chunks/7307.js +1 -0
  121. package/.next/server/chunks/7390.js +1 -0
  122. package/.next/server/chunks/7391.js +1 -0
  123. package/.next/server/chunks/{471.js → 7471.js} +1 -1
  124. package/.next/server/chunks/7919.js +4 -0
  125. package/.next/server/chunks/{907.js → 7954.js} +44 -2
  126. package/.next/server/chunks/802.js +131 -0
  127. package/.next/server/chunks/8142.js +1 -0
  128. package/.next/server/chunks/8167.js +1 -0
  129. package/.next/server/chunks/8212.js +174 -0
  130. package/.next/server/chunks/8350.js +215 -0
  131. package/.next/server/chunks/8664.js +1 -0
  132. package/.next/server/chunks/8734.js +59 -0
  133. package/.next/server/chunks/8818.js +29 -0
  134. package/.next/server/chunks/8921.js +56 -0
  135. package/.next/server/chunks/9109.js +1 -0
  136. package/.next/server/chunks/9252.js +1 -0
  137. package/.next/server/chunks/9285.js +166 -0
  138. package/.next/server/middleware-build-manifest.js +1 -1
  139. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  140. package/.next/server/pages/404.html +1 -1
  141. package/.next/server/pages/500.html +2 -2
  142. package/.next/server/server-reference-manifest.js +1 -1
  143. package/.next/server/server-reference-manifest.json +1 -1
  144. package/.next/server/webpack-runtime.js +1 -1
  145. package/.next/static/chunks/0dbeb660-d1591a6fb5c3509e.js +53 -0
  146. package/.next/static/chunks/1157-41840e6b30f8aab3.js +1 -0
  147. package/.next/static/chunks/1371.e9c049ff15fa0424.js +24 -0
  148. package/.next/static/chunks/1436.fef85767a2db3d69.js +1 -0
  149. package/.next/static/chunks/1455.4b25458cc615feec.js +1 -0
  150. package/.next/static/chunks/1633.5050d8d1007aa587.js +1 -0
  151. package/.next/static/chunks/1816.a66aacf78a1f2b9e.js +1 -0
  152. package/.next/static/chunks/213-b6da81c7f9f1689d.js +1 -0
  153. package/.next/static/chunks/2594-b6da81c7f9f1689d.js +1 -0
  154. package/.next/static/chunks/2765.8adcf70b75e6aeef.js +4 -0
  155. package/.next/static/chunks/288.eec78353ed692c58.js +1 -0
  156. package/.next/static/chunks/2947.f836f6410050c641.js +56 -0
  157. package/.next/static/chunks/2951.8c1f9418d93f794e.js +1 -0
  158. package/.next/static/chunks/2cdb6380.d41c2c1792d85cbd.js +136 -0
  159. package/.next/static/chunks/3164.23a30fb4d0160788.js +1 -0
  160. package/.next/static/chunks/3197.d8e82b560a160022.js +1 -0
  161. package/.next/static/chunks/3242.bb0fe7b7913ef780.js +262 -0
  162. package/.next/static/chunks/3398.dcb200a913a6c354.js +59 -0
  163. package/.next/static/chunks/3477.ec9165cd3e012b87.js +1 -0
  164. package/.next/static/chunks/3619.14ab2b037411c8dd.js +1 -0
  165. package/.next/static/chunks/3794-81fca6cc7041ced6.js +2 -0
  166. package/.next/static/chunks/4016-8b4d5706a552f32e.js +60 -0
  167. package/.next/static/chunks/4410.667e7a91b32268d8.js +1 -0
  168. package/.next/static/chunks/448.00c3a4af8c45f64c.js +1 -0
  169. package/.next/static/chunks/4631.fb52c10c618eda8d.js +166 -0
  170. package/.next/static/chunks/4839.47666b4d0dd6793d.js +63 -0
  171. package/.next/static/chunks/4bd1b696-1400c1b9494d4acb.js +1 -0
  172. package/.next/static/chunks/5176.4f4e736e3be7cf15.js +55 -0
  173. package/.next/static/chunks/5290.d0e93eb9d345026e.js +174 -0
  174. package/.next/static/chunks/5838.5c3810ae9f41fb2d.js +148 -0
  175. package/.next/static/chunks/6034.4c6801c982ca9779.js +1 -0
  176. package/.next/static/chunks/6173.85c05df7afadd80f.js +1 -0
  177. package/.next/static/chunks/6257.4802e493b197340d.js +5 -0
  178. package/.next/static/chunks/628.38b81cd56aaf4cf1.js +1 -0
  179. package/.next/static/chunks/6454.7f2f7cf37c6cb691.js +29 -0
  180. package/.next/static/chunks/6971.ffe28a433af5503c.js +1 -0
  181. package/.next/static/chunks/7048.fae262ca1df0ad90.js +215 -0
  182. package/.next/static/chunks/7465.55e7c3c6cc146535.js +93 -0
  183. package/.next/static/chunks/7874.574b3fc13af99551.js +1 -0
  184. package/.next/static/chunks/8037.c5f9113a6cb1dbb7.js +1 -0
  185. package/.next/static/chunks/8284.b907c17d2a294557.js +43 -0
  186. package/.next/static/chunks/8365.9b15b21e000887e5.js +36 -0
  187. package/.next/static/chunks/8486.357508328aef1d93.js +131 -0
  188. package/.next/static/chunks/8500-27e7d9770d119ae1.js +1 -0
  189. package/.next/static/chunks/8776-c5f9302cd8f68651.js +149 -0
  190. package/.next/static/chunks/8801.d7e8d3b47b8cec0f.js +1 -0
  191. package/.next/static/chunks/8863.b065187bd644df7b.js +60 -0
  192. package/.next/static/chunks/8904.c3becf8cf19ec1eb.js +1 -0
  193. package/.next/static/chunks/90542734.d84bb73ebd95167a.js +1 -0
  194. package/.next/static/chunks/9133.c96e717400860724.js +24 -0
  195. package/.next/static/chunks/9203.577b14724e972a55.js +62 -0
  196. package/.next/static/chunks/9536.0478cfe5e9cfc9d5.js +1 -0
  197. package/.next/static/chunks/991.718b573be77108f0.js +1 -0
  198. package/.next/static/chunks/app/_global-error/page-e3669dc4b4461f82.js +1 -0
  199. package/.next/static/chunks/app/_not-found/page-193559d8ddda5268.js +1 -0
  200. package/.next/static/chunks/app/layout-9e89a157ef4bea50.js +1 -0
  201. package/.next/static/chunks/app/matrix/page-30ba744d4792b0b1.js +1 -0
  202. package/.next/static/chunks/app/page-3f11d63c52c3e248.js +1 -0
  203. package/.next/static/chunks/app/releases/[id]/{page-6230a07f6e8c9f23.js → page-123fbaa896b5feb8.js} +2 -2
  204. package/.next/static/chunks/app/releases/page-d12603efbeced6fb.js +1 -0
  205. package/.next/static/chunks/app/specs/[id]/page-6c3f0a93d0102219.js +1 -0
  206. package/.next/static/chunks/app/traceability/archive/page-357abb519c1bfcab.js +1 -0
  207. package/.next/static/chunks/app/traceability/design/[id]/page-daa33c88e02d9251.js +1 -0
  208. package/.next/static/chunks/app/traceability/design/new/page-9e6d6307a049b872.js +1 -0
  209. package/.next/static/chunks/app/traceability/design/page-3f11d63c52c3e248.js +1 -0
  210. package/.next/static/chunks/app/traceability/fs/[id]/page-f6bbc2035b739563.js +7 -0
  211. package/.next/static/chunks/app/traceability/fs/page-3f11d63c52c3e248.js +1 -0
  212. package/.next/static/chunks/app/traceability/layout-e3669dc4b4461f82.js +1 -0
  213. package/.next/static/chunks/app/traceability/page-24a203b49af0c6ce.js +1 -0
  214. package/.next/static/chunks/app/traceability/risk/[id]/page-e2d5a5957837beed.js +1 -0
  215. package/.next/static/chunks/app/traceability/risk/page-3f11d63c52c3e248.js +1 -0
  216. package/.next/static/chunks/app/traceability/urs/[id]/page-acd764c05e9a7128.js +1 -0
  217. package/.next/static/chunks/app/traceability/urs/page-3f11d63c52c3e248.js +1 -0
  218. package/.next/static/chunks/d3ac728e.4b57bd9bce7cd3c1.js +1 -0
  219. package/.next/static/chunks/framework-d7945a8ad0653f37.js +1 -0
  220. package/.next/static/chunks/main-app-341bfb00b20e150e.js +1 -0
  221. package/.next/static/chunks/main-d9b455c88e68699e.js +5 -0
  222. package/.next/static/chunks/next/dist/client/components/builtin/app-error-e3669dc4b4461f82.js +1 -0
  223. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-e3669dc4b4461f82.js +1 -0
  224. package/.next/static/chunks/next/dist/client/components/builtin/global-error-feea5487bf2c221c.js +1 -0
  225. package/.next/static/chunks/next/dist/client/components/builtin/not-found-e3669dc4b4461f82.js +1 -0
  226. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-e3669dc4b4461f82.js +1 -0
  227. package/.next/static/chunks/webpack-4a58517ee75edeb0.js +1 -0
  228. package/.next/static/css/{2693864a24fbccd0.css → cdae95cc512ce762.css} +1 -1
  229. package/.next/static/vaGX_2eRDDB98z7pyX6er/_buildManifest.js +1 -0
  230. package/bin/cli.js +29 -0
  231. package/package.json +2 -1
  232. package/.next/server/chunks/352.js +0 -1
  233. package/.next/server/chunks/390.js +0 -1
  234. package/.next/server/chunks/391.js +0 -1
  235. package/.next/server/chunks/733.js +0 -32
  236. package/.next/server/chunks/821.js +0 -1
  237. package/.next/server/chunks/870.js +0 -1
  238. package/.next/static/ELYfmsCGy7GuuiGH2cFLn/_buildManifest.js +0 -1
  239. package/.next/static/chunks/444-1331cf1713bba53d.js +0 -1
  240. package/.next/static/chunks/4bd1b696-67e30520d621c4dd.js +0 -1
  241. package/.next/static/chunks/500-b84d19d842172eba.js +0 -1
  242. package/.next/static/chunks/594-41cff04930a1423e.js +0 -1
  243. package/.next/static/chunks/692.c2bb854f5d78c149.js +0 -1
  244. package/.next/static/chunks/794-9353bb3ab9a73e90.js +0 -2
  245. package/.next/static/chunks/app/_global-error/page-435048b8215f07c0.js +0 -1
  246. package/.next/static/chunks/app/_not-found/page-90fe62e7982fba87.js +0 -1
  247. package/.next/static/chunks/app/layout-0f51af36ad0921db.js +0 -1
  248. package/.next/static/chunks/app/matrix/page-b2418abb52a7acd8.js +0 -1
  249. package/.next/static/chunks/app/page-b6683055d30b04b4.js +0 -1
  250. package/.next/static/chunks/app/releases/page-888a9033446031e8.js +0 -1
  251. package/.next/static/chunks/app/specs/[id]/page-9f5688d1e93ae4d1.js +0 -1
  252. package/.next/static/chunks/app/traceability/archive/page-544eb2053bc31ad7.js +0 -1
  253. package/.next/static/chunks/app/traceability/fs/[id]/page-84bad96512599c17.js +0 -7
  254. package/.next/static/chunks/app/traceability/fs/page-b6683055d30b04b4.js +0 -1
  255. package/.next/static/chunks/app/traceability/layout-435048b8215f07c0.js +0 -1
  256. package/.next/static/chunks/app/traceability/page-11103f39281e68c4.js +0 -1
  257. package/.next/static/chunks/app/traceability/risk/[id]/page-56b430a30cf92a59.js +0 -1
  258. package/.next/static/chunks/app/traceability/risk/page-b6683055d30b04b4.js +0 -1
  259. package/.next/static/chunks/app/traceability/urs/[id]/page-11e1f447c7333110.js +0 -1
  260. package/.next/static/chunks/app/traceability/urs/page-b6683055d30b04b4.js +0 -1
  261. package/.next/static/chunks/framework-d7de93249215fb06.js +0 -1
  262. package/.next/static/chunks/main-17e3a04cf2f94dca.js +0 -5
  263. package/.next/static/chunks/main-app-6d93e914b4a54c7e.js +0 -1
  264. package/.next/static/chunks/next/dist/client/components/builtin/app-error-435048b8215f07c0.js +0 -1
  265. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-435048b8215f07c0.js +0 -1
  266. package/.next/static/chunks/next/dist/client/components/builtin/global-error-ebbdf863aa6a4349.js +0 -1
  267. package/.next/static/chunks/next/dist/client/components/builtin/not-found-435048b8215f07c0.js +0 -1
  268. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-435048b8215f07c0.js +0 -1
  269. package/.next/static/chunks/webpack-9a7fa060b199dfb3.js +0 -1
  270. /package/.next/static/{ELYfmsCGy7GuuiGH2cFLn → vaGX_2eRDDB98z7pyX6er}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"378":{"*":{"id":"99019","name":"*","chunks":[],"async":false}},"484":{"*":{"id":"70664","name":"*","chunks":[],"async":false}},"1304":{"*":{"id":"60440","name":"*","chunks":[],"async":false}},"1864":{"*":{"id":"44204","name":"*","chunks":[],"async":false}},"2692":{"*":{"id":"34865","name":"*","chunks":[],"async":false}},"2716":{"*":{"id":"62386","name":"*","chunks":[],"async":false}},"4128":{"*":{"id":"80601","name":"*","chunks":[],"async":false}},"4425":{"*":{"id":"33227","name":"*","chunks":[],"async":false}},"4547":{"*":{"id":"66783","name":"*","chunks":[],"async":false}},"4581":{"*":{"id":"61335","name":"*","chunks":[],"async":false}},"4652":{"*":{"id":"34888","name":"*","chunks":[],"async":false}},"4777":{"*":{"id":"82265","name":"*","chunks":[],"async":false}},"4806":{"*":{"id":"92099","name":"*","chunks":[],"async":false}},"6399":{"*":{"id":"77196","name":"*","chunks":[],"async":false}},"6869":{"*":{"id":"74661","name":"*","chunks":[],"async":false}},"7121":{"*":{"id":"35421","name":"*","chunks":[],"async":false}},"7123":{"*":{"id":"81921","name":"*","chunks":[],"async":false}},"8169":{"*":{"id":"93291","name":"*","chunks":[],"async":false}},"8500":{"*":{"id":"2116","name":"*","chunks":[],"async":false}},"8616":{"*":{"id":"84342","name":"*","chunks":[],"async":false}},"9857":{"*":{"id":"29979","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/components/builtin/global-error.js":{"id":7123,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":7123,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/components/client-page.js":{"id":1304,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/components/client-page.js":{"id":1304,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/components/client-segment.js":{"id":8616,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/components/client-segment.js":{"id":8616,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":4777,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":4777,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/components/layout-router.js":{"id":7121,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/components/layout-router.js":{"id":7121,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/components/render-from-template-context.js":{"id":4581,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":4581,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/lib/framework/boundary-components.js":{"id":484,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":484,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":6869,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":6869,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/app-dir/link.js":{"id":8500,"name":"*","chunks":["500","static/chunks/500-b84d19d842172eba.js","974","static/chunks/app/page-b6683055d30b04b4.js"],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/app-dir/link.js":{"id":8500,"name":"*","chunks":["500","static/chunks/500-b84d19d842172eba.js","974","static/chunks/app/page-b6683055d30b04b4.js"],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/globals.css":{"id":1743,"name":"*","chunks":["500","static/chunks/500-b84d19d842172eba.js","177","static/chunks/app/layout-0f51af36ad0921db.js"],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/nav-section.tsx":{"id":1864,"name":"*","chunks":["500","static/chunks/500-b84d19d842172eba.js","177","static/chunks/app/layout-0f51af36ad0921db.js"],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/releases/releases-client.tsx":{"id":378,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/releases/[id]/release-detail-client.tsx":{"id":6399,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/matrix/client.tsx":{"id":2716,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/specs/[id]/risk-detail-client.tsx":{"id":4806,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/specs/[id]/scenario-list.tsx":{"id":8169,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/specs/[id]/urs-detail-client.tsx":{"id":4652,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/traceability/archive/client.tsx":{"id":4547,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/traceability/urs/[id]/client.tsx":{"id":4128,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/traceability/fs/[id]/client.tsx":{"id":9857,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/traceability/matrix-client.tsx":{"id":4425,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/traceability/risk/[id]/client.tsx":{"id":2692,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/matthew/Code/github/p11o/machine/docs/src/":[],"/Users/matthew/Code/github/p11o/machine/docs/src/app/layout":[{"inlined":false,"path":"static/css/2693864a24fbccd0.css"}],"/Users/matthew/Code/github/p11o/machine/docs/src/app/page":[]},"rscModuleMapping":{"378":{"*":{"id":"4618","name":"*","chunks":[],"async":false}},"484":{"*":{"id":"98562","name":"*","chunks":[],"async":false}},"1304":{"*":{"id":"15098","name":"*","chunks":[],"async":false}},"1743":{"*":{"id":"61135","name":"*","chunks":[],"async":false}},"1864":{"*":{"id":"40946","name":"*","chunks":[],"async":false}},"2692":{"*":{"id":"59216","name":"*","chunks":[],"async":false}},"2716":{"*":{"id":"97652","name":"*","chunks":[],"async":false}},"4128":{"*":{"id":"89737","name":"*","chunks":[],"async":false}},"4425":{"*":{"id":"65100","name":"*","chunks":[],"async":false}},"4547":{"*":{"id":"62005","name":"*","chunks":[],"async":false}},"4581":{"*":{"id":"16237","name":"*","chunks":[],"async":false}},"4652":{"*":{"id":"17250","name":"*","chunks":[],"async":false}},"4777":{"*":{"id":"33859","name":"*","chunks":[],"async":false}},"4806":{"*":{"id":"19665","name":"*","chunks":[],"async":false}},"6399":{"*":{"id":"29575","name":"*","chunks":[],"async":false}},"6869":{"*":{"id":"36675","name":"*","chunks":[],"async":false}},"7121":{"*":{"id":"98099","name":"*","chunks":[],"async":false}},"7123":{"*":{"id":"95547","name":"*","chunks":[],"async":false}},"8169":{"*":{"id":"47831","name":"*","chunks":[],"async":false}},"8500":{"*":{"id":"23318","name":"*","chunks":[],"async":false}},"8616":{"*":{"id":"47644","name":"*","chunks":[],"async":false}},"9857":{"*":{"id":"50596","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"22985":{"*":{"id":"94005","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"81921","name":"*","chunks":[],"async":false}},"35985":{"*":{"id":"83132","name":"*","chunks":[],"async":false}},"37301":{"*":{"id":"62517","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"35421","name":"*","chunks":[],"async":false}},"60550":{"*":{"id":"93291","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"60440","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"82265","name":"*","chunks":[],"async":false}},"73376":{"*":{"id":"25985","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"61335","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"84342","name":"*","chunks":[],"async":false}},"81864":{"*":{"id":"44204","name":"*","chunks":[],"async":false}},"82716":{"*":{"id":"62386","name":"*","chunks":[],"async":false}},"83348":{"*":{"id":"45530","name":"*","chunks":[],"async":false}},"84547":{"*":{"id":"66783","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"74661","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"70664","name":"*","chunks":[],"async":false}},"90837":{"*":{"id":"28681","name":"*","chunks":[],"async":false}},"94425":{"*":{"id":"33227","name":"*","chunks":[],"async":false}},"95589":{"*":{"id":"78340","name":"*","chunks":[],"async":false}},"98052":{"*":{"id":"52853","name":"*","chunks":[],"async":false}},"98500":{"*":{"id":"2116","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":27123,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/components/client-page.js":{"id":61304,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/components/client-segment.js":{"id":78616,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":64777,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/components/layout-router.js":{"id":57121,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":74581,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":90484,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":86869,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/client/app-dir/link.js":{"id":98500,"name":"*","chunks":["8500","static/chunks/8500-27e7d9770d119ae1.js","8974","static/chunks/app/page-3f11d63c52c3e248.js"],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/node_modules/next/dist/esm/client/app-dir/link.js":{"id":98500,"name":"*","chunks":["8500","static/chunks/8500-27e7d9770d119ae1.js","8974","static/chunks/app/page-3f11d63c52c3e248.js"],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/globals.css":{"id":51743,"name":"*","chunks":["8500","static/chunks/8500-27e7d9770d119ae1.js","7177","static/chunks/app/layout-9e89a157ef4bea50.js"],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/nav-section.tsx":{"id":81864,"name":"*","chunks":["8500","static/chunks/8500-27e7d9770d119ae1.js","7177","static/chunks/app/layout-9e89a157ef4bea50.js"],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/releases/releases-client.tsx":{"id":35985,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/specs/[id]/risk-detail-client.tsx":{"id":90837,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/specs/[id]/scenario-list.tsx":{"id":60550,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/specs/[id]/urs-detail-client.tsx":{"id":98052,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/matrix/client.tsx":{"id":82716,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/releases/[id]/release-detail-client.tsx":{"id":83348,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/traceability/design/[id]/client.tsx":{"id":37301,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/traceability/archive/client.tsx":{"id":84547,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/traceability/urs/[id]/client.tsx":{"id":22985,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/traceability/risk/[id]/client.tsx":{"id":95589,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/traceability/fs/[id]/client.tsx":{"id":73376,"name":"*","chunks":[],"async":false},"/Users/matthew/Code/github/p11o/machine/docs/src/app/traceability/matrix-client.tsx":{"id":94425,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/matthew/Code/github/p11o/machine/docs/src/":[],"/Users/matthew/Code/github/p11o/machine/docs/src/app/layout":[{"inlined":false,"path":"static/css/cdae95cc512ce762.css"}],"/Users/matthew/Code/github/p11o/machine/docs/src/app/page":[]},"rscModuleMapping":{"22985":{"*":{"id":"89737","name":"*","chunks":[],"async":false}},"27123":{"*":{"id":"95547","name":"*","chunks":[],"async":false}},"35985":{"*":{"id":"4618","name":"*","chunks":[],"async":false}},"37301":{"*":{"id":"33359","name":"*","chunks":[],"async":false}},"51743":{"*":{"id":"61135","name":"*","chunks":[],"async":false}},"57121":{"*":{"id":"98099","name":"*","chunks":[],"async":false}},"60550":{"*":{"id":"47831","name":"*","chunks":[],"async":false}},"61304":{"*":{"id":"15098","name":"*","chunks":[],"async":false}},"64777":{"*":{"id":"33859","name":"*","chunks":[],"async":false}},"73376":{"*":{"id":"50596","name":"*","chunks":[],"async":false}},"74581":{"*":{"id":"16237","name":"*","chunks":[],"async":false}},"78616":{"*":{"id":"47644","name":"*","chunks":[],"async":false}},"81864":{"*":{"id":"40946","name":"*","chunks":[],"async":false}},"82716":{"*":{"id":"97652","name":"*","chunks":[],"async":false}},"83348":{"*":{"id":"29575","name":"*","chunks":[],"async":false}},"84547":{"*":{"id":"62005","name":"*","chunks":[],"async":false}},"86869":{"*":{"id":"36675","name":"*","chunks":[],"async":false}},"90484":{"*":{"id":"98562","name":"*","chunks":[],"async":false}},"90837":{"*":{"id":"19665","name":"*","chunks":[],"async":false}},"94425":{"*":{"id":"65100","name":"*","chunks":[],"async":false}},"95589":{"*":{"id":"59216","name":"*","chunks":[],"async":false}},"98052":{"*":{"id":"17250","name":"*","chunks":[],"async":false}},"98500":{"*":{"id":"23318","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
@@ -1,217 +1,15 @@
1
- (()=>{var a={};a.id=41,a.ids=[41],a.modules={108:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b)||(0,h.isPrerenderInterruptedError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=c(48894),e=c(64491),f=c(62880),g=c(76484),h=c(23445),i=c(43449);("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},624:(a,b,c)=>{"use strict";c.d(b,{$C:()=>k,Lf:()=>i,getNextId:()=>l,lg:()=>j});var d=c(81787);c(29021);var e=c(33873),f=c(1932);let g=`
2
- -- ============================================
3
- -- Database Schema for GAMP 5 V-Model Documentation
4
- -- ============================================
5
-
6
- -- URS - User Requirement Specification
7
- CREATE TABLE IF NOT EXISTS urs (
8
- id TEXT PRIMARY KEY,
9
- title TEXT NOT NULL,
10
- status TEXT NOT NULL CHECK (status IN ('draft', 'review', 'approved', 'deprecated')),
11
- priority TEXT NOT NULL CHECK (priority IN ('low', 'medium', 'high', 'critical')),
12
- owner TEXT NOT NULL,
13
- category TEXT NOT NULL,
14
- created_at TEXT NOT NULL,
15
- updated_at TEXT NOT NULL,
16
- business_need TEXT NOT NULL,
17
- intended_use TEXT NOT NULL,
18
- acceptance_criteria TEXT NOT NULL, -- JSON array
19
- regulatory_refs TEXT NOT NULL, -- JSON array
20
- is_archived BOOLEAN NOT NULL DEFAULT 0
21
- );
22
-
23
- -- FS - Functional Specification (metadata synced from Gherkin files)
24
- CREATE TABLE IF NOT EXISTS fs (
25
- id TEXT PRIMARY KEY,
26
- title TEXT NOT NULL,
27
- file_path TEXT NOT NULL UNIQUE,
28
- description TEXT,
29
- requirements TEXT, -- JSON array
30
- scenario_count INTEGER NOT NULL DEFAULT 0,
31
- created_at TEXT NOT NULL,
32
- updated_at TEXT NOT NULL,
33
- is_archived BOOLEAN NOT NULL DEFAULT 0
34
- );
35
-
36
- -- FS to URS link table
37
- CREATE TABLE IF NOT EXISTS fs_urs_link (
38
- fs_id TEXT NOT NULL,
39
- urs_id TEXT NOT NULL,
40
- PRIMARY KEY (fs_id, urs_id),
41
- FOREIGN KEY (fs_id) REFERENCES fs(id) ON DELETE CASCADE,
42
- FOREIGN KEY (urs_id) REFERENCES urs(id) ON DELETE CASCADE
43
- );
44
-
45
- -- Risk Assessment
46
- CREATE TABLE IF NOT EXISTS risk (
47
- id TEXT PRIMARY KEY,
48
- title TEXT NOT NULL,
49
- status TEXT NOT NULL CHECK (status IN ('draft', 'review', 'approved', 'deprecated')),
50
- category TEXT NOT NULL,
51
- gamp_category INTEGER NOT NULL CHECK (gamp_category IN (1, 3, 4, 5)),
52
- created_at TEXT NOT NULL,
53
- updated_at TEXT NOT NULL,
54
- impact TEXT NOT NULL CHECK (impact IN ('low', 'medium', 'high', 'critical')),
55
- probability TEXT NOT NULL CHECK (probability IN ('low', 'medium', 'high', 'critical')),
56
- risk_level TEXT NOT NULL CHECK (risk_level IN ('low', 'medium', 'high', 'critical')),
57
- residual_risk TEXT CHECK (residual_risk IN ('acceptable', 'unacceptable', 'pending')),
58
- is_archived BOOLEAN NOT NULL DEFAULT 0
59
- );
60
-
61
- -- Risk to FS link table
62
- CREATE TABLE IF NOT EXISTS risk_fs_link (
63
- risk_id TEXT NOT NULL,
64
- fs_id TEXT NOT NULL,
65
- PRIMARY KEY (risk_id, fs_id),
66
- FOREIGN KEY (risk_id) REFERENCES risk(id) ON DELETE CASCADE,
67
- FOREIGN KEY (fs_id) REFERENCES fs(id) ON DELETE CASCADE
68
- );
69
-
70
- -- Individual risk items within a risk assessment
71
- CREATE TABLE IF NOT EXISTS risk_item (
72
- id INTEGER PRIMARY KEY AUTOINCREMENT,
73
- risk_id TEXT NOT NULL,
74
- item_id TEXT NOT NULL, -- e.g., R-001.1
75
- description TEXT NOT NULL,
76
- impact TEXT NOT NULL CHECK (impact IN ('low', 'medium', 'high', 'critical')),
77
- probability TEXT NOT NULL CHECK (probability IN ('low', 'medium', 'high', 'critical')),
78
- FOREIGN KEY (risk_id) REFERENCES risk(id) ON DELETE CASCADE,
79
- UNIQUE (risk_id, item_id)
80
- );
81
-
82
- -- Mitigations for risk items
83
- CREATE TABLE IF NOT EXISTS mitigation (
84
- id INTEGER PRIMARY KEY AUTOINCREMENT,
85
- risk_id TEXT NOT NULL,
86
- risk_item_id TEXT NOT NULL, -- references risk_item.item_id
87
- control TEXT NOT NULL,
88
- test TEXT NOT NULL,
89
- FOREIGN KEY (risk_id) REFERENCES risk(id) ON DELETE CASCADE
90
- );
91
-
92
- -- Steps with embeddings for semantic search
93
- CREATE TABLE IF NOT EXISTS step (
94
- id INTEGER PRIMARY KEY AUTOINCREMENT,
95
- fs_id TEXT NOT NULL,
96
- scenario_name TEXT NOT NULL,
97
- step_text TEXT NOT NULL,
98
- embedding BLOB, -- Float32Array serialized as bytes
99
- FOREIGN KEY (fs_id) REFERENCES fs(id) ON DELETE CASCADE
100
- );
101
-
102
- -- Index for faster step searches
103
- CREATE INDEX IF NOT EXISTS idx_step_fs_id ON step(fs_id);
104
- CREATE INDEX IF NOT EXISTS idx_step_scenario ON step(scenario_name);
105
-
106
- -- Index for link tables
107
- CREATE INDEX IF NOT EXISTS idx_fs_urs_link_urs ON fs_urs_link(urs_id);
108
- CREATE INDEX IF NOT EXISTS idx_risk_fs_link_fs ON risk_fs_link(fs_id);
109
-
110
- -- ============================================
111
- -- RELEASES
112
- -- ============================================
113
-
114
- -- Release definition
115
- CREATE TABLE IF NOT EXISTS release (
116
- id TEXT PRIMARY KEY,
117
- version TEXT NOT NULL,
118
- name TEXT NOT NULL,
119
- status TEXT NOT NULL DEFAULT 'planning' CHECK (status IN ('planning', 'testing', 'released')),
120
- created_at TEXT NOT NULL,
121
- released_at TEXT,
122
- notes TEXT
123
- );
124
-
125
- -- Release to FS mapping (which features are in which release)
126
- CREATE TABLE IF NOT EXISTS release_fs (
127
- release_id TEXT NOT NULL,
128
- fs_id TEXT NOT NULL,
129
- added_at TEXT NOT NULL,
130
- PRIMARY KEY (release_id, fs_id),
131
- FOREIGN KEY (release_id) REFERENCES release(id) ON DELETE CASCADE
132
- );
133
-
134
- CREATE INDEX IF NOT EXISTS idx_release_fs_release ON release_fs(release_id);
135
- CREATE INDEX IF NOT EXISTS idx_release_fs_fs ON release_fs(fs_id);
136
-
137
- -- ============================================
138
- -- AUDIT TRAIL
139
- -- ============================================
140
-
141
- -- Spec history (audit trail for changes)
142
- CREATE TABLE IF NOT EXISTS spec_history (
143
- id INTEGER PRIMARY KEY AUTOINCREMENT,
144
- spec_type TEXT NOT NULL CHECK (spec_type IN ('urs', 'fs', 'risk')),
145
- spec_id TEXT NOT NULL,
146
- changed_at TEXT NOT NULL,
147
- change_type TEXT NOT NULL CHECK (change_type IN ('created', 'updated', 'deleted')),
148
- snapshot TEXT NOT NULL, -- JSON of full spec at that point
149
- diff TEXT -- JSON of what changed (optional)
150
- );
151
-
152
- CREATE INDEX IF NOT EXISTS idx_spec_history_spec ON spec_history(spec_type, spec_id);
153
- CREATE INDEX IF NOT EXISTS idx_spec_history_date ON spec_history(changed_at);
154
-
155
- -- ============================================
156
- -- TEST EXECUTION
157
- -- ============================================
158
-
159
- -- Test runs (execution of test suite)
160
- CREATE TABLE IF NOT EXISTS test_run (
161
- id INTEGER PRIMARY KEY AUTOINCREMENT,
162
- release_id TEXT NOT NULL,
163
- run_date TEXT NOT NULL,
164
- source TEXT NOT NULL CHECK (source IN ('cucumber', 'manual', 'import')),
165
- total INTEGER NOT NULL DEFAULT 0,
166
- passed INTEGER NOT NULL DEFAULT 0,
167
- failed INTEGER NOT NULL DEFAULT 0,
168
- skipped INTEGER NOT NULL DEFAULT 0,
169
- FOREIGN KEY (release_id) REFERENCES release(id) ON DELETE CASCADE
170
- );
171
-
172
- CREATE INDEX IF NOT EXISTS idx_test_run_release ON test_run(release_id);
173
-
174
- -- Individual test results (per scenario)
175
- CREATE TABLE IF NOT EXISTS test_result (
176
- id INTEGER PRIMARY KEY AUTOINCREMENT,
177
- test_run_id INTEGER NOT NULL,
178
- fs_id TEXT NOT NULL,
179
- scenario_name TEXT NOT NULL,
180
- status TEXT NOT NULL CHECK (status IN ('passed', 'failed', 'skipped', 'pending')),
181
- duration_ms INTEGER,
182
- error_message TEXT,
183
- FOREIGN KEY (test_run_id) REFERENCES test_run(id) ON DELETE CASCADE
184
- );
185
-
186
- CREATE INDEX IF NOT EXISTS idx_test_result_run ON test_result(test_run_id);
187
- CREATE INDEX IF NOT EXISTS idx_test_result_fs ON test_result(fs_id);
188
-
189
- -- ============================================
190
- -- DEFECTS / DEVIATIONS
191
- -- ============================================
192
-
193
- CREATE TABLE IF NOT EXISTS defect (
194
- id TEXT PRIMARY KEY,
195
- release_id TEXT NOT NULL,
196
- test_result_id INTEGER, -- Optional link to a specific failed test result
197
- title TEXT NOT NULL,
198
- description TEXT NOT NULL,
199
- status TEXT NOT NULL CHECK (status IN ('open', 'resolved', 'accepted')),
200
- created_at TEXT NOT NULL,
201
- updated_at TEXT NOT NULL,
202
- FOREIGN KEY (release_id) REFERENCES release(id) ON DELETE CASCADE,
203
- FOREIGN KEY (test_result_id) REFERENCES test_result(id) ON DELETE SET NULL
204
- );
205
-
206
- CREATE INDEX IF NOT EXISTS idx_defect_release ON defect(release_id);
207
- `;(0,e.dirname)((0,f.fileURLToPath)("file:///Users/matthew/Code/github/p11o/machine/docs/src/lib/database/index.ts"));let h=null;function i(){if(!h){let a=process.env.MACHINE_DB_PATH?process.env.MACHINE_DB_PATH:(0,e.join)(process.cwd(),"matrix.db");(h=new d.Database(a,{create:!0})).exec("PRAGMA foreign_keys = ON"),h&&h.exec(g)}return h}function j(){return new Date().toISOString().split("T")[0]}function k(a,b){let c=b.filter(b=>b.startsWith(a)).map(b=>{let c=b.match(RegExp(`${a}-(\\d+)`));return c?parseInt(c[1],10):0}),d=c.length>0?Math.max(...c):0;return`${a}-${String(d+1).padStart(3,"0")}`}function l(a,b){let c=i().query(`SELECT id FROM ${b} WHERE id LIKE '${a}-%'`).all().map(a=>a.id);return k(a,c)}},1409:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>k,dynamic:()=>j});var d=c(5735),e=c(91970),f=c(87079),g=c(94547);c(29021);var h=c(23733),i=c(29575);let j="force-dynamic";async function k({params:a}){let{id:b}=await a,c=(0,f.U)(b);c||(0,e.notFound)();let j=(0,f.g5)(b),k=(0,h.x7)(),l=k.filter(a=>j.includes(a.id)),m=k.filter(a=>!j.includes(a.id)),n=(0,g.Lf)().query(`
1
+ (()=>{var a={};a.id=41,a.ids=[41],a.modules={108:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b)||(0,h.isPrerenderInterruptedError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=c(48894),e=c(64491),f=c(62880),g=c(76484),h=c(23445),i=c(43449);("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1409:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>k,dynamic:()=>j});var d=c(5735),e=c(91970),f=c(87079),g=c(94547);c(29021);var h=c(71001),i=c(29575);let j="force-dynamic";async function k({params:a}){let{id:b}=await a,c=(0,f.U)(b);c||(0,e.notFound)();let j=(0,f.g5)(b),k=(0,h.x7)(),l=k.filter(a=>j.includes(a.id)),m=k.filter(a=>!j.includes(a.id)),n=(0,g.Lf)().query(`
208
2
  SELECT * FROM test_run WHERE release_id = ? ORDER BY run_date DESC
209
3
  `).all(b),o=(0,g.Lf)().query(`
210
4
  SELECT * FROM defect
211
5
  WHERE release_id = ?
212
6
  ORDER BY created_at DESC
213
7
  `).all(b);return(0,d.jsx)(i.ReleaseDetailClient,{release:c,taggedFS:l,availableFS:m,testRuns:n,defects:o})}},1932:a=>{"use strict";a.exports=require("url")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},9018:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>C.a,__next_app__:()=>K,handler:()=>M,routeModule:()=>L});var d=c(7553),e=c(84006),f=c(67798),g=c(34775),h=c(99373),i=c(73461),j=c(1020),k=c(26349),l=c(54365),m=c(16023),n=c(63747),o=c(24235),p=c(23938),q=c(261),r=c(66758),s=c(77243),t=c(26713),u=c(37527),v=c(22820),w=c(88216),x=c(47929),y=c(79551),z=c(89125),A=c(86439),B=c(95547),C=c.n(B),D=c(61287),E=c(81494),F=c(70722),G=c(70753),H=c(43954),I={};for(let a in D)0>["default","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(I[a]=()=>D[a]);c.d(b,I);let J={children:["",{children:["releases",{children:["[id]",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,1409)),"/Users/matthew/Code/github/p11o/machine/docs/src/app/releases/[id]/page.tsx"]}]},{}]},{metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,70440))).default(a)],apple:[],openGraph:[],twitter:[],manifest:void 0}}]},{layout:[()=>Promise.resolve().then(c.bind(c,76537)),"/Users/matthew/Code/github/p11o/machine/docs/src/app/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,95547,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,55091,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,45270,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,28193,23)),"next/dist/client/components/builtin/unauthorized.js"],metadata:{icon:[async a=>(await Promise.resolve().then(c.bind(c,70440))).default(a)],apple:[],openGraph:[],twitter:[],manifest:void 0}}]}.children,K={require:c,loadChunk:()=>Promise.resolve()},L=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/releases/[id]/page",pathname:"/releases/[id]",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:J},distDir:".next",relativeProjectDir:""});async function M(a,b,d){var B;L.isDev&&(0,h.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let I=!!(0,h.getRequestMeta)(a,"minimalMode"),N="/releases/[id]/page";"/index"===N&&(N="/");let O=await L.prepare(a,b,{srcPage:N,multiZoneDraftMode:!1});if(!O)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:P,query:Q,params:R,pageIsDynamic:S,buildManifest:T,nextFontManifest:U,reactLoadableManifest:V,serverActionsManifest:W,clientReferenceManifest:X,subresourceIntegrityManifest:Y,prerenderManifest:Z,isDraftMode:$,resolvedPathname:_,revalidateOnlyGenerated:aa,routerServerContext:ab,nextConfig:ac,parsedUrl:ad,interceptionRoutePatterns:ae,deploymentId:af}=O,ag=(0,q.normalizeAppPath)(N),{isOnDemandRevalidate:ah}=O,ai=ac.experimental.ppr&&!ac.cacheComponents&&(0,H.isInterceptionRouteAppPath)(_)?null:L.match(_,Z),aj=!!Z.routes[_],ak=a.headers["user-agent"]||"",al=(0,t.getBotType)(ak),am=(0,p.isHtmlBotRequest)(a),an=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[s.NEXT_ROUTER_PREFETCH_HEADER],ao=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[s.RSC_HEADER],ap=(0,r.getIsPossibleServerAction)(a),aq=(0,m.checkIsAppPPREnabled)(ac.experimental.ppr);if(!(0,h.getRequestMeta)(a,"postponed")&&aq&&"1"===a.headers[x.NEXT_RESUME_HEADER]&&"POST"===a.method){let b=[];for await(let c of a)b.push(c);let c=Buffer.concat(b).toString("utf8");(0,h.addRequestMeta)(a,"postponed",c)}let ar=aq&&(null==(B=Z.routes[ag]??Z.dynamicRoutes[ag])?void 0:B.renderingMode)==="PARTIALLY_STATIC",as=!1,at=!1,au=ar?(0,h.getRequestMeta)(a,"postponed"):void 0,av=ar&&ao&&!an;I&&(av=av&&!!au);let aw=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ax=(!am||!ar)&&(!ak||(0,p.shouldServeStreamingMetadata)(ak,ac.htmlLimitedBots)),ay=!!((ai||aj||Z.routes[ag])&&!(am&&ar)),az=ar&&!0===ac.cacheComponents,aA=!0===L.isDev||!ay||"string"==typeof au||(az&&(0,h.getRequestMeta)(a,"onCacheEntryV2")?av&&!I:av),aB=am&&ar,aC=null;$||!ay||aA||ap||au||av||(aC=_);let aD=aC;!aD&&L.isDev&&(aD=_),L.isDev||$||!ay||!ao||av||(0,k.d)(a.headers);let aE={...D,tree:J,GlobalError:C(),handler:M,routeModule:L,__next_app__:K};W&&X&&(0,o.setManifestsSingleton)({page:N,clientReferenceManifest:X,serverActionsManifest:W});let aF=a.method||"GET",aG=(0,g.getTracer)(),aH=aG.getActiveScopeSpan(),aI=async()=>((null==ab?void 0:ab.render404)?await ab.render404(a,b,ad,!1):b.end("This page could not be found"),null);try{let f=L.getVaryHeader(_,ae);b.setHeader("Vary",f);let k=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return L.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let a=aG.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let d=a.get("next.route");if(d){let a=`${aF} ${d}`;c.setAttributes({"next.route":d,"http.route":d,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aF} ${N}`)})},m=(0,h.getRequestMeta)(a,"incrementalCache"),o=async({span:e,postponed:f,fallbackRouteParams:g,forceStaticRender:i})=>{let l={query:Q,params:R,page:ag,sharedContext:{buildId:P},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aE,Component:(0,j.T)(aE),params:R,routeModule:L,page:N,postponed:f,shouldWaitOnAllReady:aB,serveStreamingMetadata:ax,supportsDynamicResponse:"string"==typeof f||aA,buildManifest:T,nextFontManifest:U,reactLoadableManifest:V,subresourceIntegrityManifest:Y,setCacheStatus:null==ab?void 0:ab.setCacheStatus,setIsrStatus:null==ab?void 0:ab.setIsrStatus,setReactDebugChannel:null==ab?void 0:ab.setReactDebugChannel,sendErrorsToBrowser:null==ab?void 0:ab.sendErrorsToBrowser,dir:c(33873).join(process.cwd(),L.relativeProjectDir),isDraftMode:$,botType:al,isOnDemandRevalidate:ah,isPossibleServerAction:ap,assetPrefix:ac.assetPrefix,nextConfigOutput:ac.output,crossOrigin:ac.crossOrigin,trailingSlash:ac.trailingSlash,images:ac.images,previewProps:Z.preview,deploymentId:af,enableTainting:ac.experimental.taint,htmlLimitedBots:ac.htmlLimitedBots,reactMaxHeadersLength:ac.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:m,cacheLifeProfiles:ac.cacheLife,basePath:ac.basePath,serverActions:ac.experimental.serverActions,...as||at?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isDebugDynamicAccesses:as}:{},cacheComponents:!!ac.cacheComponents,experimental:{isRoutePPREnabled:ar,expireTime:ac.expireTime,staleTimes:ac.experimental.staleTimes,dynamicOnHover:!!ac.experimental.dynamicOnHover,inlineCss:!!ac.experimental.inlineCss,authInterrupts:!!ac.experimental.authInterrupts,clientTraceMetadata:ac.experimental.clientTraceMetadata||[],clientParamParsingOrigins:ac.experimental.clientParamParsingOrigins},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d,e)=>L.onRequestError(a,b,d,e,ab),err:(0,h.getRequestMeta)(a,"invokeError"),dev:L.isDev}};as&&(l.renderOpts.nextExport=!0,l.renderOpts.supportsDynamicResponse=!1,l.renderOpts.isDebugDynamicAccesses=as),i&&(l.renderOpts.supportsDynamicResponse=!1);let n=await k(e,l),{metadata:o}=n,{cacheControl:p,headers:q={},fetchTags:r,fetchMetrics:s}=o;if(r&&(q[x.NEXT_CACHE_TAGS_HEADER]=r),a.fetchMetrics=s,ay&&(null==p?void 0:p.revalidate)===0&&!L.isDev&&!ar){let a=o.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${_}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
214
- see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:u.CachedRouteKind.APP_PAGE,html:n,headers:q,rscData:o.flightData,postponed:o.postponed,status:o.statusCode,segmentData:o.segmentData},cacheControl:p}},p=async({hasResolved:c,previousCacheEntry:f,isRevalidating:g,span:i,forceStaticRender:j=!1})=>{let k,l=!1===L.isDev,q=c||b.writableEnded;if(ah&&aa&&!f&&!I)return(null==ab?void 0:ab.render404)?await ab.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(ai&&(k=(0,v.parseFallbackField)(ai.fallback)),k===v.FallbackMode.PRERENDER&&(0,t.isBot)(ak)&&(!ar||am)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ah=!0),ah&&(k!==v.FallbackMode.NOT_FOUND||f)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),!I&&k!==v.FallbackMode.BLOCKING_STATIC_RENDER&&aD&&!q&&!$&&S&&(l||!aj)){if((l||ai)&&k===v.FallbackMode.NOT_FOUND){if(ac.experimental.adapterPath)return await aI();throw new A.NoFallbackError}if(ar&&(ac.cacheComponents?!av:!ao)){let b=l&&"string"==typeof(null==ai?void 0:ai.fallback)?ai.fallback:ag,c=l&&(null==ai?void 0:ai.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(ai.fallbackRouteParams):at?(0,n.getFallbackRouteParams)(ag,L):null,f=await L.handleResponse({cacheKey:b,req:a,nextConfig:ac,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:Z,isRoutePPREnabled:ar,responseGenerator:async()=>o({span:i,postponed:void 0,fallbackRouteParams:c,forceStaticRender:!1}),waitUntil:d.waitUntil,isMinimalMode:I});if(null===f)return null;if(f)return delete f.cacheControl,f}}let r=ah||g||!au?void 0:au;if(az&&!I&&m&&av&&!j){let b=await m.get(_,{kind:u.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===u.CachedRouteKind.APP_PAGE&&(r=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,G.scheduleOnNextTick)(async()=>{let b=L.getResponseCache(a);try{await b.revalidate(_,m,ar,!1,a=>p({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if(as&&void 0!==r)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:u.CachedRouteKind.PAGES,html:w.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let s=l&&(null==ai?void 0:ai.fallbackRouteParams)&&(0,h.getRequestMeta)(a,"renderFallbackShell")?(0,n.createOpaqueFallbackRouteParams)(ai.fallbackRouteParams):at?(0,n.getFallbackRouteParams)(ag,L):null;return o({span:i,postponed:r,fallbackRouteParams:s,forceStaticRender:j})},q=async c=>{var f,g,i,j,k;let l,m=await L.handleResponse({cacheKey:aC,responseGenerator:a=>p({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ah,isRoutePPREnabled:ar,req:a,nextConfig:ac,prerenderManifest:Z,waitUntil:d.waitUntil,isMinimalMode:I});if($&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),L.isDev&&b.setHeader("Cache-Control","no-store, must-revalidate"),!m){if(aC)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=m.value)?void 0:f.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=m.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let n="string"==typeof m.value.postponed;ay&&!av&&(!n||an)&&(I||b.setHeader("x-nextjs-cache",ah?"REVALIDATED":m.isMiss?"MISS":m.isStale?"STALE":"HIT"),b.setHeader(s.NEXT_IS_PRERENDER_HEADER,"1"));let{value:q}=m;if(au)l={revalidate:0,expire:void 0};else if(av)l={revalidate:0,expire:void 0};else if(!L.isDev)if($)l={revalidate:0,expire:void 0};else if(ay){if(m.cacheControl)if("number"==typeof m.cacheControl.revalidate){if(m.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${m.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:m.cacheControl.revalidate,expire:(null==(j=m.cacheControl)?void 0:j.expire)??ac.expireTime}}else l={revalidate:x.CACHE_ONE_YEAR,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(m.cacheControl=l,"string"==typeof aw&&(null==q?void 0:q.kind)===u.CachedRouteKind.APP_PAGE&&q.segmentData){b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=q.headers)?void 0:k[x.NEXT_CACHE_TAGS_HEADER];I&&ay&&c&&"string"==typeof c&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,c);let d=q.segmentData.get(aw);return void 0!==d?(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.fromStatic(d,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl}):(b.statusCode=204,(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl}))}let r=az?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r(m,{url:(0,h.getRequestMeta)(a,"initURL")??a.url}))return null;if(q.headers){let a={...q.headers};for(let[c,d]of(I&&ay||delete a[x.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let t=null==(g=q.headers)?void 0:g[x.NEXT_CACHE_TAGS_HEADER];if(I&&ay&&t&&"string"==typeof t&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,t),!q.status||ao&&ar||(b.statusCode=q.status),!I&&q.status&&E.RedirectStatusCode[q.status]&&ao&&(b.statusCode=200),n&&!av&&b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"1"),ao&&!$){if(void 0===q.rscData){if(q.html.contentType!==s.RSC_CONTENT_TYPE_HEADER)if(ac.cacheComponents)return b.statusCode=404,(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl});else throw Object.defineProperty(new F.InvariantError(`Expected RSC response, got ${q.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:q.html,cacheControl:m.cacheControl})}return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.fromStatic(q.rscData,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl})}let v=q.html;if(!n||I||ao)return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:m.cacheControl});if(as)return v.push(new ReadableStream({start(a){a.enqueue(y.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}});let A=new TransformStream;return v.push(A.readable),o({span:c,postponed:q.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(A.writable)}).catch(a=>{A.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})};if(!aH)return await aG.withPropagatedContext(a.headers,()=>aG.trace(i.BaseServerSpan.handleRequest,{spanName:`${aF} ${N}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aF,"http.target":a.url}},q));await q(aH)}catch(b){throw b instanceof A.NoFallbackError||await L.onRequestError(a,b,{routerKind:"App Router",routePath:N,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:ay,isOnDemandRevalidate:ah})},!1,ab),b}}},10381:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"ReadonlyURLSearchParams",{enumerable:!0,get:function(){return d}});class c extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class d extends URLSearchParams{append(){throw new c}delete(){throw new c}set(){throw new c}sort(){throw new c}}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},13960:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"4042419f463cf3a63bf0b0d0c64cb2987431e24604":()=>l,"4046a6c707b07829c7bfc2878ea1f4b377c8655483":()=>i,"40ad2f43ca3b1b03af8b1a38048b9eb0ee79a9d607":()=>d.Y7,"609070c25ccf57c1df77e6d290a8d491ce7bf04d5d":()=>d.ct,"60ad26275d2ce9726f98b0c3a41bd5778e2035431d":()=>d.Id,"60c2193dbec109e9e67c73d60e5a4964f2c137b360":()=>k,"60fa3d128e354a5cb1c2d24b6415f04fc0114da0c0":()=>d.Lk,"7014b6efcba613c6cfc413d6500abd75d9052f0b36":()=>j});var d=c(14494),e=c(95349),f=c(42650),g=c(624),h=c(89337);async function i(a){var b,c;let d,e,h,i;b={release_id:a.releaseId,test_result_id:a.testResultId,title:a.title,description:a.description,status:a.status},d=(0,g.Lf)(),e=(0,g.lg)(),h=d.query("SELECT id FROM defect").all(),i=(0,g.$C)("DEF",h.map(a=>a.id)),d.query(`
8
+ see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:u.CachedRouteKind.APP_PAGE,html:n,headers:q,rscData:o.flightData,postponed:o.postponed,status:o.statusCode,segmentData:o.segmentData},cacheControl:p}},p=async({hasResolved:c,previousCacheEntry:f,isRevalidating:g,span:i,forceStaticRender:j=!1})=>{let k,l=!1===L.isDev,q=c||b.writableEnded;if(ah&&aa&&!f&&!I)return(null==ab?void 0:ab.render404)?await ab.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(ai&&(k=(0,v.parseFallbackField)(ai.fallback)),k===v.FallbackMode.PRERENDER&&(0,t.isBot)(ak)&&(!ar||am)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ah=!0),ah&&(k!==v.FallbackMode.NOT_FOUND||f)&&(k=v.FallbackMode.BLOCKING_STATIC_RENDER),!I&&k!==v.FallbackMode.BLOCKING_STATIC_RENDER&&aD&&!q&&!$&&S&&(l||!aj)){if((l||ai)&&k===v.FallbackMode.NOT_FOUND){if(ac.experimental.adapterPath)return await aI();throw new A.NoFallbackError}if(ar&&(ac.cacheComponents?!av:!ao)){let b=l&&"string"==typeof(null==ai?void 0:ai.fallback)?ai.fallback:ag,c=l&&(null==ai?void 0:ai.fallbackRouteParams)?(0,n.createOpaqueFallbackRouteParams)(ai.fallbackRouteParams):at?(0,n.getFallbackRouteParams)(ag,L):null,f=await L.handleResponse({cacheKey:b,req:a,nextConfig:ac,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:Z,isRoutePPREnabled:ar,responseGenerator:async()=>o({span:i,postponed:void 0,fallbackRouteParams:c,forceStaticRender:!1}),waitUntil:d.waitUntil,isMinimalMode:I});if(null===f)return null;if(f)return delete f.cacheControl,f}}let r=ah||g||!au?void 0:au;if(az&&!I&&m&&av&&!j){let b=await m.get(_,{kind:u.IncrementalCacheKind.APP_PAGE,isRoutePPREnabled:!0,isFallback:!1});b&&b.value&&b.value.kind===u.CachedRouteKind.APP_PAGE&&(r=b.value.postponed,b&&(-1===b.isStale||!0===b.isStale)&&(0,G.scheduleOnNextTick)(async()=>{let b=L.getResponseCache(a);try{await b.revalidate(_,m,ar,!1,a=>p({...a,forceStaticRender:!0}),null,c,d.waitUntil)}catch(a){console.error("Error revalidating the page in the background",a)}}))}if(as&&void 0!==r)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:u.CachedRouteKind.PAGES,html:w.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let s=l&&(null==ai?void 0:ai.fallbackRouteParams)&&(0,h.getRequestMeta)(a,"renderFallbackShell")?(0,n.createOpaqueFallbackRouteParams)(ai.fallbackRouteParams):at?(0,n.getFallbackRouteParams)(ag,L):null;return o({span:i,postponed:r,fallbackRouteParams:s,forceStaticRender:j})},q=async c=>{var f,g,i,j,k;let l,m=await L.handleResponse({cacheKey:aC,responseGenerator:a=>p({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ah,isRoutePPREnabled:ar,req:a,nextConfig:ac,prerenderManifest:Z,waitUntil:d.waitUntil,isMinimalMode:I});if($&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),L.isDev&&b.setHeader("Cache-Control","no-store, must-revalidate"),!m){if(aC)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=m.value)?void 0:f.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=m.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let n="string"==typeof m.value.postponed;ay&&!av&&(!n||an)&&(I||b.setHeader("x-nextjs-cache",ah?"REVALIDATED":m.isMiss?"MISS":m.isStale?"STALE":"HIT"),b.setHeader(s.NEXT_IS_PRERENDER_HEADER,"1"));let{value:q}=m;if(au)l={revalidate:0,expire:void 0};else if(av)l={revalidate:0,expire:void 0};else if(!L.isDev)if($)l={revalidate:0,expire:void 0};else if(ay){if(m.cacheControl)if("number"==typeof m.cacheControl.revalidate){if(m.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${m.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:m.cacheControl.revalidate,expire:(null==(j=m.cacheControl)?void 0:j.expire)??ac.expireTime}}else l={revalidate:x.CACHE_ONE_YEAR,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(m.cacheControl=l,"string"==typeof aw&&(null==q?void 0:q.kind)===u.CachedRouteKind.APP_PAGE&&q.segmentData){b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=q.headers)?void 0:k[x.NEXT_CACHE_TAGS_HEADER];I&&ay&&c&&"string"==typeof c&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,c);let d=q.segmentData.get(aw);return void 0!==d?(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.fromStatic(d,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl}):(b.statusCode=204,(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl}))}let r=az?(0,h.getRequestMeta)(a,"onCacheEntryV2")??(0,h.getRequestMeta)(a,"onCacheEntry"):(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r(m,{url:(0,h.getRequestMeta)(a,"initURL")??a.url}))return null;if(q.headers){let a={...q.headers};for(let[c,d]of(I&&ay||delete a[x.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let t=null==(g=q.headers)?void 0:g[x.NEXT_CACHE_TAGS_HEADER];if(I&&ay&&t&&"string"==typeof t&&b.setHeader(x.NEXT_CACHE_TAGS_HEADER,t),!q.status||ao&&ar||(b.statusCode=q.status),!I&&q.status&&E.RedirectStatusCode[q.status]&&ao&&(b.statusCode=200),n&&!av&&b.setHeader(s.NEXT_DID_POSTPONE_HEADER,"1"),ao&&!$){if(void 0===q.rscData){if(q.html.contentType!==s.RSC_CONTENT_TYPE_HEADER)if(ac.cacheComponents)return b.statusCode=404,(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.EMPTY,cacheControl:m.cacheControl});else throw Object.defineProperty(new F.InvariantError(`Expected RSC response, got ${q.html.contentType}`),"__NEXT_ERROR_CODE",{value:"E789",enumerable:!1,configurable:!0});return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:q.html,cacheControl:m.cacheControl})}return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:w.default.fromStatic(q.rscData,s.RSC_CONTENT_TYPE_HEADER),cacheControl:m.cacheControl})}let v=q.html;if(!n||I||ao)return(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:m.cacheControl});if(as)return v.push(new ReadableStream({start(a){a.enqueue(y.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}});let A=new TransformStream;return v.push(A.readable),o({span:c,postponed:q.postponed,fallbackRouteParams:null,forceStaticRender:!1}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==u.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(A.writable)}).catch(a=>{A.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,z.sendRenderResult)({req:a,res:b,generateEtags:ac.generateEtags,poweredByHeader:ac.poweredByHeader,result:v,cacheControl:{revalidate:0,expire:void 0}})};if(!aH)return await aG.withPropagatedContext(a.headers,()=>aG.trace(i.BaseServerSpan.handleRequest,{spanName:`${aF} ${N}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aF,"http.target":a.url}},q));await q(aH)}catch(b){throw b instanceof A.NoFallbackError||await L.onRequestError(a,b,{routerKind:"App Router",routePath:N,routeType:"render",revalidateReason:(0,f.c)({isStaticGeneration:ay,isOnDemandRevalidate:ah})},!1,ab),b}}},10381:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"ReadonlyURLSearchParams",{enumerable:!0,get:function(){return d}});class c extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class d extends URLSearchParams{append(){throw new c}delete(){throw new c}set(){throw new c}sort(){throw new c}}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},29575:(a,b,c)=>{"use strict";c.d(b,{ReleaseDetailClient:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call ReleaseDetailClient() from the server but ReleaseDetailClient is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/matthew/Code/github/p11o/machine/docs/src/app/releases/[id]/release-detail-client.tsx","ReleaseDetailClient")},32171:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={getRedirectError:function(){return i},getRedirectStatusCodeFromError:function(){return n},getRedirectTypeFromError:function(){return m},getURLFromRedirectError:function(){return l},permanentRedirect:function(){return k},redirect:function(){return j}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(81494),g=c(52220),h=c(19121).actionAsyncStorage;function i(a,b,c=f.RedirectStatusCode.TemporaryRedirect){let d=Object.defineProperty(Error(g.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return d.digest=`${g.REDIRECT_ERROR_CODE};${b};${a};${c};`,d}function j(a,b){throw i(a,b??=h?.getStore()?.isAction?g.RedirectType.push:g.RedirectType.replace,f.RedirectStatusCode.TemporaryRedirect)}function k(a,b=g.RedirectType.replace){throw i(a,b,f.RedirectStatusCode.PermanentRedirect)}function l(a){return(0,g.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function m(a){if(!(0,g.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return a.digest.split(";",2)[1]}function n(a){if(!(0,g.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(a.digest.split(";").at(-2))}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},33873:a=>{"use strict";a.exports=require("path")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},43954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},44057:(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unauthorized",{enumerable:!0,get:function(){return d}}),c(7638).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},45530:(a,b,c)=>{"use strict";c.d(b,{ReleaseDetailClient:()=>n});var d=c(48249),e=c(67484),f=c(2116),g=c.n(f),h=c(99829);let i=(0,h.createServerReference)("6066fbdd9590694147a61dd2d0610d4a17a743ab71",h.callServer,void 0,h.findSourceMapURL,"updateReleaseAction"),j=(0,h.createServerReference)("601c134e991ba9cc3f4991d149387cd3dbab14be08",h.callServer,void 0,h.findSourceMapURL,"tagFSToReleaseAction"),k=(0,h.createServerReference)("60cc042fd5ebbf890d842c608810ef217e88314812",h.callServer,void 0,h.findSourceMapURL,"untagFSFromReleaseAction"),l=(0,h.createServerReference)("40bab5840684a73e69c20467b67d6a4585adfe42b2",h.callServer,void 0,h.findSourceMapURL,"createDefectAction"),m=(0,h.createServerReference)("40fb944e52eed131b7e20fca4aabd664fd62eaabd4",h.callServer,void 0,h.findSourceMapURL,"loadTestRunAction");function n({release:a,taggedFS:b,availableFS:c,testRuns:f,defects:h}){let[n,o]=(0,e.useState)(!1),[p,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)([]),[t,u]=(0,e.useState)(null),[v,w]=(0,e.useState)({}),[x,y]=(0,e.useState)(null),[z,A]=(0,e.useState)(new Set),[B,C]=(0,e.useState)({isOpen:!1}),[D,E]=(0,e.useState)({title:"",description:"",status:"open"}),[F,G]=(0,e.useState)({titleError:!1,descriptionError:!1}),[H,I]=(0,e.useTransition)(),[J,K]=(0,e.useState)({version:a.version,name:a.name,status:a.status,notes:a.notes||""}),L=(a,b,c)=>{C({isOpen:!0,testResultId:a,fsId:b,scenarioName:c}),E({title:c?`Defect: ${c} failure`:"",description:c?`Failure in ${b} - ${c}.
9
+
10
+ Root Cause:
11
+
12
+ Mitigation:`:"",status:"open"})},M={planning:{bg:"rgba(168, 85, 247, 0.1)",color:"#a855f7"},testing:{bg:"rgba(59, 130, 246, 0.1)",color:"#3b82f6"},released:{bg:"rgba(34, 197, 94, 0.1)",color:"#22c55e"}}[a.status];return(0,d.jsxs)("div",{style:{maxWidth:"1200px",margin:"0 auto",padding:"2rem"},children:[(0,d.jsx)("div",{style:{marginBottom:"1.5rem"},children:(0,d.jsx)(g(),{href:"/releases",style:{color:"var(--text-secondary)",textDecoration:"none"},children:"← Back to Releases"})}),(0,d.jsxs)("header",{style:{marginBottom:"2rem"},children:[(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"1rem",marginBottom:"0.5rem"},children:[(0,d.jsxs)("code",{style:{fontSize:"1.5rem",fontWeight:700,color:M.color},children:[" ",a.id," "]}),(0,d.jsxs)("span",{style:{fontSize:"1.25rem",fontWeight:600},children:["v",a.version]}),(0,d.jsx)("span",{className:"badge",style:{background:M.bg,color:M.color,padding:"0.5rem 1rem"},children:a.status}),(0,d.jsx)("button",{onClick:()=>o(!n),className:"btn btn-primary",style:{marginLeft:"auto"},children:n?"Cancel":"✏️ Edit"})]}),(0,d.jsx)("h1",{style:{fontSize:"2rem",fontWeight:700},children:a.name}),(0,d.jsxs)("p",{style:{color:"var(--text-secondary)"},children:["Created ",a.created_at,a.released_at&&` • Released ${a.released_at}`]})]}),n&&(0,d.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem"},children:[(0,d.jsx)("h2",{className:"card-title",children:"Edit Release"}),(0,d.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 2fr 1fr",gap:"1rem",marginBottom:"1rem"},children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{style:{display:"block",fontWeight:500,marginBottom:"0.5rem"},children:"Version"}),(0,d.jsx)("input",{type:"text",value:J.version,onChange:a=>K({...J,version:a.target.value}),className:"input"})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{style:{display:"block",fontWeight:500,marginBottom:"0.5rem"},children:"Name"}),(0,d.jsx)("input",{type:"text",value:J.name,onChange:a=>K({...J,name:a.target.value}),className:"input"})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{style:{display:"block",fontWeight:500,marginBottom:"0.5rem"},children:"Status"}),(0,d.jsxs)("select",{value:J.status,onChange:a=>K({...J,status:a.target.value}),className:"input",children:[(0,d.jsx)("option",{value:"planning",children:"Planning"}),(0,d.jsx)("option",{value:"testing",children:"Testing"}),(0,d.jsx)("option",{value:"released",children:"Released"})]})]})]}),(0,d.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,d.jsx)("label",{style:{display:"block",fontWeight:500,marginBottom:"0.5rem"},children:"Notes"}),(0,d.jsx)("textarea",{value:J.notes,onChange:a=>K({...J,notes:a.target.value}),rows:3,className:"input",style:{resize:"vertical"}})]}),(0,d.jsx)("button",{onClick:()=>{I(async()=>{await i(a.id,J),o(!1)})},className:"btn btn-primary",disabled:H,children:H?"Saving...":"Save Changes"})]}),a.notes&&!n&&(0,d.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem"},children:[(0,d.jsx)("h2",{className:"card-title",children:"\uD83D\uDCDD Notes"}),(0,d.jsx)("p",{style:{color:"var(--text-secondary)",whiteSpace:"pre-wrap"},children:a.notes})]}),(0,d.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem",borderLeft:"4px solid var(--error)"},children:[(0,d.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1rem"},children:[(0,d.jsxs)("h2",{className:"card-title",children:["\uD83D\uDEA8 Defects & Deviations (",h.length,")"]}),(0,d.jsx)("button",{className:"btn",onClick:()=>L(),children:"+ Log Defect"})]}),0===h.length?(0,d.jsx)("p",{style:{color:"var(--text-secondary)"},children:"No defects logged. Any failed tests must be resolved or logged as a defect."}):(0,d.jsx)("div",{style:{display:"grid",gap:"0.75rem"},children:h.map(a=>(0,d.jsxs)("div",{style:{padding:"1rem",background:"var(--bg-hover)",borderRadius:"8px",borderLeft:"open"===a.status?"3px solid red":"3px solid green"},children:[(0,d.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",marginBottom:"0.5rem"},children:[(0,d.jsxs)("div",{style:{fontWeight:600},children:[a.id,": ",a.title]}),(0,d.jsx)("div",{className:"badge",style:{background:"open"===a.status?"rgba(239, 68, 68, 0.1)":"rgba(34, 197, 94, 0.1)",color:"open"===a.status?"var(--error)":"var(--success)"},children:a.status.toUpperCase()})]}),(0,d.jsx)("div",{style:{fontSize:"0.875rem",color:"var(--text-secondary)",whiteSpace:"pre-wrap"},children:a.description}),a.test_result_id&&(0,d.jsxs)("div",{style:{marginTop:"0.5rem",fontSize:"0.75rem",color:"var(--warning)"},children:["Linked to failed test result #",a.test_result_id]})]},a.id))})]}),(0,d.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem"},children:[(0,d.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1rem"},children:[(0,d.jsxs)("h2",{className:"card-title",style:{margin:0},children:["⚙️ Features (",b.length,")"]}),(0,d.jsx)("button",{onClick:()=>q(!0),className:"btn",disabled:0===c.length,children:"+ Add Features"})]}),p&&(0,d.jsxs)("div",{style:{marginBottom:"1rem",padding:"1rem",background:"var(--bg-hover)",borderRadius:"8px"},children:[(0,d.jsx)("div",{style:{marginBottom:"0.5rem",fontWeight:500},children:"Select features to add:"}),(0,d.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:"0.5rem",marginBottom:"1rem"},children:c.map(a=>(0,d.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:"0.5rem",cursor:"pointer"},children:[(0,d.jsx)("input",{type:"checkbox",checked:r.includes(a.id),onChange:b=>{b.target.checked?s([...r,a.id]):s(r.filter(b=>b!==a.id))}}),(0,d.jsx)("code",{style:{color:"var(--warning)"},children:a.id}),(0,d.jsx)("span",{children:a.title})]},a.id))}),(0,d.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,d.jsx)("button",{onClick:()=>{q(!1),s([])},className:"btn",children:"Cancel"}),(0,d.jsx)("button",{onClick:()=>{0!==r.length&&I(async()=>{await j(a.id,r),q(!1),s([])})},className:"btn btn-primary",disabled:H||0===r.length,children:H?"Adding...":`Add ${r.length} Feature${1!==r.length?"s":""}`})]})]}),0===b.length?(0,d.jsx)("p",{style:{color:"var(--text-secondary)"},children:"No features tagged yet. Add features to track them in this release."}):(0,d.jsx)("div",{style:{display:"grid",gap:"0.5rem"},children:b.map(b=>(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 1rem",background:"var(--bg-hover)",borderRadius:"8px"},children:[(0,d.jsxs)(g(),{href:`/specs/${b.id}`,style:{flex:1,textDecoration:"none"},children:[(0,d.jsx)("code",{style:{fontWeight:600,color:"var(--warning)",marginRight:"0.75rem"},children:b.id}),(0,d.jsx)("span",{style:{color:"var(--text-primary)"},children:b.title}),(0,d.jsxs)("span",{style:{marginLeft:"0.75rem",color:"var(--text-secondary)",fontSize:"0.875rem"},children:[b.scenario_count," scenarios"]})]}),(0,d.jsx)("button",{onClick:()=>{var c;return c=b.id,void I(async()=>{await k(a.id,c)})},className:"btn",style:{padding:"0.25rem 0.5rem",fontSize:"0.75rem"},disabled:H,children:"\xd7"})]},b.id))})]}),(0,d.jsxs)("div",{className:"card",children:[(0,d.jsxs)("h2",{className:"card-title",children:["\uD83E\uDDEA Test Runs (",f.length,")"]}),0===f.length?(0,d.jsxs)("p",{style:{color:"var(--text-secondary)"},children:["No test runs yet. Import Cucumber results: ",(0,d.jsxs)("code",{children:["matrix release import-results results.json -r ",a.id]})]}):(0,d.jsx)("div",{style:{display:"grid",gap:"0.75rem"},children:f.map(a=>{let b=a.total>0?a.passed/a.total*100:0,c=t===a.id,e=async()=>{if(c)return void u(null);if(u(a.id),!v[a.id]){y(a.id);let b=await m(a.id);b&&w(c=>({...c,[a.id]:b.results})),y(null)}},f=v[a.id]||[],i=f.reduce((a,b)=>(a[b.fs_id]||(a[b.fs_id]=[]),a[b.fs_id].push(b),a),{});return(0,d.jsxs)("div",{style:{padding:"1rem",background:"var(--bg-hover)",borderRadius:"8px"},children:[(0,d.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",cursor:"pointer"},onClick:e,children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{style:{fontWeight:600,marginBottom:"0.25rem"},children:[a.failed>0?"❌":"✅"," Run #",a.id," ",c?"\uD83D\uDD3D":"▶"]}),(0,d.jsxs)("div",{style:{fontSize:"0.875rem",color:"var(--text-secondary)"},children:[a.run_date," • ",a.source]})]}),(0,d.jsxs)("div",{style:{display:"flex",gap:"1rem",textAlign:"center"},children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{style:{fontWeight:700,color:"var(--success)"},children:a.passed}),(0,d.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)"},children:"Passed"})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{style:{fontWeight:700,color:"var(--error)"},children:a.failed}),(0,d.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)"},children:"Failed"})]}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{style:{fontWeight:700,color:100===b?"var(--success)":b>=80?"var(--warning)":"var(--error)"},children:[b.toFixed(0),"%"]}),(0,d.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)"},children:"Pass Rate"})]})]})]}),c&&(0,d.jsx)("div",{style:{marginTop:"1rem",paddingTop:"1rem",borderTop:"1px solid var(--border)"},children:x===a.id?(0,d.jsx)("p",{style:{color:"var(--text-secondary)"},children:"Loading results..."}):0===f.length?(0,d.jsx)("p",{style:{color:"var(--text-secondary)"},children:"No individual results recorded for this run."}):(0,d.jsx)("div",{style:{display:"grid",gap:"1rem"},children:Object.entries(i).map(([a,b])=>(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{style:{fontWeight:600,marginBottom:"0.5rem",color:"var(--warning)"},children:(0,d.jsx)(g(),{href:`/specs/${a}`,style:{color:"inherit",textDecoration:"none"},children:a})}),(0,d.jsx)("div",{style:{display:"grid",gap:"0.25rem",paddingLeft:"1rem"},children:b.map(b=>{let c,e="passed"===b.status?"✅":"failed"===b.status?"❌":"⏭️";"passed"===b.status||b.status;let f=(c=b.id,h.some(a=>a.test_result_id===c)),g=b.error_message&&"failed"===b.status,i=z.has(b.id);return(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.5rem",padding:"0.25rem 0"},children:[(0,d.jsx)("span",{children:e}),(0,d.jsx)("span",{style:{flex:1},children:b.scenario_name}),null!=b.duration_ms&&(0,d.jsxs)("span",{style:{fontSize:"0.75rem",color:"var(--text-secondary)"},children:[b.duration_ms,"ms"]}),"failed"===b.status&&!f&&(0,d.jsx)("button",{className:"btn",style:{padding:"0.25rem 0.5rem",fontSize:"0.75rem"},onClick:c=>{c.stopPropagation(),L(b.id,a,b.scenario_name)},children:"Log Defect"}),"failed"===b.status&&f&&(0,d.jsx)("span",{style:{fontSize:"0.75rem",color:"var(--warning)"},children:"Defect Logged"}),g&&(0,d.jsx)("button",{className:"btn",style:{padding:"0.15rem 0.35rem",fontSize:"0.7rem"},onClick:a=>{var c;a.stopPropagation(),c=b.id,A(a=>{let b=new Set(a);return b.has(c)?b.delete(c):b.add(c),b})},children:i?"▲ Hide Error":"▼ Show Error"})]}),g&&i&&(0,d.jsx)("div",{style:{marginLeft:"1.5rem",padding:"0.5rem",background:"rgba(239, 68, 68, 0.1)",borderRadius:"4px",fontSize:"0.8rem",fontFamily:"monospace",whiteSpace:"pre-wrap",color:"var(--error)",marginBottom:"0.5rem"},children:b.error_message})]},b.id)})})]},a))})})]},a.id)})})]}),B.isOpen&&(0,d.jsx)("div",{style:{position:"fixed",top:0,left:0,right:0,bottom:0,background:"rgba(0,0,0,0.5)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:100},children:(0,d.jsxs)("div",{className:"card",style:{width:"500px",maxWidth:"90%"},children:[(0,d.jsx)("h2",{className:"card-title",children:"Log Defect / Deviation"}),(0,d.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,d.jsxs)("label",{style:{display:"block",marginBottom:"0.5rem"},children:["Title ",(0,d.jsx)("span",{style:{color:"var(--error)"},children:"*"})]}),(0,d.jsx)("input",{className:"input",value:D.title,onChange:a=>{E({...D,title:a.target.value}),a.target.value&&G(a=>({...a,titleError:!1}))},placeholder:"Defect summary",style:F.titleError?{borderColor:"var(--error)",boxShadow:"0 0 0 2px rgba(239, 68, 68, 0.2)"}:{}}),F.titleError&&(0,d.jsx)("div",{style:{color:"var(--error)",fontSize:"0.75rem",marginTop:"0.25rem"},children:"Title is required"})]}),(0,d.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,d.jsxs)("label",{style:{display:"block",marginBottom:"0.5rem"},children:["Description & Root Cause ",(0,d.jsx)("span",{style:{color:"var(--error)"},children:"*"})]}),(0,d.jsx)("textarea",{className:"input",rows:5,value:D.description,onChange:a=>{E({...D,description:a.target.value}),a.target.value&&G(a=>({...a,descriptionError:!1}))},placeholder:"Describe the failure, root cause, and why it is acceptable (if deviating) or mitigation plan.",style:F.descriptionError?{borderColor:"var(--error)",boxShadow:"0 0 0 2px rgba(239, 68, 68, 0.2)"}:{}}),F.descriptionError&&(0,d.jsx)("div",{style:{color:"var(--error)",fontSize:"0.75rem",marginTop:"0.25rem"},children:"Description is required"})]}),(0,d.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,d.jsx)("label",{style:{display:"block",marginBottom:"0.5rem"},children:"Status"}),(0,d.jsxs)("select",{className:"input",value:D.status,onChange:a=>E({...D,status:a.target.value}),children:[(0,d.jsx)("option",{value:"open",children:"Open (Needs Fix)"}),(0,d.jsx)("option",{value:"resolved",children:"Resolved (Fixed)"}),(0,d.jsx)("option",{value:"accepted",children:"Accepted (Permanent Deviation)"})]})]}),(0,d.jsxs)("div",{style:{display:"flex",gap:"0.5rem",justifyContent:"flex-end"},children:[(0,d.jsx)("button",{className:"btn",onClick:()=>{C({isOpen:!1}),G({titleError:!1,descriptionError:!1})},children:"Cancel"}),(0,d.jsx)("button",{className:"btn btn-primary",onClick:()=>{let b=!D.title.trim(),c=!D.description.trim();b||c?G({titleError:b,descriptionError:c}):I(async()=>{try{await l({releaseId:a.id,testResultId:B.testResultId,title:D.title,description:D.description,status:D.status}),C({isOpen:!1}),E({title:"",description:"",status:"open"})}catch(a){console.error("Failed to create defect:",a),alert("Failed to create defect. Check console for details.")}})},disabled:H,children:H?"Logging...":"Log Defect"})]})]})})]})}},46193:a=>{"use strict";a.exports=require("node:string_decoder")},51455:a=>{"use strict";a.exports=require("node:fs/promises")},52283:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"notFound",{enumerable:!0,get:function(){return f}});let d=c(7638),e=`${d.HTTP_ERROR_FALLBACK_ERROR_CODE};404`;function f(){let a=Object.defineProperty(Error(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});throw a.digest=e,a}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},56122:(a,b,c)=>{Promise.resolve().then(c.bind(c,29575))},57075:a=>{"use strict";a.exports=require("node:stream")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},66610:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={ReadonlyURLSearchParams:function(){return f.ReadonlyURLSearchParams},RedirectType:function(){return h.RedirectType},forbidden:function(){return j.forbidden},notFound:function(){return i.notFound},permanentRedirect:function(){return g.permanentRedirect},redirect:function(){return g.redirect},unauthorized:function(){return k.unauthorized},unstable_isUnrecognizedActionError:function(){return m},unstable_rethrow:function(){return l.unstable_rethrow}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(10381),g=c(32171),h=c(52220),i=c(52283),j=c(92606),k=c(44057),l=c(98621);function m(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},70722:a=>{"use strict";a.exports=require("next/dist/shared/lib/invariant-error")},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},76760:a=>{"use strict";a.exports=require("node:path")},78474:a=>{"use strict";a.exports=require("node:events")},81787:a=>{"use strict";a.exports=require("bun:sqlite")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},90402:(a,b,c)=>{Promise.resolve().then(c.bind(c,45530))},91970:(a,b,c)=>{"use strict";var d=c(66610);c.o(d,"notFound")&&c.d(b,{notFound:function(){return d.notFound}})},92606:(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"forbidden",{enumerable:!0,get:function(){return d}}),c(7638).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},96331:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"40b934f198e792b1ad986e36da3a74debe1848780a":()=>d.Y7,"40bab5840684a73e69c20467b67d6a4585adfe42b2":()=>i,"40fb944e52eed131b7e20fca4aabd664fd62eaabd4":()=>l,"601c134e991ba9cc3f4991d149387cd3dbab14be08":()=>d.Id,"6066fbdd9590694147a61dd2d0610d4a17a743ab71":()=>d.Lk,"60cc042fd5ebbf890d842c608810ef217e88314812":()=>d.ct,"60dadd94248d84ca74ac9fe350ca6947f7ecb89a25":()=>k,"707b36770e1d1ff0f2f556afaaba331266338c145e":()=>j});var d=c(14494),e=c(95349),f=c(42650),g=c(624),h=c(89337);async function i(a){var b,c;let d,e,h,i;b={release_id:a.releaseId,test_result_id:a.testResultId,title:a.title,description:a.description,status:a.status},d=(0,g.Lf)(),e=(0,g.lg)(),h=d.query("SELECT id FROM defect").all(),i=(0,g.$C)("DEF",h.map(a=>a.id)),d.query(`
215
13
  INSERT INTO defect (id, release_id, test_result_id, title, description, status, created_at, updated_at)
216
14
  VALUES (?, ?, ?, ?, ?, ?, ?, ?)
217
15
  `).run(i,b.release_id,b.test_result_id||null,b.title,b.description,b.status||"open",e,e),(c=b.release_id,(0,g.Lf)().query(`
@@ -224,40 +22,4 @@ see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__
224
22
  WHERE id = ?
225
23
  `).run(c.title??h.title,c.description??h.description,c.status??h.status,e,a),d.query("SELECT * FROM defect WHERE id = ?").get(a)),(0,f.revalidatePath)(`/releases/${b}`)}async function k(a,b){(0,g.Lf)().query("DELETE FROM defect WHERE id = ?").run(a),(0,f.revalidatePath)(`/releases/${b}`)}async function l(a){let b=(0,g.Lf)(),c=b.query("SELECT * FROM test_run WHERE id = ?").get(a);if(!c)return null;let d=b.query(`
226
24
  SELECT * FROM test_result WHERE test_run_id = ? ORDER BY fs_id, scenario_name
227
- `).all(a);return{...c,results:d}}(0,h.D)([i,j,k]),(0,e.A)(i,"4046a6c707b07829c7bfc2878ea1f4b377c8655483",null),(0,e.A)(j,"7014b6efcba613c6cfc413d6500abd75d9052f0b36",null),(0,e.A)(k,"60c2193dbec109e9e67c73d60e5a4964f2c137b360",null),c(29021),(0,h.D)([l]),(0,e.A)(l,"4042419f463cf3a63bf0b0d0c64cb2987431e24604",null)},14494:(a,b,c)=>{"use strict";c.d(b,{Y7:()=>h,Id:()=>j,ct:()=>k,Lk:()=>i});var d=c(95349),e=c(42650),f=c(624);function g(a){return(0,f.Lf)().query("SELECT * FROM release WHERE id = ?").get(a)}async function h(a){let b,c,d,h,i,j=(b=(0,f.Lf)(),d=(c=(0,f.Lf)()).query(`
228
- SELECT r.*,
229
- (SELECT COUNT(*) FROM release_fs WHERE release_id = r.id) as fs_count,
230
- (SELECT COUNT(*) FROM test_run WHERE release_id = r.id) as test_runs
231
- FROM release r
232
- ORDER BY r.created_at DESC
233
- `).all().map(a=>{let b=c.query(`
234
- SELECT passed, total FROM test_run
235
- WHERE release_id = ?
236
- ORDER BY run_date DESC LIMIT 1
237
- `).get(a.id);return{...a,latest_pass_rate:b&&b.total>0?b.passed/b.total*100:null}}).map(a=>a.id),h=(0,f.$C)("REL",d),i=(0,f.lg)(),b.query(`
238
- INSERT INTO release (id, version, name, status, created_at, notes)
239
- VALUES (?, ?, ?, 'planning', ?, ?)
240
- `).run(h,a.version,a.name,i,a.notes||null),g(h));return(0,e.revalidatePath)("/releases"),j}async function i(a,b){let c=function(a,b){let c=g(a);if(!c)return null;let d=(0,f.Lf)(),e="released"===b.status&&"released"!==c.status?(0,f.lg)():b.released_at??c.released_at;return d.query(`
241
- UPDATE release SET
242
- version = ?, name = ?, status = ?, released_at = ?, notes = ?
243
- WHERE id = ?
244
- `).run(b.version??c.version,b.name??c.name,b.status??c.status,e,b.notes??c.notes,a),g(a)}(a,b);return(0,e.revalidatePath)("/releases"),(0,e.revalidatePath)(`/releases/${a}`),c}async function j(a,b){for(let c of b)!function(a,b){let c=(0,f.Lf)(),d=(0,f.lg)();c.query(`
245
- INSERT OR IGNORE INTO release_fs (release_id, fs_id, added_at)
246
- VALUES (?, ?, ?)
247
- `).run(a,b,d)}(a,c);(0,e.revalidatePath)(`/releases/${a}`)}async function k(a,b){(0,f.Lf)().query("DELETE FROM release_fs WHERE release_id = ? AND fs_id = ?").run(a,b),(0,e.revalidatePath)(`/releases/${a}`)}(0,c(89337).D)([h,i,j,k]),(0,d.A)(h,"40ad2f43ca3b1b03af8b1a38048b9eb0ee79a9d607",null),(0,d.A)(i,"60fa3d128e354a5cb1c2d24b6415f04fc0114da0c0",null),(0,d.A)(j,"60ad26275d2ce9726f98b0c3a41bd5778e2035431d",null),(0,d.A)(k,"609070c25ccf57c1df77e6d290a8d491ce7bf04d5d",null)},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},29575:(a,b,c)=>{"use strict";c.d(b,{ReleaseDetailClient:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call ReleaseDetailClient() from the server but ReleaseDetailClient is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/matthew/Code/github/p11o/machine/docs/src/app/releases/[id]/release-detail-client.tsx","ReleaseDetailClient")},32171:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={getRedirectError:function(){return i},getRedirectStatusCodeFromError:function(){return n},getRedirectTypeFromError:function(){return m},getURLFromRedirectError:function(){return l},permanentRedirect:function(){return k},redirect:function(){return j}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(81494),g=c(52220),h=c(19121).actionAsyncStorage;function i(a,b,c=f.RedirectStatusCode.TemporaryRedirect){let d=Object.defineProperty(Error(g.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return d.digest=`${g.REDIRECT_ERROR_CODE};${b};${a};${c};`,d}function j(a,b){throw i(a,b??=h?.getStore()?.isAction?g.RedirectType.push:g.RedirectType.replace,f.RedirectStatusCode.TemporaryRedirect)}function k(a,b=g.RedirectType.replace){throw i(a,b,f.RedirectStatusCode.PermanentRedirect)}function l(a){return(0,g.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function m(a){if(!(0,g.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return a.digest.split(";",2)[1]}function n(a){if(!(0,g.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(a.digest.split(";").at(-2))}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},33873:a=>{"use strict";a.exports=require("path")},41025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},43954:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/interception-routes")},44057:(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unauthorized",{enumerable:!0,get:function(){return d}}),c(7638).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},46193:a=>{"use strict";a.exports=require("node:string_decoder")},51455:a=>{"use strict";a.exports=require("node:fs/promises")},52283:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"notFound",{enumerable:!0,get:function(){return f}});let d=c(7638),e=`${d.HTTP_ERROR_FALLBACK_ERROR_CODE};404`;function f(){let a=Object.defineProperty(Error(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});throw a.digest=e,a}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},56122:(a,b,c)=>{Promise.resolve().then(c.bind(c,29575))},57075:a=>{"use strict";a.exports=require("node:stream")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},66610:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0});var d={ReadonlyURLSearchParams:function(){return f.ReadonlyURLSearchParams},RedirectType:function(){return h.RedirectType},forbidden:function(){return j.forbidden},notFound:function(){return i.notFound},permanentRedirect:function(){return g.permanentRedirect},redirect:function(){return g.redirect},unauthorized:function(){return k.unauthorized},unstable_isUnrecognizedActionError:function(){return m},unstable_rethrow:function(){return l.unstable_rethrow}};for(var e in d)Object.defineProperty(b,e,{enumerable:!0,get:d[e]});let f=c(10381),g=c(32171),h=c(52220),i=c(52283),j=c(92606),k=c(44057),l=c(98621);function m(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},70722:a=>{"use strict";a.exports=require("next/dist/shared/lib/invariant-error")},73024:a=>{"use strict";a.exports=require("node:fs")},73136:a=>{"use strict";a.exports=require("node:url")},76760:a=>{"use strict";a.exports=require("node:path")},77196:(a,b,c)=>{"use strict";c.d(b,{ReleaseDetailClient:()=>n});var d=c(48249),e=c(67484),f=c(2116),g=c.n(f),h=c(99829);let i=(0,h.createServerReference)("60fa3d128e354a5cb1c2d24b6415f04fc0114da0c0",h.callServer,void 0,h.findSourceMapURL,"updateReleaseAction"),j=(0,h.createServerReference)("60ad26275d2ce9726f98b0c3a41bd5778e2035431d",h.callServer,void 0,h.findSourceMapURL,"tagFSToReleaseAction"),k=(0,h.createServerReference)("609070c25ccf57c1df77e6d290a8d491ce7bf04d5d",h.callServer,void 0,h.findSourceMapURL,"untagFSFromReleaseAction"),l=(0,h.createServerReference)("4046a6c707b07829c7bfc2878ea1f4b377c8655483",h.callServer,void 0,h.findSourceMapURL,"createDefectAction"),m=(0,h.createServerReference)("4042419f463cf3a63bf0b0d0c64cb2987431e24604",h.callServer,void 0,h.findSourceMapURL,"loadTestRunAction");function n({release:a,taggedFS:b,availableFS:c,testRuns:f,defects:h}){let[n,o]=(0,e.useState)(!1),[p,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)([]),[t,u]=(0,e.useState)(null),[v,w]=(0,e.useState)({}),[x,y]=(0,e.useState)(null),[z,A]=(0,e.useState)(new Set),[B,C]=(0,e.useState)({isOpen:!1}),[D,E]=(0,e.useState)({title:"",description:"",status:"open"}),[F,G]=(0,e.useState)({titleError:!1,descriptionError:!1}),[H,I]=(0,e.useTransition)(),[J,K]=(0,e.useState)({version:a.version,name:a.name,status:a.status,notes:a.notes||""}),L=(a,b,c)=>{C({isOpen:!0,testResultId:a,fsId:b,scenarioName:c}),E({title:c?`Defect: ${c} failure`:"",description:c?`Failure in ${b} - ${c}.
248
-
249
- Root Cause:
250
-
251
- Mitigation:`:"",status:"open"})},M={planning:{bg:"rgba(168, 85, 247, 0.1)",color:"#a855f7"},testing:{bg:"rgba(59, 130, 246, 0.1)",color:"#3b82f6"},released:{bg:"rgba(34, 197, 94, 0.1)",color:"#22c55e"}}[a.status];return(0,d.jsxs)("div",{style:{maxWidth:"1200px",margin:"0 auto",padding:"2rem"},children:[(0,d.jsx)("div",{style:{marginBottom:"1.5rem"},children:(0,d.jsx)(g(),{href:"/releases",style:{color:"var(--text-secondary)",textDecoration:"none"},children:"← Back to Releases"})}),(0,d.jsxs)("header",{style:{marginBottom:"2rem"},children:[(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"1rem",marginBottom:"0.5rem"},children:[(0,d.jsxs)("code",{style:{fontSize:"1.5rem",fontWeight:700,color:M.color},children:[" ",a.id," "]}),(0,d.jsxs)("span",{style:{fontSize:"1.25rem",fontWeight:600},children:["v",a.version]}),(0,d.jsx)("span",{className:"badge",style:{background:M.bg,color:M.color,padding:"0.5rem 1rem"},children:a.status}),(0,d.jsx)("button",{onClick:()=>o(!n),className:"btn btn-primary",style:{marginLeft:"auto"},children:n?"Cancel":"✏️ Edit"})]}),(0,d.jsx)("h1",{style:{fontSize:"2rem",fontWeight:700},children:a.name}),(0,d.jsxs)("p",{style:{color:"var(--text-secondary)"},children:["Created ",a.created_at,a.released_at&&` • Released ${a.released_at}`]})]}),n&&(0,d.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem"},children:[(0,d.jsx)("h2",{className:"card-title",children:"Edit Release"}),(0,d.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 2fr 1fr",gap:"1rem",marginBottom:"1rem"},children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{style:{display:"block",fontWeight:500,marginBottom:"0.5rem"},children:"Version"}),(0,d.jsx)("input",{type:"text",value:J.version,onChange:a=>K({...J,version:a.target.value}),className:"input"})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{style:{display:"block",fontWeight:500,marginBottom:"0.5rem"},children:"Name"}),(0,d.jsx)("input",{type:"text",value:J.name,onChange:a=>K({...J,name:a.target.value}),className:"input"})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{style:{display:"block",fontWeight:500,marginBottom:"0.5rem"},children:"Status"}),(0,d.jsxs)("select",{value:J.status,onChange:a=>K({...J,status:a.target.value}),className:"input",children:[(0,d.jsx)("option",{value:"planning",children:"Planning"}),(0,d.jsx)("option",{value:"testing",children:"Testing"}),(0,d.jsx)("option",{value:"released",children:"Released"})]})]})]}),(0,d.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,d.jsx)("label",{style:{display:"block",fontWeight:500,marginBottom:"0.5rem"},children:"Notes"}),(0,d.jsx)("textarea",{value:J.notes,onChange:a=>K({...J,notes:a.target.value}),rows:3,className:"input",style:{resize:"vertical"}})]}),(0,d.jsx)("button",{onClick:()=>{I(async()=>{await i(a.id,J),o(!1)})},className:"btn btn-primary",disabled:H,children:H?"Saving...":"Save Changes"})]}),a.notes&&!n&&(0,d.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem"},children:[(0,d.jsx)("h2",{className:"card-title",children:"\uD83D\uDCDD Notes"}),(0,d.jsx)("p",{style:{color:"var(--text-secondary)",whiteSpace:"pre-wrap"},children:a.notes})]}),(0,d.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem",borderLeft:"4px solid var(--error)"},children:[(0,d.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1rem"},children:[(0,d.jsxs)("h2",{className:"card-title",children:["\uD83D\uDEA8 Defects & Deviations (",h.length,")"]}),(0,d.jsx)("button",{className:"btn",onClick:()=>L(),children:"+ Log Defect"})]}),0===h.length?(0,d.jsx)("p",{style:{color:"var(--text-secondary)"},children:"No defects logged. Any failed tests must be resolved or logged as a defect."}):(0,d.jsx)("div",{style:{display:"grid",gap:"0.75rem"},children:h.map(a=>(0,d.jsxs)("div",{style:{padding:"1rem",background:"var(--bg-hover)",borderRadius:"8px",borderLeft:"open"===a.status?"3px solid red":"3px solid green"},children:[(0,d.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",marginBottom:"0.5rem"},children:[(0,d.jsxs)("div",{style:{fontWeight:600},children:[a.id,": ",a.title]}),(0,d.jsx)("div",{className:"badge",style:{background:"open"===a.status?"rgba(239, 68, 68, 0.1)":"rgba(34, 197, 94, 0.1)",color:"open"===a.status?"var(--error)":"var(--success)"},children:a.status.toUpperCase()})]}),(0,d.jsx)("div",{style:{fontSize:"0.875rem",color:"var(--text-secondary)",whiteSpace:"pre-wrap"},children:a.description}),a.test_result_id&&(0,d.jsxs)("div",{style:{marginTop:"0.5rem",fontSize:"0.75rem",color:"var(--warning)"},children:["Linked to failed test result #",a.test_result_id]})]},a.id))})]}),(0,d.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem"},children:[(0,d.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1rem"},children:[(0,d.jsxs)("h2",{className:"card-title",style:{margin:0},children:["⚙️ Features (",b.length,")"]}),(0,d.jsx)("button",{onClick:()=>q(!0),className:"btn",disabled:0===c.length,children:"+ Add Features"})]}),p&&(0,d.jsxs)("div",{style:{marginBottom:"1rem",padding:"1rem",background:"var(--bg-hover)",borderRadius:"8px"},children:[(0,d.jsx)("div",{style:{marginBottom:"0.5rem",fontWeight:500},children:"Select features to add:"}),(0,d.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:"0.5rem",marginBottom:"1rem"},children:c.map(a=>(0,d.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:"0.5rem",cursor:"pointer"},children:[(0,d.jsx)("input",{type:"checkbox",checked:r.includes(a.id),onChange:b=>{b.target.checked?s([...r,a.id]):s(r.filter(b=>b!==a.id))}}),(0,d.jsx)("code",{style:{color:"var(--warning)"},children:a.id}),(0,d.jsx)("span",{children:a.title})]},a.id))}),(0,d.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,d.jsx)("button",{onClick:()=>{q(!1),s([])},className:"btn",children:"Cancel"}),(0,d.jsx)("button",{onClick:()=>{0!==r.length&&I(async()=>{await j(a.id,r),q(!1),s([])})},className:"btn btn-primary",disabled:H||0===r.length,children:H?"Adding...":`Add ${r.length} Feature${1!==r.length?"s":""}`})]})]}),0===b.length?(0,d.jsx)("p",{style:{color:"var(--text-secondary)"},children:"No features tagged yet. Add features to track them in this release."}):(0,d.jsx)("div",{style:{display:"grid",gap:"0.5rem"},children:b.map(b=>(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 1rem",background:"var(--bg-hover)",borderRadius:"8px"},children:[(0,d.jsxs)(g(),{href:`/specs/${b.id}`,style:{flex:1,textDecoration:"none"},children:[(0,d.jsx)("code",{style:{fontWeight:600,color:"var(--warning)",marginRight:"0.75rem"},children:b.id}),(0,d.jsx)("span",{style:{color:"var(--text-primary)"},children:b.title}),(0,d.jsxs)("span",{style:{marginLeft:"0.75rem",color:"var(--text-secondary)",fontSize:"0.875rem"},children:[b.scenario_count," scenarios"]})]}),(0,d.jsx)("button",{onClick:()=>{var c;return c=b.id,void I(async()=>{await k(a.id,c)})},className:"btn",style:{padding:"0.25rem 0.5rem",fontSize:"0.75rem"},disabled:H,children:"\xd7"})]},b.id))})]}),(0,d.jsxs)("div",{className:"card",children:[(0,d.jsxs)("h2",{className:"card-title",children:["\uD83E\uDDEA Test Runs (",f.length,")"]}),0===f.length?(0,d.jsxs)("p",{style:{color:"var(--text-secondary)"},children:["No test runs yet. Import Cucumber results: ",(0,d.jsxs)("code",{children:["matrix release import-results results.json -r ",a.id]})]}):(0,d.jsx)("div",{style:{display:"grid",gap:"0.75rem"},children:f.map(a=>{let b=a.total>0?a.passed/a.total*100:0,c=t===a.id,e=async()=>{if(c)return void u(null);if(u(a.id),!v[a.id]){y(a.id);let b=await m(a.id);b&&w(c=>({...c,[a.id]:b.results})),y(null)}},f=v[a.id]||[],i=f.reduce((a,b)=>(a[b.fs_id]||(a[b.fs_id]=[]),a[b.fs_id].push(b),a),{});return(0,d.jsxs)("div",{style:{padding:"1rem",background:"var(--bg-hover)",borderRadius:"8px"},children:[(0,d.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",cursor:"pointer"},onClick:e,children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{style:{fontWeight:600,marginBottom:"0.25rem"},children:[a.failed>0?"❌":"✅"," Run #",a.id," ",c?"\uD83D\uDD3D":"▶"]}),(0,d.jsxs)("div",{style:{fontSize:"0.875rem",color:"var(--text-secondary)"},children:[a.run_date," • ",a.source]})]}),(0,d.jsxs)("div",{style:{display:"flex",gap:"1rem",textAlign:"center"},children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{style:{fontWeight:700,color:"var(--success)"},children:a.passed}),(0,d.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)"},children:"Passed"})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{style:{fontWeight:700,color:"var(--error)"},children:a.failed}),(0,d.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)"},children:"Failed"})]}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{style:{fontWeight:700,color:100===b?"var(--success)":b>=80?"var(--warning)":"var(--error)"},children:[b.toFixed(0),"%"]}),(0,d.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)"},children:"Pass Rate"})]})]})]}),c&&(0,d.jsx)("div",{style:{marginTop:"1rem",paddingTop:"1rem",borderTop:"1px solid var(--border)"},children:x===a.id?(0,d.jsx)("p",{style:{color:"var(--text-secondary)"},children:"Loading results..."}):0===f.length?(0,d.jsx)("p",{style:{color:"var(--text-secondary)"},children:"No individual results recorded for this run."}):(0,d.jsx)("div",{style:{display:"grid",gap:"1rem"},children:Object.entries(i).map(([a,b])=>(0,d.jsxs)("div",{children:[(0,d.jsx)("div",{style:{fontWeight:600,marginBottom:"0.5rem",color:"var(--warning)"},children:(0,d.jsx)(g(),{href:`/specs/${a}`,style:{color:"inherit",textDecoration:"none"},children:a})}),(0,d.jsx)("div",{style:{display:"grid",gap:"0.25rem",paddingLeft:"1rem"},children:b.map(b=>{let c,e="passed"===b.status?"✅":"failed"===b.status?"❌":"⏭️";"passed"===b.status||b.status;let f=(c=b.id,h.some(a=>a.test_result_id===c)),g=b.error_message&&"failed"===b.status,i=z.has(b.id);return(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.5rem",padding:"0.25rem 0"},children:[(0,d.jsx)("span",{children:e}),(0,d.jsx)("span",{style:{flex:1},children:b.scenario_name}),null!=b.duration_ms&&(0,d.jsxs)("span",{style:{fontSize:"0.75rem",color:"var(--text-secondary)"},children:[b.duration_ms,"ms"]}),"failed"===b.status&&!f&&(0,d.jsx)("button",{className:"btn",style:{padding:"0.25rem 0.5rem",fontSize:"0.75rem"},onClick:c=>{c.stopPropagation(),L(b.id,a,b.scenario_name)},children:"Log Defect"}),"failed"===b.status&&f&&(0,d.jsx)("span",{style:{fontSize:"0.75rem",color:"var(--warning)"},children:"Defect Logged"}),g&&(0,d.jsx)("button",{className:"btn",style:{padding:"0.15rem 0.35rem",fontSize:"0.7rem"},onClick:a=>{var c;a.stopPropagation(),c=b.id,A(a=>{let b=new Set(a);return b.has(c)?b.delete(c):b.add(c),b})},children:i?"▲ Hide Error":"▼ Show Error"})]}),g&&i&&(0,d.jsx)("div",{style:{marginLeft:"1.5rem",padding:"0.5rem",background:"rgba(239, 68, 68, 0.1)",borderRadius:"4px",fontSize:"0.8rem",fontFamily:"monospace",whiteSpace:"pre-wrap",color:"var(--error)",marginBottom:"0.5rem"},children:b.error_message})]},b.id)})})]},a))})})]},a.id)})})]}),B.isOpen&&(0,d.jsx)("div",{style:{position:"fixed",top:0,left:0,right:0,bottom:0,background:"rgba(0,0,0,0.5)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:100},children:(0,d.jsxs)("div",{className:"card",style:{width:"500px",maxWidth:"90%"},children:[(0,d.jsx)("h2",{className:"card-title",children:"Log Defect / Deviation"}),(0,d.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,d.jsxs)("label",{style:{display:"block",marginBottom:"0.5rem"},children:["Title ",(0,d.jsx)("span",{style:{color:"var(--error)"},children:"*"})]}),(0,d.jsx)("input",{className:"input",value:D.title,onChange:a=>{E({...D,title:a.target.value}),a.target.value&&G(a=>({...a,titleError:!1}))},placeholder:"Defect summary",style:F.titleError?{borderColor:"var(--error)",boxShadow:"0 0 0 2px rgba(239, 68, 68, 0.2)"}:{}}),F.titleError&&(0,d.jsx)("div",{style:{color:"var(--error)",fontSize:"0.75rem",marginTop:"0.25rem"},children:"Title is required"})]}),(0,d.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,d.jsxs)("label",{style:{display:"block",marginBottom:"0.5rem"},children:["Description & Root Cause ",(0,d.jsx)("span",{style:{color:"var(--error)"},children:"*"})]}),(0,d.jsx)("textarea",{className:"input",rows:5,value:D.description,onChange:a=>{E({...D,description:a.target.value}),a.target.value&&G(a=>({...a,descriptionError:!1}))},placeholder:"Describe the failure, root cause, and why it is acceptable (if deviating) or mitigation plan.",style:F.descriptionError?{borderColor:"var(--error)",boxShadow:"0 0 0 2px rgba(239, 68, 68, 0.2)"}:{}}),F.descriptionError&&(0,d.jsx)("div",{style:{color:"var(--error)",fontSize:"0.75rem",marginTop:"0.25rem"},children:"Description is required"})]}),(0,d.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,d.jsx)("label",{style:{display:"block",marginBottom:"0.5rem"},children:"Status"}),(0,d.jsxs)("select",{className:"input",value:D.status,onChange:a=>E({...D,status:a.target.value}),children:[(0,d.jsx)("option",{value:"open",children:"Open (Needs Fix)"}),(0,d.jsx)("option",{value:"resolved",children:"Resolved (Fixed)"}),(0,d.jsx)("option",{value:"accepted",children:"Accepted (Permanent Deviation)"})]})]}),(0,d.jsxs)("div",{style:{display:"flex",gap:"0.5rem",justifyContent:"flex-end"},children:[(0,d.jsx)("button",{className:"btn",onClick:()=>{C({isOpen:!1}),G({titleError:!1,descriptionError:!1})},children:"Cancel"}),(0,d.jsx)("button",{className:"btn btn-primary",onClick:()=>{let b=!D.title.trim(),c=!D.description.trim();b||c?G({titleError:b,descriptionError:c}):I(async()=>{try{await l({releaseId:a.id,testResultId:B.testResultId,title:D.title,description:D.description,status:D.status}),C({isOpen:!1}),E({title:"",description:"",status:"open"})}catch(a){console.error("Failed to create defect:",a),alert("Failed to create defect. Check console for details.")}})},disabled:H,children:H?"Logging...":"Log Defect"})]})]})})]})}},78474:a=>{"use strict";a.exports=require("node:events")},81787:a=>{"use strict";a.exports=require("bun:sqlite")},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87079:(a,b,c)=>{"use strict";c.d(b,{Cd:()=>e,U:()=>f,g5:()=>g});var d=c(94547);function e(){let a=(0,d.Lf)();return a.query(`
252
- SELECT r.*,
253
- (SELECT COUNT(*) FROM release_fs WHERE release_id = r.id) as fs_count,
254
- (SELECT COUNT(*) FROM test_run WHERE release_id = r.id) as test_runs
255
- FROM release r
256
- ORDER BY r.created_at DESC
257
- `).all().map(b=>{let c=a.query(`
258
- SELECT passed, total FROM test_run
259
- WHERE release_id = ?
260
- ORDER BY run_date DESC LIMIT 1
261
- `).get(b.id);return{...b,latest_pass_rate:c&&c.total>0?c.passed/c.total*100:null}})}function f(a){return(0,d.Lf)().query("SELECT * FROM release WHERE id = ?").get(a)}function g(a){return(0,d.Lf)().query(`
262
- SELECT fs_id FROM release_fs WHERE release_id = ? ORDER BY added_at
263
- `).all(a).map(a=>a.fs_id)}},90402:(a,b,c)=>{Promise.resolve().then(c.bind(c,77196))},91970:(a,b,c)=>{"use strict";var d=c(66610);c.o(d,"notFound")&&c.d(b,{notFound:function(){return d.notFound}})},92606:(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"forbidden",{enumerable:!0,get:function(){return d}}),c(7638).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},98621:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=c(108).unstable_rethrow;("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[445,471,391,390,476,658,733],()=>b(b.s=9018));module.exports=c})();
25
+ `).all(a);return{...c,results:d}}(0,h.D)([i,j,k]),(0,e.A)(i,"40bab5840684a73e69c20467b67d6a4585adfe42b2",null),(0,e.A)(j,"707b36770e1d1ff0f2f556afaaba331266338c145e",null),(0,e.A)(k,"60dadd94248d84ca74ac9fe350ca6947f7ecb89a25",null),c(29021),(0,h.D)([l]),(0,e.A)(l,"40fb944e52eed131b7e20fca4aabd664fd62eaabd4",null)},98621:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=c(108).unstable_rethrow;("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[3445,7471,7391,7390,2160,6658,1001,5352],()=>b(b.s=9018));module.exports=c})();
@@ -1 +1 @@
1
- {"version":1,"files":["../../../../../matrix.db","../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../node_modules/next/dist/lib/constants.js","../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../node_modules/next/dist/lib/is-error.js","../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../../node_modules/next/dist/shared/lib/router/utils/html-bots.js","../../../../../node_modules/next/dist/shared/lib/router/utils/interception-routes.js","../../../../../node_modules/next/dist/shared/lib/router/utils/is-bot.js","../../../../../node_modules/next/dist/shared/lib/segment.js","../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../node_modules/next/package.json","../../../../../package.json","../../../../../specs/fs/FS-002-session.feature","../../../../../specs/fs/FS-003-registration.feature","../../../../../specs/fs/FS-004-booking.feature","../../../../../specs/fs/FS-005-waitlist.feature","../../../../../specs/fs/FS-006-schedule.feature","../../../../../specs/fs/FS-007-instructor.feature","../../../../../specs/fs/fs-001-user-login-authentication.feature","../../../../../specs/fs/fs-008-get-the-test-thing-tested.feature","../../../../../specs/fs/fs-009-bleep-bloop-thing.feature","../../../../../specs/fs/fs-010-asfdlka.feature","../../../../../specs/fs/fs-011-create-another.feature","../../../../package.json","../../../chunks/390.js","../../../chunks/391.js","../../../chunks/445.js","../../../chunks/471.js","../../../chunks/476.js","../../../chunks/658.js","../../../chunks/733.js","../../../webpack-runtime.js","page_client-reference-manifest.js"]}
1
+ {"version":1,"files":["../../../../../matrix.db","../../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../../node_modules/next/dist/lib/constants.js","../../../../../node_modules/next/dist/lib/interop-default.js","../../../../../node_modules/next/dist/lib/is-error.js","../../../../../node_modules/next/dist/lib/semver-noop.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../../node_modules/next/dist/server/response-cache/types.js","../../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../../node_modules/next/dist/shared/lib/router/utils/html-bots.js","../../../../../node_modules/next/dist/shared/lib/router/utils/interception-routes.js","../../../../../node_modules/next/dist/shared/lib/router/utils/is-bot.js","../../../../../node_modules/next/dist/shared/lib/segment.js","../../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../../node_modules/next/package.json","../../../../../package.json","../../../../../specs/fs/FS-002-session.feature","../../../../../specs/fs/FS-003-registration.feature","../../../../../specs/fs/FS-004-booking.feature","../../../../../specs/fs/FS-005-waitlist.feature","../../../../../specs/fs/FS-006-schedule.feature","../../../../../specs/fs/FS-007-instructor.feature","../../../../../specs/fs/fs-001-user-login-authentication.feature","../../../../../specs/fs/fs-008-get-the-test-thing-tested.feature","../../../../../specs/fs/fs-009-bleep-bloop-thing.feature","../../../../../specs/fs/fs-010-asfdlka.feature","../../../../../specs/fs/fs-011-create-another.feature","../../../../package.json","../../../chunks/1001.js","../../../chunks/2160.js","../../../chunks/3445.js","../../../chunks/5352.js","../../../chunks/6658.js","../../../chunks/7390.js","../../../chunks/7391.js","../../../chunks/7471.js","../../../webpack-runtime.js","page_client-reference-manifest.js"]}