santree 0.2.0 → 0.2.2

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
@@ -39,6 +39,7 @@ eval "$(santree helpers shell-init bash)" # for bash
39
39
  This enables automatic directory switching after `worktree create` and `worktree switch` commands.
40
40
 
41
41
  The shell integration also provides:
42
+
42
43
  - `st` - Alias for `santree`
43
44
  - `stw` - Alias for `santree worktree` (e.g., `stw list`, `stw create`)
44
45
  - `stn` - Quick create worktree with `--work --plan --tmux` (prompts for branch name)
@@ -88,55 +89,56 @@ With the `stw` alias: `stw create`, `stw list`, `stw switch`, `stw work`, `stw c
88
89
 
89
90
  ### Worktree (`santree worktree`)
90
91
 
91
- | Command | Description |
92
- |---------|-------------|
93
- | `santree worktree create <branch>` | Create a new worktree from base branch |
94
- | `santree worktree list` | List all worktrees with PR status and commits ahead |
95
- | `santree worktree switch <branch>` | Switch to another worktree |
96
- | `santree worktree remove <branch>` | Remove a worktree and its branch |
97
- | `santree worktree clean` | Remove worktrees with merged/closed PRs |
98
- | `santree worktree sync` | Sync current worktree with base branch |
99
- | `santree worktree work` | Launch Claude AI to work on the current ticket |
100
- | `santree worktree open` | Open workspace in VSCode or Cursor |
101
- | `santree worktree setup` | Run the init script (`.santree/init.sh`) |
102
- | `santree worktree commit` | Stage and commit changes |
92
+ | Command | Description |
93
+ | ---------------------------------- | --------------------------------------------------- |
94
+ | `santree worktree create <branch>` | Create a new worktree from base branch |
95
+ | `santree worktree list` | List all worktrees with PR status and commits ahead |
96
+ | `santree worktree switch <branch>` | Switch to another worktree |
97
+ | `santree worktree remove <branch>` | Remove a worktree and its branch |
98
+ | `santree worktree clean` | Remove worktrees with merged/closed PRs |
99
+ | `santree worktree sync` | Sync current worktree with base branch |
100
+ | `santree worktree work` | Launch Claude AI to work on the current ticket |
101
+ | `santree worktree open` | Open workspace in VSCode or Cursor |
102
+ | `santree worktree setup` | Run the init script (`.santree/init.sh`) |
103
+ | `santree worktree commit` | Stage and commit changes |
103
104
 
104
105
  ### Pull Requests (`santree pr`)
105
106
 
106
- | Command | Description |
107
- |---------|-------------|
108
- | `santree pr create` | Create a GitHub pull request |
109
- | `santree pr open` | Open the current PR in the browser |
110
- | `santree pr fix` | Fix PR review comments with AI |
107
+ | Command | Description |
108
+ | ------------------- | ------------------------------------- |
109
+ | `santree pr create` | Create a GitHub pull request |
110
+ | `santree pr open` | Open the current PR in the browser |
111
+ | `santree pr fix` | Fix PR review comments with AI |
111
112
  | `santree pr review` | Review changes against ticket with AI |
112
113
 
113
114
  ### Linear (`santree linear`)
114
115
 
115
- | Command | Description |
116
- |---------|-------------|
117
- | `santree linear auth` | Authenticate with Linear (OAuth) |
118
- | `santree linear switch` | Switch Linear workspace for this repo |
119
- | `santree linear open` | Open the current Linear ticket in the browser |
116
+ | Command | Description |
117
+ | ----------------------- | --------------------------------------------- |
118
+ | `santree linear auth` | Authenticate with Linear (OAuth) |
119
+ | `santree linear switch` | Switch Linear workspace for this repo |
120
+ | `santree linear open` | Open the current Linear ticket in the browser |
120
121
 
121
122
  ### Helpers (`santree helpers`)
122
123
 
123
- | Command | Description |
124
- |---------|-------------|
125
- | `santree helpers shell-init` | Output shell integration script |
124
+ | Command | Description |
125
+ | ---------------------------- | --------------------------------- |
126
+ | `santree helpers shell-init` | Output shell integration script |
126
127
  | `santree helpers statusline` | Custom statusline for Claude Code |
127
128
 
128
129
  ### Top-level
129
130
 
130
- | Command | Description |
131
- |---------|-------------|
131
+ | Command | Description |
132
+ | ------------------- | ----------------------------------------------- |
132
133
  | `santree dashboard` | Interactive dashboard of all your Linear issues |
133
- | `santree doctor` | Check system requirements and integrations |
134
+ | `santree doctor` | Check system requirements and integrations |
134
135
 
135
136
  ---
136
137
 
137
138
  ## Features
138
139
 
139
140
  ### Interactive Dashboard
141
+
140
142
  `santree dashboard` opens a full-screen TUI to manage all your work in one place. It shows your Linear issues grouped by project, with live status for worktrees, PRs, CI checks, and reviews.
141
143
 
142
144
  **Left pane** — issue list with columns for priority, session ID, PR number, and CI status. Click to select, scroll wheel to navigate, drag the divider to resize panes.
@@ -158,22 +160,28 @@ With the `stw` alias: `stw create`, `stw list`, `stw switch`, `stw work`, `stw c
158
160
  Commit and PR creation happen inline without leaving the dashboard. Work, fix, and review open in new tmux windows.
159
161
 
160
162
  ### Worktree Management
163
+
161
164
  Create isolated worktrees for each feature branch. No more stashing or committing WIP code just to switch tasks.
162
165
 
163
166
  ### GitHub Integration
167
+
164
168
  See PR status directly in your worktree list. Clean up worktrees automatically when PRs are merged or closed.
165
169
 
166
170
  ### Linear Integration
171
+
167
172
  Santree fetches Linear ticket data (title, description, comments, images) and injects it into prompts when running `santree worktree work`. See [Linear Integration](#linear-integration-1) for setup.
168
173
 
169
174
  ### Claude AI Integration
175
+
170
176
  Launch Claude with full context about your current ticket. Supports different modes:
177
+
171
178
  - `santree worktree work` - Implement the ticket
172
179
  - `santree worktree work --plan` - Create an implementation plan only
173
180
  - `santree pr review` - Review changes against ticket requirements
174
181
  - `santree pr fix` - Address PR review comments
175
182
 
176
183
  ### Init Scripts
184
+
177
185
  Run custom setup scripts when creating worktrees. Perfect for copying `.env` files, installing dependencies, or any project-specific setup.
178
186
 
179
187
  ---
@@ -226,81 +234,95 @@ If you have multiple workspaces authenticated, running `santree linear auth` in
226
234
  Santree provides a custom statusline for Claude Code showing git info, model, context usage, and cost.
227
235
 
228
236
  Add to `~/.claude/settings.json`:
237
+
229
238
  ```json
230
239
  {
231
- "statusLine": {
232
- "type": "command",
233
- "command": "santree helpers statusline"
234
- }
240
+ "statusLine": {
241
+ "type": "command",
242
+ "command": "santree helpers statusline"
243
+ }
235
244
  }
236
245
  ```
237
246
 
238
247
  The statusline displays: `repo | branch | S: staged | U: unstaged | A: untracked | Model | Context% | $Cost`
239
248
 
249
+ ### Claude Code Remote Control (Optional)
250
+
251
+ Enable [Remote Control](https://code.claude.com/docs/en/remote-control) to continue local Claude Code sessions from your phone, tablet, or any browser. This lets you kick off work with `santree worktree work` and monitor or steer the session remotely.
252
+
253
+ Enable it for all sessions by running `/config` inside Claude Code and setting **Enable Remote Control for all sessions** to `true`. This writes `remoteControlAtStartup: true` to `~/.claude.json`. Run `santree doctor` to verify.
254
+
240
255
  ---
241
256
 
242
257
  ## Command Options
243
258
 
244
259
  ### worktree create
245
- | Option | Description |
246
- |--------|-------------|
260
+
261
+ | Option | Description |
262
+ | ----------------- | ------------------------------------------------- |
247
263
  | `--base <branch>` | Base branch to create from (default: main/master) |
248
- | `--work` | Launch Claude after creating |
249
- | `--plan` | With --work, only create implementation plan |
250
- | `--no-pull` | Skip pulling latest changes |
251
- | `--tmux` | Open worktree in new tmux window |
252
- | `--name <name>` | Custom tmux window name |
264
+ | `--work` | Launch Claude after creating |
265
+ | `--plan` | With --work, only create implementation plan |
266
+ | `--no-pull` | Skip pulling latest changes |
267
+ | `--tmux` | Open worktree in new tmux window |
268
+ | `--name <name>` | Custom tmux window name |
253
269
 
254
270
  ### worktree sync
255
- | Option | Description |
256
- |--------|-------------|
271
+
272
+ | Option | Description |
273
+ | ---------- | --------------------------- |
257
274
  | `--rebase` | Use rebase instead of merge |
258
275
 
259
276
  ### worktree remove
277
+
260
278
  Removes the worktree and deletes the branch. Uses force mode by default (removes even with uncommitted changes).
261
279
 
262
280
  ### worktree clean
281
+
263
282
  Shows worktrees with merged/closed PRs and prompts for confirmation before removing.
264
283
 
265
284
  ### worktree open
266
- | Option | Description |
267
- |--------|-------------|
285
+
286
+ | Option | Description |
287
+ | ---------------- | --------------------------------------------------------------------------------------- |
268
288
  | `--editor <cmd>` | Editor command to use (default: `code`). Also configurable via `SANTREE_EDITOR` env var |
269
289
 
270
290
  ### worktree work
271
- | Option | Description |
272
- |--------|-------------|
291
+
292
+ | Option | Description |
293
+ | -------- | ------------------------------- |
273
294
  | `--plan` | Only create implementation plan |
274
295
 
275
296
  Automatically fetches Linear ticket data if authenticated. Degrades gracefully if not.
276
297
 
277
298
  ### pr create
278
- | Option | Description |
279
- |--------|-------------|
299
+
300
+ | Option | Description |
301
+ | -------- | --------------------------------------------- |
280
302
  | `--fill` | Use AI to fill the PR template before opening |
281
303
 
282
304
  Automatically pushes, detects existing PRs, and uses the first commit message as the title. If a closed PR exists for the branch, prompts before creating a new one.
283
305
 
284
306
  ### linear auth
285
- | Option | Description |
286
- |--------|-------------|
287
- | `--status` | Show current auth status (org, token expiry) |
307
+
308
+ | Option | Description |
309
+ | ------------- | ------------------------------------------------ |
310
+ | `--status` | Show current auth status (org, token expiry) |
288
311
  | `--test <id>` | Fetch a ticket by ID to verify integration works |
289
- | `--logout` | Revoke tokens and log out |
312
+ | `--logout` | Revoke tokens and log out |
290
313
 
291
314
  ---
292
315
 
293
316
  ## Requirements
294
317
 
295
- | Tool | Purpose |
296
- |------|---------|
297
- | Node.js >= 20 | Runtime |
298
- | Git | Worktree operations |
299
- | GitHub CLI (`gh`) | PR integration |
300
- | Claude Code (`claude`) | AI agent for `work`, `fix`, `review` |
301
- | happy (`happy`) | Optional: used over `claude` if installed |
302
- | tmux | Optional: new window support |
303
- | VSCode (`code`) or Cursor (`cursor`) | Optional: workspace editor |
318
+ | Tool | Purpose |
319
+ | ------------------------------------ | ------------------------------------ |
320
+ | Node.js >= 20 | Runtime |
321
+ | Git | Worktree operations |
322
+ | GitHub CLI (`gh`) | PR integration |
323
+ | Claude Code (`claude`) | AI agent for `work`, `fix`, `review` |
324
+ | tmux | Optional: new window support |
325
+ | VSCode (`code`) or Cursor (`cursor`) | Optional: workspace editor |
304
326
 
305
327
  ---
306
328