diff --git a/crates/tty7-core/src/client/pane.rs b/crates/tty7-core/src/client/pane.rs
index 01208be6..52322eee 100644
--- a/crates/tty7-core/src/client/pane.rs
+++ b/crates/tty7-core/src/client/pane.rs
@@ -412,6 +412,11 @@ impl PaneOutput {
self.reader.set_read_timeout(wait)
}
+ /// How much of a message has been read without the rest of it yet.
+ pub fn partial(&self) -> usize {
+ self.buffered.len()
+ }
+
fn refusal_check(&mut self, request: &str, pane_id: u64) -> io::Result<()> {
let mut scratch = [0u8; 4096];
loop {
diff --git a/crates/tty7-gateway/src/daemon.rs b/crates/tty7-gateway/src/daemon.rs
index 5beb5d2f..36572d96 100644
--- a/crates/tty7-gateway/src/daemon.rs
+++ b/crates/tty7-gateway/src/daemon.rs
@@ -400,6 +400,10 @@ impl PaneFeed for Observed {
self.leases.take()
}
+ fn partial(&self) -> usize {
+ self.output.partial()
+ }
+
fn recv(&mut self, wait: Duration) -> io::Result