Files
AirCoding/packages/opencode/specs/effect/loose-ends.md
airlongdian e2fd375a1c feat: 品牌替换 + 启动优化 + AGENTS.md 模板定制
- 品牌替换:OpenCode/opencode → AirCoding/aircoding(16+ 文件)
- Logo ASCII art:修复 left/right 行数不匹配导致的启动崩溃
- 启动诊断:添加 OPENCODE_PRINT_TIMING 计时探针
- dev 模式默认 --pure 跳过外部插件加载
- AGENTS.md 模板:追加 AirCoding 多 Agent 专项段落
- architect prompt + plugin:强化 AGENTS.md 产出验证
2026-06-14 09:31:29 +08:00

1.9 KiB

Effect loose ends

Small follow-ups that do not fit neatly into the main facade, route, tool, or schema migration checklists.

Config / TUI

  • cli/cmd/tui/config/tui.ts - finish the internal Effect migration. Keep the current precedence and migration semantics intact while converting the remaining internal async helpers (loadState, mergeFile, loadFile, load) to Effect.gen(...) / Effect.fn(...).
  • cli/cmd/tui/config/tui.ts callers - once the internal service is stable, migrate plain async callers to use TuiConfig.Service directly where that actually simplifies the code. Likely first callers: cli/cmd/tui/attach.ts, cli/cmd/tui/thread.ts, cli/cmd/tui/plugin/runtime.ts.
  • env/index.ts - already uses InstanceState.make(...).

ConfigPaths

  • config/paths.ts - split pure helpers from effectful helpers. Keep fileInDirectory(...) as a plain function.
  • config/paths.ts - add a ConfigPaths.Service for the effectful operations so callers do not inherit FSUtil.Service directly. Initial service surface should cover:
    • projectFiles(...)
    • directories(...)
    • readFile(...)
    • parseText(...)
  • config/config.ts - switch internal config loading from Effect.promise(() => ConfigPaths.*(...)) to yield* paths.*(...) once the service exists.
  • cli/cmd/tui/config/tui.ts - switch TUI config loading from async ConfigPaths.* wrappers to the ConfigPaths.Service once that service exists.
  • cli/cmd/tui/config/tui-migrate.ts - decide whether to leave this as a plain async module using wrapper functions or effectify it fully after ConfigPaths.Service lands.

Notes

  • Prefer small, semantics-preserving config migrations. Config precedence, legacy key migration, and plugin origin tracking are easy to break accidentally.
  • When changing config loading internals, rerun the config and TUI suites first before broad package sweeps.