arashi 1.23.0 → 1.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +25 -7
  2. package/bin/arashi +31 -14
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -41,7 +41,17 @@ It also runs a quick `arashi --version` smoke test before declaring success.
41
41
 
42
42
  If curl installation fails, or if the smoke test reports a bad release artifact, use npm installation below or the manual release instructions in [`docs/INSTALLATION.md`](./docs/INSTALLATION.md).
43
43
 
44
- ### Option 2: Install with npm
44
+ ### Option 2: Install on Windows with PowerShell
45
+
46
+ PowerShell is the canonical Windows installer:
47
+
48
+ ```powershell
49
+ powershell -c "irm https://arashi.haphazard.dev/install.ps1 | iex"
50
+ ```
51
+
52
+ It verifies and installs `arashi.bin.exe`, the extensionless `arashi` wrapper for Git Bash, `arashi.ps1`, and `arashi.bat` from the same release. The default directory is `%USERPROFILE%\.arashi\bin`; the installer adds it to the persistent user PATH. It does not create or modify `.bashrc` or another shell profile. Open a new Git Bash window before running `arashi --version` so it inherits the PATH change.
53
+
54
+ ### Option 3: Install with npm
45
55
 
46
56
  ```bash
47
57
  npm install -g arashi
@@ -93,13 +103,17 @@ chmod +x arashi
93
103
  sudo mv arashi /usr/local/bin/arashi
94
104
  ```
95
105
 
96
- Windows (PowerShell):
106
+ Windows (PowerShell and Git Bash):
97
107
 
98
108
  ```powershell
99
- Invoke-WebRequest -Uri "https://github.com/corwinm/arashi/releases/latest/download/arashi-windows-x64.exe" -OutFile "arashi.exe"
100
- # Move arashi.exe to a folder on your PATH
109
+ # Download arashi-windows-x64.exe, arashi, arashi.ps1, arashi.bat,
110
+ # and arashi-checksums.txt from the same release.
111
+ # Verify all four payload files against arashi-checksums.txt.
112
+ # Rename arashi-windows-x64.exe to arashi.bin.exe and keep the four files together on PATH.
101
113
  ```
102
114
 
115
+ Windows manual installation requires `arashi-windows-x64.exe`, `arashi`, `arashi.ps1`, `arashi.bat`, and `arashi-checksums.txt` from the same release. Verify all four payload files, rename the executable to `arashi.bin.exe`, and keep the payload together on PATH.
116
+
103
117
  You can also build from source for local development:
104
118
 
105
119
  ```bash
@@ -117,12 +131,12 @@ Arashi currently provides these commands:
117
131
  - `arashi update [--check] [--dry-run] [--yes]`
118
132
  - `arashi add <git-url>`
119
133
  - `arashi clone [--all]`
120
- - `arashi create <branch> [--tmux|--sesh|--herdr]`
134
+ - `arashi create <branch> [--tab] [--tmux|--sesh|--herdr]`
121
135
  - `arashi list`
122
136
  - `arashi status`
123
137
  - `arashi remove <branch|path>`
124
138
  - `arashi prune [--dry-run]` - clean stale Git worktree metadata
125
- - `arashi switch [filter] [--repos|--all] [--cd|--no-cd] [--tmux|--sesh|--herdr] [--no-default-launch]`
139
+ - `arashi switch [filter] [--repos|--all] [--tab] [--cd|--no-cd] [--tmux|--sesh|--herdr] [--no-default-launch]`
126
140
  - `arashi shell init <bash|zsh|fish>`
127
141
  - `arashi shell install`
128
142
  - `arashi pull`
@@ -141,6 +155,7 @@ arashi create feature-auth-refresh
141
155
  arashi create feature-auth-refresh --launch
142
156
  arashi create feature-auth-refresh --tmux
143
157
  arashi create feature-auth-refresh --herdr
158
+ arashi create feature-auth-refresh --tab
144
159
  arashi create feature-auth-refresh --no-launch
145
160
  arashi shell install
146
161
  arashi status
@@ -151,11 +166,14 @@ arashi switch --repos docs # repo-name matching in child repos
151
166
  arashi switch --cd feature-auth-refresh # parent-shell cd when shell integration is active
152
167
  arashi switch --tmux feature-auth-refresh # force a new plain tmux window
153
168
  arashi switch --herdr feature-auth-refresh # open or focus a persistent Herdr workspace
169
+ arashi switch --tab feature-auth-refresh # request a true tab or managed equivalent
154
170
  arashi switch --no-default-launch # bypass configured sesh/Herdr mode once
155
171
  ```
156
172
 
157
173
  Explicit `--tmux` is a per-invocation launcher override for `create` and `switch`; it is not a persisted configuration mode. It requires an active tmux context whose `TMUX` value is non-empty after trimming, uses the selected worktree path as one argv-safe `tmux new-window -c` argument, and does not fall back to another launcher when the prerequisite or launch fails. On `create`, it implies both launch and switch, while validation failures occur before worktree mutation.
158
174
 
175
+ `--tab` is a CLI-only launch disposition for `create` and `switch`; it is never persisted. It requests a true terminal tab or documented managed-context equivalent, implies launch (and selection for `create`), overrides automatic parent-shell `cd`, and never degrades to a window or another launcher. Unsupported adapters fail with `TAB_DISPOSITION_UNSUPPORTED`; launch/preflight failures use `LAUNCH_FAILED`. Human-only tab launch is incompatible with `--json`.
176
+
159
177
  ### Managed Git ignore rules
160
178
 
161
179
  Configured workspaces keep `reposDir` and `worktreesDir` effectively ignored. Arashi asks Git
@@ -272,7 +290,7 @@ bindkey -s '^s' 'sesh connect $(arashi list | fzf)\n'
272
290
 
273
291
  You can also use `arashi switch --sesh` directly inside tmux to open the selected worktree in a new tmux window.
274
292
 
275
- `arashi switch` checks managed contexts in this order: tmux → Herdr → cmux → integrated IDE → Kitty. Managed Kitty selection requires both `KITTY_PID` and `KITTY_WINDOW_ID`; `TERM=xterm-kitty` alone remains only generic terminal evidence.
293
+ `arashi switch` checks managed contexts in this order: tmux → Herdr → cmux → integrated IDE → Kitty. Managed Kitty selection applies when any one of `KITTY_PID`, `KITTY_WINDOW_ID`, or `TERM=xterm-kitty` is present after normalization.
276
294
 
277
295
  Managed Kitty requires Kitty 0.43 or newer plus working `kitten @` remote control. Arashi reuses only its exact worktree marker and focuses that tab before launching a new session-backed tab. Once managed Kitty is selected, missing or unsupported tooling, denied remote control, duplicate markers, and validation failures are reported directly instead of falling back to another launcher.
278
296
 
package/bin/arashi CHANGED
@@ -14,23 +14,36 @@ done
14
14
  SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_SOURCE")" && pwd)"
15
15
  BINARY="$SCRIPT_DIR/arashi.bin"
16
16
 
17
- # Use platform-specific binary if main binary doesn't exist
17
+ # Use the Windows binary only with explicit Git-for-Windows/MSYS/Cygwin evidence.
18
+ # arashi.bin always retains precedence when both binaries are present.
18
19
  if [ ! -f "$BINARY" ]; then
19
20
  PLATFORM=$(uname -s | tr '[:upper:]' '[:lower:]')
20
21
  ARCH=$(uname -m)
21
-
22
- case "$PLATFORM-$ARCH" in
23
- darwin-arm64)
24
- BINARY="$SCRIPT_DIR/arashi-macos-arm64"
25
- ;;
26
- linux-x86_64)
27
- BINARY="$SCRIPT_DIR/arashi-linux-x64"
28
- ;;
29
- *)
30
- echo "Error: Unsupported platform $PLATFORM-$ARCH" >&2
31
- exit 1
32
- ;;
22
+ WINDOWS_SHELL="false"
23
+
24
+ case "${MSYSTEM:-}" in
25
+ MINGW*|MSYS*) WINDOWS_SHELL="true" ;;
33
26
  esac
27
+ case "$PLATFORM" in
28
+ mingw*|msys*|cygwin*) WINDOWS_SHELL="true" ;;
29
+ esac
30
+
31
+ if [ "$WINDOWS_SHELL" = "true" ]; then
32
+ BINARY="$SCRIPT_DIR/arashi.bin.exe"
33
+ else
34
+ case "$PLATFORM-$ARCH" in
35
+ darwin-arm64)
36
+ BINARY="$SCRIPT_DIR/arashi-macos-arm64"
37
+ ;;
38
+ linux-x86_64)
39
+ BINARY="$SCRIPT_DIR/arashi-linux-x64"
40
+ ;;
41
+ *)
42
+ echo "Error: Unsupported platform $PLATFORM-$ARCH" >&2
43
+ exit 1
44
+ ;;
45
+ esac
46
+ fi
34
47
  fi
35
48
 
36
49
  if [ ! -f "$BINARY" ]; then
@@ -49,7 +62,11 @@ for arg in "$@"; do
49
62
  esac
50
63
  continue
51
64
  ;;
52
- *) command="$arg"; break ;;
65
+ *)
66
+ if [ -z "$command" ]; then
67
+ command="$arg"
68
+ fi
69
+ ;;
53
70
  esac
54
71
  done
55
72
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arashi",
3
- "version": "1.23.0",
3
+ "version": "1.24.0",
4
4
  "description": "Git worktree manager for meta-repositories - The eye of the storm for your development workflow",
5
5
  "keywords": [
6
6
  "cli",