Commit Graph

22 Commits

Author SHA1 Message Date
Joseph Mearman
33df8976ca fix: use global maximum for branch numbering to prevent collisions
The check_existing_branches (bash) and Get-NextBranchNumber (PowerShell)
functions were only looking for branches/specs matching the SAME short name
when determining the next feature number. This caused collisions where
multiple features could be assigned the same number if they had different
short names.

For example, if feature 023-ci-optimization existed, creating a new feature
with a different short name would incorrectly use 001 instead of 024.

This fix changes both functions to:
1. Use get_highest_from_branches() / Get-HighestNumberFromBranches to find
   the highest number across ALL branches globally
2. Use get_highest_from_specs() / Get-HighestNumberFromSpecs to find the
   highest number across ALL spec directories globally
3. Return the maximum of both + 1

The helper functions already existed but were not being used. This fix
properly utilizes them to ensure features are numbered sequentially
regardless of their short names.

Issue: Branch number collisions when creating features with different names
Impact: Prevents multiple features from sharing the same number prefix
2025-11-23 16:01:56 +00:00
Den Delimarsky
f205fa3b58 Merge pull request #1039 from sgillis/fix-cdpath-issue
Unset CDPATH while getting SCRIPT_DIR
2025-11-14 16:39:09 -08:00
den (work)
3dcbb6e3a9 Refactor feature script logic and update agent context scripts
Refactored both Bash and PowerShell create-new-feature scripts to modularize and deduplicate logic for determining the next feature number, including new helper functions for extracting the highest number from specs and branches. Improved branch name cleaning and generation. In update-agent-context scripts, removed redundant updates to AGENTS.md for Copilot, streamlining agent update logic.
2025-11-07 13:17:35 -08:00
Den Delimarsky
df15b8e2a2 Merge branch 'main' into localden/vscode 2025-11-07 11:46:55 -08:00
San Gillis
2a7c2e9398 Unset CDPATH while getting SCRIPT_DIR 2025-10-25 11:34:26 +02:00
Simon Gent
b40b41cf50 fix: improve branch number detection to check all sources
- Use git ls-remote for more reliable remote branch detection
- Check remote branches, local branches, AND specs directories
- Match exact short-name pattern to avoid false positives
- Ensures no duplicate numbers across all sources
2025-10-23 12:25:31 +01:00
Simon Gent
1f3d9b5fdd feat: check remote branches to prevent duplicate branch numbers
- Add --number parameter to create-new-feature scripts (bash & PowerShell)
- Add check_existing_branches() function to fetch and scan remote branches
- Update branch numbering logic to check remotes before creating new branches
- Update /speckit.specify command to document remote branch checking workflow
- Prevents duplicate branch numbers when branches exist on remotes but not locally
- Maintains backward compatibility with existing workflows
- Falls back to local directory scanning when Git is not available
2025-10-23 12:14:48 +01:00
den (work)
2508d926c0 Fixes #975 2025-10-21 16:11:03 -07:00
Den Delimarsky
015440838a Merge branch 'main' into create-new-feature 2025-10-18 20:04:37 -07:00
Peter Wang
74f7e508a4 Change loop condition to include last argument
The last argument is not processed. 
e.g. create-new-feature.sh -h doesn't show the help information.
2025-10-17 09:03:47 +08:00
hongxuww
b37a9516d0 fix: correct argument parsing in create-new-feature.sh script
Fix two critical bugs in the argument parsing logic that caused incorrect
behavior when --short-name parameter was used:

1. **Index offset bug**: The loop started at i=0 and used i < $#, which
   incorrectly processed $0 (script name) as the first argument and
   skipped the last actual parameter. Changed to i=1 and i <= $# to
   properly iterate through actual command-line arguments ($1 to $#).

2. **Boundary condition bug**: The condition `[ $((i + 1)) -ge $# ]`
   incorrectly flagged valid arguments as missing. When --short-name was
   at position $#-1, the next position $# was valid but treated as
   out-of-bounds. Changed to `[ $((i + 1)) -gt $# ]` for correct validation.

3. **Enhanced validation**: Added check to ensure --short-name value is
   not another option (doesn't start with --).

**Before**:
- `script --json "desc" --short-name "test"` → Error: requires a value
- `script --json "desc1" "desc2" --short-name` → Generated wrong branch name

**After**:
- `script --json "desc" --short-name "test"` → Works correctly
- `script --json "desc1" "desc2" --short-name` → Proper error message

This ensures the script correctly supports both parameter orders:
- `[--json] [--short-name <name>] <feature_description>`
- `[--json] <feature_description> [--short-name <name>]`
2025-10-16 10:02:53 +00:00
Den Delimarsky
a945077b8d Update scripts/bash/create-new-feature.sh
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-14 23:39:50 -07:00
den (work)
4522fb4c44 Update create-new-feature.sh 2025-10-14 11:54:48 -07:00
den (work)
36ff7e6505 Update files 2025-10-14 11:52:26 -07:00
den (work)
36383b411f Update script logic 2025-10-14 10:55:54 -07:00
danyow
e642acaea4 Update template path for spec file creation 2025-09-24 21:30:22 +08:00
Den Delimarsky 🌺
3bdb1d9f3f Root detection logic 2025-09-20 20:14:11 -07:00
Den Delimarsky 🌺
1a71b03195 Script and template tweaks 2025-09-20 15:04:25 -07:00
Den Delimarsky 🌺
2d242b4732 Update config 2025-09-20 13:57:05 -07:00
Den Delimarsky 🌺
64171ec062 Use proper line endings 2025-09-20 11:38:04 -07:00
honjo-hiroaki-gtt
65ccbb62ca Enhance Codex support by auto-syncing prompt files, allowing spec generation without git, and documenting clearer /specify usage. 2025-09-20 22:44:44 +09:00
Den Delimarsky 🌺
5787bb5537 Refactor with platform-specific constraints 2025-09-12 10:27:43 -07:00