Files
fullex e97480c4c9 docs(breaking-changes): introduce v2 user-impact change log
Add an internal record for v2 changes that affect how users use the
app. PR authors drop a fragment .md per change; the release manager
aggregates and translates them into the Chinese user-facing release
note at v2.0.0, then discards the fragments with v2-refactor-temp/.

Also translate v2-refactor-temp/README.md to English and link the new
directory from it.
2026-04-29 19:10:45 -07:00

74 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Breaking Changes Log
Internal record of v2 changes that affect how users use the app. Entries here are working material — at v2.0.0 release time they are aggregated and translated into the Chinese user-facing release note, then discarded with `v2-refactor-temp/`.
## When to add an entry
Add an entry when a v2 change is **user-perceivable and affects how users use the app**. Examples:
| Type | Example |
|------|---------|
| Removed | A built-in integration / page / setting is gone |
| Changed | Default model, default behavior, or interaction flow is different |
| Moved | A setting or feature is now under a different menu / location |
| Data migration | A v1 field is dropped, transformed, or no longer preserved |
| Shortcut | A keyboard shortcut, URL scheme, or CLI surface is changed |
| Platform | Minimum OS version, required external service, or network requirement is changed |
## When NOT to add an entry
Pure internal refactors with no user-visible impact. The user cannot tell these happened:
- IPC channel renamed / consolidated
- Service split, lifecycle migration, decorator changes
- Drizzle schema microchanges that round-trip identically through migration
- Internal type renames, file relocations under `src/main/services/`
If unsure, err on the side of recording — easier to drop a notice during release prep than to recover a missed change.
## File naming
`YYYY-MM-DD-<brief-kebab-case>.md`
- Date is the entry author date (when you create the file), not PR merge date — keeps naming stable across rebases and reverts
- Brief is a short kebab-case description, ≤ 6 words
- Examples: `2026-04-29-remove-bilibili-integration.md`, `2026-04-29-default-model-changed-to-gemini.md`
## Authoring
1. Copy `_template.md` to `YYYY-MM-DD-<brief>.md`
2. Fill the frontmatter and body. See "Field reference" below
3. If `What the user should do` is not yet decided, write `TBD`
4. Commit as part of the PR that introduces the change
## Field reference
| Field | Required | Meaning |
|-------|----------|---------|
| `title` | yes | Short, user-visible headline. Not a commit subject — write what the user would notice |
| `category` | yes | One of `removed`, `changed`, `moved`, `data-migration`, `shortcut`, `platform`, `other` — for grouping at release time |
| `severity` | yes | `breaking` = user must take action / will be confused; `notice` = user should know but the app keeps working |
| `introduced_in_pr` | yes | `#<PR number>`; if no PR (direct push), use the commit hash |
| `date` | yes | `YYYY-MM-DD`, when this entry was authored |
| `What changed` | yes | 13 sentences. Concrete user-visible behavior, not implementation |
| `Why this matters to the user` | yes | What will the user notice, when, and where |
| `What the user should do` | yes | Workaround, replacement feature, manual step, or `nothing — automatic`. `TBD` allowed |
| `Notes for release manager` | no | Caveats, edge cases, related entries to merge, screenshots to attach |
## Language
All entries are in English. The Chinese translation happens once at release time, not per entry.
## Lifecycle
```
PR introduces user-impacting change
→ author drops an .md fragment here
→ fragments accumulate during v2 development
→ at v2.0.0 release prep, release manager aggregates, translates, polishes
→ published as Chinese user-facing release note
→ fragments are discarded together with v2-refactor-temp/
```
This mirrors the `.changeset/` fragment-then-discard pattern. The fragments are not the permanent record — the published release note is.