[workspace] members = ["crates/sivtr-core", "."] resolver = "2" [workspace.package] version = "0.4.1" edition = "2021" license = "Apache-2.0" rust-version = "1.95" repository = "https://github.com/Ariestar/sivtr" [package] name = "sivtr" version.workspace = true edition.workspace = true license.workspace = true rust-version.workspace = true repository.workspace = true description = "Terminal output workspace for the AI era - capture, browse, search, select, and reuse terminal output and AI coding sessions" keywords = ["terminal", "cli", "tui", "agents", "ai"] categories = ["command-line-utilities", "development-tools"] exclude = [ "/docs-site/public/demo/**", "/docs-site/dist/**", "/docs-site/node_modules/**", "/editors/vscode/node_modules/**", "/editors/vscode/out/**", "/editors/vscode/*.vsix", "/docs/**", ] default-run = "sivtr" [lib] name = "sivtr" path = "src/lib.rs" [[bin]] name = "sivtr" path = "src/main.rs" [[bench]] name = "browse_hot" harness = false required-features = ["perf-benches"] [[bench]] name = "browse_dhat" harness = false required-features = ["perf-benches", "dhat-heap"] # cargo-binstall — lets `cargo binstall sivtr` download a prebuilt binary from # GitHub Releases instead of compiling from source. Asset names mirror the build # matrix in .github/workflows/release.yml (sivtr--.); each # archive holds a top-level sivtr--/ directory containing the binary. # # Linux: both gnu and musl host triples resolve to the static musl build so # `cargo binstall sivtr` works on older distros that lack the GLIBC version # used by ubuntu-latest (see linux-x64-musl). The glibc-linked linux-x64 asset # remains published for users who explicitly want it. [package.metadata.binstall] pkg-fmt = "tgz" [package.metadata.binstall.overrides.x86_64-pc-windows-msvc] pkg-url = "{ repo }/releases/download/v{ version }/sivtr-v{ version }-windows-x64.zip" bin-dir = "sivtr-v{ version }-windows-x64/{ bin }{ binary-ext }" pkg-fmt = "zip" [package.metadata.binstall.overrides.x86_64-unknown-linux-gnu] pkg-url = "{ repo }/releases/download/v{ version }/sivtr-v{ version }-linux-x64-musl.tar.gz" bin-dir = "sivtr-v{ version }-linux-x64-musl/{ bin }{ binary-ext }" [package.metadata.binstall.overrides.x86_64-unknown-linux-musl] pkg-url = "{ repo }/releases/download/v{ version }/sivtr-v{ version }-linux-x64-musl.tar.gz" bin-dir = "sivtr-v{ version }-linux-x64-musl/{ bin }{ binary-ext }" [package.metadata.binstall.overrides.aarch64-apple-darwin] pkg-url = "{ repo }/releases/download/v{ version }/sivtr-v{ version }-macos.tar.gz" bin-dir = "sivtr-v{ version }-macos/{ bin }{ binary-ext }" [dependencies] sivtr-core = { version = "0.4.0", path = "crates/sivtr-core" } chrono = { version = "0.4", features = ["clock"] } clap = { version = "4", features = ["derive"] } ratatui = "0.30" crossterm = "0.29" dark-light = "3.0.0" tokio = { version = "1", features = ["full"] } getrandom = "0.4" fs2 = "0.4" rusqlite = { version = "0.40", features = ["bundled"] } sha2 = "0.11" iroh = "1.0" base64 = "0.23" anyhow = "1" arboard = "3" dirs = "6" regex = "1" similar = "3" serde = { version = "1", features = ["derive"] } serde_json = "1" serde_yaml = "0.9" dialoguer = { version = "0.12", default-features = false } pulldown-cmark = { version = "0.13", default-features = false } unicode-width = "0.2" rmcp = { version = "3.1", default-features = false, features = ["server", "macros", "transport-io"] } schemars = "1" tempfile = "3" ureq = { version = "3.3.0", default-features = false, features = ["rustls"] } zip = { version = "8.6.0", default-features = false, features = ["deflate"] } flate2 = "1.1.9" tar = { version = "0.4.46", default-features = false } notify = "8.2" [target.'cfg(unix)'.dependencies] libc = "0.2" [target.'cfg(windows)'.dependencies] winapi = { version = "0.3", features = ["consoleapi", "fileapi", "handleapi", "namedpipeapi", "processenv", "processthreadsapi", "synchapi", "winbase", "wincon", "winerror", "winnt", "winuser", "windef", "minwindef"] } [dev-dependencies] criterion = { version = "0.8", features = ["html_reports"] } dhat = "0.3" [features] # Benches only: `cargo bench -p sivtr --features perf-benches` perf-benches = [] # Heap profiling: `cargo bench -p sivtr --bench browse_dhat --features "perf-benches,dhat-heap"` dhat-heap = [] # Release binary optimization. This is a TUI-heavy CLI where binary size and # startup latency are user-visible: cross-crate LTO inlines across the heavy # dependency chain (iroh/tokio/rusqlite), a single codegen unit maximizes that, # and stripping debug symbols halves the shipped artifact. `panic` stays # `unwind` — anyhow backtraces rely on it. [profile.release] lto = "thin" codegen-units = 1 strip = "symbols"