What problem does this solve?
环境:Windows 11 x64 / Percho 0.6.0。三个点都是「界面尺寸/位置该由用户决定、并且被记住」,
用了一天感受攒下来的,放一条里说。
1. 左侧栏宽度锁死 240px,不能拖
packages/desktop/src/renderer/src/styles/globals.css 里 .sidebar / .sidebar-inner 都是固定
240px,只有折叠态 width: 0;没有 resize handle。packages/desktop/src/main/ui-state.ts 里
也 grep 不到任何 width/height 字段(与侧栏相关的只有 sidebarCollapsed 这个布尔)。
结果是窗口本身能自由缩放,唯独侧栏永远是 240:会话名稍长就被省略号截断,屏幕宽的时候这块
空间又用不上。目前只能靠顶栏最左的开合按钮在 240 ↔ 0 之间切,粒度太粗。
2. 窗口尺寸和位置不会被记住
packages/desktop/src/main/window.ts:
const window = new BrowserWindow({
width: 1100, height: 750, minWidth: 640, minHeight: 480, show: false,
...
});
全是写死的常量。该文件只注册了 ready-to-show 和 close 两个监听,没有
move / resize / getBounds / setBounds;ui-state.ts 里也没有任何 bounds 字段。
所以每次启动都回到 1100×750 默认尺寸,位置也回默认——手动拉好的尺寸和摆放位置全部丢失。
3. 顶栏与置顶的位置
现在顶栏是「置顶条」——docs/INDEX.md 里写得很明确:
v8:顶栏胶囊 = 置顶会话(不看 tab 开没开),严格只含置顶,顺序就是 pinnedSessions;
未置顶会话只在左栏。
同时启动是纯空(不再恢复上次打开的会话,tabs.json 链路退役)。
两个加一起,实际体验是:会话明明还开着、甚至 agent 还在跑,但顶栏看不到它,只能去左栏滚
或者用搜索框打名字找。在 Windows 上更明显,因为点 × 会直接退出应用,重开之后什么都没恢复,
得重新找一遍刚才那条会话。
而置顶我原本期望的是放在左栏「项目列表」那个位置——所有分组之上、独立成一个区。现在的
置顶是在所属分组内部排最前:packages/desktop/src/renderer/src/lib/sidebar-groups.ts
第 148 行「组内 = 置顶会话在前,其余按最后活动倒序」,返回结构是
{ daily, projects, defaultExpandedKeys },没有跨分组的置顶区。所以置顶的用处被「它属于哪个
项目」稀释了——想快速够到的几个会话散在不同项目组里,还是得滚着找。
Proposed solution
尺寸
- 侧栏加拖拽把手,宽度可调(例如 200–480px),拖动实时生效;
- 拖完的宽度写入
ui-state.json,重启保持;
- 窗口尺寸与位置一并持久化。建议存
getBounds(),并用 screen 做一次校验
(外接显示器拔掉后不要把窗口留在可视区外,那种情况回退默认/主屏居中)。
顶栏与置顶
- 顶栏恢复显示「当前打开的会话」(置顶的可以排前、其余按最近活动排后);或者退一步,
给个设置项让用户选「顶栏显示置顶 / 显示打开的会话」;
- 左栏顶部(搜索框以下、日常与各项目之上)新增「置顶」分区,聚合所有置顶会话,
与原有「组内置顶在前」可以并存;
- (可选)启动时恢复上次的活跃会话,至少恢复 1 个。
Alternatives considered
- 侧栏宽度:现在只能靠折叠(240 ↔ 0)腾空间;
- 窗口尺寸:只能每次启动后手动再拉一次;
- 找会话:现在可以靠左栏搜索框或逐个项目展开找,但每次都要重新输入名字,而「刚才在用的
那条」本来应该一眼可见;
- 置顶:现在可以用「顶栏只显示置顶」变相达到类似效果,但顶栏是横向窄条,会话一多就挤,
也承载不了列表式的快速浏览。
我理解「侧栏恒 240」「顶栏 = 置顶条」「启动纯空」都是有意设计(#68 里「左栏 width 恒 240」
还是验收项,PR #66 里顶栏语义和启动策略也都写明了理由),所以这条是功能请求/希望提供开关,
不是报 bug。默认保持现状、只加能力也可以。
What problem does this solve?
环境:Windows 11 x64 / Percho 0.6.0。三个点都是「界面尺寸/位置该由用户决定、并且被记住」,
用了一天感受攒下来的,放一条里说。
1. 左侧栏宽度锁死 240px,不能拖
packages/desktop/src/renderer/src/styles/globals.css里.sidebar/.sidebar-inner都是固定240px,只有折叠态width: 0;没有 resize handle。packages/desktop/src/main/ui-state.ts里也 grep 不到任何 width/height 字段(与侧栏相关的只有
sidebarCollapsed这个布尔)。结果是窗口本身能自由缩放,唯独侧栏永远是 240:会话名稍长就被省略号截断,屏幕宽的时候这块
空间又用不上。目前只能靠顶栏最左的开合按钮在 240 ↔ 0 之间切,粒度太粗。
2. 窗口尺寸和位置不会被记住
packages/desktop/src/main/window.ts:全是写死的常量。该文件只注册了
ready-to-show和close两个监听,没有move/resize/getBounds/setBounds;ui-state.ts里也没有任何 bounds 字段。所以每次启动都回到 1100×750 默认尺寸,位置也回默认——手动拉好的尺寸和摆放位置全部丢失。
3. 顶栏与置顶的位置
现在顶栏是「置顶条」——
docs/INDEX.md里写得很明确:同时启动是纯空(不再恢复上次打开的会话,
tabs.json链路退役)。两个加一起,实际体验是:会话明明还开着、甚至 agent 还在跑,但顶栏看不到它,只能去左栏滚
或者用搜索框打名字找。在 Windows 上更明显,因为点 × 会直接退出应用,重开之后什么都没恢复,
得重新找一遍刚才那条会话。
而置顶我原本期望的是放在左栏「项目列表」那个位置——所有分组之上、独立成一个区。现在的
置顶是在所属分组内部排最前:
packages/desktop/src/renderer/src/lib/sidebar-groups.ts第 148 行「组内 = 置顶会话在前,其余按最后活动倒序」,返回结构是
{ daily, projects, defaultExpandedKeys },没有跨分组的置顶区。所以置顶的用处被「它属于哪个项目」稀释了——想快速够到的几个会话散在不同项目组里,还是得滚着找。
Proposed solution
尺寸
ui-state.json,重启保持;getBounds(),并用screen做一次校验(外接显示器拔掉后不要把窗口留在可视区外,那种情况回退默认/主屏居中)。
顶栏与置顶
给个设置项让用户选「顶栏显示置顶 / 显示打开的会话」;
与原有「组内置顶在前」可以并存;
Alternatives considered
那条」本来应该一眼可见;
也承载不了列表式的快速浏览。
我理解「侧栏恒 240」「顶栏 = 置顶条」「启动纯空」都是有意设计(#68 里「左栏 width 恒 240」
还是验收项,PR #66 里顶栏语义和启动策略也都写明了理由),所以这条是功能请求/希望提供开关,
不是报 bug。默认保持现状、只加能力也可以。