textlog 0.1.9

macOS clipboard + OCR daemon exposed to Claude Code as an MCP server
[package]
name = "textlog"
version = "0.1.9"
edition = "2021"
rust-version = "1.80"
description = "macOS clipboard + OCR daemon exposed to Claude Code as an MCP server"
authors = ["xicao"]
license = "MIT"
readme = "README.md"
repository = "https://github.com/xicv/textlog"
homepage = "https://github.com/xicv/textlog"
documentation = "https://github.com/xicv/textlog#readme"
keywords = ["mcp", "claude", "clipboard", "ocr", "macos"]
categories = ["command-line-utilities", "os::macos-apis"]

[[bin]]
name = "tl"
path = "src/main.rs"

[features]
default = ["mcp", "service"]
mcp = []
service = []

[dependencies]
# CLI
clap = { version = "4.6", features = ["derive", "env"] }
clap_complete = "4.6"

# Async runtime
tokio = { version = "1.51", features = ["full"] }

# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
toml = "1.1"

# Date/Time
chrono = { version = "0.4", features = ["serde"] }

# Error handling
anyhow = "1"
thiserror = "2"

# Internal logging (not clipboard log)
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }

# Standard paths
dirs = "6"

# Regex — privacy filters + self-log-path detection
regex = "1"

# SQLite ring buffer + FTS5
rusqlite = { version = "0.39", features = ["bundled", "chrono"] }

# Content hashing for dedup
sha2 = "0.11"

# macOS FFI
objc2 = "0.6"
objc2-foundation = { version = "0.3", features = [
    "NSData",
    "NSArray",
    "NSDictionary",
    "NSString",
    "NSError",
    "NSObject",
] }
objc2-app-kit = { version = "0.3", features = ["NSPasteboard"] }
objc2-vision = { version = "0.3", features = [
    "VNRecognizeTextRequest",
    "VNRequest",
    "VNRequestHandler",
    "VNObservation",
] }

# macOS notifications
notify-rust = "4"

# Tiny POSIX bindings — only used for getuid() in the LaunchAgent wiring
libc = "0.2"

# MCP server SDK (stdio JSON-RPC 2.0)
rmcp = { version = "1.4", features = ["server", "macros", "transport-io"] }
schemars = "1.0"

[dev-dependencies]
tokio-test = "0.4"
tempfile = "3"

# cargo-release: `cargo release patch` bumps Cargo.toml, rewrites
# CHANGELOG.md (Unreleased → dated [x.y.z] section + new compare/tag
# links), commits, tags, pushes, and publishes. Install once with
# `cargo install cargo-release`. Dry-run with `cargo release patch`
# (no `--execute`) before running for real with `--execute`.
[package.metadata.release]
tag-name = "v{{version}}"
pre-release-replacements = [
    { file = "CHANGELOG.md", search = "## \\[Unreleased\\]", replace = "## [Unreleased]\n\n## [{{version}}] - {{date}}", exactly = 1 },
    { file = "CHANGELOG.md", search = "\\[Unreleased\\]: https://github.com/xicv/textlog/compare/v[0-9.]+\\.\\.\\.HEAD", replace = "[Unreleased]: https://github.com/xicv/textlog/compare/v{{version}}...HEAD\n[{{version}}]: https://github.com/xicv/textlog/releases/tag/v{{version}}", exactly = 1 },
]