1b63765caa
Closes the remaining gaps in GitHub's community-standards check, adds explicit privacy and dependency documentation matching the plugin's "DSGVO-by-design" claim, and removes the stale upstream Crowdin artefact so the repo no longer suggests it ships its own translation pipeline. New community-health files: - CODE_OF_CONDUCT.md: project-specific, short and direct, single reporting path to kontakt@hellion-media.de - CONTRIBUTING.md: scope, accepted vs declined contributions, build and test instructions, EUPL-1.2 contribution terms, translation policy split between Hellion-specific (here) and upstream strings (Chat 2 repo) - SUPPORT.md: routing for bugs, security, privacy and casual feedback - .github/PULL_REQUEST_TEMPLATE.md: summary, change-type checklist, testing notes, compatibility notes for migrations and manifest fields, contribution checklist - .github/FUNDING.yml: comments-only file, no platforms enabled, points donors at the upstream Chat 2 maintainers' Ko-fi pages New privacy and compliance documentation: - PRIVACY.md: what the plugin stores locally (config, SQLite, EmoteCacheV1), retention defaults, the two outbound network calls (BetterTTV API+CDN with ShowEmotes opt-out, Square Enix Lodestone font once-off), explicit no-telemetry statement, GDPR Art. 15/17/18/20/21 rights mapped to plugin features, third-party privacy-policy links - THIRD_PARTY_NOTICES.md: direct NuGet dependencies with versions pinned to v0.5.4 (MessagePack, Microsoft.Data.Sqlite, morelinq, Pidgin, SixLabors.ImageSharp under Six Labors Split License 1.0), Dalamud SDK and .NET tooling, bundled Exo 2 font (OFL-1.1) and plugin icon, network-touch status per component, re-audit commands Crowdin cleanup: - crowdin.yml deleted (was upstream Chat 2's project_id 663694, pointed at /ChatTwo/Resources/Language.resx, never wired to HellionChat strings) - README, CONTRIBUTING and CODE_OF_CONDUCT no longer suggest HellionChat operates a Crowdin project; remaining mentions are explicitly framed as upstream Chat 2's workflow Contact and version consistency: - Maintainer email switched from maintainer@hellion-media.de to kontakt@hellion-media.de in SECURITY.md and NOTICE.md - README version references updated to 0.5.4 (header, project status block) and the update-tag pattern generalised from v0.1.x to v0.X.Y - bug_report.yml version placeholder bumped to 0.5.4 - Project-documents table added to README footer linking all health and reference files in one place Release-body automation: - .github/workflows/release.yml now extracts the matching version block from ChatTwo/HellionChat.yaml's changelog and combines it with a static install / docs footer (custom-repo URL, project document links, licence) before passing the result to softprops/action-gh-release@v3 via body_path - Workflow fails fast if no changelog block exists for the tagged version, automating the existing "yaml + repo.json + release body kept in sync" rule - Tag value passed via env: TAG_NAME with strict ^v\d+\.\d+\.\d+$ validation before any string concatenation, so the tag input cannot break out into shell evaluation
133 lines
5.5 KiB
Markdown
133 lines
5.5 KiB
Markdown
# Contributing to HellionChat
|
|
|
|
Thanks for taking a look. HellionChat is a small, opinionated fork of
|
|
[Chat 2](https://github.com/Infiziert90/ChatTwo) maintained by one
|
|
person in spare time. This document explains what I am looking for,
|
|
what I am not, and how to make a contribution land smoothly.
|
|
|
|
## Before you open anything
|
|
|
|
- Read the [README](README.md) so you understand the scope: this is a
|
|
privacy-focused, EUPL-1.2-licensed Dalamud plugin that intentionally
|
|
removes the upstream webinterface and ships smaller defaults.
|
|
- Read [UPSTREAM_SYNC.md](UPSTREAM_SYNC.md). Cherry-picks from upstream
|
|
Chat 2 are selective and conscious; not everything that lands there
|
|
belongs here.
|
|
- Read [SECURITY.md](SECURITY.md). Anything security-sensitive goes
|
|
through a private advisory, never a public issue or PR.
|
|
- Read the [code of conduct](CODE_OF_CONDUCT.md).
|
|
|
|
## What I will accept
|
|
|
|
- Bug fixes for behaviour documented in the README, the in-plugin
|
|
settings or the changelog.
|
|
- Translation contributions for Hellion-specific strings via direct
|
|
pull requests against `ChatTwo/Resources/HellionStrings.*.resx`.
|
|
Translations for the upstream Chat 2 strings (`Language.*.resx`) are
|
|
not handled here; they go through the upstream Chat 2 project.
|
|
- Documentation improvements (README, comments, this file).
|
|
- Performance fixes with a measurable before/after.
|
|
- New features that fit the privacy-first scope and do not duplicate
|
|
what an existing Dalamud plugin already does well.
|
|
|
|
## What I will probably decline
|
|
|
|
- Re-introducing the webinterface or any remote-access feature. It was
|
|
removed in v0.2.0 on purpose. See README "Was gegenüber Chat 2 fehlt".
|
|
- Features that bypass the privacy filter or weaken the default
|
|
retention behaviour without an explicit, documented opt-in.
|
|
- Sweeping refactors that touch large parts of the upstream codebase.
|
|
They make selective upstream cherry-picks much harder and the
|
|
maintenance cost outweighs the benefit for a one-person project.
|
|
- AI-generated code dropped in without disclosure or human review. See
|
|
[AI_DISCLOSURE.md](AI_DISCLOSURE.md) for how I handle AI assistance
|
|
on my side; I expect comparable transparency from contributors.
|
|
|
|
If you are unsure whether an idea fits, open a feature-request issue
|
|
first and ask before writing code. I would rather say "no" to a
|
|
proposal than to a finished pull request.
|
|
|
|
## Workflow
|
|
|
|
1. Open an issue (bug or feature request) using the templates under
|
|
`.github/ISSUE_TEMPLATE/`. Skip this step only for trivial typos.
|
|
2. Fork the repository and branch off `main`. Branch naming is
|
|
informal; something like `fix/auto-tell-history-empty` or
|
|
`feat/adblock-light-mode` is plenty.
|
|
3. Match the existing code style. The repository ships an
|
|
`.editorconfig` that VS Code and Rider pick up automatically.
|
|
4. Keep commits focused. Several small commits with clear messages are
|
|
easier to review than one big one. Squash-on-merge happens at the
|
|
PR level if needed.
|
|
5. If your change touches user-visible behaviour, update the README
|
|
and/or the changelog block in `ChatTwo/HellionChat.yaml` and
|
|
`repo.json` for the next version. I bump the version number myself
|
|
at release time, so you do not need to.
|
|
6. Open the pull request against `main`. The PR template will ask
|
|
you to summarise the change, the testing you did and any
|
|
compatibility notes.
|
|
|
|
## Build and test
|
|
|
|
The project targets `net10.0-windows` against Dalamud SDK 15. To build
|
|
locally you need:
|
|
|
|
- .NET 10 SDK
|
|
- A working Dalamud development environment with `DALAMUD_HOME` set
|
|
(XIVLauncher installed and launched once is the simplest path)
|
|
- VS Code with the C# Dev Kit, Rider, or Visual Studio
|
|
|
|
```
|
|
dotnet restore
|
|
dotnet build ChatTwo.sln -c Release
|
|
dotnet test ChatTwo.sln -c Release
|
|
```
|
|
|
|
The test project is `ChatTwo.Tests`. New behaviour should come with a
|
|
test where the existing test infrastructure makes that practical
|
|
(privacy filter, configuration migration, message store).
|
|
|
|
For a smoke test in-game: build, copy the output into your Dalamud
|
|
`devPlugins/HellionChat/` directory and load it through `/xlplugins`.
|
|
|
|
## Continuous integration
|
|
|
|
Every push and every pull request runs:
|
|
|
|
- `build.yml` — `dotnet build` and `dotnet test`
|
|
- `codeql.yml` — CodeQL security analysis
|
|
|
|
A pull request will not be merged while either of these is failing.
|
|
CodeQL findings on changed code need to be addressed; pre-existing
|
|
findings on untouched code are tracked separately.
|
|
|
|
## Licensing
|
|
|
|
By submitting a pull request you confirm that:
|
|
|
|
- Your contribution is your own work, or you have the right to
|
|
contribute it under the project licence.
|
|
- You agree that your contribution will be released under the
|
|
[EUPL-1.2](LICENSE), the same licence as the rest of the project.
|
|
|
|
There is no separate CLA.
|
|
|
|
## Translations
|
|
|
|
Hellion-specific strings live in `ChatTwo/Resources/HellionStrings.resx`
|
|
(English source) and `HellionStrings.<lang>.resx` (per-language).
|
|
Translations are accepted as direct pull requests against those files.
|
|
|
|
The upstream Chat 2 strings in `ChatTwo/Resources/Language.*.resx` are
|
|
**not** translated in this repository. They are owned by the upstream
|
|
Chat 2 project and synced in via cherry-pick. Please contribute
|
|
upstream-string translations to
|
|
[Infiziert90/ChatTwo](https://github.com/Infiziert90/ChatTwo) instead.
|
|
|
|
## A note on response times
|
|
|
|
I respond on weekdays during European business hours and I take
|
|
weekends and FFXIV patch days off. A pull request that sits for a few
|
|
days has not been ignored; I just have not gotten to it yet. Pinging
|
|
once after a week is fine; please do not ping daily.
|