@geminilight/mindos 0.6.53 → 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.
- package/README.md +27 -5
- package/README_zh.md +27 -5
- package/_standalone/.mindos-build-version +1 -1
- package/_standalone/.next/BUILD_ID +1 -1
- package/_standalone/.next/app-path-routes-manifest.json +23 -20
- package/_standalone/.next/build-manifest.json +3 -3
- package/_standalone/.next/cache/.previewinfo +1 -1
- package/_standalone/.next/cache/.rscinfo +1 -1
- package/_standalone/.next/cache/config.json +3 -3
- package/_standalone/.next/prerender-manifest.json +3 -3
- package/_standalone/.next/react-loadable-manifest.json +18 -2
- package/_standalone/.next/routes-manifest.json +18 -0
- package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error/page.js +1 -1
- package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error.html +2 -2
- package/_standalone/.next/server/app/_global-error.rsc +2 -2
- package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
- package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/_standalone/.next/server/app/_not-found/page.js +1 -1
- package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/page.js +3 -3
- package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask/route.js +5 -5
- package/_standalone/.next/server/app/api/ask/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/backlinks/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/bootstrap/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/changes/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/export/route.js +2 -2
- package/_standalone/.next/server/app/api/export/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/import/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/raw/route.js +1 -0
- package/_standalone/.next/server/app/api/file/raw/route.js.nft.json +1 -0
- package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/api/file/route.js +1 -1
- package/_standalone/.next/server/app/api/file/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/files/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/git/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/graph/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/inbox/route.js +1 -1
- package/_standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/init/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/status/route.js +1 -1
- package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/monitoring/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/recent-files/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/search/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/route.js +1 -1
- package/_standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/route.js +1 -1
- package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/sync/route.js +1 -1
- package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/tree-version/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
- package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/changes/page.js +2 -2
- package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page.js +3 -3
- package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/page.js +1 -1
- package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/explore/page.js +2 -2
- package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/help/page.js +2 -2
- package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/inbox/history/page.js +2 -0
- package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app/login/page.js +2 -2
- package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/page.js +3 -3
- package/_standalone/.next/server/app/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/setup/page.js +2 -2
- package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/trash/page.js +3 -3
- package/_standalone/.next/server/app/trash/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/view/[...path]/page.js +3 -3
- package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/wiki/page.js +2 -0
- package/_standalone/.next/server/app/wiki/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/wiki/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app-paths-manifest.json +23 -20
- package/_standalone/.next/server/chunks/2190.js +2 -2
- package/_standalone/.next/server/chunks/2364.js +2 -0
- package/_standalone/.next/server/chunks/357.js +1 -0
- package/_standalone/.next/server/chunks/530.js +219 -0
- package/_standalone/.next/server/chunks/6054.js +52 -0
- package/_standalone/.next/server/chunks/6539.js +1 -1
- package/_standalone/.next/server/chunks/8388.js +2 -2
- package/_standalone/.next/server/chunks/953.js +4 -4
- package/_standalone/.next/server/middleware-build-manifest.js +1 -1
- package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/_standalone/.next/server/next-font-manifest.js +1 -1
- package/_standalone/.next/server/next-font-manifest.json +1 -1
- package/_standalone/.next/server/pages/500.html +2 -2
- package/_standalone/.next/server/server-reference-manifest.js +1 -1
- package/_standalone/.next/server/server-reference-manifest.json +1 -1
- package/_standalone/.next/static/2hrwFOLEOZhHQHfrIt-Dw/_buildManifest.js +1 -0
- package/_standalone/.next/static/chunks/1053-2874859f7caefa0f.js +29 -0
- package/_standalone/.next/static/chunks/178-105779afb62d36d9.js +1 -0
- package/_standalone/.next/static/chunks/1814.b08e9fb85dd3b13c.js +1 -0
- package/_standalone/.next/static/chunks/{1880-3ec02adc80531825.js → 1880-7abf971bcfd2389b.js} +2 -2
- package/_standalone/.next/static/chunks/{3160-83a7e0b94414b3ac.js → 2218-d54538000574ffef.js} +1 -1
- package/_standalone/.next/static/chunks/254-32719a9bea2e74f0.js +1 -0
- package/_standalone/.next/static/chunks/362.a77be2f206db7b19.js +1 -0
- package/_standalone/.next/static/chunks/4237-ffc6e7c15d4007b6.js +1 -0
- package/_standalone/.next/static/chunks/7035-2af69391c7b1ad95.js +1 -0
- package/_standalone/.next/static/chunks/7322-d67d05067544864c.js +1 -0
- package/_standalone/.next/static/chunks/{6926-4af497b83952fa87.js → 8409-de5726a4a278d28f.js} +1 -1
- package/_standalone/.next/static/chunks/8753-ea9db680b0f70f25.js +1 -0
- package/_standalone/.next/static/chunks/app/.well-known/agent-card.json/{route-b07a5983e85bc5e3.js → route-e240db6d5049d336.js} +1 -1
- package/_standalone/.next/static/chunks/app/_global-error/{page-b07a5983e85bc5e3.js → page-e240db6d5049d336.js} +1 -1
- package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-f006a70f6889eb56.js +1 -0
- package/_standalone/.next/static/chunks/app/agents/page-bd522e428e3acb78.js +5 -0
- package/_standalone/.next/static/chunks/app/api/a2a/agents/{route-b07a5983e85bc5e3.js → route-e240db6d5049d336.js} +1 -1
- package/_standalone/.next/static/chunks/app/api/a2a/delegations/{route-b07a5983e85bc5e3.js → route-e240db6d5049d336.js} +1 -1
- package/_standalone/.next/static/chunks/app/api/a2a/discover/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/a2a/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/config/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/detect/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/install/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/registry/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/acp/session/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/agent-activity/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/ask/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/ask-sessions/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/auth/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/backlinks/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/bootstrap/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/changes/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/export/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/extract-pdf/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/file/import/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/file/raw/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/file/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/files/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/git/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/graph/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/health/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/inbox/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/init/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/agents/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/install/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/restart/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/status/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/monitoring/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/recent-files/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/restart/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/search/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/list-models/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/settings/test-key/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/check-path/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/check-port/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/ls/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/setup/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/skills/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/sync/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/tree-version/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/uninstall/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update-check/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/update-status/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/api/workflows/route-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/changes/page-5a72144d1080a699.js +1 -0
- package/_standalone/.next/static/chunks/app/echo/[segment]/{page-88df174dd64b2c76.js → page-6710da1f581b2854.js} +2 -2
- package/_standalone/.next/static/chunks/app/echo/page-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/explore/{page-5eb2835e9e3ab4bb.js → page-d3d99308146c2240.js} +1 -1
- package/_standalone/.next/static/chunks/app/global-error-c37d50db6128ec01.js +1 -0
- package/_standalone/.next/static/chunks/app/help/page-222df603080b5fab.js +1 -0
- package/_standalone/.next/static/chunks/app/inbox/history/page-07819cf95cb0805f.js +1 -0
- package/_standalone/.next/static/chunks/app/layout-8eacff5813458190.js +186 -0
- package/_standalone/.next/static/chunks/app/loading-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/login/{page-24236460fa7c11d0.js → page-0eeef685052869a6.js} +1 -1
- package/_standalone/.next/static/chunks/app/page-5a6c9455efe8a0df.js +7 -0
- package/_standalone/.next/static/chunks/app/setup/{page-99f40e9337388cda.js → page-9a81fa4d82c6351b.js} +1 -1
- package/_standalone/.next/static/chunks/app/trash/page-72d0ae3649ac4b6c.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/loading-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/not-found-fc04c2bd4f35bc6f.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/page-e8699f96589c0979.js +12 -0
- package/_standalone/.next/static/chunks/app/wiki/page-d492256a93f0b8bc.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-e240db6d5049d336.js +1 -0
- package/_standalone/.next/static/chunks/{webpack-bbd44cbc83dc0aa4.js → webpack-73c9da80c6c1ebfe.js} +1 -1
- package/_standalone/.next/static/css/66f8a81e4eda06d4.css +1 -0
- package/_standalone/.next/static/css/a4a2b71142b311af.css +31 -0
- package/_standalone/.next/trace +64 -64
- package/_standalone/.next/types/routes.d.ts +5 -2
- package/_standalone/.next/types/validator.ts +27 -0
- package/_standalone/__tests__/agents/agents-content-dashboard.test.tsx +1 -0
- package/_standalone/__tests__/agents/agents-content-model.test.ts +13 -0
- package/_standalone/__tests__/core/inbox.test.ts +168 -0
- package/_standalone/__tests__/core/sync.test.ts +37 -0
- package/_standalone/__tests__/panels/agents-panel-hub.test.tsx +1 -0
- package/_standalone/app/globals.css +29 -3
- package/_standalone/components/ActivityBar.tsx +9 -9
- package/_standalone/components/AskFab.tsx +1 -1
- package/_standalone/components/Backlinks.tsx +1 -1
- package/_standalone/components/Breadcrumb.tsx +1 -1
- package/_standalone/components/CreateSpaceModal.tsx +1 -1
- package/_standalone/components/EchoSpotlight.tsx +14 -10
- package/_standalone/components/Editor.tsx +1 -1
- package/_standalone/components/ExportModal.tsx +3 -3
- package/_standalone/components/FileTree.tsx +6 -11
- package/_standalone/components/GuideCard.tsx +1 -1
- package/_standalone/components/ImportModal.tsx +1 -2
- package/_standalone/components/KeyboardShortcuts.tsx +1 -1
- package/_standalone/components/MarkdownEditor.tsx +1 -1
- package/_standalone/components/OnboardingView.tsx +2 -2
- package/_standalone/components/OrganizeToast.tsx +3 -1
- package/_standalone/components/Panel.tsx +27 -6
- package/_standalone/components/Sidebar.tsx +1 -1
- package/_standalone/components/SidebarLayout.tsx +30 -7
- package/_standalone/components/SystemPulse.tsx +16 -16
- package/_standalone/components/agents/AgentsOverviewSection.tsx +18 -92
- package/_standalone/components/agents/AgentsPanelA2aTab.tsx +67 -66
- package/_standalone/components/agents/AgentsPrimitives.tsx +1 -1
- package/_standalone/components/agents/RecentActivityFeed.tsx +6 -6
- package/_standalone/components/agents/SkillDetailPopover.tsx +1 -1
- package/_standalone/components/ask/AskHeader.tsx +1 -1
- package/_standalone/components/echo/EchoHero.tsx +1 -1
- package/_standalone/components/echo/EchoPageSections.tsx +1 -1
- package/_standalone/components/explore/UseCaseCard.tsx +1 -1
- package/_standalone/components/home/InboxSection.tsx +262 -54
- package/_standalone/components/panels/AgentsPanel.tsx +4 -3
- package/_standalone/components/panels/AgentsPanelAgentDetail.tsx +1 -1
- package/_standalone/components/panels/AgentsPanelHubNav.tsx +10 -6
- package/_standalone/components/panels/PanelHeader.tsx +1 -1
- package/_standalone/components/renderers/audio/AudioRenderer.tsx +79 -0
- package/_standalone/components/renderers/image/ImageRenderer.tsx +203 -0
- package/_standalone/components/renderers/pdf/PdfRenderer.tsx +57 -0
- package/_standalone/components/renderers/video/VideoRenderer.tsx +91 -0
- package/_standalone/components/settings/McpTab.tsx +154 -28
- package/_standalone/components/settings/PluginsTab.tsx +1 -1
- package/_standalone/components/settings/SettingsContent.tsx +41 -7
- package/_standalone/components/settings/types.ts +7 -1
- package/_standalone/components/walkthrough/WalkthroughOverlay.tsx +1 -1
- package/_standalone/components/walkthrough/WalkthroughTooltip.tsx +1 -1
- package/_standalone/hooks/useAiOrganize.ts +14 -1
- package/_standalone/lib/organize-history.ts +6 -0
- package/_standalone/tsconfig.tsbuildinfo +1 -1
- package/app/app/api/file/raw/route.ts +121 -0
- package/app/app/api/file/route.ts +21 -0
- package/app/app/api/inbox/route.ts +38 -2
- package/app/app/api/mcp/status/route.ts +1 -0
- package/app/app/api/settings/route.ts +13 -0
- package/app/app/api/setup/route.ts +11 -1
- package/app/app/api/sync/route.ts +36 -13
- package/app/app/global-error.tsx +3 -3
- package/app/app/globals.css +29 -3
- package/app/app/inbox/history/page.tsx +250 -0
- package/app/app/layout.tsx +5 -11
- package/app/app/login/page.tsx +1 -1
- package/app/app/view/[...path]/ViewPageClient.tsx +15 -10
- package/app/app/view/[...path]/not-found.tsx +1 -1
- package/app/app/view/[...path]/page.tsx +32 -1
- package/app/app/wiki/page.tsx +58 -0
- package/app/components/ActivityBar.tsx +9 -9
- package/app/components/AskFab.tsx +1 -1
- package/app/components/Backlinks.tsx +1 -1
- package/app/components/Breadcrumb.tsx +1 -1
- package/app/components/CreateSpaceModal.tsx +1 -1
- package/app/components/DirView.tsx +2 -2
- package/app/components/EchoSpotlight.tsx +14 -10
- package/app/components/Editor.tsx +1 -1
- package/app/components/ExportModal.tsx +3 -3
- package/app/components/FileTree.tsx +6 -11
- package/app/components/GuideCard.tsx +1 -1
- package/app/components/HomeContent.tsx +50 -39
- package/app/components/ImportModal.tsx +1 -2
- package/app/components/KeyboardShortcuts.tsx +1 -1
- package/app/components/MarkdownEditor.tsx +1 -1
- package/app/components/OnboardingView.tsx +2 -2
- package/app/components/OrganizeToast.tsx +3 -1
- package/app/components/Panel.tsx +27 -6
- package/app/components/Sidebar.tsx +1 -1
- package/app/components/SidebarLayout.tsx +30 -7
- package/app/components/SystemPulse.tsx +16 -16
- package/app/components/TrashPageClient.tsx +8 -6
- package/app/components/UpdateOverlay.tsx +1 -1
- package/app/components/WikiHomeContent.tsx +273 -0
- package/app/components/agents/AgentDetailContent.tsx +5 -5
- package/app/components/agents/AgentsContentPage.tsx +14 -3
- package/app/components/agents/AgentsOverviewSection.tsx +18 -92
- package/app/components/agents/AgentsPanelA2aTab.tsx +67 -66
- package/app/components/agents/AgentsPrimitives.tsx +1 -1
- package/app/components/agents/RecentActivityFeed.tsx +6 -6
- package/app/components/agents/SkillDetailPopover.tsx +1 -1
- package/app/components/agents/agents-content-model.ts +4 -1
- package/app/components/ask/AskHeader.tsx +1 -1
- package/app/components/changes/ChangesContentPage.tsx +10 -6
- package/app/components/echo/EchoHero.tsx +1 -1
- package/app/components/echo/EchoPageSections.tsx +1 -1
- package/app/components/explore/ExploreContent.tsx +1 -1
- package/app/components/explore/UseCaseCard.tsx +1 -1
- package/app/components/help/HelpContent.tsx +3 -3
- package/app/components/home/InboxSection.tsx +262 -54
- package/app/components/panels/AgentsPanel.tsx +4 -3
- package/app/components/panels/AgentsPanelAgentDetail.tsx +1 -1
- package/app/components/panels/AgentsPanelHubNav.tsx +10 -6
- package/app/components/panels/PanelHeader.tsx +1 -1
- package/app/components/renderers/audio/AudioRenderer.tsx +79 -0
- package/app/components/renderers/audio/manifest.ts +17 -0
- package/app/components/renderers/image/ImageRenderer.tsx +203 -0
- package/app/components/renderers/image/manifest.ts +17 -0
- package/app/components/renderers/pdf/PdfRenderer.tsx +57 -0
- package/app/components/renderers/pdf/manifest.ts +15 -0
- package/app/components/renderers/video/VideoRenderer.tsx +91 -0
- package/app/components/renderers/video/manifest.ts +17 -0
- package/app/components/settings/McpTab.tsx +154 -28
- package/app/components/settings/PluginsTab.tsx +1 -1
- package/app/components/settings/SettingsContent.tsx +41 -7
- package/app/components/settings/types.ts +7 -1
- package/app/components/setup/index.tsx +4 -3
- package/app/components/walkthrough/WalkthroughOverlay.tsx +1 -1
- package/app/components/walkthrough/WalkthroughTooltip.tsx +1 -1
- package/app/hooks/useAiOrganize.ts +14 -1
- package/app/lib/core/inbox.ts +131 -2
- package/app/lib/core/pdf-text.ts +28 -0
- package/app/lib/core/search-index.ts +29 -5
- package/app/lib/core/tree.ts +6 -1
- package/app/lib/fs.ts +31 -3
- package/app/lib/i18n/modules/ai-chat.ts +34 -0
- package/app/lib/i18n/modules/knowledge.ts +30 -0
- package/app/lib/i18n/modules/navigation.ts +4 -2
- package/app/lib/i18n/modules/panels.ts +22 -4
- package/app/lib/i18n/modules/settings.ts +26 -0
- package/app/lib/organize-history.ts +6 -0
- package/app/lib/renderers/index.ts +5 -1
- package/app/lib/settings.ts +28 -0
- package/bin/commands/doctor.js +12 -6
- package/bin/commands/file.js +7 -4
- package/bin/commands/logs.js +39 -4
- package/bin/commands/onboard.js +1 -1
- package/bin/commands/open.js +6 -1
- package/bin/commands/space.js +7 -4
- package/bin/commands/update.js +8 -18
- package/bin/lib/build.js +19 -8
- package/bin/lib/cli-shim.js +67 -2
- package/bin/lib/config.js +4 -5
- package/bin/lib/gateway.js +10 -23
- package/bin/lib/jsonc.js +7 -2
- package/bin/lib/mcp-agents.js +26 -5
- package/bin/lib/path-expand.js +6 -3
- package/bin/lib/port.js +5 -1
- package/bin/lib/stop.js +72 -51
- package/bin/lib/sync.js +1 -1
- package/package.json +1 -1
- package/scripts/setup.js +7 -5
- package/_standalone/.next/server/chunks/3436.js +0 -52
- package/_standalone/.next/server/chunks/5648.js +0 -2
- package/_standalone/.next/server/chunks/8408.js +0 -219
- package/_standalone/.next/static/W-wLgvhPtPJ5Psq9V4i3M/_buildManifest.js +0 -1
- package/_standalone/.next/static/chunks/1053-17786066ecd6f216.js +0 -29
- package/_standalone/.next/static/chunks/1814.72f7fe7c61e2b647.js +0 -1
- package/_standalone/.next/static/chunks/362.4c226d7887d5f696.js +0 -1
- package/_standalone/.next/static/chunks/6357-c645842834c0d4cd.js +0 -1
- package/_standalone/.next/static/chunks/6981-3d7dcac2d12a5670.js +0 -1
- package/_standalone/.next/static/chunks/7035-032641fb6f4e07b2.js +0 -1
- package/_standalone/.next/static/chunks/7144-5febf62f1a79fe64.js +0 -1
- package/_standalone/.next/static/chunks/9602-423291fdb36396d1.js +0 -1
- package/_standalone/.next/static/chunks/app/agents/[agentKey]/page-074d6aafc2606561.js +0 -1
- package/_standalone/.next/static/chunks/app/agents/page-710d8c80fa86e93e.js +0 -5
- package/_standalone/.next/static/chunks/app/api/a2a/discover/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/a2a/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/config/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/detect/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/install/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/registry/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/acp/session/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/agent-activity/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/ask/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/ask-sessions/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/auth/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/backlinks/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/bootstrap/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/changes/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/export/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/extract-pdf/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/file/import/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/file/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/files/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/git/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/graph/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/health/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/inbox/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/init/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/agents/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/install/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/install-skill/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/restart/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/status/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/mcp/uninstall/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/monitoring/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/recent-files/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/restart/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/search/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/list-models/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/reset-token/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/settings/test-key/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/check-path/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/check-port/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/generate-token/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/ls/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/setup/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/skills/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/sync/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/tree-version/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/uninstall/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/update/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/update-check/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/update-status/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/api/workflows/route-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/changes/page-350992cf5091bc5b.js +0 -1
- package/_standalone/.next/static/chunks/app/echo/page-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/global-error-e1ad0e18236ba26c.js +0 -1
- package/_standalone/.next/static/chunks/app/help/page-2325d25b6846ca07.js +0 -1
- package/_standalone/.next/static/chunks/app/layout-e5d2fb384207d821.js +0 -186
- package/_standalone/.next/static/chunks/app/loading-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/page-54edd045d3448df5.js +0 -7
- package/_standalone/.next/static/chunks/app/trash/page-6372bb3f5463affa.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/loading-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/not-found-61474670d6bb6116.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/page-f3d1d87190dcfe28.js +0 -12
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-b07a5983e85bc5e3.js +0 -1
- package/_standalone/.next/static/css/bbf51803eade6c50.css +0 -31
- package/_standalone/.next/static/css/ef1151f74f00d91a.css +0 -1
- /package/_standalone/.next/static/{W-wLgvhPtPJ5Psq9V4i3M → 2hrwFOLEOZhHQHfrIt-Dw}/_ssgManifest.js +0 -0
|
@@ -41,13 +41,15 @@ export default function EchoSpotlight() {
|
|
|
41
41
|
if (dailyLine.trim()) {
|
|
42
42
|
return (
|
|
43
43
|
<section className="mb-10">
|
|
44
|
-
<div className="flex items-center gap-2 mb-
|
|
45
|
-
<
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
<div className="flex items-center gap-2.5 mb-5">
|
|
45
|
+
<div className="flex items-center justify-center w-6 h-6 rounded-md bg-[var(--amber-subtle)] text-[var(--amber)]">
|
|
46
|
+
<Feather size={13} />
|
|
47
|
+
</div>
|
|
48
|
+
<h2 className="text-[13px] font-semibold text-foreground tracking-wide">{echo.title}</h2>
|
|
49
|
+
<span className="text-xs text-muted-foreground/50">{echo.dailyLine}</span>
|
|
48
50
|
<Link
|
|
49
51
|
href="/echo/daily"
|
|
50
|
-
className="ml-auto text-xs font-medium text-[var(--amber)] hover:opacity-80 transition-opacity
|
|
52
|
+
className="ml-auto text-xs font-medium text-[var(--amber)] hover:opacity-80 transition-opacity"
|
|
51
53
|
>
|
|
52
54
|
{echo.goToEcho}
|
|
53
55
|
</Link>
|
|
@@ -61,7 +63,7 @@ export default function EchoSpotlight() {
|
|
|
61
63
|
onChange={e => saveLine(e.target.value)}
|
|
62
64
|
onBlur={() => setEditing(false)}
|
|
63
65
|
onKeyDown={e => { if (e.key === 'Enter') setEditing(false); }}
|
|
64
|
-
className="w-full px-3.5 py-3 rounded-xl border border-[var(--amber)]/40 bg-card text-sm text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring
|
|
66
|
+
className="w-full px-3.5 py-3 rounded-xl border border-[var(--amber)]/40 bg-card text-sm text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring italic"
|
|
65
67
|
placeholder={echo.placeholder}
|
|
66
68
|
/>
|
|
67
69
|
) : (
|
|
@@ -83,9 +85,11 @@ export default function EchoSpotlight() {
|
|
|
83
85
|
// ── No daily line → invite ──
|
|
84
86
|
return (
|
|
85
87
|
<section className="mb-10">
|
|
86
|
-
<div className="flex items-center gap-2 mb-
|
|
87
|
-
<
|
|
88
|
-
|
|
88
|
+
<div className="flex items-center gap-2.5 mb-5">
|
|
89
|
+
<div className="flex items-center justify-center w-6 h-6 rounded-md bg-[var(--amber-subtle)] text-[var(--amber)]">
|
|
90
|
+
<Feather size={13} />
|
|
91
|
+
</div>
|
|
92
|
+
<h2 className="text-[13px] font-semibold text-foreground tracking-wide">{echo.title}</h2>
|
|
89
93
|
</div>
|
|
90
94
|
<div className="flex items-center gap-4 px-3.5 py-3.5 rounded-xl border border-dashed border-border/60 hover:border-[var(--amber)]/30 transition-all duration-150 group">
|
|
91
95
|
<div className="flex-1 min-w-0">
|
|
@@ -93,7 +97,7 @@ export default function EchoSpotlight() {
|
|
|
93
97
|
type="text"
|
|
94
98
|
value={dailyLine}
|
|
95
99
|
onChange={e => saveLine(e.target.value)}
|
|
96
|
-
className="w-full bg-transparent text-sm text-foreground placeholder:text-muted-foreground/40 focus-visible:outline-none
|
|
100
|
+
className="w-full bg-transparent text-sm text-foreground placeholder:text-muted-foreground/40 focus-visible:outline-none italic"
|
|
97
101
|
placeholder={echo.placeholder}
|
|
98
102
|
/>
|
|
99
103
|
<p className="text-xs text-muted-foreground/40 mt-1">{echo.inviteDesc}</p>
|
|
@@ -17,7 +17,7 @@ const darkTheme = EditorView.theme({
|
|
|
17
17
|
backgroundColor: '#09090b',
|
|
18
18
|
height: '100%',
|
|
19
19
|
fontSize: '0.875rem',
|
|
20
|
-
fontFamily: 'var(--font-
|
|
20
|
+
fontFamily: 'var(--font-ibm-plex-mono), ui-monospace, monospace',
|
|
21
21
|
},
|
|
22
22
|
'.cm-scroller': {
|
|
23
23
|
overflow: 'auto',
|
|
@@ -113,7 +113,7 @@ export default function ExportModal({ open, onClose, filePath, isDirectory, file
|
|
|
113
113
|
<div className="flex items-center justify-between px-5 py-4 border-b border-border">
|
|
114
114
|
<div className="flex items-center gap-2">
|
|
115
115
|
<Download size={15} className="text-[var(--amber)]" />
|
|
116
|
-
<h3 id="export-modal-title" className="text-sm font-semibold
|
|
116
|
+
<h3 id="export-modal-title" className="text-sm font-semibold">
|
|
117
117
|
{isDirectory ? (t.export?.exportSpace ?? 'Export Space') : (t.export?.exportFile ?? 'Export File')}
|
|
118
118
|
</h3>
|
|
119
119
|
</div>
|
|
@@ -129,7 +129,7 @@ export default function ExportModal({ open, onClose, filePath, isDirectory, file
|
|
|
129
129
|
<div className="w-10 h-10 rounded-full bg-success/10 flex items-center justify-center mx-auto mb-3">
|
|
130
130
|
<Check size={20} className="text-success" />
|
|
131
131
|
</div>
|
|
132
|
-
<p className="text-sm font-medium
|
|
132
|
+
<p className="text-sm font-medium">{t.export?.done ?? 'Export Complete'}</p>
|
|
133
133
|
<p className="text-xs text-muted-foreground mt-1">{fileName}</p>
|
|
134
134
|
</div>
|
|
135
135
|
) : state === 'error' ? (
|
|
@@ -140,7 +140,7 @@ export default function ExportModal({ open, onClose, filePath, isDirectory, file
|
|
|
140
140
|
) : (
|
|
141
141
|
<>
|
|
142
142
|
<p className="text-xs text-muted-foreground mb-3 truncate" title={filePath}>{filePath}</p>
|
|
143
|
-
<p className="text-xs font-medium
|
|
143
|
+
<p className="text-xs font-medium text-foreground mb-2">{t.export?.chooseFormat ?? 'Choose format'}</p>
|
|
144
144
|
<div className="space-y-1.5">
|
|
145
145
|
{formats.map(f => (
|
|
146
146
|
<label
|
|
@@ -438,7 +438,6 @@ function DirectoryNode({ node, depth, currentPath, onNavigate, maxOpenDepth, onI
|
|
|
438
438
|
<button
|
|
439
439
|
type="button"
|
|
440
440
|
onClick={handleSingleClick}
|
|
441
|
-
onDoubleClick={handleDoubleClick}
|
|
442
441
|
draggable
|
|
443
442
|
onDragStart={(e) => {
|
|
444
443
|
e.dataTransfer.setData('text/mindos-path', node.path);
|
|
@@ -448,7 +447,7 @@ function DirectoryNode({ node, depth, currentPath, onNavigate, maxOpenDepth, onI
|
|
|
448
447
|
className={`
|
|
449
448
|
flex-1 flex items-center gap-1.5 px-1 py-1 rounded text-left min-w-0 pr-16
|
|
450
449
|
text-sm transition-colors duration-100
|
|
451
|
-
hover:bg-muted cursor-
|
|
450
|
+
hover:bg-muted cursor-default
|
|
452
451
|
${isActive ? 'text-foreground' : 'text-muted-foreground hover:text-foreground'}
|
|
453
452
|
`}
|
|
454
453
|
>
|
|
@@ -461,9 +460,6 @@ function DirectoryNode({ node, depth, currentPath, onNavigate, maxOpenDepth, onI
|
|
|
461
460
|
: <Folder size={14} className="text-yellow-400 shrink-0" />
|
|
462
461
|
}
|
|
463
462
|
<span className="truncate leading-5" suppressHydrationWarning>{node.name}</span>
|
|
464
|
-
<span className="ml-auto text-xs text-muted-foreground/30 group-hover/dir:text-muted-foreground/60 transition-colors shrink-0 hidden group-hover/dir:inline-flex items-center gap-1">
|
|
465
|
-
<Pencil size={10} />
|
|
466
|
-
</span>
|
|
467
463
|
{isSpace && !open && (
|
|
468
464
|
<span className="ml-auto text-xs text-muted-foreground shrink-0 tabular-nums pr-1">{contentCount}</span>
|
|
469
465
|
)}
|
|
@@ -657,14 +653,13 @@ function FileNodeItem({ node, depth, currentPath, onNavigate }: {
|
|
|
657
653
|
<div className="relative group/file">
|
|
658
654
|
<button
|
|
659
655
|
onClick={handleClick}
|
|
660
|
-
onDoubleClick={isProtected ? undefined : startRename}
|
|
661
656
|
onContextMenu={handleContextMenu}
|
|
662
657
|
draggable
|
|
663
658
|
onDragStart={handleDragStart}
|
|
664
659
|
data-filepath={node.path}
|
|
665
660
|
className={`
|
|
666
661
|
w-full flex items-center gap-1.5 px-2 py-1 rounded text-left
|
|
667
|
-
text-sm transition-colors duration-100 cursor-
|
|
662
|
+
text-sm transition-colors duration-100 cursor-default pr-16
|
|
668
663
|
${isActive
|
|
669
664
|
? 'bg-accent text-foreground'
|
|
670
665
|
: 'hover:bg-muted text-muted-foreground hover:text-foreground'
|
|
@@ -674,9 +669,6 @@ function FileNodeItem({ node, depth, currentPath, onNavigate }: {
|
|
|
674
669
|
>
|
|
675
670
|
{getIcon(node)}
|
|
676
671
|
<span className="truncate leading-5" suppressHydrationWarning>{node.name}</span>
|
|
677
|
-
<span className="ml-auto text-xs text-muted-foreground/30 group-hover/file:text-muted-foreground/60 transition-colors shrink-0 hidden group-hover/file:inline-flex items-center gap-1">
|
|
678
|
-
<Pencil size={10} />
|
|
679
|
-
</span>
|
|
680
672
|
{pinned && <Star size={10} className="shrink-0 fill-[var(--amber)] text-[var(--amber)] opacity-60" />}
|
|
681
673
|
</button>
|
|
682
674
|
<div className="absolute right-1 top-1/2 -translate-y-1/2 hidden group-hover/file:flex items-center gap-0.5">
|
|
@@ -759,7 +751,10 @@ export default function FileTree({ nodes, depth = 0, onNavigate, maxOpenDepth, p
|
|
|
759
751
|
const showHidden = useShowHiddenFiles();
|
|
760
752
|
|
|
761
753
|
const isRoot = depth === 0;
|
|
762
|
-
const
|
|
754
|
+
const filtered = showHidden ? nodes : filterHiddenNodes(nodes, isRoot);
|
|
755
|
+
const visibleNodes = isRoot
|
|
756
|
+
? filtered.filter(n => !(n.type === 'directory' && n.name === 'Inbox'))
|
|
757
|
+
: filtered;
|
|
763
758
|
|
|
764
759
|
useEffect(() => {
|
|
765
760
|
if (!currentPath || depth !== 0) return;
|
|
@@ -232,7 +232,7 @@ export default function GuideCard() {
|
|
|
232
232
|
{/* Header */}
|
|
233
233
|
<div className="flex items-center gap-3 px-5 pt-4 pb-2">
|
|
234
234
|
<Sparkles size={16} className="text-[var(--amber)]" />
|
|
235
|
-
<span className="text-sm font-semibold flex-1
|
|
235
|
+
<span className="text-sm font-semibold flex-1 text-foreground">
|
|
236
236
|
{g.title}
|
|
237
237
|
</span>
|
|
238
238
|
<button onClick={handleDismiss} className="p-1 rounded hover:bg-muted transition-colors text-muted-foreground">
|
|
@@ -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-
|
|
82
|
-
<
|
|
83
|
-
|
|
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-
|
|
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
|
|
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
|
|
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-
|
|
186
|
+
<div className="mb-14">
|
|
184
187
|
{/* Brand mark */}
|
|
185
|
-
<div className="flex items-center gap-
|
|
186
|
-
<
|
|
187
|
-
<h1 className="text-
|
|
188
|
-
|
|
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
|
|
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
|
|
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/
|
|
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/
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
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
|
|
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/
|
|
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
|
|
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/
|
|
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-
|
|
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-
|
|
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-
|
|
428
|
-
: 'w-1.5 h-1.5 bg-muted-foreground/
|
|
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
|
|
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="
|
|
467
|
-
<
|
|
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-
|
|
486
|
-
<
|
|
487
|
-
|
|
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/
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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-
|
|
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
|
|
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(() => {
|
package/app/components/Panel.tsx
CHANGED
|
@@ -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
|
-
|
|
131
|
+
const [inboxCount, setInboxCount] = useState(0);
|
|
132
|
+
|
|
132
133
|
useEffect(() => {
|
|
133
|
-
const
|
|
134
|
+
const fetchTrash = () => {
|
|
134
135
|
listTrashAction().then(items => setTrashCount(items.length)).catch(() => {});
|
|
135
136
|
};
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
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="
|
|
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">
|