9.6 KiB
9.6 KiB
Acceptance
PRD.md line by line, as of T23. Status: Pass when a test, a run or a review shows it; Partial when part of it was shown; Open when nothing has shown it yet. Reviews are in tasks/reviews.md; tests are named by module (cargo test -- MODULE).
What no check reached: no build has run on Windows; no real KWin or Wayland desktop drew the blur. On 2026-10-15 macOS gave shot blank pictures for old and new builds alike, so that day's macOS checks read the app's log.
1. Product
| PRD line | Task | Evidence | Status |
|---|---|---|---|
| One window: sessions left, terminal middle, Git or Files right | T11 | T11 review; a real X11 window shows the terminal and the right column | Pass |
| Every setting has a control in the settings window | T16–T18 | 17 of the 20 fields have a row; show_sessions, show_panel and panel are the main window's toggles and switch, which §6 keeps in the file |
Pass |
| Silent: no sound, bell, notification, update check, telemetry, tip or onboarding | T10, T12 | a bell is logged and marks a hidden row; the code holds no network call or notification | Pass |
| Clean: no subtitle, tagline, logging option, status bar or badge without state | T11–T18 | reviews of the layout and settings tasks | Pass |
| Built-in themes, each with a preview, Catppuccin among them; a theme colors terminal and chrome | T03, T17 | themes::tests; T17 review |
Pass |
| The background blurs on macOS, Windows, Wayland and X11 | T19–T21 | see §11 | Partial |
2. Foundation
| PRD line | Task | Evidence | Status |
|---|---|---|---|
One binary crate elyterminal, edition 2024, Rust 1.95 |
T01 | Cargo.toml |
Pass |
Ely by pinned rev; gpui and gpui_platform from gpui-pre at Ely's version |
T01 | Cargo.toml: Ely a2cb531, gpui-pre =0.3.8 |
Pass |
alacritty_terminal 0.26 |
T04 | =0.26.0 |
Pass |
Logs through log to stderr, RUST_LOG sets the level, no log setting |
T01 | src/main.rs; no such field in Settings |
Pass |
| CI on Gitea Actions: macOS builds, tests and lints; Ubuntu and Windows build and test | T01, T23 | .github/workflows/ci.yml; see §13 |
Open |
| Private repo; no credential in any file or commit | T01 | each review scans the tree and every reachable object: 0 hits (T22: 398 objects) | Pass |
3. Settings model and storage
| PRD line | Task | Evidence | Status |
|---|---|---|---|
One settings.json in dirs::config_dir()/ELYTerminal |
T02 | settings::store tests |
Pass |
| Every field has a default; a missing file or field means its default | T02 | settings::tests, settings::store tests |
Pass |
| A bad file or value stops the start, naming file and field; never overwritten | T02 | a_bad_file_is_an_error_naming_it, a_bad_value_is_an_error_naming_the_field |
Pass |
| Temp file in the same folder, then rename; one writer | T02 | T02 rounds 1–2 | Pass |
4. Themes
| PRD line | Task | Evidence | Status |
|---|---|---|---|
| The 14 built-in themes | T03 | assets/themes, byte for byte with upstream 21f281d; Ely's two |
Pass |
| Background, foreground, cursor, cursor text, selection, 16 ANSI from upstream | T03 | themes::tests |
Pass |
A theme maps onto Ely's Palette through Theme::set_palette |
T03, T19 | the_chrome_wears_the_theme |
Pass |
| One theme, or a second for dark mode | T17 | T17 review | Pass |
5. Terminal engine
| PRD line | Task | Evidence | Status |
|---|---|---|---|
| PTY through alacritty's event loop; OSC 7 scanned on the reader | T04 | term::pty, term::tap tests; round 3 failed at the cap, its fix stands on a red-green test |
Pass |
| Shell integration for zsh, bash, fish, PowerShell; a shell without it reports nothing and the panels say so | T05 | term::shell tests on macOS and Linux |
Pass |
| Colors, styles, five underlines, wide characters, combining marks | T06 | term::frame, term::ink, term::paint tests |
Pass |
| Box drawing, blocks and powerline shapes as geometry | T07 | term::boxes tests |
Pass |
| JetBrains Mono, any installed font, Nerd Font icons | T06, T17 | tests/fonts.rs |
Pass |
| Cursor shapes, blink by setting and DECSCUSR, hollow unfocused | T06 | T06 review | Pass |
| xterm keys, cursor mode, Option as Alt, kitty protocol, keypad | T08 | term::keys tests |
Pass |
| IME: marked text at the cursor, commits to the program | T08 | T08 review | Pass |
| Selection by character, word, line; Shift extends; mouse reporting; wheel | T09 | term::mouse, term::tap tests |
Pass |
| Copy, paste, bracketed paste, copy on select, OSC 52 | T09 | T09 review | Pass |
| OSC 8 and plain links on Cmd-press, Ctrl-press off macOS | T09 | term::links tests |
Pass |
| Focus reporting, title, scrollback limit, find | T10 | term::find tests; round 3 failed at the cap, its fix stands on a red-green test |
Pass |
| A bell makes no sound; the row marks it | T10, T12 | T12 review | Pass |
6. Main window and layout
| PRD line | Task | Evidence | Status |
|---|---|---|---|
ColumnShell with three columns; blur when the setting is on |
T11, T19 | shot names a BlurredView under the window |
Pass |
| Columns toggle and keep their state | T11 | Cmd-B, the app active, saved show_sessions false; Ctrl-Shift-B hid the sessions on a real X11 window |
Pass |
| The title shows the session's title, nothing else | T11 | log: "the title is", per session shown | Pass |
| The title bar is transparent | T11, T19 | T19 review | Pass |
7. Sessions panel
| PRD line | Task | Evidence | Status |
|---|---|---|---|
Rows: title, then the folder, home as ~ |
T12 | sessions::tests |
Pass |
| New (+, Cmd-T), close (×, Cmd-W), select (press, Cmd-1…9, Ctrl-Tab) | T12 | 2026-10-15: + opened session 2, a press showed session 1 again | Pass |
| A program's end closes its row; the last row closes the window | T12 | T12 review | Pass |
| A bell in a hidden session marks its row | T12 | T12 review | Pass |
8. Right panel: Files
| PRD line | Task | Evidence | Status |
|---|---|---|---|
| Git and Files switch | T13 | T13 review | Pass |
| The session's folder as a tree, folders first, Git colors | T13 | files::tests |
Pass |
| Double press opens a folder, or a file in the default app | T13 | T13 review, with a logging open stub |
Pass |
| Reloads on a new folder and at each prompt | T13 | log: "the tree shows", per folder reported | Pass |
9. Right panel: Git
| PRD line | Task | Evidence | Status |
|---|---|---|---|
Through the git command line |
T14 | git::tests on temp repos |
Pass |
| Branch, staged and unstaged, commit field and Commit, recent commits | T15 | git::panel tests; T15 review |
Pass |
Stage and unstage; a press opens the diff in DiffViewer |
T15 | T15 review | Pass |
| Discard asks first | T15 | T15 review, in temp repos | Pass |
| Outside a repository it says so; a failed command shows its error | T15 | "Not a Git repository." on a real X11 window | Pass |
| Reloads at each prompt and on a folder change | T15 | log: "git panel: shows", per folder | Pass |
10. Settings window
| PRD line | Task | Evidence | Status |
|---|---|---|---|
| Cmd-, opens it; categories left, rows right; changes apply at once and save | T16 | T16 review | Pass |
| General: Shell, Start in | T16 | settings::tests |
Pass |
| Appearance: theme grids, dark theme, font, size, line height, ligatures, cursor and preview, opacity, blur, padding | T17 | T17 review | Pass |
| Terminal: scrollback, Option as Alt (macOS), copy on select | T18 | T18 review | Pass |
11. Background blur
| PRD line | Task | Evidence | Status |
|---|---|---|---|
macOS: Blurred (NSVisualEffectView) |
T19 | BlurredView comes and goes with the settings |
Pass |
Windows: Blurred (acrylic) |
T19 | the same gpui call; no Windows build has run | Open |
Wayland: ext_background_effect_v1 beside gpui's org_kde_kwin_blur |
T20 | blur::wayland tests on a wayland-server compositor; no real compositor |
Partial |
X11: _KDE_NET_WM_BLUR_BEHIND_REGION, removed when blur turns off |
T21 | blur::x11 test on Xvfb; the property on a real xfwm4 window; KWin not run |
Partial |
| Neither protocol: transparency without blur; the log names the path | T20, T21 | the log lines in src/blur |
Pass |
12. Menus and shortcuts
| PRD line | Task | Evidence | Status |
|---|---|---|---|
| The macOS menu bar | T22 | shot lists every item with its key |
Pass |
| The same shortcuts off macOS, Ctrl-Shift where they collide | T22 | xdotool on a real X11 window: select all, size, toggle, find, quit | Pass |
13. Acceptance
| PRD line | Evidence | Status |
|---|---|---|
| Each task ticked with a passing review | T01–T22 ticked; T04 and T10 reached the three-round cap without a passing round; T23 open | Partial |
scripts/check.sh passes |
macOS: 135 tests, clippy, fmt, 500 lines; Linux in Colima: 138 tests, clippy | Pass |
| CI green on macOS, Ubuntu and Windows | see the CI notes below | Open |
CI notes
As probed on 2026-10-15, each job fails on its runner, not on the code:
- macOS, on the Mac mini runner: Homebrew is on the PATH, but fish and PowerShell are not installed, so
fish_loads_its_script_and_restores_its_data_dirsandpowershell_reports_its_folder_byte_for_byte_and_keeps_the_statusfail, as they should without their shells. - Windows, on its runner:
C:\Users\zhang\.cargo\binholdsrustup.exealone, without thecargo.exeandrustc.exeproxies, so the toolchain step stops atrustc: command not found.cargo clippy --target x86_64-pc-windows-msvc --all-targets -D warningspasses on macOS, with a stand-in for the MSVC assembler andllvm-rc; no Windows test has run. - Ubuntu: no runner carries the
ubuntu-24.04label, so the job never starts. The tests pass in a Linux container (scripts/linux.sh test --locked).