[package]
edition = "2021"
rust-version = "1.86"
name = "gwm-cli"
version = "1.5.0"
authors = ["Kylian Bardini"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "git worktree manager — TUI + CLI, native libgit2, per-repo bootstrap"
readme = "README.md"
keywords = [
"git",
"worktree",
"tui",
"cli",
"ratatui",
]
categories = [
"command-line-utilities",
"development-tools",
]
license = "MIT"
repository = "https://github.com/kbrdn1/gwm-cli"
[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/v{ version }/gwm-v{ version }-{ target }.tar.gz"
pkg-fmt = "tgz"
bin-dir = "gwm-v{ version }-{ target }/{ bin }"
[package.metadata.binstall.overrides.x86_64-pc-windows-msvc]
pkg-url = "{ repo }/releases/download/v{ version }/gwm-v{ version }-{ target }.zip"
pkg-fmt = "zip"
[package.metadata.deb]
maintainer = "Kylian Bardini <onepiecekylian@gmail.com>"
copyright = "2026 Kylian Bardini"
license-file = [
"LICENSE.md",
"0",
]
extended-description = """
git worktree manager — a terminal UI and CLI over git worktrees. Native
libgit2, per-repo .gwm.toml bootstrap (file copies, regex guards, lifecycle
hooks), and a ratatui TUI. The installed command is `gwm`."""
section = "utils"
priority = "optional"
depends = "libc6 (>= 2.34), git"
conflicts = "gwm"
assets = [
[
"target/release/gwm",
"usr/bin/",
"755",
],
[
"README.md",
"usr/share/doc/gwm-cli/README.md",
"644",
],
[
"CHANGELOG.md",
"usr/share/doc/gwm-cli/CHANGELOG.md",
"644",
],
]
[package.metadata.generate-rpm]
summary = "git worktree manager — TUI + CLI, native libgit2, per-repo bootstrap"
license = "MIT"
auto-req = "no"
[package.metadata.generate-rpm.requires]
glibc = ">= 2.34"
git = "*"
[[package.metadata.generate-rpm.assets]]
source = "target/release/gwm"
dest = "/usr/bin/gwm"
mode = "755"
[[package.metadata.generate-rpm.assets]]
source = "README.md"
dest = "/usr/share/doc/gwm-cli/README.md"
mode = "644"
[[package.metadata.generate-rpm.assets]]
source = "LICENSE.md"
dest = "/usr/share/doc/gwm-cli/LICENSE.md"
mode = "644"
[[package.metadata.generate-rpm.assets]]
source = "CHANGELOG.md"
dest = "/usr/share/doc/gwm-cli/CHANGELOG.md"
mode = "644"
[features]
daemon = []
default = ["daemon"]
[lib]
name = "gwm"
path = "src/lib.rs"
[[bin]]
name = "gwm"
path = "src/main.rs"
[[test]]
name = "agent_sessions_tests"
path = "tests/agent_sessions_tests.rs"
[[test]]
name = "aliases_tests"
path = "tests/aliases_tests.rs"
[[test]]
name = "aur_pkgbuild_tests"
path = "tests/aur_pkgbuild_tests.rs"
[[test]]
name = "binstall_metadata_tests"
path = "tests/binstall_metadata_tests.rs"
[[test]]
name = "bootstrap_tests"
path = "tests/bootstrap_tests.rs"
[[test]]
name = "bootstrap_when_tests"
path = "tests/bootstrap_when_tests.rs"
[[test]]
name = "clean_tests"
path = "tests/clean_tests.rs"
[[test]]
name = "cli_binary"
path = "tests/cli_binary.rs"
[[test]]
name = "cli_format_tests"
path = "tests/cli_format_tests.rs"
[[test]]
name = "cli_repo_context_tests"
path = "tests/cli_repo_context_tests.rs"
[[test]]
name = "cli_workspace_tests"
path = "tests/cli_workspace_tests.rs"
[[test]]
name = "clipboard_tests"
path = "tests/clipboard_tests.rs"
[[test]]
name = "command_log_tests"
path = "tests/command_log_tests.rs"
[[test]]
name = "commit_graph_perf_tests"
path = "tests/commit_graph_perf_tests.rs"
[[test]]
name = "config_cli_tests"
path = "tests/config_cli_tests.rs"
[[test]]
name = "config_global_tests"
path = "tests/config_global_tests.rs"
[[test]]
name = "config_set_at_tests"
path = "tests/config_set_at_tests.rs"
[[test]]
name = "config_tests"
path = "tests/config_tests.rs"
[[test]]
name = "contract_tests"
path = "tests/contract_tests.rs"
[[test]]
name = "daemon_integration"
path = "tests/daemon_integration.rs"
[[test]]
name = "daemon_pipe_integration"
path = "tests/daemon_pipe_integration.rs"
[[test]]
name = "daemon_tests"
path = "tests/daemon_tests.rs"
[[test]]
name = "doctor_tests"
path = "tests/doctor_tests.rs"
[[test]]
name = "error_tests"
path = "tests/error_tests.rs"
[[test]]
name = "error_variants_tests"
path = "tests/error_variants_tests.rs"
[[test]]
name = "exec_tests"
path = "tests/exec_tests.rs"
[[test]]
name = "flake_tests"
path = "tests/flake_tests.rs"
[[test]]
name = "forge_tests"
path = "tests/forge_tests.rs"
[[test]]
name = "github_tests"
path = "tests/github_tests.rs"
[[test]]
name = "gitlab_tests"
path = "tests/gitlab_tests.rs"
[[test]]
name = "gitmoji_tests"
path = "tests/gitmoji_tests.rs"
[[test]]
name = "history_tests"
path = "tests/history_tests.rs"
[[test]]
name = "homebrew_formula_tests"
path = "tests/homebrew_formula_tests.rs"
[[test]]
name = "hooks_tests"
path = "tests/hooks_tests.rs"
[[test]]
name = "json_api_tests"
path = "tests/json_api_tests.rs"
[[test]]
name = "keymap_tests"
path = "tests/keymap_tests.rs"
[[test]]
name = "labels_tests"
path = "tests/labels_tests.rs"
[[test]]
name = "launcher_tests"
path = "tests/launcher_tests.rs"
[[test]]
name = "lifecycle_tests"
path = "tests/lifecycle_tests.rs"
[[test]]
name = "linux_packaging_metadata_tests"
path = "tests/linux_packaging_metadata_tests.rs"
[[test]]
name = "milestones_tests"
path = "tests/milestones_tests.rs"
[[test]]
name = "modal_keymap_tests"
path = "tests/modal_keymap_tests.rs"
[[test]]
name = "multiplexer_tests"
path = "tests/multiplexer_tests.rs"
[[test]]
name = "naming_tests"
path = "tests/naming_tests.rs"
[[test]]
name = "palette_tests"
path = "tests/palette_tests.rs"
[[test]]
name = "pr_templates_tests"
path = "tests/pr_templates_tests.rs"
[[test]]
name = "precommit_hook_tests"
path = "tests/precommit_hook_tests.rs"
[[test]]
name = "presets_tests"
path = "tests/presets_tests.rs"
[[test]]
name = "release_workflow_tests"
path = "tests/release_workflow_tests.rs"
[[test]]
name = "review_integration"
path = "tests/review_integration.rs"
[[test]]
name = "review_tests"
path = "tests/review_tests.rs"
[[test]]
name = "scoop_manifest_tests"
path = "tests/scoop_manifest_tests.rs"
[[test]]
name = "statusline_tests"
path = "tests/statusline_tests.rs"
[[test]]
name = "sync_tests"
path = "tests/sync_tests.rs"
[[test]]
name = "templating_tests"
path = "tests/templating_tests.rs"
[[test]]
name = "theme_tests"
path = "tests/theme_tests.rs"
[[test]]
name = "trust_tests"
path = "tests/trust_tests.rs"
[[test]]
name = "tui_app_tests"
path = "tests/tui_app_tests.rs"
[[test]]
name = "tui_attach_modal_render_tests"
path = "tests/tui_attach_modal_render_tests.rs"
[[test]]
name = "tui_chord_tests"
path = "tests/tui_chord_tests.rs"
[[test]]
name = "tui_exec_overlay_tests"
path = "tests/tui_exec_overlay_tests.rs"
[[test]]
name = "tui_footer_tests"
path = "tests/tui_footer_tests.rs"
[[test]]
name = "tui_header_tests"
path = "tests/tui_header_tests.rs"
[[test]]
name = "tui_modal_render_tests"
path = "tests/tui_modal_render_tests.rs"
[[test]]
name = "tui_sidebar_render_tests"
path = "tests/tui_sidebar_render_tests.rs"
[[test]]
name = "tui_state_async_task_tests"
path = "tests/tui_state_async_task_tests.rs"
[[test]]
name = "tui_state_command_logs_tests"
path = "tests/tui_state_command_logs_tests.rs"
[[test]]
name = "tui_state_config_panel_tests"
path = "tests/tui_state_config_panel_tests.rs"
[[test]]
name = "tui_state_confirm_tests"
path = "tests/tui_state_confirm_tests.rs"
[[test]]
name = "tui_state_create_form_tests"
path = "tests/tui_state_create_form_tests.rs"
[[test]]
name = "tui_state_filter_tests"
path = "tests/tui_state_filter_tests.rs"
[[test]]
name = "tui_state_github_fetch_tests"
path = "tests/tui_state_github_fetch_tests.rs"
[[test]]
name = "tui_state_link_prompt_tests"
path = "tests/tui_state_link_prompt_tests.rs"
[[test]]
name = "tui_state_palette_tests"
path = "tests/tui_state_palette_tests.rs"
[[test]]
name = "tui_state_pty_overlay_tests"
path = "tests/tui_state_pty_overlay_tests.rs"
[[test]]
name = "tui_state_sidebar_tests"
path = "tests/tui_state_sidebar_tests.rs"
[[test]]
name = "tui_state_spinner_tests"
path = "tests/tui_state_spinner_tests.rs"
[[test]]
name = "tui_table_render_tests"
path = "tests/tui_table_render_tests.rs"
[[test]]
name = "tui_theme_audit_tests"
path = "tests/tui_theme_audit_tests.rs"
[[test]]
name = "tui_theme_integration_tests"
path = "tests/tui_theme_integration_tests.rs"
[[test]]
name = "tui_ui_helpers_tests"
path = "tests/tui_ui_helpers_tests.rs"
[[test]]
name = "tui_workspace_tests"
path = "tests/tui_workspace_tests.rs"
[[test]]
name = "tui_wt_tree_tests"
path = "tests/tui_wt_tree_tests.rs"
[[test]]
name = "workspace_tests"
path = "tests/workspace_tests.rs"
[[test]]
name = "worktree_integration"
path = "tests/worktree_integration.rs"
[[bench]]
name = "commit_graph"
path = "benches/commit_graph.rs"
harness = false
[[bench]]
name = "sidebar_cache_hit"
path = "benches/sidebar_cache_hit.rs"
harness = false
[[bench]]
name = "sidebar_recent_commits"
path = "benches/sidebar_recent_commits.rs"
harness = false
[dependencies.anyhow]
version = "1"
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.clap]
version = "4.5"
features = [
"derive",
"color",
]
[dependencies.clap_complete]
version = "4.5"
[dependencies.crossterm]
version = "0.29"
features = ["osc52"]
[dependencies.dirs]
version = "6"
[dependencies.git2]
version = "0.21"
features = ["vendored-libgit2"]
default-features = false
[dependencies.glob]
version = "0.3"
[dependencies.libz-sys]
version = "1"
features = ["static"]
[dependencies.nucleo-matcher]
version = "0.3"
[dependencies.portable-pty]
version = "0.9"
[dependencies.ratatui]
version = "0.30"
[dependencies.regex]
version = "1"
[dependencies.rusqlite]
version = "0.40.1"
features = ["bundled"]
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.serde_yaml_ng]
version = "0.10.0"
[dependencies.sha2]
version = "0.11"
[dependencies.shell-words]
version = "1"
[dependencies.shellexpand]
version = "3"
[dependencies.tempfile]
version = "3"
[dependencies.thiserror]
version = "2"
[dependencies.toml]
version = "1.1"
[dependencies.toml_edit]
version = "0.25"
[dependencies.tui-term]
version = "0.3"
[dependencies.which]
version = "8"
[dev-dependencies.assert_cmd]
version = "2"
[dev-dependencies.criterion]
version = "0.8"
[dev-dependencies.predicates]
version = "3"
[dev-dependencies.toml]
version = "1.1"
[target."cfg(unix)".dependencies.libc]
version = "0.2"
[target."cfg(windows)".dependencies.interprocess]
version = "2.4.2"
[target."cfg(windows)".dependencies.widestring]
version = "1.2.1"
[target."cfg(windows)".dependencies.windows-sys]
version = "0.61.2"
features = [
"Win32_System_Pipes",
"Win32_Foundation",
"Win32_Security",
"Win32_Security_Authorization",
"Win32_System_Threading",
]
[target."cfg(windows)".dev-dependencies.interprocess]
version = "2.4.2"
[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 1
strip = true