mirror of
https://github.com/modrinth/code.git
synced 2026-08-25 00:55:25 +00:00
137 lines
6.6 KiB
Markdown
137 lines
6.6 KiB
Markdown
# Changelog Style Guide
|
|
|
|
## Core Rule
|
|
|
|
Each bullet describes one user-visible change. Write one plain-language sentence from the perspective of the user.
|
|
|
|
Do not add a change that you can explain only with internal code, component, or refactor details.
|
|
|
|
## Voice and Tense
|
|
|
|
- Use the past tense with an implicit subject. The section heading supplies the context for the bullet.
|
|
- Correct: `Fixed a missing gap between the project filter tabs and the project list.`
|
|
- Correct: `Added support for Java 25.`
|
|
- Incorrect: `We fixed...`, `This fixes...`, `Fixes...`, or `Will fix...`.
|
|
- Do not use the first person. A featured release that links to a blog post is an exception.
|
|
- Use the second person only for a direct user action.
|
|
|
|
Example of a direct action: `Joining a server downloads the required content and opens the server.`
|
|
|
|
## Section and Verb Agreement
|
|
|
|
Make the first verb agree with its section. Do not put a `Fixed` bullet in `## Added`.
|
|
|
|
| Section | Typical first words |
|
|
| ------------- | -------------------------------------------------------------------------- |
|
|
| `## Added` | Added, Introduced, New |
|
|
| `## Changed` | Refreshed, Redesigned, Moved, Renamed, Updated, Consolidated, Improved |
|
|
| `## Fixed` | Fixed |
|
|
| `## Security` | Fixed, with a clear security context |
|
|
|
|
You can omit `Added` in the `## Added` section because the heading supplies it:
|
|
|
|
- `Server statistics in an information card inside the server settings modal.`
|
|
- `Confirmation modal for server resubscription.`
|
|
|
|
Keep `Fixed` in most `## Fixed` bullets because it makes the text clear. Use one pattern in each entry.
|
|
|
|
## Content
|
|
|
|
Describe the result that the user can see. Do not describe the implementation.
|
|
|
|
- Correct: `Server CPU and memory graphs no longer freeze after a hard crash or out-of-memory termination.`
|
|
- Incorrect: `Refactored the metrics polling hook to clear stale state after a socket disconnection.`
|
|
|
|
- Correct: `Historical log files now load in the background, so selection between files is immediate.`
|
|
- Incorrect: `Moved log file fetching into a background worker.`
|
|
|
|
Do not list a refactor that has no user-visible result.
|
|
|
|
You can list an internal change when it gives a visible improvement in performance, reliability, or consistency.
|
|
|
|
## Specific Terms
|
|
|
|
Give sufficient detail for the user to identify the applicable item.
|
|
|
|
- Vague: `Fixed a bug on the project page.`
|
|
- Specific: `Fixed project version rows that extended past the table. Version tags now truncate.`
|
|
|
|
- Vague: `Improved the UI.`
|
|
- Specific: `Refreshed the server cards for visual consistency.`
|
|
|
|
Name the applicable page, tab, modal, or feature. Examples include the Content tab, server panel header, Worlds tab, and project page.
|
|
|
|
## Length
|
|
|
|
- Write one sentence in each bullet.
|
|
- Use a second bullet when the change needs a second sentence.
|
|
- Use fewer than 25 words when possible.
|
|
- Use tab-indented sub-bullets when one change has multiple related parts.
|
|
|
|
Refer to the `## Added` section in the v0.12.0 app release for a sub-bullet example.
|
|
|
|
## Punctuation
|
|
|
|
- End each bullet with a period.
|
|
- Use sentence case, not title case.
|
|
- Use straight quotation marks, not curly quotation marks: `"foo"`.
|
|
- Use code formatting for filenames, flags, and literal strings: `.log` and `Restart`.
|
|
|
|
Historical entries do not always use periods. Use periods in all new entries.
|
|
|
|
## Product and UI Names
|
|
|
|
- Use the public names `Modrinth App`, `Modrinth Hosting`, and `Modrinth`.
|
|
- Do not use deprecated names, such as `Modrinth Servers`.
|
|
- Use the labels that appear in the UI.
|
|
- Capitalize a tab or page name when you refer to its label.
|
|
- Use lowercase when you refer to a generic action, such as `browse content`.
|
|
|
|
Examples of UI labels include Content tab, Worlds tab, Files tab, Logs page, server panel, project page, and Discover page.
|
|
|
|
## Prohibited Content
|
|
|
|
- Do not assign blame. Describe the correction without the release that caused the problem.
|
|
- Do not refer to pull requests, issues, or commits.
|
|
- Do not refer to internal team members or processes.
|
|
- Do not apologize or add an opinion about the change.
|
|
- Do not use vague intensifiers. Give a measurement when possible, or remove the adverb.
|
|
- Do not list each small correction from one larger change.
|
|
- Do not use `issue with` or `issue where` as filler.
|
|
|
|
You can credit a notable community contribution with a link to the contributor's GitHub profile.
|
|
|
|
Example: `Added support for Java 25. Thanks to [@username](https://github.com/username)!`
|
|
|
|
Replace `Fixed an issue with misaligned buttons` with `Fixed misaligned buttons.`
|
|
|
|
## Weak-Bullet Rewrites
|
|
|
|
| Weak | Better |
|
|
| ---------------------------------------------------------- | ------------------------------------------------------------------------------------- |
|
|
| `Fixed a bug.` | `Fixed excessive brightness on project icons during hover.` |
|
|
| `Various improvements to the server panel.` | Divide it into specific bullets, or remove it. |
|
|
| `Refactored the logs page to use a new component.` | `Redesigned the Logs page to match the Modrinth Hosting server panel.` |
|
|
| `Fixed an issue where the server address was not copyable.` | `The server address in the panel header now copies to the clipboard when selected.` |
|
|
| `Made some changes to the Content tab.` | List each user-visible change, or remove the bullet. |
|
|
| `Fixed UX issues.` | Name the specific user-experience problem. |
|
|
|
|
## Featured Release Bullets
|
|
|
|
A featured release has a linked blog-post heading, such as `## [Introducing Server Projects](/news/article/...)`.
|
|
|
|
Use one to four lines below the heading to summarize the primary changes. Then, link to the blog post.
|
|
|
|
The bullets do not need to contain all details. The blog post contains the complete information.
|
|
|
|
## Bullet Checklist
|
|
|
|
Before you commit a bullet, make sure that it meets these requirements:
|
|
|
|
1. A user who is not a developer can understand it.
|
|
2. It describes behavior, not implementation.
|
|
3. Its verb uses the correct tense for the section.
|
|
4. It identifies the applicable tab, page, modal, or feature.
|
|
5. It contains one sentence and ends with a period.
|
|
6. It replaces vague words with specific terms.
|