diff --git a/routes/document_routes.py b/routes/document_routes.py index 0b56781c4..d7c5d13a9 100644 --- a/routes/document_routes.py +++ b/routes/document_routes.py @@ -799,7 +799,13 @@ def setup_document_routes(session_manager, upload_handler=None) -> APIRouter: from src.document_actions import _JUNK_TITLES to_delete = [] + now = datetime.now(timezone.utc).replace(tzinfo=None) + for doc in docs: + # Skip freshly created documents to avoid deleting them while the user is actively editing + if doc.created_at and (now - doc.created_at).total_seconds() < 900: # 15 minutes + continue + content = (doc.current_content or "").strip() title_raw = (doc.title or "").strip() title = title_raw.lower() @@ -837,10 +843,6 @@ def setup_document_routes(session_manager, upload_handler=None) -> APIRouter: to_delete.append(doc); deleted += 1; continue if title in _JUNK_TITLES: to_delete.append(doc); deleted += 1; continue - if real_len < 30: - to_delete.append(doc); deleted += 1; continue - if "\n" not in content and real_len < 50: - to_delete.append(doc); deleted += 1; continue # Fix empty or placeholder titles on survivors if not title_raw or title_raw == "Untitled": diff --git a/src/document_actions.py b/src/document_actions.py index 4fb7af29e..b22091794 100644 --- a/src/document_actions.py +++ b/src/document_actions.py @@ -78,7 +78,14 @@ async def run_document_tidy(owner: str) -> str: kept = 0 survivors = [] # docs that pass the junk rules, considered for dedup + now = datetime.utcnow() + for doc in docs: + # Skip freshly created documents to avoid deleting them while the user is actively editing + if doc.created_at and (now - doc.created_at).total_seconds() < 900: # 15 minutes + survivors.append(doc) + continue + content = (doc.current_content or "").strip() title = (doc.title or "").strip().lower()