diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-08 00:44:49 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-07-08 00:44:49 +0300 |
| commit | d6285aaa59e0f7908c2ece81314aff2b98847e31 (patch) | |
| tree | ec1306441ebb87592ff120e2bd34c55028f1fd33 /src/server/headless.rs | |
| parent | 35e9838a44470c418ae51204bab54115d15d87bd (diff) | |
fix: avoid render-time plain url scans
Diffstat (limited to 'src/server/headless.rs')
| -rw-r--r-- | src/server/headless.rs | 28 |
1 files changed, 6 insertions, 22 deletions
diff --git a/src/server/headless.rs b/src/server/headless.rs index 57561947..e6d2b833 100644 --- a/src/server/headless.rs +++ b/src/server/headless.rs @@ -163,13 +163,6 @@ fn dirty_patch_intersects_hyperlinks( false } -fn dirty_patch_contains_plain_url_candidate(patch: &crate::pane::TerminalDirtyPatch) -> bool { - patch.rows.iter().any(|(_, row_cells)| { - let row: String = row_cells.iter().map(|cell| cell.symbol.as_str()).collect(); - !crate::app::actions::visible_url_spans(&row).is_empty() - }) -} - // --------------------------------------------------------------------------- // Constants // --------------------------------------------------------------------------- @@ -3203,9 +3196,6 @@ impl HeadlessServer { if dirty_patch_intersects_hyperlinks(&frame, info.inner_rect, &patch) { retained_fallback!("hyperlink_intersection"); } - if dirty_patch_contains_plain_url_candidate(&patch) { - retained_fallback!("plain_url_candidate"); - } if !apply_terminal_dirty_patch(&mut frame, info.inner_rect, patch) { retained_fallback!("patch_apply_failed"); } @@ -3382,7 +3372,6 @@ impl HeadlessServer { let hyperlinks = crate::server::render_stream::visible_hyperlinks( &self.app.state, &self.app.terminal_runtimes, - Some(&buffer), ); crate::render_prof::duration_since( "full_render.visible_hyperlinks", @@ -7524,7 +7513,7 @@ next_tab = "" } #[tokio::test] - async fn retained_pty_update_declines_when_dirty_row_creates_plain_url() { + async fn retained_pty_update_allows_dirty_row_that_creates_plain_url() { let (mut server, client_rx, pane_id) = retained_test_server(b"plain"); server.render_and_stream(); let _ = client_rx @@ -7538,20 +7527,15 @@ next_tab = "" .expect("runtime"); runtime.test_process_pty_bytes(b"\rhttps://example.com/new"); - assert!(!server.render_retained_pty_update_and_stream()); - assert!(client_rx.recv_timeout(Duration::from_millis(50)).is_err()); - - server.render_and_stream(); - let full = read_server_frame( + assert!(server.render_retained_pty_update_and_stream()); + let patched = read_server_frame( client_rx .recv_timeout(Duration::from_millis(100)) - .expect("full frame after plain URL"), + .expect("retained frame after plain URL"), ); assert!( - full.hyperlinks - .iter() - .any(|uri| uri == "https://example.com/new"), - "full render should synthesize plain URL hyperlink metadata" + patched.hyperlinks.is_empty(), + "retained render should not synthesize plain URL hyperlink metadata" ); } |
