diff --git a/scripts/generate-release-notes.sh b/scripts/generate-release-notes.sh index ab6d8be..95c2581 100755 --- a/scripts/generate-release-notes.sh +++ b/scripts/generate-release-notes.sh @@ -47,8 +47,8 @@ if [ -n "${ANTHROPIC_API_KEY:-}" ]; then elif [ -n "${OPENAI_API_KEY:-}" ]; then LLM_PROVIDER="openai" else - echo "Error: Either OPENAI_API_KEY or ANTHROPIC_API_KEY environment variable must be set" - exit 1 + echo "No LLM API keys detected – falling back to deterministic release notes." + LLM_PROVIDER="fallback" fi echo "Using LLM provider: ${LLM_PROVIDER}" @@ -241,8 +241,22 @@ print_section() { # Deterministic fallback when no LLM providers are available generate_fallback_release_notes() { + local raw_subjects=() + mapfile -t raw_subjects < <(echo "$COMMIT_LOG" | sed 's/^[0-9a-f]\+ //') + local subjects=() - mapfile -t subjects < <(echo "$COMMIT_LOG" | sed 's/^[0-9a-f]\+ //') + local subject lower + for subject in "${raw_subjects[@]}"; do + lower=$(echo "$subject" | tr '[:upper:]' '[:lower:]') + if [[ "$lower" =~ (release[[:space:]-]?notes|release[[:space:]-]?workflow|workflow|github|ci|lint|docs|documentation|helm|auto-update|mock|dry[[:space:]-]?run|test|integration|build|validation|telemetry|release[[:space:]-]?assets|fallback|prepare) ]]; then + continue + fi + subjects+=("$subject") + done + + if [ ${#subjects[@]} -eq 0 ]; then + subjects=("${raw_subjects[@]}") + fi local features=() local bugs=() @@ -302,20 +316,20 @@ curl -fsSL https://raw.githubusercontent.com/rcourtman/Pulse/main/install.sh | b EOQI echo "" echo "**Docker:**" - cat <