docs: add a contributing guide

Codeberg became canonical for issues, PRs and releases, but there was
nothing telling a contributor how any of it works — no CONTRIBUTING.md at
all, and no contributor entry point in the README.

The workflow it documents is issue-first: a feature needs a yes-or-no
before it needs code, since whether Calendula should do a thing is the one
decision a patch cannot make. Both features and bugs get a milestone, and
that milestone names the branch a PR targets (2.18.0 -> release/v2.18.0),
because main is a release trigger rather than a staging area. Typo and docs
fixes skip straight to a PR — an issue-per-typo helps nobody.

Two traps get their own sections because both waste a contributor's whole
afternoon: translations never go through PRs (Weblate owns every values-*
file, German included, and overwrites hand-edits on the next sync), and a
clone without --recurse-submodules cannot configure at all, since
floret-kit is a composite build compiled from source.

The rules section is the invariants that actually turn into review
comments — no network, no second database, no hand-patching UI state after
a write, domain/ free of Android imports, JVM-first tests, and the
reproducible-build flags that the official F-Droid repo depends on.
This commit is contained in:
2026-07-30 10:13:36 +02:00
parent db7094c54e
commit fbb14f9334
8 changed files with 359 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
---
name: Bug report
about: Something doesn't work the way it should
title: ""
labels:
- bug
---
### What happened
### What you expected
### Steps to reproduce
1.
2.
3.
### Environment
- Calendula version: <!-- Settings → bottom of the screen -->
- Android version:
- Device:
- Installed from: <!-- official F-Droid / the self-hosted repo / built from source -->
- Affected calendar: <!-- Google, CalDAV (DAVx5, Nextcloud, …), on-device/local,
subscribed/WebCal, birthdays — provider behaviour differs
a lot per account type, so this often points straight at
the cause -->
- Time zone: <!-- only if the problem involves dates or all-day events -->