Skip to content

chore: promote preview to main - #417

Merged
1lck merged 37 commits into
mainfrom
preview
Sep 3, 2026
Merged

chore: promote preview to main#417
1lck merged 37 commits into
mainfrom
preview

Conversation

@1lck

@1lck 1lck commented Sep 2, 2026

Copy link
Copy Markdown
Owner

将预发布分支 preview 的最新状态提升到 main

包含近期预发布中的 macOS 工作台、Git 视图与性能改进,以及对应的稳定性测试和文档更新。

验证:

  • ./scripts/verify-git-graph.sh
  • 已确认 previewmain 无合并冲突。

xiaoyumuxi and others added 30 commits August 31, 2026 20:12
…anes

Stages 0-5 of the rendering performance plan:

- Replace 16ms Task.sleep drag coalescing with zero-latency
  DispatchQueue.main.async via LitheDragUpdateScheduler (3 sites)
- Replace per-frame full-pane even-odd Shape tessellation with four
  fixed-size static corner notch paths
- Restore module tool window structural identity via ModuleToolContent
  Equatable wrapper, defeating AnyView erasure
- Sink drag state into LitheSplitPaneView containers so divider drags
  only invalidate the small container, not the feature view (4 sites)
- Flatten recursive AnyView reference tree into GitReferenceRows with
  LazyVStack and Equatable row views
- Add GitChangeSectionsCache for ChangesSidebarView
- Add EditorTabFrameStore reference box to stop layout-pass preference
  writes from invalidating the entire EditorAreaView body
- Add RunConfigurationTokenCache and GitCurrentReferenceCache to
  memoize repeated derivations
- Add gitCommitsVersion monotonic token replacing O(n) array comparison
- Add LitheSignpost DEBUG body evaluation counter
- Add tests for LitheDragUpdateScheduler, LitheSplitPaneGeometry,
  WorkbenchPaneCornerGeometry, GitReferenceRowsBuilder,
  GitChangeSectionsCache
Add missing type definitions (GitReferenceRowActions, GitReferenceRowView,
GitLogThreePaneLayout) lost during transcript replay, remove duplicate
GitReferenceTreeNode, fix WorkbenchWorkspaceSplitView action routing, and
fix LitheSignpost to use OSSignpostIntervalState and String-keyed dictionary.
- GitLogView: fill local/remote/tag reference rows via .task(id: referenceRowsTaskIdentity)
  using GitReferenceRowsBuilder; add GitReferenceRowsIdentity combined key;
  replace linear currentReference scan with GitCurrentReferenceCache;
  switch .task(id:) for graph layout to use gitCommitsVersion integer token;
  remove unused commitFileTreeItems @State
- ChangesSidebarView: replace four filter passes with GitChangeSectionsCache
  (single-pass derivation of displayed/tracked/added/staged)
- RunView: replace per-body String.split with RunConfigurationTokenCache
  (two separate instances for collapsed executions and pin tokens)
- EditorAreaView: replace @State editorTabFrames dictionary with EditorTabFrameStore
  reference box so preference writes no longer invalidate the editor body
…g state

GitLogView: split gitLogQuery into hasActiveGitLogFilter (no Date() call)
and gitLogQuery(now:). The debounced .task captures Date() once at fire
time so afterDate/beforeDate are stable for the lifetime of each query.

RunView: remove liveConfigurationListWidth, configurationListDragStart,
resolvedListWidth, and constrained() — all became dead code when the
configuration list pane was migrated to LitheSplitPaneView.
Swift 6.2 (the CI toolchain) rejects a call to a @MainActor-isolated
init inside the nonisolated @State default-value context. The init
itself is safe to call from any context — it only assigns self.delivery;
no @mainactor state is touched until the first method call.

Annotating the init nonisolated preserves full @mainactor isolation on
all mutating methods while making the @State-held initialisation
accepted by both Swift 6.2 and 6.3.
The branch popup checked out a reference on a plain click, so scanning the
list could switch the working tree by accident; checkout was otherwise only
reachable through the right-click menu.

Branch rows now present their actions through a native pop-up menu, with
Checkout as one explicit entry. The native menu also supplies IDEA's
hover-safety path: once a row's menu is open, moving to another row opens
that menu without a click. Rows whose branch or upstream name the fixed
popup width truncates expose the full pair as a hover tooltip.
The testing helper detaches into its own process group, so the previous
group-scoped walk only sampled the shell wrapper waiting on its child.
Walk the ppid tree instead and capture a listing plus a thread-stack
sample of every descendant before terminating the run.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The testing helper detaches into its own process group, so the previous
group-scoped walk only sampled the shell wrapper waiting on its child.
Walk the ppid tree instead and capture a listing plus a thread-stack
sample of every descendant before terminating the run.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
feat(macos): 对齐 IDEA 的分支弹窗交互模式
perf(macos): 消除拖动分隔条导致的全局渲染卡顿
按窗口标签区分运行进程会话,并将 run-output/run-exit 事件定向投递到发起窗口,避免多开项目时输出混入其他窗口。

Fixes #408

Co-authored-by: Cursor <cursoragent@cursor.com>
将 use-run-process-events 与 use-maven-process-events 从全局 listen 改为 getCurrentWebviewWindow().listen,避免 Tauri EventTarget::Any 在多窗下仍接收 emit_to 事件。

补充 listener 窗口作用域单测,验证不会注册全局 listen。

Co-authored-by: Cursor <cursoragent@cursor.com>
1lck and others added 7 commits September 2, 2026 20:53
…ut-leak

Fix/windows multi window run output leak
feat(git): tag management with restore for deleted tags and branches(rebuild 354)
* feat(windows): 支持项目显示别名以区分同名文件夹

为工作区项目标签增加 displayAlias 字段并持久化,在标题栏、项目标签栏
及侧边栏以「文件夹名 (别名)」格式展示;用户可通过项目上下文菜单设置
别名,解决多个同名文件夹项目同时打开时难以区分路径的问题。

Closes #404

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(windows): 移除 project.store 中错误的自引用 import 以通过类型检查

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(windows): 修复 run 测试 mock 以通过 Windows CI

补充 lithe-core-client 与 tauri-core 的测试 mock 导出,并保留 run.store
的真实导出,避免同进程内后续测试加载失败。

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Lichenkang <2188718831@qq.com>
fix(windows): keep run test within tauri boundary
@1lck
1lck merged commit 48800c7 into main Sep 3, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants