diff --git a/crates/jp_cli/src/lib.rs b/crates/jp_cli/src/lib.rs index d168e13..893c0cf 100644 --- a/crates/jp_cli/src/lib.rs +++ b/crates/jp_cli/src/lib.rs @@ -303,6 +303,9 @@ fn run_inner(cli: Cli) -> Result { ) .map_err(Error::Task)?; + // Remove ephemeral conversations that are no longer needed. + ctx.workspace.remove_ephemeral_conversations(); + output.map_err(Into::into) } } diff --git a/crates/jp_workspace/src/lib.rs b/crates/jp_workspace/src/lib.rs index 0cd7a00..f151fc0 100644 --- a/crates/jp_workspace/src/lib.rs +++ b/crates/jp_workspace/src/lib.rs @@ -245,7 +245,6 @@ impl Workspace { trace!("Persisting state."); - let active_id = self.active_conversation_id(); let Some(storage) = self.storage.as_mut() else { return Ok(()); }; @@ -261,7 +260,6 @@ impl Workspace { .active_conversation_id, &self.state.local.active_conversation, )?; - storage.remove_ephemeral_conversations(&[active_id]); info!(path = %self.root.display(), "Persisted state."); Ok(()) @@ -294,6 +292,19 @@ impl Workspace { Ok(()) } + pub fn remove_ephemeral_conversations(&mut self) { + if self.disable_persistence { + return; + } + + let active_id = self.active_conversation_id(); + let Some(storage) = self.storage.as_mut() else { + return; + }; + + storage.remove_ephemeral_conversations(&[active_id]); + } + /// Gets the ID of the active conversation. #[must_use] pub fn active_conversation_id(&self) -> ConversationId {