feat(tui): run the highlighted search again with S
The search list survives a restart, but a restored query was only ever a reminder: seeing what the network has now meant typing it out again. In the Searches pane, `S` now re-runs the highlighted query in its place — no duplicate row, no reordering — cancelling a run still collecting first and starting the Results display over for what comes back. The key is listed in the shortcut bar, the `?` overlay, the README and the website. `start_search` is split into launching a search and showing it, so both paths share one implementation. A new `tui_e2e` suite drives the real window over a real session against soulfind: keys in, a screen out, a sharing peer on the other end. It restores a query from a previous run's state directory, presses `S`, and checks the peer's file lands on screen — then again once the query has been on the wire, proving a repeat is answered and the display does not stack. To make that possible `MainTui` is exported with `handle_key_event`, `render`, `poll_session` and a `state()` accessor, and CI runs the suite with `SOULSEEK_E2E_REQUIRED=1`. Closes #85
This commit is contained in:
@@ -107,7 +107,8 @@ zooms the focused pane to the whole window, `w` hides it so the others widen
|
||||
takes `↑`/`↓`, `Home`/`End`, `PgUp`/`PgDn` and the vim keys, and `h`/`l` or
|
||||
`←`/`→` scroll a long file name, folder or query sideways, `0` and `$` to
|
||||
either end. `PgUp`/`PgDn` scroll a chat log back through its history, and `?`
|
||||
shows every key for where you are.
|
||||
shows every key for where you are. `s` starts a search, and `S` runs the
|
||||
highlighted one again.
|
||||
|
||||
### Daemon mode
|
||||
|
||||
@@ -620,11 +621,12 @@ cargo fmt
|
||||
|
||||
### End-to-end tests
|
||||
|
||||
Two suites run against [soulfind](https://github.com/soulfind-dev/soulfind), a
|
||||
local Soulseek server: `soulseek-rs-lib/tests/e2e.rs` covers the protocol
|
||||
library, and `soulseek-rs/tests/cli_e2e.rs` drives the binary the way a script
|
||||
would. Both are **server-optional**, running when a server is available and
|
||||
skipping otherwise, so `cargo test` stays green everywhere.
|
||||
Three suites run against [soulfind](https://github.com/soulfind-dev/soulfind),
|
||||
a local Soulseek server: `soulseek-rs-lib/tests/e2e.rs` covers the protocol
|
||||
library, `soulseek-rs/tests/cli_e2e.rs` drives the binary the way a script
|
||||
would, and `soulseek-rs/tests/tui_e2e.rs` drives the window with key presses
|
||||
and reads the screen back. All are **server-optional**, running when a server
|
||||
is available and skipping otherwise, so `cargo test` stays green everywhere.
|
||||
|
||||
They locate a server in this order:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user