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

3.0 KiB

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.