Skip to content

feat(runtime-host): own project catalog - #2603

Merged
M4n5ter merged 2 commits into
mainfrom
feat/2522-host-owned-projects
Aug 9, 2026
Merged

M4n5ter merged 2 commits into
mainfrom
feat/2522-host-owned-projects

Conversation

@M4n5ter

@M4n5ter M4n5ter commented Aug 9, 2026

Copy link
Copy Markdown
Member
English

Summary

Move Project Catalog authority into Runtime Host and cut Desktop over to the Host-owned catalog.

  • add bounded, lossless, paginated Project Catalog query/mutation operations and global catalog invalidation;
  • bind the only production writer to the Runtime Host root-owner lease;
  • move project registration, selection, touch, relink, rename, archive, and restore behind Runtime Host;
  • commit project relink and affected Session cwd/project reassignment in one SQLite transaction;
  • serialize Session membership resolution with Project mutations so stale Client paths cannot recreate old membership;
  • remove Desktop's direct catalog writer and its temporary Session-reassignment adapter;
  • propagate catalog changes to all authorized Clients and refresh both the Desktop project context and an already-open Project Settings page, with latest-only refresh ordering;
  • require Host-path authority for catalog reads and mutations, so existing remote credentials do not gain path access when this operation is added.

This is the first Phase 3 slice tracked by #2522. Tagged workspace targets, remote target profiles, execution-location presentation, and remote Client Capability path semantics remain separate slices.

Refs #2522

Verification

  • npm --workspace @maka/storage test — 774 passed, 12 skipped
  • npm --workspace @maka/runtime-host test — 793 passed
  • npm --workspace @maka/desktop run test:dist — 1126 passed
  • Storage and Runtime Host builds, the Desktop production build, Biome, and git diff --check — passed
  • Real Desktop smoke verified rename propagation between Desktop and a second TUI-surface Local IPC Client, including live updates in an already-open Project Settings page
  • The repository-wide Desktop typecheck remains blocked by the existing ChatLayoutProps.conversationKey error on origin/main; affected Desktop build targets pass

Checklist

  • Tests cover the change and fail without it
  • Lint, format, affected builds, and affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No
简体中文

摘要

将 Project Catalog authority 移入 Runtime Host,并把 Desktop 切换到 Host 持有的目录。

  • 增加有界、无损、可分页的 Project Catalog 查询/修改 operation,以及全局目录失效通知;
  • 将唯一的生产 writer 绑定到 Runtime Host 的 root-owner lease;
  • 把项目注册、选择、touch、relink、重命名、归档和恢复全部移到 Runtime Host 后面;
  • 在同一个 SQLite transaction 内提交项目 relink 与受影响 Session 的 cwd/project 重分配;
  • 将 Session 归属解析与 Project 修改串行化,避免过时的 Client path 重新创建旧归属;
  • 删除 Desktop 的直接目录 writer 和临时 Session 重分配 adapter;
  • 将目录变化传播给所有已授权 Client,并按 latest-only 顺序刷新 Desktop 项目上下文及已经打开的项目设置页;
  • Project Catalog 读写需要 Host path authority,新增 operation 不会让既有远程 credential 自动获得路径访问能力。

这是 #2522 跟踪的第一个 Phase 3 slice。Tagged workspace target、远程 target profile、执行位置展示和远程 Client Capability 路径语义仍由后续 slice 处理。

关联 #2522

验证

  • npm --workspace @maka/storage test — 774 项通过,12 项跳过
  • npm --workspace @maka/runtime-host test — 793 项通过
  • npm --workspace @maka/desktop run test:dist — 1126 项通过
  • Storage 与 Runtime Host build、Desktop production build、Biome 和 git diff --check — 通过
  • 真实 Desktop 冒烟验证了 Desktop 与第二个 TUI-surface Local IPC Client 之间的重命名传播,包括已经打开的项目设置页实时更新
  • 仓库级 Desktop typecheck 仍被 origin/main 既有的 ChatLayoutProps.conversationKey 错误阻塞;本次影响的 Desktop build target 均通过

检查清单

  • 测试覆盖本次行为,且在缺少实现时会失败
  • lint、format、受影响 build 与测试套件均在本地通过

此 PR 是否改变行为?

  • 是——已在摘要中说明

@M4n5ter
M4n5ter force-pushed the feat/2522-host-owned-projects branch from 566967a to 8c2680d Compare August 9, 2026 13:52
@M4n5ter
M4n5ter marked this pull request as ready for review August 9, 2026 13:57
@M4n5ter
M4n5ter merged commit b067346 into main Aug 9, 2026
9 checks passed
@M4n5ter
M4n5ter deleted the feat/2522-host-owned-projects branch August 9, 2026 13:57
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.

1 participant