Skip to content

Conversation

@wesm
Copy link
Collaborator

@wesm wesm commented Jan 21, 2026

Summary

Comprehensive Windows support improvements plus related fixes discovered during testing.

Windows Installation

  • Add scripts/install.ps1 for native Windows installation via PowerShell
  • SHA256 checksum verification (fail-closed by default, ROBOREV_SKIP_CHECKSUM to bypass)
  • Handles * prefix (binary mode) and ./ prefix in checksum files
  • PowerShell 5.x and 6+ compatibility
  • Clear error on unsupported 32-bit Windows

Windows ARM64

  • Add Windows ARM64 to release build matrix in CI

Codex Agent Fix (All Platforms)

  • Pipe prompt via stdin instead of command line argument
  • Fixes "I don't see the commit content" errors on Windows (32KB arg limit)
  • Benefits all platforms with large diffs

Config Hot-Reload Improvements

  • Make ConfigWatcher not restart-safe (clear error on reuse)
  • Add ReloadCounter for sub-second reload detection
  • Add test for atomic saves (editor-style write-then-rename)
  • Prevent potential double-close on watcher setup failure

Path Sanitization

  • Reject Unix-style absolute paths (/etc/passwd) on all platforms
  • Consistent security behavior for tar extraction

Installation Command

powershell -ExecutionPolicy ByPass -c "irm https://roborev.io/install.ps1 | iex"

Test Plan

  • Test installer on Windows 10/11 x64
  • Verify PATH modification works
  • Verify codex agent works with large diffs on Windows
  • All existing tests pass on macOS/Linux
  • Config watcher tests pass

🤖 Generated with Claude Code

- Add scripts/install.ps1 for native Windows installation
- Update README with Windows installation instructions
- Follows uv-style installation: powershell -ExecutionPolicy ByPass -c "irm URL | iex"

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@wesm
Copy link
Collaborator Author

wesm commented Jan 23, 2026

The install script works, but Windows support is currently broken (the daemon/tui work, but the reviews do not execute properly) and will take some work to fix.

wesm and others added 4 commits January 23, 2026 10:46
Windows has a ~32KB command line argument limit, which large diffs
easily exceed. This caused codex to receive truncated or empty prompts,
resulting in "I don't see the commit content" errors.

Changed the codex agent to pipe the prompt via stdin (using "-" as
the prompt argument), consistent with how claude and gemini agents
already work. This fix benefits all platforms.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Windows ARM64 to release build matrix
- Fix PowerShell 5.x vs 6+ compatibility (-UseBasicParsing removed in PS6+)
- Error clearly on 32-bit Windows instead of silently failing
- Add SHA256 checksum verification for downloaded archives
- Use correct checksums filename (SHA256SUMS)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move "-" stdin marker after all flags (including -c) to ensure
  proper flag parsing
- Always add --full-auto in non-agentic mode since stdin is always
  a pipe (removed stale os.Stdin TTY check)
- Remove unused isatty dependency
- Add test verifying prompt is piped via stdin

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Make checksum verification fail-closed by default (abort on errors)
- Add ROBOREV_SKIP_CHECKSUM env var for explicit bypass
- Fix regex matching bug: use [regex]::Escape() and match at end of line
- Error on multiple checksum matches instead of silently using first

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@wesm wesm changed the title Add Windows PowerShell installer Add Windows PowerShell installer, Windows fixes, other miscellanea Jan 23, 2026
wesm and others added 2 commits January 23, 2026 11:01
- Make ConfigWatcher not restart-safe: Start() returns error after Stop()
  has been called, with clear documentation to create new instance
- Add ReloadCounter for sub-second reload detection (monotonic uint64)
- Change ConfigReloadedAt format to RFC3339Nano for better precision
- Add TestConfigWatcher_AtomicSaveViaRename for editor-style saves
- Add TestConfigWatcher_StartAfterStopErrors for restart behavior
- Add TestConfigWatcher_ReloadCounter for counter increment verification
- Update TUI to use ConfigReloadCounter instead of timestamp comparison
- Update TUI tests to use counter-based reload detection

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- config_watcher.go: Set watcher to nil after close in error path to
  prevent potential double-close if Stop() is called later
- main_test.go: Update header comment to reflect ROBOREV_DATA_DIR usage
  instead of HOME
- update.go: Add explicit check for Unix-style absolute paths (leading /)
  to ensure consistent rejection on all platforms including Windows
- update_test.go: Remove skipOnWin flag now that / paths are rejected
  on all platforms
- install.ps1: Fix comment mentioning nonexistent -SkipChecksum flag
- install.ps1: Parse checksum lines more robustly to handle * prefix
  (binary mode) and ./ prefix (relative path) in SHA256SUMS entries

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@wesm
Copy link
Collaborator Author

wesm commented Jan 23, 2026

OK, it's alive!

@wesm wesm changed the title Add Windows PowerShell installer, Windows fixes, other miscellanea Windows support: PowerShell installer, codex stdin fix, ARM64 builds Jan 23, 2026
@wesm wesm merged commit 6144fe7 into main Jan 23, 2026
7 checks passed
@wesm wesm deleted the windoze branch January 23, 2026 17:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants