From 35b43656dd6b4ed521c4e636a13ec2eec7fdb278 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Feb 2026 04:37:33 +0000 Subject: [PATCH 1/4] Initial plan From 9c3bd6ef8ddf222cf1be77cd788eae8f3cc68c03 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Feb 2026 04:40:55 +0000 Subject: [PATCH 2/4] Fix resize divider memory leak by adding mounted signal guard Co-authored-by: Yashb404 <139128977+Yashb404@users.noreply.github.com> --- client/src/pages/view.rs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/client/src/pages/view.rs b/client/src/pages/view.rs index ec51a95..10632e7 100644 --- a/client/src/pages/view.rs +++ b/client/src/pages/view.rs @@ -279,13 +279,18 @@ pub fn ViewPage() -> impl IntoView { let md_raw = data["markdown"].as_str().unwrap_or_default().to_string(); let html_output = render_markdown(&md_raw); + let mounted = create_signal(false); + create_effect(move |_| { - if let Some(window) = web_sys::window() { - let callback = wasm_bindgen::closure::Closure::once(move || { - setup_resize_divider(); - }); - window.request_animation_frame(callback.as_ref().unchecked_ref()).ok(); - callback.forget(); + if !mounted.0.get() { + if let Some(window) = web_sys::window() { + let callback = wasm_bindgen::closure::Closure::once(move || { + setup_resize_divider(); + mounted.1.set(true); + }); + window.request_animation_frame(callback.as_ref().unchecked_ref()).ok(); + callback.forget(); + } } }); From c361986b2529112d4008b406ce39993d7ec44e1a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Feb 2026 04:41:30 +0000 Subject: [PATCH 3/4] Fix race condition by setting mounted flag before scheduling callback Co-authored-by: Yashb404 <139128977+Yashb404@users.noreply.github.com> --- client/src/pages/view.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/pages/view.rs b/client/src/pages/view.rs index 10632e7..bfca2c1 100644 --- a/client/src/pages/view.rs +++ b/client/src/pages/view.rs @@ -283,10 +283,10 @@ pub fn ViewPage() -> impl IntoView { create_effect(move |_| { if !mounted.0.get() { + mounted.1.set(true); if let Some(window) = web_sys::window() { let callback = wasm_bindgen::closure::Closure::once(move || { setup_resize_divider(); - mounted.1.set(true); }); window.request_animation_frame(callback.as_ref().unchecked_ref()).ok(); callback.forget(); From 5f08671e90efeea76bc42dba64d973fcc5ca2fee Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Feb 2026 04:42:10 +0000 Subject: [PATCH 4/4] Improve code readability by destructuring mounted signal Co-authored-by: Yashb404 <139128977+Yashb404@users.noreply.github.com> --- client/src/pages/view.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/src/pages/view.rs b/client/src/pages/view.rs index bfca2c1..1034260 100644 --- a/client/src/pages/view.rs +++ b/client/src/pages/view.rs @@ -279,11 +279,11 @@ pub fn ViewPage() -> impl IntoView { let md_raw = data["markdown"].as_str().unwrap_or_default().to_string(); let html_output = render_markdown(&md_raw); - let mounted = create_signal(false); + let (is_mounted, set_mounted) = create_signal(false); create_effect(move |_| { - if !mounted.0.get() { - mounted.1.set(true); + if !is_mounted.get() { + set_mounted.set(true); if let Some(window) = web_sys::window() { let callback = wasm_bindgen::closure::Closure::once(move || { setup_resize_divider();