wip: 主题系统与设置面板改动 checkpoint

This commit is contained in:
Rick Ye
2026-09-07 01:21:21 +08:00
parent f8c785afbc
commit 100de55714
12 changed files with 162 additions and 21 deletions
+12 -4
View File
@@ -89,7 +89,8 @@ export class AgentService {
: undefined,
// 历史版本存过 autoEdit/plan,统一收敛回 confirm
permissionMode:
raw.permissionMode === 'full' ? 'full' : 'confirm'
raw.permissionMode === 'full' ? 'full' : 'confirm',
themeColor: typeof raw.themeColor === 'string' ? raw.themeColor : undefined
}
} catch {
this.settings = { systemPrompt: '', permissionMode: this.permissionMode }
@@ -649,13 +650,14 @@ export class AgentService {
async listSessions(): Promise<SessionMeta[]> {
const infos = await SessionManager.list(this.cwd)
// 空会话(一条消息都没发过)不上列表:第一句发出之后才在侧栏可见
const metas = infos
.filter((info) => info.messageCount > 0)
.sort((a, b) => b.modified.getTime() - a.modified.getTime())
.map((info) => toSessionMeta(info))
// 新会话在首条消息写入前没有 .jsonl 文件,SessionManager.list 扫不到;
// 把当前活跃会话兜底合并进列表,避免侧栏“新建后不出现”
// 未落盘的活跃会话兜底合并进列表(同样要求已有消息)
const session = this.runtime?.session
if (session && !metas.some((m) => samePath(m.path, session.sessionFile ?? ''))) {
if (session && session.messages.length > 0 && !metas.some((m) => samePath(m.path, session.sessionFile ?? ''))) {
const now = new Date().toISOString()
metas.unshift({
id: session.sessionId,
@@ -876,6 +878,12 @@ export class AgentService {
}
}
/** 主题色偏好(纯外观,仅持久化;渲染层负责应用) */
setThemeColor(id: string): void {
this.settings = { ...this.settings, themeColor: id }
this.saveSettings()
}
private async rebuildRuntime(): Promise<void> {
const old = this.runtime
this.runtime = null