Bump version to 0.5.0
This commit is contained in:
@@ -147,9 +147,65 @@ else
|
||||
| sed 's/^/- /')
|
||||
fi
|
||||
|
||||
# ── Generate summary overview ─────────────────────────────────
|
||||
# Group completed items by keyword clusters to identify the
|
||||
# release's focus areas.
|
||||
generate_summary() {
|
||||
local all_items="$1"
|
||||
local themes=""
|
||||
|
||||
# Count items matching each theme keyword (one item per line via echo -e)
|
||||
local expanded
|
||||
expanded=$(echo -e "$all_items")
|
||||
local bot_count=$(echo "$expanded" | grep -icE 'bot|command|chat|matrix|slack|whatsapp|status|help|assign|rebuild|shutdown|whatsup' || true)
|
||||
local mcp_count=$(echo "$expanded" | grep -icE 'mcp|tool' || true)
|
||||
local docker_count=$(echo "$expanded" | grep -icE 'docker|container|gvisor|orbstack|harden|security' || true)
|
||||
local agent_count=$(echo "$expanded" | grep -icE 'agent|runtime|chatgpt|gemini|openai|model|coder' || true)
|
||||
local ui_count=$(echo "$expanded" | grep -icE 'frontend|ui|web|oauth|scaffold' || true)
|
||||
local infra_count=$(echo "$expanded" | grep -icE 'release|makefile|refactor|upgrade|worktree|pipeline' || true)
|
||||
|
||||
# Build theme list, highest count first
|
||||
local -a theme_pairs=()
|
||||
[ "$agent_count" -gt 0 ] && theme_pairs+=("${agent_count}:multi-model agents")
|
||||
[ "$bot_count" -gt 0 ] && theme_pairs+=("${bot_count}:bot commands")
|
||||
[ "$mcp_count" -gt 0 ] && theme_pairs+=("${mcp_count}:MCP tools")
|
||||
[ "$docker_count" -gt 0 ] && theme_pairs+=("${docker_count}:Docker hardening")
|
||||
[ "$ui_count" -gt 0 ] && theme_pairs+=("${ui_count}:developer experience")
|
||||
[ "$infra_count" -gt 0 ] && theme_pairs+=("${infra_count}:infrastructure")
|
||||
|
||||
# Sort by count descending, take top 3
|
||||
local sorted=$(printf '%s\n' "${theme_pairs[@]}" | sort -t: -k1 -nr | head -3)
|
||||
local labels=""
|
||||
while IFS=: read -r count label; do
|
||||
[ -z "$label" ] && continue
|
||||
if [ -z "$labels" ]; then
|
||||
# Capitalise first theme
|
||||
labels="$(echo "${label:0:1}" | tr '[:lower:]' '[:upper:]')${label:1}"
|
||||
else
|
||||
labels="${labels}, ${label}"
|
||||
fi
|
||||
done <<< "$sorted"
|
||||
|
||||
echo "$labels"
|
||||
}
|
||||
|
||||
ALL_ITEMS="${FEATURES}${FIXES}${REFACTORS}"
|
||||
SUMMARY=$(generate_summary "$ALL_ITEMS")
|
||||
if [ -n "$SUMMARY" ]; then
|
||||
SUMMARY_LINE="**Focus:** ${SUMMARY}"
|
||||
else
|
||||
SUMMARY_LINE=""
|
||||
fi
|
||||
|
||||
# Assemble the release body.
|
||||
RELEASE_BODY="## What's Changed"
|
||||
|
||||
if [ -n "$SUMMARY_LINE" ]; then
|
||||
RELEASE_BODY="${RELEASE_BODY}
|
||||
|
||||
${SUMMARY_LINE}"
|
||||
fi
|
||||
|
||||
if [ -n "$FEATURES" ]; then
|
||||
RELEASE_BODY="${RELEASE_BODY}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user