thatgfsj-code 0.8.3 → 0.9.0
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/ROADMAP.md +72 -42
- package/dist/cmd/index.js +1 -1
- package/dist/tui/components/Header.js +1 -1
- package/package.json +1 -1
- package/src/cmd/index.tsx +1 -1
- package/src/tui/components/Header.tsx +1 -1
package/ROADMAP.md
CHANGED
|
@@ -2,60 +2,90 @@
|
|
|
2
2
|
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
## ✅ v0.
|
|
5
|
+
## ✅ v0.9.0 - 稳定版 (当前版本)
|
|
6
6
|
|
|
7
|
-
###
|
|
8
|
-
- [x]
|
|
7
|
+
### 核心架构
|
|
8
|
+
- [x] Ink (React) TUI 框架
|
|
9
9
|
- [x] LLM Provider 抽象层 (OpenAI/Anthropic/Gemini)
|
|
10
|
-
- [x]
|
|
11
|
-
- [x]
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
10
|
+
- [x] 15 个 Provider + 自定义中转站
|
|
11
|
+
- [x] 模块化目录结构 (cmd/app/config/llm/session/tools/tui/skills/hooks/prompts)
|
|
12
|
+
|
|
13
|
+
### 工具系统
|
|
14
|
+
- [x] file (读/写/列表/删除)
|
|
15
|
+
- [x] shell (执行命令)
|
|
16
|
+
- [x] git (操作)
|
|
17
|
+
- [x] search (搜索)
|
|
18
|
+
- [x] nwt (项目记忆,30天自动归档)
|
|
19
|
+
|
|
20
|
+
### Skills 系统
|
|
21
|
+
- [x] 16 个内置 Skills (规划/调试/TDD/架构/浏览器等)
|
|
22
|
+
- [x] /skills 命令管理
|
|
23
|
+
- [x] 自动激活
|
|
24
|
+
|
|
25
|
+
### UI/UX
|
|
26
|
+
- [x] Ink TUI 流式输出
|
|
27
|
+
- [x] Markdown 渲染 (marked-terminal)
|
|
28
|
+
- [x] 工具调用显示 (opencode 风格)
|
|
29
|
+
- [x] 状态栏
|
|
30
|
+
- [x] 命令系统 (/model, /new, /compact, /skills, /mcp, /help)
|
|
31
|
+
- [x] /model 交互式选择框
|
|
32
|
+
|
|
33
|
+
### 智能功能
|
|
34
|
+
- [x] 自动读取 CLAUDE.md/SKILLS.md (通用路径)
|
|
35
|
+
- [x] NWT 项目历史自动注入系统提示
|
|
36
|
+
- [x] 上下文自动压缩 (超限触发)
|
|
37
|
+
- [x] API 错误检测 (401/403/429)
|
|
38
|
+
- [x] 启动时检测 API Key
|
|
39
|
+
|
|
40
|
+
### 安装
|
|
41
|
+
- [x] npm install -g thatgfsj-code
|
|
42
|
+
- [x] Windows PowerShell 一键安装
|
|
43
|
+
- [x] Linux/macOS Bash 一键安装
|
|
44
|
+
- [x] 自动下载 Node.js (如果没有)
|
|
45
|
+
|
|
46
|
+
### 测试通过
|
|
47
|
+
- [x] 简单任务: 读文件 + 回答
|
|
48
|
+
- [x] 中等任务: 修改文件 + 验证
|
|
49
|
+
- [x] 困难任务: 多步骤 + NWT 记录
|
|
50
|
+
- [x] Git + Search + NWT 联合测试
|
|
51
|
+
- [x] 多文件创建和修改
|
|
30
52
|
|
|
31
53
|
---
|
|
32
54
|
|
|
33
55
|
## 📋 未来计划
|
|
34
56
|
|
|
35
|
-
###
|
|
57
|
+
### v1.0.0
|
|
36
58
|
- [ ] SQLite 会话持久化
|
|
37
|
-
- [ ]
|
|
38
|
-
- [ ]
|
|
39
|
-
- [ ] MCP 服务器配置文件支持
|
|
40
|
-
|
|
41
|
-
### v0.5.0 - TUI 升级
|
|
42
|
-
- [ ] Ink/React TUI 替换 readline
|
|
43
|
-
- [ ] 分屏显示 (代码 + 对话)
|
|
44
|
-
- [ ] Vim 模式编辑器
|
|
45
|
-
- [ ] 文件变更预览面板
|
|
46
|
-
|
|
47
|
-
### v1.0.0 - 稳定版
|
|
48
|
-
- [ ] LSP 集成
|
|
59
|
+
- [ ] Token 使用量显示
|
|
60
|
+
- [ ] 命令 Tab 补全
|
|
49
61
|
- [ ] 多会话管理
|
|
50
|
-
- [ ]
|
|
51
|
-
- [ ]
|
|
62
|
+
- [ ] LSP 集成
|
|
63
|
+
- [ ] 图片支持
|
|
52
64
|
|
|
53
65
|
---
|
|
54
66
|
|
|
55
|
-
##
|
|
67
|
+
## 历史版本
|
|
56
68
|
|
|
57
|
-
### ✅ v0.
|
|
58
|
-
-
|
|
69
|
+
### ✅ v0.8.0 - 命令系统
|
|
70
|
+
- /model, /new, /compact, /skills, /mcp 命令
|
|
71
|
+
|
|
72
|
+
### ✅ v0.7.0 - Skills + NWT
|
|
73
|
+
- 16 个内置 Skills, NWT 项目记忆
|
|
74
|
+
|
|
75
|
+
### ✅ v0.6.0 - Ink TUI
|
|
76
|
+
- React 组件化 UI, Markdown 渲染
|
|
77
|
+
|
|
78
|
+
### ✅ v0.5.0 - Provider 重写
|
|
79
|
+
- 15 个 Provider, 自定义中转站
|
|
80
|
+
|
|
81
|
+
### ✅ v0.4.0 - UI 优化
|
|
82
|
+
- 流式输出, 工具调用显示
|
|
83
|
+
|
|
84
|
+
### ✅ v0.3.0 - 架构重构
|
|
85
|
+
- 模块化目录, Provider 抽象
|
|
59
86
|
|
|
60
87
|
### ✅ v0.2.0 - 工具 + LLM
|
|
61
|
-
- Git
|
|
88
|
+
- Git/搜索工具, 多 Provider
|
|
89
|
+
|
|
90
|
+
### ✅ v0.1.0 - REPL 基础
|
|
91
|
+
- 彩色 UI, 命令提示符
|
package/dist/cmd/index.js
CHANGED
|
@@ -24,7 +24,7 @@ process.on('unhandledRejection', (reason) => {
|
|
|
24
24
|
program
|
|
25
25
|
.name('gfcode')
|
|
26
26
|
.description('Thatgfsj Code - AI Coding Assistant')
|
|
27
|
-
.version('0.
|
|
27
|
+
.version('0.9.0')
|
|
28
28
|
.argument('[prompt]', 'Task to execute (omit to start interactive mode)')
|
|
29
29
|
.option('-m, --model <model>', 'Specify model')
|
|
30
30
|
.option('-i, --interactive', 'Force interactive mode')
|
|
@@ -3,6 +3,6 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { Box, Text } from 'ink';
|
|
5
5
|
export const Header = React.memo(function Header({ provider, model }) {
|
|
6
|
-
return (_jsxs(Box, { flexDirection: "column", marginBottom: 0, children: [_jsxs(Box, { justifyContent: "space-between", width: "100%", children: [_jsxs(Box, { children: [_jsx(Text, { color: "#06B6D4", bold: true, children: " \u26A1 " }), _jsx(Text, { color: "#22D3EE", bold: true, children: "THATGFSJ CODE" }), _jsx(Text, { dimColor: true, children: " v0.
|
|
6
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: 0, children: [_jsxs(Box, { justifyContent: "space-between", width: "100%", children: [_jsxs(Box, { children: [_jsx(Text, { color: "#06B6D4", bold: true, children: " \u26A1 " }), _jsx(Text, { color: "#22D3EE", bold: true, children: "THATGFSJ CODE" }), _jsx(Text, { dimColor: true, children: " v0.9.0" })] }), _jsxs(Box, { children: [_jsxs(Text, { color: "#06B6D4", bold: true, children: [" ", provider, " "] }), _jsx(Text, { dimColor: true, children: "/" }), _jsxs(Text, { color: "#22D3EE", children: [" ", model, " "] })] })] }), _jsx(Text, { color: "#374151", children: '─'.repeat(80) })] }));
|
|
7
7
|
});
|
|
8
8
|
//# sourceMappingURL=Header.js.map
|
package/package.json
CHANGED
package/src/cmd/index.tsx
CHANGED
|
@@ -28,7 +28,7 @@ process.on('unhandledRejection', (reason) => {
|
|
|
28
28
|
program
|
|
29
29
|
.name('gfcode')
|
|
30
30
|
.description('Thatgfsj Code - AI Coding Assistant')
|
|
31
|
-
.version('0.
|
|
31
|
+
.version('0.9.0')
|
|
32
32
|
.argument('[prompt]', 'Task to execute (omit to start interactive mode)')
|
|
33
33
|
.option('-m, --model <model>', 'Specify model')
|
|
34
34
|
.option('-i, --interactive', 'Force interactive mode')
|
|
@@ -14,7 +14,7 @@ export const Header = React.memo(function Header({ provider, model }: Props) {
|
|
|
14
14
|
<Box>
|
|
15
15
|
<Text color="#06B6D4" bold> ⚡ </Text>
|
|
16
16
|
<Text color="#22D3EE" bold>THATGFSJ CODE</Text>
|
|
17
|
-
<Text dimColor> v0.
|
|
17
|
+
<Text dimColor> v0.9.0</Text>
|
|
18
18
|
</Box>
|
|
19
19
|
<Box>
|
|
20
20
|
<Text color="#06B6D4" bold> {provider} </Text>
|