I just added a new quality-of-life improvement to the checklist tracking system of my Stream productivity integration to Trello that makes habit tracking a lot easier.

Details of change / feature

The new Automatic Counter Increment Feature automatically increments counters in checklist item names when items are retained after being checked off. This works with several counter patterns and locations:

Counter Patterns Supported

  • End of text: "Exercise routine (1/6)" becomes "Exercise routine (2/6)"
  • Simple counters: "Daily meditation (3)" becomes "Daily meditation (4)"
  • Before colons: "Task (1): description" becomes "Task (2): description"
  • Before colons with fractions: "Task (1/6): detailed notes" becomes "Task (2/6): detailed notes"

Time Tracking Patterns

The system now also supports comprehensive time tracking by detecting time expressions in various formats throughout the item text and automatically accumulating that time in counter patterns:

Supported Time Formats:

  • Minutes: 5 mins, 5mins, 1min, 20 minutes, 30 min
  • Hours: 1 hour, 1hour, 1hr, 2hours, 3hrs
  • Compound: 4hrs20min, 4h30, 2h20m, 1h15mins
  • Multiple instances: "Spend 1hr doing this, 20mins doing that, 30 minutes doing other"

Time Tracking Counter Patterns:

  • Simple time tracking: "Work (0 - 0 mins)""Work (1 - 25 mins)" (when time found in text)
  • Bounded time tracking: "Session (1/3 - 0 mins)""Session (2/3 - 25 mins)"
  • Time against goal: "Exercise (0 - 0/60 mins)""Exercise (1 - 25/60 mins)"
  • Bounded time against goal: "Training (1/5 - 0/120 mins)""Training (2/5 - 25/120 mins)"
  • Pure time tracking: "Reading (0 mins)""Reading (25 mins)"
  • Pure time goal: "Practice (0/60 mins)""Practice (25/60 mins)"

The system uses sequential processing to extract and sum ALL time expressions from the text, processing one pattern at a time and removing matched text to prevent double-counting: "Spent 2hrs on coding, 30mins on documentation, and 45 minutes on testing" and it will find 2hrs first (120 mins), remove it, find 30mins (30 mins), remove it, find 45 minutes (45 mins) → Total: 195 minutes automatically.

The system is also happy with counters that exceed their target: "Take vitamins (7/6)" becomes "Take vitamins (8/6)".

Personal Motivation

The immediate catalyst for this feature was a personal commitment I made to meditate for 10 minutes six times a day. I wanted a simple, automatic way to track my progress without having to manually check linked template cards or lose track of how many sessions I’d completed each day.

Creating a checklist item like "Meditation (0/6 - 0 mins): ☯sticky" now automatically progresses through "Meditation (1/6 - 10 mins)", "Meditation (2/6 - 20 mins)", etc., as I complete each session. The original items preserve exactly what I accomplished in each specific session (since each is a distinct attempt), while the new items show the next attempt number and accumulated time.

This seemed like the easiest and most elegant solution for both occurrence and time-based habit tracking, and it works seamlessly with the existing checklist system I already rely on daily. The time tracking aspect makes it incredibly useful for work timesheets too - much more intuitive than previous tracking schemes I’ve tried!

Example workflows

Simple time tracking ((x - y mins) pattern):

  1. Start with: "Work session (0 - 0 mins): project details"
  2. Complete with: "Work session (0 - 0 mins): finished module A, 45 mins"
  3. Check it off → item is retained due to ☯sticky
  4. Original item becomes: "Work session (1 - 45 mins): finished module A, 45 mins" (1 session, 45 mins total)
  5. New item shows: "Work session (1 - 45 mins): " (ready for next session, shows running totals)

Bounded time tracking ((x/y - z mins) pattern):

  1. Start with: "Training session (1/3 - 0 mins): today's workout"
  2. Complete with: "Training session (1/3 - 0 mins): cardio and weights, 60 mins"
  3. Check it off → item is retained due to ☯sticky
  4. Original item becomes: "Training session (2/3 - 60 mins): cardio and weights, 60 mins" (now session 2 of 3, 60 mins accumulated)
  5. New item shows: "Training session (2/3 - 60 mins): " (next will be session 2 of 3, 60 mins accumulated)

Pure time goal tracking ((x/y mins) pattern):

  1. Start with: "Daily reading (0/120 mins): current book"
  2. Complete with: "Daily reading (0/120 mins): chapter 3, 30 mins"
  3. Check it off → item is retained due to ☯sticky
  4. Original item becomes: "Daily reading (30/120 mins): chapter 3, 30 mins" (30 mins toward 120 min goal)
  5. New item shows: "Daily reading (30/120 mins): " (shows progress toward goal)

Context

This enhanced feature addresses multiple workflow improvements:

  • Semantic accuracy: Different counter patterns reflect their true meaning (running total vs. attempt number)
  • Time tracking integration: Automatically accumulates time spent from activity descriptions
  • Flexible tracking: Simple counters for cumulative tracking, bounded counters for goal-oriented tracking
  • Historical preservation: Bounded counters preserve what each specific attempt accomplished
  • Progressive counting: All patterns provide clear progression for continued tracking
  • Fresh input space: New items are clean and ready for new descriptions
  • Multiple colon support: Handles complex descriptions with multiple colons correctly
  • Work timesheet compatibility: Perfect for tracking billable hours or project time
  • Habit duration tracking: Track not just occurrence but time invested in habits

The implementation automatically detects both occurrence patterns and time mentions, handling each appropriately while maintaining backward compatibility with existing counter patterns.

How to use it

Simply create checklist items with counter patterns anywhere in the text and include time references in your completion notes:

  1. Create items like:
    • Tracking Checklist ☯sticky
      • "Daily reading (0 - 0 mins) ☯sticky" (cumulative time tracking)
      • "Exercise session (1/3 - 0 mins): [details]" (attempt-based with time)
      • "Practice piano (0/60 mins)" (pure time goal tracking)
  2. When completing, include time in your notes: "Practice piano (0/60 mins): scales and arpeggios, 25 mins"
  3. Check them off when completed
  4. Simple patterns: Both original and new items show incremented totals and accumulated time
  5. Bounded patterns: Original preserves attempt details, new shows next attempt with accumulated time
  6. Continue the pattern for automatic semantic tracking with full time accumulation

The feature maintains natural ways of relating stuff done, while providing comprehensive time tracking for both habits and professional work scenarios.

  • InfiniKan - The new project that will be based on this work
  • Life Stream Program - Personal website detailing the life stream program where this ‘Stream’ work originated