git.lucas.co / cce-list
things-to-remember checklist
git clone https://git.lucas.co/cce-list.git

commit001c1010d0b99a39c9b336a5e320585c8168bf88
parentee4023f216
authorLucas Galante <[email protected]>
date2026-09-06 13:21
Google Tasks: leave blank placeholder tasks on the server

Google's apps mint empty-title tasks freely; importing each as an
"(untitled)" row put junk in the desktop list. Skip them at fetch time -
a row with no text is nothing to remember.

Co-Authored-By: Claude Fable 5.1 <[email protected]>

 src/bin/sync.rs | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/bin/sync.rs b/src/bin/sync.rs
index 49efaab..42aa450 100644
--- a/src/bin/sync.rs
+++ b/src/bin/sync.rs
@@ -286,12 +286,17 @@ fn google_fetch(
                     continue;
                 }
                 let Some(id) = t["id"].as_str() else { continue };
-                let url = reqwest::Url::parse(&format!("{base}/{id}")).map_err(|e| e.to_string())?;
                 let summary = t["title"].as_str().unwrap_or("").trim().to_string();
+                // Google's apps mint blank placeholder tasks freely; a row
+                // with no text is nothing to remember, so leave them there.
+                if summary.is_empty() {
+                    continue;
+                }
+                let url = reqwest::Url::parse(&format!("{base}/{id}")).map_err(|e| e.to_string())?;
                 todos.insert(id.to_string(), RemoteTodo {
                     url,
                     etag: t["etag"].as_str().unwrap_or("").to_string(),
-                    summary: if summary.is_empty() { "(untitled)".to_string() } else { summary },
+                    summary,
                     done: t["status"].as_str() == Some("completed"),
                     lines: Vec::new(),
                 });