lore-cli 0.1.11

Capture AI coding sessions and link them to git commits
Documentation
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.1.11] - 2026-01-24

### Added

- **Lore Cloud** - Sync sessions across machines with end-to-end encryption
  - `lore login` - Browser-based OAuth authentication
  - `lore logout` - Clear stored credentials and encryption key
  - `lore cloud status` - View account info, sync status, and storage usage
  - `lore cloud push` - Upload sessions to cloud (encrypted)
  - `lore cloud pull` - Download sessions from cloud (decrypted)
  - `lore cloud sync` - Bidirectional sync (pull then push)
- **Client-side encryption** - Your session content is encrypted before upload
  - Passphrase-based key derivation using Argon2id
  - AES-256-GCM encryption for session data
  - Cloud service cannot read your session content
  - Encryption salt synced to cloud for multi-machine support
- **Credential storage options** - Choose how credentials are stored
  - File storage (default) - Simple, works everywhere
  - OS Keychain - macOS Keychain, Windows Credential Manager, Linux Secret Service
- **Daemon automatic cloud sync** - Sessions sync every 4 hours automatically
  - No manual `lore cloud push` needed once configured
  - Sync schedule persists across daemon restarts
  - View next sync time with `lore cloud status`
- **Login encryption setup** - Prompted to set up passphrase after `lore login`
  - Enables immediate auto-sync without separate push command

### Fixed

- Continued sessions (e.g., `claude --continue`) now re-sync with new messages
- Gemini session deduplication - Multiple files with same session ID no longer cause repeated syncs
- Cloud salt error handling - Network errors no longer accidentally create new encryption salt

## [0.1.10] - 2026-01-13

### Added

- `lore doctor` command for diagnosing installation and configuration issues
  - Checks config, database, daemon, watchers, and MCP server
  - Supports text and JSON output formats
  - Exit codes: 0 (OK), 1 (warnings), 2 (errors)
- `lore link --auto` re-enabled with preview-first UX
  - Shows proposed links and requires `--yes` to apply
  - Uses heuristics: time proximity, file overlap, branch matching
- `lore link --auto --backfill` for bulk retroactive linking
  - Scans all ended sessions and links commits from their time windows
  - One-time migration tool for existing session history

### Fixed

- Path matching in `find_active_sessions_for_directory` now avoids prefix collisions
  - `/project` no longer incorrectly matches `/project-old`
- macOS launchd now treats "service already loaded" as success
  - Prevents duplicate daemon spawns when service is already running

## [0.1.9] - 2026-01-12

### Fixed

- `lore daemon start` now uses systemctl/launchctl when a service file exists, matching `lore daemon stop` behavior
  - Previously, `daemon start` would spawn a standalone process even if a systemd/launchd service was installed
  - This caused confusion where the daemon ran outside of service manager control

## [0.1.8] - 2026-01-12

### Added

- Forward auto-linking: daemon automatically links sessions to commits when sessions end
  - No git hooks or per-repo setup required
  - Finds commits across all branches made during session time window
- `lore link --current` flag to manually link active sessions to HEAD
- `get_commits_in_time_range()` for multi-branch commit discovery

### Fixed

- Daemon now re-imports updated sessions and triggers auto-linking on updates
- Fixed incorrect watcher dispatch that caused Claude JSONL files to be parsed as aider sessions
  - Now uses path-based dispatch to match files to their owning watcher
- Fixed daemon logging - logs are now written to `~/.lore/daemon.log`
  - Previously, console logging initialization prevented file logging from initializing

## [0.1.7] - 2026-01-10

### Added

- Daemon version check in `lore status` warns when CLI and daemon versions differ after upgrades
- Homebrew formula now uses prebuilt binaries for instant installation (no cargo build)
- Fallback to native launchd service when Homebrew is unavailable on macOS

### Changed

- Homebrew caveats now clearly warn that `lore init` must be run before the service will work
- Release workflow automatically generates Homebrew formula with correct binary URLs and SHAs

## [0.1.6] - 2026-01-09

### Fixed

- Systemd service file now uses dynamic binary path detection via `current_exe()` instead of hardcoded `~/.cargo/bin/lore`, fixing service startup failures when installed via package managers (AUR, etc.)

## [0.1.5] - 2026-01-08

### Added

- Aider project scanning during `lore init` - detects `.aider.chat.history.md` files and offers to add their directories to watched paths

### Fixed

- Linux systemd service command now uses correct binary path
- Daemon status display on Linux now correctly detects running state
- Aider watcher no longer watches entire home directory when history files are in `~`
- Init UX improved: comma-separated directory input with interactive validation
- Systemd service setup now stops existing daemon first to prevent conflicts
- Reduced log spam for transient database errors during init (logged at DEBUG instead of WARN)

## [0.1.4] - 2026-01-06

### Added

- `lore blame <file:line>` command to trace code back to AI sessions
  - Uses git blame to find the commit that introduced a line
  - Shows linked sessions and relevant message excerpts
  - Supports text (colored), JSON, and Markdown output formats
- `lore export <session-id>` command to export sessions for sharing/archiving
  - Supports Markdown (default) and JSON output formats
  - Includes session metadata, messages, linked commits, tags, and summary
  - `--redact` flag for automatic sensitive content redaction
  - Built-in patterns for API keys, tokens, AWS credentials, emails, IPs, private keys
  - `--redact-pattern <regex>` for custom redaction patterns
  - `-o/--output <file>` to write directly to file

### Fixed

- Session prefix resolution now searches all sessions efficiently (not limited to recent 100-1000)
- Post-commit hook script updated with placeholder documentation

## [0.1.3] - 2026-01-05

### Added

- MCP (Model Context Protocol) server for AI tool integration
- `lore mcp serve` command to start the MCP server on stdio
- Five MCP tools exposed to AI assistants:
  - `lore_search` - search session messages with filters
  - `lore_get_session` - get full session details by ID
  - `lore_list_sessions` - list recent sessions
  - `lore_get_context` - get recent session context for a repository
  - `lore_get_linked_sessions` - get sessions linked to a commit
- Claude Code MCP configuration documentation in README

## [0.1.2] - 2026-01-04

### Added

- `lore current` command to show active session in current directory
- `lore context` command for quick orientation on recent sessions
- `lore context --last` for detailed summary of most recent session
- `lore annotate` command to add notes/bookmarks to sessions
- `lore tag` command to organize sessions with labels
- `lore sessions --tag <label>` to filter sessions by tag
- `lore summarize` command to add/view session summaries
- Machine identity system with UUID for future cloud sync deduplication
- `machine_name` config option for user-friendly display names
- Machine name prompt during `lore init`

### Changed

- `lore config` now displays machine identity (UUID and name)

### Fixed

- `lore daemon stop` now properly handles Homebrew-managed services
- Machine ID migration converts hostname-based IDs to UUIDs

## [0.1.1] - 2026-01-02

### Added

- `lore delete <session-id>` command to permanently remove sessions
- `lore db vacuum` command to reclaim unused database space
- `lore db prune --older-than <duration>` to delete old sessions (supports d/w/m/y)
- `lore db stats` command showing database statistics and tool breakdown
- `lore completions install` for automatic shell completion installation
- Shell completions offered during `lore init` wizard
- Background service installation offered during `lore init` (brew services on macOS, systemd user on Linux)
- Branch history display in `lore sessions` (e.g., `main -> feat/x -> main`)

### Changed

- Daemon now updates session branch when it changes mid-session
- Prune dry-run shows detailed session list matching `lore sessions` format
- Init wizard shows service benefits before prompting

### Fixed

- SIGPIPE panic when piping completions to `head` or other commands
- Branch column overflow with long branch names (now truncated)
- `daemon uninstall` now handles both native and Homebrew-installed services on macOS

## [0.1.0] - 2025-12-30

### Added

- Initial release
- Session capture from Claude Code, Codex CLI, Gemini CLI, Amp, Aider, Continue.dev, Cline, Roo Code, Kilo Code, and OpenCode
- SQLite storage with full-text search (FTS5)
- Manual and automatic session-to-commit linking
- Background daemon with file watching
- System service installation (launchd on macOS, systemd on Linux)
- Git hooks for automatic linking on commit
- CLI commands: status, sessions, show, import, link, unlink, search, config, hooks, daemon
- JSON and Markdown output formats
- GitHub Actions CI and release workflows

[Unreleased]: https://github.com/varalys/lore/compare/v0.1.10...HEAD
[0.1.10]: https://github.com/varalys/lore/compare/v0.1.9...v0.1.10
[0.1.9]: https://github.com/varalys/lore/compare/v0.1.8...v0.1.9
[0.1.8]: https://github.com/varalys/lore/compare/v0.1.7...v0.1.8
[0.1.7]: https://github.com/varalys/lore/compare/v0.1.6...v0.1.7
[0.1.6]: https://github.com/varalys/lore/compare/v0.1.5...v0.1.6
[0.1.5]: https://github.com/varalys/lore/compare/v0.1.4...v0.1.5
[0.1.4]: https://github.com/varalys/lore/compare/v0.1.3...v0.1.4
[0.1.3]: https://github.com/varalys/lore/compare/v0.1.2...v0.1.3
[0.1.2]: https://github.com/varalys/lore/compare/v0.1.1...v0.1.2
[0.1.1]: https://github.com/varalys/lore/compare/v0.1.0...v0.1.1
[0.1.0]: https://github.com/varalys/lore/releases/tag/v0.1.0