chief-clancy 0.8.13 → 0.8.14

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
@@ -2,7 +2,7 @@
2
2
 
3
3
  **Autonomous, board-driven development for Claude Code.**
4
4
 
5
- [![npm](https://img.shields.io/npm/v/chief-clancy?style=for-the-badge&color=cb3837)](https://www.npmjs.com/package/chief-clancy) [![License: MIT](https://img.shields.io/badge/License-MIT-blue?style=for-the-badge)](./LICENSE) [![Tests](https://img.shields.io/badge/tests-1375%20passing-brightgreen?style=for-the-badge)](docs/TESTING.md) [![GitHub Stars](https://img.shields.io/github/stars/Pushedskydiver/clancy?style=for-the-badge)](https://github.com/Pushedskydiver/clancy/stargazers)
5
+ [![npm](https://img.shields.io/npm/v/chief-clancy?style=for-the-badge&color=cb3837)](https://www.npmjs.com/package/chief-clancy) [![License: MIT](https://img.shields.io/badge/License-MIT-blue?style=for-the-badge)](./LICENSE) [![Tests](https://img.shields.io/badge/tests-1444%20passing-brightgreen?style=for-the-badge)](docs/TESTING.md) [![GitHub Stars](https://img.shields.io/github/stars/Pushedskydiver/clancy?style=for-the-badge)](https://github.com/Pushedskydiver/clancy/stargazers)
6
6
 
7
7
  > [!WARNING]
8
8
  > Clancy is in early development. Expect bugs, breaking changes, and rough edges. If you hit an issue, please [open a bug report](https://github.com/Pushedskydiver/clancy/issues/new).
@@ -30,16 +30,15 @@ function checkCommand(cmd) {
30
30
  }
31
31
 
32
32
  // --- git push to protected branches ---
33
- // Pattern: git push <remote> <protected-branch>
34
- // We look for "git push" followed by any remote name, then a protected branch.
35
- // The branch must be a standalone token — \b treats hyphens as word boundaries,
36
- // so we match the branch as a complete whitespace-delimited token instead.
33
+ // Pattern: git push [flags...] <remote> <protected-branch>
34
+ // Skip any flags (tokens starting with -) to find the remote and branch.
35
+ // The branch must be a standalone token — not a prefix of a longer name.
37
36
  for (const branch of PROTECTED_BRANCHES) {
38
- // Matches: git push origin main, git push origin main:main, etc.
37
+ // Matches: git push origin main, git push -u origin main, git push --set-upstream origin main:main
39
38
  // Does NOT match: git push origin main-feature
40
39
  // Escape regex metacharacters in branch name (e.g. release/1.0 → release\/1\.0)
41
40
  const escaped = branch.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
42
- const pattern = new RegExp(`\\bgit\\s+push\\s+\\S+\\s+${escaped}(?:\\s|$|:)`);
41
+ const pattern = new RegExp(`\\bgit\\s+push\\s+(?:-\\S+\\s+)*\\S+\\s+${escaped}(?:\\s|$|:)`);
43
42
  if (pattern.test(cmd)) {
44
43
  return `Blocked: direct push to protected branch '${branch}'. Create a PR instead.`;
45
44
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chief-clancy",
3
- "version": "0.8.13",
3
+ "version": "0.8.14",
4
4
  "description": "Autonomous, board-driven development for Claude Code — scaffolds docs, integrates Kanban boards, runs tickets in a loop.",
5
5
  "keywords": [
6
6
  "claude",