-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCargo.toml
More file actions
145 lines (133 loc) · 5.78 KB
/
Copy pathCargo.toml
File metadata and controls
145 lines (133 loc) · 5.78 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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
[workspace]
members = ["core", "terminal"]
exclude = ["vendor/gpui-terminal"]
# Workspace dependencies — versions are pinned once here so the three
# crates can never drift. Each member declares `dep.workspace = true`
# and can add its own `features = [...]` on top of the base set.
[workspace.dependencies]
anyhow = "1"
gpui = "0.2.2"
parking_lot = "0.12"
uuid = { version = "1", features = ["v4"] }
windows = "0.61"
[package]
name = "codescope"
version = "0.5.1"
edition = "2024"
publish = false
description = "CodeScope: gpui shell that orchestrates parallel AI coding agent CLI sessions with Git worktree isolation."
repository = "https://github.com/maui1911/CodeScope"
# `license-file` points at the repo-root `LICENSE` (Functional Source
# License v1.1, ALv2 future). There is no SPDX identifier for FSL so
# we link the file directly — cargo-dist + the MSI builder both pick
# this up. Caught by Copilot on PR #162.
license-file = "LICENSE"
authors = ["maui1911"]
build = "build.rs"
# cargo-dist needs an opt-in when the package is `publish = false` —
# otherwise `dist generate` reports "no distable binaries". See
# dist-workspace.toml for the pipeline scope notes.
[package.metadata.dist]
dist = true
[[bin]]
name = "codescope"
path = "src/main.rs"
[[example]]
name = "ptytest"
path = "examples/ptytest.rs"
[dependencies]
gpui.workspace = true
codescope-terminal = { path = "terminal" }
codescope-core = { path = "core" }
anyhow.workspace = true
parking_lot.workspace = true
uuid.workspace = true
raw-window-handle = "0.6"
# `futures-channel::oneshot` for the themed ConfirmDialog's Future<bool>
# API. gpui already pulls this in transitively for `window.prompt`'s
# return type; we depend on it explicitly so the confirm dialog reads
# from the same well-known crate without going through gpui internals.
futures-channel = "0.3"
# Cross-platform OS notification for the agent "turn complete" toast.
# Mirrors C# `WindowsIdleToastNotifier` / `IIdleToastNotifier`; the
# Rust port uses notify-rust so the same code path lights up
# WinRT toast on Windows, FreeDesktop dbus on Linux, and
# NSUserNotification on macOS. Click activation isn't supported on
# Windows by this crate — the in-app bell handles tab routing already,
# so the OS toast is intentionally show-only for v1.
notify-rust = "4"
# Wrap `open::that` to launch URLs / files in the default handler.
# Used by src/update.rs's `open_releases_page` (macOS fallback and
# "view release notes" action) and any future shell-out to the
# browser.
open = "5"
# `semver::Version` is used directly in `src/update.rs`'s
# `fake_release_info` to construct a synthetic Version for the dev
# override toast. codescope-core uses its own copy; we pin the same
# major here so both resolve to a single compiled crate.
semver = "1"
# Streaming download for the updater's byte-progress. self_update's
# Download type has no programmatic progress callback in 0.41, so we
# stream the GitHub asset ourselves to drive the Downloading{received,
# total} state. rustls (not native-tls) keeps us off OpenSSL, matching
# the self_update feature selection.
reqwest = { version = "0.12", default-features = false, features = ["blocking", "rustls-tls"] }
# `tempfile::tempdir()` for staging the downloaded archive before
# extract + self_replace. self_update re-exports `TempDir` but not
# the `tempdir()` constructor, so we depend on it explicitly.
tempfile = "3"
# In-app updater. Polls GitHub Releases, downloads the platform
# archive, and atomic-swaps the running exe. Features:
# - archive-zip + compression-zip-deflate → extract the Windows
# `.zip` (Compress-Archive / cargo-dist zips are DEFLATE-compressed;
# archive-zip alone only handles STORED entries and fails with
# "unsupported extraction method").
# - archive-tar + compression-flate2 → extract the Linux `.tar.gz`
# (cargo-dist's unix-archive is set to `.tar.gz` in
# dist-workspace.toml; self_update 0.41 has no xz/lzma feature).
# - rustls → keep us off OpenSSL.
# Mac apply is disabled until notarization lands — see src/update.rs.
self_update = { version = "0.41", default-features = false, features = ["archive-zip", "archive-tar", "compression-flate2", "compression-zip-deflate", "rustls"] }
[target.'cfg(windows)'.dependencies]
# Direct Win32 access for the custom titlebar: gpui's
# `WindowControlArea` hit-test returns the right `HT*` codes but
# Windows' default DefWindowProc handling for those is suppressed
# (gpui returns `Some(0)` from WM_NCHITTEST), and the supposed
# native NC-button toggle path doesn't fire reliably for our
# windows in practice. So we send `WM_SYSCOMMAND` / `WM_NCLBUTTONDOWN`
# ourselves from `on_mouse_down` listeners — same pattern Chrome,
# VS Code, and Windows Terminal use for their custom title bars.
windows = { workspace = true, features = [
"Win32_Foundation",
"Win32_UI_HiDpi",
"Win32_UI_WindowsAndMessaging",
"Win32_UI_Input_KeyboardAndMouse",
"Win32_UI_Shell",
"Win32_System_Com",
"Win32_System_SystemInformation",
"Win32_System_Threading",
"Win32_System_Time",
"Win32_Graphics_Gdi",
] }
winreg = "0.55"
[dev-dependencies]
# Only the `ptytest` example uses portable-pty for PTY diagnostics
# against alacritty_terminal's tty layer; the binary itself doesn't
# link it. Kept as a dev-dependency so release builds shed it.
portable-pty = "0.9"
[target.'cfg(windows)'.build-dependencies]
# Embed `assets/codescope.ico` as the Windows resource icon for the
# `window` binary so File Explorer / taskbar / Alt-Tab show the same
# brand mark as the C# build's `ApplicationIcon`. Used only by
# `build.rs` on Windows hosts; non-Windows targets skip the resource
# step entirely.
embed-resource = "3"
[profile.dev]
opt-level = 1
[profile.release]
lto = "thin"
codegen-units = 1
# The profile that 'dist' will build with
[profile.dist]
inherits = "release"
lto = "thin"