@geminilight/mindos 0.6.52 → 0.6.54

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 (529) hide show
  1. package/README.md +27 -5
  2. package/README_zh.md +27 -5
  3. package/_standalone/.mindos-build-version +1 -1
  4. package/_standalone/.next/BUILD_ID +1 -1
  5. package/_standalone/.next/app-path-routes-manifest.json +17 -14
  6. package/_standalone/.next/build-manifest.json +3 -3
  7. package/_standalone/.next/cache/.previewinfo +1 -1
  8. package/_standalone/.next/cache/.rscinfo +1 -1
  9. package/_standalone/.next/cache/config.json +3 -3
  10. package/_standalone/.next/prerender-manifest.json +3 -3
  11. package/_standalone/.next/react-loadable-manifest.json +18 -2
  12. package/_standalone/.next/routes-manifest.json +18 -0
  13. package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
  14. package/_standalone/.next/server/app/_global-error/page.js +1 -1
  15. package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  16. package/_standalone/.next/server/app/_global-error.html +2 -2
  17. package/_standalone/.next/server/app/_global-error.rsc +2 -2
  18. package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
  19. package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  20. package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  21. package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  22. package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  23. package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  24. package/_standalone/.next/server/app/_not-found/page.js +1 -1
  25. package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  26. package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  27. package/_standalone/.next/server/app/agents/[agentKey]/page.js +1 -1
  28. package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
  29. package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
  30. package/_standalone/.next/server/app/agents/page.js +3 -3
  31. package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
  32. package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  33. package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
  34. package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
  35. package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
  36. package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
  37. package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
  38. package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
  39. package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
  40. package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
  41. package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
  42. package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
  43. package/_standalone/.next/server/app/api/ask/route.js +44 -16
  44. package/_standalone/.next/server/app/api/ask/route.js.nft.json +1 -1
  45. package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
  46. package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
  47. package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
  48. package/_standalone/.next/server/app/api/backlinks/route.js.nft.json +1 -1
  49. package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
  50. package/_standalone/.next/server/app/api/bootstrap/route.js.nft.json +1 -1
  51. package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
  52. package/_standalone/.next/server/app/api/changes/route.js.nft.json +1 -1
  53. package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
  54. package/_standalone/.next/server/app/api/export/route.js +2 -2
  55. package/_standalone/.next/server/app/api/export/route.js.nft.json +1 -1
  56. package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
  57. package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
  58. package/_standalone/.next/server/app/api/file/import/route.js.nft.json +1 -1
  59. package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
  60. package/_standalone/.next/server/app/api/file/raw/route.js +1 -0
  61. package/_standalone/.next/server/app/api/file/raw/route.js.nft.json +1 -0
  62. package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -0
  63. package/_standalone/.next/server/app/api/file/route.js +1 -1
  64. package/_standalone/.next/server/app/api/file/route.js.nft.json +1 -1
  65. package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
  66. package/_standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  67. package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  68. package/_standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  69. package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  70. package/_standalone/.next/server/app/api/graph/route.js.nft.json +1 -1
  71. package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
  72. package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  73. package/_standalone/.next/server/app/api/inbox/route.js +1 -1
  74. package/_standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
  75. package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
  76. package/_standalone/.next/server/app/api/init/route.js.nft.json +1 -1
  77. package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  78. package/_standalone/.next/server/app/api/mcp/agents/route.js.nft.json +1 -1
  79. package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
  80. package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
  81. package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
  82. package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
  83. package/_standalone/.next/server/app/api/mcp/status/route.js +1 -1
  84. package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
  85. package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
  86. package/_standalone/.next/server/app/api/monitoring/route.js.nft.json +1 -1
  87. package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
  88. package/_standalone/.next/server/app/api/recent-files/route.js.nft.json +1 -1
  89. package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
  90. package/_standalone/.next/server/app/api/restart/route.js +1 -1
  91. package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  92. package/_standalone/.next/server/app/api/search/route.js.nft.json +1 -1
  93. package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  94. package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
  95. package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
  96. package/_standalone/.next/server/app/api/settings/route.js +1 -1
  97. package/_standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  98. package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  99. package/_standalone/.next/server/app/api/settings/test-key/route.js +1 -1
  100. package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
  101. package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
  102. package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
  103. package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
  104. package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
  105. package/_standalone/.next/server/app/api/setup/route.js +1 -1
  106. package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
  107. package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  108. package/_standalone/.next/server/app/api/sync/route.js +1 -1
  109. package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
  110. package/_standalone/.next/server/app/api/tree-version/route.js.nft.json +1 -1
  111. package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
  112. package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
  113. package/_standalone/.next/server/app/api/update/route.js +1 -1
  114. package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  115. package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
  116. package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
  117. package/_standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
  118. package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
  119. package/_standalone/.next/server/app/changes/page.js +2 -2
  120. package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
  121. package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
  122. package/_standalone/.next/server/app/echo/[segment]/page.js +3 -3
  123. package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
  124. package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
  125. package/_standalone/.next/server/app/echo/page.js +1 -1
  126. package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
  127. package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
  128. package/_standalone/.next/server/app/explore/page.js +2 -2
  129. package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
  130. package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
  131. package/_standalone/.next/server/app/help/page.js +2 -2
  132. package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
  133. package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
  134. package/_standalone/.next/server/app/inbox/history/page.js +2 -0
  135. package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -0
  136. package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -0
  137. package/_standalone/.next/server/app/login/page.js +2 -2
  138. package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
  139. package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  140. package/_standalone/.next/server/app/page.js +3 -3
  141. package/_standalone/.next/server/app/page.js.nft.json +1 -1
  142. package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  143. package/_standalone/.next/server/app/setup/page.js +2 -2
  144. package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
  145. package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  146. package/_standalone/.next/server/app/trash/page.js +3 -3
  147. package/_standalone/.next/server/app/trash/page.js.nft.json +1 -1
  148. package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
  149. package/_standalone/.next/server/app/view/[...path]/page.js +3 -3
  150. package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
  151. package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
  152. package/_standalone/.next/server/app/wiki/page.js +2 -0
  153. package/_standalone/.next/server/app/wiki/page.js.nft.json +1 -0
  154. package/_standalone/.next/server/app/wiki/page_client-reference-manifest.js +1 -0
  155. package/_standalone/.next/server/app-paths-manifest.json +17 -14
  156. package/_standalone/.next/server/chunks/2190.js +2 -2
  157. package/_standalone/.next/server/chunks/2364.js +2 -0
  158. package/_standalone/.next/server/chunks/357.js +1 -0
  159. package/_standalone/.next/server/chunks/530.js +219 -0
  160. package/_standalone/.next/server/chunks/6054.js +52 -0
  161. package/_standalone/.next/server/chunks/6539.js +1 -1
  162. package/_standalone/.next/server/chunks/8388.js +2 -2
  163. package/_standalone/.next/server/chunks/953.js +4 -4
  164. package/_standalone/.next/server/middleware-build-manifest.js +1 -1
  165. package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  166. package/_standalone/.next/server/next-font-manifest.js +1 -1
  167. package/_standalone/.next/server/next-font-manifest.json +1 -1
  168. package/_standalone/.next/server/pages/500.html +2 -2
  169. package/_standalone/.next/server/server-reference-manifest.js +1 -1
  170. package/_standalone/.next/server/server-reference-manifest.json +1 -1
  171. package/_standalone/.next/static/2hrwFOLEOZhHQHfrIt-Dw/_buildManifest.js +1 -0
  172. package/_standalone/.next/static/chunks/1053-2874859f7caefa0f.js +29 -0
  173. package/_standalone/.next/static/chunks/178-105779afb62d36d9.js +1 -0
  174. package/_standalone/.next/static/chunks/1814.b08e9fb85dd3b13c.js +1 -0
  175. package/_standalone/.next/static/chunks/{1880-3ec02adc80531825.js → 1880-7abf971bcfd2389b.js} +2 -2
  176. package/_standalone/.next/static/chunks/{3160-83a7e0b94414b3ac.js → 2218-d54538000574ffef.js} +1 -1
  177. package/_standalone/.next/static/chunks/254-32719a9bea2e74f0.js +1 -0
  178. package/_standalone/.next/static/chunks/362.a77be2f206db7b19.js +1 -0
  179. package/_standalone/.next/static/chunks/4237-ffc6e7c15d4007b6.js +1 -0
  180. package/_standalone/.next/static/chunks/7035-2af69391c7b1ad95.js +1 -0
  181. package/_standalone/.next/static/chunks/7322-d67d05067544864c.js +1 -0
  182. package/_standalone/.next/static/chunks/{6926-4af497b83952fa87.js → 8409-de5726a4a278d28f.js} +1 -1
  183. package/_standalone/.next/static/chunks/8753-ea9db680b0f70f25.js +1 -0
  184. package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/{route-b07a5983e85bc5e3.js → route-e240db6d5049d336.js} +1 -1
  185. package/_standalone/.next/static/chunks/app/_global-error/{page-b07a5983e85bc5e3.js → page-e240db6d5049d336.js} +1 -1
  186. package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-f006a70f6889eb56.js +1 -0
  187. package/_standalone/.next/static/chunks/app/agents/page-bd522e428e3acb78.js +5 -0
  188. package/_standalone/.next/static/chunks/app/api/a2a/agents/{route-b07a5983e85bc5e3.js → route-e240db6d5049d336.js} +1 -1
  189. package/_standalone/.next/static/chunks/app/api/a2a/delegations/{route-b07a5983e85bc5e3.js → route-e240db6d5049d336.js} +1 -1
  190. package/_standalone/.next/static/chunks/app/api/a2a/discover/route-e240db6d5049d336.js +1 -0
  191. package/_standalone/.next/static/chunks/app/api/a2a/route-e240db6d5049d336.js +1 -0
  192. package/_standalone/.next/static/chunks/app/api/acp/config/route-e240db6d5049d336.js +1 -0
  193. package/_standalone/.next/static/chunks/app/api/acp/detect/route-e240db6d5049d336.js +1 -0
  194. package/_standalone/.next/static/chunks/app/api/acp/install/route-e240db6d5049d336.js +1 -0
  195. package/_standalone/.next/static/chunks/app/api/acp/registry/route-e240db6d5049d336.js +1 -0
  196. package/_standalone/.next/static/chunks/app/api/acp/session/route-e240db6d5049d336.js +1 -0
  197. package/_standalone/.next/static/chunks/app/api/agent-activity/route-e240db6d5049d336.js +1 -0
  198. package/_standalone/.next/static/chunks/app/api/ask/route-e240db6d5049d336.js +1 -0
  199. package/_standalone/.next/static/chunks/app/api/ask-sessions/route-e240db6d5049d336.js +1 -0
  200. package/_standalone/.next/static/chunks/app/api/auth/route-e240db6d5049d336.js +1 -0
  201. package/_standalone/.next/static/chunks/app/api/backlinks/route-e240db6d5049d336.js +1 -0
  202. package/_standalone/.next/static/chunks/app/api/bootstrap/route-e240db6d5049d336.js +1 -0
  203. package/_standalone/.next/static/chunks/app/api/changes/route-e240db6d5049d336.js +1 -0
  204. package/_standalone/.next/static/chunks/app/api/export/route-e240db6d5049d336.js +1 -0
  205. package/_standalone/.next/static/chunks/app/api/extract-pdf/route-e240db6d5049d336.js +1 -0
  206. package/_standalone/.next/static/chunks/app/api/file/import/route-e240db6d5049d336.js +1 -0
  207. package/_standalone/.next/static/chunks/app/api/file/raw/route-e240db6d5049d336.js +1 -0
  208. package/_standalone/.next/static/chunks/app/api/file/route-e240db6d5049d336.js +1 -0
  209. package/_standalone/.next/static/chunks/app/api/files/route-e240db6d5049d336.js +1 -0
  210. package/_standalone/.next/static/chunks/app/api/git/route-e240db6d5049d336.js +1 -0
  211. package/_standalone/.next/static/chunks/app/api/graph/route-e240db6d5049d336.js +1 -0
  212. package/_standalone/.next/static/chunks/app/api/health/route-e240db6d5049d336.js +1 -0
  213. package/_standalone/.next/static/chunks/app/api/inbox/route-e240db6d5049d336.js +1 -0
  214. package/_standalone/.next/static/chunks/app/api/init/route-e240db6d5049d336.js +1 -0
  215. package/_standalone/.next/static/chunks/app/api/mcp/agents/route-e240db6d5049d336.js +1 -0
  216. package/_standalone/.next/static/chunks/app/api/mcp/install/route-e240db6d5049d336.js +1 -0
  217. package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-e240db6d5049d336.js +1 -0
  218. package/_standalone/.next/static/chunks/app/api/mcp/restart/route-e240db6d5049d336.js +1 -0
  219. package/_standalone/.next/static/chunks/app/api/mcp/status/route-e240db6d5049d336.js +1 -0
  220. package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-e240db6d5049d336.js +1 -0
  221. package/_standalone/.next/static/chunks/app/api/monitoring/route-e240db6d5049d336.js +1 -0
  222. package/_standalone/.next/static/chunks/app/api/recent-files/route-e240db6d5049d336.js +1 -0
  223. package/_standalone/.next/static/chunks/app/api/restart/route-e240db6d5049d336.js +1 -0
  224. package/_standalone/.next/static/chunks/app/api/search/route-e240db6d5049d336.js +1 -0
  225. package/_standalone/.next/static/chunks/app/api/settings/list-models/route-e240db6d5049d336.js +1 -0
  226. package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-e240db6d5049d336.js +1 -0
  227. package/_standalone/.next/static/chunks/app/api/settings/route-e240db6d5049d336.js +1 -0
  228. package/_standalone/.next/static/chunks/app/api/settings/test-key/route-e240db6d5049d336.js +1 -0
  229. package/_standalone/.next/static/chunks/app/api/setup/check-path/route-e240db6d5049d336.js +1 -0
  230. package/_standalone/.next/static/chunks/app/api/setup/check-port/route-e240db6d5049d336.js +1 -0
  231. package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-e240db6d5049d336.js +1 -0
  232. package/_standalone/.next/static/chunks/app/api/setup/ls/route-e240db6d5049d336.js +1 -0
  233. package/_standalone/.next/static/chunks/app/api/setup/route-e240db6d5049d336.js +1 -0
  234. package/_standalone/.next/static/chunks/app/api/skills/route-e240db6d5049d336.js +1 -0
  235. package/_standalone/.next/static/chunks/app/api/sync/route-e240db6d5049d336.js +1 -0
  236. package/_standalone/.next/static/chunks/app/api/tree-version/route-e240db6d5049d336.js +1 -0
  237. package/_standalone/.next/static/chunks/app/api/uninstall/route-e240db6d5049d336.js +1 -0
  238. package/_standalone/.next/static/chunks/app/api/update/route-e240db6d5049d336.js +1 -0
  239. package/_standalone/.next/static/chunks/app/api/update-check/route-e240db6d5049d336.js +1 -0
  240. package/_standalone/.next/static/chunks/app/api/update-status/route-e240db6d5049d336.js +1 -0
  241. package/_standalone/.next/static/chunks/app/api/workflows/route-e240db6d5049d336.js +1 -0
  242. package/_standalone/.next/static/chunks/app/changes/page-5a72144d1080a699.js +1 -0
  243. package/_standalone/.next/static/chunks/app/echo/[segment]/{page-88df174dd64b2c76.js → page-6710da1f581b2854.js} +2 -2
  244. package/_standalone/.next/static/chunks/app/echo/page-e240db6d5049d336.js +1 -0
  245. package/_standalone/.next/static/chunks/app/explore/{page-5eb2835e9e3ab4bb.js → page-d3d99308146c2240.js} +1 -1
  246. package/_standalone/.next/static/chunks/app/global-error-c37d50db6128ec01.js +1 -0
  247. package/_standalone/.next/static/chunks/app/help/page-222df603080b5fab.js +1 -0
  248. package/_standalone/.next/static/chunks/app/inbox/history/page-07819cf95cb0805f.js +1 -0
  249. package/_standalone/.next/static/chunks/app/layout-8eacff5813458190.js +186 -0
  250. package/_standalone/.next/static/chunks/app/loading-e240db6d5049d336.js +1 -0
  251. package/_standalone/.next/static/chunks/app/login/{page-24236460fa7c11d0.js → page-0eeef685052869a6.js} +1 -1
  252. package/_standalone/.next/static/chunks/app/page-5a6c9455efe8a0df.js +7 -0
  253. package/_standalone/.next/static/chunks/app/setup/{page-99f40e9337388cda.js → page-9a81fa4d82c6351b.js} +1 -1
  254. package/_standalone/.next/static/chunks/app/trash/page-72d0ae3649ac4b6c.js +1 -0
  255. package/_standalone/.next/static/chunks/app/view/[...path]/loading-e240db6d5049d336.js +1 -0
  256. package/_standalone/.next/static/chunks/app/view/[...path]/not-found-fc04c2bd4f35bc6f.js +1 -0
  257. package/_standalone/.next/static/chunks/app/view/[...path]/page-e8699f96589c0979.js +12 -0
  258. package/_standalone/.next/static/chunks/app/wiki/page-d492256a93f0b8bc.js +1 -0
  259. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-e240db6d5049d336.js +1 -0
  260. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-e240db6d5049d336.js +1 -0
  261. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-e240db6d5049d336.js +1 -0
  262. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-e240db6d5049d336.js +1 -0
  263. package/_standalone/.next/static/chunks/{webpack-bbd44cbc83dc0aa4.js → webpack-73c9da80c6c1ebfe.js} +1 -1
  264. package/_standalone/.next/static/css/66f8a81e4eda06d4.css +1 -0
  265. package/_standalone/.next/static/css/a4a2b71142b311af.css +31 -0
  266. package/_standalone/.next/trace +64 -64
  267. package/_standalone/.next/types/routes.d.ts +5 -2
  268. package/_standalone/.next/types/validator.ts +27 -0
  269. package/_standalone/__tests__/agents/agents-content-dashboard.test.tsx +1 -0
  270. package/_standalone/__tests__/agents/agents-content-model.test.ts +13 -0
  271. package/_standalone/__tests__/core/inbox.test.ts +168 -0
  272. package/_standalone/__tests__/core/sync.test.ts +37 -0
  273. package/_standalone/__tests__/panels/agents-panel-hub.test.tsx +1 -0
  274. package/_standalone/app/globals.css +29 -3
  275. package/_standalone/components/ActivityBar.tsx +9 -9
  276. package/_standalone/components/AskFab.tsx +1 -1
  277. package/_standalone/components/Backlinks.tsx +1 -1
  278. package/_standalone/components/Breadcrumb.tsx +1 -1
  279. package/_standalone/components/CreateSpaceModal.tsx +1 -1
  280. package/_standalone/components/EchoSpotlight.tsx +14 -10
  281. package/_standalone/components/Editor.tsx +1 -1
  282. package/_standalone/components/ExportModal.tsx +3 -3
  283. package/_standalone/components/FileTree.tsx +6 -11
  284. package/_standalone/components/GuideCard.tsx +1 -1
  285. package/_standalone/components/ImportModal.tsx +1 -2
  286. package/_standalone/components/KeyboardShortcuts.tsx +1 -1
  287. package/_standalone/components/MarkdownEditor.tsx +1 -1
  288. package/_standalone/components/OnboardingView.tsx +2 -2
  289. package/_standalone/components/OrganizeToast.tsx +3 -1
  290. package/_standalone/components/Panel.tsx +27 -6
  291. package/_standalone/components/Sidebar.tsx +1 -1
  292. package/_standalone/components/SidebarLayout.tsx +30 -7
  293. package/_standalone/components/SystemPulse.tsx +16 -16
  294. package/_standalone/components/agents/AgentsOverviewSection.tsx +18 -92
  295. package/_standalone/components/agents/AgentsPanelA2aTab.tsx +67 -66
  296. package/_standalone/components/agents/AgentsPrimitives.tsx +1 -1
  297. package/_standalone/components/agents/RecentActivityFeed.tsx +6 -6
  298. package/_standalone/components/agents/SkillDetailPopover.tsx +1 -1
  299. package/_standalone/components/ask/AskHeader.tsx +1 -1
  300. package/_standalone/components/echo/EchoHero.tsx +1 -1
  301. package/_standalone/components/echo/EchoPageSections.tsx +1 -1
  302. package/_standalone/components/explore/UseCaseCard.tsx +1 -1
  303. package/_standalone/components/home/InboxSection.tsx +262 -54
  304. package/_standalone/components/panels/AgentsPanel.tsx +4 -3
  305. package/_standalone/components/panels/AgentsPanelAgentDetail.tsx +1 -1
  306. package/_standalone/components/panels/AgentsPanelHubNav.tsx +10 -6
  307. package/_standalone/components/panels/PanelHeader.tsx +1 -1
  308. package/_standalone/components/renderers/audio/AudioRenderer.tsx +79 -0
  309. package/_standalone/components/renderers/image/ImageRenderer.tsx +203 -0
  310. package/_standalone/components/renderers/pdf/PdfRenderer.tsx +57 -0
  311. package/_standalone/components/renderers/video/VideoRenderer.tsx +91 -0
  312. package/_standalone/components/settings/McpTab.tsx +154 -28
  313. package/_standalone/components/settings/PluginsTab.tsx +1 -1
  314. package/_standalone/components/settings/SettingsContent.tsx +41 -7
  315. package/_standalone/components/settings/types.ts +7 -1
  316. package/_standalone/components/walkthrough/WalkthroughOverlay.tsx +40 -11
  317. package/_standalone/components/walkthrough/WalkthroughTooltip.tsx +1 -1
  318. package/_standalone/hooks/useAiOrganize.ts +14 -1
  319. package/_standalone/lib/organize-history.ts +6 -0
  320. package/_standalone/lib/stores/walkthrough-store.ts +33 -1
  321. package/_standalone/tsconfig.tsbuildinfo +1 -1
  322. package/app/app/api/ask/route.ts +193 -3
  323. package/app/app/api/file/raw/route.ts +121 -0
  324. package/app/app/api/file/route.ts +21 -0
  325. package/app/app/api/inbox/route.ts +38 -2
  326. package/app/app/api/mcp/status/route.ts +1 -0
  327. package/app/app/api/restart/route.ts +26 -21
  328. package/app/app/api/settings/route.ts +13 -0
  329. package/app/app/api/setup/route.ts +11 -1
  330. package/app/app/api/sync/route.ts +36 -13
  331. package/app/app/api/update/route.ts +24 -10
  332. package/app/app/global-error.tsx +3 -3
  333. package/app/app/globals.css +29 -3
  334. package/app/app/inbox/history/page.tsx +250 -0
  335. package/app/app/layout.tsx +5 -11
  336. package/app/app/login/page.tsx +1 -1
  337. package/app/app/view/[...path]/ViewPageClient.tsx +15 -10
  338. package/app/app/view/[...path]/not-found.tsx +1 -1
  339. package/app/app/view/[...path]/page.tsx +32 -1
  340. package/app/app/wiki/page.tsx +58 -0
  341. package/app/components/ActivityBar.tsx +9 -9
  342. package/app/components/AskFab.tsx +1 -1
  343. package/app/components/Backlinks.tsx +1 -1
  344. package/app/components/Breadcrumb.tsx +1 -1
  345. package/app/components/CreateSpaceModal.tsx +1 -1
  346. package/app/components/DirView.tsx +2 -2
  347. package/app/components/EchoSpotlight.tsx +14 -10
  348. package/app/components/Editor.tsx +1 -1
  349. package/app/components/ExportModal.tsx +3 -3
  350. package/app/components/FileTree.tsx +6 -11
  351. package/app/components/GuideCard.tsx +1 -1
  352. package/app/components/HomeContent.tsx +50 -39
  353. package/app/components/ImportModal.tsx +1 -2
  354. package/app/components/KeyboardShortcuts.tsx +1 -1
  355. package/app/components/MarkdownEditor.tsx +1 -1
  356. package/app/components/OnboardingView.tsx +2 -2
  357. package/app/components/OrganizeToast.tsx +3 -1
  358. package/app/components/Panel.tsx +27 -6
  359. package/app/components/Sidebar.tsx +1 -1
  360. package/app/components/SidebarLayout.tsx +30 -7
  361. package/app/components/SystemPulse.tsx +16 -16
  362. package/app/components/TrashPageClient.tsx +8 -6
  363. package/app/components/UpdateOverlay.tsx +1 -1
  364. package/app/components/WikiHomeContent.tsx +273 -0
  365. package/app/components/agents/AgentDetailContent.tsx +5 -5
  366. package/app/components/agents/AgentsContentPage.tsx +14 -3
  367. package/app/components/agents/AgentsOverviewSection.tsx +18 -92
  368. package/app/components/agents/AgentsPanelA2aTab.tsx +67 -66
  369. package/app/components/agents/AgentsPrimitives.tsx +1 -1
  370. package/app/components/agents/RecentActivityFeed.tsx +6 -6
  371. package/app/components/agents/SkillDetailPopover.tsx +1 -1
  372. package/app/components/agents/agents-content-model.ts +4 -1
  373. package/app/components/ask/AskHeader.tsx +1 -1
  374. package/app/components/changes/ChangesContentPage.tsx +10 -6
  375. package/app/components/echo/EchoHero.tsx +1 -1
  376. package/app/components/echo/EchoPageSections.tsx +1 -1
  377. package/app/components/explore/ExploreContent.tsx +1 -1
  378. package/app/components/explore/UseCaseCard.tsx +1 -1
  379. package/app/components/help/HelpContent.tsx +3 -3
  380. package/app/components/home/InboxSection.tsx +262 -54
  381. package/app/components/panels/AgentsPanel.tsx +4 -3
  382. package/app/components/panels/AgentsPanelAgentDetail.tsx +1 -1
  383. package/app/components/panels/AgentsPanelHubNav.tsx +10 -6
  384. package/app/components/panels/PanelHeader.tsx +1 -1
  385. package/app/components/renderers/audio/AudioRenderer.tsx +79 -0
  386. package/app/components/renderers/audio/manifest.ts +17 -0
  387. package/app/components/renderers/image/ImageRenderer.tsx +203 -0
  388. package/app/components/renderers/image/manifest.ts +17 -0
  389. package/app/components/renderers/pdf/PdfRenderer.tsx +57 -0
  390. package/app/components/renderers/pdf/manifest.ts +15 -0
  391. package/app/components/renderers/video/VideoRenderer.tsx +91 -0
  392. package/app/components/renderers/video/manifest.ts +17 -0
  393. package/app/components/settings/McpTab.tsx +154 -28
  394. package/app/components/settings/PluginsTab.tsx +1 -1
  395. package/app/components/settings/SettingsContent.tsx +41 -7
  396. package/app/components/settings/types.ts +7 -1
  397. package/app/components/setup/index.tsx +4 -3
  398. package/app/components/walkthrough/WalkthroughOverlay.tsx +40 -11
  399. package/app/components/walkthrough/WalkthroughTooltip.tsx +1 -1
  400. package/app/hooks/useAiOrganize.ts +14 -1
  401. package/app/lib/agent/model.ts +2 -1
  402. package/app/lib/core/inbox.ts +131 -2
  403. package/app/lib/core/pdf-text.ts +28 -0
  404. package/app/lib/core/search-index.ts +29 -5
  405. package/app/lib/core/tree.ts +6 -1
  406. package/app/lib/fs.ts +31 -3
  407. package/app/lib/i18n/modules/ai-chat.ts +42 -0
  408. package/app/lib/i18n/modules/knowledge.ts +30 -0
  409. package/app/lib/i18n/modules/navigation.ts +4 -2
  410. package/app/lib/i18n/modules/panels.ts +22 -4
  411. package/app/lib/i18n/modules/settings.ts +26 -0
  412. package/app/lib/organize-history.ts +6 -0
  413. package/app/lib/renderers/index.ts +5 -1
  414. package/app/lib/settings.ts +60 -0
  415. package/app/lib/stores/walkthrough-store.ts +33 -1
  416. package/bin/commands/doctor.js +12 -6
  417. package/bin/commands/file.js +7 -4
  418. package/bin/commands/logs.js +39 -4
  419. package/bin/commands/onboard.js +1 -1
  420. package/bin/commands/open.js +6 -1
  421. package/bin/commands/space.js +7 -4
  422. package/bin/commands/update.js +31 -29
  423. package/bin/lib/build.js +19 -8
  424. package/bin/lib/clean-env.js +38 -0
  425. package/bin/lib/cli-shim.js +67 -2
  426. package/bin/lib/config.js +4 -5
  427. package/bin/lib/gateway.js +51 -27
  428. package/bin/lib/jsonc.js +7 -2
  429. package/bin/lib/mcp-agents.js +26 -5
  430. package/bin/lib/path-expand.js +6 -3
  431. package/bin/lib/port.js +5 -1
  432. package/bin/lib/stop.js +98 -41
  433. package/bin/lib/sync.js +1 -1
  434. package/package.json +1 -1
  435. package/scripts/setup.js +7 -5
  436. package/_standalone/.next/server/chunks/2673.js +0 -52
  437. package/_standalone/.next/server/chunks/5648.js +0 -2
  438. package/_standalone/.next/server/chunks/8408.js +0 -219
  439. package/_standalone/.next/static/IiTZbEzZo8l5MSUxlDwKp/_buildManifest.js +0 -1
  440. package/_standalone/.next/static/chunks/1053-c519cb347faa75e2.js +0 -29
  441. package/_standalone/.next/static/chunks/1814.72f7fe7c61e2b647.js +0 -1
  442. package/_standalone/.next/static/chunks/362.4c226d7887d5f696.js +0 -1
  443. package/_standalone/.next/static/chunks/6357-c645842834c0d4cd.js +0 -1
  444. package/_standalone/.next/static/chunks/6981-3d7dcac2d12a5670.js +0 -1
  445. package/_standalone/.next/static/chunks/7035-032641fb6f4e07b2.js +0 -1
  446. package/_standalone/.next/static/chunks/7144-5febf62f1a79fe64.js +0 -1
  447. package/_standalone/.next/static/chunks/9602-423291fdb36396d1.js +0 -1
  448. package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-074d6aafc2606561.js +0 -1
  449. package/_standalone/.next/static/chunks/app/agents/page-710d8c80fa86e93e.js +0 -5
  450. package/_standalone/.next/static/chunks/app/api/a2a/discover/route-b07a5983e85bc5e3.js +0 -1
  451. package/_standalone/.next/static/chunks/app/api/a2a/route-b07a5983e85bc5e3.js +0 -1
  452. package/_standalone/.next/static/chunks/app/api/acp/config/route-b07a5983e85bc5e3.js +0 -1
  453. package/_standalone/.next/static/chunks/app/api/acp/detect/route-b07a5983e85bc5e3.js +0 -1
  454. package/_standalone/.next/static/chunks/app/api/acp/install/route-b07a5983e85bc5e3.js +0 -1
  455. package/_standalone/.next/static/chunks/app/api/acp/registry/route-b07a5983e85bc5e3.js +0 -1
  456. package/_standalone/.next/static/chunks/app/api/acp/session/route-b07a5983e85bc5e3.js +0 -1
  457. package/_standalone/.next/static/chunks/app/api/agent-activity/route-b07a5983e85bc5e3.js +0 -1
  458. package/_standalone/.next/static/chunks/app/api/ask/route-b07a5983e85bc5e3.js +0 -1
  459. package/_standalone/.next/static/chunks/app/api/ask-sessions/route-b07a5983e85bc5e3.js +0 -1
  460. package/_standalone/.next/static/chunks/app/api/auth/route-b07a5983e85bc5e3.js +0 -1
  461. package/_standalone/.next/static/chunks/app/api/backlinks/route-b07a5983e85bc5e3.js +0 -1
  462. package/_standalone/.next/static/chunks/app/api/bootstrap/route-b07a5983e85bc5e3.js +0 -1
  463. package/_standalone/.next/static/chunks/app/api/changes/route-b07a5983e85bc5e3.js +0 -1
  464. package/_standalone/.next/static/chunks/app/api/export/route-b07a5983e85bc5e3.js +0 -1
  465. package/_standalone/.next/static/chunks/app/api/extract-pdf/route-b07a5983e85bc5e3.js +0 -1
  466. package/_standalone/.next/static/chunks/app/api/file/import/route-b07a5983e85bc5e3.js +0 -1
  467. package/_standalone/.next/static/chunks/app/api/file/route-b07a5983e85bc5e3.js +0 -1
  468. package/_standalone/.next/static/chunks/app/api/files/route-b07a5983e85bc5e3.js +0 -1
  469. package/_standalone/.next/static/chunks/app/api/git/route-b07a5983e85bc5e3.js +0 -1
  470. package/_standalone/.next/static/chunks/app/api/graph/route-b07a5983e85bc5e3.js +0 -1
  471. package/_standalone/.next/static/chunks/app/api/health/route-b07a5983e85bc5e3.js +0 -1
  472. package/_standalone/.next/static/chunks/app/api/inbox/route-b07a5983e85bc5e3.js +0 -1
  473. package/_standalone/.next/static/chunks/app/api/init/route-b07a5983e85bc5e3.js +0 -1
  474. package/_standalone/.next/static/chunks/app/api/mcp/agents/route-b07a5983e85bc5e3.js +0 -1
  475. package/_standalone/.next/static/chunks/app/api/mcp/install/route-b07a5983e85bc5e3.js +0 -1
  476. package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-b07a5983e85bc5e3.js +0 -1
  477. package/_standalone/.next/static/chunks/app/api/mcp/restart/route-b07a5983e85bc5e3.js +0 -1
  478. package/_standalone/.next/static/chunks/app/api/mcp/status/route-b07a5983e85bc5e3.js +0 -1
  479. package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-b07a5983e85bc5e3.js +0 -1
  480. package/_standalone/.next/static/chunks/app/api/monitoring/route-b07a5983e85bc5e3.js +0 -1
  481. package/_standalone/.next/static/chunks/app/api/recent-files/route-b07a5983e85bc5e3.js +0 -1
  482. package/_standalone/.next/static/chunks/app/api/restart/route-b07a5983e85bc5e3.js +0 -1
  483. package/_standalone/.next/static/chunks/app/api/search/route-b07a5983e85bc5e3.js +0 -1
  484. package/_standalone/.next/static/chunks/app/api/settings/list-models/route-b07a5983e85bc5e3.js +0 -1
  485. package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-b07a5983e85bc5e3.js +0 -1
  486. package/_standalone/.next/static/chunks/app/api/settings/route-b07a5983e85bc5e3.js +0 -1
  487. package/_standalone/.next/static/chunks/app/api/settings/test-key/route-b07a5983e85bc5e3.js +0 -1
  488. package/_standalone/.next/static/chunks/app/api/setup/check-path/route-b07a5983e85bc5e3.js +0 -1
  489. package/_standalone/.next/static/chunks/app/api/setup/check-port/route-b07a5983e85bc5e3.js +0 -1
  490. package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-b07a5983e85bc5e3.js +0 -1
  491. package/_standalone/.next/static/chunks/app/api/setup/ls/route-b07a5983e85bc5e3.js +0 -1
  492. package/_standalone/.next/static/chunks/app/api/setup/route-b07a5983e85bc5e3.js +0 -1
  493. package/_standalone/.next/static/chunks/app/api/skills/route-b07a5983e85bc5e3.js +0 -1
  494. package/_standalone/.next/static/chunks/app/api/sync/route-b07a5983e85bc5e3.js +0 -1
  495. package/_standalone/.next/static/chunks/app/api/tree-version/route-b07a5983e85bc5e3.js +0 -1
  496. package/_standalone/.next/static/chunks/app/api/uninstall/route-b07a5983e85bc5e3.js +0 -1
  497. package/_standalone/.next/static/chunks/app/api/update/route-b07a5983e85bc5e3.js +0 -1
  498. package/_standalone/.next/static/chunks/app/api/update-check/route-b07a5983e85bc5e3.js +0 -1
  499. package/_standalone/.next/static/chunks/app/api/update-status/route-b07a5983e85bc5e3.js +0 -1
  500. package/_standalone/.next/static/chunks/app/api/workflows/route-b07a5983e85bc5e3.js +0 -1
  501. package/_standalone/.next/static/chunks/app/changes/page-350992cf5091bc5b.js +0 -1
  502. package/_standalone/.next/static/chunks/app/echo/page-b07a5983e85bc5e3.js +0 -1
  503. package/_standalone/.next/static/chunks/app/global-error-e1ad0e18236ba26c.js +0 -1
  504. package/_standalone/.next/static/chunks/app/help/page-2325d25b6846ca07.js +0 -1
  505. package/_standalone/.next/static/chunks/app/layout-e706f9a963b177ba.js +0 -186
  506. package/_standalone/.next/static/chunks/app/loading-b07a5983e85bc5e3.js +0 -1
  507. package/_standalone/.next/static/chunks/app/page-2595175820acfd65.js +0 -7
  508. package/_standalone/.next/static/chunks/app/trash/page-61c6210fac1e9710.js +0 -1
  509. package/_standalone/.next/static/chunks/app/view/[...path]/loading-b07a5983e85bc5e3.js +0 -1
  510. package/_standalone/.next/static/chunks/app/view/[...path]/not-found-61474670d6bb6116.js +0 -1
  511. package/_standalone/.next/static/chunks/app/view/[...path]/page-798359c36f10ef8d.js +0 -12
  512. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-b07a5983e85bc5e3.js +0 -1
  513. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-b07a5983e85bc5e3.js +0 -1
  514. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-b07a5983e85bc5e3.js +0 -1
  515. package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-b07a5983e85bc5e3.js +0 -1
  516. package/_standalone/.next/static/css/bbf51803eade6c50.css +0 -31
  517. package/_standalone/.next/static/css/ef1151f74f00d91a.css +0 -1
  518. package/_standalone/lib/i18n/generated/explore-i18n.generated.ts +0 -138
  519. package/_standalone/lib/i18n/index.ts +0 -38
  520. package/_standalone/lib/i18n/modules/ai-chat.ts +0 -237
  521. package/_standalone/lib/i18n/modules/common.ts +0 -71
  522. package/_standalone/lib/i18n/modules/features.ts +0 -153
  523. package/_standalone/lib/i18n/modules/knowledge.ts +0 -727
  524. package/_standalone/lib/i18n/modules/navigation.ts +0 -157
  525. package/_standalone/lib/i18n/modules/onboarding.ts +0 -445
  526. package/_standalone/lib/i18n/modules/panels.ts +0 -1255
  527. package/_standalone/lib/i18n/modules/settings.ts +0 -889
  528. package/_standalone/lib/i18n.ts +0 -3
  529. /package/_standalone/.next/static/{IiTZbEzZo8l5MSUxlDwKp → 2hrwFOLEOZhHQHfrIt-Dw}/_ssgManifest.js +0 -0
@@ -7,6 +7,7 @@ import { useLocale } from '@/lib/stores/locale-store';
7
7
  import { encodePath, relativeTime, extractEmoji, stripEmoji } from '@/lib/utils';
8
8
  import { usePinnedFiles } from '@/lib/hooks/usePinnedFiles';
9
9
  import OnboardingView from './OnboardingView';
10
+ import Logo from './Logo';
10
11
  import GuideCard from './GuideCard';
11
12
  import SystemPulse from './SystemPulse';
12
13
  import { InboxSection } from './home/InboxSection';
@@ -78,13 +79,15 @@ interface SectionTitleProps {
78
79
 
79
80
  function SectionTitle({ icon, children, count, action }: SectionTitleProps) {
80
81
  return (
81
- <div className="flex items-center gap-2 mb-4">
82
- <span className="text-[var(--amber)]">{icon}</span>
83
- <h2 className="text-sm font-semibold font-display text-foreground">
82
+ <div className="flex items-center gap-2.5 mb-5">
83
+ <div className="flex items-center justify-center w-6 h-6 rounded-md bg-[var(--amber-subtle)] text-[var(--amber)]">
84
+ {icon}
85
+ </div>
86
+ <h2 className="text-[13px] font-semibold text-foreground tracking-wide">
84
87
  {children}
85
88
  </h2>
86
89
  {count != null && count > 0 && (
87
- <span className="text-xs tabular-nums text-muted-foreground font-display">{count}</span>
90
+ <span className="inline-flex items-center justify-center min-w-[20px] h-5 px-1.5 text-[10px] font-semibold rounded-full bg-muted text-muted-foreground tabular-nums">{count}</span>
88
91
  )}
89
92
  {action ? <div className="ml-auto">{action}</div> : null}
90
93
  </div>
@@ -103,7 +106,7 @@ function ToggleButton({ expanded, onToggle, showLabel, hideLabel, className = ''
103
106
  <button
104
107
  onClick={onToggle}
105
108
  aria-expanded={expanded}
106
- className={`flex items-center gap-1.5 text-xs font-medium text-[var(--amber)] transition-colors hover:opacity-80 cursor-pointer font-display ${className}`}
109
+ className={`flex items-center gap-1.5 text-xs font-medium text-[var(--amber)] transition-colors hover:opacity-80 cursor-pointer ${className}`}
107
110
  >
108
111
  <ChevronDown size={12} className={`transition-transform duration-200 ${expanded ? 'rotate-180' : ''}`} />
109
112
  <span>{expanded ? hideLabel : showLabel}</span>
@@ -133,7 +136,7 @@ function FileRow({ filePath, mtime, formatTime, subPath }: {
133
136
  <span className="text-sm truncate block text-foreground" suppressHydrationWarning>{name}</span>
134
137
  {subPath && <span className="text-xs truncate block text-muted-foreground opacity-50" suppressHydrationWarning>{subPath}</span>}
135
138
  </div>
136
- <span className="text-xs shrink-0 tabular-nums font-display text-muted-foreground opacity-40" suppressHydrationWarning>
139
+ <span className="text-xs shrink-0 tabular-nums text-muted-foreground/40" suppressHydrationWarning>
137
140
  {formatTime(mtime)}
138
141
  </span>
139
142
  </Link>
@@ -180,25 +183,25 @@ export default function HomeContent({ recent, existingFiles, spaces }: { recent:
180
183
  <ExampleCleanupBanner />
181
184
 
182
185
  {/* ══════════ Hero ══════════ */}
183
- <div className="mb-10">
186
+ <div className="mb-14">
184
187
  {/* Brand mark */}
185
- <div className="flex items-center gap-3 mb-2">
186
- <div className="w-1 h-7 rounded-full bg-gradient-to-b from-[var(--amber)] to-[var(--amber)]/20" />
187
- <h1 className="text-2xl font-semibold tracking-tight font-display text-foreground">
188
- MindOS
188
+ <div className="flex items-center gap-5 mb-1">
189
+ <Logo id="home-hero" className="w-14 h-7 opacity-90" />
190
+ <h1 className="text-[2rem] font-brand leading-none">
191
+ <span className="text-foreground">Mind</span><span className="text-[var(--amber)]">OS</span>
189
192
  </h1>
190
193
  </div>
191
- <p className="text-sm leading-relaxed text-muted-foreground pl-4 max-w-lg mb-6">
194
+ <p className="text-sm text-muted-foreground/50 mt-3 max-w-md leading-relaxed">
192
195
  {t.app.tagline}
193
196
  </p>
194
197
 
195
198
  {/* Command bar — the single most important action */}
196
- <div className="w-full max-w-xl flex flex-col sm:flex-row items-stretch sm:items-center gap-2 pl-4">
199
+ <div className="w-full max-w-xl flex flex-col sm:flex-row items-stretch sm:items-center gap-2 mt-8">
197
200
  <button
198
201
  onClick={triggerAsk}
199
202
  title="⌘/"
200
203
  data-walkthrough="ask-button"
201
- className="flex-1 flex items-center gap-3 px-4 py-3 rounded-xl border border-border/60 shadow-sm bg-card transition-all duration-150 hover:border-[var(--amber)]/50 hover:shadow-md group"
204
+ className="flex-1 flex items-center gap-3 px-4 py-3.5 rounded-xl border border-border/50 shadow-sm bg-card/80 backdrop-blur-sm transition-all duration-200 hover:border-[var(--amber)]/40 hover:shadow-md hover:-translate-y-0.5 group"
202
205
  >
203
206
  <Sparkles size={16} className="shrink-0 text-[var(--amber)] group-hover:scale-110 transition-transform duration-150" />
204
207
  <div className="flex-1 min-h-[1.5rem] flex items-center">
@@ -216,7 +219,7 @@ export default function HomeContent({ recent, existingFiles, spaces }: { recent:
216
219
  <button
217
220
  onClick={triggerSearch}
218
221
  title="⌘K"
219
- className="flex items-center gap-2 px-3.5 py-3 rounded-xl border border-border/60 text-sm text-muted-foreground transition-all duration-150 shrink-0 hover:bg-muted hover:shadow-sm"
222
+ className="flex items-center gap-2 px-3.5 py-3.5 rounded-xl border border-border/50 text-sm text-muted-foreground transition-all duration-200 shrink-0 hover:bg-muted/60 hover:shadow-sm hover:-translate-y-0.5"
220
223
  >
221
224
  <Search size={14} />
222
225
  <kbd className="hidden sm:inline-flex items-center px-1.5 py-0.5 rounded text-xs font-mono bg-muted">
@@ -226,10 +229,10 @@ export default function HomeContent({ recent, existingFiles, spaces }: { recent:
226
229
  </div>
227
230
 
228
231
  {/* Quick actions — only 2: New + Continue */}
229
- <div className="flex items-center gap-3 mt-4 pl-4">
232
+ <div className="flex items-center gap-3 mt-5">
230
233
  <Link
231
234
  href="/view/Untitled.md"
232
- className="inline-flex items-center gap-2 px-3.5 py-2 rounded-lg text-sm font-medium transition-all duration-150 hover:shadow-sm bg-[var(--amber)] text-[var(--amber-foreground)]"
235
+ className="inline-flex items-center gap-2 px-4 py-2.5 rounded-lg text-sm font-medium transition-all duration-200 hover:shadow-md hover:-translate-y-0.5 bg-[var(--amber)] text-[var(--amber-foreground)]"
233
236
  >
234
237
  <FilePlus size={14} />
235
238
  <span>{t.home.newNote}</span>
@@ -257,12 +260,15 @@ export default function HomeContent({ recent, existingFiles, spaces }: { recent:
257
260
  <RecentActivityFeed />
258
261
  </div>
259
262
 
263
+ {/* ── Visual divider ── */}
264
+ <div className="border-t border-border/30 mb-10" />
265
+
260
266
  {/* ══════════ Inbox ══════════ */}
261
267
  <InboxSection />
262
268
 
263
269
  {/* ══════════ Spaces ══════════ */}
264
270
  {(spaceList.length > 0 || true) && (
265
- <section className="mb-10">
271
+ <section className="mb-12">
266
272
  <SectionTitle
267
273
  icon={<Brain size={14} />}
268
274
  count={spaceList.length > 0 ? spaceList.length : undefined}
@@ -272,7 +278,7 @@ export default function HomeContent({ recent, existingFiles, spaces }: { recent:
272
278
  </SectionTitle>
273
279
  {spaceList.length > 0 ? (
274
280
  <>
275
- <div className="grid grid-cols-2 sm:grid-cols-3 gap-2">
281
+ <div className="grid grid-cols-2 sm:grid-cols-3 gap-2.5">
276
282
  {(showAllSpaces ? spaceList : spaceList.slice(0, SPACES_PER_ROW)).map(s => {
277
283
  const emoji = extractEmoji(s.name);
278
284
  const label = stripEmoji(s.name);
@@ -281,10 +287,10 @@ export default function HomeContent({ recent, existingFiles, spaces }: { recent:
281
287
  <Link
282
288
  key={s.name}
283
289
  href={`/view/${encodePath(s.path)}`}
284
- className={`flex items-start gap-3 px-3.5 py-3 rounded-xl border transition-all duration-150 ${
290
+ className={`flex items-start gap-3 px-4 py-3.5 rounded-xl border transition-all duration-200 ${
285
291
  isEmpty
286
292
  ? 'border-dashed border-border/50 opacity-50 hover:opacity-70'
287
- : 'border-border hover:border-[var(--amber)]/30 hover:shadow-sm'
293
+ : 'border-border/60 hover:border-[var(--amber)]/30 hover:shadow-md hover:-translate-y-0.5 bg-card/40'
288
294
  }`}
289
295
  >
290
296
  {emoji ? (
@@ -326,16 +332,19 @@ export default function HomeContent({ recent, existingFiles, spaces }: { recent:
326
332
  {/* ══════════ Pinned Files ══════════ */}
327
333
  <PinnedFilesSection formatTime={formatTime} />
328
334
 
335
+ {/* ── Visual divider ── */}
336
+ <div className="border-t border-border/30 mb-10" />
337
+
329
338
  {/* ══════════ Recently Edited ══════════ */}
330
339
  {recent.length > 0 && (
331
- <section className="mb-10">
340
+ <section className="mb-12">
332
341
  <SectionTitle
333
342
  icon={<Clock size={14} />}
334
343
  count={recent.length}
335
344
  action={
336
345
  <Link
337
346
  href="/changes"
338
- className="flex items-center gap-1.5 text-xs font-medium text-[var(--amber)] transition-colors hover:opacity-80 font-display"
347
+ className="flex items-center gap-1.5 text-xs font-medium text-[var(--amber)] transition-colors hover:opacity-80"
339
348
  >
340
349
  <History size={12} />
341
350
  <span>{t.home.changeHistory}</span>
@@ -357,7 +366,7 @@ export default function HomeContent({ recent, existingFiles, spaces }: { recent:
357
366
  className="flex items-center gap-2 px-1 py-1.5 rounded-lg group transition-colors hover:bg-muted/50"
358
367
  >
359
368
  <Folder size={14} className="shrink-0 text-[var(--amber)]" />
360
- <span className="text-xs font-semibold font-display text-foreground group-hover:text-[var(--amber)] transition-colors" suppressHydrationWarning>
369
+ <span className="text-xs font-semibold text-foreground group-hover:text-[var(--amber)] transition-colors" suppressHydrationWarning>
361
370
  {group.space}
362
371
  </span>
363
372
  <span className="text-xs text-muted-foreground/50 tabular-nums" suppressHydrationWarning>
@@ -369,7 +378,7 @@ export default function HomeContent({ recent, existingFiles, spaces }: { recent:
369
378
  </span>
370
379
  )}
371
380
  </Link>
372
- <div className="flex flex-col gap-0.5 ml-2 border-l border-border/40 pl-3">
381
+ <div className="flex flex-col gap-0.5 ml-2 border-l-2 border-border/20 pl-3">
373
382
  {visibleFiles.map(({ path: filePath, mtime }) => (
374
383
  <FileRow
375
384
  key={filePath}
@@ -388,11 +397,11 @@ export default function HomeContent({ recent, existingFiles, spaces }: { recent:
388
397
  <div>
389
398
  <div className="flex items-center gap-2 px-1 py-1.5">
390
399
  <FileText size={14} className="shrink-0 text-muted-foreground/50" />
391
- <span className="text-xs font-semibold font-display text-muted-foreground/60">
400
+ <span className="text-xs font-semibold text-muted-foreground/60">
392
401
  {t.home.other}
393
402
  </span>
394
403
  </div>
395
- <div className="flex flex-col gap-0.5 ml-2 border-l border-border/40 pl-3">
404
+ <div className="flex flex-col gap-0.5 ml-2 border-l-2 border-border/20 pl-3">
396
405
  {rootFiles.map(({ path: filePath, mtime }) => (
397
406
  <FileRow key={filePath} filePath={filePath} mtime={mtime} formatTime={formatTime} />
398
407
  ))}
@@ -412,7 +421,7 @@ export default function HomeContent({ recent, existingFiles, spaces }: { recent:
412
421
  </div>
413
422
  ) : (
414
423
  <div className="relative pl-4">
415
- <div className="absolute left-0 top-1 bottom-1 w-px bg-border/40" />
424
+ <div className="absolute left-0 top-1 bottom-1 w-0.5 rounded-full bg-gradient-to-b from-[var(--amber)]/20 via-border/30 to-transparent" />
416
425
  <div className="flex flex-col gap-0.5">
417
426
  {(showAll ? recent : recent.slice(0, 5)).map(({ path: filePath, mtime }, idx) => {
418
427
  const isCSV = filePath.endsWith('.csv');
@@ -422,10 +431,10 @@ export default function HomeContent({ recent, existingFiles, spaces }: { recent:
422
431
  <div key={filePath} className="relative group">
423
432
  <div
424
433
  aria-hidden="true"
425
- className={`absolute -left-4 top-1/2 -translate-y-1/2 rounded-full transition-all duration-150 group-hover:scale-150 ${
434
+ className={`absolute -left-[5px] top-1/2 -translate-y-1/2 rounded-full transition-all duration-200 group-hover:scale-125 ${
426
435
  idx === 0
427
- ? 'w-2 h-2 bg-[var(--amber)] ring-2 ring-[var(--amber)]/20'
428
- : 'w-1.5 h-1.5 bg-muted-foreground/20'
436
+ ? 'w-2.5 h-2.5 bg-[var(--amber)] ring-[3px] ring-[var(--amber)]/15 shadow-sm shadow-[var(--amber)]/20'
437
+ : 'w-1.5 h-1.5 bg-muted-foreground/25 group-hover:bg-[var(--amber)]/50'
429
438
  }`}
430
439
  />
431
440
  <Link
@@ -440,7 +449,7 @@ export default function HomeContent({ recent, existingFiles, spaces }: { recent:
440
449
  <span className="text-sm truncate block text-foreground" suppressHydrationWarning>{name}</span>
441
450
  {dir && <span className="text-xs truncate block text-muted-foreground/40" suppressHydrationWarning>{dir}</span>}
442
451
  </div>
443
- <span className="text-xs shrink-0 tabular-nums font-display text-muted-foreground/40" suppressHydrationWarning>
452
+ <span className="text-xs shrink-0 tabular-nums text-muted-foreground/40" suppressHydrationWarning>
444
453
  {formatTime(mtime)}
445
454
  </span>
446
455
  </Link>
@@ -463,8 +472,8 @@ export default function HomeContent({ recent, existingFiles, spaces }: { recent:
463
472
  )}
464
473
 
465
474
  {/* Footer */}
466
- <div className="py-6 border-t border-border/20 flex items-center gap-1.5 text-xs font-display text-muted-foreground/30">
467
- <Sparkles size={10} className="text-[var(--amber)]/40" />
475
+ <div className="mt-6 py-8 border-t border-border/20 flex items-center justify-center gap-2 text-[11px] text-muted-foreground/25">
476
+ <Logo id="home-footer" className="w-5 h-2.5 opacity-30" />
468
477
  <span>{t.app.footer}</span>
469
478
  </div>
470
479
  </div>
@@ -482,12 +491,14 @@ function PinnedFilesSection({ formatTime }: { formatTime: (t: number) => string
482
491
  <SectionTitle icon={<Star size={14} />}>
483
492
  {t.pinnedFiles.title}
484
493
  </SectionTitle>
485
- <div className="py-6 px-4 rounded-lg border border-dashed border-border/50 text-center">
486
- <Star size={20} className="mx-auto mb-2 text-muted-foreground/40" />
487
- <p className="text-sm font-medium text-muted-foreground mb-1">
494
+ <div className="py-8 px-6 rounded-xl border border-border/40 bg-card/30 text-center">
495
+ <div className="inline-flex items-center justify-center w-10 h-10 rounded-full bg-[var(--amber-subtle)] mb-3">
496
+ <Star size={18} className="text-[var(--amber)]/60" />
497
+ </div>
498
+ <p className="text-sm font-medium text-muted-foreground/70 mb-1">
488
499
  {t.pinnedFiles.empty ?? 'No pinned files'}
489
500
  </p>
490
- <p className="text-xs text-muted-foreground/60">
501
+ <p className="text-xs text-muted-foreground/40 max-w-xs mx-auto leading-relaxed">
491
502
  {t.pinnedFiles.emptyHint ?? 'Click the star icon on any file to pin it here'}
492
503
  </p>
493
504
  </div>
@@ -541,7 +552,7 @@ function CreateSpaceButton({ t }: { t: ReturnType<typeof useLocale>['t'] }) {
541
552
  return (
542
553
  <button
543
554
  onClick={() => window.dispatchEvent(new Event('mindos:create-space'))}
544
- className="flex items-center gap-1.5 text-xs font-medium text-[var(--amber)] transition-colors hover:opacity-80 cursor-pointer font-display"
555
+ className="flex items-center gap-1.5 text-xs font-medium text-[var(--amber)] transition-colors hover:opacity-80 cursor-pointer"
545
556
  >
546
557
  <Plus size={12} />
547
558
  <span>{t.home.newSpace}</span>
@@ -114,8 +114,7 @@ export default function ImportModal({ open, onClose, defaultSpace, initialFiles,
114
114
  const prompt = attachments.length === 1
115
115
  ? (t.fileImport.digestPromptSingle as (name: string, space?: string) => string)(attachments[0].name, space)
116
116
  : (t.fileImport.digestPromptMulti as (n: number, space?: string) => string)(attachments.length, space);
117
- // Start AI organize and immediately close modal — toast takes over
118
- aiOrganize.start(attachments, prompt);
117
+ aiOrganize.start(attachments, prompt, 'import-modal');
119
118
  onClose();
120
119
  im.reset();
121
120
  }
@@ -54,7 +54,7 @@ export default function KeyboardShortcuts() {
54
54
  >
55
55
  {/* Header */}
56
56
  <div className="flex items-center justify-between px-5 py-3.5 border-b border-border">
57
- <span className="text-sm font-medium font-display text-foreground">{s.title}</span>
57
+ <span className="text-sm font-medium text-foreground">{s.title}</span>
58
58
  <button
59
59
  onClick={() => setOpen(false)}
60
60
  className="p-1 rounded hover:bg-muted text-muted-foreground hover:text-foreground transition-colors"
@@ -35,7 +35,7 @@ export default function MarkdownEditor({ value, onChange, viewMode, onViewModeCh
35
35
  <button
36
36
  key={m.id}
37
37
  onClick={() => onViewModeChange(m.id)}
38
- className={`flex items-center gap-1.5 px-2.5 py-1.5 rounded text-xs font-medium transition-colors font-display ${
38
+ className={`flex items-center gap-1.5 px-2.5 py-1.5 rounded text-xs font-medium transition-colors ${
39
39
  viewMode === m.id
40
40
  ? 'bg-card text-foreground shadow-sm'
41
41
  : 'text-muted-foreground hover:text-foreground'
@@ -64,7 +64,7 @@ export default function OnboardingView() {
64
64
  <div className="text-center mb-10">
65
65
  <div className="inline-flex items-center gap-2 mb-4">
66
66
  <Sparkles size={18} className="text-[var(--amber)]" />
67
- <h1 className="text-2xl font-semibold tracking-tight font-display text-foreground">
67
+ <h1 className="text-2xl font-brand text-foreground">
68
68
  MindOS
69
69
  </h1>
70
70
  </div>
@@ -131,7 +131,7 @@ export default function OnboardingView() {
131
131
  </div>
132
132
 
133
133
  {/* Import hint */}
134
- <p className="text-center text-xs leading-relaxed max-w-sm mx-auto font-display text-muted-foreground opacity-60">
134
+ <p className="text-center text-xs leading-relaxed max-w-sm mx-auto text-muted-foreground/60">
135
135
  {ob.importHint}
136
136
  </p>
137
137
  <p className="text-center mt-2">
@@ -119,10 +119,12 @@ export default function OrganizeToast({
119
119
  undone: c.undone,
120
120
  })),
121
121
  status: 'completed',
122
+ source: aiOrganize.source,
123
+ durationMs: aiOrganize.durationMs,
122
124
  });
123
125
  onHistoryUpdate?.();
124
126
  }
125
- }, [isDone, aiOrganize.changes, aiOrganize.sourceFileNames, onHistoryUpdate]);
127
+ }, [isDone, aiOrganize.changes, aiOrganize.sourceFileNames, aiOrganize.source, aiOrganize.durationMs, onHistoryUpdate]);
126
128
 
127
129
  // Auto-dismiss timer (3 min after done, reset on user interaction)
128
130
  const resetTimer = useCallback(() => {
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { useMemo, useState, useRef, useEffect, useCallback } from 'react';
4
4
  import { useRouter } from 'next/navigation';
5
- import { ChevronsDownUp, ChevronsUpDown, Plus, Import, FileText, Layers, MoreHorizontal, Eye, EyeOff, Trash2 } from 'lucide-react';
5
+ import { ChevronsDownUp, ChevronsUpDown, Plus, Import, FileText, Layers, MoreHorizontal, Eye, EyeOff, Trash2, Inbox } from 'lucide-react';
6
6
  import type { PanelId } from './ActivityBar';
7
7
  import type { FileNode } from '@/lib/types';
8
8
  import FileTree, { setShowHiddenFiles, useShowHiddenFiles } from './FileTree';
@@ -128,14 +128,25 @@ export default function Panel({
128
128
  };
129
129
  }, [morePopover]);
130
130
 
131
- // Fetch trash count on mount and when files change
131
+ const [inboxCount, setInboxCount] = useState(0);
132
+
132
133
  useEffect(() => {
133
- const fetchCount = () => {
134
+ const fetchTrash = () => {
134
135
  listTrashAction().then(items => setTrashCount(items.length)).catch(() => {});
135
136
  };
136
- fetchCount();
137
- window.addEventListener('mindos:files-changed', fetchCount);
138
- return () => window.removeEventListener('mindos:files-changed', fetchCount);
137
+ const fetchInbox = () => {
138
+ fetch('/api/inbox').then(r => r.json()).then(d => {
139
+ if (Array.isArray(d.files)) setInboxCount(d.files.length);
140
+ }).catch(() => {});
141
+ };
142
+ fetchTrash();
143
+ fetchInbox();
144
+ window.addEventListener('mindos:files-changed', fetchTrash);
145
+ window.addEventListener('mindos:inbox-updated', fetchInbox);
146
+ return () => {
147
+ window.removeEventListener('mindos:files-changed', fetchTrash);
148
+ window.removeEventListener('mindos:inbox-updated', fetchInbox);
149
+ };
139
150
  }, []);
140
151
 
141
152
  // Double-click hint: show only until user has used it once.
@@ -280,6 +291,16 @@ export default function Panel({
280
291
  {showHidden && <span className="text-[var(--amber)] text-xs">✓</span>}
281
292
  </button>
282
293
  <div className="my-1 border-t border-border/50" />
294
+ <button
295
+ className="w-full flex items-center gap-2 px-3 py-1.5 text-sm text-foreground hover:bg-muted transition-colors text-left"
296
+ onClick={() => { setMorePopover(false); router.push('/view/Inbox/'); }}
297
+ >
298
+ <Inbox size={14} className="shrink-0 text-[var(--amber)]" />
299
+ <span className="flex-1">{t.sidebar.capture}</span>
300
+ {inboxCount > 0 && (
301
+ <span className="text-xs font-medium text-[var(--amber)] tabular-nums">{inboxCount}</span>
302
+ )}
303
+ </button>
283
304
  <button
284
305
  className="w-full flex items-center gap-2 px-3 py-1.5 text-sm text-foreground hover:bg-muted transition-colors text-left"
285
306
  onClick={() => { setMorePopover(false); router.push('/trash'); }}
@@ -94,7 +94,7 @@ export default function Sidebar({ fileTree, collapsed = false, onCollapse, onExp
94
94
  <div className="flex items-center justify-between px-4 py-4 border-b border-border shrink-0">
95
95
  <Link href="/" className="flex items-center gap-2 hover:opacity-80 transition-opacity">
96
96
  <Logo id="desktop" />
97
- <span className="font-semibold text-foreground text-sm tracking-wide font-display">MindOS</span>
97
+ <span className="text-foreground text-sm font-brand">MindOS</span>
98
98
  </Link>
99
99
  {/* Mobile close */}
100
100
  <button onClick={() => setMobileOpen(false)} className="md:hidden p-1 rounded hover:bg-muted text-muted-foreground hover:text-foreground transition-colors">
@@ -184,12 +184,14 @@ export default function SidebarLayout({ fileTree, children }: SidebarLayoutProps
184
184
  }, [handleOpenImport]);
185
185
 
186
186
  // ── Inbox: batch AI organize from InboxSection ──
187
+ const organizedFileNamesRef = useRef<string[]>([]);
187
188
  useEffect(() => {
188
189
  const handler = (e: Event) => {
189
190
  const files = (e as CustomEvent).detail?.files as Array<{ name: string; path: string }> | undefined;
190
191
  if (!files || files.length === 0 || aiOrganize.phase === 'organizing') return;
191
192
 
192
193
  const prompt = t.inbox.organizePrompt(files.map(f => f.name));
194
+ organizedFileNamesRef.current = files.map(f => f.name);
193
195
 
194
196
  (async () => {
195
197
  const attachments: Array<{ name: string; content: string }> = [];
@@ -203,7 +205,7 @@ export default function SidebarLayout({ fileTree, children }: SidebarLayoutProps
203
205
  } catch { /* skip unreadable files */ }
204
206
  }
205
207
  if (attachments.length > 0) {
206
- aiOrganize.start(attachments, prompt);
208
+ aiOrganize.start(attachments, prompt, 'inbox-organize');
207
209
  } else {
208
210
  toast.error(t.inbox.organizeFailed, 4000);
209
211
  window.dispatchEvent(new Event('mindos:organize-done'));
@@ -214,12 +216,28 @@ export default function SidebarLayout({ fileTree, children }: SidebarLayoutProps
214
216
  return () => window.removeEventListener('mindos:inbox-organize', handler);
215
217
  }, [aiOrganize, t]);
216
218
 
217
- // Notify InboxSection when organize finishes
219
+ // Notify InboxSection when organize finishes + clean up source inbox files
218
220
  useEffect(() => {
219
- if (aiOrganize.phase === 'done' || aiOrganize.phase === 'error') {
221
+ if (aiOrganize.phase === 'done') {
222
+ const hasSuccessfulChanges = aiOrganize.changes.some(c => c.ok);
223
+ const names = organizedFileNamesRef.current;
224
+ if (hasSuccessfulChanges && names.length > 0) {
225
+ fetch('/api/inbox', {
226
+ method: 'DELETE',
227
+ headers: { 'Content-Type': 'application/json' },
228
+ body: JSON.stringify({ names }),
229
+ })
230
+ .then(() => {
231
+ window.dispatchEvent(new Event('mindos:inbox-updated'));
232
+ })
233
+ .catch(() => { /* best-effort cleanup */ });
234
+ organizedFileNamesRef.current = [];
235
+ }
236
+ window.dispatchEvent(new Event('mindos:organize-done'));
237
+ } else if (aiOrganize.phase === 'error') {
220
238
  window.dispatchEvent(new Event('mindos:organize-done'));
221
239
  }
222
- }, [aiOrganize.phase]);
240
+ }, [aiOrganize.phase, aiOrganize.changes]);
223
241
 
224
242
  // Listen for cross-component "open panel" events (e.g. GuideCard → Agents)
225
243
  useEffect(() => {
@@ -381,7 +399,7 @@ export default function SidebarLayout({ fileTree, children }: SidebarLayoutProps
381
399
  {/* Skip link */}
382
400
  <a
383
401
  href="#main-content"
384
- className="sr-only focus:not-sr-only focus:fixed focus:top-2 focus:left-2 focus:z-[60] focus:px-4 focus:py-2 focus:rounded-lg focus:text-sm focus:font-medium focus:font-display bg-[var(--amber)] text-[var(--amber-foreground)]"
402
+ className="sr-only focus:not-sr-only focus:fixed focus:top-2 focus:left-2 focus:z-[60] focus:px-4 focus:py-2 focus:rounded-lg focus:text-sm focus:font-medium bg-[var(--amber)] text-[var(--amber-foreground)]"
385
403
  >
386
404
  Skip to main content
387
405
  </a>
@@ -406,6 +424,11 @@ export default function SidebarLayout({ fileTree, children }: SidebarLayoutProps
406
424
  lp.setActivePanel(wasActive ? null : 'discover');
407
425
  if (!wasActive) router.push('/explore');
408
426
  }}
427
+ onSpacesClick={() => {
428
+ const wasActive = lp.activePanel === 'files';
429
+ lp.setActivePanel(wasActive ? null : 'files');
430
+ if (!wasActive) router.push('/wiki');
431
+ }}
409
432
  syncStatus={syncStatus}
410
433
  expanded={lp.railExpanded}
411
434
  onExpandedChange={handleExpandedChange}
@@ -509,7 +532,7 @@ export default function SidebarLayout({ fileTree, children }: SidebarLayoutProps
509
532
  </button>
510
533
  <Link href="/" className="flex items-center gap-2 hover:opacity-80 transition-opacity">
511
534
  <Logo id="mobile" />
512
- <span className="font-semibold text-foreground text-sm tracking-wide">MindOS</span>
535
+ <span className="text-foreground text-sm font-brand">MindOS</span>
513
536
  </Link>
514
537
  <div className="flex items-center gap-0.5">
515
538
  <button onClick={openSyncSettings} className="p-3 rounded-lg hover:bg-muted text-muted-foreground hover:text-foreground transition-colors active:bg-accent flex items-center justify-center" aria-label="Sync status">
@@ -529,7 +552,7 @@ export default function SidebarLayout({ fileTree, children }: SidebarLayoutProps
529
552
  <div className="flex items-center justify-between px-4 py-4 border-b border-border shrink-0">
530
553
  <Link href="/" className="flex items-center gap-2 hover:opacity-80 transition-opacity">
531
554
  <Logo id="drawer" />
532
- <span className="font-semibold text-foreground text-sm tracking-wide font-display">MindOS</span>
555
+ <span className="text-foreground text-sm font-brand">MindOS</span>
533
556
  </Link>
534
557
  <button onClick={() => setMobileOpen(false)} className="p-1 rounded hover:bg-muted text-muted-foreground hover:text-foreground transition-colors">
535
558
  <X size={16} />
@@ -78,14 +78,14 @@ export default function SystemPulse() {
78
78
  return (
79
79
  <section className="mb-10">
80
80
  {/* Use same title style as other sections */}
81
- <div className="flex items-center gap-2 mb-4">
82
- <span className="text-[var(--amber)]"><Bot size={13} /></span>
83
- <h2 className="text-sm font-semibold font-display text-foreground">{pulse.title}</h2>
81
+ <div className="flex items-center gap-2.5 mb-5">
82
+ <div className="flex items-center justify-center w-6 h-6 rounded-md bg-[var(--amber-subtle)] text-[var(--amber)]"><Bot size={13} /></div>
83
+ <h2 className="text-[13px] font-semibold text-foreground tracking-wide">{pulse.title}</h2>
84
84
  </div>
85
- <div className="rounded-xl border border-dashed border-border/60 p-4">
85
+ <div className="rounded-xl border border-border/40 bg-card/30 p-5">
86
86
  <div className="flex items-center gap-4">
87
- <div className="w-9 h-9 rounded-lg bg-[var(--amber)]/8 flex items-center justify-center shrink-0">
88
- <Bot size={16} className="text-[var(--amber)]" />
87
+ <div className="w-10 h-10 rounded-full bg-[var(--amber-subtle)] flex items-center justify-center shrink-0">
88
+ <Bot size={18} className="text-[var(--amber)]" />
89
89
  </div>
90
90
  <div className="flex-1 min-w-0">
91
91
  <p className="text-sm font-medium text-foreground">{pulse.connectTitle}</p>
@@ -114,10 +114,10 @@ export default function SystemPulse() {
114
114
  onClick={toggleCollapsed}
115
115
  className="w-full flex items-center gap-2 group cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded"
116
116
  >
117
- <span className="text-[var(--amber)]"><Bot size={13} /></span>
118
- <h2 className="text-sm font-semibold font-display text-foreground">{pulse.title}</h2>
117
+ <div className="flex items-center justify-center w-6 h-6 rounded-md bg-[var(--amber-subtle)] text-[var(--amber)]"><Bot size={13} /></div>
118
+ <h2 className="text-[13px] font-semibold text-foreground tracking-wide">{pulse.title}</h2>
119
119
  {totalConnected > 0 && (
120
- <span className="text-xs tabular-nums text-muted-foreground font-display">{totalConnected}</span>
120
+ <span className="inline-flex items-center justify-center min-w-[20px] h-5 px-1.5 text-[10px] font-semibold rounded-full bg-muted text-muted-foreground tabular-nums">{totalConnected}</span>
121
121
  )}
122
122
  {/* Inline status */}
123
123
  <div className="flex items-center gap-2 ml-1">
@@ -144,11 +144,11 @@ export default function SystemPulse() {
144
144
  return (
145
145
  <section className="mb-10">
146
146
  {/* Section title — same pattern as Spaces / Recently Edited */}
147
- <div className="flex items-center gap-2 mb-4">
148
- <span className="text-[var(--amber)]"><Bot size={13} /></span>
149
- <h2 className="text-sm font-semibold font-display text-foreground">{pulse.title}</h2>
150
- {totalConnected > 0 && (
151
- <span className="text-xs tabular-nums text-muted-foreground font-display">{totalConnected}</span>
147
+ <div className="flex items-center gap-2.5 mb-5">
148
+ <div className="flex items-center justify-center w-6 h-6 rounded-md bg-[var(--amber-subtle)] text-[var(--amber)]"><Bot size={13} /></div>
149
+ <h2 className="text-[13px] font-semibold text-foreground tracking-wide">{pulse.title}</h2>
150
+ {totalConnected > 0 && (
151
+ <span className="inline-flex items-center justify-center min-w-[20px] h-5 px-1.5 text-[10px] font-semibold rounded-full bg-muted text-muted-foreground tabular-nums">{totalConnected}</span>
152
152
  )}
153
153
  {mcpRunning && (
154
154
  <span className="inline-flex items-center gap-1 text-xs text-muted-foreground/50 ml-1">
@@ -159,7 +159,7 @@ export default function SystemPulse() {
159
159
  <div className="flex items-center gap-2 ml-auto">
160
160
  <Link
161
161
  href="/agents"
162
- className="text-xs font-medium text-[var(--amber)] hover:opacity-80 transition-opacity font-display"
162
+ className="text-xs font-medium text-[var(--amber)] hover:opacity-80 transition-opacity"
163
163
  >
164
164
  {pulse.manage}
165
165
  </Link>
@@ -181,7 +181,7 @@ export default function SystemPulse() {
181
181
  <Link
182
182
  key={agent.key}
183
183
  href={`/agents/${encodeURIComponent(agent.key)}`}
184
- className="flex items-center gap-3 px-3.5 py-3 rounded-xl border border-border hover:border-[var(--amber)]/30 hover:shadow-sm transition-all duration-150 hover:bg-muted/30 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
184
+ className="flex items-center gap-3 px-3.5 py-3 rounded-xl border border-border hover:border-[var(--amber)]/30 hover:shadow-md hover:-translate-y-0.5 transition-all duration-200 hover:bg-muted/30 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
185
185
  >
186
186
  {/* Avatar */}
187
187
  <div className="relative w-8 h-8 rounded-lg bg-[var(--amber)]/8 text-[var(--amber-text)] ring-1 ring-[var(--amber)]/15 flex items-center justify-center text-xs font-semibold font-display shrink-0">
@@ -96,7 +96,7 @@ export default function TrashPageClient({ initialItems }: { initialItems: TrashM
96
96
  <div className="content-width xl:mr-[220px] rounded-xl border border-border bg-card px-4 py-3 md:px-5 md:py-4">
97
97
  <div className="flex flex-wrap items-start justify-between gap-3">
98
98
  <div className="min-w-0">
99
- <div className="flex items-center gap-2 text-sm font-medium text-foreground font-display">
99
+ <div className="flex items-center gap-2 text-sm font-medium text-foreground">
100
100
  <Trash2 size={15} />
101
101
  {t.trash.title}
102
102
  </div>
@@ -126,10 +126,12 @@ export default function TrashPageClient({ initialItems }: { initialItems: TrashM
126
126
  <div className="px-4 md:px-6 py-4 md:py-6">
127
127
  <div className="content-width xl:mr-[220px]">
128
128
  {items.length === 0 ? (
129
- <div className="rounded-xl border border-dashed border-border bg-card p-12 text-center">
130
- <Trash2 size={32} className="mx-auto text-muted-foreground/30 mb-3" />
131
- <p className="text-sm text-muted-foreground font-display">{t.trash.empty}</p>
132
- <p className="text-xs text-muted-foreground/60 mt-1">{t.trash.emptySubtext}</p>
129
+ <div className="rounded-xl border border-border/40 bg-card/30 p-12 text-center">
130
+ <div className="inline-flex items-center justify-center w-12 h-12 rounded-full bg-muted/60 mb-4">
131
+ <Trash2 size={22} className="text-muted-foreground/40" />
132
+ </div>
133
+ <p className="text-sm font-medium text-muted-foreground/70">{t.trash.empty}</p>
134
+ <p className="text-xs text-muted-foreground/40 mt-1 max-w-xs mx-auto leading-relaxed">{t.trash.emptySubtext}</p>
133
135
  </div>
134
136
  ) : (
135
137
  <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3">
@@ -227,7 +229,7 @@ export default function TrashPageClient({ initialItems }: { initialItems: TrashM
227
229
  <div className="bg-card border border-border rounded-xl shadow-xl max-w-sm w-full mx-4 p-5">
228
230
  <div className="flex items-center gap-2 mb-3">
229
231
  <AlertTriangle size={16} className="text-[var(--amber)]" />
230
- <h3 className="text-sm font-semibold font-display">{t.trash.restoreConflict}</h3>
232
+ <h3 className="text-sm font-semibold">{t.trash.restoreConflict}</h3>
231
233
  </div>
232
234
  <p className="text-xs text-muted-foreground mb-4">
233
235
  &quot;{conflictItem.fileName}&quot; — {conflictItem.originalPath}
@@ -92,7 +92,7 @@ export default function UpdateOverlay() {
92
92
  flexDirection: 'column',
93
93
  alignItems: 'center',
94
94
  justifyContent: 'center',
95
- fontFamily: 'system-ui, -apple-system, sans-serif',
95
+ fontFamily: "'IBM Plex Sans', system-ui, sans-serif",
96
96
  }}
97
97
  >
98
98
  {done ? (