-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathCargo.toml
More file actions
88 lines (84 loc) · 3.56 KB
/
Copy pathCargo.toml
File metadata and controls
88 lines (84 loc) · 3.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# The root package is also the workspace root: `plugins/*` are separate builds
# that speak the plugin protocol over a pipe, never link against nightcrow, and
# are excluded from the published crate.
[workspace]
members = [".", "plugins/nightcrow-recovery"]
[package]
name = "nightcrow"
version = "0.1.0"
edition = "2024"
description = "Agent-adjacent terminal workbench — git diff viewer + multi-terminal panes for running CLIs next to your code"
license = "Apache-2.0"
repository = "https://github.com/code0xff/nightcrow"
homepage = "https://github.com/code0xff/nightcrow"
readme = "README.md"
keywords = ["tui", "git", "terminal", "agentic", "cli"]
categories = ["command-line-utilities", "development-tools"]
# The published crate needs the viewer's *built* bundle (rust-embed reads
# viewer-ui/dist at compile time) but not its sources or toolchain files —
# those live in git. Keeps the crate small without breaking `cargo install`.
# Repo-only tooling (agent rules, CI, hooks) is dropped too.
exclude = [
"viewer-ui/node_modules",
"viewer-ui/src",
"viewer-ui/index.html",
"viewer-ui/package.json",
"viewer-ui/package-lock.json",
"viewer-ui/tsconfig.json",
"viewer-ui/vite.config.ts",
"plugins",
".claude",
".github",
".githooks",
"release.toml",
"CLAUDE.md",
]
[dependencies]
ratatui = { version = "0.30", features = ["crossterm"] }
crossterm = "0.29"
git2 = { version = "0.21", features = ["vendored-openssl", "vendored-libgit2"] }
syntect = "5.3"
anyhow = "1"
portable-pty = "0.9"
clap = { version = "4", features = ["derive"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tempfile = "3"
toml = "1"
toml_edit = "0.25"
dirs = "6"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
tracing-appender = "0.2"
two-face = "0.5.1"
notify = "8.2.0"
notify-debouncer-mini = "0.7.0"
alacritty_terminal = { version = "0.26", default-features = false }
# Web mirror server: synchronous WebSocket (no async runtime), Argon2 login
# hashing (matches code-server), and an OS RNG for password/session tokens.
tungstenite = "0.30"
argon2 = "0.5"
getrandom = "0.4"
rust-embed = { version = "8.12.0", features = ["interpolate-folder-path", "mime-guess"] }
# `localtime_r` for the wall clock and `access(X_OK)` for plugin executability
# — the two POSIX calls std does not expose. The single-instance lock used to
# be here too; it moved to std's `File::try_lock` (see src/daemon/lock.rs).
libc = "0.2"
[target.'cfg(unix)'.dependencies]
# Stop signals for the headless server: SIGTERM is what a service manager sends,
# and `ctrlc` handles only SIGINT. signal-hook is the widely-adopted crate for
# the rest and needs no async runtime.
signal-hook = "0.4"
[target.'cfg(windows)'.dependencies]
# Windows 는 AF_UNIX SOCK_STREAM 을 지원하지만 std 가 노출하지 않는다.
# API 표면이 std::os::unix::net 과 동일해 daemon 전송 계층을 타입 교체만으로
# 이식할 수 있다. 대안 비교는 docs/decisions.md 참조.
uds_windows = "1"
# Console control events (Ctrl-C / Ctrl-Break) in place of SIGINT. signal-hook
# builds on Windows but its `iterator` module is Unix-only.
ctrlc = "3"
# `GetLocalTime` for the wall clock. Already in the lockfile transitively;
# adding it directly here so the feature gate is explicit.
# `SetConsoleCtrlHandler` for `Win32_System_Console`: clearing the inherited
# ignore-Ctrl-C flag so panes get an interrupt, not just the 0x03 byte.
windows-sys = { version = "0.61", features = ["Win32_System_Time", "Win32_Storage_FileSystem", "Win32_Foundation", "Win32_System_Console"] }