• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
lightweight

lightweight

todoSweeper

Public
Like
todoSweeper
Home
Code
13
.claude
1
backend
6
frontend
4
shared
3
.vtignore
AGENTS.md
CHANGELOG.md
CLAUDE.md
DISCLAIMER.md
LICENSE
README.md
deno.json
H
main.http.tsx
Environment variables
15
Branches
2
Pull requests
Remixes
1
History
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
CHANGELOG.md
Code
/
CHANGELOG.md
Search
2/7/2026
CHANGELOG.md

Changelog

2026-02-07

README Restructure

Rewrote README from 1686 lines to ~420 lines with clearer organization:

  • Quick Start: Required env vars and properties upfront
  • Property Mapping: New dedicated section explaining defaults and overrides
  • Owner Resolution: Consolidated priority flow with heading proximity rules
  • Other People Resolution: New dedicated section for AI-extracted names
  • Due Date Resolution: Simplified explanation
  • Relation Mapping: Clear strategy breakdown with Projects-only whitelist note
  • Configuration Reference: All env vars in organized tables
  • Advanced Topics: Technical details moved to end

Fix Owner Property Lookup

Fixed bug where owner could be added to wrong property when multiple relations target the same database. Previously used cache.relations.find(r => r.targetDatabaseId === cache.ownerTargetDbId) which could return the wrong relation if Steels DB appeared before DRI in the array. Now uses TODOS_PROPERTIES.owner directly.

2026-02-06

Heading Proximity Scoping for Owner Resolution

Headings now only apply to uninterrupted stacks of todo blocks directly beneath them. Any non-heading, non-todo block (empty line, paragraph, list item, etc.) resets the heading context to null. This prevents distant, unrelated headings from being incorrectly matched to todos.

Also added stopword filtering to heading matching to prevent common words like "the", "in", "see", "what", "database" from matching against contact names.

Tightened owner name matching to only allow exact matches or prefix matches (entry starts with search word). Removed reverse prefix matching that allowed "brad" to match any contact with a short word like "b" or "br".

AI-Extracted Names for Other People (Relation Type Only)

AI now extracts names of people mentioned in todo text (not @mentions) and adds them to the Other People relation when configured as a relation type. For example, "Taylor to call Jamie R about the project" will add Jamie Rodriguez to Other People if they exist in the Contacts database.

Matching rules:

  • Exact name match first (case-insensitive)
  • Falls back to prefix matching: "Jamie R" matches "Jamie Rodriguez" (all words must be prefixes)
  • Skipped if ambiguous (multiple matches)
  • Skipped if already in Owner or @mentions
  • Task targets ARE included (e.g., "call Jamie" will match Jamie)

2025-02-05

Skip Updates When User Edited Todo Page

When a user (not the integration bot) last edited a todo page in the Todos database, sync now skips updating that page to preserve the user's changes. Logs show "Skipping update for block X: page was edited by user (not bot)".

Whitelist Contextual Matching for Projects Only

Contextual matching (Strategy 2a/2b/2c) now only applies to the Projects relation. All other relations (Owner, otherPeople, etc.) require explicit @mentions. This prevents source page relations like DRI or Additional Members from polluting the Contacts field.

Opt-In Relation Loading

Only relations with explicit TODOS_PROP_xxx mappings are loaded from Notion. Unmapped relations are discovered but not loaded, reducing API calls and preventing false positive matches.

Exclude Owner from Contextual Matching

Owner relation is excluded from contextual matching strategies. Owner resolution uses its dedicated flow: heading match, @mention, or AI extraction.

Simplify Owner Resolution

Removed "contact" as an owner source. Owner now comes from:

  1. Heading match (with AI disambiguation if multiple)
  2. @mention (exact match priority)
  3. AI extraction (validated against owner DB)

Remove Fuzzy Matching

Fuzzy matching code was already removed in a prior session. Relation matching now uses only @mentions (Strategy 1a/1b) and contextual matching (Strategy 2a/2b/2c, Projects only).

FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
© 2026 Val Town, Inc.