arashi 1.32.1 → 1.34.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.
package/README.md CHANGED
@@ -4,424 +4,105 @@
4
4
  [![CI](https://github.com/corwinm/arashi/actions/workflows/ci.yml/badge.svg)](https://github.com/corwinm/arashi/actions/workflows/ci.yml)
5
5
  [![License](https://img.shields.io/github/license/corwinm/arashi.svg)](https://github.com/corwinm/arashi/blob/main/LICENSE)
6
6
 
7
- Arashi is a Git worktree manager for meta-repositories.
7
+ Arashi is a Git worktree manager for meta-repositories. It coordinates related repositories in one feature workspace while each repository keeps its own history, CI, and pull requests.
8
8
 
9
- It keeps related repositories aligned while you work on a feature branch across a shared workspace.
10
-
11
- Arashi makes a polyrepo work like a monorepo during development, while every repository keeps its own history, CI, and pull requests.
12
-
13
- [Documentation](https://arashi.haphazard.dev)
9
+ [Documentation](https://arashi.haphazard.dev) · [Command reference](https://arashi.haphazard.dev/commands/) · [Workflow guides](https://arashi.haphazard.dev/workflows/)
14
10
 
15
11
  ## Installation
16
12
 
17
- ### Option 1: Install with curl (official direct install)
18
-
19
- Prerequisites:
20
-
21
- - `curl`
22
- - `bash`
23
- - A SHA-256 tool (`shasum`, `sha256sum`, or `openssl`)
13
+ macOS and Linux:
24
14
 
25
15
  ```bash
26
16
  curl -fsSL https://arashi.haphazard.dev/install | bash
27
17
  ```
28
18
 
29
- Install a specific release:
30
-
31
- ```bash
32
- curl -fsSL https://arashi.haphazard.dev/install | ARASHI_VERSION=1.4.0 bash
33
- ```
34
-
35
- Verify install:
36
-
37
- ```bash
38
- aw --version
39
- ```
40
-
41
- By default, the installer places `arashi` in `~/.arashi/bin`, adds that path to your shell config, and in interactive installs offers to enable shell integration for `aw switch --cd`.
42
- Use `aw` for documented workflows. The `arashi` executable remains supported for existing scripts and workflows, and both names run the same implementation. Product names, configuration, environment variables, packages, and native binaries retain their established Arashi names.
43
-
44
- The installer transaction verifies that both executable entrypoints report the same non-empty version before declaring success.
45
-
46
- 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).
47
-
48
- ### Option 2: Install on Windows with PowerShell
49
-
50
- PowerShell is the canonical Windows installer:
19
+ Windows PowerShell:
51
20
 
52
21
  ```powershell
53
22
  powershell -c "irm https://arashi.haphazard.dev/install.ps1 | iex"
54
23
  ```
55
24
 
56
- It verifies and installs one `arashi.bin.exe` plus `arashi`/`aw` wrappers for Git Bash, `arashi.ps1`/`aw.ps1`, and `arashi.bat`/`aw.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 verifying the installed version so it inherits the PATH change.
25
+ Open a new terminal after the Windows installer so it inherits the updated user `PATH`.
57
26
 
58
- ### Option 3: Install with npm
27
+ With npm:
59
28
 
60
29
  ```bash
61
30
  npm install -g arashi
62
31
  ```
63
32
 
64
- The npm package is script-free: it does not require package-manager lifecycle scripts or `postinstall` approval. It maps both npm bins to the same lightweight JavaScript entrypoint, then downloads the matching platform binary on first use through either name.
65
-
66
- To preinstall the binary explicitly, run:
67
-
68
- ```bash
69
- aw install
70
- ```
71
-
72
- To check for package updates or refresh the matching platform binary, run:
73
-
74
- ```bash
75
- aw update --check
76
- aw update --dry-run
77
- aw update --yes
78
- ```
79
-
80
- `aw update` can update npm-managed installs when it can confidently detect the package manager, including npm, pnpm, Yarn, Bun, and Vite+ (`vp update -g arashi`). For official direct-installer installs, `aw update --yes` reruns the platform installer against the current binary directory: the POSIX curl installer on macOS/Linux and a deferred PowerShell installer on Windows after the current Arashi process exits.
81
-
82
- Verify install:
33
+ Verify the installation:
83
34
 
84
35
  ```bash
85
36
  aw --version
86
37
  ```
87
38
 
88
- If npm is unavailable or binary installation fails, use the curl installer command above or the manual release instructions in [`docs/INSTALLATION.md`](./docs/INSTALLATION.md).
89
-
90
- ### Manual install from GitHub Releases
39
+ `aw` is the preferred command name. `arashi` remains available for existing scripts and workflows. See the [installation guide](./docs/INSTALLATION.md) for version pinning, manual installation, and troubleshooting, or the [`update` command guide](https://arashi.haphazard.dev/commands/update/) for upgrades.
91
40
 
92
- If you prefer not to use npm, download a platform binary from [GitHub Releases](https://github.com/corwinm/arashi/releases) and place it on your `PATH`.
41
+ ## Quick start
93
42
 
94
- macOS (Apple Silicon):
43
+ From the repository that will coordinate your projects:
95
44
 
96
45
  ```bash
97
- curl -L https://github.com/corwinm/arashi/releases/latest/download/arashi-macos-arm64 -o arashi.bin
98
- curl -L https://github.com/corwinm/arashi/releases/latest/download/arashi -o arashi
99
- curl -L https://github.com/corwinm/arashi/releases/latest/download/aw -o aw
100
- chmod +x arashi.bin arashi aw
101
- sudo install -m 0755 arashi.bin arashi aw /usr/local/bin/
102
- ```
103
-
104
- Linux (x64):
105
-
106
- ```bash
107
- curl -L https://github.com/corwinm/arashi/releases/latest/download/arashi-linux-x64 -o arashi.bin
108
- curl -L https://github.com/corwinm/arashi/releases/latest/download/arashi -o arashi
109
- curl -L https://github.com/corwinm/arashi/releases/latest/download/aw -o aw
110
- chmod +x arashi.bin arashi aw
111
- sudo install -m 0755 arashi.bin arashi aw /usr/local/bin/
112
- ```
113
-
114
- Windows (PowerShell and Git Bash):
115
-
116
- ```powershell
117
- # Download arashi-windows-x64.exe, arashi, arashi.ps1, arashi.bat,
118
- # aw, aw.ps1, aw.bat,
119
- # and arashi-checksums.txt from the same release.
120
- # Verify all seven payload files against arashi-checksums.txt.
121
- # Rename arashi-windows-x64.exe to arashi.bin.exe and keep the seven files together on PATH.
122
- ```
123
-
124
- Windows manual installation requires `arashi-windows-x64.exe`, `arashi`, `arashi.ps1`, `arashi.bat`, `aw`, `aw.ps1`, `aw.bat`, and `arashi-checksums.txt` from the same release. Verify all seven payload files, rename the executable to `arashi.bin.exe`, and keep the payload together on PATH. Manual release installations do not create the direct installer's ownership ledger; deliberately move or remove the manual payload before later using the direct installer.
125
-
126
- You can also build from source for local development. Development is pinned to Node.js 24.18.0, which satisfies pnpm 11's Node.js 22.13 minimum, and pnpm 11.20.0; nvm users can select the repository's development runtime with `nvm use`.
127
-
128
- ```bash
129
- nvm use # Optional; reads .nvmrc
130
- pnpm install
131
- pnpm run build
132
- ```
133
-
134
- ## Command Surface
135
-
136
- Arashi currently provides these commands:
137
-
138
- - `aw init`
139
- - [`aw init --zero-config`](docs/standalone.md) for a single repository with `.worktrees/<branch>` paths and no persisted Arashi configuration
140
- - `aw install`
141
- - `aw update [--check] [--dry-run] [--yes]`
142
- - `aw add <git-url>`
143
- - `aw clone [--all] [--base <branch>] [--repo-base <repository=branch>]`
144
- - `aw create <branch> [--base <branch>] [--repo-base <repository=branch>] [--tab] [--tmux|--sesh|--herdr]`
145
- - `aw list`
146
- - `aw status`
147
- - `aw remove <branch|path>`
148
- - `aw prune [--dry-run]` - clean stale Git worktree metadata
149
- - `aw switch [filter] [--repos|--all] [--tab] [--cd|--launch] [--tmux|--sesh|--herdr] [--ignore-configured-launcher]`
150
- - `aw completion <bash|zsh|fish>`
151
- - `aw shell init <bash|zsh|fish>`
152
- - `aw shell install`
153
- - `aw pull`
154
- - `aw push [--set-upstream] [--dry-run] [--only <repo>] [--json]`
155
- - `aw sync`
156
- - `aw setup [--only <repo>] [--verbose]`
157
-
158
- ## Quick Example
159
-
160
- ```bash
161
- aw init # repository-local ignore rules (default)
162
- aw init --ignore-scope tracked # opt in to a shared .gitignore block
46
+ aw init
163
47
  aw add git@github.com:your-org/frontend.git
164
48
  aw add git@github.com:your-org/backend.git
165
49
  aw create feature-auth-refresh
166
- aw create feature-auth-refresh --base feature/auth
167
- aw create feature-auth-refresh --repo-base @meta=develop --repo-base frontend=release/2.x
168
- aw clone --all --base main --repo-base frontend=release/2.x
169
- aw create feature-auth-refresh --launch
170
- aw create feature-auth-refresh --tmux
171
- aw create feature-auth-refresh --herdr
172
- aw create feature-auth-refresh --tab
173
- aw create feature-auth-refresh --no-launch
174
- aw shell install
175
- aw status
176
- aw switch feature-auth-refresh # parent repo worktrees
177
- aw switch --repos feature-auth-refresh # child repo worktrees in current workspace
178
- aw switch --all feature-auth-refresh # all repos
179
- aw switch --repos docs # repo-name matching in child repos
180
- aw switch --cd feature-auth-refresh # parent-shell cd when shell integration is active
181
- aw switch --launch feature-auth-refresh # force launch while preserving a configured launcher
182
- aw switch --tmux feature-auth-refresh # force a new plain tmux window
183
- aw switch --herdr feature-auth-refresh # open or focus a persistent Herdr workspace
184
- aw switch --tab feature-auth-refresh # request a true tab or managed equivalent
185
- aw switch --ignore-configured-launcher # bypass configured sesh/Herdr mode once
186
- aw switch --launch --ignore-configured-launcher # force generic automatic launch
187
- ```
188
-
189
- ### Add from a linked parent worktree
190
-
191
- When `aw add` runs from an active linked parent worktree, Arashi creates one canonical clone in the parent main checkout and leaves it on the child default branch. It then creates the active child as a linked worktree on the coordinated branch and updates only the active parent configuration. Direct-main and configured-bare adds keep their existing single-placement behavior. See the [add command guide](https://arashi.haphazard.dev/commands/add/) for branch, managed-ignore, JSON, and rollback details.
192
-
193
- 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.
194
-
195
- `--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. For switch, it bypasses configured `sesh` or `herdr` launch defaults; for create, it bypasses configured generic or editor-scoped launch defaults. An explicit launcher selector remains authoritative. Unsupported adapters fail with `TAB_DISPOSITION_UNSUPPORTED`; launch/preflight failures use `LAUNCH_FAILED`. Human-only tab launch is incompatible with `--json`.
196
-
197
- ### Managed Git ignore rules
198
-
199
- Configured workspaces keep `reposDir` and `worktreesDir` effectively ignored. Arashi asks Git
200
- first, so an existing tracked `.gitignore`, repository-local `.git/info/exclude`, or configured
201
- global excludes rule is honored without duplication. Missing safe repository-relative rules use
202
- the common repository's local exclude file by default, including when a command runs in a linked
203
- worktree.
204
-
205
- Use `aw init --ignore-scope tracked` when the team wants Arashi-owned rules committed in the
206
- workspace `.gitignore`. Use `aw init --ignore-scope none` for a fully manual workflow; Arashi
207
- will warn about unignored managed paths but will not edit ignore files. Running
208
- `aw init --ignore-scope local` resets that clone-local preference without recreating an
209
- existing workspace. The explicit `tracked` or `none` preference is stored only in local Git config
210
- as `arashi.ignoreScope`; Arashi never creates or modifies global Git ignore configuration.
211
-
212
- `init`, `pull`, `clone`, `add`, and `create` reconcile the same owned rules before materializing
213
- configured repositories or worktrees. `doctor` reports missing, unsafe, invalid, or stale managed
214
- ignore state without changing it.
215
-
216
- ## Workflow Guides
217
-
218
- Use the docs site workflow guides when you want setup guidance by outcome instead of by individual command.
219
-
220
- For contributors working on Arashi itself, the project planning workflow in the `arashi-arashi` meta-repo now uses OpenSpec. Older SpecKit-oriented references in legacy planning artifacts are historical context only.
221
-
222
- - Hooks and configuration defaults: [arashi.haphazard.dev/workflows/hooks-and-config](https://arashi.haphazard.dev/workflows/hooks-and-config/)
223
- - Integrations for Herdr, VSCode, tmux, and `tmux` plus `sesh`: [arashi.haphazard.dev/workflows](https://arashi.haphazard.dev/workflows/)
224
- - Agent-assisted and spec-driven change flow: [arashi.haphazard.dev/workflows/agents-and-specs](https://arashi.haphazard.dev/workflows/agents-and-specs/)
225
-
226
- ## Shell Integration
227
-
228
- Use shell integration for parent-shell directory switching and native tab completion. Bash, Zsh, and Fish are supported through both `arashi` and `aw`.
229
-
230
- The official curl installer can offer this automatically. If you skip it or use npm, install it for the active shell with:
231
-
232
- ```bash
233
- aw shell install
234
50
  ```
235
51
 
236
- `aw shell install` adds a managed pair to the active shell startup file: the parent-shell wrapper first and completion activation second. Repeating the command is idempotent and upgrades older wrapper-only blocks.
237
-
238
- For manual setup, activate the wrapper and completion independently:
52
+ Arashi creates matching worktrees for the configured repositories. From there, use:
239
53
 
240
54
  ```bash
241
- # Bash
242
- eval "$(command aw shell init bash)"
243
- source <(command aw completion bash)
244
-
245
- # Zsh
246
- eval "$(command aw shell init zsh)"
247
- source <(command aw completion zsh)
248
-
249
- # Fish
250
- command aw shell init fish | source
251
- command aw completion fish | source
55
+ aw status # inspect the coordinated workspace
56
+ aw switch feature-auth-refresh # return to a worktree
57
+ aw pull # update repositories
58
+ aw push --set-upstream # publish branches
59
+ aw remove feature-auth-refresh # remove the coordinated worktrees
252
60
  ```
253
61
 
254
- `aw shell init <shell>` remains wrapper-only and defines both parent-shell functions, unless an unrelated `aw` alias or function already owns that shell name. `aw completion <shell>` registers the same completion model for both executable names and emits only deterministic sourceable shell code, including on npm first use when the platform binary must be installed.
255
-
256
- Completion covers commands, aliases, options, finite choices, conflicts, and positional boundaries. In an Arashi workspace it also resolves configured repository and group selector segments, switch/remove worktrees and paths, and move source/target references. Dynamic lookup is local and read-only, silent on unavailable or broken metadata, and limited to a 200 ms whole-query budget; it performs no network requests, hooks, prompts, workspace mutations, or child operations. Static completion remains available outside a workspace.
257
-
258
- Once installed, you can use `aw switch --cd <filter>` for one-off parent-shell switching or set `.arashi/config.json` `defaults.switch.mode` to `"cd"` or contextual `"auto"`. The canonical modes are `auto` | `cd` | `launch` | `sesh` | `herdr`.
259
-
260
- If shell integration is inactive, `aw switch --cd` warns and skips launch fallback for that invocation.
261
-
262
- For automated installs, set `ARASHI_SHELL_INTEGRATION=yes` to enable it without prompting or `ARASHI_SHELL_INTEGRATION=no` to skip it.
62
+ For a single repository without persisted Arashi configuration, use `aw init --zero-config`. See the [standalone workflow](https://arashi.haphazard.dev/workflows/standalone/).
263
63
 
264
- ## Hooks
64
+ ## Core commands
265
65
 
266
- Arashi can run file-backed or configured inline lifecycle hooks during `aw create` and
267
- `aw remove`. Inline workspace values live only at root `hooks.scripts.<lifecycle>`; repository
268
- values live only at `repos.<name>.hooks.<lifecycle>`. Use inline config for short reviewable commands
269
- and native files for substantial scripts. One inline/file source may own a logical location; a
270
- same-location collision fails preflight instead of running both.
66
+ | Command | Purpose |
67
+ | --------------------------------- | -------------------------------- |
68
+ | `aw init` | Initialize a workspace |
69
+ | `aw add` | Add a repository |
70
+ | `aw clone` | Clone configured repositories |
71
+ | `aw configure` | Edit existing workspace settings |
72
+ | `aw create` | Create coordinated worktrees |
73
+ | `aw list` | List worktrees |
74
+ | `aw status` | Show repository status |
75
+ | `aw switch` | Select and open a worktree |
76
+ | `aw pull` / `aw push` / `aw sync` | Synchronize repositories |
77
+ | `aw setup` | Run repository setup steps |
78
+ | `aw remove` / `aw prune` | Clean up worktrees and metadata |
79
+ | `aw doctor` | Diagnose workspace problems |
80
+ | `aw update` | Update Arashi |
271
81
 
272
- Configured create uses workspace `pre-create`/`post-create` plus repository-specific create locations.
273
- Configured remove evaluates repository, workspace, user-global targeted, and user-global shared scopes
274
- once per target repository. `--no-hooks` is create-only; `--no-hook-input` applies to both commands.
275
- Standalone mode remains file-only and activates only targeted and shared user-global hooks.
82
+ Run `aw --help`, `aw <command> --help`, or use the [complete command reference](https://arashi.haphazard.dev/commands/) for options and examples.
276
83
 
277
- Hook failures participate in create rollback or remove finalization. Inline and file sources share the
278
- configured timeout, input, JSON isolation, dry-run, and ordered outcome policies. Public records expose
279
- source kind/owner metadata but never disclose configured snippet text.
84
+ ## Shell integration
280
85
 
281
- See [`docs/configuration.md`](./docs/configuration.md#inline-lifecycle-hook-configuration) for values and
282
- [`docs/hooks.md`](./docs/hooks.md) for exact lookup, lifecycle, environment, and automation behavior.
283
-
284
- ## Workflow Shortcuts
285
-
286
- Use `aw list` with `fzf` and optional keybinds to speed up daily navigation.
287
-
288
- ### Jump to a worktree (`cd`)
289
-
290
- ```bash
291
- # One-off jump
292
- cd "$(aw list | fzf)"
293
- ```
294
-
295
- ```bash
296
- # Bash keybind (Ctrl+G)
297
- bind '"\C-g":"cd \$(aw list | fzf)\n"'
298
- ```
299
-
300
- ```zsh
301
- # Zsh keybind (Ctrl+G)
302
- bindkey -s '^g' 'cd $(aw list | fzf)\n'
303
- ```
304
-
305
- ### Open or switch tmux sessions with `sesh`
86
+ Install shell integration for parent-shell directory switching and completion in Bash, Zsh, or Fish:
306
87
 
307
88
  ```bash
308
- # One-off session connect
309
- sesh connect "$(aw list | fzf)"
310
- ```
311
-
312
- ```bash
313
- # Bash keybind (Ctrl+S)
314
- bind '"\C-s":"sesh connect \$(aw list | fzf)\n"'
315
- ```
316
-
317
- ```zsh
318
- # Zsh keybind (Ctrl+S)
319
- bindkey -s '^s' 'sesh connect $(aw list | fzf)\n'
320
- ```
321
-
322
- You can also use `aw switch --sesh` directly inside tmux to open the selected worktree in a new tmux window.
323
-
324
- `aw 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.
325
-
326
- 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.
327
-
328
- `aw create --launch` and `defaults.create.launch: "auto"` use the same managed Kitty behavior. If that post-create launch fails, Arashi exits nonzero but preserves the successfully created worktree and reports the launch as partial success. Fix the launcher problem and use `aw switch`; do not retry creation for the same branch.
329
-
330
- ### Fast remove selection
331
-
332
- ```bash
333
- # Select and remove a worktree quickly
334
- aw remove -f "$(aw list | fzf)"
335
- ```
336
-
337
- If you prefer the term `delete`, create a shell alias:
338
-
339
- ```bash
340
- alias arashi-delete='aw remove -f'
341
- ```
342
-
343
- ## Configuration Schema
344
-
345
- ### Configured worktree files
346
-
347
- Configured repositories can copy isolated files or create native symlinks for intentionally shared state when coordinated worktrees are created. See [Worktree file materialization](docs/configuration.md#worktree-file-materialization) for direct `copy`/`symlink` arrays, Git-primary sourcing, lifecycle order, safety rules, dry-run previews, and doctor diagnostics.
348
-
349
- ## Configuration Schema
350
-
351
- Arashi publishes a JSON Schema for `.arashi/config.json` so editors can validate and autocomplete your config.
352
-
353
- - Stable URL: `https://unpkg.com/arashi/schema/config.schema.json`
354
- - Version-pinned URL: `https://unpkg.com/arashi@1.7.0/schema/config.schema.json`
355
-
356
- Example config header:
357
-
358
- ```json
359
- {
360
- "$schema": "https://unpkg.com/arashi/schema/config.schema.json",
361
- "version": "1.0.0",
362
- "reposDir": "./repos",
363
- "defaults": {
364
- "create": {
365
- "switch": true,
366
- "launch": "none"
367
- },
368
- "editors": {
369
- "vscode": {
370
- "create": {
371
- "launch": "sesh"
372
- }
373
- }
374
- },
375
- "switch": {
376
- "mode": "sesh"
377
- }
378
- },
379
- "repos": {}
380
- }
89
+ aw shell install
381
90
  ```
382
91
 
383
- `defaults.switch.mode` accepts `auto` | `cd` | `launch` | `sesh` | `herdr`. Contextual `auto` checks strict managed contexts in the order tmux → Herdr → cmux → integrated IDE → managed Kitty, then uses parent-shell `cd` when shell integration is active, and otherwise follows terminal/platform launch fallback. An absent mode preserves the built-in automatic `launch` behavior rather than newly preferring `cd`.
384
-
385
- Explicit launcher flags take precedence over `--cd` / `--launch`, which take precedence over the configured mode and automatic context detection. `--launch` forces launch while preserving a configured launcher. `--ignore-configured-launcher` bypasses only configured `sesh` or `herdr`; combine both canonical flags to force generic automatic launch. `--herdr` remains available on both `create` and `switch`; Herdr launch uses `herdr worktree open` with the Git-resolved non-bare main checkout and selected worktree.
386
-
387
- Legacy switch-only `launchMode` and `launch_mode` fields remain readable for a bounded compatibility window. Arashi warns with the exact replacement `defaults.switch.mode` on stderr; migrate promptly. Ambiguous `cd` plus an explicit legacy launcher and conflicting legacy aliases are rejected.
388
-
389
- Use `defaults.create` for terminal `aw create` behavior. Use `defaults.editors.<host>.create` for editor-specific overrides such as VS Code extension create flows. Supported hosts are `vscode`, `cursor`, and `kiro`. Each scope has one canonical `launch` choice: `none` | `auto` | `sesh` | `herdr`. `switch` stays independent, while any enabled launch implies switch handling for the newly created primary worktree.
92
+ You can then use `aw switch --cd <filter>` to change the current shell's directory. See the [shell command guide](https://arashi.haphazard.dev/commands/shell/) for manual setup.
390
93
 
391
- Create precedence is: reject `--sesh` plus `--herdr`; then explicit `--sesh` / `--herdr`; `--tab` or `--launch`; `--no-launch`; the matching configured scope; and built-in `none`. `--tab` bypasses the matching configured scope unless an explicit launcher selector is present. An editor-hosted invocation does not fall back to terminal or another editor scope.
94
+ ## More documentation
392
95
 
393
- Legacy create booleans plus `launchMode` / `launch_mode` remain readable for a bounded compatibility window. Accepted combinations warn on stderr with the exact canonical replacement and do not rewrite the file. Disabled launch plus a launcher, conflicting aliases, and conflicting canonical/legacy choices are rejected before workspace mutation.
394
-
395
- Defaults precedence for unrelated switch behavior remains unchanged.
396
-
397
- ## skills.sh Integration
398
-
399
- Arashi also ships a dedicated `skills.sh` integration package for guided installation, workflow examples, and troubleshooting.
400
-
401
- - Skill repository: [`repos/arashi-skills`](../arashi-skills/README.md)
402
- - Canonical skill manifest: [`repos/arashi-skills/skills/arashi/SKILL.md`](../arashi-skills/skills/arashi/SKILL.md)
403
- - Workflow catalog: [`repos/arashi-skills/skills/arashi/references/workflows.md`](../arashi-skills/skills/arashi/references/workflows.md)
404
- - Session shortcuts: [`repos/arashi-skills/skills/arashi/references/session-shortcuts.md`](../arashi-skills/skills/arashi/references/session-shortcuts.md)
405
-
406
- ## Documentation
407
-
408
- - Installation details: [`docs/INSTALLATION.md`](./docs/INSTALLATION.md)
409
- - Configuration details: [`docs/configuration.md`](./docs/configuration.md)
410
- - Clone command details: [`docs/commands/clone.md`](./docs/commands/clone.md)
411
- - Hook behavior: [`docs/hooks.md`](./docs/hooks.md)
412
- - Workflow guides: [https://arashi.haphazard.dev/workflows/](https://arashi.haphazard.dev/workflows/)
413
- - Shell integration details: [`docs/commands/shell.md`](./docs/commands/shell.md)
414
- - Setup command details: [`docs/commands/setup.md`](./docs/commands/setup.md)
415
- - Switch command details: [`docs/commands/switch.md`](./docs/commands/switch.md)
416
- - Remove command details: [`docs/commands/remove.md`](./docs/commands/remove.md)
417
- - Push command details: [`docs/commands/push.md`](./docs/commands/push.md)
418
- - FZF integration: [`docs/FZF_COMPATIBILITY.md`](./docs/FZF_COMPATIBILITY.md)
96
+ - [Getting started](https://arashi.haphazard.dev/getting-started/)
97
+ - [Configuration](https://arashi.haphazard.dev/workflows/config/)
98
+ - [Hooks](https://arashi.haphazard.dev/workflows/hooks/)
99
+ - [Editor and terminal integrations](https://arashi.haphazard.dev/workflows/)
100
+ - [JSON automation](https://arashi.haphazard.dev/workflows/json-automation/)
101
+ - [Local configuration reference](./docs/configuration.md)
419
102
 
420
103
  ## Contributing
421
104
 
422
- Use the canonical guide: [`CONTRIBUTING.md`](./CONTRIBUTING.md).
423
-
424
- For specs and planning workflow, see the specs repository: [github.com/corwinm/arashi-arashi](https://github.com/corwinm/arashi-arashi).
105
+ See [`CONTRIBUTING.md`](./CONTRIBUTING.md). Planning and specifications live in [corwinm/arashi-arashi](https://github.com/corwinm/arashi-arashi).
425
106
 
426
107
  ## License
427
108
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arashi",
3
- "version": "1.32.1",
3
+ "version": "1.34.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",
@@ -110,5 +110,5 @@
110
110
  "engines": {
111
111
  "node": ">=18.0.0"
112
112
  },
113
- "packageManager": "pnpm@11.20.0"
113
+ "packageManager": "pnpm@11.22.0"
114
114
  }
@@ -26,7 +26,7 @@
26
26
  "type": "string"
27
27
  },
28
28
  "baseBranch": {
29
- "description": "Workspace base branch shared by configured create and clone",
29
+ "description": "Workspace base branch shared by configured base-aware commands",
30
30
  "minLength": 1,
31
31
  "pattern": "^(?!HEAD$)(?!origin/(?:HEAD$|-))(?![-/.])(?!.*(?:/\\.|//|\\.\\.|@\\{))(?!.*\\.lock(?:/|$))(?!.*[/.]$)[^\\u0000-\\u0020\\u007F~^:?*\\[\\\\]+$",
32
32
  "type": "string"
@@ -98,12 +98,6 @@
98
98
  "CreateCommandDefaults": {
99
99
  "additionalProperties": false,
100
100
  "properties": {
101
- "baseBranch": {
102
- "description": "Default base branch for configured create invocations",
103
- "minLength": 1,
104
- "pattern": "^(?!HEAD$)(?!origin/(?:HEAD$|-))(?![-/.])(?!.*(?:/\\.|//|\\.\\.|@\\{))(?!.*\\.lock(?:/|$))(?!.*[/.]$)[^\\u0000-\\u0020\\u007F~^:?*\\[\\\\]+$",
105
- "type": "string"
106
- },
107
101
  "launch": {
108
102
  "$ref": "#/definitions/CreateLaunchMode",
109
103
  "description": "Post-create launch choice; omitted preserves built-in no-launch behavior"
@@ -223,7 +217,7 @@
223
217
  "description": "Meta-repository-specific configuration.",
224
218
  "properties": {
225
219
  "baseBranch": {
226
- "description": "Meta-repository-specific base branch for configured create",
220
+ "description": "Meta-repository-specific base branch for configured base-aware commands",
227
221
  "minLength": 1,
228
222
  "pattern": "^(?!HEAD$)(?!origin/(?:HEAD$|-))(?![-/.])(?!.*(?:/\\.|//|\\.\\.|@\\{))(?!.*\\.lock(?:/|$))(?!.*[/.]$)[^\\u0000-\\u0020\\u007F~^:?*\\[\\\\]+$",
229
223
  "type": "string"
@@ -236,7 +230,7 @@
236
230
  "description": "Configuration for a single repository",
237
231
  "properties": {
238
232
  "baseBranch": {
239
- "description": "Repository-specific base branch for configured create and clone",
233
+ "description": "Repository-specific base branch for configured base-aware commands",
240
234
  "minLength": 1,
241
235
  "pattern": "^(?!HEAD$)(?!origin/(?:HEAD$|-))(?![-/.])(?!.*(?:/\\.|//|\\.\\.|@\\{))(?!.*\\.lock(?:/|$))(?!.*[/.]$)[^\\u0000-\\u0020\\u007F~^:?*\\[\\\\]+$",
242
236
  "type": "string"