jettypod 4.4.71 → 4.4.73

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.
@@ -172,7 +172,11 @@ function evaluateBashCommand(command, inputRef, cwd) {
172
172
  return {
173
173
  allowed: false,
174
174
  message: 'Direct commits to main are blocked',
175
- hint: 'Use jettypod work start to create a feature branch first.'
175
+ hint: `Required workflow:
176
+ 1. jettypod work create chore "<description>"
177
+ 2. jettypod work start <id>
178
+ 3. [make changes in worktree]
179
+ 4. jettypod work merge`
176
180
  };
177
181
  }
178
182
 
@@ -401,7 +405,12 @@ function allow() {
401
405
  * Deny the action with explanation
402
406
  */
403
407
  function deny(message, hint) {
404
- const reason = `āŒ ${message}\n\nšŸ’” Hint: ${hint || 'Check your action.'}`;
408
+ const reason = `āŒ ${message}
409
+
410
+ āš ļø This is a Claude pre-tool hook, not a git hook.
411
+ --no-verify won't help. You must use the worktree workflow.
412
+
413
+ šŸ’” Hint: ${hint || 'Check your action.'}`;
405
414
 
406
415
  console.log(JSON.stringify({
407
416
  hookSpecificOutput: {
@@ -485,8 +485,8 @@ function printTree(items, prefix = '', isRootLevel = true, expandedIds = null) {
485
485
  // Update status
486
486
  function updateStatus(id, status) {
487
487
  return new Promise((resolve, reject) => {
488
- // First get the work item to check its parent
489
- db.get('SELECT id, parent_id FROM work_items WHERE id = ?', [id], (err, item) => {
488
+ // First get the work item to check its type, mode, and parent
489
+ db.get('SELECT id, parent_id, type, mode FROM work_items WHERE id = ?', [id], (err, item) => {
490
490
  if (err) {
491
491
  console.error(`Error: ${err.message}`);
492
492
  return reject(err);
@@ -497,6 +497,15 @@ function updateStatus(id, status) {
497
497
  return resolve();
498
498
  }
499
499
 
500
+ // Prevent marking features as done while still in speed mode
501
+ if (status === 'done' && item.type === 'feature' && item.mode === 'speed') {
502
+ console.error(`\nāŒ Cannot mark feature as done - still in speed mode\n`);
503
+ console.error(`Feature #${id} is still in speed mode.`);
504
+ console.error(`Speed mode chores must complete, then stable mode must run.\n`);
505
+ console.error(`The feature will be marked done automatically when all modes complete.\n`);
506
+ process.exit(1);
507
+ }
508
+
500
509
  // Update the status and completed_at if marking as done
501
510
  const completedAt = status === 'done' ? new Date().toISOString() : null;
502
511
  const sql = status === 'done'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jettypod",
3
- "version": "4.4.71",
3
+ "version": "4.4.73",
4
4
  "description": "AI-powered development workflow manager with TDD, BDD, and automatic test generation",
5
5
  "main": "jettypod.js",
6
6
  "bin": {