Skip to content

feat(ci): nightly changelog with linked issues + LLM summary + Feishu notification#677

Merged
lefarcen merged 2 commits intomainfrom
feat/nightly-feishu-notify
Mar 30, 2026
Merged

feat(ci): nightly changelog with linked issues + LLM summary + Feishu notification#677
lefarcen merged 2 commits intomainfrom
feat/nightly-feishu-notify

Conversation

@lefarcen
Copy link
Copy Markdown
Collaborator

What

Add automated changelog generation, LLM-powered summary, and Feishu card notification to the desktop nightly build workflow.

Why

  • QA team has no visibility into what changed in each nightly build
  • Commit messages are developer-oriented; testers need user-facing descriptions
  • No notification channel — testers must manually check GitHub releases

How

Changelog generation

  • Compares the latest stable release tag (v*) to HEAD
  • Extracts all merged PR numbers from commit history
  • For each PR: fetches title, affected area (from conventional commit prefix + labels), and closing issues (via closingIssuesReferences)
  • Output format shows PR title + linked issue titles so testers see the user-facing bug/feature description

Example:

[desktop] fix(desktop): white screen on startup (#597)
  → #598 nightly20260327 version (mac arm) white screen on startup

[models] fix(controller): Kimi K2.5 returns 401 (#540)
  → #555 无法调用kimi k2.5

LLM summary

  • Sends the changelog to LiteLLM (gpt-4o-mini) for a 3-5 sentence Chinese summary
  • Focuses on user-perceivable improvements and bug fixes
  • Falls back to a simple count message if LLM is unavailable

Feishu card notification

  • Interactive card with turquoise header
  • Sections: LLM summary, version info (version/commit/baseline/PR count), changelog list
  • Action buttons: DMG downloads (Apple Silicon + Intel), CI build link, E2E test link, Release page

Secret added

  • NIGHTLY_FEISHU_WEBHOOK — Feishu bot webhook URL for nightly notifications

Affected areas

  • Desktop app (Electron shell)
  • Controller (backend / API)
  • Web dashboard (React UI)
  • OpenClaw runtime
  • Skills
  • Shared schemas / packages
  • Build / CI / Tooling

Checklist

  • pnpm typecheck passes
  • pnpm lint passes
  • pnpm test passes
  • pnpm generate-types run (if API routes/schemas changed)
  • No credentials or tokens in code or logs
  • No any types introduced (use unknown with narrowing)

Notes for reviewers

  • The notify job runs in parallel with trigger-e2e (both needs: build), so it doesn't add to the total pipeline time
  • LLM step has a 30s timeout and graceful fallback — won't block the workflow
  • Changelog is capped at 20 entries in the Feishu card to avoid message size limits
  • pull-requests: read permission added for closingIssuesReferences API access

…y build

- Generate structured changelog by comparing last release tag to HEAD,
  extracting merged PRs with titles, affected areas, and closing issues
- Use LiteLLM to produce a concise Chinese summary for the Feishu card
- Send Feishu interactive card with: LLM summary, version info, PR list
  with linked issues, DMG download buttons (ARM64/Intel), CI/E2E/Release links
- Add NIGHTLY_FEISHU_WEBHOOK secret
LiteLLM endpoint is no longer available. Use the same OPENAI_BASE_URL +
OPENAI_API_KEY + google/gemini-2.5-flash setup used by nexu-pal.
@lefarcen lefarcen merged commit d6b76f0 into main Mar 30, 2026
6 checks passed
@lefarcen lefarcen mentioned this pull request Mar 30, 2026
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