commits
- Use mode: 'tool' to force proper structured output via tool calling
- Simplify prompts to focus on capabilities, not code artifacts
- Add scope (frontend/backend) to summaries
- Aggressively consolidate related changes into single features
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Classify files as frontend/backend based on path patterns.
Include simplified scope (frontend, backend, or both) in transcript
for LLM to use when framing summaries.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Process sessions in batches of 5 concurrently instead of sequentially.
Results are collected first, then displayed grouped by project.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Claude's path encoding is lossy (/ becomes -), so we can't tell if
"taper-calculator-apps-web" means a project with dashes or nested
directories.
New approach:
- Try interpretations from right to left (literal dashes first)
- Probe filesystem to find which path actually exists
- Use git root as canonical project name for monorepo subdirs
This correctly handles both:
- drink-reminder-native → keeps dashes (project name has dashes)
- taper-calculator/apps/web → merges to taper-calculator (monorepo)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Explicitly tell the LLM to never mention reading/exploring as
accomplishments. Focus on what was BUILT, FIXED, or CHANGED.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Skip exploration-only sessions (Read/Grep/Glob) since reading code
is not an accomplishment. Only sessions with Write/Edit/NotebookEdit/
MultiEdit are included in the worklog.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Limit project summaries to 5-10 words
- Preserve exact project names (don't rename ~ to "misc research")
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use uuid instead of message.id for deduplication (streaming chunks share message.id)
- Store rawInput on ToolUse for file path extraction
- Lead transcript with FILES CREATED/EDITED summary
- This ensures implementation work is captured, not just exploration
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Reduce padding and margins in DayView, Layout, ProjectCard, SessionItem
- Add react-grab script to index.html for dev HMR
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Parse structured JSON from generateObject output
- Display as list with bold project names
- Fallback to plain text for legacy summaries
- Copy button exports readable text format
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Group days by month with headers
- Group within months by week with divider labels
- Show relative dates (Today, Yesterday, This Week, Last Week)
- Highlight today's entry with blue icon
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace generateText + JSON parsing with generateObject
- Add Zod schemas for session and daily summaries
- Daily summaries now return structured JSON for rendering
- More reliable than regex parsing of LLM text output
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Pre-filter sessions by file modification time for faster processing
- Smart empty session detection: keep if Edit/Write used (quick fixes)
- Post-LLM filtering for "no work" summaries
- Require 3+ tool calls OR 5+ messages for non-edit sessions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add -d/--date flag for single day filtering (supports 'today', 'yesterday')
- Add -w/--week flag for week filtering (supports 'thisweek', 'lastweek')
- Add 'regenerate' command to regenerate daily summaries
- Use --force with regenerate to redo all summaries
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Components:
- Layout: Header with stats and refresh button
- DayList: Calendar view of days with sessions
- DayView: Day detail with projects and sessions
- BragSummary: Shareable daily summary with copy button
- ProjectCard: Expandable project with sessions
- SessionItem: Session details with accomplishments
Light mode design with Tailwind CSS.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Bun.serve() for static files and API
- API endpoints: /api/days, /api/days/:date, /api/stats, /api/refresh
- SPA fallback for React router
- Refresh endpoint triggers background processing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Commands:
- process: Process new/unprocessed sessions
- status: Show processing stats
- serve: Start web UI server
Features:
- Progress output with session summaries
- Daily brag summary generation
- Force reprocess option
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Generate session summaries via Claude Haiku
- Generate daily brag summaries for social sharing
- Uses WORKLOG_API_KEY and WORKLOG_BASE_URL for config
- Handles gzip responses with Accept-Encoding header
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Scan ~/.claude/projects for session files
- Smart path decoding for src/a/ and src/tries/ projects
- Track processed files via hash to detect changes
- Support for CLAUDE_CONFIG_DIR environment variable
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Stream-based JSONL parsing for memory efficiency
- Extract messages, tool uses, and token stats
- Create condensed transcripts for LLM summarization
- Deduplication via message ID hashing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Schema for session_summaries, daily_summaries, processed_files
- Query functions for days list, day detail, stats
- File processing tracking with hash-based change detection
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Shared types for:
- Raw JSONL session entries from Claude Code
- Parsed sessions and messages
- LLM-generated summaries
- Database models
- API response types
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- package.json with dependencies (React, Tailwind, Vite, Vercel AI SDK)
- TypeScript config
- Vite config for React frontend
- Tailwind + PostCSS config
- Environment example file
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use mode: 'tool' to force proper structured output via tool calling
- Simplify prompts to focus on capabilities, not code artifacts
- Add scope (frontend/backend) to summaries
- Aggressively consolidate related changes into single features
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Claude's path encoding is lossy (/ becomes -), so we can't tell if
"taper-calculator-apps-web" means a project with dashes or nested
directories.
New approach:
- Try interpretations from right to left (literal dashes first)
- Probe filesystem to find which path actually exists
- Use git root as canonical project name for monorepo subdirs
This correctly handles both:
- drink-reminder-native → keeps dashes (project name has dashes)
- taper-calculator/apps/web → merges to taper-calculator (monorepo)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use uuid instead of message.id for deduplication (streaming chunks share message.id)
- Store rawInput on ToolUse for file path extraction
- Lead transcript with FILES CREATED/EDITED summary
- This ensures implementation work is captured, not just exploration
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Group days by month with headers
- Group within months by week with divider labels
- Show relative dates (Today, Yesterday, This Week, Last Week)
- Highlight today's entry with blue icon
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace generateText + JSON parsing with generateObject
- Add Zod schemas for session and daily summaries
- Daily summaries now return structured JSON for rendering
- More reliable than regex parsing of LLM text output
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Pre-filter sessions by file modification time for faster processing
- Smart empty session detection: keep if Edit/Write used (quick fixes)
- Post-LLM filtering for "no work" summaries
- Require 3+ tool calls OR 5+ messages for non-edit sessions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add -d/--date flag for single day filtering (supports 'today', 'yesterday')
- Add -w/--week flag for week filtering (supports 'thisweek', 'lastweek')
- Add 'regenerate' command to regenerate daily summaries
- Use --force with regenerate to redo all summaries
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Components:
- Layout: Header with stats and refresh button
- DayList: Calendar view of days with sessions
- DayView: Day detail with projects and sessions
- BragSummary: Shareable daily summary with copy button
- ProjectCard: Expandable project with sessions
- SessionItem: Session details with accomplishments
Light mode design with Tailwind CSS.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Bun.serve() for static files and API
- API endpoints: /api/days, /api/days/:date, /api/stats, /api/refresh
- SPA fallback for React router
- Refresh endpoint triggers background processing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Commands:
- process: Process new/unprocessed sessions
- status: Show processing stats
- serve: Start web UI server
Features:
- Progress output with session summaries
- Daily brag summary generation
- Force reprocess option
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Generate session summaries via Claude Haiku
- Generate daily brag summaries for social sharing
- Uses WORKLOG_API_KEY and WORKLOG_BASE_URL for config
- Handles gzip responses with Accept-Encoding header
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Scan ~/.claude/projects for session files
- Smart path decoding for src/a/ and src/tries/ projects
- Track processed files via hash to detect changes
- Support for CLAUDE_CONFIG_DIR environment variable
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Stream-based JSONL parsing for memory efficiency
- Extract messages, tool uses, and token stats
- Create condensed transcripts for LLM summarization
- Deduplication via message ID hashing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>