[package]
name = "fresh-editor"
version = "0.1.7"
authors = ["Noam Lewis"]
edition = "2021"
description = "A lightweight, fast terminal-based text editor with LSP support and TypeScript plugins"
license = "GPL-2.0"
repository = "https://github.com/sinelaw/fresh"
keywords = ["editor", "terminal", "tui", "text-editor", "lsp"]
categories = ["command-line-utilities", "text-editors"]

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

[lib]
name = "fresh"
path = "src/lib.rs"

[dependencies]
crossterm = { version = "0.29.0", features = ["osc52"] }
ratatui = "0.29.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
chrono = "0.4"
clap = { version = "4.5", features = ["derive"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }

tree-sitter = "0.25.10"
tree-sitter-highlight = "0.25.10"
tree-sitter-rust = "0.24.0"

lsp-types = "0.97"
url = "2.5"
tokio = { version = "1.48", features = ["rt", "rt-multi-thread", "io-util", "sync", "process", "time", "macros", "fs"] }
async-trait = "0.1"
lru = "0.16"
ignore = "0.4"
regex = "1.12"
ctrlc = "3.5"
libc = "0.2"
nix = { version = "0.30", features = ["signal", "pthread", "resource"] }
deno_core = { version = "0.272.0" , default-features = false }  # TypeScript plugin runtime (stable version)
deno_ast = { version = "0.51.0", features = ["transpiling"] }  # TypeScript transpilation
tree-sitter-python = "0.25.0"
tree-sitter-javascript = "0.25.0"
tree-sitter-typescript = "0.23.2"
tree-sitter-html = "0.23.2"
tree-sitter-css = "0.25.0"
tree-sitter-c = "0.24.1"
tree-sitter-cpp = "0.23.4"
tree-sitter-go = "0.25.0"
tree-sitter-json = "0.24.8"
tree-sitter-java = "0.23.5"
tree-sitter-c-sharp = "0.23.1"
tree-sitter-php = "0.24.2"
tree-sitter-ruby = "0.23.1"
tree-sitter-bash = "0.25.0"
tree-sitter-lua = "0.2.0"
anyhow = "1.0.100"
dirs = "6.0"  # For XDG/platform-specific directory detection
pulldown-cmark = "0.13"  # Markdown parsing for LSP hover docs
arboard = "3.6"  # Cross-platform system clipboard access
notify = "8.2.0"
# tree-sitter-markdown = "0.7.1"  # Disabled due to tree-sitter version conflict (uses 0.19.5 instead of 0.25.x)

[dev-dependencies]
proptest = "1.9"
tempfile = "3.23.0"
insta = { version = "1.44", features = ["yaml"] }
vt100 = "0.15"  # Virtual terminal emulator for testing real ANSI output

[profile.release]
debug = true

# The profile that 'dist' will build with
[profile.dist]
inherits = "release"
lto = "thin"


