-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathCargo.toml
More file actions
78 lines (75 loc) · 2.83 KB
/
Copy pathCargo.toml
File metadata and controls
78 lines (75 loc) · 2.83 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
# 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, planning notes) 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",
"docs/code-review-2026-05-08.md",
"docs/repo-picker-plan.md",
"docs/status-short-plan.md",
"docs/web-viewer-plan.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"
toml = "0.9"
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"] }
# 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"
# `flock` for the daemon's single-instance lock — the one POSIX call std does
# not expose. Already in the tree through several dependencies, so this only
# names it directly; the daemonize crates were not adopted (see
# docs/session-daemon-plan.md).
libc = "0.2"
[dev-dependencies]
tempfile = "3"