Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
fdfd318
feat(web): apply selected review suggestions in one revision
codex Oct 29, 2026
6c56df3
feat(web): apply revision-bound suggestions to line ranges
codex Oct 29, 2026
8b20c45
feat(review): request reviewers across API and clients
codex Oct 29, 2026
b470792
feat(web): focus the review workspace on changed code
codex Oct 29, 2026
eb8acbf
style: format requested-reviewer additions
codex Oct 29, 2026
35592e6
feat(review): resolve non-text conflicts against pinned revisions
codex Oct 29, 2026
1cb6d15
feat(review): persist private versioned review drafts
Oct 29, 2026
a76e99b
feat(clients): expose private review drafts in SDKs and MCP
Oct 29, 2026
2eba2d8
feat(web): restore explicitly saved account review drafts
Oct 29, 2026
7e48676
feat(cli): manage private review drafts with explicit versions
Oct 29, 2026
ca0da01
fix(review): preserve source paths across rename conflicts
Oct 29, 2026
dc7f768
feat(onboarding): simplify installation and the first reviewed change
Oct 29, 2026
6210f99
feat(distribution): prepare native Windows installation
Oct 29, 2026
3b676b2
docs: persist continuous development backlog and recovery state
Oct 29, 2026
93bc477
fix(ci): qualify Windows artifacts in prepared releases
Oct 29, 2026
a58b880
fix(sync): preserve clean changes across structural conflicts
Oct 29, 2026
944730d
fix(release): require Windows artifacts for future versions
Oct 29, 2026
3d33f51
feat(sync): describe bounded structural resolution scopes
Oct 29, 2026
09cf619
feat(web): resolve bounded file and directory conflicts
Oct 29, 2026
52ad4cc
feat(cli): manage virtual workspaces with pinned resolutions
Oct 29, 2026
c33bc9e
fix(ci): isolate native PowerShell installer environment
Oct 29, 2026
36f99cd
feat(api): store private versioned proposal comment drafts
Oct 29, 2026
acbdb9f
feat(clients): expose private comment drafts in SDKs and MCP
Oct 29, 2026
4304dc8
feat(cli): save and resume private comment drafts
Oct 29, 2026
d1f19a3
feat(web): save discussion drafts across devices
Oct 29, 2026
6745639
docs: record private comment drafts and ongoing roadmap work
Oct 29, 2026
cd8f0db
feat(api): save private file edits with retained original revisions
Oct 29, 2026
950d935
feat(web): save and reopen private file edits
Oct 29, 2026
16f7dd2
feat(clients): manage private file drafts through SDKs and MCP
Oct 29, 2026
86aaa18
feat(cli): save and recover private file drafts
Oct 29, 2026
350cb8c
docs: describe account file drafts and current roadmap progress
Oct 29, 2026
8293e69
Merge remote-tracking branch 'origin/main' into codex/roadmap-review-…
Oct 29, 2026
00ded3d
feat(web): keep home live across loaded repositories
Oct 29, 2026
cb69c05
feat(events): replay and follow multiple repositories with scoped cur…
Oct 29, 2026
1cf3e74
feat(cli): follow events across explicit repositories
Oct 29, 2026
f574229
feat(clients): resume multi-repository event subscriptions
Oct 29, 2026
fcda56c
docs: record cross-repository live workflows and next migration slice
Oct 29, 2026
863731d
feat(migration): import issue snapshots with durable source mappings
Oct 29, 2026
9e49a59
feat(cli): export hosting issues and apply reviewed imports
Oct 29, 2026
a82b9dd
feat(clients): preview and resume hosting issue imports
Oct 29, 2026
543549b
feat(web): preview and import hosting issues
Oct 29, 2026
d3b9672
docs: describe bounded hosting issue migration and remaining work
Oct 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ jobs:
for test in test_ci_policy test_release_candidate test_request_release test_release_scripts test_check_workflows test_web_e2e_workflow test_check_dependabot test_py39_compat; do
python3 "scripts/$test.py"
done
python3 scripts/test_windows_release.py WindowsArchive ReleaseInputs

rust:
name: Linux unit and storage contracts
Expand Down
50 changes: 48 additions & 2 deletions .github/workflows/prepare-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,51 @@ jobs:
if-no-files-found: error
retention-days: 14

windows-binaries:
name: native Windows archive
timeout-minutes: 45
if: needs.verify.outputs.needed == 'true'
needs: verify
runs-on: windows-latest
env:
VERSION: ${{ needs.verify.outputs.version }}
SOURCE_DATE_EPOCH: ${{ needs.verify.outputs.epoch }}
RUSTFLAGS: -C target-feature=+crt-static
AG_REQUIRE_COMPONENTS: shell:powershell
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: dtolnay/rust-toolchain@683b588c487a69d01f6c6ddf40f036ff682cc2c8 # master
with:
toolchain: stable
- uses: Swatinem/rust-cache@d1527c8f67ef9af357290475d4af4b0fab8f12e0 # v2.9.3
with:
key: release-windows
cache-workspace-crates: true
- uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
node-version: 22
cache: npm
cache-dependency-path: apps/web/package-lock.json
- name: Build the embedded Web UI
shell: bash
run: scripts/build_ui.sh
- name: Build supported Windows binaries with a static CRT
run: cargo build --release --locked -p agentgit-cli -p agentgit-server -p agentgit-mcp
- name: Test the installer, package and run the native archive
shell: pwsh
run: |
python scripts/test_windows_release.py
if ($LASTEXITCODE) { throw 'Windows packaging tests failed.' }
./scripts/smoke_windows_release.ps1 -Version $env:VERSION -BinDir target/release
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: archive-x86_64-pc-windows-msvc
path: dist/*.zip
if-no-files-found: error
retention-days: 14

sbom:
timeout-minutes: 15
if: needs.verify.outputs.needed == 'true'
Expand Down Expand Up @@ -378,7 +423,7 @@ jobs:
timeout-minutes: 10
if: needs.verify.outputs.needed == 'true'
name: assemble and attest the candidate
needs: [verify, checks, scripts, binaries, sbom, manifest]
needs: [verify, checks, scripts, binaries, windows-binaries, sbom, manifest]
runs-on: ubuntu-latest
env:
PUBLISH: ${{ needs.verify.outputs.publish }}
Expand All @@ -403,8 +448,9 @@ jobs:
set -euo pipefail
ls -la dist
set -- dist/*.tar.gz; test $# = 4
set -- dist/*.zip; test $# = 1; test -f "$1"
set -- dist/*.cdx.json; test $# = 4
python3 scripts/package_release.py sums dist/*.tar.gz dist/*.cdx.json | tee dist/SHA256SUMS
python3 scripts/package_release.py sums dist/*.tar.gz dist/*.zip dist/*.cdx.json | tee dist/SHA256SUMS
(cd dist && sha256sum -c SHA256SUMS)
python3 scripts/render_packaging.py --version "$VERSION" --sums dist/SHA256SUMS --out dist --only homebrew
ruby -c dist/agentgit.rb
Expand Down
38 changes: 37 additions & 1 deletion .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ concurrency:
env:
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: "0"
AG_REQUIRE_COMPONENTS: shell:powershell

jobs:
windows:
Expand All @@ -30,13 +31,22 @@ jobs:
- uses: Swatinem/rust-cache@d1527c8f67ef9af357290475d4af4b0fab8f12e0 # v2.9.3
with:
cache-workspace-crates: true
- name: Show the toolchain and Git
- name: Show the operating system, toolchain and Git
run: |
Get-CimInstance Win32_OperatingSystem | Select-Object Caption, Version, BuildNumber, OSArchitecture | Format-List
rustc -Vv
git --version
git config --show-origin --get-all core.autocrlf
where.exe nasm
continue-on-error: true
- uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
node-version: 22
cache: npm
cache-dependency-path: apps/web/package-lock.json
- name: Build the embedded Web UI
shell: bash
run: scripts/build_ui.sh
- name: Build everything that is portable
run: cargo build --workspace --all-targets
# The execution plane (ag-sandbox, ag-worker) is Linux-only: ag-sandbox is empty here, ag-worker is a
Expand All @@ -60,3 +70,29 @@ jobs:
run: |
$env:AG = "$PWD\target\debug\ag.exe"
.\examples\quickstart.ps1

- name: Windows archive and installer regression tests
run: python scripts/test_windows_release.py
- name: Installer tests on Windows PowerShell 5.1
# Start Python from Windows PowerShell too: inheriting pwsh's PSModulePath
# prevents the nested 5.1 process from loading its own utility module.
shell: powershell
run: |
$env:AG_TEST_PWSH = (Get-Command powershell.exe).Source
& $env:AG_TEST_PWSH -NoProfile -Command '$PSVersionTable; Get-Command Get-FileHash -ErrorAction Stop | Format-List Name, Source'
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
python scripts/test_windows_release.py
- name: Package, install and run the native Windows client
shell: pwsh
run: |
$version = python -c "import pathlib,tomllib; print(tomllib.loads(pathlib.Path('Cargo.toml').read_text())['workspace']['package']['version'])"
./scripts/smoke_windows_release.ps1 -Version $version -BinDir target/debug
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: windows-install-rehearsal
path: |
dist/*.zip
dist/SHA256SUMS
dist/install.ps1
if-no-files-found: error
retention-days: 14
40 changes: 40 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,46 @@ on-disk formats are versioned and refuse to open when newer than the build under
- Use component-specific fast CI for ordinary commits and cancel superseded work. Run the full platform/backend/browser/security matrix during qualification, reuse one server build for SDK runtimes, and retain compiled workspace caches.
- Separate release preparation from publication. Promote the exact prepared and attested archives/images without rebuilding or repeating the Rust suite, with a three-minute publishing job and two-minute parallel public-install checks. Cold preparation and runner queues remain outside the five-minute ready-candidate publication target.

### Added

- `ag remote workspace list/show/create/sync/delete` exposes the virtual workspace workflow from the CLI. Explicit resolution files require a pinned stream head and capable server; JSON output retains complete/incomplete structural scopes without choosing paths automatically.

- Browser file/directory conflicts support explicit whole-file or whole-folder choices with bounded complete previews, exact blob/type/mode preservation, visible removed paths and pinned revision checks. Independent clean changes survive; incomplete previews remain blocked.

- Fresh structural sync previews include bounded candidate path scopes and an explicit completeness flag. Clients can account for synthetic rename destinations without guessing or treating a truncated preview as complete.

- The release pipeline prepares a native Windows x64 ZIP with the CLI, server and MCP, plus a per-user PowerShell installer that verifies checksums. Native install-and-first-use smoke is required before publishing; the first Windows archive is not yet released.

- Development builds can export GitHub/GitLab issues and comments to a portable manifest, preview it in Web or CLI, and resume an explicit import without duplicates. Source provenance is retained and unsupported metadata is reported. Schema13 requires a pre-upgrade backup.
- Home receives live updates across up to thirty loaded repositories through one resumable event feed. CLI, SDKs and MCP expose bounded multi-repository replay with per-repository cursors.
- Existing-file edits can be saved privately to an account and resumed through Web, CLI, SDK and MCP. Original revision and file metadata are retained; publication stays explicit. Development schema 12 requires a pre-upgrade backup.
- General proposal comments gain separate private account drafts across Web, CLI, SDK and MCP, with explicit save and version-checked cleanup. Development schema 11 preserves existing review drafts; back up before upgrading.
- Reviewers can explicitly save a private review draft to their account and resume on another device through Web UI, CLI, MCP or SDKs. Local drafts remain available, conflicting drafts require a choice, and versioned saves/clears never overwrite newer notes or submit a review. Development schema 10 requires a pre-upgrade backup.

- Browser conflict resolution can keep either exact binary, oversized or file-type version while preserving blob bytes, executable mode and symlink type. Virtual sync pins the inspected branch through its final transaction and reports its exact target to SDK/MCP clients.

- Authors can request specific reviewers with an inspected-list update across the API and clients. Requests survive new revisions, never grant access or count as approval, and can be filtered before proposal pagination. Development metadata schema 9 requires a pre-upgrade backup.

- Review suggestions can replace up to 100 consecutive original lines. Range drafts survive reload, previews show the source file, and batches reject overlapping ranges before publication. Existing one-line suggestions keep their original format.

- Authors can preview and apply selected review suggestions across files as one proposal revision. Exact source lines, executable mode, BOM and line endings are preserved; conflicting selections are refused and discussions remain open.

### Fixed

- Release completeness checks require the Windows ZIP for versions newer than beta.7, so an interrupted future upload is repaired instead of being mistaken for a complete release. Historical POSIX-only releases remain recognized.

- Structural workspace sync preserves independent incoming additions, edits and deletions while applying explicit file/directory resolutions. Incomplete choices fail without moving the workspace; local structural sync and legacy pending snapshots refuse unsafe fallback commits.

- Renamed conflict previews now read each version at its exact source path instead of mistaking a relocated file for deletion. CLI, SDK and MCP retain this metadata; the browser also supports explicit rename/delete choices and requires capable servers.

- SDKs retry workspace sync automatically only when a nonempty inspected branch head guards the operation. Unguarded calls require explicit unsafe-retry opt-in.

### Changed

- Installation now prefers a stable release and explicitly falls back to a published prerelease when no stable exists. It prints a runnable local-demo command and safe PATH guidance; both READMEs and the getting-started guide lead with a verified install-to-first-change path.

- The review workspace puts changed code first, keeps Review and Land in the header, and moves secondary actions and context into a quieter side panel. Phone layouts use a compact readiness strip and file navigation. All review, validation and permission states remain available.

## [0.3.0-beta.7] - 2026-10-29

**Upgrade:** metadata schema 8 and control schema are unchanged from beta.6. Back up before upgrading. Returning to beta.5 or older requires the pre-upgrade backup.
Expand Down
3 changes: 3 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading