@@ -279,19 +279,24 @@ get_closed_issues_since_last_release() {
279279
280280 local since_date=" $1 "
281281 local issues_json
282- if [ -z " $since_date " ]; then
283- log_info " get_closed_issues_since_last_release" " No since_date provided. Fetching all closed issues."
284- issues_json=$( gh issue list --state closed --json number,title,url,labels 2> /dev/null)
285- else
286- issues_json=$( gh issue list --state closed --since " $since_date " --json number,title,url,labels 2> /dev/null)
287- fi
282+
283+ # Always fetch all closed issues and filter manually for better reliability
284+ log_info " get_closed_issues_since_last_release" " Fetching all closed issues for filtering..."
285+ issues_json=$( gh issue list --state closed --json number,title,url,labels,closedAt --limit 100 2> /dev/null)
288286
289287 if [ -z " $issues_json " ] || [ " $issues_json " = " []" ]; then
290- log_info " get_closed_issues_since_last_release" " No closed issues found since $since_date ."
288+ log_info " get_closed_issues_since_last_release" " No closed issues found."
291289 echo " "
292290 log_timing " get_closed_issues_since_last_release" " $start_time "
293291 return 0
294292 fi
293+
294+ # If no since_date provided, return all issues
295+ if [ -z " $since_date " ]; then
296+ log_info " get_closed_issues_since_last_release" " No since_date provided. Using all closed issues."
297+ else
298+ log_info " get_closed_issues_since_last_release" " Filtering issues closed after: $since_date "
299+ fi
295300
296301 local changelog_entries=" "
297302 local issue_count=0
@@ -303,9 +308,25 @@ get_closed_issues_since_last_release() {
303308 title=$( echo " $issue " | jq -r ' .title' )
304309 local url
305310 url=$( echo " $issue " | jq -r ' .url' )
311+ local closed_at
312+ closed_at=$( echo " $issue " | jq -r ' .closedAt' )
306313 local labels
307314 labels=$( echo " $issue " | jq -r ' .labels[].name' | paste -s -d, -)
308315
316+ # Filter by date if since_date is provided
317+ if [ -n " $since_date " ]; then
318+ # Convert dates to timestamps for comparison
319+ local since_timestamp
320+ since_timestamp=$( date -d " $since_date " +%s 2> /dev/null || echo " 0" )
321+ local closed_timestamp
322+ closed_timestamp=$( date -d " $closed_at " +%s 2> /dev/null || echo " 0" )
323+
324+ if [ " $closed_timestamp " -le " $since_timestamp " ]; then
325+ log_debug " get_closed_issues_since_last_release" " Skipping issue #$number (closed before $since_date )"
326+ continue
327+ fi
328+ fi
329+
309330 # Filter out issues with 'skip-changelog' label
310331 if [[ " $labels " == * " skip-changelog" * ]]; then
311332 log_debug " get_closed_issues_since_last_release" " Skipping issue #$number (\" $title \" ) due to 'skip-changelog' label."
@@ -314,6 +335,7 @@ get_closed_issues_since_last_release() {
314335
315336 changelog_entries+=" - $title (#$number ) [Link]($url )\n"
316337 issue_count=$(( issue_count + 1 ))
338+ log_debug " get_closed_issues_since_last_release" " Added issue #$number to changelog: $title "
317339 done < <( echo " $issues_json " | jq -c ' .[]' )
318340
319341 log_info " get_closed_issues_since_last_release" " Found $issue_count issues for changelog."
0 commit comments