Files
hilman2andClaude Opus 5 e098e497c1 CLAUDE.md auf Englisch
Die Datei richtet sich an alle, die am Projekt arbeiten, nicht nur an mich.
Damit gehoert sie in dieselbe Sprache wie der uebrige Projektkontext fuer
Mitwirkende.

Inhaltlich unveraendert. Commit-Nachrichten bleiben auf Deutsch, so wie es die
bisherige Historie haelt; die Regel steht jetzt nur auf Englisch da.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 13:00:55 +02:00

71 lines
3.0 KiB
Markdown

# Working rules for this repository
## Changelog
`CHANGELOG.md` is **written in English for the people who use easy-ocpp, not
for developers**. An entry describes what changes for someone running the
program: what they can now do, what looks different, what they need to watch
out for when updating.
Keep file names, function names, module structure and invisible refactorings
out of it, along with words like "refactored", "bumped" or "implemented".
Anyone who needs the technical view reads the commits.
Good: Charging sessions now stop on their own once they reach a
target amount of energy or a time you set.
Bad: Added limit_wh and limit_until columns plus a watchdog task.
Every released version gets a section with its number and date. Lead with what
affects the most people. Notes about updating go at the end of the section,
because they only matter once someone has decided to install it.
## Language and style
- **No em dashes (—)** in code, comments, documentation, commit messages or on
the website. Rewrite the sentence instead of swapping the character for
another one.
- Commit messages are written in German, as they have been so far. They explain
the why, not just the what.
- The state of a development machine does not belong in the project history.
Discuss tooling problems in the chat or in the pull request.
## Migrations
Files in `migrations/` are **immutable once they have been released**. sqlx
embeds their content at compile time, builds a SHA-384 checksum over it and
compares that against `_sqlx_migrations` at startup. Any change to the content,
including a comment, makes existing installations stop with "migration N was
previously applied but has been modified".
Changes always go into a new migration. `db::repair_line_ending_checksums`
only covers differing line endings and nothing else.
`.gitattributes` enforces `*.sql text eol=lf`. It has to stay that way, or
Windows and Linux runners produce different checksums for the same file.
## Website
`docs/` is **generated**. Never edit it by hand, run `python
tools/build_pages.py` instead. The generator writes twelve HTML files, the
stylesheet, the sitemap and robots.txt.
The site loads **nothing from third-party servers**: no fonts, no scripts, no
images, no tracking. That is deliberate. It keeps the site fast and the privacy
policy short. Anyone adding an external resource has to update the privacy
policy and may need a consent banner.
## Four languages
German, English, French and Spanish. Changing a text means changing all four:
`README*.md`, `INSTALL*.md` together with `ANLEITUNG.md`, the table in
`src/i18n.rs`, and the content in `tools/build_pages.py`.
## Raising the version
Always change `Cargo.toml` and `Cargo.lock` together, otherwise CI fails on
`cargo build --locked`. Then update the title and footer lines of the four
installation guides and add a section to `CHANGELOG.md`.
Pushing a tag `vX.Y.Z` triggers the release workflow, which builds and
publishes the binaries for Windows and Linux.