Files
endorphin-tessera-gui/docs/architecture/05-workspace.md
T
codex-bot 21439d4c4d
Verify Tessera GUI / verify (push) Failing after 1m30s
docs: render UML diagrams and embed portable previews
2026-10-25 22:09:47 +08:00

3.2 KiB
Raw Blame History

05 · 标签、窗口、默认页与开发工具

三层身份

层次 负责什么 不负责什么
托管 Page / ManagedWindow 页面内容、打开/关闭、所属窗口、脚本覆盖行为和对象可达性 像素级 hover、原生按钮位置
已发布 Tab / Frame / Window Envelope 传输不透明 ID、标题、活动状态、窗口命令和版本 保留 VM 堆对象
TesseraApp / tabs::Motion / winit Window 绘制、命中、拖动、滚动、原生资源及即时交互 执行业务回调、复制业务对象图

页面展示与可达性状态

放大 SVG · 编辑 UML 源码

该图是可达性与展示状态的说明,不是一个源码 enum。关闭原生窗口、移除 Page 展示和回收对象不是同一动作。跨窗口拖放携带来源/目标窗口、布局版本、插入位置等元数据,worker 拒绝过期目标,再更新托管 registry;GUI 不直接移动堆对象。可编辑来源:windows.puml。

已完成的标签行为

  • 启动有一个默认 Page;+、Cmd/Ctrl+T 新建,Cmd/Ctrl+W 关闭活动页。
  • 顶部与左侧宿主区域共用背景;内容区单独作为页面表面,未实现用户暂不需要的左右页面分栏。
  • 40 逻辑像素栏高、32 像素标签、88–208 像素宽度;保留高密度和鼠标/触控板滚动,移除两侧点击箭头。
  • 非活动标签之间有短竖线,活动/hover 邻边按状态隐藏或渐变。
  • 新建/关闭/自动揭示使用独立几何动画;hover 背景、关闭按钮和分隔线使用 160ms 颜色过渡,点击选中即时生效。
  • macOS 原生红黄绿保留系统行为,并与标签中心线对齐;工具栏空白处可拖动和双击放大/还原。

native_chrome.rs 通过 AppKit 操作现有窗口与系统按钮。双击使用 NSEvent.clickCount 和 NSWindow.performZoom,而不是画一个假的最大化动画。读取系统偏好:最小化/禁用遵循分支;Fill 目前映射到公开 zoom API,没有调用 Chrome 使用的私有 _zoomFill,不保证复刻所有新系统平铺边距。

默认页与四个工具页

默认页源码是 start_page.endor,位于独立私有模块;创建页、共享计数和组合示例都是真实 Endor 对象操作。它不覆盖用户程序 globals,也没有把四个工具页当作默认内容。

Console、Sources、Network、Settings 各自有独立页面实现和窗口内交互状态。目前通过 ui.developerTools("Console") 等入口与现有快捷键进入,工具发现菜单仍延后。四页不是新平台业务模块,也不代表已经接入云服务。

  • Console:真实 VM 输入、输出和本机请求活动;不是只显示介绍的文本区域。
  • Sources:当前源码/Console transcript、AST 与选择;云文件 provider 默认未连接。
  • Network:仅本 Tessera API 请求的有界记录,不是浏览器或操作系统抓包。
  • Settings:内存内主题强调色;没有跨进程持久化。

源码位置:shell/developer_tools/。宿主管理控件在 shell/system_ui/,和 guest 的 Button/Block 类型有明确区别。