https://github.com/sangaibisi/changeweave
AI-native changelog generator β analyzes actual code diffs (not just commit messages) to produce intelligent release notes. Spring Boot + Next.js + MCP server. Supports GitHub, GitLab, Bitbucket.
https://github.com/sangaibisi/changeweave
ai bitbucket changelog developer-tools github gitlab mcp model-context-protocol nextjs openai release-notes self-hosted spring-boot typescript
Last synced: about 1 month ago
JSON representation
AI-native changelog generator β analyzes actual code diffs (not just commit messages) to produce intelligent release notes. Spring Boot + Next.js + MCP server. Supports GitHub, GitLab, Bitbucket.
- Host: GitHub
- URL: https://github.com/sangaibisi/changeweave
- Owner: Sangaibisi
- License: mit
- Created: 2026-04-17T20:49:23.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-04-17T20:59:36.000Z (2 months ago)
- Last Synced: 2026-04-17T22:40:05.178Z (2 months ago)
- Topics: ai, bitbucket, changelog, developer-tools, github, gitlab, mcp, model-context-protocol, nextjs, openai, release-notes, self-hosted, spring-boot, typescript
- Language: TypeScript
- Size: 246 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# π§΅ ChangeWeave
### **AI-native changelog generator that reads your code β not just your commit messages.**
*Stop copy-pasting git logs. Ship release notes your users actually understand.*
[](./LICENSE)
[](https://github.com/Sangaibisi/changeweave/pulls)







---
## π― The Problem
> *"feat: stuff"*, *"fix: bug"*, *"wip"*, *"asdf"* β every changelog author's nightmare.
Traditional changelog tools scrape commit messages and hope for the best. They miss breaking changes hiding inside refactors, get confused by squashed PRs, and produce release notes that read like `git log | grep -v chore`.
**ChangeWeave opens the diffs.** It reads what actually changed, groups related edits, filters noise, detects breaking changes, and writes release notes that a product manager β not just a committer β would be proud to ship.
## β¨ Features
- π¬ **Diff-aware analysis** β categorizes changes and scores impact from real code, not commit message guesswork
- ποΈ **Tiered context engine** β smart token budgeting across 3 tiers (summary β diffs β full files) so you only pay for depth where it matters
- π₯ **Breaking change detection** β flags removed exports, changed signatures, altered routes, schema migrations
- π§Ή **Noise filtering & PR grouping** β merges chatty commits, collapses revert chains, groups related edits into logical units
- π **Multi-provider** β GitHub Β· GitLab Β· Bitbucket Cloud Β· Bitbucket Data Center (self-hosted)
- πΊοΈ **15 languages** β generate changelogs in any of 15 languages with one click
- π¨ **Tone & audience tuning** β technical, marketing, casual β pick per release
- π **Public changelog pages** β shareable URLs with view analytics and referrers
- π€ **MCP server built-in** β drive it from Claude Desktop, Cursor, or Windsurf via the Model Context Protocol
- π **Privacy-first** β fully self-hostable, tokens encrypted at rest, SSRF-guarded outbound calls
- π **MIT licensed** β no usage limits, no telemetry, no vendor lock-in
## ποΈ Architecture
```
ββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
βΌ β
βββββββββββββββ ββββββββββββββββ ββββββ΄ββββββββ
β π Browser βββββ UI βββΆβ π¨ Next.js ββββ API ββΆβ β Spring β
βββββββββββββββ β Frontend β β Boot API β
ββββββββββββββββ ββββ¬βββ¬βββ¬ββββ
β β β
βββββββββββββββββββββββββββββ β ββββββββββ
βΌ βΌ βΌ
ββββββββββββββββ ββββββββββββββββ ββββββββββ
β π§ MCP Serverβ β π Postgres β βπ΄ Redisβ
β (Node/TS) β β + Flyway β β cache β
ββββββββ¬ββββββββ ββββββββββββββββ ββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββ
β π GitHub Β· π¦ GitLab Β· πͺ£ Bitbucket β
ββββββββββββββββββββββββββββββββββββββββββββ
```
### How a release note is born π£
1. **π₯ Trigger** β webhook fires on `git push`, or you hit *Generate* manually in the dashboard.
2. **π‘ Fetch** β backend pulls commits + diffs via the provider API (GitHub / GitLab / Bitbucket).
3. **π§ͺ Analyze** β MCP server runs the pipeline:
- `noise-filter` drops boilerplate commits
- `revert-detector` collapses `A β B β revert(A+B)` chains
- `pr-grouper` merges related commits into logical changes
- `commit-clusterer` finds semantic clusters
- `impact-scorer` tags HIGH / MEDIUM / LOW impact
- `breaking-detector` sniffs out API breaks
- `module-mapper` groups files into features
4. **π¬ Generate** β `AITransformationService` turns the structured analysis into prose (OpenAI by default, rule-based fallback when no key is set).
5. **π Publish** β you review, edit, and ship to a public changelog page with a shareable URL.
### Tech stack
| Layer | What's inside |
|-------|--------------|
| **Backend** β | Java 17 Β· Spring Boot 3 Β· Spring Security Β· JPA Β· Flyway migrations |
| **Frontend** π¨ | Next.js 14 (App Router) Β· React Β· TailwindCSS Β· Zustand Β· React Query |
| **MCP Server** π§ | Node.js 18+ Β· TypeScript Β· `@modelcontextprotocol/sdk` Β· Octokit |
| **Storage** ποΈ | PostgreSQL 16 Β· Redis 7 |
| **AI** π€ | OpenAI (`gpt-4o-mini` default) β any OpenAI-compatible endpoint works |
| **Ops** π³ | Docker Β· Docker Compose (dev + prod profiles) |
## π Quick Start (Docker)
**Prerequisites:** [Docker Desktop](https://www.docker.com/products/docker-desktop/) and git.
```bash
git clone https://github.com/Sangaibisi/changeweave.git
cd changeweave
cp .env.example .env # π‘ optional β defaults boot the app as-is
docker compose up --build -d
```
Everything comes up locally β no cloud account required:
| π§© Service | π URL |
|-----------|--------|
| Frontend | [http://localhost:3000](http://localhost:3000) |
| Backend API | [http://localhost:8080/api](http://localhost:8080/api) |
| MCP Server | [http://localhost:3100/mcp](http://localhost:3100/mcp) |
| PostgreSQL | `localhost:5432` |
| Redis | `localhost:6379` |
Register an account on the frontend and you're in. π
> π‘ Without `OPENAI_API_KEY`, ChangeWeave falls back to rule-based changelog generation. Add a key whenever you want the AI polish.
See [SETUP.md](./SETUP.md) for rebuilds, logs, resets and more.
## βοΈ Configuration
All config is env-driven. The [`.env.example`](./.env.example) ships **dev-safe defaults** β the app boots unchanged. Set these when you want the real thing:
| Variable | What it unlocks |
|----------|----------------|
| π€ `OPENAI_API_KEY` | AI-generated changelog prose |
| π `GITHUB_CLIENT_ID` / `GITHUB_CLIENT_SECRET` | GitHub OAuth login + repo connect ([create app](https://github.com/settings/developers)) |
| πͺ `GITHUB_WEBHOOK_SECRET` | Webhook signature verification |
| π¦ `GITLAB_CLIENT_ID` / `GITLAB_CLIENT_SECRET` | GitLab OAuth ([create app](https://gitlab.com/-/user_settings/applications)) |
| πͺ£ `BITBUCKET_CLIENT_ID` / `BITBUCKET_CLIENT_SECRET` | Bitbucket Cloud OAuth |
| π’ `BITBUCKET_DC_URL` | Base URL for self-hosted Bitbucket Data Center (PAT auth) |
| π `JWT_SECRET` | **Production-required** β min 256-bit random string |
| π§ `MAIL_*` | SMTP credentials (SendGrid by default) for transactional email |
## π» Local Development (hybrid)
Run infra in Docker, backend/frontend on your host for fast reloads:
```bash
# β Only the infra
docker compose up -d postgres redis
# Backend (terminal 1)
cd backend
mvn spring-boot:run
# Frontend (terminal 2)
cd frontend
npm install
npm run dev
```
## π€ MCP Integration
ChangeWeave ships its own Model Context Protocol server so Claude, Cursor, Windsurf and friends can analyze commits and draft changelogs **from inside your editor**.
```json
{
"mcpServers": {
"changeweave": {
"command": "npx",
"args": ["changeweave-mcp"],
"env": { "GITHUB_TOKEN": "ghp_xxxxxxxxxxxx" }
}
}
}
```
Tools exposed: `analyze_commits`, `generate_changelog`, `get_commit_diff`, `compare_refs`, `detect_breaking_changes`, `list_changelogs`, `publish_changelog`.
Full docs β [`mcp/README.md`](./mcp/README.md).
## π Production Deployment
`docker-compose.prod.yml` is the production profile:
- β
Requires a real `JWT_SECRET` (fails fast if missing)
- β
Requires `PUBLIC_URL` + `CORS_ORIGINS` to point at your domain
- β
Expects an external reverse-proxy network named `changeweave-proxy` (Traefik / Caddy / nginx-proxy β your call)
```bash
export PUBLIC_URL=https://changelog.your-domain.com
export CORS_ORIGINS=https://changelog.your-domain.com
export JWT_SECRET=$(openssl rand -base64 48)
export OPENAI_API_KEY=sk-...
docker network create changeweave-proxy
docker compose -f docker-compose.prod.yml up -d
```
Point your reverse proxy at the `frontend` (port 3000) and `backend` (port 8080) services and you're live. π
## π‘οΈ Security
- π JWT access tokens (15 min) + refresh tokens (7 days) with rotation
- π§ SSRF guard on all outbound HTTP calls
- π Provider tokens encrypted before being persisted
- πΈοΈ Production compose isolates the app network from the public proxy network
- π§΅ No telemetry β the project phones nobody home
Found a security issue? Please [open an issue](https://github.com/Sangaibisi/changeweave/issues) β don't disclose publicly until there's a fix.
## π Project Layout
```
changeweave/
βββ π backend/ Spring Boot API
β βββ src/main/java/com/changelogai/
β βββ controller/ REST endpoints
β βββ service/ Business logic
β β βββ provider/ GitHub / GitLab / Bitbucket adapters
β β βββ AITransformationService.java
β βββ security/ JWT + SSRF guard
β βββ entity/ JPA models
βββ π frontend/ Next.js 14 app
β βββ src/app/
β βββ (auth)/ login / register
β βββ dashboard/ authenticated UI
β βββ changelog/[slug]/ public changelog pages
βββ π mcp/ MCP server (Node/TS)
β βββ src/
β βββ analysis/ breaking Β· revert Β· clusterer Β· impact
β βββ context/ 3-tier token budgeting
β βββ tools/ 7 MCP tools
β βββ providers/ git provider integrations
βββ π³ docker-compose.yml dev stack
βββ π³ docker-compose.prod.yml prod stack
βββ π SETUP.md docker cheatsheet
```
## π€ Contributing
PRs and issues are warmly welcome. π
- No CLA required β contributions are released under the MIT License
- Keep changes focused; one concern per PR
- Run the stack locally before submitting (see *Local Development*)
- Follow existing code style β no separate style guide yet
First time contributing to OSS? [Open an issue](https://github.com/Sangaibisi/changeweave/issues/new) and say hi β we'll point you at something friendly.
## π License
[MIT](./LICENSE) Β© Sangaibisi β free to use, modify, and ship. Go build cool stuff.
---
**β If ChangeWeave saves you even one painful release day, please star the repo.**
Made with π§΅ and long nights.