7bfb462ffa
T26: the arrow over the terminal; the settings window drops General, its Shell and Start in leading Terminal, which lists every shortcut from the keymap with a search, and its categories and page are two columns that scroll apart
ZacharyZhang-NY2026-10-15 20:08:10 -04:00
90a46257a3
T26: on Windows Ctrl-V pastes too, as in Windows Terminal, where shells take it so; on Linux it stays the program's
ZacharyZhang-NY2026-10-15 19:24:02 -04:00
c316d271a2
T26: on Windows and Linux, which have no menu bar, a gear just inside the right toggle opens Settings; it sends OpenSettings through Window::dispatch_action, since App::dispatch_action inside the window's own click handler fails with only gpui's log line
ZacharyZhang-NY2026-10-15 19:04:41 -04:00
0f87676ae2
T26: the Git and Files switch is centered in the right column; acceptance records the Windows hit-test probe of T26's build against v0.1.0
ZacharyZhang-NY2026-10-15 18:45:35 -04:00
6f7d3a9aeb
T26: on Windows every title bar control takes its press: Ely cdc5ce8 occludes the drag region under its window buttons, title bar slots and column header items, where gpui answered the hit test as the caption; the Git and Files switch moves below the title bar, clear of the caption buttons; version 0.1.1
ZacharyZhang-NY2026-10-15 18:14:25 -04:00
59e41ea9bb
T25: v0.1.0 published on Gitea at 0075667 with the disk image, the Windows zip and the Linux tarball, each built from that commit by its script and downloaded back to match its SHA-256; acceptance records it and CI run 934
ZacharyZhang-NY2026-10-15 17:02:23 -04:00
0075667ab1
T25: release builds: scripts/windows-zip.ps1 zips elyterminal.exe, the icon inside as resource 1 (build.rs, embed-resource), a GUI program carrying its C runtime, git started without a console; scripts/linux-tar.sh builds on Debian 12, glibc 2.35 for this build, with a desktop entry and the icon; every window names itself com.zacharyzhang.elyterminal; rust-toolchain.toml pins 1.95.0, and CI installs it without rustup default
v0.1.0
ZacharyZhang-NY2026-10-15 16:50:22 -04:00
2b8ae5d026
T25: CI's cache step runs only in the Linux container: on the owner's own macOS and Windows runners its post step cleaned their real ~/.cargo, deleting rustup after every job and leaving its proxies pointing at nothing
ZacharyZhang-NY2026-10-15 15:55:52 -04:00
65bb4d3456
T24: the icon SVGs name their parts as groups, not comments, and draw the same pixels; mac-app.sh cuts the version at cargo pkgid's last # or @, as a clone in a folder named elyterminal prints no @, and stops when none is left; AGENTS.md says the macOS icon holds a copy of the figure
ZacharyZhang-NY2026-10-15 15:15:15 -04:00
67fe91249a
T24: the icon, Ely holding a terminal, drawn in SVG: on macOS's rounded square, and alone and flat for Windows and Linux; scripts/mac-app.sh builds ELYTerminal.app, signed ad hoc, and its disk image, its icon rendered by examples/icons.rs through resvg
ZacharyZhang-NY2026-10-15 15:10:17 -04:00
82bdbaf635
T23: the acceptance table cites run 919 on 09930c2, green on macOS, Ubuntu and Windows
ZacharyZhang-NY2026-10-15 15:00:48 -04:00
09930c2934
T23: the owner's checks on macOS: on macOS 27 gpui's Selection material drew no blur, so blur/macos gives the window's effect view underWindowBackground, radius 30; a button at each end of the title bar hides and shows its column, kept in the settings; shot reads an effect view's blur radius; new comments cut to ten words
ZacharyZhang-NY2026-10-15 14:42:28 -04:00
be8d0e20c5
T23: the shell tests type a line only once the line editor reads raw keys: on CI's pwsh 7.6.6 the probe, typed right after the first folder report, came before PSReadLine's first read and was echoed, never run; shot warns when the app it runs under lacks Screen Recording, which left this Mac's pictures with the window's ground alone; AGENTS.md records the CI runners, the build without debuginfo and the typing rule
ZacharyZhang-NY2026-10-15 13:50:09 -04:00
de48f491bc
T23: the Linux and Windows CI jobs build without debuginfo: linking gpui's test binaries with it ran the Linux runner's 8 GB VM out of memory, and scripts/linux.sh builds so already
ZacharyZhang-NY2026-10-15 13:21:11 -04:00
4b8445c434
T23: README; tasks/acceptance.md holds PRD.md line by line with its evidence; the Ubuntu job installs the libraries gpui links; testlog builds only beside the Unix tests that use it, so clippy passes for Windows; the CI probe steps go
ZacharyZhang-NY2026-10-15 13:15:15 -04:00
e8ea95f491
T23: CI prints each runner's PATH and where rustup, rustc, fish and pwsh live, to find why Windows loses rustc and the Mac mini finds no fish or pwsh; a probe, gone with the fix
ZacharyZhang-NY2026-10-15 10:26:06 -04:00
37220a72d4
T22: Edit's Copy, Paste and Select All are Ely's text input actions, which Ely a2cb531 exports and the terminal handles too, so the menu reaches find and every field; Select All counts a space under a combining mark as a character; comments cut to one short line; the Ely pin moves to a2cb531; AGENTS.md says gpui draws a shot window only while macOS shows it
ZacharyZhang-NY2026-10-15 10:15:53 -04:00
5ee67bd406
T22: the macOS menu bar holds the PRD's menus, each item showing its key; Quit, Select All, Bigger, Smaller, Reset Size and Minimize take Ghostty's keys, Ctrl-Shift off macOS where Ctrl with a letter types a control byte; the font's size moves for every session, unsaved; Select All runs from the first character in the history to the last, as Ghostty's; shot lists the menus and says whether the app was active at each key
ZacharyZhang-NY2026-10-15 01:51:46 -04:00
b5e4967071
T21: on X11 the window names its pane in _KDE_NET_WM_BLUR_BEHIND_REGION and drops it when Blurred goes; Ely's new ResizeBorder::glass leaves a client-drawn window's pane to the content, without ground or shadow, so a Linux window shows the desktop at all; T20's region and this property cover the pane alone, worked out each frame and sent only on a change; the Ely pin moves to 5dc4dd1; the X11 test runs its own Xvfb
ZacharyZhang-NY2026-10-15 01:09:47 -04:00
107069b3c8
T20: on Wayland the window asks for ext_background_effect_v1 on its surface, through a guest connection on gpui's display; one region wider than any window, which the compositor clips, comes and goes with Blurred; the log names the way blur goes; a wayland-server compositor tests it, and scripts/linux.sh runs the tests on Linux in a container
ZacharyZhang-NY2026-10-15 00:42:30 -04:00
6523632ade
pty: when its pty closes, a program that ignores SIGHUP reads EIO on Linux and EOF on macOS; the test reads the shell's own exit, which holds on both
ZacharyZhang-NY2026-10-15 00:42:30 -04:00
c98bbad6e0
T19: the main window lets the desktop through while Background opacity is under 1, blurred or clear as Background blur says, set at open and as the settings change; Ely's new ColumnShell::glass grounds every column and the title bar in the palette's glass, which the opacity sets, and the Ely pin moves to it past 27 of Ely's own commits; dialogs stay solid; the terminal paints no second ground; shot names the window's AppKit views
ZacharyZhang-NY2026-10-14 23:27:19 -04:00
764ff45a4b
T18: Terminal: scrollback lines, Option as Alt on macOS, copy on select, each applied at once to every session; the settings pages share one switch and one segmented choice
ZacharyZhang-NY2026-10-14 22:50:19 -04:00
ee37018577
T17: a font saves, and a settings file starts, only when gpui loads it as the terminal draws it, so the terminal never falls back without a word; numbers save on Enter, on leaving the field and on each step; after a refused change a number field drops its draft and the font picker shows the saved family again
ZacharyZhang-NY2026-10-14 22:37:18 -04:00
f2cc16fd94
T17: Appearance: every theme as a card over a small window in its colors, a separate dark theme with its own grid, font family, size, line height and ligatures, cursor style and blink over a live prompt, opacity by whole percents, blur, padding; a theme change re-dresses the chrome at once; a change the store refuses says why at the top of the page
ZacharyZhang-NY2026-10-14 22:14:47 -04:00
9e69288956
T16: on Windows a shell named without an extension means its .exe, and one with an extension keeps it; the resolver hands the session its program as UTF-8 text, so a program whose path is not UTF-8 never saves
ZacharyZhang-NY2026-10-14 21:53:24 -04:00
3c51b01955
T16: a shell saves only when the running user may run it, as access answers, ACLs too, found at a full path or in one of PATH's full folders, never a relative one; a session runs that same full path, so the check and the start agree
ZacharyZhang-NY2026-10-14 21:29:54 -04:00
3e1535e921
T16: the settings window: Cmd-, opens it or brings it forward and Cmd-W closes it, Ctrl-, and Ctrl-Shift-W off macOS; General's rows in Ely's settings layout, Shell in Ely's path input and Start in as Home or the session's folder, each change checked, saved and applied to new sessions at once; a shell saves only when it names a program, else the row says why; the app quits with its last terminal window; shot aims at either window with to:settings and to:main
ZacharyZhang-NY2026-10-14 21:18:25 -04:00
7c5f36f0e7
PRD: discard joins the Git panel, since Ely's changes list draws it on every unstaged and untracked row; it asks first
ZacharyZhang-NY2026-10-14 21:08:10 -04:00
fcd0792712
T15: a commit empties the fields that still hold what it committed only once the shown folder has read and is in the same repository, so a draft typed while a nested repository reads stays
ZacharyZhang-NY2026-10-14 21:03:32 -04:00
27270ae565
T15: no action runs until the shown folder has read, so none reaches the repository left behind, and the view blanks on a folder outside the shown work tree; a folder change drops a diff still loading; actions run each after the one asked before it; a commit empties only the fields that still hold what it committed, so a draft typed while it ran stays
ZacharyZhang-NY2026-10-14 20:53:51 -04:00
a8a30d3062
T15: the Git panel: HEAD's branch, or its commit while detached; Ely's changes list of conflicted, staged, unstaged and untracked files, each with open, stage, unstage, and discard, which asks first; stage all and unstage all; a commit with a summary, a description and amend; the last 50 commits; a pressed file's diff in Ely's DiffViewer over the window, unified or split; outside a repository it says so, and a failed git command shows git's words; it reads again at each prompt, on a folder change and after each action, and Files' marks with it; a section lists 500 files at most and the Git body is a cached view, so a long list does not slow the terminal
ZacharyZhang-NY2026-10-14 20:41:24 -04:00
911500c64e
T14: paths stay git's bytes until shown, so a name not in UTF-8 names its own file in status, stage, unstage and diff, and Files keys and opens each name by its bytes too; a copy is a new file whose source no unstage or diff touches; diffs run no text converter; an untracked diff git prints despite a warning stands, the warning logged, while a missing file still fails; a conflict diffs against HEAD, so a file we deleted reads as new; AGENTS.md says Files reads porcelain v2
ZacharyZhang-NY2026-10-14 20:03:12 -04:00
e2966686bd
T14: git through its command line: status from porcelain v2 with the branch and HEAD's commit, in conflicted, staged, unstaged and untracked sections; stage and unstage by literal paths fed on stdin, a staged rename with its old path, before the first commit too; commit from stdin; the log as Ely's commits; a diff as git writes it, read into Ely's stretches with changed words marked, none for a binary file; Files' marks read the same records; tests on temp repositories
ZacharyZhang-NY2026-10-14 19:43:28 -04:00
937dab8552
T13: a label built from a path shows control characters as their pictures, so a name with a newline no longer aborts gpui's line shaping in Files or the session row; on macOS a name meets Git's mark in composed form, as git writes it; the rev-parse prefix keeps its own newlines
ZacharyZhang-NY2026-10-14 19:25:58 -04:00
8369d96b36
T13: the right column's Git and Files switch, kept in settings; Files shows the shown session's folder as a tree, folders first, Git's marks on names from git status without optional locks, unreadable folders noted; a double press opens a folder, or a file in the system's app; it reloads when the session reports a folder, so at each prompt; a program without shell integration gets a line saying it reports no folder; header controls keep their presses from the header's double-press zoom
ZacharyZhang-NY2026-10-14 19:09:21 -04:00
dcf9f7bc27
T12: a terminal about to be hidden ends its mouse gesture as releases would: its selection drag ends and its program hears each held button come up
ZacharyZhang-NY2026-10-14 18:19:40 -04:00
5fd674e82a
T12: sessions: new (+, Cmd-T), close (row x, Cmd-W), select (press, Cmd-1 to 8, Cmd-9 last, Ctrl-Tab, Ctrl-Shift-Tab), Ghostty's keys off macOS; rows show the title and the folder with ~; an ended program closes its row, the last row the window, and the app quits; a bell marks a hidden row; new sessions follow the Shell and Start in settings
ZacharyZhang-NY2026-10-14 18:07:39 -04:00
0de9e15c84
T11: the Workspace key context sits above the focus root, so the column toggles work after a press on a blank column or a header
ZacharyZhang-NY2026-10-14 17:56:10 -04:00
34ce046597
T11: the window is Ely's ColumnShell: sessions, terminal and right columns under a transparent title bar, the terminal's header wearing the program's title; Cmd-B and Cmd-Alt-B toggle the side columns, kept in the settings; Linux asks for client decorations inside Ely's ResizeBorder
ZacharyZhang-NY2026-10-14 17:47:36 -04:00
39761d9f40
T10: a match whose line is kept, grown or cut stays current when held under the same line above or in its place, before a twin line elsewhere
ZacharyZhang-NY2026-10-14 17:43:36 -04:00
11b2ce6f34
T10: following the current match takes one pass: a forward walk maps matches to cells, line ends are found once; the same occurrence ranks by an identical line, then one grown or cut at its end, then by line and column; a cleared or trimmed history moves no line; the title replays on CursorBlinkingChange, which a reset sends in the parser's order, synchronized updates too, and the tap's reset count is gone
ZacharyZhang-NY2026-10-14 17:30:21 -04:00
1c21dfd197
T10: find reads the grid as it shows, through Ely's find_all: combining marks, hidden cells blank, wrapped rows joined, Unicode words; new output, a resize and a settings change search again, and the current match follows its line text; a full reset replays the title through set_options
ZacharyZhang-NY2026-10-14 16:57:09 -04:00
4d8788ff22
T10: focus in and out reach a program under mode 1004; the window wears the program's title; a bell is logged and silent; the scrollback setting caps history and trims it live; Cmd-F finds in the scrollback with Ely's FindWidget, matches washed, Enter older, Shift-Enter newer, new output searched again
ZacharyZhang-NY2026-10-14 16:26:20 -04:00
8bb276335e
T09: the mouse mode scanner reads controls as vte does: C0 runs and DEL is skipped mid-sequence, CAN and SUB cancel, subparameters count toward its 32 values; a byte-by-byte test against vte's parser; copy on select and OSC 52 primary writes go to Linux's selection
ZacharyZhang-NY2026-10-14 16:09:28 -04:00
d6fa38e60b
T09: the tap holds one mouse tracking and one format as xterm does, any reset ends it; every reported button keeps its release, motion reports the first held; URLs keep combining marks; selections log start, run and end; shot hands real buttons to the view and shows its window without activating
ZacharyZhang-NY2026-10-14 15:51:44 -04:00
9f81f1f704
T09: mouse: selection by cell, word and line, Shift extends; reports for X10, normal, button and any tracking in X10, UTF-8 and SGR bytes, mode 9 followed by the tap; the wheel reports, sends arrows or scrolls history; copy, bracketed paste, copy on select, OSC 52; Cmd-press opens OSC 8 targets and URLs; a release goes out only for a press the terminal saw; shot posts mouse gestures and never activates
ZacharyZhang-NY2026-10-14 15:32:17 -04:00
11d7a30598
T08: Tab and F6 pass Ely's focus keys; each kitty flag reshapes only what it names; Cmd is Super; repeats and Command key-ups come from AppKit; IME commits stay UTF-8, as in kitty and Ghostty; key.zig out; the line rule reads every text file
ZacharyZhang-NY2026-10-14 14:59:59 -04:00
25365a98c8
T08: keys: xterm and kitty encoding, Option as Alt by side, IME composition at the cursor; shot types real AppKit keys
ZacharyZhang-NY2026-10-14 14:22:52 -04:00
2804aa6117
T07: one coverage per pixel (overlaps cut, strokes as polygons, the cross cut around its first band); a drawn base keeps its geometry under marks
ZacharyZhang-NY2026-10-14 13:57:47 -04:00
387bfa1c8b
T07: box drawing, block elements and powerline shapes painted as geometry, after Ghostty's sprite rules
ZacharyZhang-NY2026-10-14 13:40:22 -04:00