@rabbi696/ezrouter 0.5.63 → 0.5.64

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 (309) 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 +2 -2
  4. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/convoy/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/error-log/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/pxpipe/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/routing-health/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  32. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  33. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  34. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  35. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  36. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  37. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  38. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  39. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  41. package/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  42. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  43. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  44. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  45. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  46. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  47. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  48. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  49. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  50. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  51. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  52. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  53. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  54. package/app/.next-cli-build/server/app/callback.html +1 -1
  55. package/app/.next-cli-build/server/app/callback.rsc +3 -3
  56. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  57. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  58. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  59. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  60. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  61. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  62. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  63. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  64. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  65. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  66. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  67. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  68. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  69. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  70. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  71. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  72. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  73. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  74. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  75. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  76. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  77. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  78. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  79. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  80. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  81. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  82. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  83. package/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  84. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  85. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  86. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  87. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  88. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  89. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  90. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  91. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  92. package/app/.next-cli-build/server/app/dashboard/convoy.html +1 -1
  93. package/app/.next-cli-build/server/app/dashboard/convoy.rsc +5 -5
  94. package/app/.next-cli-build/server/app/dashboard/convoy.segments/!KGRhc2hib2FyZCk/dashboard/convoy/__PAGE__.segment.rsc +2 -2
  95. package/app/.next-cli-build/server/app/dashboard/convoy.segments/!KGRhc2hib2FyZCk/dashboard/convoy.segment.rsc +1 -1
  96. package/app/.next-cli-build/server/app/dashboard/convoy.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  97. package/app/.next-cli-build/server/app/dashboard/convoy.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  98. package/app/.next-cli-build/server/app/dashboard/convoy.segments/_full.segment.rsc +5 -5
  99. package/app/.next-cli-build/server/app/dashboard/convoy.segments/_head.segment.rsc +1 -1
  100. package/app/.next-cli-build/server/app/dashboard/convoy.segments/_index.segment.rsc +3 -3
  101. package/app/.next-cli-build/server/app/dashboard/convoy.segments/_tree.segment.rsc +1 -1
  102. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  103. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  104. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  105. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  106. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  107. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  108. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  109. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  110. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  111. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  112. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  113. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  114. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  115. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  116. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  117. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  118. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  119. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  120. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  121. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  122. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  123. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  124. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  125. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  126. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  127. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  128. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  129. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  130. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  131. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  132. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  133. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  134. package/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  135. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  136. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  137. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  138. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  139. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  140. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  141. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  142. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  143. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  144. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  145. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  146. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  147. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  148. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  149. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  150. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  151. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  152. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  153. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  154. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  155. package/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  156. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  157. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  158. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  159. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  160. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  161. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  162. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  163. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  164. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  165. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  166. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  167. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  168. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  169. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  170. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  171. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  172. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  173. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  174. package/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  175. package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
  176. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  177. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  178. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  179. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  180. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
  181. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  182. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
  183. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  184. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  185. package/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  186. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  187. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  188. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  189. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  190. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  191. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  192. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  193. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  194. package/app/.next-cli-build/server/app/dashboard/routing-health.html +1 -1
  195. package/app/.next-cli-build/server/app/dashboard/routing-health.rsc +5 -5
  196. package/app/.next-cli-build/server/app/dashboard/routing-health.segments/!KGRhc2hib2FyZCk/dashboard/routing-health/__PAGE__.segment.rsc +2 -2
  197. package/app/.next-cli-build/server/app/dashboard/routing-health.segments/!KGRhc2hib2FyZCk/dashboard/routing-health.segment.rsc +1 -1
  198. package/app/.next-cli-build/server/app/dashboard/routing-health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  199. package/app/.next-cli-build/server/app/dashboard/routing-health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  200. package/app/.next-cli-build/server/app/dashboard/routing-health.segments/_full.segment.rsc +5 -5
  201. package/app/.next-cli-build/server/app/dashboard/routing-health.segments/_head.segment.rsc +1 -1
  202. package/app/.next-cli-build/server/app/dashboard/routing-health.segments/_index.segment.rsc +3 -3
  203. package/app/.next-cli-build/server/app/dashboard/routing-health.segments/_tree.segment.rsc +1 -1
  204. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  205. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  206. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  207. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  208. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  209. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  210. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  211. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  212. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  213. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  214. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  215. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  216. package/app/.next-cli-build/server/app/dashboard/skills.rsc +5 -5
  217. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  218. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  219. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  220. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  221. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +5 -5
  222. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  223. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +3 -3
  224. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  225. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  226. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
  227. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  228. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  229. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  230. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  231. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
  232. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  233. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
  234. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  235. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  236. package/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  237. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  238. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  239. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  240. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  241. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  242. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  243. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  244. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  245. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  246. package/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  247. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  248. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  249. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  250. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  251. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  252. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  253. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  254. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  255. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  256. package/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  257. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  258. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  259. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  260. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  261. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  262. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  263. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  264. package/app/.next-cli-build/server/app/index.html +1 -1
  265. package/app/.next-cli-build/server/app/index.rsc +3 -3
  266. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  267. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  268. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  269. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  270. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  271. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  272. package/app/.next-cli-build/server/app/landing.html +1 -1
  273. package/app/.next-cli-build/server/app/landing.rsc +3 -3
  274. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  275. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  276. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  277. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  278. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  279. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  280. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  281. package/app/.next-cli-build/server/app/login.html +1 -1
  282. package/app/.next-cli-build/server/app/login.rsc +4 -4
  283. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  284. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  285. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  286. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  287. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  288. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  289. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  290. package/app/.next-cli-build/server/app-paths-manifest.json +12 -12
  291. package/app/.next-cli-build/server/chunks/4843.js +1 -1
  292. package/app/.next-cli-build/server/chunks/5767.js +1 -1
  293. package/app/.next-cli-build/server/chunks/7591.js +1 -1
  294. package/app/.next-cli-build/server/chunks/7775.js +1 -1
  295. package/app/.next-cli-build/server/chunks/7889.js +1 -1
  296. package/app/.next-cli-build/server/chunks/8327.js +1 -1
  297. package/app/.next-cli-build/server/chunks/921.js +1 -1
  298. package/app/.next-cli-build/server/chunks/9212.js +1 -1
  299. package/app/.next-cli-build/server/chunks/9356.js +1 -1
  300. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  301. package/app/.next-cli-build/server/pages/404.html +1 -1
  302. package/app/.next-cli-build/server/pages/500.html +1 -1
  303. package/app/.next-cli-build/static/chunks/{1321-d7d11cd830a1611a.js → 1321-fa186e43b406bed1.js} +1 -1
  304. package/app/package.json +1 -1
  305. package/app/public/CHANGELOG.md +709 -0
  306. package/package.json +1 -1
  307. package/src/cli/tray/icon.png +0 -0
  308. /package/app/.next-cli-build/static/{XZvk7T3YWpwSCjJjC6sFc → JSyG0O-ORSI2Dh8DkXFoF}/_buildManifest.js +0 -0
  309. /package/app/.next-cli-build/static/{XZvk7T3YWpwSCjJjC6sFc → JSyG0O-ORSI2Dh8DkXFoF}/_ssgManifest.js +0 -0
@@ -0,0 +1,709 @@
1
+ # v0.5.62 (2026-08-21)
2
+
3
+ ## Breaking Changes
4
+ - **Rebranding**: Complete rebrand from `9router` to `EzRouter` for independent operation
5
+ - Package name changed to `@rabbi696/ezrouter` on npm
6
+ - Binary command changed from `9router` to `ezrouter`
7
+ - Default port changed from `20128` to `20126`
8
+ - Data directory changed from `~/.9router` to `~/.ezrouter` (Windows: `%APPDATA%/ezrouter`)
9
+
10
+ ## Features
11
+ - **Isolation**: Full runtime isolation to run alongside `9router` without conflicts
12
+ - Separate authentication cookies (`ezrouter_auth_token` vs `auth_token`)
13
+ - Separate MITM certificates (`EzRouter MITM Root CA` vs `9Router MITM Root CA`)
14
+ - Separate data directories and process management
15
+ - Separate ports (20126 vs 20128) for concurrent operation
16
+ - **Branding**: Updated all user-facing branding to EzRouter
17
+ - Dashboard title, login screen, sidebar logo
18
+ - Browser page title and favicon
19
+ - CLI help text and error messages
20
+ - Removed upstream 9Remote and 9English sidebar links
21
+
22
+ ## Fixes
23
+ - **Auth**: Fixed cross-logout issue between `9router` and `ezrouter` on localhost
24
+ - Renamed session cookie from `auth_token` to `ezrouter_auth_token`
25
+ - Both apps can now maintain separate login sessions on the same machine
26
+ - **MITM**: Fixed MITM proxy conflict when both apps run simultaneously
27
+ - Changed default MITM router base from `http://localhost:20128` to `http://localhost:20126`
28
+ - Updated MITM Root CA name to `EzRouter MITM Root CA`
29
+ - Updated certificate filenames to `ezrouter-root-ca.crt`
30
+ - Changed hosts file temp filenames from `.9router.{new,bak}` to `.ezrouter.{new,bak}`
31
+ - **Updater**: Fixed npm package name and install commands in auto-updater
32
+ - Changed from `9router` to `@rabbi696/ezrouter`
33
+ - Updated install command to `npm i -g @rabbi696/ezrouter@latest --prefer-online`
34
+
35
+ ## Documentation
36
+ - **README**: Updated CLI README with correct paths and package name
37
+ - Fixed data location paths (`~/.ezrouter` instead of `~/.9router`)
38
+ - Updated Docker image references
39
+ - Changed npm install instructions to `@rabbi696/ezrouter`
40
+ - Updated homepage URL to `https://ezrouter.golamrabbi.dev`
41
+
42
+ ## Internal
43
+ - **Package**: Updated CLI package metadata
44
+ - Changed package name to `@rabbi696/ezrouter`
45
+ - Updated homepage URL to `https://ezrouter.golamrabbi.dev`
46
+ - Updated description to reflect port 20126
47
+ - Removed `9router` binary alias from bin entry
48
+ - **Database**: Updated all hardcoded path references
49
+ - Changed `~/.9router` to `~/.ezrouter` across codebase
50
+ - Updated SAML issuer default from `urn:9router:sp` to `urn:ezrouter:sp`
51
+ - Updated internal variable names and comments
52
+ - **Branding**: Updated logo and visual identity
53
+ - Changed sidebar icon from material `hub` to `/logo.png` with `/favicon.svg` fallback
54
+ - Updated page title to "EzRouter - AI Infrastructure Management"
55
+ - Updated login screen branding and password reset hint text
56
+
57
+ ---
58
+
59
+ # v0.5.61 (2026-08-21)
60
+
61
+ ## Internal
62
+ - Version bump for npm publish retry
63
+
64
+ ---
65
+
66
+ # v0.5.60 (2026-08-21)
67
+
68
+ ## Internal
69
+ - Version bump for npm metadata update
70
+
71
+ ---
72
+
73
+ # v0.5.55 (2026-08-14)
74
+
75
+ ## Features
76
+ - **Auth**: native SAML 2.0 SSO alongside OIDC — AuthnRequest generation, ACS
77
+ assertion handling, SP metadata export, admin config test, replay-protected
78
+ via a `saml_state` cookie matched against `InResponseTo`
79
+ - **Providers**: add Alibaba Token Plan (`token-plan.ap-southeast-1`) — the
80
+ fourth Alibaba key type, Singapore-only and OpenAI-compatible transport only
81
+ - **Providers**: add `glm-5.3` to GLM Coding and GLM (China)
82
+ - **Providers**: Kimchi accepts API keys as well as OAuth (dual auth), with a
83
+ working Test Connection for both modes
84
+ - **Antigravity**: add Gemini 3.7 Flash and its tiered high/medium/low variants
85
+ (also in the Gemini registry) with pricing and quota tracking
86
+ - **TTS**: add Fish Audio — model id travels in an HTTP `model` header, voice
87
+ is a `reference_id` (preset or cloned voice model)
88
+ - **OpenCode-Go**: route by request format via declared transports instead of
89
+ forcing every client into `/messages` — Codex/OpenAI clients no longer pay a
90
+ lossy Responses→OpenAI→Claude double translation. Per-model `supportedFormats`
91
+ guard; the bespoke executor is gone (its shared `_lastModel` cache could cross
92
+ auth headers between concurrent requests)
93
+ - **Usage**: dedup + cache Claude quota calls (120s TTL keyed by access token,
94
+ in-flight promise dedup, last-good read on soft failure) to stop multiple
95
+ tabs tripping 429; manual refresh (↻) sends `force=1` to bypass the cache
96
+
97
+ ## Fixes
98
+ - **Docker**: ship `sql.js` in the image so the pure-JS DB fallback can start —
99
+ file tracing carried the package's JS without `dist/sql-wasm.wasm`, so a
100
+ container with no native driver aborted with ENOENT and never got a database
101
+ (#3248)
102
+ - **Usage**: read Gemini `usageMetadata` out of the antigravity `{ response }`
103
+ envelope — every non-streaming antigravity request logged `IN 0 | OUT 0`
104
+ (#3260)
105
+ - **Claude**: re-anchor passthrough cache breakpoints — the client's own
106
+ `cache_control` markers point at pre-normalization offsets, so the tail was
107
+ re-cached every request. Last system block and last tool pinned at 1h TTL,
108
+ last assistant turn at 5m, mid-conversation system messages folded into the
109
+ neighbouring user turn instead of hoisted into `body.system`
110
+ - **Combos**: detect images from Hermes and attachment payloads (`images[]`,
111
+ `experimental_attachments`, message-level `image_url`/`audio_url`, inline
112
+ `data:` URIs) so the Vision Adapter auto-switch fires for Hermes/Ollama/
113
+ Vercel AI SDK shapes
114
+ - **Kiro**: intercept chat via `x-amz-target` — Kiro IDE 1.0.228+ moved
115
+ `GenerateAssistantResponse` to `POST /` + header, bypassing MITM. Also emit
116
+ the now-mandatory initial-response frame and map the `auto` model slot
117
+ - **Kiro**: report real output tokens and stop discarding usable turns
118
+ - **Qoder**: detect billing blocks at stream start and return a synthetic 403
119
+ so combo/account fallback triggers instead of leaking the error into chat
120
+ - **Antigravity**: strip competitive system prompts (Zed IDE's Claude-agent
121
+ prompt) that Antigravity flags with a 429 Quota Exhausted
122
+ - **OpenCode**: send the official client fingerprint on free-tier requests so
123
+ the Console stops classifying traffic as unidentified and rate-limiting it;
124
+ session id resolves conversation-stable to preserve prompt caching
125
+ - **Responses**: don't close the message on an empty `tool_calls` array — some
126
+ providers attach one to every chunk, and the truthy check ended the message
127
+ on the first content token (#3234)
128
+ - **Translator**: preserve `prompt_cache_key` when converting chat to responses
129
+ - **Models**: expose snake_case token limits on `/v1/models`
130
+ - **Combos**: strip `stream_options` from the Fusion panel fan-out to avoid a
131
+ DeepSeek 400 (#3024); raise the dashboard model-test probe budget to 1024 and
132
+ soft-pass reasoning-only responses (#3010)
133
+ - **Headroom**: the toggle reflects the `headroomEnabled` setting even when the
134
+ proxy is down — it previously showed OFF while the engine kept calling
135
+ `/v1/compress`; proxy status stays visible via the status chip
136
+ - **Hermes**: add the `api_key` parameter to the model block in YAML config
137
+ - **Providers**: add llm7 to provider test support
138
+
139
+ ## Docs
140
+ - **i18n**: add Spanish, French, and Brazilian Portuguese README translations
141
+
142
+ ## Security
143
+ - **Real IP**: `x-9r-real-ip` and the Host fallback were trusted from
144
+ client-controlled headers whenever `custom-server.js` was not in the request
145
+ path (`npm run start`, `start:bun`), letting a remote caller pose as local to
146
+ skip API key auth and reach `LOCAL_ONLY_PATHS` (`/api/mcp/*`,
147
+ `/api/tunnel/enable`, `/api/auth/reset-password`). The server now stamps a
148
+ per-process `x-9r-peer-token` on every request it sanitizes and only trusts
149
+ `x-9r-real-ip` behind it — falling back to Host in development and failing
150
+ closed in production (GHSA-pjm4-8fpg-f9p6). Also fixes IPv6 loopback
151
+ detection (`::1`, `::ffff:127.0.0.1`) and routes `npm run start` /
152
+ `start:bun` through `custom-server.js`
153
+ - **Search**: `resolveBaseUrl()` rejects client-supplied non-public baseUrls
154
+ (SSRF guard on `/v1/search`)
155
+ - **Login**: fresh-install remote login with the default password returns 403
156
+ without issuing a JWT
157
+ - **Usage**: `/api/usage/request-details` redacts request/response payloads
158
+
159
+ # v0.5.50 (2026-08-05)
160
+
161
+ ## Features
162
+ - **Providers**: add TokenRouter (300+ models via OpenAI-compatible gateway) with
163
+ exact per-model pricing for 110 models and `reasoning_effort` thinking config
164
+ - **Providers**: add Self-hosted STT / TTS / Embedding — point 9Router at your own
165
+ OpenAI-compatible speech and embedding servers (whisper.cpp, faster-whisper,
166
+ Kokoro-FastAPI, llama-server, vLLM, Infinity). Unlike the named cloud providers
167
+ these read `baseUrl` per connection, so one provider can front several machines
168
+ - **Combos**: default-enable vision/audio capacity adapter (auto-routes to a
169
+ vision/audio-capable model when the target lacks that capability, falling back
170
+ to `oc/mimo-v2.5-free`), wired into chat handler routing
171
+ - **Endpoint**: auto-provision a "Default Key" for first-time users so `/v1`
172
+ works without a manual dashboard step
173
+ - **Codex**: support GPT-5.6 Max/Ultra reasoning-level overrides (cx/ routes only)
174
+ - **Qoder**: support PAT (Personal Access Token) connections end-to-end, alongside
175
+ OAuth device flow
176
+ - **CLI tools**: add OpenDesign (manalkaff/opendesign) support
177
+ - **Headroom**: report effective payload savings (tool schema/history bytes broken
178
+ out, byte-savings % reflects actual outbound reduction)
179
+ - **Ollama**: Cloud quota tracker (session + weekly) + proactive background OAuth
180
+ token refresh scheduler for all providers
181
+
182
+ ## Fixes
183
+ - **Providers**: remove Qwen (OAuth flow stopped working reliably)
184
+ - **Passthrough**: detect codex-tui/Codex Desktop as native Codex client — they
185
+ were falling through to the translator and losing fields like `reasoning.summary`
186
+ - **OAuth**: scope antigravity header fixes to loadCodeAssist/onboardUser only
187
+ - **OAuth**: keep `open` external in the build so xAI/Grok token refresh works on
188
+ Windows
189
+ - **OAuth**: declare missing `searchParams` in register-session handler (was a
190
+ 500 instead of JSON on error)
191
+ - **DB**: `ENABLE_REQUEST_LOGS` env var now overrides the UI setting correctly;
192
+ observability defaults to off (opt-in)
193
+ - **Translator**: preserve Codex Responses Lite tool use across chat-native
194
+ OpenAI-compatible providers
195
+ - **Translator**: don't drop image-only user messages in `prepareClaudeRequest`
196
+ - **Translator**: drop JSON Schema keywords Gemini rejects (`uniqueItems`,
197
+ `contains`, `multipleOf`, `unevaluatedProperties`, `unevaluatedItems`,
198
+ `contentSchema`)
199
+ - **Claude**: remove global header cache that leaked one client's identity
200
+ headers onto another client/account sharing the server; gate `anthropic-beta`
201
+ by model instead
202
+ - **Antigravity**: drop retired Gemini 3.0 quota tiers, show Gemini 3.6 Flash
203
+ usage bars
204
+ - **Cloudflare AI**: declare API key authentication (dashboard showed "No
205
+ connections" despite an active key)
206
+ - **GitHub Copilot**: hold monthly-exhausted accounts until UTC month reset
207
+ instead of only cooling down 120s
208
+ - **CodeBuddy**: dodge Tencent CN content filter, add usage tracking, normalize
209
+ codebuddy-intl messages
210
+ - **Usage**: stop losing cached prompt tokens in the forced-SSE→JSON path
211
+ - **Grok CLI**: display the public subscription tier from the OAuth token claim
212
+ - **Providers**: count apikey connections for Ollama free-tier card; free-tier/
213
+ apikey providers without `authModes` now default to apikey (were treated
214
+ oauth-only)
215
+ - **Build**: include static/public assets in standalone output (login page hung
216
+ on 404s when run via PM2)
217
+ - **Server**: support IntelliJ IDEA OpenAI-compatible clients over HTTP (h2c
218
+ upgrade handling)
219
+ - **Auth**: redirect already-logged-in sessions away from `/login`
220
+ - **CLI tools**: enable Apply button for dynamic OpenAI/Anthropic-compatible
221
+ provider connections
222
+ - **CLI**: include complete API artifacts in the CLI package
223
+ - **TTS**: a bare self-hosted model name is the MODEL, not the voice — `kokoro`
224
+ was parsed as a voice against a default model, 404ing or synthesising with the
225
+ wrong one
226
+ - **Embeddings**: self-hosted embeddings no longer fall back to `api.openai.com`
227
+ when a connection has no `baseUrl` — that silently sent the input text and API
228
+ key to OpenAI under a provider named "Self-hosted"
229
+ - **Embeddings**: an adapter that rejects a misconfigured connection now returns
230
+ 400 with the reason instead of escaping the handler uncaught
231
+ - **Embeddings**: bound the upstream fetch with `FETCH_CONNECT_TIMEOUT_MS` — an
232
+ endpoint that drops packets never returns headers, so the request previously
233
+ hung indefinitely
234
+
235
+ ## Docs
236
+ - **i18n**: fix port typo, add RTK Token Saver feature descriptions
237
+
238
+ # v0.5.45 (2026-07-30)
239
+
240
+ ## Features
241
+ - **TTS**: add Xiaomi MiMo text-to-speech (preset voices 冰糖/茉莉/苏打/白桦/Mia/Chloe/Milo/Dean, style control, language hint dropdown with Auto-detect, i18n for Style label/placeholder)
242
+ - **Providers**: add Poolside (OpenAI-compatible)
243
+ - **Providers**: add api-airforce, baidu, bazaarlink, bluesminds, kilo-gateway, llm7, morph, sambanova, tencent
244
+ - **OAuth**: zed / trae / windsurf providers + harden callback proxies
245
+ - **CLI tools**: set Claude Code max context tokens
246
+ - **Qoder**: PAT auth + refresh model list
247
+ - **Gemini**: Gemini 3.6 Flash tier routing + Gemini 3.5 Flash Lite
248
+ - **Claude**: bump default Opus to `claude-opus-5`
249
+ - **Kiro**: add Claude Opus 5 models
250
+ - **Usage**: Kimi and DeepSeek usage handlers
251
+ - **Usage**: SuperGrok weekly pool via gRPC-web
252
+
253
+ ## Fixes
254
+ - **Refresh**: rotate `refresh_token` between retry attempts
255
+ - **Kiro**: canonicalize tool history and route API keys correctly
256
+ - **Kiro**: normalize dashboard thinking intensity models
257
+ - **Cursor**: stop leaking agent tool errors as text
258
+ - **Gemini**: fill empty tool schemas after `$ref` strip
259
+ - **Antigravity**: strip `stream_options` from non-stream requests
260
+ - **Jina-reader**: recover after transient errors, use JSON POST API
261
+ - **Usage**: record exact embedding tokens
262
+ - **Tunnel**: preserve successor cloudflared PID
263
+ - **Console-log**: initialize capture at server boot + prevent SSE proxy buffering
264
+ - **Dashboard**: count dual-auth, free-tier OAuth and API-key connections correctly
265
+ - **Dashboard**: flex quota rows, thin global scrollbars, no hidden-row overflow
266
+
267
+ ## Docs
268
+ - **i18n**: expand pt-BR translation to 986 terms
269
+ - README: Indonesian translation
270
+
271
+ # v0.5.40 (2026-07-20)
272
+
273
+ ## Features
274
+ - **Frontier for All**: add provider — OAuth device-code login, OpenAI-compatible proxy, model chosen by the user on their Frontier dashboard
275
+ - **Providers**: registry can ship a static suggested-model catalogue (`modelsFetcher.type: "static"`) with its own label/notice in the Add Custom Model dialog
276
+ - **i18n**: add Khmer (km) translations
277
+ - **CLI tools**: configure Grok Build subagent models
278
+ - **Kimi**: merge OAuth into dual-auth provider, add K3 / K2.7 models
279
+ - **Dashboard**: ProviderTopology flow animation
280
+
281
+ ## Fixes
282
+ - **DB**: resolve better-sqlite3 parameter binding crash
283
+ - **Translator**: pass `service_tier` through OpenAI → Responses conversion
284
+ - **Kiro**: map GPT-5.6 reasoning effort fields
285
+ - **Kiro**: validate terminal streams before emitting output
286
+ - **Kiro**: map GPT reasoning effort fields
287
+ - **Codex**: current `client_version` + refresh-aware model sync
288
+ - **Alicode-intl**: split into Coding Plan + Model Studio providers
289
+ - **Cursor**: HTTP/2 AgentService support + version bump 3.12.17
290
+ - **Dashboard**: cut duplicate API/icon spam, lazy-load provider assets
291
+
292
+
293
+ # v0.5.35 (2026-07-16)
294
+
295
+ ## Features
296
+ - **xAI**: Grok Imagine video generation (`/v1/videos`) + CLI
297
+ - **CLI tools**: Grok Build setup — choose separate main/general-purpose/explore/plan models and preserve each model's context window
298
+ - **GitHub Copilot**: route Claude models through Copilot's native `/v1/messages`
299
+ - **Kiro**: add GPT-5.6 model family (#2596)
300
+ - **RTK**: `X-9Router-Token-Saver` header to bypass token savers per request
301
+ - **Providers**: quota visibility settings
302
+ - **Translator**: drop temperature for all Claude models
303
+ - **i18n**: Thai (th) + Persian (fa) translations / README
304
+
305
+ ## Fixes
306
+ - **MiniMax**: add the required empty signature field to unsigned Anthropic thinking block starts
307
+ - **Providers**: bulk-add API keys no longer overwrite existing keys (gap-fill `Key N`)
308
+ - **Anthropic**: lowercase `anthropic-version` header to prevent duplication on `/v1/messages`
309
+ - **Alicode-intl**: use DashScope compatible-mode endpoint so standard keys work
310
+ - **Grok CLI**: align Grok Build with current subscription protocol (#2590)
311
+ - **Grok CLI**: surface `expiresAt` so proactive token refresh fires (#2546)
312
+ - **Kiro**: improve direct session cache reuse
313
+ - **Models**: populate capabilities for live-catalog LLM models
314
+ - **Models**: list compatible provider models in `/v1/models`
315
+ - **Thinking**: send explicit `thinking:{type:adaptive}` alongside `output_config.effort`
316
+ - **Translator**: strip `client_metadata` when converting openai-responses → openai
317
+
318
+ ## Improvements
319
+ - **Perf**: skip inactive background services on startup
320
+
321
+ ## Docs
322
+ - README: Persian YouTube tutorial
323
+
324
+ # v0.5.30 (2026-07-10)
325
+
326
+ ## Features
327
+ - **Perplexity**: add Agent API provider (#2492)
328
+ - **Grok CLI**: add Grok CLI / Grok Build provider with OAuth device-code flow (#2502)
329
+ - **Updater**: one-click Update in dashboard (auto install + restart, manual fallback)
330
+ - **Updater**: show What's new (changelog) before update + soft post-update banner
331
+ - **Featherless**: add OpenAI-compatible provider presets
332
+ - **SearXNG**: configure endpoint via SEARXNG_URL env (#2499)
333
+ - **Providers**: add max thinking level for gpt-5.6-sol (#2500)
334
+ - **Headroom**: add extras detection and install UI (#2403)
335
+ - **Headroom**: activate/uninstall extras + fix interpreter detection
336
+ - **PXPipe**: PXPIPE token saver — multimodal prompt compression (#2465)
337
+ - **Proxy-Pools**: auto-rotate strategy for no-auth providers (#2409)
338
+
339
+ ## Fixes
340
+ - **xAI**: strip `reasoning_effort` for `grok-composer` models (upstream rejects any reasoningEffort); honor provider thinking mode `none` — Joseph Yaksich
341
+ - **grok-cli**: guard `transformRequest()` with capabilities (no reasoning on composer/build); cap tools at 200 for cli-chat-proxy — folded from #2539 / @hameduc
342
+ - **Cloudflare-AI**: support accountId in bulk key import (#2449)
343
+ - **DB**: backup on schema change, MCP child cleanup, codex models, usage providers OOM
344
+ - **Codex**: avoid bare-email OAuth dedup (#2477)
345
+ - **Codex**: regression-lock multi-account persistence (#796) — `tests/unit/codex-multiaccount-persistence.test.js`
346
+ - **Codex**: fix CLI "added via TI, didn't appear" (#796) — add `/api/cli/providers/codex` route (`x-9r-cli-token` auth) + `cliCredentials.getServerCredentials`; `tests/unit/cli-providers-codex-route.test.js`
347
+ - **CLI**: allow staged app bundle builds (#2479)
348
+ - **Headroom**: compress Kiro conversation state (#2488)
349
+ - **Gemini-CLI**: raise output floor for thinking and add validated toolConfig (#2486)
350
+ - **GitHub**: label Copilot profiles by account identity (#2498)
351
+ - **OpenAI-to-Claude**: unwrap bare {function:{…}} tools without parent type (#2473)
352
+ - **Translator**: clamp thinking effort max->xhigh for OpenAI format (#2466)
353
+ - **RTK/find**: detect and group Windows backslash-style find output (#2448)
354
+ - **Codex**: handle fast tier and capacity SSE (#2452)
355
+ - **Volcengine-ark**: clamp Kimi max_tokens to 32768 endpoint cap
356
+ - **Antigravity**: align provider fingerprint with IDE Desktop 2.1.1 (#2389)
357
+ - **Pricing**: update Claude/Codex model rates and add new models
358
+
359
+ ## Improvements
360
+ - **i18n(zh-CN)**: complete Chinese translations for all UI strings (#2436)
361
+ - **API**: caching for tunnel and version status endpoints
362
+ - **Perf**: faster dev startup and lighter bundle
363
+
364
+ # v0.5.20 (2026-07-07)
365
+
366
+ ## Features
367
+ - **Thinking**: per-model thinking level picker on provider page — appends `(level)` suffix to copied model names for forced reasoning effort across all formats (openai, claude, gemini, deepseek, kimi, qwen, zai, minimax, hunyuan, step)
368
+ - **RTK**: add JS-native git-log filter (#2423)
369
+ - **Caveman**: add targeted upstream-aligned style rules (#2424)
370
+ - **i18n**: add Farsi (fa) language support (#2385)
371
+
372
+ ## Fixes
373
+ - **Thinking**: strip `(level)` suffix from upstream `body.model` so providers no longer reject requests
374
+ - **Translator**: preserve developer instructions in openai-responses conversion (#2434)
375
+ - **count_tokens**: count structured Anthropic blocks (#2419)
376
+ - **Volcengine-ark**: clamp GLM-5 max_tokens to model output ceiling (#2428)
377
+ - **Kimi**: normalize reasoning_effort to backend enum (#2427)
378
+ - **Claude**: reconcile max_tokens vs thinking budget and lift per-model ceiling (#2381)
379
+ - **Kiro**: deliver system prompt natively, add Opus 4.5/4.7/4.8, tolerate dash version ids (#2366)
380
+ - **Headroom**: proxy dashboard through app (#2372)
381
+ - **MITM**: recover from stale lock file on server start
382
+
383
+ # v0.5.18 (2026-07-03)
384
+
385
+ ## Features
386
+ - **Usage**: track cached tokens + correct input/output/cache cost (#2209) — hodtien
387
+ - **Codex**: show reset credit expiry details (#2290) — Rafli Ahmad Zulfikar
388
+ - **NVIDIA**: add new models and capabilities — decolua
389
+ - **ClinePass**: add provider support — sternelee
390
+
391
+ ## Fixes
392
+ - **Usage**: dedupe streaming request-details log entries — Qin Li
393
+ - **Claude**: drop foreign thinking signatures in passthrough — decolua
394
+ - Prevent non-SSE stream pipe crash and cross-IdP account overwrites (#2244) — KunN-21
395
+ - **Kiro**: route IdC auth to regional CodeWhisperer surface (#2297) — Volodymyr Saakian
396
+ - **Kiro**: add Claude Sonnet 5 model support (#2264) — Edison42
397
+ - **Xiaomi-tokenplan**: region selector, key validation, multi-connection (#2251) — MiQieR
398
+ - **Translator**: strict Anthropic content block compliance (#2225) — Sahrul Ramadhan Hardiansyah
399
+ - **Kimchi**: strip reasoning_content echo to bound multi-turn input tokens — KunN-21
400
+ - **Kimchi**: bump User-Agent to kimchi/0.1.40 (#2256) — Ansh7473
401
+ - **Codebuddy-cn**: strip empty tool_calls arrays to preserve reasoning — zmf
402
+ - **Antigravity**: preserve Claude tool delta index (#2223) — Sutarto Jordan Chrisfivo
403
+ - **MITM**: generate root CA on server startup (#2228) — Sutarto Jordan Chrisfivo
404
+
405
+ # v0.5.15 (2026-06-29)
406
+
407
+ ## Features
408
+ - Add Kimchi OAuth provider — Nant361
409
+ - Refine Qwen vision/video + thinking model patterns — decolua
410
+ - Opt-in Codex auto-ping quota keep-alive — Emirhan
411
+
412
+ ## Fixes
413
+ - **Responses**: handle response.done terminal events (#2142) — rifuki
414
+ - **Headroom**: skip unsafe responses tool history (#2132) — Sutarto Jordan Chrisfivo
415
+ - **Translator**: map mid-conversation system message to user (claude→openai) — decolua
416
+ - **Gemini**: normalize contents to prevent 400 invalid_argument (#2192) — warelik
417
+ - **Gemini**: backfill thoughtSignature + suppress stream done sentinel — WARELIK
418
+ - **Alicode**: preserve cache_control for DashScope providers (#2069) — Rex
419
+ - **Antigravity**: strip deprecated/readOnly/writeOnly from tool schemas — iletai, Yudhistira-Official
420
+ - **CodeBuddy CN**: show bonus packs as one-time, not monthly-replenishing — whale9820
421
+ - **Kiro**: strip leaked <thinking> tags from content stream (#2158) — hamsa0x7
422
+ - **Tray**: make Windows context menu DPI-aware — Emirhan
423
+ - **Kilocode**: expose full gateway catalog in combo model picker — jellylarper
424
+ - **OpenCode**: fix Go GLM — decolua
425
+
426
+ # v0.5.12 (2026-06-26)
427
+
428
+ ## Features
429
+ - Add token-saver dashboard page — decolua
430
+ - Add bulk delete for provider connections — teddytkz
431
+ - Resolve GitHub Copilot model catalog from upstream — caiqinzhou
432
+ - Add Venice AI provider — Brokenc0de
433
+ - Add Kiro external_idp import for Microsoft SSO (CLIProxyAPI) — Stevanus Pangau
434
+ - Overhaul Blackbox provider catalog + WebUI test support — suryacagur
435
+
436
+ ## Fixes
437
+ - Provider thinking compatibility (DeepSeek/Gemini) — Mink Nguyen
438
+ - Stop double-counting streaming usage at source — decolua
439
+ - Usage logging dedupe to reduce stats churn — Mink Nguyen
440
+ - Prevent non-JSON SSE lines / duplicate [DONE] from breaking clients (PR #2046) — qianze
441
+ - Resolve Gemini TTS models from catalog — nguyenha935
442
+ - Support Kiro IDC (organization) token import — quanturbo
443
+ - Preserve forced streaming for JSON clients (#2031) — Joseph Yaksich
444
+ - Preserve Responses text format (Codex) — tenglong
445
+ - Support Gemini native TTS generateContent endpoint — nguyenha935
446
+ - Add missing zh-CN endpoint key label (i18n) — weimaozhen
447
+ - CodeBuddy: only send reasoning params when client requests reasoning (#2071) — Rex
448
+ - CodeBuddy CN: show one-shot bonus packs as expiring, not monthly-replenishing
449
+ - Show custom provider models in combo picker — Sapto
450
+ - Docker: add docker-compose.yml with headroom enabled by default — nitsuahlabs
451
+ - Clarify token diagnostics vs provider billing (headroom, #1998) — Sutarto Jordan Chrisfivo
452
+ - Translate openai-responses input through OpenAI for compression (#1998) — Ankit
453
+ - Kiro: report 1M context window for claude-opus-4.8 — EdisonPVE
454
+ - Avoid stale redirects after auth changes (#2100) — Emirhan
455
+ - Mark Claude Opus 4.7 (dashed id) as 1M context — Brokenc0de
456
+ - Preserve reasoning effort through Codex translations — ntdung6868
457
+ - Token-saver: full width card layout — decolua
458
+ - Antigravity: retry transient upstream failures — Sutarto Jordan Chrisfivo
459
+ - Param-support: handle strip rules without match/drop (#1960) — Joseph Yaksich
460
+ - Translator: resolve custom provider prefix in debug endpoint (#1083) — hamsa0x7
461
+
462
+ # v0.5.8 (2026-06-21)
463
+
464
+ ## Features
465
+ - **Antigravity**: native image generation support (image models tagged kind:image, hiển thị trong media-providers UI)
466
+ - **CodeBuddy CN**: API key auth + credit quota tracker
467
+ - **CodeBuddy CN**: short model prefix alias "cbcn"
468
+
469
+ ## Fixes
470
+ - **MiniMax-M3**: enable vision capability
471
+ - **Headroom**: support Docker sidecar proxy
472
+ - **Antigravity**: image executor fixes
473
+ - **mimo-free**: Chrome User-Agent rotation to bypass anti-abuse gate
474
+ - **cloudflare-ai**: flatten content-part arrays to string to avoid oneOf 400 (#1926)
475
+ - **Translator**: normalize tools to Anthropic-native shape for non-Anthropic providers
476
+ - **CLI**: handle Next.js 16 nested standalone output path (#1940)
477
+ - **Codex**: preserve custom tools during request normalization
478
+ - **next.config**: add new route for responses endpoint to API
479
+
480
+ # v0.5.6 (2026-06-20)
481
+
482
+ ## Features
483
+ - **Ponytail**: minimalist code generation feature
484
+ - **Headroom**: proxy lifecycle management + dashboard UI (one-click start/stop, install detection, status probing, token saver, claude↔openai shape conversion)
485
+ - **CodeBuddy CN**: new OAuth provider (copilot.tencent.com) — 15-model catalog, /v2 inference, forced streaming, OpenAI-style reasoning
486
+ - **OpenCode-Go**: align models with official endpoints; route Qwen 3.7 MiniMax via /v1/messages, GLM/Kimi/DeepSeek/MiMo via /chat/completions
487
+
488
+ ## Fixes
489
+ - **Anthropic-compatible validation**: use POST /v1/messages (GET /models not spec, false "invalid" for valid keys)
490
+ - **CLI tools**: tolerate JSONC configs in all 8 settings routes (opencode, openclaw, kilo, droid, cowork, copilot, claude, cline)
491
+ - **Gemini/Antigravity**: preserve 'pattern' in tool schema translation (glob/grep)
492
+ - **Combo/Fusion**: flatten Anthropic-style tool messages in panel calls (prevent 503)
493
+ - **Models**: store provider custom models by provider scope
494
+ - **Perplexity**: use /v1/models endpoint for key validation
495
+
496
+ # v0.5.4 (2026-06-18)
497
+
498
+ ## Fixes
499
+ - **Kiro**: honor thinking effort budgets
500
+ - **AG/Kiro/Xiaomi**: provider fixes
501
+ - **Combo/Fusion**: flatten tool history in panel calls to prevent 503
502
+ - **LLM selector**: show custom vision models in selector and model list
503
+ - **Image**: prevent compatible nodes from shadowing provider aliases
504
+
505
+ # v0.5.2 (2026-06-17)
506
+
507
+ ## Features
508
+ - **Combo Fusion strategy** — fans the prompt out to all member models in parallel, then a configurable judge model synthesizes one final answer (quorum-grace, anonymized sources, graceful degradation)
509
+ - **Per-combo strategy selector** — pick `fallback` / `round-robin` / `fusion` / `capacity` per combo (replaces the old round-robin toggle), with a judge picker for fusion
510
+ - **Capacity auto-switch** — reorders models per request so images/PDFs route to capable models first
511
+ - **Kiro headless API-key auth** (`ksk_`) + direct `claude↔kiro` route that avoids the lossy OpenAI two-hop pivot
512
+ - **Claude auto-ping** — warms the 5h quota window right after reset so a fresh window starts immediately (per-connection toggle)
513
+
514
+ ## Fixes
515
+ - **Claude 429**: stop hammering the OAuth usage endpoint — cache resetAt, throttle quota refresh to 3 min, cool down after a 429 (chat unaffected)
516
+ - **Usage logs always empty**: missing `await` on `getAdapter()` in `getRecentLogs` made `/api/usage/logs` & `/api/usage/request-logs` return nothing
517
+ - **Executors**: strip params unsupported by the provider/model (drops deprecated `temperature` for claude-opus-4 → Anthropic 400)
518
+ - **Translator**: derive deterministic tool_call ids for gemini/antigravity → OpenAI so function call/response pair correctly (fixes tool-pairing 400s)
519
+ - **Antigravity**: strip `optional` from tool schemas before sending to Gemini
520
+ - **Claude-to-OpenAI**: handle OpenAI-format responses in the non-streaming path (e.g. xiaomi-tokenplan)
521
+ - **Usage views**: show edited connection names consistently across Providers & Quota Tracker
522
+ - **Security**: hardened reverse-proxy local-access trust
523
+ - **Security**: SSRF hardening on web fetch
524
+
525
+ ## Internal
526
+ - Large **open-sse / translator refactor** (~40 commits): unified provider/model registry (LiteLLM-style `models[]` + `kind` field, 100 co-located registry files), single-sourced media/OAuth/refresh/token URLs, registry-based dispatch for usage & token-refresh, DRY translator concerns (buildUsage, encodeDataUri, finishReasonMap, chunkBuilder, reasoningDelta…), ESM-safe registry init, large-file splits, dead-code removal, and golden/no-regression test gates
527
+
528
+ # v0.4.80 (2026-06-13)
529
+
530
+ ## Features
531
+ - Vercel AI Gateway: support embeddings, images and credit usage (#1183)
532
+ - Add MiMo Free no-auth provider (#1789)
533
+ - Vertex: support ADC `authorized_user` credential
534
+ - Cowork: re-enable Claude Cowork with preset-only stdio MCP
535
+ - Codex: bulk add accounts via JSON (#1719)
536
+ - Kiro: enable multi-endpoint failover for GenerateAssistantResponse (#1722)
537
+
538
+ ## Fixes
539
+ - Security: re-auth on DB export/import + SSRF guard on web fetch
540
+ - Auth: real client IP rate-limiting + remote default-password guard
541
+ - Cerebras/Mistral: strip unsupported `client_metadata` from downstream requests (#1742)
542
+ - SiliconFlow: update baseUrl `.cn` -> `.com` + curate verified model list (#1760)
543
+ - Gemini-to-OpenAI: route unsigned thought parts to `reasoning_content` (#1752)
544
+ - Claude-to-OpenAI: strip Anthropic billing header from system prompt (#1765)
545
+ - Anthropic-compatible: send Bearer auth for third-party gateways (#1795)
546
+ - Usage-stats: avoid partial stats on initial SSE race (#1767)
547
+ - Proxy: use `export default` in proxy.js for Next.js 16 middleware detection
548
+ - Claude passthrough: add body normalization
549
+ - GitHub Copilot: refresh missing/expired token on models discovery (#1727) + add mappable gpt-5-mini/gpt-5.4-nano slots for Copilot MITM (#1653)
550
+ - Kiro: auto-resolve profileArn to prevent 403 on IDC login, enhance profile ARN resolution, update endpoint to `runtime.us-east-1.kiro.dev` (#1713)
551
+ - Tunnel: detect system-installed Tailscale via dual-socket probe (#1723) + non-blocking probes to prevent UI freeze
552
+ - CommandCode: force `stream=true` in transformRequest (#1706)
553
+ - Qoder: increase timeouts for reasoning models and improve stream handling
554
+ - Dashboard: show provider node name instead of connection name in topology (#1770) + show explicit `kind="llm"` combos on combos page (#1684)
555
+
556
+ ## Docs
557
+ - README: add Indonesian 9Router tutorial video (#1709)
558
+
559
+ # v0.4.71 (2026-06-06)
560
+
561
+ ## Features
562
+ - Caveman: add wenyan classical Chinese levels and sync upstream prompts; locale-based visibility on endpoint page
563
+ - i18n: endpoint exposure notice across multiple languages + Russian README
564
+ - Antigravity: add gemini-3.5-flash-extra-low (Low) model
565
+ - xiaomi-tokenplan: add Claude-native MiMo V2.5 Pro alias via dedicated executor
566
+ - Qoder: fetch latest model + dashboard import-model button (#1642)
567
+ - MiniMax: add MiniMax-M3 + update Quota Tracker coding/CN (#1631)
568
+
569
+ ## Fixes
570
+ - Codex: harden streaming timeouts (stall/connect raised to 60s, configurable per-provider), accept `response.done` event, and always emit a terminal `response.failed` + `[DONE]` for Responses passthrough when a stream closes, stalls, or aborts before a terminal event — prevents codex clients from hanging (#1648, #1680, #1688, #1618)
571
+ - Codex: durable OAuth refresh lifecycle (#1664)
572
+ - Tunnel: skip virtual interfaces to prevent false netchange watchdog
573
+ - Claude: fix forced tool_choice 400 on cc/ OAuth route (#1592)
574
+ - Proxy: raise Next client body limit to 128MB via `NINEROUTER_PROXY_CLIENT_MAX_BODY_SIZE` (#1529, #1572)
575
+ - MiniMax: echo `reasoning_content` on follow-up turns to avoid 400 (#1543)
576
+ - Kiro: handle 400 on tool-bearing history without client tools; add mappable "auto" model slot; fix binary EventStream crash + add models & TTS tool filtering
577
+ - Antigravity: passthrough tab-autocomplete + mark default agent slot mandatory
578
+ - Qoder: allow `qmodel_latest` model key (#1638)
579
+ - Providers: restore one-connection guard for compatible/embedding nodes
580
+ - Model-test: route image/STT probes to their real endpoints, harden STT ping; add opencode-go + xiaomi-tokenplan to connection test (#1576, #1628)
581
+
582
+ ## Improvements
583
+ - Dashboard: reorganize menu actions across sidebar/header/profile
584
+ - Translator: add data-driven coverage, bug-exposing cases, and real provider smoke tests
585
+
586
+ # v0.4.66 (2026-05-29)
587
+
588
+ ## Features
589
+ - Add Qoder provider: device-flow OAuth, COSY signing, WAF-bypass body encoding, live model catalog, dashboard quota tracker, 11 models (#1372)
590
+ - Add new models: Claude Opus 4.8 (Claude Code), GPT 5.4 Mini (Codex)
591
+
592
+ ## Fixes
593
+ - DeepSeek thinking mode: echo `reasoning_content` back on follow-up/tool-call turns so OpenCode-free and custom providers no longer 400 with "reasoning_content must be passed back" (#1543)
594
+ - Reasoning injector: match deepseek/kimi model ids case-insensitively (covers custom providers using capitalized model names)
595
+ - OpenCode suggested-models: include free models without the `-free` suffix, e.g. `big-pickle` (#1535)
596
+
597
+ ## Improvements
598
+ - Codex: trim sunset models, keep gpt-5.5 / gpt-5.4 / gpt-5.3-codex family, add gpt-5.4-mini
599
+ - volcengine-ark: refresh model list (add DeepSeek-V4-Flash/Pro, drop EOL entries)
600
+ - Lower stream stall timeout 35s → 30s for faster hang detection
601
+
602
+ # v0.4.63 (2026-05-26)
603
+
604
+ ## Fixes
605
+ - GitHub Copilot: never route Gemini/Claude models to the `/responses` endpoint; prevents misleading "does not support Responses API" 400s (#1062)
606
+ - proxyFetch: restore missing `Readable` import causing runtime `ReferenceError` in DNS-bypass fetch path
607
+
608
+ ## Improvements
609
+ - Lower stream stall timeout from 60s → 35s for faster hang detection
610
+
611
+ # v0.4.62 (2026-05-26)
612
+
613
+ ## Fixes
614
+ - Codex: auto-retry when upstream drops mid-stream (no more hangs)
615
+ - Codex: fix random 400/404 errors, tool-calling failures, and unstable prompt cache
616
+ - MITM: support Antigravity 2.x
617
+ - Sanitize Read tool args to prevent retry loops from non-Anthropic models (#1144)
618
+ - Implement json_schema fallback for OpenAI-compatible providers without native Structured Output (#1343)
619
+ - Strip empty Read pages argument in OpenAI-to-Claude translator (#1354)
620
+ - Forward Gemini output dimensions for embeddings (#1366)
621
+ - Resolve setState-in-effect errors in dashboard components (#1362)
622
+ - Gemini CLI: reuse stored OAuth project IDs for quota checks and show clearer setup guidance when the project is missing (#1271, #1428)
623
+
624
+ ## Features
625
+ - Add Cloudflare Workers proxy deployer and pool integration (#1360)
626
+ - Add Deno Deploy relays support and improved proxy pools dashboard layout (#1437)
627
+
628
+ ## Improvements
629
+ - Refactor Tunnel into dedicated Cloudflare and Tailscale manager modules
630
+ - Refactor tokenRefresh service with in-flight dedup to prevent refresh_token_reused errors
631
+
632
+ # v0.4.59 (2026-05-21)
633
+
634
+ ## Fixes
635
+ - OAuth: fix login flow on Windows
636
+
637
+ # v0.4.58 (2026-05-21)
638
+
639
+ ## Features
640
+ - xAI Grok provider (OAuth, API key, image)
641
+ - Provider limits: paginated accounts with page size controls
642
+
643
+ ## Fixes
644
+ - Tailscale: fix connection status on Windows (#1300)
645
+ - Tunnel: fix false "checking" when tunnel URL is reachable
646
+ - Stream: fix pipe errors on client disconnect/abort
647
+
648
+ # v0.4.55 (2026-05-18)
649
+
650
+ ## Features
651
+ - Xiaomi MiMo Token Plan: region selector (Singapore / China / Europe) — keys are cluster-specific
652
+ - Antigravity: risk confirmation dialog before first connection
653
+ - Gemini CLI: surface upstream retry delay on 429 errors
654
+
655
+ ## Fixes
656
+ - MITM: cannot kill process on macOS under sudo (lsof not found in PATH)
657
+ - Stream: false-positive stall timeout on Claude reasoning / Kiro responses
658
+ - Tunnel: cannot re-enable after disable (stuck state)
659
+ - Tunnel: cloudflared error messages now include log tail for easier debugging
660
+ - Language switcher: applies selected locale immediately on close (#1234)
661
+ - Antigravity OAuth: metadata now matches the official client
662
+
663
+ ## Improvements
664
+ - Gemini CLI: bump engine to 0.34.0
665
+ - Re-hide `qwen` (OAuth EOL) and `iflow` (not ready) providers
666
+
667
+ # v0.4.52 (2026-05-17)
668
+
669
+ ## Features
670
+ - Add Vercel AI Gateway provider support (#1183)
671
+ - rtk: Kiro format tool result compression — handle conversationState.history & currentMessage, preserve error results, ~13.6% savings (#1194)
672
+
673
+ ## Fixes
674
+ - openclaw: normalize agent.model object form `{primary, fallbacks}` before .startsWith → fix TypeError & 'not configured' status (#1216)
675
+ - Usage Details pagination: stay inside mobile viewport <640px (#1218)
676
+ - Fix test model error
677
+ - Fix MIMO provider in Codex
678
+ - Disable log file creation when using MITM AG
679
+
680
+ # v0.4.50 (2026-05-16)
681
+
682
+ ## Fixes
683
+ - Fix duplicate tray icon on macOS when hiding to tray
684
+ - Fix tray not showing in background mode on macOS
685
+ - Fix hide to tray broken on Windows/Linux
686
+ - Fix Shutdown button in web UI not working
687
+
688
+ # v0.4.49 (2026-05-16)
689
+
690
+ ## Features
691
+ - Add Kiro provider support: full request/response translation, live model listing, reasoning content support
692
+ - Add `buildOutput` RTK filter with autodetect for npm/yarn/cargo build logs
693
+ - Add MITM warning notification in tray and dashboard
694
+
695
+ ## Improvements
696
+ - Add modalities (input/output) to model configuration for OpenCode
697
+ - Fix tray hide-to-tray: keep current process alive instead of spawning detached child (fixes macOS NSStatusItem ghost icon)
698
+ - Fix tray kill: graceful shutdown with SIGTERM/SIGKILL escalation
699
+ - Fix SIGHUP handling so macOS terminal close doesn't kill tray process
700
+ - Hide deprecated providers (qwen, iflow, antigravity)
701
+ - Update i18n across 32 languages
702
+
703
+ ## Fixes
704
+ - Fix model check (test-models) blocked by dashboardGuard: pass machineId-based CLI token in internal self-calls
705
+
706
+ # v0.4.46 (2026-05-15)
707
+
708
+ ## Breaking Changes
709
+ - Tunnel public URL changed — old tunnel links no longer work, please reconnect to get the new URL