Skip to content
Merged

Preview #1484

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
ee71043
feat(macos): 按设计稿改造“管理插件仓库”弹窗,添加仓库源管理 (#1407)
xiaoyumuxi Oct 22, 2026
d817430
perf(macos): 设置窗口与工作台变化解耦,拖动交给窗口服务器 (#1408)
xiaoyumuxi Oct 22, 2026
3f33b17
feat(macos): 隐藏路径合并为一个模式列表,支持 .lithe/* 隐藏整个文件夹和 **/ 任意层级 (#1409)
xiaoyumuxi Oct 22, 2026
961facb
docs(plugins): 记录独立 Cargo 插件及测试归属 (#1413)
Mucheen Oct 22, 2026
650e372
fix(macos): HTML 预览增强为内嵌浏览器,支持导航、缩放、滚动条与开发者工具等 (#1412)
xiaoyumuxi Oct 22, 2026
0aaa85c
fix(git): 大型未跟踪目录按目录汇总,变更列表只构建可见行 (#1385) (#1417)
1lck Oct 22, 2026
cf0eae7
Fix/1272 push target upstream (#1331)
milestone-17 Oct 22, 2026
530d34d
feat(windows): complete Agent parity capabilities (#1411)
Mucheen Oct 22, 2026
55800de
fix(macos): 项目树同级排序对齐 IDEA 自然排序,版本号按数值从低到高 (#1427)
xiaoyumuxi Oct 22, 2026
bc3684c
feat(macos): HTML 预览新增页内查找、打印与导出 PDF、右键菜单调整;摄像头和麦克风统一默认拒绝、逐次确认 (#1421)
xiaoyumuxi Oct 22, 2026
fe0b31c
docs(vcs): 统一 VCS 模型与 Provider 接入提案(#827) (#1428)
xiaoyumuxi Oct 22, 2026
e910c5b
fix(macos): 终端背景变化时通知 TUI 重查 OSC 11 (#1414)
icefery Oct 22, 2026
bd10378
fix(windows): 对齐 Diff 新增行着色、文件导航顺序与预览标签 (#1429)
frankxii Oct 22, 2026
5a67b4d
style(macos): 统一文字按钮颜色、尺寸和间距 (#1422)
arkleselect Oct 22, 2026
6081b42
fix: 关闭项目、退出和更新前确认并结束运行服务,Windows 用 Job Object 管理进程树 (#1137) (#1431)
1lck Oct 22, 2026
3926e23
fix(macos): 恢复隐藏标题栏窗口的原生全屏能力 (#1410)
zher52 Oct 22, 2026
bad347e
feat(macos): 终端环境补充 TERM_PROGRAM_VERSION (#1416)
icefery Oct 22, 2026
1fba194
feat(plugins): 统一可执行文件候选与宿主注入解析 (#1420)
Mucheen Oct 23, 2026
d37e4bf
refactor(plugins): 契约发布到 lithe-plugin-docs,fixture 按能力改名,SDK 移出主仓库 (#…
xiaoyumuxi Oct 23, 2026
c1a1f98
fix(macos): keep marketplace details inside split bounds (#1447)
Mucheen Oct 23, 2026
7661301
feat(agent): 完善技能、全局指令与 MCP 服务器设置 (#1381)
Mucheen Oct 23, 2026
f0072c9
fix(macos): 终端配色同步: 主题刷新、COLORFGBG 与订阅制背景通知 (#1448)
icefery Oct 23, 2026
18345cc
feat(vcs): Core 与 Node SDK 实现插件 VCS Provider 底层(#827 P1) (#1430)
xiaoyumuxi Oct 23, 2026
bb61147
feat(vcs): macOS 宿主接入插件 VCS Provider,SVN 改为独立社区插件(#827 P3) (#1441)
xiaoyumuxi Oct 23, 2026
f5ada5e
fix(macos): 修正 Agent 正文留白与 AI 设置排序 (#1450)
Mucheen Oct 23, 2026
ee5081e
fix(ci): 放宽 macOS Swift 编译预算并避免构建失败叠加报告失败 (#1449)
1lck Oct 23, 2026
c5d0907
feat(windows): 终端活动栏拖动停靠并修正搜索快捷键 (#1436) (#1446)
puppyben1 Oct 23, 2026
5ec99a2
fix(windows): Ctrl+Z 优先恢复键盘移动后的光标 (#1443)
puppyben1 Oct 23, 2026
45be960
docs(skill): gh 不支持 YAML 表单时允许按表单字段生成正文提交 Issue (#1458)
xiaoyumuxi Oct 24, 2026
71d09ed
feat(macos): 编辑区 Agent 大历史秒开与 Claude Desktop 式布局;Claude 支持官方订阅与 API K…
xiaoyumuxi Oct 24, 2026
19042e8
feat(macos): 新建项目向导,插件通过 projectGenerators 注入项目模板 (#1452)
xiaoyumuxi Oct 24, 2026
383d87e
feat(remote): 远程开发 Rust 核心——协议、轻量远端服务与传输链 (#1460)
xiaoyumuxi Oct 24, 2026
b9a83b0
feat(agent): 新增 Codex / Claude Code 原生 Hook 管理 (#1459)
Mucheen Oct 24, 2026
0dcbb19
fix(macos): shell 退出后自动关闭终端标签页 (#1456)
icefery Oct 24, 2026
854f814
feat(remote): 远端后端补全——文件监听、终端、登录环境、隧道与断线重连 (#1461)
xiaoyumuxi Oct 24, 2026
8e386de
feat(macos): 插件声明式原生界面与公共控件统一 (#1351) (#1423)
arkleselect Oct 24, 2026
d6a4ff9
feat(remote): 远程开发连接窗口——SSH 连接配置、测试、主机信息与打开远程文件夹 (#1463)
xiaoyumuxi Oct 24, 2026
3a8e94d
对齐 IDEA 的 macOS 数据库树与连接编辑器 (#1451)
arkleselect Oct 24, 2026
d3a3a42
fix(agent): 合并每轮思考与工具过程,默认折叠展示 (#1464)
Mucheen Oct 24, 2026
325504d
fix(lsp): Java 调用补全默认留空实参 (#1437) (#1440)
puppyben1 Oct 24, 2026
53f7052
feat(i18n): 统一双端完整语言资源与构建时生成 (#1449)
1lck Oct 24, 2026
13428e6
docs(notes): 提议把数据库拆成双端共用的独立插件
1lck Oct 24, 2026
829c729
fix(windows): 数据库后端未接入时如实标记并按普通文件打开
1lck Oct 24, 2026
4a339fa
fix(database): 生产保护按词法判定危险 SQL,执行前先由后端确认
1lck Oct 24, 2026
46fcda5
docs(notes): 记录数据库插件化的签名、远程开发与 Windows 决策
1lck Oct 24, 2026
8471b99
feat(plugins): 插件后端能力与函数协议 v2 宿主凭据服务
1lck Oct 24, 2026
749cf9d
docs(notes): 记录插件后端、协议 v2 凭据与 Agent 工具走 lithe MCP 的决策
1lck Oct 24, 2026
5af2608
feat(agent): Claude 与 Codex 官方订阅支持多账号与手动切换 (#1457) (#1471)
xiaoyumuxi Oct 24, 2026
42c5a30
docs: plan Windows plugin parity with macOS (#1468)
Mucheen Oct 24, 2026
c11d666
docs(notes): 规划 Java Support 独立分发与内置包迁移 (#1473)
Mucheen Oct 24, 2026
173c791
feat(macos): 宿主运行插件后端并通过 Keychain 提供凭据服务
1lck Oct 24, 2026
f8ae616
test(macos): wait for backend host responses with a continuation inst…
1lck Oct 24, 2026
ce175e0
docs(plugins): list the Rust SDK for plugin backends in the contract
1lck Oct 24, 2026
1017b6d
fix(database): read the proxy URL the macOS client sends
1lck Oct 24, 2026
d1d29d5
fix(database): end the SSH tunnel client with the request on every path
1lck Oct 24, 2026
de36083
feat(plugins): 插件网页桥接第 2 版加入文件对话框
1lck Oct 24, 2026
1e78b59
feat(windows): 声明式插件宿主(契约 v1)——包存储、安装链、设置、运行计划与 Web 工具窗口 (#1424)
Mucheen Oct 24, 2026
83017af
feat(macos): Agent 对话显示工具图片缩略图、点击放大,并将后台任务通知显示为状态行 (#1462) (#1472)
xiaoyumuxi Oct 24, 2026
68f2433
feat(plugins): list the database plugin and move the built-in module'…
1lck Oct 24, 2026
9227753
refactor: remove the built-in database module; the database is a plug…
1lck Oct 24, 2026
533423e
Merge remote-tracking branch 'origin/preview' into feat/database-plugin
1lck Oct 24, 2026
14c909f
feat(plugins): ship Database as a Lithe Store community plugin
1lck Oct 24, 2026
191c272
docs(database): record the macOS acceptance of the plugin migration
1lck Oct 24, 2026
d046fd1
Merge pull request #1470 from 1lck/feat/database-plugin
1lck Oct 24, 2026
3e3cd3f
fix(agent): 恢复压缩过的 Claude 会话时保留压缩前用户消息里的截图 (#1479)
xiaoyumuxi Oct 25, 2026
9224ead
feat(agent): 兼容 Claude Desktop 会话独有机制,Agent 面板以卡片呈现 (#1480)
xiaoyumuxi Oct 25, 2026
a9264ca
fix(windows): 支持 F4 打开焦点文件和搜索位置 (#1444)
puppyben1 Oct 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,12 @@ JDT 通道曾触发其 15 秒测试期限,同一提交在 SharedRust 通道用
所有测试的时限来隐藏这类问题。计时工具用可控时钟验证普通、集成和总截止
时间,并验证 HTML 与 JUnit 不会把合法的集成耗时误判为失败。

checkout/clone 完整流程用例 `git_write_executes_checkout_preflight_clone_and_validation`
在 Windows CI 39935852248 中全部断言通过,Rust 内部计时 15.22 秒、测试进程计时
18.529 秒,超过默认十五秒后触发清缓存重编,继而耗尽原套件期限。该用例创建分叉
分支,覆盖干净、脏和未跟踪文件预检、智能/强制切换以及本地 clone,因此只为它在
SharedRust 和真实 JDT 两个入口设置三十秒预算;不延长请求或整套期限,不重试失败断言。

取消模块的确定性回归核对 mutation 后正常读取保留原截止时间和取消能力,
已取消或超时请求的独立读取仍受清理期限约束,错误和异常退出后恢复原状态。
真实仓库 rebase 回归核对 edit、conflict、continue、skip、abort 和过期 amendment;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,13 @@ MacServiceContainer
错误,不能把残留资源伪装成成功禁用。上述任务仍在主执行器上使用异步等待,
不阻塞线程、不新增插件代码加载能力。

使用真实 AppModel 的测试也必须遵守项目打开的清理顺序。`openProjectDirectly` 会启动
模块图关闭;项目文件快照已经发布不代表关闭完成。Safe Mode 测试要手动注入能力时,
先通过有截止的 `WorkbenchTestScope.run` 等待 `awaitModuleRuntimeShutdown()`,再放入
测试能力。否则迟到的 shutdown 事件可能移除刚注入的能力,让前几次搜索通过、随后
查询全部为空。不要用睡眠或反复重新注入能力掩盖这个顺序;搜索排除回归与插件页面
生命周期测试都使用同一个明确的完成边界。

### 数据库视图在模块释放后的刷新

退出应用或休眠数据库模块时,SwiftUI(macOS 的声明式界面框架)可能先刷新
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,12 @@ Swift 源码,也不得依赖 macOS 类型。
| `macos/Sources/Lithe/Core/` | 平台无关端口和类型化 Rust 操作 |
| `macos/Sources/Lithe/Platform/MacOS/` | macOS 适配器和组合根 |
| `rust/lithe-core/` | 确定性的共享命令、模型、校验和 C ABI |
| `rust/lithe-git-host/` | 原生 Git 子进程、管道、临时输入和有界清理 |
| `rust/lithe-git-host/` | 原生 Git 子进程、管道、临时输入和有界清理;以及长期子进程的进程树归属(`ProcessTree`,Windows Job Object / Unix 进程组) |
| `windows/` | React/Tauri Windows 产品和 Windows Rust 适配器 |
| `Plugins/mac/` | macOS 所有的插件包 |
| `Plugins/win/` | Windows 所有的插件包 |
| `frontend/editor/` | 两端共同依赖的 Monaco 表现层、分词与编辑器模型;不调用平台 API |
| `shared/` | 跨平台契约和夹具,不放编译实现 |
| `infra/` | 仓库级开发和验证基础设施 |
| `third_party/` | 固定版本的上游清单和必要的局部源码补丁 |

应用层依赖方向如下:
Expand Down Expand Up @@ -128,6 +127,9 @@ Swift 源码。新文件以主要类型

原生 Git 适配器 `rust/lithe-git-host/` 负责子进程、管道、临时输入文件,
以及进程组或 Windows 作业对象的限时清理,不负责 Git 参数策略或界面模型。
运行会话、调试适配器和 Windows 语言服务器这类宿主自己读写输出的长期进程,
也通过它的 `ProcessTree` 把整棵进程树交给 Job Object 或进程组,不在各自模块里
重复实现 Windows 作业对象。
现有 Core Git 输出捕获入口调用此适配器,以保留 JSON 和 C ABI(C 语言
调用边界)的兼容性;共享事件解码和凭据脱敏留在 `rust/lithe-core/src/git/`。
认证界面和凭据存储仍由各平台负责。新增 Git 操作应复用此执行边界,
Expand Down Expand Up @@ -269,5 +271,4 @@ Core 操作会随协议演进持续增加,逐个新增 Tauri command 会在
- `shared/`
- `frontend/editor/`
- `scripts/`
- `infra/`
- `third_party/`
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,31 @@ Diff 的纵向同步依据 Community `SyncScrollSupport.ScrollHelper` 和
有效范围。记录的组件布局与截图耗时只是本地诊断数据,不能替代整机连续拖动的
帧延迟,也不能把 `split.drag` 手势持续时间当成帧性能。

### 设置窗口只观察设置相关的变化

设置窗口不能整体订阅 `AppModel`。`AppModel` 会把文档、语言服务、Git、搜索、
运行等十几个功能模块的变化合并转发出去;整体订阅时,主窗口里编辑代码、索引或
刷新 Git 状态,都会让整个设置页(包括插件列表和详情)重新计算,设置窗口还会
重新配置一次标题栏。工程越忙,设置页越卡。IDEA 的设置对话框也不随工程事件重绘。

正确做法是:设置页根视图通过 `SettingsModelContext` 读取同一个 `AppModel`,只订阅
`AppModel.settingsChanges`。这条通道包含模型自身的发布属性、插件和模块的直接通知、
模块激活与释放,以及当前工作区变化;功能模块的高频转发调用
`scheduleObjectWillChangeRelay(affectsSettings: false)`,不进入设置窗口。新增的转发
如果会改变设置页显示的内容,保持默认的 `affectsSettings: true`。

需要实时状态的页面自己订阅对应功能模型,或者在一个小的叶子视图里订阅 `AppModel`,
例如语言服务状态和项目运行时页面。模块按需激活的页面要把激活结果存进本地状态,
不能指望后续的整体刷新把新功能显示出来;但本地状态只能作为能力缓存填好前的过渡,统一用 `ModuleFeatureSelection`:激活任务以当前能力身份为 key,模块休眠后立即丢弃旧实例并重新激活,页面不能继续读写已释放的功能实例。窗口外观(标题栏、样式掩码)只在标题、
主题、关闭按钮状态或外观真的变化时才重新应用。插件列表在一次渲染里只排序、
过滤一次,行的悬停状态留在行内部。

设置窗口是项目窗口的子窗口,用来跟随项目窗口移动。但 AppKit 拖动子窗口时由应用
主线程逐个鼠标事件移动,工程忙时拖动会一格一格地跳,不跟手。因此
`SettingsWindowChrome` 在标题栏按下鼠标时临时解除父子关系,交给窗口服务器拖动,
松手(或移动结束且鼠标已松开)后再挂回原项目窗口。不要为了跟随而在拖动期间保持
子窗口关系,也不要用定时器手动同步位置。

### 正确做法

```text
Expand Down Expand Up @@ -164,6 +189,13 @@ IDEA 的 [BranchesTreeComponent](https://github.com/JetBrains/intellij-community
`cd windows/tauri && bun test src/features/tabs/hooks/use-tab-wheel-scroll.test.tsx`
Windows CI 显式运行整个 `src/features/tabs` 测试目录,并生成逐项计时报告。
- 代码审查时确认拖动不会导致高频整页重绘
- `AppModelSettingsChangesTests` 验证只影响工作台的转发不会进入
`settingsChanges`,直接通知和设置相关的转发仍然会进入,并且合并后的一次转发
只要包含设置相关变化就会通知设置窗口。
- `ModuleFeatureSelectionTests` 验证设置页保持打开时,模块休眠后会丢弃已释放的
实例,重新激活后显示新实例。`SettingsAppearanceContainerTests` 用原生鼠标事件
验证:按下标题栏会解除子窗口关系,拖动中重新配置不会提前挂回,松手后挂回,
关闭后重新打开也会挂回。
- `GitGraphInteractionTests.splitPaneBounds` 在两种方向、两种位置及折叠状态
验证原生子视图身份、可见尺寸和传入的确定尺寸,防止恢复为堆栈尺寸探测。
- `LitheSplitPaneCollapseTests.outerDragSuspendsRowChrome` 使用原生分隔条
Expand Down
Loading
Loading