Compare commits

..

1 Commits

Author SHA1 Message Date
github-actions[bot]
904bd3f99f chore: bump version to 0.11.2 2026-06-18 13:19:49 +00:00
6 changed files with 3 additions and 104 deletions

View File

@@ -133,7 +133,6 @@ The following community-contributed extensions are available in [`catalog.commun
| TinySpec | Lightweight single-file workflow for small tasks — skip the heavy multi-step SDD process | `process` | Read+Write | [spec-kit-tinyspec](https://github.com/Quratulain-bilal/spec-kit-tinyspec) |
| Token Budget | Reduces LLM token consumption in Spec Kit workflows: compact artifacts in-place, scope per-phase reading, suppress prose padding, and report token usage | `process` | Read+Write | [spec-kit-token-budget](https://github.com/tinesoft/spec-kit-token-budget) |
| Token Consumption Analyzer | Captures, analyzes, and compares token consumption across SDD workflows | `visibility` | Read-only | [spec-kit-token-analyzer](https://github.com/coderandhiker/spec-kit-token-analyzer) |
| Token Economy | Token routing, measured savings, and context audit workflows | `process` | Read+Write | [spec-kit-token-economy](https://github.com/formin/spec-kit-token-economy) |
| V-Model Extension Pack | Enforces V-Model paired generation of development specs and test specs with full traceability | `docs` | Read+Write | [spec-kit-v-model](https://github.com/leocamello/spec-kit-v-model) |
| Verify Extension | Post-implementation quality gate that validates implemented code against specification artifacts | `code` | Read-only | [spec-kit-verify](https://github.com/ismaelJimenez/spec-kit-verify) |
| Verify Tasks Extension | Detect phantom completions: tasks marked [X] in tasks.md with no real implementation | `code` | Read-only | [spec-kit-verify-tasks](https://github.com/datastone-inc/spec-kit-verify-tasks) |

View File

@@ -3798,46 +3798,6 @@
"created_at": "2026-05-26T00:00:00Z",
"updated_at": "2026-05-26T00:00:00Z"
},
"token-economy": {
"name": "Token Economy",
"id": "token-economy",
"description": "Token routing, measured savings, and context audit workflows.",
"author": "formin",
"version": "1.0.0",
"download_url": "https://github.com/formin/spec-kit-token-economy/archive/refs/tags/v1.0.0.zip",
"repository": "https://github.com/formin/spec-kit-token-economy",
"homepage": "https://github.com/formin/spec-kit-token-economy",
"documentation": "https://github.com/formin/spec-kit-token-economy/blob/main/README.md",
"changelog": "https://github.com/formin/spec-kit-token-economy/blob/main/CHANGELOG.md",
"license": "MIT",
"category": "process",
"effect": "read-write",
"requires": {
"speckit_version": ">=0.10.0",
"tools": [
{ "name": "rtk", "required": false },
{ "name": "headroom", "required": false },
{ "name": "token-router", "required": false },
{ "name": "ollama", "required": false },
{ "name": "python", "version": ">=3.10", "required": false }
]
},
"provides": {
"commands": 3,
"hooks": 2
},
"tags": [
"tokens",
"routing",
"reporting",
"context"
],
"verified": false,
"downloads": 0,
"stars": 0,
"created_at": "2026-06-17T00:00:00Z",
"updated_at": "2026-06-17T00:00:00Z"
},
"trace": {
"name": "Spec Trace",
"id": "trace",

View File

@@ -127,7 +127,7 @@ get_highest_from_specs() {
# Function to get highest number from git branches
get_highest_from_branches() {
git branch -a 2>/dev/null | sed -E 's/^[+*][[:space:]]+//; s/^[[:space:]]+//; s|^remotes/[^/]*/||' | _extract_highest_number
git branch -a 2>/dev/null | sed 's/^[* ]*//; s|^remotes/[^/]*/||' | _extract_highest_number
}
# Extract the highest sequential feature number from a list of ref names (one per line).

View File

@@ -88,7 +88,7 @@ function Get-HighestNumberFromBranches {
$branches = git branch -a 2>$null
if ($LASTEXITCODE -eq 0 -and $branches) {
$cleanNames = $branches | ForEach-Object {
$_.Trim() -replace '^[+*]?\s+', '' -replace '^remotes/[^/]+/', ''
$_.Trim() -replace '^\*?\s+', '' -replace '^remotes/[^/]+/', ''
}
return Get-HighestNumberFromNames -Names $cleanNames
}

View File

@@ -1,6 +1,6 @@
[project]
name = "specify-cli"
version = "0.11.3.dev0"
version = "0.11.2"
description = "Specify CLI, part of GitHub Spec Kit. A tool to bootstrap your projects for Spec-Driven Development (SDD)."
requires-python = ">=3.11"
dependencies = [

View File

@@ -89,17 +89,6 @@ def _write_config(project: Path, content: str) -> Path:
return config_path
def _add_sibling_worktree(project: Path, path: Path, branch: str) -> None:
"""Add a sibling worktree so `git branch -a` marks it with `+`."""
subprocess.run(
["git", "worktree", "add", "-q", "-b", branch, str(path), "HEAD"],
cwd=project,
check=True,
capture_output=True,
text=True,
)
# Git identity env vars for CI runners without global git config
_GIT_ENV = {
"GIT_AUTHOR_NAME": "Test User",
@@ -323,40 +312,6 @@ class TestCreateFeatureBash:
data = json.loads(result.stdout)
assert data["FEATURE_NUM"] == "003"
def test_dry_run_counts_branches_checked_out_in_worktrees(self, tmp_path: Path):
"""Branches checked out in sibling worktrees still reserve their prefix."""
project = _setup_project(tmp_path / "project")
_add_sibling_worktree(project, tmp_path / "sibling-worktree", "007-worktree-feature")
result = _run_bash(
"create-new-feature-branch.sh", project,
"--json", "--dry-run", "--short-name", "next", "Next feature",
)
assert result.returncode == 0, result.stderr
data = json.loads(result.stdout)
assert data["BRANCH_NAME"] == "008-next"
assert data["FEATURE_NUM"] == "008"
def test_dry_run_preserves_literal_plus_branch_prefix(self, tmp_path: Path):
"""A literal leading plus in a branch name is not a git worktree marker."""
project = _setup_project(tmp_path)
subprocess.run(
["git", "branch", "+007-plus-prefix"],
cwd=project,
check=True,
)
result = _run_bash(
"create-new-feature-branch.sh", project,
"--json", "--dry-run", "--short-name", "next", "Next feature",
)
assert result.returncode == 0, result.stderr
data = json.loads(result.stdout)
assert data["BRANCH_NAME"] == "001-next"
assert data["FEATURE_NUM"] == "001"
def test_no_git_graceful_degradation(self, tmp_path: Path):
"""create-new-feature-branch.sh works without git (outputs branch name, skips branch creation)."""
project = _setup_project(tmp_path, git=False)
@@ -396,21 +351,6 @@ class TestCreateFeaturePowerShell:
data = json.loads(result.stdout)
assert data["BRANCH_NAME"] == "001-user-auth"
def test_dry_run_counts_branches_checked_out_in_worktrees(self, tmp_path: Path):
"""Branches checked out in sibling worktrees still reserve their prefix."""
project = _setup_project(tmp_path / "project")
_add_sibling_worktree(project, tmp_path / "sibling-worktree", "007-worktree-feature")
result = _run_pwsh(
"create-new-feature-branch.ps1", project,
"-Json", "-DryRun", "-ShortName", "next", "Next feature",
)
assert result.returncode == 0, result.stderr
data = json.loads(result.stdout)
assert data["BRANCH_NAME"] == "008-next"
assert data["FEATURE_NUM"] == "008"
def test_creates_branch_timestamp(self, tmp_path: Path):
"""Extension create-new-feature-branch.ps1 creates timestamp branch."""
project = _setup_project(tmp_path)