[[ toastMessage ]]
[[ formattedSelectedDate ]]
[[ stats.total_days ]]
Days Tracked
[[ stats.total_frames ]]
Frames Captured
[[ stats.total_activities ]]
Activities
[[ stats.average_focus ]]%
Focus Score

Digest

Generating digest…
Summary
[[ data.icon ]]
[[ category ]] [[ data.count ]] activities · [[ formatDuration(data.duration_minutes) ]]
[[ formatTime(activity.start_time) ]] - [[ formatTime(activity.end_time) ]]
[[ formatDigestActivitySummary(activity.summary) ]]
[[ formatDuration(activity.duration_minutes) ]]
No activity details available.
📭

[[ digest?.error || 'No activities recorded yet today' ]]

Activity Timeline

[[ frameStats.total ]] frames · [[ frameStats.annotated ]] annotated · [[ frameStats.unannotated ]] pending
Loading timeline…
[[ activity.icon ]]
[[ activity.category ]]
[[ formatTime(activity.start_time) ]] · [[ formatDuration(activity.duration_minutes) ]]
Category: [[ activity.category ]] Date: [[ formatDateTime(activity.start_time) ]] Duration: [[ formatDuration(activity.duration_minutes) ]]
🔒 Screenshot skipped for privacy
Loading screenshots…
📅

No activities found for this date

Productivity Analytics

Token Usage

Category Breakdown

Hourly Activity

Search Activities

Searching…

Found [[ searchResults.length ]] result(s)

[[ result.icon ]]
[[ result.category ]] — [[ result.date ]]
[[ formatDuration(result.duration_minutes) ]]
🔍

No results for "[[ searchQuery ]]"

System Health

Started [[ formatDateTime(systemHealth.server_start_time) ]] Uptime [[ formatUptime(systemHealth.uptime_seconds) ]]
Capture [[ systemHealth.capture.succeeded ]] / [[ systemHealth.capture.attempted ]]
[[ systemHealth.capture.failed ]] failed [[ systemHealth.capture.skipped_locked ]] locked [[ systemHealth.capture.skipped_camera ]] camera No captures yet
Annotation [[ systemHealth.annotation.frames_succeeded ]] / [[ systemHealth.annotation.frames_attempted ]]
[[ systemHealth.annotation.runs ]] runs [[ systemHealth.annotation.frames_failed ]] failed No annotations yet
LLM [[ systemHealth.llm.vision_succeeded + systemHealth.llm.text_succeeded ]] / [[ systemHealth.llm.vision_calls + systemHealth.llm.text_calls ]]
V [[ systemHealth.llm.vision_succeeded ]]/[[ systemHealth.llm.vision_calls ]] T [[ systemHealth.llm.text_succeeded ]]/[[ systemHealth.llm.text_calls ]] [[ systemHealth.llm.vision_failed + systemHealth.llm.text_failed ]] failed [[ systemHealth.llm.text_empty_content ]] empty No LLM calls yet
Digest [[ systemHealth.digest.generated ]]
[[ systemHealth.digest.cached_hits ]] cached [[ systemHealth.digest.failed ]] failed No digests yet

Configuration

📸

Capture

Every [[ settings.capture.capture_interval_seconds ]]s ([[ Math.round(settings.capture.capture_interval_seconds / 60) ]] min)
0 = all monitors, 1+ = specific
🤖

Annotation

Tip: Use 1-2 for local Ollama. 8GB RAM → 1, 16GB → 2, 32GB+ → 3-4
Clean up summaries for readability (extra tokens)
Examples: 0 (unload immediately), 1m, 10m, -1 (keep loaded)
📅

Timeline

Comma-separated, case-insensitive
🔔

Notifications

📋

Digest

Every [[ Math.round(settings.digest.interval_seconds / 60) ]] min
Placeholders: {category}, {activity_descriptions}
Placeholders: {total_activities}, {focus_percentage}, {top_categories}, {sample_activities}
Used for digest text generation and post-annotation summary formatting.

Available Dates

📅 [[ dateInfo.date ]] [[ dateInfo.frame_count ]] frames