arashi 1.32.0 → 1.33.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 +86 -84
- package/package.json +1 -1
- package/schema/config.schema.json +30 -7
package/README.md
CHANGED
|
@@ -35,13 +35,13 @@ curl -fsSL https://arashi.haphazard.dev/install | ARASHI_VERSION=1.4.0 bash
|
|
|
35
35
|
Verify install:
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
|
-
|
|
38
|
+
aw --version
|
|
39
39
|
```
|
|
40
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 `
|
|
42
|
-
|
|
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
43
|
|
|
44
|
-
The installer transaction verifies
|
|
44
|
+
The installer transaction verifies that both executable entrypoints report the same non-empty version before declaring success.
|
|
45
45
|
|
|
46
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
47
|
|
|
@@ -53,7 +53,7 @@ PowerShell is the canonical Windows installer:
|
|
|
53
53
|
powershell -c "irm https://arashi.haphazard.dev/install.ps1 | iex"
|
|
54
54
|
```
|
|
55
55
|
|
|
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
|
|
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.
|
|
57
57
|
|
|
58
58
|
### Option 3: Install with npm
|
|
59
59
|
|
|
@@ -66,23 +66,23 @@ The npm package is script-free: it does not require package-manager lifecycle sc
|
|
|
66
66
|
To preinstall the binary explicitly, run:
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
|
-
|
|
69
|
+
aw install
|
|
70
70
|
```
|
|
71
71
|
|
|
72
72
|
To check for package updates or refresh the matching platform binary, run:
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
aw update --check
|
|
76
|
+
aw update --dry-run
|
|
77
|
+
aw update --yes
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
-
`
|
|
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
81
|
|
|
82
82
|
Verify install:
|
|
83
83
|
|
|
84
84
|
```bash
|
|
85
|
-
|
|
85
|
+
aw --version
|
|
86
86
|
```
|
|
87
87
|
|
|
88
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).
|
|
@@ -135,58 +135,60 @@ pnpm run build
|
|
|
135
135
|
|
|
136
136
|
Arashi currently provides these commands:
|
|
137
137
|
|
|
138
|
-
- `
|
|
139
|
-
- [`
|
|
140
|
-
- `
|
|
141
|
-
- `
|
|
142
|
-
- `
|
|
143
|
-
- `
|
|
144
|
-
- `
|
|
145
|
-
- `
|
|
146
|
-
- `
|
|
147
|
-
- `
|
|
148
|
-
- `
|
|
149
|
-
- `
|
|
150
|
-
- `
|
|
151
|
-
- `
|
|
152
|
-
- `
|
|
153
|
-
- `
|
|
154
|
-
- `
|
|
155
|
-
- `
|
|
156
|
-
- `
|
|
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
157
|
|
|
158
158
|
## Quick Example
|
|
159
159
|
|
|
160
160
|
```bash
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
161
|
+
aw init # repository-local ignore rules (default)
|
|
162
|
+
aw init --ignore-scope tracked # opt in to a shared .gitignore block
|
|
163
|
+
aw add git@github.com:your-org/frontend.git
|
|
164
|
+
aw add git@github.com:your-org/backend.git
|
|
165
|
+
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
|
|
185
187
|
```
|
|
186
188
|
|
|
187
189
|
### Add from a linked parent worktree
|
|
188
190
|
|
|
189
|
-
When `
|
|
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.
|
|
190
192
|
|
|
191
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.
|
|
192
194
|
|
|
@@ -200,10 +202,10 @@ global excludes rule is honored without duplication. Missing safe repository-rel
|
|
|
200
202
|
the common repository's local exclude file by default, including when a command runs in a linked
|
|
201
203
|
worktree.
|
|
202
204
|
|
|
203
|
-
Use `
|
|
204
|
-
workspace `.gitignore`. Use `
|
|
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
|
|
205
207
|
will warn about unignored managed paths but will not edit ignore files. Running
|
|
206
|
-
`
|
|
208
|
+
`aw init --ignore-scope local` resets that clone-local preference without recreating an
|
|
207
209
|
existing workspace. The explicit `tracked` or `none` preference is stored only in local Git config
|
|
208
210
|
as `arashi.ignoreScope`; Arashi never creates or modifies global Git ignore configuration.
|
|
209
211
|
|
|
@@ -228,41 +230,41 @@ Use shell integration for parent-shell directory switching and native tab comple
|
|
|
228
230
|
The official curl installer can offer this automatically. If you skip it or use npm, install it for the active shell with:
|
|
229
231
|
|
|
230
232
|
```bash
|
|
231
|
-
|
|
233
|
+
aw shell install
|
|
232
234
|
```
|
|
233
235
|
|
|
234
|
-
`
|
|
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.
|
|
235
237
|
|
|
236
238
|
For manual setup, activate the wrapper and completion independently:
|
|
237
239
|
|
|
238
240
|
```bash
|
|
239
241
|
# Bash
|
|
240
|
-
eval "$(command
|
|
241
|
-
source <(command
|
|
242
|
+
eval "$(command aw shell init bash)"
|
|
243
|
+
source <(command aw completion bash)
|
|
242
244
|
|
|
243
245
|
# Zsh
|
|
244
|
-
eval "$(command
|
|
245
|
-
source <(command
|
|
246
|
+
eval "$(command aw shell init zsh)"
|
|
247
|
+
source <(command aw completion zsh)
|
|
246
248
|
|
|
247
249
|
# Fish
|
|
248
|
-
command
|
|
249
|
-
command
|
|
250
|
+
command aw shell init fish | source
|
|
251
|
+
command aw completion fish | source
|
|
250
252
|
```
|
|
251
253
|
|
|
252
|
-
`
|
|
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.
|
|
253
255
|
|
|
254
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.
|
|
255
257
|
|
|
256
|
-
Once installed, you can use `
|
|
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`.
|
|
257
259
|
|
|
258
|
-
If shell integration is inactive, `
|
|
260
|
+
If shell integration is inactive, `aw switch --cd` warns and skips launch fallback for that invocation.
|
|
259
261
|
|
|
260
262
|
For automated installs, set `ARASHI_SHELL_INTEGRATION=yes` to enable it without prompting or `ARASHI_SHELL_INTEGRATION=no` to skip it.
|
|
261
263
|
|
|
262
264
|
## Hooks
|
|
263
265
|
|
|
264
|
-
Arashi can run file-backed or configured inline lifecycle hooks during `
|
|
265
|
-
`
|
|
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
|
|
266
268
|
values live only at `repos.<name>.hooks.<lifecycle>`. Use inline config for short reviewable commands
|
|
267
269
|
and native files for substantial scripts. One inline/file source may own a logical location; a
|
|
268
270
|
same-location collision fails preflight instead of running both.
|
|
@@ -281,61 +283,61 @@ See [`docs/configuration.md`](./docs/configuration.md#inline-lifecycle-hook-conf
|
|
|
281
283
|
|
|
282
284
|
## Workflow Shortcuts
|
|
283
285
|
|
|
284
|
-
Use `
|
|
286
|
+
Use `aw list` with `fzf` and optional keybinds to speed up daily navigation.
|
|
285
287
|
|
|
286
288
|
### Jump to a worktree (`cd`)
|
|
287
289
|
|
|
288
290
|
```bash
|
|
289
291
|
# One-off jump
|
|
290
|
-
cd "$(
|
|
292
|
+
cd "$(aw list | fzf)"
|
|
291
293
|
```
|
|
292
294
|
|
|
293
295
|
```bash
|
|
294
296
|
# Bash keybind (Ctrl+G)
|
|
295
|
-
bind '"\C-g":"cd \$(
|
|
297
|
+
bind '"\C-g":"cd \$(aw list | fzf)\n"'
|
|
296
298
|
```
|
|
297
299
|
|
|
298
300
|
```zsh
|
|
299
301
|
# Zsh keybind (Ctrl+G)
|
|
300
|
-
bindkey -s '^g' 'cd $(
|
|
302
|
+
bindkey -s '^g' 'cd $(aw list | fzf)\n'
|
|
301
303
|
```
|
|
302
304
|
|
|
303
305
|
### Open or switch tmux sessions with `sesh`
|
|
304
306
|
|
|
305
307
|
```bash
|
|
306
308
|
# One-off session connect
|
|
307
|
-
sesh connect "$(
|
|
309
|
+
sesh connect "$(aw list | fzf)"
|
|
308
310
|
```
|
|
309
311
|
|
|
310
312
|
```bash
|
|
311
313
|
# Bash keybind (Ctrl+S)
|
|
312
|
-
bind '"\C-s":"sesh connect \$(
|
|
314
|
+
bind '"\C-s":"sesh connect \$(aw list | fzf)\n"'
|
|
313
315
|
```
|
|
314
316
|
|
|
315
317
|
```zsh
|
|
316
318
|
# Zsh keybind (Ctrl+S)
|
|
317
|
-
bindkey -s '^s' 'sesh connect $(
|
|
319
|
+
bindkey -s '^s' 'sesh connect $(aw list | fzf)\n'
|
|
318
320
|
```
|
|
319
321
|
|
|
320
|
-
You can also use `
|
|
322
|
+
You can also use `aw switch --sesh` directly inside tmux to open the selected worktree in a new tmux window.
|
|
321
323
|
|
|
322
|
-
`
|
|
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.
|
|
323
325
|
|
|
324
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.
|
|
325
327
|
|
|
326
|
-
`
|
|
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.
|
|
327
329
|
|
|
328
330
|
### Fast remove selection
|
|
329
331
|
|
|
330
332
|
```bash
|
|
331
333
|
# Select and remove a worktree quickly
|
|
332
|
-
|
|
334
|
+
aw remove -f "$(aw list | fzf)"
|
|
333
335
|
```
|
|
334
336
|
|
|
335
337
|
If you prefer the term `delete`, create a shell alias:
|
|
336
338
|
|
|
337
339
|
```bash
|
|
338
|
-
alias arashi-delete='
|
|
340
|
+
alias arashi-delete='aw remove -f'
|
|
339
341
|
```
|
|
340
342
|
|
|
341
343
|
## Configuration Schema
|
|
@@ -384,7 +386,7 @@ Explicit launcher flags take precedence over `--cd` / `--launch`, which take pre
|
|
|
384
386
|
|
|
385
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.
|
|
386
388
|
|
|
387
|
-
Use `defaults.create` for terminal `
|
|
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.
|
|
388
390
|
|
|
389
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.
|
|
390
392
|
|
package/package.json
CHANGED
|
@@ -19,12 +19,18 @@
|
|
|
19
19
|
},
|
|
20
20
|
"Config": {
|
|
21
21
|
"additionalProperties": false,
|
|
22
|
-
"description": "Root configuration object for Arashi",
|
|
22
|
+
"description": "Root configuration object for Arashi.",
|
|
23
23
|
"properties": {
|
|
24
24
|
"$schema": {
|
|
25
25
|
"description": "JSON Schema URL for editor validation/autocomplete",
|
|
26
26
|
"type": "string"
|
|
27
27
|
},
|
|
28
|
+
"baseBranch": {
|
|
29
|
+
"description": "Workspace base branch shared by configured base-aware commands",
|
|
30
|
+
"minLength": 1,
|
|
31
|
+
"pattern": "^(?!HEAD$)(?!origin/(?:HEAD$|-))(?![-/.])(?!.*(?:/\\.|//|\\.\\.|@\\{))(?!.*\\.lock(?:/|$))(?!.*[/.]$)[^\\u0000-\\u0020\\u007F~^:?*\\[\\\\]+$",
|
|
32
|
+
"type": "string"
|
|
33
|
+
},
|
|
28
34
|
"defaults": {
|
|
29
35
|
"$ref": "#/definitions/CommandDefaultsConfig",
|
|
30
36
|
"description": "Optional command-scoped defaults for create and switch"
|
|
@@ -47,6 +53,10 @@
|
|
|
47
53
|
},
|
|
48
54
|
"type": "object"
|
|
49
55
|
},
|
|
56
|
+
"meta": {
|
|
57
|
+
"$ref": "#/definitions/MetaRepositoryConfig",
|
|
58
|
+
"description": "Optional meta-repository-specific policy"
|
|
59
|
+
},
|
|
50
60
|
"repos": {
|
|
51
61
|
"additionalProperties": {
|
|
52
62
|
"$ref": "#/definitions/RepoConfig"
|
|
@@ -88,12 +98,6 @@
|
|
|
88
98
|
"CreateCommandDefaults": {
|
|
89
99
|
"additionalProperties": false,
|
|
90
100
|
"properties": {
|
|
91
|
-
"baseBranch": {
|
|
92
|
-
"description": "Default base branch for configured create invocations",
|
|
93
|
-
"minLength": 1,
|
|
94
|
-
"pattern": "^(?!HEAD$)(?!origin/(?:HEAD$|-))(?![-/.])(?!.*(?:/\\.|//|\\.\\.|@\\{))(?!.*\\.lock(?:/|$))(?!.*[/.]$)[^\\u0000-\\u0020\\u007F~^:?*\\[\\\\]+$",
|
|
95
|
-
"type": "string"
|
|
96
|
-
},
|
|
97
101
|
"launch": {
|
|
98
102
|
"$ref": "#/definitions/CreateLaunchMode",
|
|
99
103
|
"description": "Post-create launch choice; omitted preserves built-in no-launch behavior"
|
|
@@ -208,10 +212,29 @@
|
|
|
208
212
|
],
|
|
209
213
|
"description": "Bash shorthand or interpreter-specific alternatives for one inline hook."
|
|
210
214
|
},
|
|
215
|
+
"MetaRepositoryConfig": {
|
|
216
|
+
"additionalProperties": false,
|
|
217
|
+
"description": "Meta-repository-specific configuration.",
|
|
218
|
+
"properties": {
|
|
219
|
+
"baseBranch": {
|
|
220
|
+
"description": "Meta-repository-specific base branch for configured base-aware commands",
|
|
221
|
+
"minLength": 1,
|
|
222
|
+
"pattern": "^(?!HEAD$)(?!origin/(?:HEAD$|-))(?![-/.])(?!.*(?:/\\.|//|\\.\\.|@\\{))(?!.*\\.lock(?:/|$))(?!.*[/.]$)[^\\u0000-\\u0020\\u007F~^:?*\\[\\\\]+$",
|
|
223
|
+
"type": "string"
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
"type": "object"
|
|
227
|
+
},
|
|
211
228
|
"RepoConfig": {
|
|
212
229
|
"additionalProperties": false,
|
|
213
230
|
"description": "Configuration for a single repository",
|
|
214
231
|
"properties": {
|
|
232
|
+
"baseBranch": {
|
|
233
|
+
"description": "Repository-specific base branch for configured base-aware commands",
|
|
234
|
+
"minLength": 1,
|
|
235
|
+
"pattern": "^(?!HEAD$)(?!origin/(?:HEAD$|-))(?![-/.])(?!.*(?:/\\.|//|\\.\\.|@\\{))(?!.*\\.lock(?:/|$))(?!.*[/.]$)[^\\u0000-\\u0020\\u007F~^:?*\\[\\\\]+$",
|
|
236
|
+
"type": "string"
|
|
237
|
+
},
|
|
215
238
|
"copy": {
|
|
216
239
|
"description": "Repository-relative paths copied into new worktrees in declaration order",
|
|
217
240
|
"items": {
|