Bill
be7332db17
perf: route PTY stream through a single shared IPC listener
...
Every pane registered its own global onPtyData/onPtyExit listener, so each
output chunk woke N listeners and N-1 discarded it after an id compare.
With many terminals under heavy output that fan-out is pure overhead.
Now one IPC listener dispatches through a Map keyed by sessionId: one
lookup per chunk, only the owning pane runs.
2026-09-14 16:59:57 +08:00
Bill
bbee1d642d
polish: about-page logo now uses the app icon instead of an OT text mark
2026-09-14 15:06:19 +08:00
Bill
3aa8b28f89
chore: bump version to 1.0.5
v1.0.5
2026-09-14 14:00:55 +08:00
Bill
277d8bb117
feat(commands): whole-history dedupe + switchable, capped history
...
历史命令去重从「只跟最新一条比」改为「全历史去重」:重敲任意一条已有命令
时把原条目提到最前(刷新 lastUsedAt)而不是新插一条,历史里每个命令只出现一次。
新增两个设置(设置 → 终端):
- 记录命令历史:关闭后不再记录新命令;已有历史保留,不清空
- 历史条数上限:默认 100,可配 1..500;写入按上限截断,读取也按当前
上限截断(调低立即生效)
顺修一个暴露的既有 bug:logWrite 用 async appendFile,两次快速追加会
乱序落盘(line two 先于 line one)。改为按文件串行化追加。
测试:tests/commands-store.mjs 全历史去重 / 提到最前 / 上限生效 /
开关关闭不记录 / 关闭保留已有 / 恢复记录 / 越界上限夹紧,全部通过。
2026-09-14 12:01:23 +08:00
Bill
beeb32a76b
fix(session): keep panel ids distinct from session ids so restore rebinds panes
...
面板 id 曾直接复用 pty 会话 id(`addPanel({ id: sessionId })`),而
`updateParameters` 只能换会话、不能改面板 id。于是恢复时面板 id 指向一个
已不存在的会话:分屏少一个、剩下的 pane 背后没有 pty,界面看起来是空白,
也无法输入。
- 新增 `panelId()`,面板 id 与会话 id 彻底分离,并用于所有建面板处
(新建终端、SSH 连接、分屏复制)
- 新增 `breakIdCoincidence()`:旧快照仍带 `panelId === sessionId`,
在 `fromJSON` 之前重写 grid/panels/views/activeView 中的 id,
返回 old→new 映射
- `rebindSessionPanels` 用该映射回查快照,恢复每个 pane 自己的目录
(否则新 id 查不到记录,cwd 会静默退回 home)
验证(重启恢复 E2E,legacy 快照 + 2 分屏):
2/2 pane 挂载、2 个独立存活会话、输入可回环、
cwd 分别回到 D:/AIGC/OpenTerminal 与 C:/Windows、回写快照无 id 冲突;
restoreSession=false 时正确忽略快照只建 1 个终端。
2026-09-14 11:29:56 +08:00
Bill
8eacd34338
polish: frame the sidebar with top and bottom borders to match the right edge
2026-09-14 02:26:36 +08:00
Bill
6c100542c5
fix: batch of review findings — dead install button, history pollution, TUI completion interference, ssh split session kill, scrollback live apply, zmodem second transfer, sftp shell quoting, replay buffer leak, release guards
2026-09-14 02:20:40 +08:00
Bill
e6fc021903
fix: drop leaked NO_COLOR/FORCE_COLOR from the pty environment (Claude Code rendered uncolored)
2026-09-14 01:39:11 +08:00
Bill
c4fb6fe7e2
polish: tray balloon title no longer repeats the app name
2026-09-14 01:19:14 +08:00
Bill
f63ee379a4
fix: send the first pty size immediately, debounce only subsequent resizes
2026-09-14 01:17:04 +08:00
Bill
ce89dcb1e4
chore: ignore tmp-test scratch scripts
2026-09-14 01:12:41 +08:00
Bill
acdf955918
fix: debounce pty resize and skip no-op resizes (kills duplicated TUI frames on maximize/restore)
2026-09-14 01:12:15 +08:00
Bill
ab5f8c2f77
chore: ignore tmp-test scratch dir
2026-09-08 21:40:54 +08:00
Bill
70c33a5572
fix: register update IPC handlers (dead check/download buttons since 1.0.1); bump 1.0.4
v1.0.4
2026-09-08 21:40:25 +08:00
Bill
7f2e4c1110
feat: terminal right-click context menu (copy/paste/find/select-all/clear)
2026-09-08 20:50:59 +08:00
Bill
7d3057ee5d
fix: drop TS annotation in release.cjs
2026-09-08 17:12:52 +08:00
Bill
2b3fefafd0
feat: close-to-tray default + system settings entry; bump 1.0.3
v1.0.3
2026-09-08 17:00:09 +08:00
Bill
8f686f56ca
docs: updater proxy strategy + channel changelog in AGENTS.md
2026-09-08 09:45:29 +08:00
Bill
c3baac3f05
fix: updater proxy strategy (Gitea direct, GitHub system proxy) + changelog via channel release-notes.md
2026-09-08 09:44:34 +08:00
Bill
dc3d54fa07
chore: release script in repo + AGENTS.md dev/release docs
v1.0.2
2026-09-08 01:15:02 +08:00
Bill
8cb193fa6a
feat: theme-driven chrome, customizable tab accent, UI polish
...
- Sidebar/tab bars/dividers/settings dialog follow the terminal theme
- Tab accent color customizable in theme settings (color picker)
- Title bar shows the app icon; Material Dark is the default theme
- Slimmer rectangular tabs (28px), slate scrollbars, visible pane dividers
- Fix pure-black xterm viewport gaps after pane resize
2026-09-08 00:57:56 +08:00
Bill
0de0eee58d
chore: bump version to 1.0.1
v1.0.1
2026-09-07 17:55:41 +08:00
Bill
f25a1627f3
feat: about tab with update check/download (Gitea feed first, GitHub fallback)
...
- updater: dual-feed state machine, manual check/download/install IPC,
changelog from Gitea releases API with GitHub fallback
- settings: new About tab (version, channel, auto-check toggle, progress)
- system.autoCheckUpdate setting gates the startup check
v0.1.0
2026-09-07 17:18:15 +08:00
Bill
a9acdbe500
Initial commit: OpenTerminal v0.1.0
...
Open-source terminal app (local + SSH): split panes, themes, SFTP,
server monitoring, broadcast input, ZMODEM, system tray, single instance.
Electron + React + TypeScript. MIT License.
2026-09-07 16:15:50 +08:00