Repository navigation
River v0.1.0-alpha.5 — Git safety and navigation fixes
Pre-releaseRiver 0.1.0-alpha.5
Git-safety and keyboard-navigation fixes for River’s native macOS app. The interface is currently in Korean.
Download the Apple Silicon DMG · All release assets
Changes
- Require an exact file scope for hunk staging and reject multi-file patches. A directory request can no longer apply another file’s hunk under the first file’s header. Existing deleted-file, quoted-name and UTF-8 protections remain covered by regression tests.
- Preserve filename whitespace when reading Git repository paths, common directories and worktree control files. A neighboring directory with the trimmed name cannot become the repository identity.
- Deliver the explicit busy response while a client is still sending its request, with bounded request draining and no extra dispatch or handler admission.
- Allow more preflight time for staging and commits while retaining the existing client timeout and bounded Git-write budget. This is a deadline-policy correction, not a large-repository benchmark.
- Serialize recent-menu updates across app instances so opening different repositories cannot lose an entry. Corrupt-menu recovery rechecks the file while holding the same lock.
- Preserve original-folder versus task-worktree selection when switching repositories, including folder-specific drafts and task context.
- Make pane tab titles native buttons and add a keyboard-accessible Select Tab (
탭 선택) menu. Selecting a tab keeps its arrangement and does not add an undo step. - Keep an editor focused while returning from panel enlargement. Hidden-editor and hidden-commit protections remain in place.
- Show control and directional characters consistently in hunk headings, previous-reading snapshots, AI-request previews and split-diff accessibility labels. Copied source, stored checkpoints and staging bytes remain unchanged; altered previews explain that distinction.
Install
- Open
River-0.1.0-alpha.5-macos-arm64.dmg. - Drag River.app into Applications, replacing an older River installation if desired.
- Eject the disk image, then open River from Applications.
The download includes the app and Rust engine. Apple command-line Git is required; remote operations need Git 2.41 or later. If /usr/bin/git --version fails or is older, install/update Apple's Command Line Tools or Xcode. The built-in example additionally needs python3. No source build is required.
Compatibility and verification
| Item | This release |
|---|---|
| Architecture | Apple Silicon, arm64; no Intel or universal2 artifact |
| Declared macOS target | macOS 14 or later |
| Tested runtime | macOS 27.0.1 only; macOS 14–26 compatibility remains unverified |
| Bundle version | 0.1.0, build 6; full version 0.1.0-alpha.5 |
The app, bundled engine and DMG are Developer ID-signed. Executables use the hardened runtime. Packaging verification mounts the DMG read-only, copies the app and checks signatures, architecture and payload hashes. Apple notarization is not completed. Apple's Open Anyway instructions describe how to proceed if you choose to trust this alpha.
Developer checks passed 119 Rust tests, 146 Swift tests and 17 Python tests. The Python total includes 15 packaging tests. Regression coverage includes real Git index preservation, whitespace-bearing paths, bounded overload handling, native-window keyboard routing, repository navigation, cross-instance recent-menu updates and raw-copy preservation. Deadline tests model elapsed preflight without a real 20-second delay. Native rendering checks use owned offscreen windows. These checks are not OS-input/VoiceOver certification, older-macOS validation or large-repository performance measurements.
Known limits
- No provider PR APIs, general branch checkout, merge/rebase/conflict-resolution UI, discard, stash apply or automatic updates.
- Hooks, external signing programs and external content filters remain disabled/rejected. LFS, submodules and special files retain the limits described in the README.
- Lost replies and timeouts require checking local/server state before repeating a write. Closing a client does not prove that an engine write stopped.
- Entering panel enlargement still resets keyboard focus to prevent hidden input; a visible editor may need to be selected again. Hidden mounted branch panes may continue polling. See current limits.
- The license is undecided; Cargo metadata declares
UNLICENSED.
Verify the download
Download the DMG and matching SHA-256 file to the same folder, then run:
shasum -a 256 -c River-0.1.0-alpha.5-macos-arm64.dmg.sha256The manifest records packaging metadata. A checksum does not replace signature or notarization checks.