github loocor/codmate 0.4.4

latest releases: 0.5.9, 0.5.8, 0.5.7...
3 months ago
CleanShot 2025-12-21 at 23 58 56

🚀 Major New Features

Timeline UI Enhancements

  • ✨ Implemented sticky timeline markers that remain fixed at the top while scrolling, showing position number and timestamp
  • ✨ Added vertical connection lines between timeline markers with dynamic height calculation for better visual hierarchy
  • 🖼️ Created full-screen image preview overlay with zoom, pan, keyboard navigation, and multi-image support
  • 📎 Added AttachmentStripView to display clickable attachment buttons in message cards
  • 🎨 Implemented marker opacity fade effect when scrolling past the top
  • 🔄 Enhanced scroll behavior tracking to distinguish user-initiated scrolling from programmatic scrolling
  • ⚡ Improved Now Mode detection with user activity window to prevent false toggles

Image Attachment Support

  • 🖼️ Extended Claude session parsing to support image content blocks and extract data URLs
  • 📦 Added TimelineAttachmentDecoder service to decode data URLs and extract image data with MIME type detection
  • 🔓 Created TimelineAttachmentOpener service to resolve and open attachments in external applications
  • 💾 Implemented temporary file caching for data URL attachments via TimelineAttachmentResolver
  • 🎨 Support for multiple image formats (PNG, JPEG, GIF, WebP, HEIC, TIFF, BMP, SVG)
  • 📝 Extended data models (EventMessagePayload, TimelineAttachment) to support both embedded and file-based attachments

Message Deduplication & Parsing Improvements

  • 🔍 Added UUID-based deduplication to prevent processing duplicate JSONL records with identical UUIDs
  • 🔄 Improved user message deduplication using timestamp+content hash for messages without message.id
  • 🔗 Implemented mergeConsecutiveUserMessages in SessionTimelineLoader to merge user messages with identical timestamps
  • 🚫 Added filtering logic to skip auto-generated image description messages (starting with "[Image:")
  • 📊 Enhanced SessionTimelineLoader to convert images from payloads into TimelineAttachment objects

Session Management Enhancements

  • 🎯 Enhanced session project assignment with automatic matching based on directory paths after editing
  • 👁️ Added methods to manage timeline visibility kinds for sessions, allowing for overrides and clearing of visibility settings
  • 🔄 Refactored project assignment logic in ProjectsListView to utilize the new project matching method
  • 📋 Normalized conversation message types and visibility management across the application

Compatibility & Stability

  • 🍎 Backported macOS 13.5 UI compatibility with availability fallbacks for SwiftUI APIs
  • 🔧 Unified empty-state UI on older macOS versions
  • 🔄 Restored onChange(initial:) behavior for macOS 13.x
  • 🛠️ Aligned build target derivation from Xcode build settings in DMG script
  • 🔗 Fixed timeline sync loop between message and marker lists using suppression flags
  • ⏱️ Deferred marker scroll to allow layout updates for accordion effect
  • 🖱️ Improved sticky header hit testing by replacing tap gesture with Button

⚡ Performance Optimizations

  • 🚀 Optimized timeline refresh token mechanism and local activity state tracking
  • 💨 Improved scroll state management to prevent unintended Now Mode toggles during user interaction
  • 📦 Enhanced attachment resolution and caching for better performance

🐛 Bug Fixes

  • 🔄 Fixed timeline sync and interaction issues between message and marker lists
  • 🖱️ Improved sticky header interaction by replacing tap gesture with proper Button implementation
  • ⏱️ Fixed marker scroll timing to properly support accordion layout effects
  • 🍎 Resolved macOS 13.5 compatibility issues with SwiftUI API availability
  • 🔧 Fixed build target derivation in DMG packaging script

🎨 UI/UX Improvements

  • 🎯 Enhanced timeline navigation with persistent context (sticky marker) during scrolling
  • 🔗 Improved visual hierarchy with connection lines showing relationships between timeline events
  • 🖼️ Enabled rich image preview experience directly within the conversation timeline
  • 📎 Added seamless attachment browsing and preview workflow
  • 🎨 Improved scroll state management and user interaction feedback
  • 🔄 Enhanced project assignment workflow with automatic directory matching

📊 Change Statistics

  • Files Changed: 65 files
  • Code Changes: +3,782 / -1,198 lines
  • Major Commits: 8 feature and fix commits

📝 Technical Details

Data Model Extensions

  • Added images field to EventMessagePayload in SessionEvent.swift
  • Extended TimelineAttachment with id, dataURL, and url properties
  • Implemented Hashable conformance for TimelineAttachment using id as unique identifier

Service Layer Enhancements

  • Created TimelineAttachmentDecoder for data URL decoding and MIME type detection
  • Created TimelineAttachmentOpener for external application integration
  • Enhanced ClaudeSessionParser with image content block parsing
  • Improved SessionTimelineLoader with message merging and attachment conversion logic

View Layer Improvements

  • Major refactoring of ConversationTimelineView with sticky markers and connection lines
  • Enhanced SessionDetailView with timeline refresh token mechanism
  • Improved ProjectsListView with automatic project matching
  • Added AttachmentStripView for attachment display in message cards

Upgrade Recommendation: This release focuses on timeline UI enhancements and image attachment support. The sticky markers and connection lines significantly improve navigation in long conversations. Image preview functionality provides a seamless experience for reviewing visual content in Claude sessions. macOS 13.5 compatibility ensures the app runs smoothly on older systems. It is recommended to test the new timeline features with your existing sessions to familiarize yourself with the improved navigation.

Don't miss a new codmate release

NewReleases is sending notifications on new releases.