Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
c40b1da
refactor: 移除 lexical 编辑器,使用原生输入框
Z-Bokle Aug 18, 2025
ab57055
feat: 添加聊天输入框本地状态管理和回车提交功能
Z-Bokle Aug 18, 2025
ec957b3
feat: 发送消息后清空输入框内容
Z-Bokle Aug 18, 2025
3ddc64c
refactor: 移除消息中的 contextContent 字段
Z-Bokle Aug 18, 2025
0ed37c7
refactor: 移除 lexical 相关代码并重构粘贴处理逻辑
Z-Bokle Aug 18, 2025
f799adf
chore: 移除未使用的 lexical 依赖包
Z-Bokle Aug 18, 2025
1dd77f3
feat: 添加粘贴图片时的加载状态和处理逻辑
Z-Bokle Aug 18, 2025
476a44d
chore: 移除未使用的 lexical 相关依赖
Z-Bokle Aug 18, 2025
9c6aa3b
chore: 移除 lexical 依赖包
Z-Bokle Aug 18, 2025
97c0712
refactor: 将 AddContext 组件中的 Tag 替换为自定义 SenderButton 组件
Z-Bokle Aug 18, 2025
a75f1da
refactor: 重构发送组件并添加 select 组件
Z-Bokle Aug 18, 2025
b5b45a4
chore: 移除 lexical 依赖包
Z-Bokle Aug 18, 2025
d81de4c
Merge branch 'feat/input_0818' into feat/input_0819
Z-Bokle Aug 18, 2025
7835288
refactor: 将模式选择器改为下拉菜单形式
Z-Bokle Aug 18, 2025
e77afe2
feat: 添加文本截断组件并优化选择器样式
Z-Bokle Aug 18, 2025
2bd6505
style: 优化对话框模式选择器的样式和布局
Z-Bokle Aug 18, 2025
d293e45
feat: 添加聊天发送器组件的国际化支持
Z-Bokle Aug 18, 2025
be2097a
refactor: 重构上下文标签组件并简化上下文处理逻辑
Z-Bokle Aug 18, 2025
3f89950
feat: 添加图片上下文标签和粘贴图片功能
Z-Bokle Aug 18, 2025
223bc20
feat: 为上下文标签添加文件图标显示
Z-Bokle Aug 19, 2025
05da371
feat: 优化上下文标签的样式和交互
Z-Bokle Aug 19, 2025
4c0f44f
refactor: 优化粘贴处理逻辑使用switch语句替代if-else
Z-Bokle Aug 19, 2025
ac4d86b
Merge branch 'feat/input_0818' into feat/input_0819
Z-Bokle Aug 19, 2025
535bd3e
Merge branch 'feat/input_0819' into feat/input_0820
Z-Bokle Aug 19, 2025
78140e2
style: 优化上下文标签的样式和交互
Z-Bokle Aug 19, 2025
f2b2e35
feat: 添加上下文配置类型定义和全局上下文配置接口
Z-Bokle Aug 19, 2025
d2ddbf4
feat: 添加@快捷键唤起上下文菜单功能
Z-Bokle Aug 19, 2025
5a4a865
refactor(browser): Partial remove richtext (#165)
Z-Bokle Aug 19, 2025
4cb6d8c
feat(browser): implement responsive layout with resizable panels and …
mark1145588963 Aug 19, 2025
d62aa5a
Merge remote-tracking branch 'origin/browser-next' into feat/input_0820
Z-Bokle Aug 20, 2025
fa4a17c
refactor: 重命名发送组件文件名以保持一致性
Z-Bokle Aug 20, 2025
70dcf3e
docs: translate comments from Chinese to English
Z-Bokle Aug 20, 2025
6efa955
feat(browser): user message style (#169)
yk2012 Aug 21, 2025
f90ab5c
feat(browser): beautify assistant message bubble (#168)
biu9 Aug 21, 2025
31c17da
Merge remote-tracking branch 'origin/browser-next' into feat/input_0820
Z-Bokle Aug 22, 2025
cdbc648
refactor: remove unused context interfaces and dependencies
Z-Bokle Aug 25, 2025
2eeff02
feat(browser): add message wrapper (#175)
yk2012 Aug 25, 2025
f6fdaad
Merge pull request #173 from umijs/feat/input_0820
Z-Bokle Aug 26, 2025
0eb9d11
feat(browser): redesign welcome component (#176)
Kying-star Aug 26, 2025
b00079a
feat(browser): new richtext editor for browser mode (#186)
Z-Bokle Aug 26, 2025
8bf404b
feat(browser): ls tool render (#180)
biu9 Aug 26, 2025
444dcdd
feature(browser): message wrapper style (#184)
yk2012 Aug 26, 2025
ab425ac
feat(browser): fetch render (#183)
biu9 Aug 26, 2025
15f8c8d
feat(browser): keyboard navigation for popup list [AI] (#189)
Z-Bokle Aug 27, 2025
04b1003
feat(browser): beautify assistant message style (#188)
biu9 Aug 27, 2025
f22488e
feature(browser): todo tool render (#185)
yk2012 Aug 27, 2025
26baf69
feat(browser): grep & glob tool render (#182)
biu9 Aug 27, 2025
ee47ec5
refactor(browser): promote context popup menu styles [AI] (#190)
Z-Bokle Aug 29, 2025
ae24bdb
feat(browser): support search contexts in rich text editor (#198)
Z-Bokle Sep 1, 2025
fb93861
feat(browser): beautify markdown render (#192)
biu9 Sep 2, 2025
1bde67d
feature(browser): settings UI (#193)
yk2012 Sep 2, 2025
aa0a938
feat(browser): refactor code renderer monaco to shiki migration (#214)
Kying-star Sep 5, 2025
11bce0e
feat: add unsaved changes indicator and batch save for settings [AI] …
yk2012 Sep 5, 2025
a666f1c
feat(browser): mcp management UI [AI] (#202)
yk2012 Sep 9, 2025
a6472a4
feat: add monaco editor to browser package
xierenyuan Sep 10, 2025
788ebde
feat: rebrand from Takumi to Neovate and update config language
xierenyuan Sep 10, 2025
40f6333
fix: prevent search mode exit on editor blur and text insertion (#233)
Z-Bokle Sep 10, 2025
914bc28
feat: optimize right panel width calculation and fix resize handle ho…
mark1145588963 Sep 10, 2025
d35a6a6
feat(browser): better code editor style (#229)
biu9 Sep 10, 2025
7feef32
feat(browser): support slash command context (#204)
Z-Bokle Sep 10, 2025
7798fad
fix: remove duplicate shiki dependency
xierenyuan Sep 10, 2025
344e9e5
feat(browser): add custom message wrapper styles for MCP config items…
yk2012 Sep 10, 2025
7b51986
feat(browser): display full path when hover on file context tag (#237)
Z-Bokle Sep 10, 2025
5c2a35d
style(browser): adjust message box padding and text wrapper styles #238
yk2012 Sep 10, 2025
252be47
feat: make welcome title dynamic based on product name [AI] (#240)
Kying-star Sep 10, 2025
b5cddc0
feat(browser): better tool render style (#239)
biu9 Sep 11, 2025
ec8f5cf
chore: Merge branch 'master' into browser-next
xierenyuan Sep 17, 2025
b8b85b2
feat: migrate web server from express to fastify with improved error …
xierenyuan Sep 17, 2025
a89b218
chore: remove express dependencies from package.json
xierenyuan Sep 17, 2025
20d665e
chore: Merge branch 'master' into browser-next-0917
xierenyuan Sep 20, 2025
abd6074
chore: enable CSS modules parsing and standardize quote styles
xierenyuan Sep 20, 2025
14e0622
feat: add client messaging and transport layer with WebSocket support
xierenyuan Sep 20, 2025
0dbb9bc
feat: add react websocket client hook and demo page
xierenyuan Sep 21, 2025
33bef51
refactor: replace useChat hook with native WebSocket client and state…
xierenyuan Sep 28, 2025
848178b
refactor: remove unused APIs and components, add ts-nocheck for broke…
xierenyuan Sep 28, 2025
0bf95d0
refactor: improve glob render data parsing and remove debug logs
xierenyuan Sep 29, 2025
1955ed6
feat: enhance GrepRender to display search results with formatted output
xierenyuan Sep 29, 2025
05de240
feat: add activity indicator with real-time token counting and error …
xierenyuan Sep 29, 2025
0055af7
chore: Merge branch 'master' into browser-next-0917
xierenyuan Sep 29, 2025
9e2ca8b
feat: add browser package to workspace
xierenyuan Sep 29, 2025
06b699a
feat: display fetch result content in FetchRender component
xierenyuan Sep 29, 2025
003766d
refactor: reorganize TodoRender component into directory structure
xierenyuan Sep 29, 2025
69dbc50
feat: implement cancel action for chat processing
xierenyuan Sep 29, 2025
5f1bf87
refactor: replace SlashCommandItem with SlashCommand type across cont…
xierenyuan Sep 29, 2025
4626706
refactor: update tool approval modal handling and remove edit depende…
xierenyuan Sep 29, 2025
2eb0556
refactor: remove normal view mode and simplify code diff outline
xierenyuan Sep 29, 2025
e2fa9b1
refactor: remove ai-sdk dependencies and move utility functions locally
xierenyuan Sep 29, 2025
5a66756
refactor: remove unused tool approval components and clean up imports
xierenyuan Sep 29, 2025
2762b32
refactor: enhance chat message handling and QuillEditor integration
xierenyuan Sep 30, 2025
1da12aa
Merge branch 'master' into browser-next-0917
xierenyuan Oct 9, 2025
163f5ff
refactor: remove deprecated file list API and update suggestion state
xierenyuan Oct 9, 2025
66e9f05
feat: add delta processing and prompt extraction for quill editor
xierenyuan Oct 10, 2025
4eeaecb
feat: add session management with REST API and UI display messages su…
xierenyuan Oct 10, 2025
14f6790
feat: add antd provider and better error handling with cwd support fo…
xierenyuan Oct 11, 2025
256cd44
chore: Merge branch 'master' into browser-next-0917
xierenyuan Oct 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 21 additions & 2 deletions biome.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@
"recommended": true,
"style": {
"useNodejsImportProtocol": "off"
}
},
"a11y": "off"
}
},
"javascript": {
Expand All @@ -48,6 +49,24 @@
"css": {
"formatter": {
"enabled": true
},
"parser": {
"cssModules": true
}
},
"overrides": [
{
"includes": ["browser/src/**/*"],
"linter": {
"rules": {
"correctness": {
"useExhaustiveDependencies": "off"
},
"suspicious": {
"noUnknownAtRules": "off"
}
}
}
}
}
]
}
117 changes: 0 additions & 117 deletions browser/i18n-README.md

This file was deleted.

23 changes: 13 additions & 10 deletions browser/index.html
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/src/assets/kmi-ai.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Takumi Browser - AI 编程助手</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/index.tsx"></script>
</body>

<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/src/icons/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Neovate Code Agent</title>
</head>

<body>
<div id="root"></div>
<script type="module" src="/src/index.tsx"></script>
</body>

</html>
18 changes: 10 additions & 8 deletions browser/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,10 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@ai-sdk/react": "^1.2.12",
"@ai-sdk/ui-utils": "^1.2.11",
"@ant-design/icons": "^6.0.0",
"@ant-design/x": "^1.4.0",
"@lexical/react": "0.32.1",
"@lexical/utils": "0.32.1",
"@monaco-editor/react": "^4.7.0",
"@shikijs/transformers": "^3.12.0",
"@tanstack/react-router": "^1.121.16",
"@tanstack/react-router-devtools": "^1.121.21",
"ahooks": "^3.7.0",
Expand All @@ -25,32 +22,37 @@
"axios": "1.10.0",
"classnames": "^2.5.1",
"dayjs": "^1.11.13",
"diff": "^8.0.2",
"i18next": "^25.2.1",
"i18next-browser-languagedetector": "^8.2.0",
"lexical": "0.32.1",
"lodash-es": "^4.17.21",
"monaco-editor": "^0.52.2",
"quill": "^2.0.3",
"rc-util": "^5.44.4",
"react": "^19.1.0",
"react-dom": "^19.1.0",
"react": "^19.1.1",
"react-dom": "^19.1.1",
"react-i18next": "^15.5.3",
"react-icons": "^5.5.0",
"react-markdown": "^9.0.0",
"react-syntax-highlighter": "^15.5.0",
"remark-gfm": "^4.0.1",
"shiki": "^3.11.0",
"streamdown": "^1.1.6",
"swr": "^2.3.3",
"valtio": "^2.1.5"
},
"devDependencies": {
"@ant-design/v5-patch-for-react-19": "^1.0.3",
"@tailwindcss/typography": "^0.5.16",
"@tailwindcss/vite": "^4.1.10",
"@tanstack/router-plugin": "^1.121.16",
"@types/diff": "^5.2.3",
"@types/react": "^19.1.2",
"@types/react-dom": "^19.1.2",
"@types/react-i18next": "^8.1.0",
"@types/react-syntax-highlighter": "^15.5.13",
"@vitejs/plugin-react": "^4.5.2",
"globals": "^16.0.0",
"tailwind-scrollbar": "^4.0.2",
"tailwindcss": "^4.1.10",
"typescript": "~5.8.3",
"vite": "^6.3.5",
Expand Down
6 changes: 0 additions & 6 deletions browser/src/api/appData.ts

This file was deleted.

25 changes: 1 addition & 24 deletions browser/src/api/files.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,5 @@
import { request } from '@/utils/request';
import type { ApiResponse, FileItem } from './model';

interface FileListResponse {
cwd: string;
directory: string;
items: FileItem[];
files: string[];
directories: string[];
error?: string;
}

export interface FileListQueries {
searchString?: string;

maxSize?: number;
}

export const getFileList = (
queries?: FileListQueries,
): Promise<ApiResponse<FileListResponse>> => {
return request.get('/files/list', {
params: queries,
});
};
import type { ApiResponse } from './model';

interface FileEditResponse {
message: string;
Expand Down
26 changes: 23 additions & 3 deletions browser/src/api/mcpService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ export const getMCPServer = (
name: string,
global = false,
): Promise<McpServerResponse> => {
return request.get(`/mcp/servers/${name}?global=${global}`);
return request.get(
`/mcp/servers/${encodeURIComponent(name)}?global=${global}`,
);
};

// Add server
Expand All @@ -32,13 +34,31 @@ export const updateMCPServer = (
name: string,
config: UpdateMcpServerRequest,
): Promise<McpOperationResponse> => {
return request.patch(`/mcp/servers/${name}`, config);
return request.patch(`/mcp/servers/${encodeURIComponent(name)}`, config);
};

// Update server with name change support
export const updateMCPServerWithName = async (
originalName: string,
newConfig: AddMcpServerRequest,
): Promise<McpOperationResponse> => {
// If name changed, remove old server and add new one
if (originalName !== newConfig.name) {
await removeMCPServer(originalName, newConfig.global);
return addMCPServer(newConfig);
}

// If name unchanged, use regular update
const { name, ...updateConfig } = newConfig;
return updateMCPServer(originalName, updateConfig);
};

// Remove server
export const removeMCPServer = (
name: string,
global = false,
): Promise<McpOperationResponse> => {
return request.delete(`/mcp/servers/${name}?global=${global}`);
return request.delete(
`/mcp/servers/${encodeURIComponent(name)}?global=${global}`,
);
};
13 changes: 0 additions & 13 deletions browser/src/api/model.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
export interface FileItem {
path: string;
type: 'file' | 'directory';
name: string;
}

export interface ImageItem {
/** URL or base64 string */
src: string;
Expand All @@ -16,10 +10,3 @@ export interface ApiResponse<T = any> {
error?: string;
message?: string;
}

export interface AppData {
productName: string;
version: string;
cwd: string;
config: Record<string, any>;
}
19 changes: 19 additions & 0 deletions browser/src/api/session.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import type { Message } from '@/types/chat';
import { request } from '@/utils/request';
import type { ApiResponse } from './model';

interface SessionInitializeResponse {
cwd: string;
sessionId: string;
messages: Message[];
history: string[];
logFile: string;
}

export const initializeSession = (opts: {
cwd?: string;
resume?: string;
continue?: boolean;
}): Promise<ApiResponse<SessionInitializeResponse>> => {
return request.post('/session/initialize', { ...opts });
};
14 changes: 0 additions & 14 deletions browser/src/api/toolApproval.ts

This file was deleted.

3 changes: 3 additions & 0 deletions browser/src/assets/codebase-navigation-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions browser/src/assets/file-operations-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions browser/src/assets/llm-support-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions browser/src/assets/plan-mode-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading