lofi-room
v0.0.0
Published
Electron desktop terminal workspace for developers, with live terminal sessions, webview widgets, and lo-fi control-room UI.
Maintainers
Readme
lofi-room
lofi-room 是当前正在演进的桌面终端工作区应用。它以 lofi-room 的审美和交互为 UI 基础,逐步迁入 localterm 已验证过的能力,当前第一阶段已经完成:
- Electron 桌面壳已接通
- widget runtime 已支持
react.panel和extension.webview - 本地 terminal 已跑通
PTY + worker + websocket + webview widget - workspace / session / detached session 的基础语义已落地
当前仓库的权威文档入口如下:
- 当前架构
- Workspace / Widget / Session 语义
- 开发与验证流程
- Widget UI 样式规范
- Roadmap / Backlog
- 历史架构草案
- 面向后续 code agent 的仓库协作约定
快速启动
全局安装并直接运行:
npm install -g lofi-room
lofi-room更新到最新版本:
npm install -g lofi-room@latest查看 CLI 帮助:
lofi-room --help说明:
- 这个分发方式面向有 Node/npm 的开发者用户
- npm 包发布前会预构建 Electron 主进程、renderer 和 builtin widgets
- 全局安装后不需要再手动执行
pnpm build
开发态 Electron:
pnpm dev生产构建并启动本地桌面应用:
pnpm build
pnpm start:app只启动浏览器态 renderer:
pnpm dev:renderer注意:extension.webview widget 依赖 Electron runtime。浏览器态只适合做纯 renderer 调试,不适合验证 terminal、session、webview widget。
常用验证命令
类型检查:
pnpm typecheckElectron 端到端回归:
pnpm test:e2e:electron --reporter=line tests/e2e/electron-terminal-tabs.spec.ts查看 Playwright HTML 报告:
pnpm run test:e2e:report人类可读报告产物:
output/playwright/human-report/index.md仓库结构
apps/
desktop/ Electron main / preload / session host
renderer/ 页面壳、Workspace UI、Sidebar、Dockview 布局
packages/
shared/ 跨层类型与 contract
ui/ 通用 UI 原子组件
widgets/ widget registry、host、layout/runtime glue
workspace-core/
workspace runtime store 与持久化
widget-terminal-core/
terminal webview 共享 runtime
widget-terminal-react/
本地 terminal widget
widget-code-agent-react/
code agent widget
extensions/
builtin.workspace/
builtin extension manifest 与 widget 静态资源
tests/e2e/
Electron E2E 回归当前产品语义
- 关闭 terminal tab:默认只关闭 widget,不销毁 session
- 左侧 workspace 下的 session 列表常驻显示当前 workspace 的 terminal sessions
- 点击 attached session:会定位到对应 terminal widget
- 从左侧销毁 session:会弹确认,并终止 shell + 清理关联 widget
- 关闭 workspace:只隐藏 workspace,不杀 session
- 删除 workspace:递归销毁该 workspace 下所有 terminal sessions
这套语义的详细定义见 docs/workspace-session-model.md。
