@37chengshan/ompweb 4.0.4 → 4.0.7

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 (493) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +17 -7
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +28 -0
  5. package/.next/react-loadable-manifest.json +13 -6
  6. package/.next/required-server-files.js +2 -2
  7. package/.next/required-server-files.json +2 -2
  8. package/.next/routes-manifest.json +86 -2
  9. package/.next/server/app/_global-error/page.js +1 -1
  10. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  11. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/_global-error.html +1 -1
  13. package/.next/server/app/_global-error.rsc +2 -2
  14. package/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
  15. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +2 -2
  16. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/.next/server/app/_not-found/page.js +1 -1
  18. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  19. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/.next/server/app/_not-found.html +1 -1
  21. package/.next/server/app/_not-found.rsc +2 -2
  22. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  23. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  24. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  25. package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
  26. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  27. package/.next/server/app/api/agent/[id]/route.js +1 -1
  28. package/.next/server/app/api/agent/new/route.js +1 -1
  29. package/.next/server/app/api/agent/running/events/route.js +1 -1
  30. package/.next/server/app/api/agents/route.js +1 -1
  31. package/.next/server/app/api/app-update/releases/route.js +1 -1
  32. package/.next/server/app/api/app-update/route.js +2 -1
  33. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  34. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  35. package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
  36. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  37. package/.next/server/app/api/auth/providers/route.js +1 -1
  38. package/.next/server/app/api/cwd/browse/route.js +1 -1
  39. package/.next/server/app/api/cwd/validate/route.js +1 -1
  40. package/.next/server/app/api/default-cwd/route.js +1 -1
  41. package/.next/server/app/api/diagnostics/route.js +1 -1
  42. package/.next/server/app/api/file-index/route.js +1 -1
  43. package/.next/server/app/api/files/[...path]/route.js +2 -2
  44. package/.next/server/app/api/git/diff/route.js +2 -2
  45. package/.next/server/app/api/git/status/route.js +2 -2
  46. package/.next/server/app/api/github/status/route.js +1 -1
  47. package/.next/server/app/api/home/route.js +1 -1
  48. package/.next/server/app/api/mcp/route.js +2 -2
  49. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  50. package/.next/server/app/api/model-roles/route.js +1 -1
  51. package/.next/server/app/api/models/fetch/route.js +1 -1
  52. package/.next/server/app/api/models/route.js +1 -1
  53. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  54. package/.next/server/app/api/models-config/route.js +1 -1
  55. package/.next/server/app/api/models-config/test/route.js +1 -1
  56. package/.next/server/app/api/omp-settings/route.js +1 -1
  57. package/.next/server/app/api/omp-update/route.js +2 -2
  58. package/.next/server/app/api/omp-version/route.js +1 -1
  59. package/.next/server/app/api/pair/accept/route.js +1 -0
  60. package/.next/server/app/api/pair/accept/route.js.nft.json +1 -0
  61. package/.next/server/app/api/pair/accept/route_client-reference-manifest.js +1 -0
  62. package/.next/server/app/api/pair/config/route.js +1 -0
  63. package/.next/server/app/api/pair/config/route.js.nft.json +1 -0
  64. package/.next/server/app/api/pair/config/route_client-reference-manifest.js +1 -0
  65. package/.next/server/app/api/pair/devices/[id]/route.js +1 -0
  66. package/.next/server/app/api/pair/devices/[id]/route.js.nft.json +1 -0
  67. package/.next/server/app/api/pair/devices/[id]/route_client-reference-manifest.js +1 -0
  68. package/.next/server/app/api/pair/devices/route.js +1 -0
  69. package/.next/server/app/api/pair/devices/route.js.nft.json +1 -0
  70. package/.next/server/app/api/pair/devices/route_client-reference-manifest.js +1 -0
  71. package/.next/server/app/api/pair/heartbeat/route.js +1 -0
  72. package/.next/server/app/api/pair/heartbeat/route.js.nft.json +1 -0
  73. package/.next/server/app/api/pair/heartbeat/route_client-reference-manifest.js +1 -0
  74. package/.next/server/app/api/pair/revoke-all/route.js +1 -0
  75. package/.next/server/app/api/pair/revoke-all/route.js.nft.json +1 -0
  76. package/.next/server/app/api/pair/revoke-all/route_client-reference-manifest.js +1 -0
  77. package/.next/server/app/api/pair/token/route.js +1 -0
  78. package/.next/server/app/api/pair/token/route.js.nft.json +1 -0
  79. package/.next/server/app/api/pair/token/route_client-reference-manifest.js +1 -0
  80. package/.next/server/app/api/pair/tunnel/route.js +1 -0
  81. package/.next/server/app/api/pair/tunnel/route.js.nft.json +1 -0
  82. package/.next/server/app/api/pair/tunnel/route_client-reference-manifest.js +1 -0
  83. package/.next/server/app/api/plugins/route.js +1 -1
  84. package/.next/server/app/api/projects/route.js +2 -2
  85. package/.next/server/app/api/provider-usage/route.js +1 -0
  86. package/.next/server/app/api/provider-usage/route.js.nft.json +1 -0
  87. package/.next/server/app/api/provider-usage/route_client-reference-manifest.js +1 -0
  88. package/.next/server/app/api/providers/enable/route.js +1 -1
  89. package/.next/server/app/api/proxy/route.js +1 -1
  90. package/.next/server/app/api/reveal/route.js +1 -1
  91. package/.next/server/app/api/scripts/route.js +1 -1
  92. package/.next/server/app/api/scripts/run/route.js +1 -1
  93. package/.next/server/app/api/sessions/[id]/archive/route.js +1 -1
  94. package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
  95. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  96. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  97. package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
  98. package/.next/server/app/api/sessions/[id]/plan/route.js +1 -1
  99. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  100. package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  101. package/.next/server/app/api/sessions/[id]/subagents/[subagentId]/route.js +1 -1
  102. package/.next/server/app/api/sessions/[id]/subagents/route.js +1 -1
  103. package/.next/server/app/api/sessions/archive/route.js +1 -1
  104. package/.next/server/app/api/sessions/import/route.js +1 -1
  105. package/.next/server/app/api/sessions/route.js +1 -1
  106. package/.next/server/app/api/skills/check/route.js +1 -1
  107. package/.next/server/app/api/skills/install/route.js +1 -1
  108. package/.next/server/app/api/skills/route.js +1 -1
  109. package/.next/server/app/api/skills/search/route.js +1 -1
  110. package/.next/server/app/api/skills/update/route.js +1 -1
  111. package/.next/server/app/api/terminal/input/route.js +1 -1
  112. package/.next/server/app/api/terminal/open/route.js +1 -1
  113. package/.next/server/app/api/terminal/resize/route.js +1 -1
  114. package/.next/server/app/api/terminal/session/route.js +1 -1
  115. package/.next/server/app/api/terminal/stream/route.js +2 -2
  116. package/.next/server/app/api/web-auth/session/route.js +1 -1
  117. package/.next/server/app/api/worktrees/route.js +1 -1
  118. package/.next/server/app/favicon.ico/route.js +1 -1
  119. package/.next/server/app/index.html +1 -1
  120. package/.next/server/app/index.rsc +3 -3
  121. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  122. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  123. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  124. package/.next/server/app/login/page.js +1 -1
  125. package/.next/server/app/login/page.js.nft.json +1 -1
  126. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  127. package/.next/server/app/login.html +1 -1
  128. package/.next/server/app/login.rsc +2 -2
  129. package/.next/server/app/login.segments/_full.segment.rsc +2 -2
  130. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  131. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  132. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  133. package/.next/server/app/page.js +1 -1
  134. package/.next/server/app/page.js.nft.json +1 -1
  135. package/.next/server/app/page_client-reference-manifest.js +1 -1
  136. package/.next/server/app/remote/page.js +1 -0
  137. package/.next/server/app/remote/page.js.nft.json +1 -0
  138. package/.next/server/app/remote/page_client-reference-manifest.js +1 -0
  139. package/.next/server/app/remote.html +1 -0
  140. package/.next/server/app/remote.meta +26 -0
  141. package/.next/server/app/remote.rsc +32 -0
  142. package/.next/server/app/remote.segments/_full.segment.rsc +32 -0
  143. package/.next/server/app/remote.segments/_tree.segment.rsc +8 -0
  144. package/.next/server/app/remote.segments/remote/__PAGE__.segment.rsc +31 -0
  145. package/.next/server/app-paths-manifest.json +17 -7
  146. package/.next/server/chunks/2760.js +3 -3
  147. package/.next/server/chunks/3798.js +2 -2
  148. package/.next/server/chunks/4791.js +1 -0
  149. package/.next/server/chunks/5309.js +1 -1
  150. package/.next/server/chunks/{3425.js → 5806.js} +1 -1
  151. package/.next/server/chunks/6465.js +1 -1
  152. package/.next/server/chunks/7839.js +1 -1
  153. package/.next/server/middleware-build-manifest.js +1 -1
  154. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  155. package/.next/server/middleware.js +3 -3
  156. package/.next/server/pages/404.html +1 -1
  157. package/.next/server/pages/500.html +1 -1
  158. package/.next/server/prefetch-hints.json +14 -0
  159. package/.next/standalone/.next/BUILD_ID +1 -1
  160. package/.next/standalone/.next/app-path-routes-manifest.json +17 -7
  161. package/.next/standalone/.next/build-manifest.json +3 -3
  162. package/.next/standalone/.next/prerender-manifest.json +28 -0
  163. package/.next/standalone/.next/react-loadable-manifest.json +13 -6
  164. package/.next/standalone/.next/required-server-files.json +2 -2
  165. package/.next/standalone/.next/routes-manifest.json +86 -2
  166. package/.next/standalone/.next/server/app/_global-error/page.js +1 -1
  167. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  168. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  169. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  170. package/.next/standalone/.next/server/app/_global-error.rsc +2 -2
  171. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
  172. package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +2 -2
  173. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  174. package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
  175. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  176. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  177. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  178. package/.next/standalone/.next/server/app/_not-found.rsc +2 -2
  179. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  180. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  181. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  182. package/.next/standalone/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
  183. package/.next/standalone/.next/server/app/api/agent/[id]/events/route.js +2 -2
  184. package/.next/standalone/.next/server/app/api/agent/[id]/route.js +1 -1
  185. package/.next/standalone/.next/server/app/api/agent/new/route.js +1 -1
  186. package/.next/standalone/.next/server/app/api/agent/running/events/route.js +1 -1
  187. package/.next/standalone/.next/server/app/api/agents/route.js +1 -1
  188. package/.next/standalone/.next/server/app/api/app-update/releases/route.js +1 -1
  189. package/.next/standalone/.next/server/app/api/app-update/route.js +2 -1
  190. package/.next/standalone/.next/server/app/api/auth/all-providers/route.js +1 -1
  191. package/.next/standalone/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  192. package/.next/standalone/.next/server/app/api/auth/login/[provider]/route.js +2 -2
  193. package/.next/standalone/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  194. package/.next/standalone/.next/server/app/api/auth/providers/route.js +1 -1
  195. package/.next/standalone/.next/server/app/api/cwd/browse/route.js +1 -1
  196. package/.next/standalone/.next/server/app/api/cwd/validate/route.js +1 -1
  197. package/.next/standalone/.next/server/app/api/default-cwd/route.js +1 -1
  198. package/.next/standalone/.next/server/app/api/diagnostics/route.js +1 -1
  199. package/.next/standalone/.next/server/app/api/file-index/route.js +1 -1
  200. package/.next/standalone/.next/server/app/api/files/[...path]/route.js +2 -2
  201. package/.next/standalone/.next/server/app/api/git/diff/route.js +2 -2
  202. package/.next/standalone/.next/server/app/api/git/status/route.js +2 -2
  203. package/.next/standalone/.next/server/app/api/github/status/route.js +1 -1
  204. package/.next/standalone/.next/server/app/api/home/route.js +1 -1
  205. package/.next/standalone/.next/server/app/api/mcp/route.js +2 -2
  206. package/.next/standalone/.next/server/app/api/mcp/route.js.nft.json +1 -1
  207. package/.next/standalone/.next/server/app/api/model-roles/route.js +1 -1
  208. package/.next/standalone/.next/server/app/api/models/fetch/route.js +1 -1
  209. package/.next/standalone/.next/server/app/api/models/route.js +1 -1
  210. package/.next/standalone/.next/server/app/api/models-config/catalog/route.js +1 -1
  211. package/.next/standalone/.next/server/app/api/models-config/route.js +1 -1
  212. package/.next/standalone/.next/server/app/api/models-config/test/route.js +1 -1
  213. package/.next/standalone/.next/server/app/api/omp-settings/route.js +1 -1
  214. package/.next/standalone/.next/server/app/api/omp-update/route.js +2 -2
  215. package/.next/standalone/.next/server/app/api/omp-version/route.js +1 -1
  216. package/.next/standalone/.next/server/app/api/pair/accept/route.js +1 -0
  217. package/.next/standalone/.next/server/app/api/pair/accept/route.js.nft.json +1 -0
  218. package/.next/standalone/.next/server/app/api/pair/accept/route_client-reference-manifest.js +1 -0
  219. package/.next/standalone/.next/server/app/api/pair/config/route.js +1 -0
  220. package/.next/standalone/.next/server/app/api/pair/config/route.js.nft.json +1 -0
  221. package/.next/standalone/.next/server/app/api/pair/config/route_client-reference-manifest.js +1 -0
  222. package/.next/standalone/.next/server/app/api/pair/devices/[id]/route.js +1 -0
  223. package/.next/standalone/.next/server/app/api/pair/devices/[id]/route.js.nft.json +1 -0
  224. package/.next/standalone/.next/server/app/api/pair/devices/[id]/route_client-reference-manifest.js +1 -0
  225. package/.next/standalone/.next/server/app/api/pair/devices/route.js +1 -0
  226. package/.next/standalone/.next/server/app/api/pair/devices/route.js.nft.json +1 -0
  227. package/.next/standalone/.next/server/app/api/pair/devices/route_client-reference-manifest.js +1 -0
  228. package/.next/standalone/.next/server/app/api/pair/heartbeat/route.js +1 -0
  229. package/.next/standalone/.next/server/app/api/pair/heartbeat/route.js.nft.json +1 -0
  230. package/.next/standalone/.next/server/app/api/pair/heartbeat/route_client-reference-manifest.js +1 -0
  231. package/.next/standalone/.next/server/app/api/pair/revoke-all/route.js +1 -0
  232. package/.next/standalone/.next/server/app/api/pair/revoke-all/route.js.nft.json +1 -0
  233. package/.next/standalone/.next/server/app/api/pair/revoke-all/route_client-reference-manifest.js +1 -0
  234. package/.next/standalone/.next/server/app/api/pair/token/route.js +1 -0
  235. package/.next/standalone/.next/server/app/api/pair/token/route.js.nft.json +1 -0
  236. package/.next/standalone/.next/server/app/api/pair/token/route_client-reference-manifest.js +1 -0
  237. package/.next/standalone/.next/server/app/api/pair/tunnel/route.js +1 -0
  238. package/.next/standalone/.next/server/app/api/pair/tunnel/route.js.nft.json +1 -0
  239. package/.next/standalone/.next/server/app/api/pair/tunnel/route_client-reference-manifest.js +1 -0
  240. package/.next/standalone/.next/server/app/api/plugins/route.js +1 -1
  241. package/.next/standalone/.next/server/app/api/projects/route.js +2 -2
  242. package/.next/standalone/.next/server/app/api/provider-usage/route.js +1 -0
  243. package/.next/standalone/.next/server/app/api/provider-usage/route.js.nft.json +1 -0
  244. package/.next/standalone/.next/server/app/api/provider-usage/route_client-reference-manifest.js +1 -0
  245. package/.next/standalone/.next/server/app/api/providers/enable/route.js +1 -1
  246. package/.next/standalone/.next/server/app/api/proxy/route.js +1 -1
  247. package/.next/standalone/.next/server/app/api/reveal/route.js +1 -1
  248. package/.next/standalone/.next/server/app/api/scripts/route.js +1 -1
  249. package/.next/standalone/.next/server/app/api/scripts/run/route.js +1 -1
  250. package/.next/standalone/.next/server/app/api/sessions/[id]/archive/route.js +1 -1
  251. package/.next/standalone/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
  252. package/.next/standalone/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  253. package/.next/standalone/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  254. package/.next/standalone/.next/server/app/api/sessions/[id]/export/route.js +1 -1
  255. package/.next/standalone/.next/server/app/api/sessions/[id]/plan/route.js +1 -1
  256. package/.next/standalone/.next/server/app/api/sessions/[id]/route.js +1 -1
  257. package/.next/standalone/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  258. package/.next/standalone/.next/server/app/api/sessions/[id]/subagents/[subagentId]/route.js +1 -1
  259. package/.next/standalone/.next/server/app/api/sessions/[id]/subagents/route.js +1 -1
  260. package/.next/standalone/.next/server/app/api/sessions/archive/route.js +1 -1
  261. package/.next/standalone/.next/server/app/api/sessions/import/route.js +1 -1
  262. package/.next/standalone/.next/server/app/api/sessions/route.js +1 -1
  263. package/.next/standalone/.next/server/app/api/skills/check/route.js +1 -1
  264. package/.next/standalone/.next/server/app/api/skills/install/route.js +1 -1
  265. package/.next/standalone/.next/server/app/api/skills/route.js +1 -1
  266. package/.next/standalone/.next/server/app/api/skills/search/route.js +1 -1
  267. package/.next/standalone/.next/server/app/api/skills/update/route.js +1 -1
  268. package/.next/standalone/.next/server/app/api/terminal/input/route.js +1 -1
  269. package/.next/standalone/.next/server/app/api/terminal/open/route.js +1 -1
  270. package/.next/standalone/.next/server/app/api/terminal/resize/route.js +1 -1
  271. package/.next/standalone/.next/server/app/api/terminal/session/route.js +1 -1
  272. package/.next/standalone/.next/server/app/api/terminal/stream/route.js +2 -2
  273. package/.next/standalone/.next/server/app/api/web-auth/session/route.js +1 -1
  274. package/.next/standalone/.next/server/app/api/worktrees/route.js +1 -1
  275. package/.next/standalone/.next/server/app/favicon.ico/route.js +1 -1
  276. package/.next/standalone/.next/server/app/index.html +1 -1
  277. package/.next/standalone/.next/server/app/index.rsc +3 -3
  278. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  279. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  280. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  281. package/.next/standalone/.next/server/app/login/page.js +1 -1
  282. package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
  283. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  284. package/.next/standalone/.next/server/app/login.html +1 -1
  285. package/.next/standalone/.next/server/app/login.rsc +2 -2
  286. package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +2 -2
  287. package/.next/standalone/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  288. package/.next/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  289. package/.next/standalone/.next/server/app/manifest.webmanifest/route.js +2 -2
  290. package/.next/standalone/.next/server/app/page.js +1 -1
  291. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  292. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  293. package/.next/standalone/.next/server/app/remote/page.js +1 -0
  294. package/.next/standalone/.next/server/app/remote/page.js.nft.json +1 -0
  295. package/.next/standalone/.next/server/app/remote/page_client-reference-manifest.js +1 -0
  296. package/.next/standalone/.next/server/app/remote.html +1 -0
  297. package/.next/standalone/.next/server/app/remote.meta +26 -0
  298. package/.next/standalone/.next/server/app/remote.rsc +32 -0
  299. package/.next/standalone/.next/server/app/remote.segments/_full.segment.rsc +32 -0
  300. package/.next/standalone/.next/server/app/remote.segments/_tree.segment.rsc +8 -0
  301. package/.next/standalone/.next/server/app/remote.segments/remote/__PAGE__.segment.rsc +31 -0
  302. package/.next/standalone/.next/server/app-paths-manifest.json +17 -7
  303. package/.next/standalone/.next/server/chunks/2760.js +3 -3
  304. package/.next/standalone/.next/server/chunks/3798.js +2 -2
  305. package/.next/standalone/.next/server/chunks/4791.js +1 -0
  306. package/.next/standalone/.next/server/chunks/5309.js +1 -1
  307. package/.next/standalone/.next/server/chunks/{3425.js → 5806.js} +1 -1
  308. package/.next/standalone/.next/server/chunks/6465.js +1 -1
  309. package/.next/standalone/.next/server/chunks/7839.js +1 -1
  310. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  311. package/.next/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  312. package/.next/standalone/.next/server/middleware.js +3 -3
  313. package/.next/standalone/.next/server/pages/404.html +1 -1
  314. package/.next/standalone/.next/server/pages/500.html +1 -1
  315. package/.next/standalone/.next/server/prefetch-hints.json +14 -0
  316. package/.next/standalone/dist-desktop/mac-arm64/OmpWeb.app/Contents/Resources/standalone/dist-desktop/mac-arm64/OmpWeb.app/Contents/Resources/standalone/dist-desktop/mac-arm64/OmpWeb.app/Contents/Resources/standalone/dist-desktop/mac-arm64/OmpWeb.app/Contents/Resources/standalone/dist-desktop/mac-arm64/OmpWeb.app/Contents/Resources/standalone/dist-desktop/linux-arm64-unpacked/resources/standalone/.omp/mcp.json +11 -0
  317. package/.next/standalone/dist-desktop/mac-arm64/OmpWeb.app/Contents/Resources/standalone/dist-desktop/mac-arm64/OmpWeb.app/Contents/Resources/standalone/dist-desktop/mac-arm64/OmpWeb.app/Contents/Resources/standalone/dist-desktop/mac-arm64/OmpWeb.app/Contents/Resources/standalone/dist-desktop/mac-arm64/OmpWeb.app/Contents/Resources/standalone/dist-desktop/mac-arm64/OmpWeb.app/Contents/Resources/standalone/.omp/mcp.json +11 -0
  318. package/.next/standalone/dist-desktop/mac-arm64/OmpWeb.app/Contents/Resources/standalone/dist-desktop/mac-arm64/OmpWeb.app/Contents/Resources/standalone/dist-desktop/mac-arm64/OmpWeb.app/Contents/Resources/standalone/dist-desktop/mac-arm64/OmpWeb.app/Contents/Resources/standalone/dist-desktop/mac-arm64/OmpWeb.app/Contents/Resources/standalone/dist-desktop/win-arm64-unpacked/resources/standalone/.omp/mcp.json +11 -0
  319. package/.next/standalone/package.json +25 -4
  320. package/.next/standalone/server.js +1 -1
  321. package/.next/static/Q-0mKyL6V7YpE6pf8ZoFy/_buildManifest.js +1 -0
  322. package/.next/static/chunks/2201.d0a54d53ec6d60af.js +1 -0
  323. package/.next/static/chunks/2584-77204310e58868e3.js +1 -0
  324. package/.next/static/chunks/3651.f68fccde22153b7d.js +1 -0
  325. package/.next/static/chunks/6608.d79f10dc7b2f3e7d.js +1 -0
  326. package/.next/static/chunks/7408.8fb61f7f23253d4d.js +126 -0
  327. package/.next/static/chunks/8422.475d97d0a80e2827.js +1 -0
  328. package/.next/static/chunks/852.e2bbfb3632f6b0fe.js +1 -0
  329. package/.next/static/chunks/app/_global-error/page-f97ee162e6cb1325.js +1 -0
  330. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-f97ee162e6cb1325.js +1 -0
  331. package/.next/static/chunks/app/api/agent/[id]/events/route-f97ee162e6cb1325.js +1 -0
  332. package/.next/static/chunks/app/api/agent/[id]/route-f97ee162e6cb1325.js +1 -0
  333. package/.next/static/chunks/app/api/agent/new/route-f97ee162e6cb1325.js +1 -0
  334. package/.next/static/chunks/app/api/agent/running/events/route-f97ee162e6cb1325.js +1 -0
  335. package/.next/static/chunks/app/api/agents/route-f97ee162e6cb1325.js +1 -0
  336. package/.next/static/chunks/app/api/app-update/releases/route-f97ee162e6cb1325.js +1 -0
  337. package/.next/static/chunks/app/api/app-update/route-f97ee162e6cb1325.js +1 -0
  338. package/.next/static/chunks/app/api/auth/all-providers/route-f97ee162e6cb1325.js +1 -0
  339. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-f97ee162e6cb1325.js +1 -0
  340. package/.next/static/chunks/app/api/auth/login/[provider]/route-f97ee162e6cb1325.js +1 -0
  341. package/.next/static/chunks/app/api/auth/logout/[provider]/route-f97ee162e6cb1325.js +1 -0
  342. package/.next/static/chunks/app/api/auth/providers/route-f97ee162e6cb1325.js +1 -0
  343. package/.next/static/chunks/app/api/cwd/browse/route-f97ee162e6cb1325.js +1 -0
  344. package/.next/static/chunks/app/api/cwd/validate/route-f97ee162e6cb1325.js +1 -0
  345. package/.next/static/chunks/app/api/default-cwd/route-f97ee162e6cb1325.js +1 -0
  346. package/.next/static/chunks/app/api/diagnostics/route-f97ee162e6cb1325.js +1 -0
  347. package/.next/static/chunks/app/api/file-index/route-f97ee162e6cb1325.js +1 -0
  348. package/.next/static/chunks/app/api/files/[...path]/route-f97ee162e6cb1325.js +1 -0
  349. package/.next/static/chunks/app/api/git/diff/route-f97ee162e6cb1325.js +1 -0
  350. package/.next/static/chunks/app/api/git/status/route-f97ee162e6cb1325.js +1 -0
  351. package/.next/static/chunks/app/api/github/status/route-f97ee162e6cb1325.js +1 -0
  352. package/.next/static/chunks/app/api/home/route-f97ee162e6cb1325.js +1 -0
  353. package/.next/static/chunks/app/api/mcp/route-f97ee162e6cb1325.js +1 -0
  354. package/.next/static/chunks/app/api/model-roles/route-f97ee162e6cb1325.js +1 -0
  355. package/.next/static/chunks/app/api/models/fetch/route-f97ee162e6cb1325.js +1 -0
  356. package/.next/static/chunks/app/api/models/route-f97ee162e6cb1325.js +1 -0
  357. package/.next/static/chunks/app/api/models-config/catalog/route-f97ee162e6cb1325.js +1 -0
  358. package/.next/static/chunks/app/api/models-config/route-f97ee162e6cb1325.js +1 -0
  359. package/.next/static/chunks/app/api/models-config/test/route-f97ee162e6cb1325.js +1 -0
  360. package/.next/static/chunks/app/api/omp-settings/route-f97ee162e6cb1325.js +1 -0
  361. package/.next/static/chunks/app/api/omp-update/route-f97ee162e6cb1325.js +1 -0
  362. package/.next/static/chunks/app/api/omp-version/route-f97ee162e6cb1325.js +1 -0
  363. package/.next/static/chunks/app/api/pair/accept/route-f97ee162e6cb1325.js +1 -0
  364. package/.next/static/chunks/app/api/pair/config/route-f97ee162e6cb1325.js +1 -0
  365. package/.next/static/chunks/app/api/pair/devices/[id]/route-f97ee162e6cb1325.js +1 -0
  366. package/.next/static/chunks/app/api/pair/devices/route-f97ee162e6cb1325.js +1 -0
  367. package/.next/static/chunks/app/api/pair/heartbeat/route-f97ee162e6cb1325.js +1 -0
  368. package/.next/static/chunks/app/api/pair/revoke-all/route-f97ee162e6cb1325.js +1 -0
  369. package/.next/static/chunks/app/api/pair/token/route-f97ee162e6cb1325.js +1 -0
  370. package/.next/static/chunks/app/api/pair/tunnel/route-f97ee162e6cb1325.js +1 -0
  371. package/.next/static/chunks/app/api/plugins/route-f97ee162e6cb1325.js +1 -0
  372. package/.next/static/chunks/app/api/projects/route-f97ee162e6cb1325.js +1 -0
  373. package/.next/static/chunks/app/api/provider-usage/route-f97ee162e6cb1325.js +1 -0
  374. package/.next/static/chunks/app/api/providers/enable/route-f97ee162e6cb1325.js +1 -0
  375. package/.next/static/chunks/app/api/proxy/route-f97ee162e6cb1325.js +1 -0
  376. package/.next/static/chunks/app/api/reveal/route-f97ee162e6cb1325.js +1 -0
  377. package/.next/static/chunks/app/api/scripts/route-f97ee162e6cb1325.js +1 -0
  378. package/.next/static/chunks/app/api/scripts/run/route-f97ee162e6cb1325.js +1 -0
  379. package/.next/static/chunks/app/api/sessions/[id]/archive/route-f97ee162e6cb1325.js +1 -0
  380. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-f97ee162e6cb1325.js +1 -0
  381. package/.next/static/chunks/app/api/sessions/[id]/context/route-f97ee162e6cb1325.js +1 -0
  382. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-f97ee162e6cb1325.js +1 -0
  383. package/.next/static/chunks/app/api/sessions/[id]/export/route-f97ee162e6cb1325.js +1 -0
  384. package/.next/static/chunks/app/api/sessions/[id]/plan/route-f97ee162e6cb1325.js +1 -0
  385. package/.next/static/chunks/app/api/sessions/[id]/route-f97ee162e6cb1325.js +1 -0
  386. package/.next/static/chunks/app/api/sessions/[id]/state/route-f97ee162e6cb1325.js +1 -0
  387. package/.next/static/chunks/app/api/sessions/[id]/subagents/[subagentId]/route-f97ee162e6cb1325.js +1 -0
  388. package/.next/static/chunks/app/api/sessions/[id]/subagents/route-f97ee162e6cb1325.js +1 -0
  389. package/.next/static/chunks/app/api/sessions/archive/route-f97ee162e6cb1325.js +1 -0
  390. package/.next/static/chunks/app/api/sessions/import/route-f97ee162e6cb1325.js +1 -0
  391. package/.next/static/chunks/app/api/sessions/route-f97ee162e6cb1325.js +1 -0
  392. package/.next/static/chunks/app/api/skills/check/route-f97ee162e6cb1325.js +1 -0
  393. package/.next/static/chunks/app/api/skills/install/route-f97ee162e6cb1325.js +1 -0
  394. package/.next/static/chunks/app/api/skills/route-f97ee162e6cb1325.js +1 -0
  395. package/.next/static/chunks/app/api/skills/search/route-f97ee162e6cb1325.js +1 -0
  396. package/.next/static/chunks/app/api/skills/update/route-f97ee162e6cb1325.js +1 -0
  397. package/.next/static/chunks/app/api/terminal/input/route-f97ee162e6cb1325.js +1 -0
  398. package/.next/static/chunks/app/api/terminal/open/route-f97ee162e6cb1325.js +1 -0
  399. package/.next/static/chunks/app/api/terminal/resize/route-f97ee162e6cb1325.js +1 -0
  400. package/.next/static/chunks/app/api/terminal/session/route-f97ee162e6cb1325.js +1 -0
  401. package/.next/static/chunks/app/api/terminal/stream/route-f97ee162e6cb1325.js +1 -0
  402. package/.next/static/chunks/app/api/web-auth/session/route-f97ee162e6cb1325.js +1 -0
  403. package/.next/static/chunks/app/api/worktrees/route-f97ee162e6cb1325.js +1 -0
  404. package/.next/static/chunks/app/manifest.webmanifest/route-f97ee162e6cb1325.js +1 -0
  405. package/.next/static/chunks/app/{page-e7e7426ef3ec9ec1.js → page-48b96ccb13ebd7bb.js} +1 -1
  406. package/.next/static/chunks/app/remote/page-3f3f16f1d3808f92.js +1 -0
  407. package/.next/static/chunks/next/dist/client/components/builtin/app-error-f97ee162e6cb1325.js +1 -0
  408. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-f97ee162e6cb1325.js +1 -0
  409. package/.next/static/chunks/next/dist/client/components/builtin/not-found-f97ee162e6cb1325.js +1 -0
  410. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-f97ee162e6cb1325.js +1 -0
  411. package/.next/static/chunks/webpack-18d04f872fe12139.js +1 -0
  412. package/desktop/main.js +112 -3
  413. package/next.config.ts +40 -23
  414. package/package.json +25 -4
  415. package/.next/static/chunks/1147.a11b66ffeb201d02.js +0 -126
  416. package/.next/static/chunks/2201.08d1cac24fc438ee.js +0 -1
  417. package/.next/static/chunks/2584-d4cd2d8de76d5e35.js +0 -1
  418. package/.next/static/chunks/3596.9fdb605d40673ac8.js +0 -1
  419. package/.next/static/chunks/852.60444b32fcbeb00c.js +0 -1
  420. package/.next/static/chunks/app/_global-error/page-b24b35e3a039f3af.js +0 -1
  421. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-b24b35e3a039f3af.js +0 -1
  422. package/.next/static/chunks/app/api/agent/[id]/events/route-b24b35e3a039f3af.js +0 -1
  423. package/.next/static/chunks/app/api/agent/[id]/route-b24b35e3a039f3af.js +0 -1
  424. package/.next/static/chunks/app/api/agent/new/route-b24b35e3a039f3af.js +0 -1
  425. package/.next/static/chunks/app/api/agent/running/events/route-b24b35e3a039f3af.js +0 -1
  426. package/.next/static/chunks/app/api/agents/route-b24b35e3a039f3af.js +0 -1
  427. package/.next/static/chunks/app/api/app-update/releases/route-b24b35e3a039f3af.js +0 -1
  428. package/.next/static/chunks/app/api/app-update/route-b24b35e3a039f3af.js +0 -1
  429. package/.next/static/chunks/app/api/auth/all-providers/route-b24b35e3a039f3af.js +0 -1
  430. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-b24b35e3a039f3af.js +0 -1
  431. package/.next/static/chunks/app/api/auth/login/[provider]/route-b24b35e3a039f3af.js +0 -1
  432. package/.next/static/chunks/app/api/auth/logout/[provider]/route-b24b35e3a039f3af.js +0 -1
  433. package/.next/static/chunks/app/api/auth/providers/route-b24b35e3a039f3af.js +0 -1
  434. package/.next/static/chunks/app/api/cwd/browse/route-b24b35e3a039f3af.js +0 -1
  435. package/.next/static/chunks/app/api/cwd/validate/route-b24b35e3a039f3af.js +0 -1
  436. package/.next/static/chunks/app/api/default-cwd/route-b24b35e3a039f3af.js +0 -1
  437. package/.next/static/chunks/app/api/diagnostics/route-b24b35e3a039f3af.js +0 -1
  438. package/.next/static/chunks/app/api/file-index/route-b24b35e3a039f3af.js +0 -1
  439. package/.next/static/chunks/app/api/files/[...path]/route-b24b35e3a039f3af.js +0 -1
  440. package/.next/static/chunks/app/api/git/diff/route-b24b35e3a039f3af.js +0 -1
  441. package/.next/static/chunks/app/api/git/status/route-b24b35e3a039f3af.js +0 -1
  442. package/.next/static/chunks/app/api/github/status/route-b24b35e3a039f3af.js +0 -1
  443. package/.next/static/chunks/app/api/home/route-b24b35e3a039f3af.js +0 -1
  444. package/.next/static/chunks/app/api/mcp/route-b24b35e3a039f3af.js +0 -1
  445. package/.next/static/chunks/app/api/model-roles/route-b24b35e3a039f3af.js +0 -1
  446. package/.next/static/chunks/app/api/models/fetch/route-b24b35e3a039f3af.js +0 -1
  447. package/.next/static/chunks/app/api/models/route-b24b35e3a039f3af.js +0 -1
  448. package/.next/static/chunks/app/api/models-config/catalog/route-b24b35e3a039f3af.js +0 -1
  449. package/.next/static/chunks/app/api/models-config/route-b24b35e3a039f3af.js +0 -1
  450. package/.next/static/chunks/app/api/models-config/test/route-b24b35e3a039f3af.js +0 -1
  451. package/.next/static/chunks/app/api/omp-settings/route-b24b35e3a039f3af.js +0 -1
  452. package/.next/static/chunks/app/api/omp-update/route-b24b35e3a039f3af.js +0 -1
  453. package/.next/static/chunks/app/api/omp-version/route-b24b35e3a039f3af.js +0 -1
  454. package/.next/static/chunks/app/api/plugins/route-b24b35e3a039f3af.js +0 -1
  455. package/.next/static/chunks/app/api/projects/route-b24b35e3a039f3af.js +0 -1
  456. package/.next/static/chunks/app/api/providers/enable/route-b24b35e3a039f3af.js +0 -1
  457. package/.next/static/chunks/app/api/proxy/route-b24b35e3a039f3af.js +0 -1
  458. package/.next/static/chunks/app/api/reveal/route-b24b35e3a039f3af.js +0 -1
  459. package/.next/static/chunks/app/api/scripts/route-b24b35e3a039f3af.js +0 -1
  460. package/.next/static/chunks/app/api/scripts/run/route-b24b35e3a039f3af.js +0 -1
  461. package/.next/static/chunks/app/api/sessions/[id]/archive/route-b24b35e3a039f3af.js +0 -1
  462. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-b24b35e3a039f3af.js +0 -1
  463. package/.next/static/chunks/app/api/sessions/[id]/context/route-b24b35e3a039f3af.js +0 -1
  464. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-b24b35e3a039f3af.js +0 -1
  465. package/.next/static/chunks/app/api/sessions/[id]/export/route-b24b35e3a039f3af.js +0 -1
  466. package/.next/static/chunks/app/api/sessions/[id]/plan/route-b24b35e3a039f3af.js +0 -1
  467. package/.next/static/chunks/app/api/sessions/[id]/route-b24b35e3a039f3af.js +0 -1
  468. package/.next/static/chunks/app/api/sessions/[id]/state/route-b24b35e3a039f3af.js +0 -1
  469. package/.next/static/chunks/app/api/sessions/[id]/subagents/[subagentId]/route-b24b35e3a039f3af.js +0 -1
  470. package/.next/static/chunks/app/api/sessions/[id]/subagents/route-b24b35e3a039f3af.js +0 -1
  471. package/.next/static/chunks/app/api/sessions/archive/route-b24b35e3a039f3af.js +0 -1
  472. package/.next/static/chunks/app/api/sessions/import/route-b24b35e3a039f3af.js +0 -1
  473. package/.next/static/chunks/app/api/sessions/route-b24b35e3a039f3af.js +0 -1
  474. package/.next/static/chunks/app/api/skills/check/route-b24b35e3a039f3af.js +0 -1
  475. package/.next/static/chunks/app/api/skills/install/route-b24b35e3a039f3af.js +0 -1
  476. package/.next/static/chunks/app/api/skills/route-b24b35e3a039f3af.js +0 -1
  477. package/.next/static/chunks/app/api/skills/search/route-b24b35e3a039f3af.js +0 -1
  478. package/.next/static/chunks/app/api/skills/update/route-b24b35e3a039f3af.js +0 -1
  479. package/.next/static/chunks/app/api/terminal/input/route-b24b35e3a039f3af.js +0 -1
  480. package/.next/static/chunks/app/api/terminal/open/route-b24b35e3a039f3af.js +0 -1
  481. package/.next/static/chunks/app/api/terminal/resize/route-b24b35e3a039f3af.js +0 -1
  482. package/.next/static/chunks/app/api/terminal/session/route-b24b35e3a039f3af.js +0 -1
  483. package/.next/static/chunks/app/api/terminal/stream/route-b24b35e3a039f3af.js +0 -1
  484. package/.next/static/chunks/app/api/web-auth/session/route-b24b35e3a039f3af.js +0 -1
  485. package/.next/static/chunks/app/api/worktrees/route-b24b35e3a039f3af.js +0 -1
  486. package/.next/static/chunks/app/manifest.webmanifest/route-b24b35e3a039f3af.js +0 -1
  487. package/.next/static/chunks/next/dist/client/components/builtin/app-error-b24b35e3a039f3af.js +0 -1
  488. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-b24b35e3a039f3af.js +0 -1
  489. package/.next/static/chunks/next/dist/client/components/builtin/not-found-b24b35e3a039f3af.js +0 -1
  490. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-b24b35e3a039f3af.js +0 -1
  491. package/.next/static/chunks/webpack-9691f4590ba70cb8.js +0 -1
  492. package/.next/static/r2kW0snAtbTZ8muUOUByQ/_buildManifest.js +0 -1
  493. /package/.next/static/{r2kW0snAtbTZ8muUOUByQ → Q-0mKyL6V7YpE6pf8ZoFy}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,118,191,552,644,976,1004,1005,1097,1236,1337,1541,1907,1952,2053,2086,2138,2202,2246,2504,2795,2835,2837,3004,3425,3432,3507,3522,3805,3851,3943,3955,4016,4037,4288,4314,4721,4863,4896,5012,5221,5423,5517,5673,5715,5907,6072,6450,6671,6709,6819,6849,6919,6988,7067,7074,7453,7483,7513,7769,7812,7833,7851,8167,8429,8589,8658,8743,8933,9043,9156,9174,9183,9223,9477,9742,9747,9928,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,118,191,552,644,976,1004,1005,1097,1236,1337,1541,1907,1952,2053,2086,2138,2202,2246,2504,2795,2835,2837,3004,3425,3432,3507,3522,3805,3851,3943,3955,4016,4037,4288,4314,4721,4863,4896,5012,5221,5423,5517,5673,5715,5907,6072,6450,6671,6709,6819,6849,6919,6988,7067,7074,7453,7483,7513,7769,7812,7833,7851,8167,8429,8589,8658,8743,8933,9043,9156,9174,9183,9223,9477,9742,9747,9928,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,118,191,552,644,976,1004,1005,1097,1236,1337,1541,1907,1952,2053,2086,2138,2202,2246,2504,2795,2835,2837,3004,3425,3432,3507,3522,3805,3851,3943,3955,4016,4037,4288,4314,4721,4863,4896,5012,5221,5423,5517,5673,5715,5907,6072,6450,6671,6709,6819,6849,6919,6988,7067,7074,7453,7483,7513,7769,7812,7833,7851,8167,8429,8589,8658,8743,8933,9043,9156,9174,9183,9223,9477,9742,9747,9928,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,118,191,552,644,976,1004,1005,1097,1236,1337,1541,1907,1952,2053,2086,2138,2202,2246,2504,2795,2835,2837,3004,3425,3432,3507,3522,3805,3851,3943,3955,4016,4037,4288,4314,4721,4863,4896,5012,5221,5423,5517,5673,5715,5907,6072,6450,6671,6709,6819,6849,6919,6988,7067,7074,7453,7483,7513,7769,7812,7833,7851,8167,8429,8589,8658,8743,8933,9043,9156,9174,9183,9223,9477,9742,9747,9928,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,118,191,552,644,976,1004,1005,1097,1236,1337,1541,1907,1952,2053,2086,2138,2202,2246,2504,2795,2835,2837,3004,3425,3432,3507,3522,3805,3851,3943,3955,4016,4037,4288,4314,4721,4863,4896,5012,5221,5423,5517,5673,5715,5907,6072,6450,6671,6709,6819,6849,6919,6988,7067,7074,7453,7483,7513,7769,7812,7833,7851,8167,8429,8589,8658,8743,8933,9043,9156,9174,9183,9223,9477,9742,9747,9928,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,118,191,552,644,976,1004,1005,1097,1236,1337,1541,1907,1952,2053,2086,2138,2202,2246,2504,2795,2835,2837,3004,3425,3432,3507,3522,3805,3851,3943,3955,4016,4037,4288,4314,4721,4863,4896,5012,5221,5423,5517,5673,5715,5907,6072,6450,6671,6709,6819,6849,6919,6988,7067,7074,7453,7483,7513,7769,7812,7833,7851,8167,8429,8589,8658,8743,8933,9043,9156,9174,9183,9223,9477,9742,9747,9928,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,118,191,552,644,976,1004,1005,1097,1236,1337,1541,1907,1952,2053,2086,2138,2202,2246,2504,2795,2835,2837,3004,3425,3432,3507,3522,3805,3851,3943,3955,4016,4037,4288,4314,4721,4863,4896,5012,5221,5423,5517,5673,5715,5907,6072,6450,6671,6709,6819,6849,6919,6988,7067,7074,7453,7483,7513,7769,7812,7833,7851,8167,8429,8589,8658,8743,8933,9043,9156,9174,9183,9223,9477,9742,9747,9928,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,118,191,552,644,976,1004,1005,1097,1236,1337,1541,1907,1952,2053,2086,2138,2202,2246,2504,2795,2835,2837,3004,3425,3432,3507,3522,3805,3851,3943,3955,4016,4037,4288,4314,4721,4863,4896,5012,5221,5423,5517,5673,5715,5907,6072,6450,6671,6709,6819,6849,6919,6988,7067,7074,7453,7483,7513,7769,7812,7833,7851,8167,8429,8589,8658,8743,8933,9043,9156,9174,9183,9223,9477,9742,9747,9928,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,118,191,552,644,976,1004,1005,1097,1236,1337,1541,1907,1952,2053,2086,2138,2202,2246,2504,2795,2835,2837,3004,3425,3432,3507,3522,3805,3851,3943,3955,4016,4037,4288,4314,4721,4863,4896,5012,5221,5423,5517,5673,5715,5907,6072,6450,6671,6709,6819,6849,6919,6988,7067,7074,7453,7483,7513,7769,7812,7833,7851,8167,8429,8589,8658,8743,8933,9043,9156,9174,9183,9223,9477,9742,9747,9928,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,118,191,552,644,976,1004,1005,1097,1236,1337,1541,1907,1952,2053,2086,2138,2202,2246,2504,2795,2835,2837,3004,3425,3432,3507,3522,3805,3851,3943,3955,4016,4037,4288,4314,4721,4863,4896,5012,5221,5423,5517,5673,5715,5907,6072,6450,6671,6709,6819,6849,6919,6988,7067,7074,7453,7483,7513,7769,7812,7833,7851,8167,8429,8589,8658,8743,8933,9043,9156,9174,9183,9223,9477,9742,9747,9928,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,118,191,552,644,976,1004,1005,1097,1236,1337,1541,1907,1952,2053,2086,2138,2202,2246,2504,2795,2835,2837,3004,3425,3432,3507,3522,3805,3851,3943,3955,4016,4037,4288,4314,4721,4863,4896,5012,5221,5423,5517,5673,5715,5907,6072,6450,6671,6709,6819,6849,6919,6988,7067,7074,7453,7483,7513,7769,7812,7833,7851,8167,8429,8589,8658,8743,8933,9043,9156,9174,9183,9223,9477,9742,9747,9928,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,118,191,552,644,976,1004,1005,1097,1236,1337,1541,1907,1952,2053,2086,2138,2202,2246,2504,2795,2835,2837,3004,3425,3432,3507,3522,3805,3851,3943,3955,4016,4037,4288,4314,4721,4863,4896,5012,5221,5423,5517,5673,5715,5907,6072,6450,6671,6709,6819,6849,6919,6988,7067,7074,7453,7483,7513,7769,7812,7833,7851,8167,8429,8589,8658,8743,8933,9043,9156,9174,9183,9223,9477,9742,9747,9928,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8974],{5214:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorage",{enumerable:!0,get:function(){return r.workAsyncStorageInstance}});let r=n(17828)},17828:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorageInstance",{enumerable:!0,get:function(){return r}});let r=(0,n(64054).createAsyncLocalStorage)()},21957:(e,t,n)=>{"use strict";function r({moduleIds:e}){return null}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PreloadChunks",{enumerable:!0,get:function(){return r}}),n(95155),n(47650),n(5214),n(2451),n(53887)},37206:(e,t,n)=>{"use strict";n.d(t,{default:()=>u.a});var r=n(75707),u=n.n(r)},41112:(e,t,n)=>{"use strict";function r({reason:e,children:t}){return t}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BailoutToCSR",{enumerable:!0,get:function(){return r}}),n(1980)},50394:(e,t,n)=>{Promise.resolve().then(n.bind(n,66919))},64054:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={bindSnapshot:function(){return s},createAsyncLocalStorage:function(){return a},createSnapshot:function(){return i}};for(var r in n)Object.defineProperty(t,r,{enumerable:!0,get:n[r]});let u=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class l{disable(){throw u}getStore(){}run(){throw u}exit(){throw u}enterWith(){throw u}static bind(e){return e}}let o="u">typeof globalThis&&globalThis.AsyncLocalStorage;function a(){return o?new o:new l}function s(e){return o?o.bind(e):l.bind(e)}function i(){return o?o.snapshot():function(e,...t){return e(...t)}}},66919:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r=n(95155);let u=(0,n(37206).default)(()=>Promise.all([n.e(3596),n.e(2584),n.e(1147)]).then(n.bind(n,91147)).then(e=>e.AppShell),{loadableGenerated:{webpack:()=>[91147]},ssr:!1});function l(){return(0,r.jsx)(u,{})}},68635:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}});let r=n(95155),u=n(12115),l=n(41112);function o(e){return{default:e&&"default"in e?e.default:e}}n(21957);let a={loader:()=>Promise.resolve(o(()=>null)),loading:null,ssr:!0},s=function(e){let t={...a,...e},n=(0,u.lazy)(()=>t.loader().then(o)),s=t.loading;function i(e){let o=s?(0,r.jsx)(s,{isLoading:!0,pastDelay:!0,error:null}):null,a=!t.ssr||!!t.loading,i=a?u.Suspense:u.Fragment,c=t.ssr?(0,r.jsxs)(r.Fragment,{children:[null,(0,r.jsx)(n,{...e})]}):(0,r.jsx)(l.BailoutToCSR,{reason:"next/dynamic",children:(0,r.jsx)(n,{...e})});return(0,r.jsx)(i,{...a?{fallback:o}:{},children:c})}return i.displayName="LoadableComponent",i}},75707:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return u}});let r=n(73623)._(n(68635));function u(e,t){let n={};"function"==typeof e&&(n.loader=e);let u={...n,...t};return(0,r.default)({...u,modules:u.loadableGenerated?.modules})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},e=>{e.O(0,[8441,3794,7358],()=>e(e.s=50394)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8974],{5214:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorage",{enumerable:!0,get:function(){return r.workAsyncStorageInstance}});let r=n(17828)},17828:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorageInstance",{enumerable:!0,get:function(){return r}});let r=(0,n(64054).createAsyncLocalStorage)()},21957:(e,t,n)=>{"use strict";function r({moduleIds:e}){return null}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PreloadChunks",{enumerable:!0,get:function(){return r}}),n(95155),n(47650),n(5214),n(2451),n(53887)},37206:(e,t,n)=>{"use strict";n.d(t,{default:()=>u.a});var r=n(75707),u=n.n(r)},41112:(e,t,n)=>{"use strict";function r({reason:e,children:t}){return t}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BailoutToCSR",{enumerable:!0,get:function(){return r}}),n(1980)},50394:(e,t,n)=>{Promise.resolve().then(n.bind(n,66919))},64054:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={bindSnapshot:function(){return s},createAsyncLocalStorage:function(){return a},createSnapshot:function(){return i}};for(var r in n)Object.defineProperty(t,r,{enumerable:!0,get:n[r]});let u=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class l{disable(){throw u}getStore(){}run(){throw u}exit(){throw u}enterWith(){throw u}static bind(e){return e}}let o="u">typeof globalThis&&globalThis.AsyncLocalStorage;function a(){return o?new o:new l}function s(e){return o?o.bind(e):l.bind(e)}function i(){return o?o.snapshot():function(e,...t){return e(...t)}}},66919:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var r=n(95155);let u=(0,n(37206).default)(()=>Promise.all([n.e(6608),n.e(2584),n.e(7408)]).then(n.bind(n,57408)).then(e=>e.AppShell),{loadableGenerated:{webpack:()=>[57408]},ssr:!1});function l(){return(0,r.jsx)(u,{})}},68635:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}});let r=n(95155),u=n(12115),l=n(41112);function o(e){return{default:e&&"default"in e?e.default:e}}n(21957);let a={loader:()=>Promise.resolve(o(()=>null)),loading:null,ssr:!0},s=function(e){let t={...a,...e},n=(0,u.lazy)(()=>t.loader().then(o)),s=t.loading;function i(e){let o=s?(0,r.jsx)(s,{isLoading:!0,pastDelay:!0,error:null}):null,a=!t.ssr||!!t.loading,i=a?u.Suspense:u.Fragment,c=t.ssr?(0,r.jsxs)(r.Fragment,{children:[null,(0,r.jsx)(n,{...e})]}):(0,r.jsx)(l.BailoutToCSR,{reason:"next/dynamic",children:(0,r.jsx)(n,{...e})});return(0,r.jsx)(i,{...a?{fallback:o}:{},children:c})}return i.displayName="LoadableComponent",i}},75707:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return u}});let r=n(73623)._(n(68635));function u(e,t){let n={};"function"==typeof e&&(n.loader=e);let u={...n,...t};return(0,r.default)({...u,modules:u.loadableGenerated?.modules})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},e=>{e.O(0,[8441,3794,7358],()=>e(e.s=50394)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3633],{5017:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>h});var i=r(95155),s=r(12115),a=r(73321),n=r(95e3),o=r(92571),l=r(64962);let c=(0,r(99537).A)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);var d=r(52584);function u(){let e=(0,a.useSearchParams)(),{t}=(0,d.s9)(),[r,u]=(0,s.useState)("pairing"),[h,p]=(0,s.useState)(null),m=(0,s.useRef)(!1);(0,s.useEffect)(()=>{if(m.current)return;m.current=!0;let t=e.get("token"),r=/iPhone|iPad|Android|Mobile/i.test(navigator.userAgent),i={"Content-Type":"application/json"};i["X-Requested-With"]="omp-web-remote",fetch("/api/pair/accept",{method:"POST",headers:i,body:JSON.stringify({token:t,mobile:r})}).then(e=>e.ok?e.json():null).then(e=>{e?(p(e.device.name),u("paired")):u("failed")}).catch(()=>u("failed"))},[e]);let f=window.location.origin;return(0,i.jsxs)("main",{style:{minHeight:"100dvh",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:16,padding:24,background:"var(--bg)",color:"var(--text)",fontFamily:"var(--font-sans, system-ui, sans-serif)"},children:[(0,i.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10},children:[(0,i.jsx)(n.A,{size:28,strokeWidth:1.8,style:{color:"var(--accent)"},"aria-hidden":"true"}),(0,i.jsx)("span",{style:{fontSize:18,fontWeight:600},children:t("remote.pairingTitle")})]}),"pairing"===r&&(0,i.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,color:"var(--text-muted)",fontSize:14},children:[(0,i.jsx)(o.A,{size:18,className:"spin","aria-hidden":"true"}),t("remote.pairingInProgress")]}),"paired"===r&&(0,i.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",gap:12},children:[(0,i.jsx)(l.A,{size:40,strokeWidth:1.6,style:{color:"var(--status-ok, #2e9e5b)"},"aria-hidden":"true"}),(0,i.jsx)("span",{style:{fontSize:15,fontWeight:500},children:t("remote.pairedSuccess",{device:h??"?"})}),(0,i.jsx)("a",{href:f,style:{padding:"10px 18px",borderRadius:"var(--radius-control)",background:"var(--accent)",color:"var(--bg)",textDecoration:"none",fontSize:14,fontWeight:600},children:t("remote.openApp")})]}),"failed"===r&&(0,i.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",gap:12},children:[(0,i.jsx)(c,{size:40,strokeWidth:1.6,style:{color:"var(--status-error)"},"aria-hidden":"true"}),(0,i.jsx)("span",{style:{fontSize:14,color:"var(--text-muted)",textAlign:"center",lineHeight:1.5},children:t("remote.pairingFailed")})]})]})}function h(){return(0,i.jsx)(s.Suspense,{children:(0,i.jsx)(u,{})})}},64317:(e,t,r)=>{Promise.resolve().then(r.bind(r,5017))},64962:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});let i=(0,r(99537).A)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]])},73321:(e,t,r)=>{"use strict";var i=r(74645);r.o(i,"useRouter")&&r.d(t,{useRouter:function(){return i.useRouter}}),r.o(i,"useSearchParams")&&r.d(t,{useSearchParams:function(){return i.useSearchParams}})},92571:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});let i=(0,r(99537).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},95e3:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});let i=(0,r(99537).A)("smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]])},99537:(e,t,r)=>{"use strict";r.d(t,{A:()=>c});var i=r(12115);let s=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim(),a=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let o=(0,i.createContext)({}),l=(0,i.forwardRef)(({color:e,size:t,strokeWidth:r,absoluteStrokeWidth:a,className:l="",children:c,iconNode:d,...u},h)=>{let{size:p=24,strokeWidth:m=2,absoluteStrokeWidth:f=!1,color:g="currentColor",className:y=""}=(0,i.useContext)(o)??{},x=a??f?24*Number(r??m)/Number(t??p):r??m;return(0,i.createElement)("svg",{ref:h,...n,width:t??p??n.width,height:t??p??n.height,stroke:e??g,strokeWidth:x,className:s("lucide",y,l),...!c&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(u)&&{"aria-hidden":"true"},...u},[...d.map(([e,t])=>(0,i.createElement)(e,t)),...Array.isArray(c)?c:[c]])}),c=(e,t)=>{let r=(0,i.forwardRef)(({className:r,...n},o)=>(0,i.createElement)(l,{ref:o,iconNode:t,className:s(`lucide-${a(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,r),...n}));return r.displayName=a(e),r}}},e=>{e.O(0,[2584,8441,3794,7358],()=>e(e.s=64317)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,118,191,552,644,976,1004,1005,1097,1236,1337,1541,1907,1952,2053,2086,2138,2202,2246,2504,2795,2835,2837,3004,3425,3432,3507,3522,3805,3851,3943,3955,4016,4037,4288,4314,4721,4863,4896,5012,5221,5423,5517,5673,5715,5907,6072,6450,6671,6709,6819,6849,6919,6988,7067,7074,7453,7483,7513,7769,7812,7833,7851,8167,8429,8589,8658,8743,8933,9043,9156,9174,9183,9223,9477,9742,9747,9928,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,118,191,552,644,976,1004,1005,1097,1236,1337,1541,1907,1952,2053,2086,2138,2202,2246,2504,2795,2835,2837,3004,3425,3432,3507,3522,3805,3851,3943,3955,4016,4037,4288,4314,4721,4863,4896,5012,5221,5423,5517,5673,5715,5907,6072,6450,6671,6709,6819,6849,6919,6988,7067,7074,7453,7483,7513,7769,7812,7833,7851,8167,8429,8589,8658,8743,8933,9043,9156,9174,9183,9223,9477,9742,9747,9928,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,118,191,552,644,976,1004,1005,1097,1236,1337,1541,1907,1952,2053,2086,2138,2202,2246,2504,2795,2835,2837,3004,3425,3432,3507,3522,3805,3851,3943,3955,4016,4037,4288,4314,4721,4863,4896,5012,5221,5423,5517,5673,5715,5907,6072,6450,6671,6709,6819,6849,6919,6988,7067,7074,7453,7483,7513,7769,7812,7833,7851,8167,8429,8589,8658,8743,8933,9043,9156,9174,9183,9223,9477,9742,9747,9928,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[64,90,118,191,552,644,976,1004,1005,1097,1236,1337,1541,1907,1952,2053,2086,2138,2202,2246,2504,2795,2835,2837,3004,3425,3432,3507,3522,3805,3851,3943,3955,4016,4037,4288,4314,4721,4863,4896,5012,5221,5423,5517,5673,5715,5907,6072,6450,6671,6709,6819,6849,6919,6988,7067,7074,7453,7483,7513,7769,7812,7833,7851,8167,8429,8589,8658,8743,8933,9043,9156,9174,9183,9223,9477,9742,9747,9928,9968],{84441:()=>{}},_=>{_.O(0,[8441,3794,7358],()=>_(_.s=84441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (()=>{"use strict";var e,t,a,c,r,d,f,b,o,n={},i={};function l(e){var t=i[e];if(void 0!==t)return t.exports;var a=i[e]={exports:{}},c=!0;try{n[e].call(a.exports,a,a.exports,l),c=!1}finally{c&&delete i[e]}return a.exports}l.m=n,e=[],l.O=(t,a,c,r)=>{if(a){r=r||0;for(var d=e.length;d>0&&e[d-1][2]>r;d--)e[d]=e[d-1];e[d]=[a,c,r];return}for(var f=1/0,d=0;d<e.length;d++){for(var[a,c,r]=e[d],b=!0,o=0;o<a.length;o++)(!1&r||f>=r)&&Object.keys(l.O).every(e=>l.O[e](a[o]))?a.splice(o--,1):(b=!1,r<f&&(f=r));if(b){e.splice(d--,1);var n=c();void 0!==n&&(t=n)}}return t},l.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return l.d(t,{a:t}),t},a=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,l.t=function(e,c){if(1&c&&(e=this(e)),8&c||"object"==typeof e&&e&&(4&c&&e.__esModule||16&c&&"function"==typeof e.then))return e;var r=Object.create(null);l.r(r);var d={};t=t||[null,a({}),a([]),a(a)];for(var f=2&c&&e;"object"==typeof f&&!~t.indexOf(f);f=a(f))Object.getOwnPropertyNames(f).forEach(t=>d[t]=()=>e[t]);return d.default=()=>e,l.d(r,d),r},l.d=(e,t)=>{for(var a in t)l.o(t,a)&&!l.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},l.f={},l.e=e=>Promise.all(Object.keys(l.f).reduce((t,a)=>(l.f[a](e,t),t),[])),l.u=e=>2584===e?"static/chunks/2584-77204310e58868e3.js":"static/chunks/"+(({988:"993e5495",1048:"db9d41be",3888:"e868780c",7330:"d3ac728e",8133:"1ba63609",8747:"90542734",8924:"da12927c",9425:"bf2ff291"})[e]||e)+"."+({103:"23142a67b02246a8",268:"ec500965c1761e26",370:"8e8f3cf8eb0e29dd",394:"475e54c848486e3a",398:"ffa02af9062a3950",484:"c74eeb0fca9a9ddf",852:"e2bbfb3632f6b0fe",869:"7152372b662e31af",918:"6a9bbe564e4a2d0f",934:"9006461bd0548660",973:"9efc01efd9d768a5",988:"598a97aa1337298f",1032:"d9a9179233599785",1048:"27ee8fcc7bf00d70",1063:"775c442bdbeef08b",1133:"0f37525b2b215f36",1327:"09252bb80616cc3a",1708:"c3a1896e4cc9f8d9",1781:"9072b4c9586df549",2081:"47b6e9391094055f",2181:"ba21239d3ac39f81",2201:"d0a54d53ec6d60af",2258:"4defa30121ef44a5",2325:"23caf22075e51aa5",2356:"523277bb8c6bf72a",2414:"8b3662a85cd1b14e",2418:"b5d9e177e10a686e",2480:"cf27ca02e5b19761",2539:"c5a4f2fd8e421c70",2619:"9431a3f48da8eef4",2695:"b732ef1965253b3f",2703:"495a65ed14b2f094",2821:"934bcf60fbdc28c6",3251:"408c817adb161919",3308:"8e27b5c43a478f0d",3336:"a76f9485fe7cb762",3606:"ddd8065b4a3108bd",3651:"f68fccde22153b7d",3716:"72bf4c9d7325debd",3888:"0440c4cbaec74878",3995:"eca0f5bef1fc3ae5",4004:"74b9bcf5478b1663",4202:"8440832386f023c7",4238:"6f102dcbcf2ae339",4405:"7a19458960a1058e",4424:"fd0c93a807a333e1",4559:"2e7ed39ea2757280",4854:"b64a1daa15899219",4866:"d1060b4faf2ae1e2",4970:"8a63b4953b0e4946",5020:"9ac8d0dc8390bb6e",5137:"f163e94c74a94d01",5165:"2681017cd0bd291f",5242:"7b643c6b3394cac1",5361:"afc00ab2626bacbf",5521:"cfdf2cfc6db31407",5526:"ff46471041fdcb79",5658:"aab0a7c617597ba5",5681:"dd0e66b0de16e54b",6121:"eb9023b1cbc78ee2",6161:"4836cd7d031026bf",6195:"8710aa41b2319dff",6202:"f4317cf0a48876f9",6294:"24f510c0c3e3714c",6608:"d79f10dc7b2f3e7d",6654:"41440ef667144967",6794:"57bf1aff78682f3a",7256:"e07cf52d87d40252",7268:"2f59c671f26160f3",7330:"7964f816a1ca64e5",7331:"2add3c4e125a2dba",7408:"8fb61f7f23253d4d",7543:"89f7b805ed0f2901",8114:"8a8fdee4c3b7fd4b",8133:"b2ae90f43319a29e",8200:"a36b9f8c983c6b9e",8422:"475d97d0a80e2827",8747:"ae439f2382f58c51",8863:"fa0320ea586efb3b",8885:"d9308c756376780b",8901:"e117d206a917bda0",8924:"476aa688a637649c",9365:"a3e0e5ac101ccd02",9425:"244c8a7c1c14966a",9522:"c7c6e9c330f9ba6b",9614:"3221013d7f0af27f",9698:"4d09a99b9d99f3e5",9705:"40a82b97f214e28b",9754:"d67dec946fc871d4",9764:"2669775c6e107a01",9793:"4567af813117ad25",9974:"9a0f79beca65e8c4",9981:"678c7bcc42f24571"})[e]+".js",l.miniCssF=e=>"static/css/2f46e0db0d4a3aed.css",l.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),l.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),c={},l.l=(e,t,a,r)=>{if(c[e])return void c[e].push(t);if(void 0!==a)for(var d,f,b=document.getElementsByTagName("script"),o=0;o<b.length;o++){var n=b[o];if(n.getAttribute("src")==e||n.getAttribute("data-webpack")=="_N_E:"+a){d=n;break}}d||(f=!0,(d=document.createElement("script")).charset="utf-8",d.timeout=120,l.nc&&d.setAttribute("nonce",l.nc),d.setAttribute("data-webpack","_N_E:"+a),d.src=l.tu(e)),c[e]=[t];var i=(t,a)=>{d.onerror=d.onload=null,clearTimeout(s);var r=c[e];if(delete c[e],d.parentNode&&d.parentNode.removeChild(d),r&&r.forEach(e=>e(a)),t)return t(a)},s=setTimeout(i.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=i.bind(null,d.onerror),d.onload=i.bind(null,d.onload),f&&document.head.appendChild(d)},l.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.tt=()=>(void 0===r&&(r={createScriptURL:e=>e},"u">typeof trustedTypes&&trustedTypes.createPolicy&&(r=trustedTypes.createPolicy("nextjs#bundler",r))),r),l.tu=e=>l.tt().createScriptURL(e),l.p="/_next/",d={8068:0},l.f.miniCss=(e,t)=>{if(d[e])t.push(d[e]);else 0!==d[e]&&({5846:1})[e]&&t.push(d[e]=new Promise((t,a)=>{var c=l.miniCssF(e),r=l.p+c;if(((e,t)=>{for(var a=document.getElementsByTagName("link"),c=0;c<a.length;c++){var r=a[c],d=r.getAttribute("data-href")||r.getAttribute("href");if("stylesheet"===r.rel&&(d===e||d===t))return r}for(var f=document.getElementsByTagName("style"),c=0;c<f.length;c++){var r=f[c],d=r.getAttribute("data-href");if(d===e||d===t)return r}})(c,r))return t();((e,t,a,c)=>{var r=document.createElement("link");r.rel="stylesheet",r.type="text/css",r.onerror=r.onload=d=>{if(r.onerror=r.onload=null,"load"===d.type)a();else{var f=d&&("load"===d.type?"missing":d.type),b=d&&d.target&&d.target.href||t,o=Error("Loading CSS chunk "+e+" failed.\n("+b+")");o.code="CSS_CHUNK_LOAD_FAILED",o.type=f,o.request=b,r.parentNode.removeChild(r),c(o)}},r.href=t;if("function"==typeof _N_E_STYLE_LOAD){var d=r.href,f=r.onload,b=r.onerror;_N_E_STYLE_LOAD(0===d.indexOf(window.location.origin)?new URL(d).pathname:d).then(function(){f&&f.call(r,{type:"load"})},function(){b&&b.call(r,{})})}else document.head.appendChild(r)})(e,r,t,a)}).then(()=>{d[e]=0},t=>{throw delete d[e],t}))},f={8068:0,2859:0,2160:0,9894:0},l.f.j=(e,t)=>{var a=l.o(f,e)?f[e]:void 0;if(0!==a)if(a)t.push(a[2]);else if(/^(2160|2859|5846|8068|9894)$/.test(e))f[e]=0;else{var c=new Promise((t,c)=>a=f[e]=[t,c]);t.push(a[2]=c);var r=l.p+l.u(e),d=Error();l.l(r,t=>{if(l.o(f,e)&&(0!==(a=f[e])&&(f[e]=void 0),a)){var c=t&&("load"===t.type?"missing":t.type),r=t&&t.target&&t.target.src;d.message="Loading chunk "+e+" failed.\n("+c+": "+r+")",d.name="ChunkLoadError",d.type=c,d.request=r,a[1](d)}},"chunk-"+e,e)}},l.O.j=e=>0===f[e],b=(e,t)=>{var a,c,[r,d,b]=t,o=0;if(r.some(e=>0!==f[e])){for(a in d)l.o(d,a)&&(l.m[a]=d[a]);if(b)var n=b(l)}for(e&&e(t);o<r.length;o++)c=r[o],l.o(f,c)&&f[c]&&f[c][0](),f[c]=0;return l.O(n)},(o=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(b.bind(null,0)),o.push=b.bind(null,o.push.bind(o)),l.nc=void 0})();
package/desktop/main.js CHANGED
@@ -17,13 +17,41 @@ const fs = require("fs");
17
17
 
18
18
  // Internal port for the hosted server (dev 30178 / cli 30177 stay free).
19
19
  const APP_PORT = Number(process.env.OMP_WEB_APP_PORT || 30179);
20
- const HOST = "127.0.0.1";
21
- const APP_URL = `http://${HOST}:${APP_PORT}`;
20
+ // Listening on 0.0.0.0 is what makes phone/PC pairing work over the LAN;
21
+ // the pairing gate (proxy.ts) denies every remote /api request without a
22
+ // paired-device cookie, and token issuance is loopback-only, so exposing
23
+ // the port is safe.
24
+ const HOST = "0.0.0.0";
25
+ const APP_URL = `http://127.0.0.1:${APP_PORT}`;
22
26
 
23
27
  const pkgDir = path.join(__dirname, "..");
24
28
 
25
29
  const APP_LOG_MAX_BYTES = 256 * 1024;
26
30
 
31
+ // Lightweight startup page shown while the standalone server cold-starts
32
+ // (no splash animation runs). Inline data URL: zero files, zero network.
33
+ const STARTUP_PAGE = `data:text/html;charset=utf-8,${encodeURIComponent(`<!doctype html>
34
+ <html lang="zh-CN">
35
+ <head>
36
+ <meta charset="utf-8">
37
+ <style>
38
+ html, body { margin: 0; padding: 0; width: 100%; height: 100%; }
39
+ body { background: #faf9f6; color: #2b2b2b; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px; font-family: -apple-system, "Segoe UI", system-ui, sans-serif; }
40
+ .logo { font-size: 26px; font-weight: 700; letter-spacing: 0.5px; }
41
+ .logo span { color: #c98a1b; }
42
+ .bar { width: 180px; height: 3px; border-radius: 2px; background: #e8e4dc; overflow: hidden; }
43
+ .bar i { display: block; height: 100%; width: 40%; background: #c98a1b; border-radius: 2px; animation: slide 1.1s ease-in-out infinite; }
44
+ @keyframes slide { 0% { transform: translateX(-100%); } 100% { transform: translateX(450%); } }
45
+ .hint { font-size: 12px; color: #8a867e; }
46
+ </style>
47
+ </head>
48
+ <body>
49
+ <div class="logo">Omp<span>Web</span></div>
50
+ <div class="bar"><i></i></div>
51
+ <div class="hint">正在启动…</div>
52
+ </body>
53
+ </html>`)}`;
54
+
27
55
  function appLog(message) {
28
56
  try {
29
57
  const logPath = path.join(app.getPath("userData"), "omp-app.log");
@@ -141,7 +169,10 @@ function waitForServer(attempt = 0, loadWhenReady = true) {
141
169
  function isFirstLaunchSplash() {
142
170
  const pref = readSplashPref();
143
171
  if (pref === "off") return false;
144
- const markPath = path.join(app.getPath("userData"), "splash-shown");
172
+ // Version-scoped mark: the animation plays once per installed version, so
173
+ // an in-place upgrade (which keeps userData, including the old splash-shown
174
+ // file) shows it again instead of skipping silently forever.
175
+ const markPath = path.join(app.getPath("userData"), `splash-shown-${app.getVersion()}`);
145
176
  if (pref === "once" && fs.existsSync(markPath)) return false;
146
177
  const splashFile = path.join(pkgDir, "desktop", "splash.html");
147
178
  const splashVideo = app.isPackaged
@@ -194,8 +225,25 @@ function createWindow() {
194
225
  });
195
226
  mainWindow.webContents.on("console-message", (_e, _lvl, message) => appLog("window console: " + String(message).slice(0, 200)));
196
227
  mainWindow.webContents.on("did-finish-load", () => appLog("window loaded: " + mainWindow.webContents.getURL()));
228
+ // Cold-start race: the splash page navigates to APP_URL on its own timer,
229
+ // but on slow machines (first run, Windows Defender scanning the freshly
230
+ // installed standalone) the server may not be listening yet — the app then
231
+ // sits on a blank page until a manual refresh. Retry the navigation a few
232
+ // times until the server answers.
233
+ let splashReloads = 0;
234
+ mainWindow.webContents.on("did-fail-load", (_event, code, desc, url) => {
235
+ appLog(`did-fail-load ${code} ${desc} ${url}`);
236
+ if (!url.startsWith(APP_URL)) return;
237
+ if (splashReloads >= 8) return;
238
+ splashReloads += 1;
239
+ setTimeout(() => {
240
+ if (!mainWindow || mainWindow.isDestroyed()) return;
241
+ if (!quitting) mainWindow.loadURL(APP_URL);
242
+ }, 1200);
243
+ });
197
244
  mainWindow.on("closed", () => {
198
245
  mainWindow = null;
246
+ splashReloads = 0;
199
247
  });
200
248
  }
201
249
 
@@ -265,6 +313,10 @@ if (!gotLock) {
265
313
  waitForServer(0, false);
266
314
  void mainWindow?.loadFile(splashFile_, { query: { video: splashVideo_, app: APP_URL } });
267
315
  } else {
316
+ // No animation: show the startup page immediately so the window is
317
+ // never blank while the standalone server cold-starts, then load the
318
+ // app once it answers.
319
+ void mainWindow?.loadURL(STARTUP_PAGE);
268
320
  waitForServer();
269
321
  }
270
322
  });
@@ -272,6 +324,7 @@ if (!gotLock) {
272
324
  app.on("activate", () => {
273
325
  if (BrowserWindow.getAllWindows().length === 0) {
274
326
  createWindow();
327
+ void mainWindow?.loadURL(STARTUP_PAGE);
275
328
  waitForServer();
276
329
  }
277
330
  });
@@ -327,3 +380,59 @@ ipcMain.on("window-control", (_event, action) => {
327
380
  else if (action === "maximize") mainWindow.isMaximized() ? mainWindow.unmaximize() : mainWindow.maximize();
328
381
  else if (action === "close") mainWindow.close();
329
382
  });
383
+
384
+ // ---------------------------------------------------------------------------
385
+ // Desktop self-update (electron-updater). Only active in packaged builds;
386
+ // dev runs use the plain CLI update flows. The renderer drives it from the
387
+ // System & Updates tab: check -> download (progress) -> apply (restart).
388
+ // ---------------------------------------------------------------------------
389
+ let autoUpdater = null;
390
+ if (app.isPackaged) {
391
+ try {
392
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
393
+ const { autoUpdater: updater } = require("electron-updater");
394
+ autoUpdater = updater;
395
+ autoUpdater.autoDownload = false; // user confirms before downloading
396
+ autoUpdater.autoInstallOnAppQuit = false;
397
+ autoUpdater.autoRunAppAfterInstall = true;
398
+
399
+ const broadcast = (status, detail) => {
400
+ if (mainWindow && !mainWindow.isDestroyed()) {
401
+ mainWindow.webContents.send("desktop-update-status", { status, ...(detail ?? {}) });
402
+ }
403
+ };
404
+ autoUpdater.on("checking-for-update", () => broadcast("checking"));
405
+ autoUpdater.on("update-available", (info) => broadcast("available", { version: info.version }));
406
+ autoUpdater.on("update-not-available", () => broadcast("up-to-date"));
407
+ autoUpdater.on("download-progress", (progress) => broadcast("downloading", { percent: Math.round(progress.percent ?? 0) }));
408
+ autoUpdater.on("update-downloaded", (info) => broadcast("downloaded", { version: info.version }));
409
+ autoUpdater.on("error", (error) => {
410
+ appLog("updater: " + (error instanceof Error ? error.message : String(error)));
411
+ broadcast("error", { message: error instanceof Error ? error.message : String(error) });
412
+ });
413
+
414
+ ipcMain.handle("desktop-update-check", () => {
415
+ autoUpdater.checkForUpdates().catch((error) => appLog("updater check: " + error.message));
416
+ return true;
417
+ });
418
+ // Auto-check shortly after launch (quietly — only "available" and
419
+ // "downloaded" reach the renderer, so the user is prompted when an
420
+ // update exists instead of having to open Settings).
421
+ const autoCheckTimer = setTimeout(() => {
422
+ autoUpdater.checkForUpdates().catch((error) => appLog("updater auto-check: " + error.message));
423
+ }, 8000);
424
+ autoUpdater.on("checking-for-update", () => clearTimeout(autoCheckTimer));
425
+ ipcMain.handle("desktop-update-download", () => {
426
+ autoUpdater.downloadUpdate().catch((error) => appLog("updater download: " + error.message));
427
+ return true;
428
+ });
429
+ ipcMain.handle("desktop-update-apply", () => {
430
+ // quitAndInstall restarts the app into the new version — the user sees
431
+ // the app close and reopen with the update applied.
432
+ autoUpdater.quitAndInstall(false, true);
433
+ return true;
434
+ });
435
+ } catch (error) {
436
+ appLog("updater init failed: " + (error instanceof Error ? error.message : String(error)));
437
+ }
438
+ }
package/next.config.ts CHANGED
@@ -75,34 +75,51 @@ const nextConfig = (phase: string): NextConfig => {
75
75
  { key: "Permissions-Policy", value: "camera=(), microphone=(), geolocation=()" },
76
76
  { key: "Content-Security-Policy", value: "default-src 'self'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; object-src 'none'; img-src 'self' data: blob: https:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self' ws: wss:; font-src 'self' data:" },
77
77
  ];
78
- const headers = [
79
- {
80
- source: "/:path*",
81
- headers: securityHeaders,
82
- },
83
- {
84
- // Hashed build output never changes, so browsers/proxies may cache it
85
- // immutably for a year and skip revalidation entirely.
86
- // NOTE: scoped to /_next/static/ only — broader /_next/ patterns would
87
- // shadow the HMR WebSocket in development.
88
- source: "/_next/static/:path*",
89
- headers: [
90
- { key: "Cache-Control", value: "public, max-age=31536000, immutable" },
91
- ],
92
- },
93
- {
94
- source: "/",
95
- headers: [
96
- { key: "Cache-Control", value: "private, no-cache, max-age=0, must-revalidate" },
97
- ],
98
- },
78
+ // /api/files streams workspace files whose document policy depends on the
79
+ // content type (strict CSP for SVG, the DOCX preview policy, none for
80
+ // media the browser renders natively). Config-level headers overwrite
81
+ // same-key headers set by route handlers, so the global CSP must not
82
+ // match these paths — it would both reopen script execution for SVG
83
+ // documents and block the same-origin <iframe> previews (DOCX/PDF) with
84
+ // frame-ancestors 'none'. The handler-agnostic protections stay here.
85
+ const fileResponseHeaders = [
86
+ { key: "X-Content-Type-Options", value: "nosniff" },
87
+ { key: "X-Frame-Options", value: "SAMEORIGIN" },
88
+ { key: "Referrer-Policy", value: "no-referrer" },
89
+ { key: "Permissions-Policy", value: "camera=(), microphone=(), geolocation=()" },
99
90
  ];
91
+ const globalRule = {
92
+ // Everything except /api/files (negative lookahead, same pattern style
93
+ // as the proxy matcher).
94
+ source: "/((?!api/files/).*)",
95
+ headers: securityHeaders,
96
+ };
97
+ const fileRule = {
98
+ source: "/api/files/:path*",
99
+ headers: fileResponseHeaders,
100
+ };
101
+ const rootNoCacheRule = {
102
+ source: "/",
103
+ headers: [
104
+ { key: "Cache-Control", value: "private, no-cache, max-age=0, must-revalidate" },
105
+ ],
106
+ };
107
+ const staticImmutableRule = {
108
+ // Hashed build output never changes, so browsers/proxies may cache it
109
+ // immutably for a year and skip revalidation entirely.
110
+ // NOTE: scoped to /_next/static/ only — broader /_next/ patterns would
111
+ // shadow the HMR WebSocket in development.
112
+ source: "/_next/static/:path*",
113
+ headers: [
114
+ { key: "Cache-Control", value: "public, max-age=31536000, immutable" },
115
+ ],
116
+ };
100
117
 
101
118
  // Dev chunks have stable URLs whose content changes in place; caching
102
119
  // them immutably would serve stale module factories after a restart.
103
- if (isDev) return [headers[0], headers[2]];
120
+ if (isDev) return [globalRule, fileRule, rootNoCacheRule];
104
121
 
105
- return headers;
122
+ return [globalRule, fileRule, staticImmutableRule, rootNoCacheRule];
106
123
  },
107
124
  env: {
108
125
  NEXT_PUBLIC_APP_VERSION: version,
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@37chengshan/ompweb",
3
- "version": "4.0.4",
3
+ "version": "4.0.7",
4
4
  "description": "Web UI for the oh-my-pi (omp) coding agent",
5
5
  "homepage": "https://github.com/kahme247/ompweb#readme",
6
6
  "repository": {
7
7
  "type": "git",
8
- "url": "git+https://github.com/kahme247/ompweb.git"
8
+ "url": "git+https://github.com/37chengshan/ompweb.git"
9
9
  },
10
10
  "bugs": {
11
11
  "url": "https://github.com/kahme247/ompweb/issues"
@@ -55,9 +55,11 @@
55
55
  "@xterm/addon-web-links": "^0.12.0",
56
56
  "@xterm/xterm": "^6.0.0",
57
57
  "cmdk": "^1.1.1",
58
+ "electron-updater": "^6.8.9",
58
59
  "lucide-react": "^1.27.0",
59
60
  "next": "16.3.0",
60
61
  "node-pty": "^1.2.0-beta.15",
62
+ "qrcode.react": "^4.2.0",
61
63
  "react": "^19.2.4",
62
64
  "react-dom": "^19.2.4",
63
65
  "react-syntax-highlighter": "^16.1.1",
@@ -104,7 +106,8 @@
104
106
  },
105
107
  "mac": {
106
108
  "target": [
107
- "dmg"
109
+ "dmg",
110
+ "zip"
108
111
  ],
109
112
  "category": "public.app-category.developer-tools",
110
113
  "icon": "public/icon.png"
@@ -115,6 +118,15 @@
115
118
  ],
116
119
  "icon": "public/icon.png"
117
120
  },
121
+ "nsis": {
122
+ "oneClick": false,
123
+ "allowToChangeInstallationDirectory": true,
124
+ "perMachine": false,
125
+ "createDesktopShortcut": true,
126
+ "createStartMenuShortcut": true,
127
+ "shortcutName": "OmpWeb",
128
+ "artifactName": "OmpWeb-Setup-${version}.${ext}"
129
+ },
118
130
  "linux": {
119
131
  "target": [
120
132
  "AppImage"
@@ -147,6 +159,15 @@
147
159
  "from": "templates/desktop/splash.mp4",
148
160
  "to": "splash.mp4"
149
161
  }
162
+ ],
163
+ "publish": [
164
+ {
165
+ "provider": "github",
166
+ "owner": "37chengshan",
167
+ "repo": "ompweb",
168
+ "private": false
169
+ }
150
170
  ]
151
- }
171
+ },
172
+ "author": "37chengshan"
152
173
  }