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:
|
|
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}
|
|
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'
|