jettypod 4.4.88 → 4.4.90

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.
@@ -223,10 +223,23 @@ function evaluateBashCommand(command, inputRef, cwd) {
223
223
  if (/jettypod\s+(work|tests)\s+merge\b/.test(strippedCommand)) {
224
224
  const isInWorktree = cwd && cwd.includes('.jettypod-work');
225
225
  if (isInWorktree) {
226
+ // Extract main repo path and work item ID for helpful error message
227
+ const mainRepoPath = cwd.split('.jettypod-work')[0].replace(/\/$/, '');
228
+ const workIdMatch = strippedCommand.match(/merge\s+(\d+)/);
229
+ const workId = workIdMatch ? workIdMatch[1] : '<id>';
230
+
226
231
  return {
227
232
  allowed: false,
228
233
  message: 'Cannot merge from inside a worktree',
229
- hint: 'Merging deletes the worktree. Run from main repo: cd <main-repo-path> && jettypod work merge\n\nNote: "cd path && jettypod work merge" won\'t work - hooks check CWD before cd runs. Run cd separately first.'
234
+ hint: `Current CWD: ${cwd}
235
+ Main repo: ${mainRepoPath}
236
+
237
+ Run these as TWO SEPARATE Bash calls:
238
+
239
+ 1. cd ${mainRepoPath}
240
+ 2. jettypod work merge ${workId}
241
+
242
+ Why: Hooks check CWD before 'cd &&' executes, so chained commands fail.`
230
243
  };
231
244
  }
232
245
  }
@@ -384,7 +397,7 @@ function evaluateWriteOperation(filePath, inputWorktreePath, cwd) {
384
397
  return {
385
398
  allowed: false,
386
399
  message: 'Cannot write to main repository',
387
- hint: 'Use jettypod work start to create a worktree first.'
400
+ hint: 'Invoke the request-routing skill first to plan and create work items properly.'
388
401
  };
389
402
  }
390
403
 
package/hooks/pre-commit CHANGED
@@ -38,12 +38,14 @@ function checkBranchRestriction() {
38
38
  console.error('❌ Direct commits to main are not allowed');
39
39
  console.error('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
40
40
  console.error('');
41
- console.error('Use the JettyPod workflow instead:');
41
+ console.error('You edited files without starting a worktree first.');
42
+ console.error('Your changes exist but cannot be committed here.');
42
43
  console.error('');
43
- console.error(' jettypod work start <work-item-id>');
44
+ console.error('TO FIX:');
45
+ console.error(' 1. Undo your edits: git checkout .');
46
+ console.error(' 2. Start the workflow: Invoke request-routing skill');
44
47
  console.error('');
45
- console.error('This creates a feature branch where you can commit freely.');
46
- console.error('When done, use \'jettypod work done\' to merge back to main.');
48
+ console.error('The skill creates a worktree where commits are allowed.');
47
49
  console.error('');
48
50
  return false;
49
51
  } catch (err) {
package/jettypod.js CHANGED
@@ -2844,9 +2844,12 @@ Quick commands:
2844
2844
  'speed-mode': ['feature_planning_complete'],
2845
2845
  'stable-mode': ['speed_mode_complete'],
2846
2846
  'production-mode': ['stable_mode_complete'],
2847
+ 'chore-mode': ['chore_planning_complete'],
2848
+ 'bug-mode': ['bug_planning_complete'],
2847
2849
  'feature-planning': [],
2848
2850
  'epic-planning': [],
2849
- 'chore-planning': []
2851
+ 'chore-planning': [],
2852
+ 'bug-planning': []
2850
2853
  };
2851
2854
 
2852
2855
  // Validate skill name
@@ -36,12 +36,14 @@ function checkBranchRestriction() {
36
36
  console.error('❌ Direct commits to main are not allowed');
37
37
  console.error('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
38
38
  console.error('');
39
- console.error('Use the JettyPod workflow instead:');
39
+ console.error('You edited files without starting a worktree first.');
40
+ console.error('Your changes exist but cannot be committed here.');
40
41
  console.error('');
41
- console.error(' jettypod work start <work-item-id>');
42
+ console.error('TO FIX:');
43
+ console.error(' 1. Undo your edits: git checkout .');
44
+ console.error(' 2. Start the workflow: Invoke request-routing skill');
42
45
  console.error('');
43
- console.error('This creates a feature branch where you can commit freely.');
44
- console.error('When done, use \'jettypod work done\' to merge back to main.');
46
+ console.error('The skill creates a worktree where commits are allowed.');
45
47
  console.error('');
46
48
  return false;
47
49
  } catch (err) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jettypod",
3
- "version": "4.4.88",
3
+ "version": "4.4.90",
4
4
  "description": "AI-powered development workflow manager with TDD, BDD, and automatic test generation",
5
5
  "main": "jettypod.js",
6
6
  "bin": {
@@ -235,10 +235,17 @@ git commit -m "fix: [brief description]
235
235
  Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>"
236
236
  ```
237
237
 
238
- **Then merge (from main repo):**
238
+ **Then merge (CRITICAL: run as separate Bash calls):**
239
+
240
+ ⚠️ Shell CWD persists. You MUST run `cd` as a SEPARATE Bash tool call before merge.
239
241
 
240
242
  ```bash
243
+ # Bash call 1: Change to main repo
241
244
  cd <main-repo-path>
245
+ ```
246
+
247
+ ```bash
248
+ # Bash call 2: Merge and cleanup
242
249
  jettypod work merge <chore-id>
243
250
  jettypod work cleanup <chore-id>
244
251
  ```
@@ -316,8 +323,9 @@ jettypod work create chore "<title>" "<description>" --parent=<feature-id>
316
323
  # Start chore
317
324
  jettypod work start <chore-id>
318
325
 
319
- # Merge (from main repo)
320
- cd <main-repo> && jettypod work merge <chore-id>
326
+ # Merge (CRITICAL: separate Bash calls - cd first, then merge)
327
+ cd <main-repo> # Bash call 1
328
+ jettypod work merge <chore-id> # Bash call 2
321
329
 
322
330
  # Cleanup
323
331
  jettypod work cleanup <chore-id>
@@ -855,10 +855,14 @@ jettypod work create chore "[Chore title]" "[Description with scenarios addresse
855
855
 
856
856
  Repeat for each confirmed chore. **Do NOT use `--mode` flag** - chores inherit mode from their parent feature.
857
857
 
858
- **3. Release merge lock:**
858
+ **3. Release merge lock (CRITICAL: separate Bash calls):**
859
859
 
860
860
  ```bash
861
- cd <main-repo> && jettypod work merge --release-lock
861
+ cd <main-repo> # Bash call 1
862
+ ```
863
+
864
+ ```bash
865
+ jettypod work merge --release-lock # Bash call 2
862
866
  ```
863
867
 
864
868
  **🔄 WORKFLOW COMPLETE: Speed mode finished**
@@ -957,12 +961,17 @@ Before ending speed-mode skill, ensure:
957
961
 
958
962
  ## Command Reference
959
963
 
960
- **Complete chores (CRITICAL: cd to main repo BEFORE merge - worktree will be deleted):**
964
+ **Complete chores (CRITICAL: run cd and merge as SEPARATE Bash calls):**
965
+ ```bash
966
+ # Bash call 1: Change to main repo
967
+ cd <main-repo>
968
+ ```
961
969
  ```bash
962
- cd <main-repo> && jettypod work merge <id> # Merge chore by ID (recommended)
963
- cd <main-repo> && jettypod work merge # Merge current chore
964
- cd <main-repo> && jettypod work merge --with-transition # Hold lock for transition
965
- cd <main-repo> && jettypod work merge --release-lock # Release held lock
970
+ # Bash call 2: Merge (pick one)
971
+ jettypod work merge <id> # Merge chore by ID (recommended)
972
+ jettypod work merge # Merge current chore
973
+ jettypod work merge --with-transition # Hold lock for transition
974
+ jettypod work merge --release-lock # Release held lock
966
975
  ```
967
976
 
968
977
  **Start chores:**
@@ -773,10 +773,15 @@ Before ending stable-mode skill, ensure:
773
773
 
774
774
  ## Command Reference
775
775
 
776
- **Complete chores (CRITICAL: cd to main repo BEFORE merge - worktree will be deleted):**
776
+ **Complete chores (CRITICAL: run cd and merge as SEPARATE Bash calls):**
777
777
  ```bash
778
- cd <main-repo> && jettypod work merge <id> # Merge chore by ID (recommended)
779
- cd <main-repo> && jettypod work merge # Merge current chore
778
+ # Bash call 1: Change to main repo
779
+ cd <main-repo>
780
+ ```
781
+ ```bash
782
+ # Bash call 2: Merge (pick one)
783
+ jettypod work merge <id> # Merge chore by ID (recommended)
784
+ jettypod work merge # Merge current chore
780
785
  ```
781
786
 
782
787
  **Start chores:**
@@ -806,7 +811,7 @@ jettypod work set-mode <feature-id> production # Set feature to production mode
806
811
  - Parallel worktrees branch from main independently
807
812
 
808
813
  **Process:**
809
- 1. Complete chore → `cd <main-repo> && jettypod work merge` (CRITICAL: cd first!)
814
+ 1. Complete chore → run `cd <main-repo>` then `jettypod work merge` as SEPARATE Bash calls
810
815
  2. Start next chore → `jettypod work start <next-id>`
811
816
  3. Repeat
812
817