Merge branch 'main' into feat/add-codex-support
This commit is contained in:
12
CHANGELOG.md
12
CHANGELOG.md
@@ -5,13 +5,19 @@ All notable changes to the Specify CLI will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [0.0.10] - 2025-09-20
|
||||
## [0.0.11] - 2025-09-20
|
||||
|
||||
### Added
|
||||
|
||||
- Codex CLI support across the Specify CLI, documentation, and bootstrap scripts, including automatic slash-command provisioning and prompt mirroring into `${CODEX_HOME:-~/.codex}/prompts`.
|
||||
- Codex CLI support (thank you [@honjo-hiroaki-gtt](https://github.com/honjo-hiroaki-gtt) for the contribution in [#14](https://github.com/github/spec-kit/pull/14))
|
||||
- Codex-aware context update tooling (Bash and PowerShell) so feature plans refresh `AGENTS.md` alongside existing assistants without manual edits.
|
||||
|
||||
## [0.0.10] - 2025-09-20
|
||||
|
||||
### Fixed
|
||||
|
||||
- Addressed [#378](https://github.com/github/spec-kit/issues/378) where a GitHub token may be attached to the request when it was empty.
|
||||
|
||||
## [0.0.9] - 2025-09-19
|
||||
|
||||
### Changed
|
||||
@@ -23,7 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
### Added
|
||||
|
||||
- Windsurf IDE support as additional AI assistant option
|
||||
- GitHub token support for API requests to handle corporate environments and rate limiting (contributed by @zryfish in #243)
|
||||
- GitHub token support for API requests to handle corporate environments and rate limiting (contributed by [@zryfish](https://github.com/@zryfish) in [#243](https://github.com/github/spec-kit/pull/243))
|
||||
|
||||
### Changed
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "specify-cli"
|
||||
version = "0.0.9"
|
||||
version = "0.0.10"
|
||||
description = "Specify CLI, part of GitHub Spec Kit. A tool to bootstrap your projects for Spec-Driven Development (SDD)."
|
||||
requires-python = ">=3.11"
|
||||
dependencies = [
|
||||
|
||||
@@ -53,17 +53,13 @@ ssl_context = truststore.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
|
||||
client = httpx.Client(verify=ssl_context)
|
||||
|
||||
def _github_token(cli_token: str | None = None) -> str | None:
|
||||
return cli_token or os.getenv("GH_TOKEN") or os.getenv("GITHUB_TOKEN")
|
||||
"""Return sanitized GitHub token (cli arg takes precedence) or None."""
|
||||
return ((cli_token or os.getenv("GH_TOKEN") or os.getenv("GITHUB_TOKEN") or "").strip()) or None
|
||||
|
||||
def _github_auth_headers(cli_token: str | None = None) -> dict:
|
||||
"""Headers for GitHub REST API requests.
|
||||
- Uses Bearer auth if token present
|
||||
"""
|
||||
headers = {}
|
||||
"""Return Authorization header dict only when a non-empty token exists."""
|
||||
token = _github_token(cli_token)
|
||||
if token:
|
||||
headers["Authorization"] = f"Bearer {token}"
|
||||
return headers
|
||||
return {"Authorization": f"Bearer {token}"} if token else {}
|
||||
|
||||
# Constants
|
||||
AI_CHOICES = {
|
||||
@@ -598,7 +594,7 @@ def download_template_from_github(ai_assistant: str, download_dir: Path, *, scri
|
||||
api_url,
|
||||
timeout=30,
|
||||
follow_redirects=True,
|
||||
headers=_github_auth_headers(github_token) or None,
|
||||
headers=_github_auth_headers(github_token),
|
||||
)
|
||||
status = response.status_code
|
||||
if status != 200:
|
||||
@@ -667,7 +663,7 @@ def download_template_from_github(ai_assistant: str, download_dir: Path, *, scri
|
||||
download_url,
|
||||
timeout=60,
|
||||
follow_redirects=True,
|
||||
headers=_github_auth_headers(github_token) or None,
|
||||
headers=_github_auth_headers(github_token),
|
||||
) as response:
|
||||
if response.status_code != 200:
|
||||
body_sample = response.text[:400]
|
||||
|
||||
Reference in New Issue
Block a user