Skip to content

Conversation

@kevalyq
Copy link
Contributor

@kevalyq kevalyq commented Nov 2, 2025

Problem

Same issue as described in SecPal/api#80 - pre-push hook error messages for PR size violations were unclear.

Solution

Enhanced error message with clear visual structure (see SecPal/api#81 for example output).

Changes

  • Visual separators for attention
  • Exact breakdown (insertions + deletions)
  • Numbered bypass options
  • Clear "Push aborted" message

Related: SecPal/api#80, SecPal/api#81

SPDX-FileCopyrightText: 2025 SecPal
SPDX-License-Identifier: MIT

Syncs CHANGELOG validation logic from api repo (PR #77) to contracts.

Changes:
- Validates [Unreleased] section exists on feature/fix/refactor branches
- Checks for minimum content (MIN_CHANGELOG_LINES=3)
- Exempts docs/*, chore/*, ci/*, test/* branches
- Robust parsing handles [Unreleased] as last section (edge case fix)
- Uses configurable variables for maintainability

Context: Multi-repo script synchronization initiative. Ensures
consistent CHANGELOG policy enforcement across all SecPal repos.

Benefits:
- ✅ Prevents "forgot to update CHANGELOG" PR comments
- ✅ Catches empty [Unreleased] sections (copy-paste artifacts)
- ✅ Smart exemptions for docs-only branches
- ✅ Early feedback (local preflight vs CI failure)

Related:
- api #77: Original CHANGELOG validation implementation
- frontend #55: Parallel sync to frontend repo
- .github #168: Template documentation
…s, MIN_CHANGELOG_LINES)

- Replace bash-specific [[ =~ ]] with POSIX case statement for portability
- Use grep -nE for robust [Unreleased] matching (supports Keep a Changelog links)
- Extract duplicated grep chains to filter_changelog_content() with whitespace tolerance
- Clarify MIN_CHANGELOG_LINES comment about what is counted (substantive content only)

Addresses all 4 Copilot review comments on PR #39
Same fix as SecPal/api#81 - enhanced error message clarity with:
- Visual separators for attention
- Exact breakdown (insertions + deletions)
- Numbered options for bypass
- Clear "Push aborted" message

See SecPal/api#80 for problem description
Copilot AI review requested due to automatic review settings November 2, 2025 19:30
@github-actions
Copy link

github-actions bot commented Nov 2, 2025

💡 Tip: Consider Using Draft PRs

Benefits of opening PRs as drafts initially:

  • 💰 Saves CI runtime and Copilot review credits
  • 🎯 Automatically sets linked issues to "🚧 In Progress" status
  • 🚀 Mark "Ready for review" when done to trigger full CI pipeline

How to convert:

  1. Click "Still in progress? Convert to draft" in the sidebar, OR
  2. Use gh pr ready when ready for review

This is just a friendly reminder - feel free to continue as is! 😊

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR enhances the preflight.sh script with two key improvements: CHANGELOG validation for feature branches and improved error messaging for large PRs.

Key Changes:

  • Adds automated CHANGELOG.md validation that enforces non-empty [Unreleased] sections for feature/fix/refactor branches (exempts docs/chore/ci/test branches)
  • Refactors PR size check to display separate insertion/deletion counts with a detailed, formatted error message

- Combine multiple grep -Ev calls into single grep with pattern group
- Use grep -m 1 for early termination (performance improvement)
- Fix sed range calculation (UNRELEASED_END is relative, not absolute)
- Add clarifying comments about CHANGELOG_EXEMPT_PREFIXES and case sync
- Improve warning message with specific line count and non-blocking note

Addresses Copilot review comments in PR #40
…om/SecPal/contracts into fix/improve-preflight-error-messages
@kevalyq kevalyq merged commit 257a382 into main Nov 2, 2025
8 checks passed
@kevalyq kevalyq deleted the fix/improve-preflight-error-messages branch November 2, 2025 19:56
@github-actions
Copy link

github-actions bot commented Nov 2, 2025

💡 Tip: Consider Using Draft PRs

Benefits of opening PRs as drafts initially:

  • 💰 Saves CI runtime and Copilot review credits
  • 🎯 Automatically sets linked issues to "🚧 In Progress" status
  • 🚀 Mark "Ready for review" when done to trigger full CI pipeline

How to convert:

  1. Click "Still in progress? Convert to draft" in the sidebar, OR
  2. Use gh pr ready when ready for review

This is just a friendly reminder - feel free to continue as is! 😊

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants