Add community infrastructure: issue + PR templates, CoC

Gitea issue templates (.gitea/issue_template/):
- bug.yml: structured form requiring version, environment,
  what-happened, repro steps, expected, optional logs. Routes
  security reports to security@librete.ch instead of public
  issues.
- feature.yml: prompts for the underlying problem before the
  proposed solution, plus alternatives and out-of-scope.

Pull request template (.gitea/PULL_REQUEST_TEMPLATE.md):
checklist for tests, lint, manual exercise, docs, and changelog.
Asks for explicit reviewer notes so trade-offs surface in the
PR description rather than being lost in chat.

CODE_OF_CONDUCT.md: links to Contributor Covenant 2.1 verbatim
rather than inlining; documents scope, reporting address
(conduct@librete.ch), and points enforcement at the Covenant's
own Enforcement Guidelines.

README links the docs/ tree, CONTRIBUTING, and the CoC so new
contributors find the entry points.

Closes #31.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-28 23:18:10 +02:00
parent 61edef9483
commit e3c86a92c0
5 changed files with 166 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
## Summary
What does this PR change, and why?
## Linked issue
Closes #
## Changes
-
## Testing
- [ ] `make test` passes locally
- [ ] `make lint` passes locally
- [ ] Added or updated tests for the changed behaviour
- [ ] Manually exercised the affected flow (frontend / API / etc.)
## Documentation
- [ ] Updated relevant docs in `docs/`
- [ ] Updated `CHANGELOG.md` if user-visible
- [ ] No documentation change needed
## Notes for reviewers
Anything you want a reviewer to look at specifically? Trade-offs
considered? Migrations to flag?

View File

@@ -0,0 +1,60 @@
name: Bug report
about: Something is broken or doesn't work as documented
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to file a bug. Please fill in
as much of the form as you can — the more concrete the
report, the faster we can fix it.
For security issues, **do not** open a public issue.
Email `security@librete.ch` instead.
- type: input
id: version
attributes:
label: librenotes version
description: Output of `librenotes version` or the Docker image tag.
placeholder: v0.1.0
validations:
required: true
- type: input
id: environment
attributes:
label: Environment
description: Browser + OS for frontend bugs; OS + Go version for backend bugs.
placeholder: Firefox 124 on macOS 14 / Go 1.22 on Debian 12
validations:
required: true
- type: textarea
id: what-happened
attributes:
label: What happened?
description: A clear, concrete description of the bug.
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: Steps to reproduce
description: Numbered steps from a clean starting state.
placeholder: |
1. Sign in as a new user.
2. Create a note named "Test".
3. Click the toggle.
4. ...
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behaviour
validations:
required: true
- type: textarea
id: logs
attributes:
label: Relevant logs / network traces
description: Any server logs, browser console errors, or HAR snippets.
render: shell

View File

@@ -0,0 +1,38 @@
name: Feature request
about: Suggest a new capability or improvement
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Thanks for proposing a feature. Before opening a request,
please skim the open issues to see if it already exists.
- type: textarea
id: problem
attributes:
label: What problem does this solve?
description: |
Describe the user need first, not the implementation.
"I can't find old notes when I have hundreds" is more
useful than "Add full-text search."
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed solution
description: How would you like it to work?
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: What other approaches did you think about, and why are they worse?
- type: textarea
id: scope
attributes:
label: Scope
description: |
Out of scope is just as useful as in scope. What does
this proposal NOT include?

26
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,26 @@
# Code of Conduct
This project adopts the **Contributor Covenant**, version 2.1,
verbatim. The full text is published at
[contributor-covenant.org/version/2/1/code_of_conduct/](https://www.contributor-covenant.org/version/2/1/code_of_conduct/)
and is the authoritative version that governs participation in
this project.
## Scope
The Contributor Covenant applies in all project spaces — issues,
pull requests, code review, the project's communication
channels, and any official events.
## Reporting
To report unacceptable behaviour, contact the project maintainers
at `conduct@librete.ch`. All reports will be reviewed and
investigated promptly and fairly. The maintainers are obliged to
respect the privacy and security of the reporter.
## Enforcement
Maintainers will follow the Contributor Covenant
[Enforcement Guidelines](https://www.contributor-covenant.org/version/2/1/code_of_conduct/#enforcement-guidelines)
when responding to any reported incident.

View File

@@ -76,6 +76,19 @@ by Alon Swartz, used and redistributed under the MIT License. See
[NOTICE](./NOTICE) for the upstream commit hash at fork time and
instructions for tracking upstream changes.
## Documentation
- [User guide](./docs/user-guide.md)
- [Self-hosting](./docs/self-hosting.md)
- [API reference](./docs/api.md)
- [Operations](./docs/operations.md)
## Contributing
See [CONTRIBUTING.md](./CONTRIBUTING.md) for setup, conventions, and
the PR process. By participating you agree to the
[Code of Conduct](./CODE_OF_CONDUCT.md).
## License
MIT — see [LICENSE](./LICENSE). Copyright is shared between the original