-
Notifications
You must be signed in to change notification settings - Fork 0
Releases: emaxe/eTty
eTty v0.1.8
feat: cross-platform support (Windows, Linux) - Shell path resolver: platform-aware default shell and fallback PATHs - PTY manager: skip ZDOTDIR / LC_CTYPE on Windows, use resolved shell - History manager: disable zsh history merge on non-Unix platforms - AppService / renderer: platform-specific titlebar, window controls - Editor: use native openExternal instead of shell 'open' command - IPC: add WINDOW_MINIMIZE, MAXIMIZE, CLOSE, MAXIMIZED_CHANGE channels Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Assets 5
eTty v0.1.7
Added
-
Configurable new tab placement — control where a new tab opens relative to the active one, with modifier-key support
modifierAdjacent(default) — Cmd/Ctrl+click on "+" inserts the new tab right after the active tab; plain click appends to the endmodifierEnd— plain click inserts next to the active tab; Cmd/Ctrl+click appends to the end- Configurable in Settings → Terminal → "Новая вкладка рядом"
-
Auto-open tab when terminal is busy — if a shell command is triggered from the file tree hover overlay (run script, cd) while the active terminal is occupied by an AI agent, a new tab is automatically created and the command runs there instead of being dropped
Assets 5
v0.1.5
Added
-
New AI agents: Qwen and Agento — added to the built-in supported agents list with auto-detection and default Shift+Enter mode set to Ctrl+J (instead of Kitty protocol)
-
Per-agent Shift+Enter mode — configure how Shift+Enter behaves for each AI agent individually:
- Kitty protocol (default) — sends
\x1b[13;2usequence - Newline — sends plain
\ncharacter - Ctrl+J — sends
\x0A(ASCII LF, equivalent to Ctrl+J) - Useful for agents that don't understand Kitty keyboard sequences (e.g., Qwen)
- Supports both built-in and custom agents; settings persisted to config
- Kitty protocol (default) — sends
Fixed
- Agent edit dialog label contrast — labels in the custom agent edit dialog now use
var(--text)for proper contrast on both light and dark themes. Previously labels were rendered in a low-contrast gray that was hard to read. - Agent launch buttons not working for Qwen and Agento — added
qwenandagentotoSUPPORTED_AGENTSinagent-service.js, enabling auto-detection,launchCommandresolution, and button functionality. - Custom agent keyboardModes not persisted —
config-loader.jsnow preserves unknown keys inagents.keyboardModes,agents.forceDisabled, andagents.lastDetectedobjects. Previously custom agent IDs (UUIDs) were treated as invalid fields and discarded during config merge. - Keyboard mode changes not applied without restart —
index.jsnow subscribes tosettings.changedforagents.keyboardModesand immediately updates the in-memory config.
Assets 4
v0.1.4
[0.1.4] - 2026年05月13日
Added
-
Terminal scroll-to-bottom button — floating button that appears when the user scrolls up into the terminal history; click to jump back to the latest output
- Listens to xterm.js
onScrolland mousewheelevents to detect when the viewport leaves the bottom of the buffer - Circular accent-colored button with shadow, positioned at the bottom-right of the terminal area
- Auto-hides when the buffer is scrolled back to the bottom or when a new tab is switched
- Listens to xterm.js
-
Bulk file operations in file tree — copy, paste, and delete multiple selected items at once
Ctrl+C/Cmd+C— copy all selected paths to internal clipboardCtrl+V/Cmd+V— paste copied items into the current or selected directoryDelete/Backspace— delete all selected items with a confirmation dialog- Context menus updated for multi-select: "Delete" operates on selection, "Rename" hidden when multiple items selected, "Paste" enabled when clipboard is non-empty
- New IPC channels:
fs:copy-many,fs:delete-many; renderer_clipboardchanged from single object to array of paths
Assets 4
v0.1.3
[0.1.3]
Security
- Fixed symlink attack vulnerability in
FileManager.validatePath()—path.resolve()was replaced withfs.realpath()to properly resolve symbolic links before checking path boundaries. This prevents attackers from bypassing path traversal protection via symlinks pointing outside the CWD.
Added
-
Git diff highlighting — live visual indicators for git status in the file tree and editor gutter
- File tree: new files (green), modified (blue), deleted (red strikethrough); folders show colored dot markers for nested changes
- Editor gutter: 3px color bars next to line numbers for added (green) and modified (blue) lines
- Auto-refreshes every 5 seconds and on file save (
Cmd+S); only active inside git repositories - Powered by new
GitStatusService(renderer) with 5-second polling via existinggit:get-statusIPC channel
-
Project search dialog — full-text and filename search inside the current working directory
- Open with
Cmd+F/Ctrl+For double-tapShift - Searches file names and file contents simultaneously; name matches shown first
- Options: case sensitive, whole word, regex; include/exclude glob patterns
- Live preview with highlighted matches; double-click or
Enteropens file in editor - Cancellable backend search via
AbortControllerinFileManager.searchFiles()
- Open with
-
Roboto font — applied globally across the application for consistent typography
-
Status bar size setting — three selectable sizes (compact / standard / large) in Settings → Appearance
- Compact: 22px height, 11px font (current default)
- Standard: 28px height, 13px font
- Large: 34px height, 15px font
- Applied instantly via
data-sizeattribute on the status bar element
Fixed
- Terminal Home/End on macOS —
Cmd+ArrowLeftandCmd+ArrowRightnow send\x1b[H/\x1b[F(Home / End) escape sequences to the PTY in TUI applications (Vim, Emacs, readline, fzf, etc.). Previously xterm.js consumed these events for DOM text selection and never forwarded them to the shell. - App quit cleanup — graceful shutdown sequence for main and renderer processes
beforeQuithandler saves tab state, kills all PTY sessions, and unwatches all file system watchers before app exits- Main-process diagnostics interval now properly cleared on
window-all-closed - Temporary
zdotdirfolders created for PTY sessions cleaned up on process exit, kill, and bulkkillAll
- Renderer cleanup — global event listeners and observers properly disposed on window unload
ResizeObserverdisconnected and debounce timer cleared- Global
focusin,mousedown,blur,keydown,mousemove,mouseuplisteners removed - Terminal container
destroy()called to prevent memory leaks
- PTY init protection —
init()now wrapped in try/catch to prevent PTY spawn errors from cascading into UI failures (e.g., shell not found, permission denied). Error is logged and the terminal remains in a clean error state instead of freezing the app.
Assets 4
v0.1.1
Added
- Double-click to select active AI agent — when terminal is busy but no agent was auto-detected, double-click any agent button to manually assign it as active
- Enables quick-reply buttons for agents launched manually or via other applications
- Click-based detection (500ms threshold) for reliable cross-platform behavior
- Busy-state buttons use
status-agent-busyCSS class instead ofdisabledattribute to allow click events
- Configurable quick replies for AI agents — replace hardcoded agent command buttons with fully customizable quick replies
- Define command text, enable/disable per item, assign to specific agents (Claude, Codex, Copilot, Cursor Agent, OpenCode)
- Compact Settings UI: list view with inline agent tags, click pencil icon to open edit dialog
- Drag-and-drop reordering via grip handle with visual drop indicator (accent line)
- Default quick replies migrated from previous hardcoded values:
Ok,Продолжай,/clear,/model,/exit,/new - New items automatically inherit in config (
quickReplies.itemsarray insettings.json)
Changed
- Settings page "Быстрые ответы" (Quick Replies) category redesigned for compactness:
- Single text field drives both label and command (displayed together)
- Edit dialog replaced inline editing clutter
- Pencil SVG icon replaces text "Редактировать" button
- Agent command buttons in status bar now generated dynamically from config instead of hardcoded HTML
Notes
- No breaking changes: existing
settings.jsonwithoutquickRepliessection auto-populated with defaults on next load - No migration required: previous hardcoded values become the new defaults
Assets 4
init
init release;
Full Changelog: https://github.com/emaxe/eTty/commits/init