Releases: ZelAnton/vcs-toolkit-rs
Releases · ZelAnton/vcs-toolkit-rs
vcs-watch-v0.1.0
Added
- Initial release:
RepoWatcherfilesystem-watches a git/jj repository and RepoEvent(#[non_exhaustive]):HeadMoved,BranchSwitched,- Builder:
working_tree(bool)(default off — state-dir-only watching; opt in to - The pure snapshot-
diffis hermetically unit-tested; the notify → debounce → Builder::requery_timeout(Option<Duration>)(default 30 s,RepoWatcher::stats() -> WatcherStats— lock-free health countersstreamfeature:impl futures_core::Stream for RepoWatcher, so the watcher
Notes
- This is the workspace's first runtime tokio dependency (everything else
Changed
- The
max_waitceiling is now exact: a dedicated timer arm fires the - The debounce → ceiling → re-query pipeline is now hermetically tested:
Fixed
- A watcher on a linked git worktree now also watches the shared
.git
vcs-testkit-v0.1.0
Added
- Initial release:
TempDir(unique, remove-on-drop),configure_identity,
Fixed
- Sandboxes are isolated from the host VCS configuration: every git
vcs-mcp-v0.1.0
Added
- Initial release:
vcs-mcp, a Model Context Protocol (MCP) server exposing the - Read tools (always available, annotated
readOnlyHint):repo_snapshot, - Mutating tools (gated, annotated
destructiveHint):repo_commit, WriteGate— the server's write policy (None/All/- CLI:
--repo <path>(default cwd),--forge github|gitlab|gitea(override), - Hardened by default: the binary opens the repo with a hardened git client
- The tool logic, write-gating, serialization, and the
#[tool_router]/
Notes
- Built on
rmcp(the official MCP Rust SDK).
vcs-jj-v0.5.0
Added
description(dir, revset)— the full (multiline) description of the commit agit_fetch_from(dir, remote)— fetch from a named git remoteJj::transaction(dir, |tx| …)(also onJjAt) — run a mutation sequence withgit_clone(url, dest, colocate)—jj git clonewithout a workingabsorb(dir, from, filesets)— fold working-copy edits into the mutablesplit_paths(dir, filesets, message)— carve named filesets out of@intoduplicate(dir, revset).op_log(dir, limit)→Vec<Operation>(id/user/start-time/description) —evolog(dir, revset, max)→Vec<Change>— how a change evolved, newestfile_annotate(dir, path, rev)→Vec<AnnotationLine>(change id + 1-basedcapabilities()→JjCapabilities { version: JjVersion }— the installed- Injection guards on the exposed positional arguments (bookmark names,
RevsetExprvalidating newtype — optional up-front validation forconflictmodule — a typed model of jj's materialized conflicts- Doc note: there is deliberately no
Jj::hardened()— jj has no repo-local Jj::workspace_roots(dir, names)— resolve several workspaces' roots in one
Changed
squash_paths(dir, from, into, filesets, use_destination_message)now takes a- Bumped
processkitto 0.8 — the re-exportedError/ProcessResultcarry - Internal: the
CliClientverbs the wrapper bodies call were renamed to one - New off-by-default
cancellationfeature: pulls in processkit's - Internal: the diff model + parser (
ChangeKind/DiffLine/Hunk/FileDiff/
vcs-gitlab-v0.1.0
Added
- Initial release:
GitLabApitrait +GitLabclient wrapping theglabCLI, - The lean merge-request lifecycle, deserializing
glab … --output json auth_statusdocuments the glab exit-code caveat ([gitlab-org/cli#911]): a
vcs-github-v0.5.0
Added
- PR lifecycle mutations:
pr_merge(dir, n, PrMerge)— aPrMergebuilder pr_checks(dir, n)→Vec<CheckRun>(pr checks --json …). gh signals the- Reviews and comments:
pr_review(dir, n, ReviewAction)—ReviewAction - GitHub Actions runs:
run_list(dir, limit, branch)/run_view(dir, id)→ - Issues and releases:
issue_create(dir, title, body)→ URL; - All new dir-taking methods are mirrored on the
GitHubAtbound view. - Injection guards on the exposed positional arguments (
apiendpoint,
Changed
- Breaking:
pr_createnow takes a singlePrCreatespec - Breaking:
ReviewActionis now a struct with private fields built via - Bumped
processkitto 0.8 — the re-exportedError/ProcessResultcarry - Internal: the
CliClientverbs the wrapper bodies call were renamed to one - New off-by-default
cancellationfeature: pulls in processkit's - Internal: the argv injection guard (
reject_flag_like) now comes from the auth_statusreportsfalseon any non-zero exit (was: errored on exits
Fixed
pr_list/pr_list_for_branch/issue_list/release_listpass--limit 100
vcs-gitea-v0.1.0
Added
- Initial release:
GiteaApitrait +Giteaclient wrapping theteaCLI, - The lean pull-request lifecycle
teasupports:auth_status(a non-empty - Issues and releases:
issue_list(Vec<Issue>),issue_view(number)(the - Raw escape hatches
run/run_raw(+ inherentrun_args/run_raw_args), and
Notes
- Deliberately narrower than
vcs-github/vcs-gitlab:teaexposes no tea --output jsonis modeled, not the Gitea REST API. Its list
Changed
- Bumped
processkitto 0.8 — the re-exportedError/ProcessResultcarry - Internal: the
CliClientverbs the wrapper bodies call were renamed to one - New off-by-default
cancellationfeature: pulls in processkit's auth_statustolerates a non-zerotea login listexit (e.g. no config filepr_createdoc: tea prints a textual summary (no URL) and has no flag topr_createnow takes aPrCreatespec
Fixed
pr_listpasses--limit 100(tea's default page of 30 silently truncated
vcs-git-v0.5.0
Added
branch_status(dir) -> BranchStatus— a combined branch + working-treefetch_from(dir, remote)— fetch from a named remote (`fetch --quietconflicted_files(dir)— paths with unresolved merge conflictsstatus_tracked(dir)—statusminus untracked filesGit::switch_with_stash(dir, branch)(also onGitAt) — switch branchesclone_repo(url, dest, CloneSpec)—git clonewith aCloneSpecbuilder- Tag operations:
tag_create(lightweight, optional rev), show_file(dir, rev, path)— file content at a revisionconfig_get(dir, key)→Option<String>(config --get; exit 1 →None—remote_add(dir, name, url)andremote_set_url(dir, name, url).blame(dir, path, rev)→Vec<BlameLine>(blame --line-porcelain):- Sequencer:
cherry_pick(dir, rev),revert(dir, rev)(--no-edit+ capabilities()→GitCapabilities { version: GitVersion }— the installed- Injection guards on every exposed positional argument — names, revisions,
RefNameandRevSpecvalidating newtypes — optional up-front validationGit::harden()/Git::hardened()— an untrusted-repo execution profileconflictmodule — a typed model of conflict markers:parse_conflicts
Changed
- Breaking: four multi-option
GitApimethods now take a spec/builder - Bumped
processkitto 0.8 — the re-exportedError/ProcessResultcarry - Internal: the
CliClientverbs the wrapper bodies call were renamed to one - New off-by-default
cancellationfeature: pulls in processkit's - Internal: the diff model + parser (
ChangeKind/DiffLine/Hunk/FileDiff/
Fixed
diff/diff_textpin thea/…b/diff prefixes (--src-prefix/--dst-prefix),branches/is_merged/tag_listpass--no-column, so a user's- Commands whose failure output feeds the error classifiers (the
commit, show_filenormalises\→/only on Windows — on Unix a backslash is abranch_statusruns withGIT_OPTIONAL_LOCKS=0, so the snapshot/pollconflict::parse_conflicts: a repeated|-run line inside a diff3 region is
vcs-forge-v0.1.0
Added
- Initial release: a backend-agnostic facade over
vcs-github,vcs-gitlab, and - Explicit construction (
Forge::github/gitlab/giteaover the real runner; - Unified DTOs (
#[non_exhaustive]):ForgePr+ForgePrState - The lean lifecycle:
auth_status,repo_view,pr_list,pr_view, - Issues + releases:
issue_list/issue_view(number)/ - An
Error::Unsupported { forge, operation }variant: Gitea'steahas no - Optional
serdefeature: derivesserde::Serializeon the public DTOs
Changed
- Bumped
processkitto 0.8 —Error::Forgewraps the#[non_exhaustive] - New off-by-default
cancellationfeature, forwarding to each wrapper's — pr_createdoc honesty: it returns the CLI's success output — a URL on
Fixed
- GitLab
repo_viewno longer reports a project with absentvisibility
vcs-diff-v0.1.0
Added
- Initial release: the shared git-format unified-diff model and parser —
- Optional
serdefeature: derivesserde::Serializeon the public DTOs