Skip to content

v1.3.123

Choose a tag to compare

@topcheer topcheer released this 04 Jul 05:58
· 4079 commits to main since this release

v1.3.123

Released: 2026-07-04

Major Features

Multi-VCS Support (git, Mercurial, Subversion, Jujutsu)

ggcode now auto-detects the version control system in the working directory and
dispatches SCM operations accordingly. The 5 core tools (git_status,
git_diff, git_log, git_add, git_commit) now work in Mercurial (hg),
Subversion (svn), and Jujutsu (jj) repositories — not just git.

  • Git fast path unchanged: existing git behavior is byte-for-byte identical
  • Auto-detection: walks up the directory tree for .git/.hg/.svn/.jj
  • Priority: git > hg > svn > jj (when multiple VCS metadata coexist)
  • Tool names unchanged: git_status etc. remain the same for backward
    compatibility — they work for all VCS types internally
  • System prompt: now reports the actual VCS type ("in a Mercurial repository")

New Cron Tools (update, pause, resume, get)

Expanded the cron tool set from 3 to 7 actions:

  • cron_update: modify cron expression, prompt, and/or queue_if_busy in-place
    — no more delete-and-recreate, job ID stays the same
  • cron_pause: suspend a job's timer without deleting its configuration
  • cron_resume: reactivate a paused job (recomputes NextFire from now)
  • cron_get: view full job details including the complete prompt text

Additional improvements:

  • cron_list now shows paused state
  • cron_get is allowed in plan mode (read-only)
  • Paused jobs persist across restarts
  • Pause/resume are idempotent

Bug Fixes

  • Data race in cron scheduler: timer callbacks read job.Prompt/job.QueueIfBusy
    without lock while Update() writes them under lock. Fixed by snapshotting under lock.
  • hg/jj Add separator: hg add and jj file track missing -- argument separator
    before file paths (git and svn already had it).
  • svn Log: use -r 1:HEAD so recently committed revisions are included
  • svn Commit: add --non-interactive to avoid hanging on auth prompts
  • jj Commit: fixed to describe + new workflow (jj's working-copy-is-commit model)
  • jj IsClean: correctly detect "The working copy has no changes" message

Test Coverage

49 integration tests across all 4 VCS backends, all passing against real repositories:

  • Git: 11 tests (git 2.54)
  • Mercurial: 10 tests (hg 7.2.3)
  • Subversion: 10 tests (svn 1.14.5)
  • Jujutsu: 9 tests (jj 0.43.0)
  • Detection: 9 tests (all types, nesting, preference order, fallback)