vansrouter 0.7.6 → 0.7.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 (304) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +12 -12
  3. package/app/.next-cli-build/build-manifest.json +3 -3
  4. package/app/.next-cli-build/prerender-manifest.json +3 -3
  5. package/app/.next-cli-build/react-loadable-manifest.json +2 -2
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  31. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  32. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  33. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  34. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  35. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  36. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  37. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  38. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  40. package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
  41. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  42. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  43. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +4 -4
  44. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  45. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  46. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  47. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
  48. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  49. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  50. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  51. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  52. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +1 -1
  53. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  54. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  55. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  56. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  57. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
  58. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +1 -1
  59. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +1 -1
  60. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  61. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  62. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  63. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  64. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  65. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  66. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  67. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  68. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  69. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
  70. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  71. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  72. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  73. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  74. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  75. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  76. package/app/.next-cli-build/server/app/callback.html +1 -1
  77. package/app/.next-cli-build/server/app/callback.rsc +4 -4
  78. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  79. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  80. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +4 -4
  81. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  82. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  83. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  84. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  85. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
  86. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  87. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  88. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  89. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  90. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  91. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  92. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  93. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  94. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  95. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +6 -6
  96. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  97. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  98. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  99. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  100. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  101. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  102. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  103. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  104. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  105. package/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
  106. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  107. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  108. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  109. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  110. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  111. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  112. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  113. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  114. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  115. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +6 -6
  116. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  117. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  118. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  119. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  120. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  121. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  122. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  123. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  124. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  125. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
  126. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  127. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  128. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  129. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  130. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  131. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  132. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  133. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
  134. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  135. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  136. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
  137. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  138. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  139. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  140. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  141. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  142. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  143. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  144. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  145. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  146. package/app/.next-cli-build/server/app/dashboard/profile.rsc +6 -6
  147. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  148. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  149. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  150. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  151. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  152. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  153. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  154. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  155. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  156. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
  157. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  158. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  159. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  160. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  161. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  162. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  163. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  164. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  165. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  166. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  167. package/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
  168. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  169. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  170. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  171. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  172. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  173. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  174. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  175. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  176. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  177. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
  178. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  179. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  180. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  181. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  182. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  183. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  184. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  185. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  186. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  187. package/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
  188. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  189. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  190. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  191. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  192. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  193. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  194. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  195. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  196. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  197. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  198. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  199. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  200. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  201. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  202. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  203. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  204. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  205. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  206. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  207. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  208. package/app/.next-cli-build/server/app/dashboard/skills.rsc +6 -6
  209. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  210. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  211. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  212. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  213. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
  214. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  215. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
  216. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  217. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  218. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
  219. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  220. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  221. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  222. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  223. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
  224. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  225. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +4 -4
  226. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  227. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  228. package/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
  229. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  230. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  231. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  232. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  233. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  234. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  235. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  236. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  237. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  238. package/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
  239. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  240. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  241. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  242. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  243. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  244. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  245. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  246. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  247. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  248. package/app/.next-cli-build/server/app/dashboard.rsc +6 -6
  249. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  250. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  251. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  252. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +6 -6
  253. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  254. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +4 -4
  255. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  256. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  257. package/app/.next-cli-build/server/app/landing.html +1 -1
  258. package/app/.next-cli-build/server/app/landing.rsc +4 -4
  259. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  260. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  261. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +4 -4
  262. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  263. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  264. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  265. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  266. package/app/.next-cli-build/server/app/login.html +1 -1
  267. package/app/.next-cli-build/server/app/login.rsc +5 -5
  268. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
  269. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  270. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +4 -4
  271. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  272. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  273. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  274. package/app/.next-cli-build/server/app/masuk/page_client-reference-manifest.js +1 -1
  275. package/app/.next-cli-build/server/app-paths-manifest.json +12 -12
  276. package/app/.next-cli-build/server/chunks/1536.js +1 -1
  277. package/app/.next-cli-build/server/chunks/2557.js +3 -3
  278. package/app/.next-cli-build/server/chunks/383.js +1 -1
  279. package/app/.next-cli-build/server/chunks/403.js +1 -1
  280. package/app/.next-cli-build/server/chunks/4418.js +16 -14
  281. package/app/.next-cli-build/server/chunks/4574.js +2 -2
  282. package/app/.next-cli-build/server/chunks/5006.js +1 -1
  283. package/app/.next-cli-build/server/chunks/5290.js +1 -1
  284. package/app/.next-cli-build/server/chunks/5598.js +1 -1
  285. package/app/.next-cli-build/server/chunks/6159.js +1 -1
  286. package/app/.next-cli-build/server/chunks/7916.js +1 -1
  287. package/app/.next-cli-build/server/chunks/9984.js +1 -1
  288. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  289. package/app/.next-cli-build/server/middleware-react-loadable-manifest.js +1 -1
  290. package/app/.next-cli-build/server/pages/404.html +1 -1
  291. package/app/.next-cli-build/server/pages/500.html +1 -1
  292. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  293. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  294. package/app/.next-cli-build/static/chunks/4385-7cd46625904c1b7b.js +1 -0
  295. package/app/.next-cli-build/static/chunks/{5737-b48f5e3f71caff94.js → 5737-db655a51294730ae.js} +1 -1
  296. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/token-saver/page-843674c44029b01b.js +1 -0
  297. package/app/.next-cli-build/static/chunks/{webpack-709c19c4ca395e42.js → webpack-79b65541449c3a45.js} +1 -1
  298. package/app/package.json +1 -1
  299. package/package.json +1 -1
  300. package/src/cli/tray/tray.ps1 +130 -79
  301. package/app/.next-cli-build/static/chunks/4385-7bad7f9144a8bd2d.js +0 -1
  302. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/token-saver/page-ab94afac28af93d9.js +0 -1
  303. /package/app/.next-cli-build/static/{hfSdoGhzBHU-MAopyKXHv → dnYXWBMmy78xJ8_-FfW5B}/_buildManifest.js +0 -0
  304. /package/app/.next-cli-build/static/{hfSdoGhzBHU-MAopyKXHv → dnYXWBMmy78xJ8_-FfW5B}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (()=>{"use strict";var e,t,r,o,a,n,c,i,f={},u={};function d(e){var t=u[e];if(void 0!==t)return t.exports;var r=u[e]={exports:{}},o=!0;try{f[e].call(r.exports,r,r.exports,d),o=!1}finally{o&&delete u[e]}return r.exports}d.m=f,e=[],d.O=(t,r,o,a)=>{if(r){a=a||0;for(var n=e.length;n>0&&e[n-1][2]>a;n--)e[n]=e[n-1];e[n]=[r,o,a];return}for(var c=1/0,n=0;n<e.length;n++){for(var[r,o,a]=e[n],i=!0,f=0;f<r.length;f++)(!1&a||c>=a)&&Object.keys(d.O).every(e=>d.O[e](r[f]))?r.splice(f--,1):(i=!1,a<c&&(c=a));if(i){e.splice(n--,1);var u=o();void 0!==u&&(t=u)}}return t},d.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return d.d(t,{a:t}),t},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,o){if(1&o&&(e=this(e)),8&o||"object"==typeof e&&e&&(4&o&&e.__esModule||16&o&&"function"==typeof e.then))return e;var a=Object.create(null);d.r(a);var n={};t=t||[null,r({}),r([]),r(r)];for(var c=2&o&&e;"object"==typeof c&&!~t.indexOf(c);c=r(c))Object.getOwnPropertyNames(c).forEach(t=>n[t]=()=>e[t]);return n.default=()=>e,d.d(a,n),a},d.d=(e,t)=>{for(var r in t)d.o(t,r)&&!d.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce((t,r)=>(d.f[r](e,t),t),[])),d.u=e=>7236===e?"static/chunks/7236-5d192cf1373fb7b7.js":5737===e?"static/chunks/5737-b48f5e3f71caff94.js":"static/chunks/"+e+"."+({406:"11a045def1d3b77b",1049:"3def0dd7804a4e6e",1409:"b9b9883529318ba4",1567:"a91d2debb1187f20",2884:"39a847a6de39184f",3124:"46a9db1d92ccc4c2",3245:"d0758b9d4b1b5e8c",3257:"24031050423940b5",3386:"1d120faabbf9d807",3657:"648ef7012a4a028b",5560:"1044547418430d16",5709:"b74981916470568d",6474:"3878f14b16c23d75",6909:"bd99d4bad9fa33f9",8667:"1195f7bb7f8176aa",9078:"7b8723a1eed306a9",9146:"71dafc04b1c0ad03"})[e]+".js",d.miniCssF=e=>{},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o={},d.l=(e,t,r,a)=>{if(o[e])return void o[e].push(t);if(void 0!==r)for(var n,c,i=document.getElementsByTagName("script"),f=0;f<i.length;f++){var u=i[f];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")=="_N_E:"+r){n=u;break}}n||(c=!0,(n=document.createElement("script")).charset="utf-8",n.timeout=120,d.nc&&n.setAttribute("nonce",d.nc),n.setAttribute("data-webpack","_N_E:"+r),n.src=d.tu(e)),o[e]=[t];var l=(t,r)=>{n.onerror=n.onload=null,clearTimeout(s);var a=o[e];if(delete o[e],n.parentNode&&n.parentNode.removeChild(n),a&&a.forEach(e=>e(r)),t)return t(r)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:n}),12e4);n.onerror=l.bind(null,n.onerror),n.onload=l.bind(null,n.onload),c&&document.head.appendChild(n)},d.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.tt=()=>(void 0===a&&(a={createScriptURL:e=>e},"u">typeof trustedTypes&&trustedTypes.createPolicy&&(a=trustedTypes.createPolicy("nextjs#bundler",a))),a),d.tu=e=>d.tt().createScriptURL(e),d.p="/_next/",n={8068:0,6525:0,186:0,2554:0},d.f.j=(e,t)=>{var r=d.o(n,e)?n[e]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(186|2554|6525|8068)$/.test(e))n[e]=0;else{var o=new Promise((t,o)=>r=n[e]=[t,o]);t.push(r[2]=o);var a=d.p+d.u(e),c=Error();d.l(a,t=>{if(d.o(n,e)&&(0!==(r=n[e])&&(n[e]=void 0),r)){var o=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;c.message="Loading chunk "+e+" failed.\n("+o+": "+a+")",c.name="ChunkLoadError",c.type=o,c.request=a,r[1](c)}},"chunk-"+e,e)}},d.O.j=e=>0===n[e],c=(e,t)=>{var r,o,[a,c,i]=t,f=0;if(a.some(e=>0!==n[e])){for(r in c)d.o(c,r)&&(d.m[r]=c[r]);if(i)var u=i(d)}for(e&&e(t);f<a.length;f++)o=a[f],d.o(n,o)&&n[o]&&n[o][0](),n[o]=0;return d.O(u)},(i=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),i.push=c.bind(null,i.push.bind(i))})();
1
+ (()=>{"use strict";var e,t,r,o,a,n,c,i,f={},u={};function d(e){var t=u[e];if(void 0!==t)return t.exports;var r=u[e]={exports:{}},o=!0;try{f[e].call(r.exports,r,r.exports,d),o=!1}finally{o&&delete u[e]}return r.exports}d.m=f,e=[],d.O=(t,r,o,a)=>{if(r){a=a||0;for(var n=e.length;n>0&&e[n-1][2]>a;n--)e[n]=e[n-1];e[n]=[r,o,a];return}for(var c=1/0,n=0;n<e.length;n++){for(var[r,o,a]=e[n],i=!0,f=0;f<r.length;f++)(!1&a||c>=a)&&Object.keys(d.O).every(e=>d.O[e](r[f]))?r.splice(f--,1):(i=!1,a<c&&(c=a));if(i){e.splice(n--,1);var u=o();void 0!==u&&(t=u)}}return t},d.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return d.d(t,{a:t}),t},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,o){if(1&o&&(e=this(e)),8&o||"object"==typeof e&&e&&(4&o&&e.__esModule||16&o&&"function"==typeof e.then))return e;var a=Object.create(null);d.r(a);var n={};t=t||[null,r({}),r([]),r(r)];for(var c=2&o&&e;"object"==typeof c&&!~t.indexOf(c);c=r(c))Object.getOwnPropertyNames(c).forEach(t=>n[t]=()=>e[t]);return n.default=()=>e,d.d(a,n),a},d.d=(e,t)=>{for(var r in t)d.o(t,r)&&!d.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce((t,r)=>(d.f[r](e,t),t),[])),d.u=e=>7236===e?"static/chunks/7236-5d192cf1373fb7b7.js":5737===e?"static/chunks/5737-db655a51294730ae.js":"static/chunks/"+e+"."+({406:"11a045def1d3b77b",1049:"3def0dd7804a4e6e",1409:"b9b9883529318ba4",1567:"a91d2debb1187f20",2884:"39a847a6de39184f",3124:"46a9db1d92ccc4c2",3245:"d0758b9d4b1b5e8c",3257:"24031050423940b5",3386:"1d120faabbf9d807",3657:"648ef7012a4a028b",5560:"1044547418430d16",5709:"b74981916470568d",6474:"3878f14b16c23d75",6909:"bd99d4bad9fa33f9",8667:"1195f7bb7f8176aa",9078:"7b8723a1eed306a9",9146:"71dafc04b1c0ad03"})[e]+".js",d.miniCssF=e=>{},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o={},d.l=(e,t,r,a)=>{if(o[e])return void o[e].push(t);if(void 0!==r)for(var n,c,i=document.getElementsByTagName("script"),f=0;f<i.length;f++){var u=i[f];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")=="_N_E:"+r){n=u;break}}n||(c=!0,(n=document.createElement("script")).charset="utf-8",n.timeout=120,d.nc&&n.setAttribute("nonce",d.nc),n.setAttribute("data-webpack","_N_E:"+r),n.src=d.tu(e)),o[e]=[t];var l=(t,r)=>{n.onerror=n.onload=null,clearTimeout(s);var a=o[e];if(delete o[e],n.parentNode&&n.parentNode.removeChild(n),a&&a.forEach(e=>e(r)),t)return t(r)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:n}),12e4);n.onerror=l.bind(null,n.onerror),n.onload=l.bind(null,n.onload),c&&document.head.appendChild(n)},d.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.tt=()=>(void 0===a&&(a={createScriptURL:e=>e},"u">typeof trustedTypes&&trustedTypes.createPolicy&&(a=trustedTypes.createPolicy("nextjs#bundler",a))),a),d.tu=e=>d.tt().createScriptURL(e),d.p="/_next/",n={8068:0,6525:0,186:0,2554:0},d.f.j=(e,t)=>{var r=d.o(n,e)?n[e]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(186|2554|6525|8068)$/.test(e))n[e]=0;else{var o=new Promise((t,o)=>r=n[e]=[t,o]);t.push(r[2]=o);var a=d.p+d.u(e),c=Error();d.l(a,t=>{if(d.o(n,e)&&(0!==(r=n[e])&&(n[e]=void 0),r)){var o=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;c.message="Loading chunk "+e+" failed.\n("+o+": "+a+")",c.name="ChunkLoadError",c.type=o,c.request=a,r[1](c)}},"chunk-"+e,e)}},d.O.j=e=>0===n[e],c=(e,t)=>{var r,o,[a,c,i]=t,f=0;if(a.some(e=>0!==n[e])){for(r in c)d.o(c,r)&&(d.m[r]=c[r]);if(i)var u=i(d)}for(e&&e(t);f<a.length;f++)o=a[f],d.o(n,o)&&n[o]&&n[o][0](),n[o]=0;return d.O(u)},(i=self.webpackChunk_N_E=self.webpackChunk_N_E||[]).forEach(c.bind(null,0)),i.push=c.bind(null,i.push.bind(i))})();
package/app/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vansrouter-app",
3
- "version": "0.7.6",
3
+ "version": "0.7.7",
4
4
  "description": "9Router web dashboard",
5
5
  "private": true,
6
6
  "scripts": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vansrouter",
3
- "version": "0.7.6",
3
+ "version": "0.7.7",
4
4
  "description": "VansRouter CLI - Start and manage VansRouter server",
5
5
  "bin": {
6
6
  "vansrouter": "./cli.js"
@@ -1,79 +1,130 @@
1
- # 9Router tray icon for Windows using NotifyIcon
2
- # IPC: stdin JSON commands, stdout JSON events
3
- param([string]$IconPath, [string]$Tooltip)
4
-
5
- Add-Type -AssemblyName System.Windows.Forms
6
- Add-Type -AssemblyName System.Drawing
7
-
8
- $ErrorActionPreference = "Stop"
9
- [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
10
- [Console]::InputEncoding = [System.Text.Encoding]::UTF8
11
- $OutputEncoding = [System.Text.Encoding]::UTF8
12
-
13
- $script:notifyIcon = New-Object System.Windows.Forms.NotifyIcon
14
- $script:notifyIcon.Icon = New-Object System.Drawing.Icon($IconPath)
15
- $script:notifyIcon.Text = $Tooltip
16
- $script:notifyIcon.Visible = $true
17
-
18
- $script:menu = New-Object System.Windows.Forms.ContextMenuStrip
19
- $script:notifyIcon.ContextMenuStrip = $script:menu
20
- $script:items = @()
21
-
22
- function Write-Event($obj) {
23
- $json = $obj | ConvertTo-Json -Compress
24
- [Console]::Out.WriteLine($json)
25
- [Console]::Out.Flush()
26
- }
27
-
28
- function Add-MenuItem($index, $title, $enabled) {
29
- $item = New-Object System.Windows.Forms.ToolStripMenuItem
30
- $item.Text = $title
31
- $item.Enabled = $enabled
32
- $idx = $index
33
- $item.Add_Click({ Write-Event @{ type = "click"; index = $idx } }.GetNewClosure())
34
- $script:menu.Items.Add($item) | Out-Null
35
- $script:items += $item
36
- }
37
-
38
- function Update-MenuItem($index, $title, $enabled) {
39
- if ($index -lt $script:items.Count) {
40
- $script:items[$index].Text = $title
41
- $script:items[$index].Enabled = $enabled
42
- }
43
- }
44
-
45
- function Set-Tooltip($text) {
46
- # NotifyIcon.Text max 63 chars
47
- if ($text.Length -gt 63) { $text = $text.Substring(0, 63) }
48
- $script:notifyIcon.Text = $text
49
- }
50
-
51
- # Background reader thread polls stdin via timer on UI thread
52
- $script:timer = New-Object System.Windows.Forms.Timer
53
- $script:timer.Interval = 100
54
- $script:timer.Add_Tick({
55
- try {
56
- while ([Console]::In.Peek() -ne -1) {
57
- $line = [Console]::In.ReadLine()
58
- if ([string]::IsNullOrWhiteSpace($line)) { continue }
59
- $cmd = $line | ConvertFrom-Json
60
- switch ($cmd.action) {
61
- "add-item" { Add-MenuItem $cmd.index $cmd.title $cmd.enabled }
62
- "update-item" { Update-MenuItem $cmd.index $cmd.title $cmd.enabled }
63
- "set-tooltip" { Set-Tooltip $cmd.text }
64
- "ready" { Write-Event @{ type = "ready" } }
65
- "kill" {
66
- $script:notifyIcon.Visible = $false
67
- $script:notifyIcon.Dispose()
68
- [System.Windows.Forms.Application]::Exit()
69
- }
70
- }
71
- }
72
- } catch {
73
- Write-Event @{ type = "error"; message = $_.Exception.Message }
74
- }
75
- })
76
- $script:timer.Start()
77
-
78
- Write-Event @{ type = "started" }
79
- [System.Windows.Forms.Application]::Run()
1
+ # 9Router tray icon for Windows using NotifyIcon
2
+ # IPC: stdin JSON commands, stdout JSON events
3
+ param([string]$IconPath, [string]$Tooltip)
4
+
5
+ $ErrorActionPreference = "Stop"
6
+
7
+ Add-Type @"
8
+ using System;
9
+ using System.Runtime.InteropServices;
10
+
11
+ public static class WinDpiAwareness {
12
+ public static IntPtr PerMonitorAwareV2 { get { return new IntPtr(-4); } }
13
+ public static IntPtr PerMonitorAware { get { return new IntPtr(-3); } }
14
+
15
+ [DllImport("user32.dll")]
16
+ public static extern bool SetProcessDpiAwarenessContext(IntPtr value);
17
+
18
+ [DllImport("user32.dll")]
19
+ public static extern IntPtr SetThreadDpiAwarenessContext(IntPtr value);
20
+
21
+ [DllImport("shcore.dll")]
22
+ public static extern int SetProcessDpiAwareness(int value);
23
+
24
+ [DllImport("user32.dll")]
25
+ public static extern bool SetProcessDPIAware();
26
+ }
27
+ "@
28
+
29
+ function Enable-HighDpiAwareness {
30
+ $contexts = @(
31
+ [WinDpiAwareness]::PerMonitorAwareV2,
32
+ [WinDpiAwareness]::PerMonitorAware
33
+ )
34
+
35
+ foreach ($context in $contexts) {
36
+ try {
37
+ if ([WinDpiAwareness]::SetProcessDpiAwarenessContext($context)) { break }
38
+ } catch {}
39
+ }
40
+
41
+ try { [WinDpiAwareness]::SetProcessDpiAwareness(2) | Out-Null } catch {}
42
+ try { [WinDpiAwareness]::SetProcessDPIAware() | Out-Null } catch {}
43
+
44
+ foreach ($context in $contexts) {
45
+ try {
46
+ $previous = [WinDpiAwareness]::SetThreadDpiAwarenessContext($context)
47
+ if ($previous -ne [IntPtr]::Zero) { break }
48
+ } catch {}
49
+ }
50
+ }
51
+
52
+ Enable-HighDpiAwareness
53
+
54
+ Add-Type -AssemblyName System.Windows.Forms
55
+ Add-Type -AssemblyName System.Drawing
56
+
57
+ [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
58
+ [Console]::InputEncoding = [System.Text.Encoding]::UTF8
59
+ $OutputEncoding = [System.Text.Encoding]::UTF8
60
+
61
+ [System.Windows.Forms.Application]::EnableVisualStyles()
62
+ [System.Windows.Forms.Application]::SetCompatibleTextRenderingDefault($false)
63
+
64
+ $script:notifyIcon = New-Object System.Windows.Forms.NotifyIcon
65
+ $script:notifyIcon.Icon = New-Object System.Drawing.Icon($IconPath)
66
+ $script:notifyIcon.Text = $Tooltip
67
+ $script:notifyIcon.Visible = $true
68
+
69
+ $script:menu = New-Object System.Windows.Forms.ContextMenuStrip
70
+ $script:notifyIcon.ContextMenuStrip = $script:menu
71
+ $script:items = @()
72
+
73
+ function Write-Event($obj) {
74
+ $json = $obj | ConvertTo-Json -Compress
75
+ [Console]::Out.WriteLine($json)
76
+ [Console]::Out.Flush()
77
+ }
78
+
79
+ function Add-MenuItem($index, $title, $enabled) {
80
+ $item = New-Object System.Windows.Forms.ToolStripMenuItem
81
+ $item.Text = $title
82
+ $item.Enabled = $enabled
83
+ $idx = $index
84
+ $item.Add_Click({ Write-Event @{ type = "click"; index = $idx } }.GetNewClosure())
85
+ $script:menu.Items.Add($item) | Out-Null
86
+ $script:items += $item
87
+ }
88
+
89
+ function Update-MenuItem($index, $title, $enabled) {
90
+ if ($index -lt $script:items.Count) {
91
+ $script:items[$index].Text = $title
92
+ $script:items[$index].Enabled = $enabled
93
+ }
94
+ }
95
+
96
+ function Set-Tooltip($text) {
97
+ # NotifyIcon.Text max 63 chars
98
+ if ($text.Length -gt 63) { $text = $text.Substring(0, 63) }
99
+ $script:notifyIcon.Text = $text
100
+ }
101
+
102
+ # Background reader thread polls stdin via timer on UI thread
103
+ $script:timer = New-Object System.Windows.Forms.Timer
104
+ $script:timer.Interval = 100
105
+ $script:timer.Add_Tick({
106
+ try {
107
+ while ([Console]::In.Peek() -ne -1) {
108
+ $line = [Console]::In.ReadLine()
109
+ if ([string]::IsNullOrWhiteSpace($line)) { continue }
110
+ $cmd = $line | ConvertFrom-Json
111
+ switch ($cmd.action) {
112
+ "add-item" { Add-MenuItem $cmd.index $cmd.title $cmd.enabled }
113
+ "update-item" { Update-MenuItem $cmd.index $cmd.title $cmd.enabled }
114
+ "set-tooltip" { Set-Tooltip $cmd.text }
115
+ "ready" { Write-Event @{ type = "ready" } }
116
+ "kill" {
117
+ $script:notifyIcon.Visible = $false
118
+ $script:notifyIcon.Dispose()
119
+ [System.Windows.Forms.Application]::Exit()
120
+ }
121
+ }
122
+ }
123
+ } catch {
124
+ Write-Event @{ type = "error"; message = $_.Exception.Message }
125
+ }
126
+ })
127
+ $script:timer.Start()
128
+
129
+ Write-Event @{ type = "started" }
130
+ [System.Windows.Forms.Application]::Run()