From eb05e04f790d8b3758812ad9534c0ec98b5a727a Mon Sep 17 00:00:00 2001 From: Jon Kazama Date: Tue, 5 May 2026 21:07:18 +0200 Subject: [PATCH] Revise contributing guidelines for clarity and updates Updated the contributing guidelines to reflect changes in project scope, contribution acceptance criteria, and response times. Clarified sections on translations and continuous integration. --- CONTRIBUTING.md | 124 +++++++++++++++++++++++++++--------------------- 1 file changed, 70 insertions(+), 54 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 60ba387..dd39b67 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,47 +1,55 @@ # 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. +Thanks for taking a look. HellionChat is a one-person side project +developed under Hellion Forge. It started as a fork of +[Chat 2](https://github.com/Infiziert90/ChatTwo) and has since become +a standalone plugin under its own namespace, IPC channels and +source tree (standalone-cut completed in v1.0.0). Forking HellionChat +itself is explicitly permitted under the EUPL-1.2. -## Before you open anything +This document explains what I am looking for, what I am not, and how +to make a contribution land smoothly. -- Read the [README](README.md) so you understand the scope: this is a +## Before You Open Anything + +- Read the [README](README.md) so you understand the scope: a privacy-focused, EUPL-1.2-licensed Dalamud plugin that intentionally - removes the upstream webinterface and ships smaller defaults. -- Read [UPSTREAM_SYNC.md](docs/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 + removes the upstream webinterface and ships privacy-first defaults. +- Read [`docs/UPSTREAM_SYNC.md`](docs/UPSTREAM_SYNC.md). Cherry-picks + from upstream Chat 2 are selective and deliberate; 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). +- Read the [Code of Conduct](CODE_OF_CONDUCT.md). -## What I will accept +## 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 `HellionChat/Resources/HellionStrings.*.resx`. - Translations for the upstream Chat 2 strings (`Language.*.resx`) are - not handled here; they go through the upstream Chat 2 project. + pull requests against + `HellionChat/Resources/HellionStrings.*.resx`. Translations for + upstream Chat 2 strings (`Language.*.resx`) are not handled here; + those go to 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 +## 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". + removed in v0.2.0 on purpose. See the README section + "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. +- Sweeping refactors that touch large parts of the 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](docs/AI_DISCLOSURE.md) for how I handle AI assistance - on my side; I expect comparable transparency from contributors. + [`docs/AI_DISCLOSURE.md`](docs/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 @@ -50,56 +58,69 @@ 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. + `.github/ISSUE_TEMPLATE/`. Skip this 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. + `feat/theme-export` is fine. 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. + easier to review than one large 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 `HellionChat/HellionChat.yaml` and - `repo.json` for the next version. I bump the version number myself - at release time, so you do not need to. + `repo.json`. I bump the version number myself at release time. 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 +## 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 +- A working Dalamud dev 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 -``` +```bash dotnet restore dotnet build HellionChat.sln -c Release ``` -Tests are not part of the current `HellionChat.sln`. If you add a test +There are currently no tests in `HellionChat.sln`. If you add a test project, point it at the relevant subsystems (privacy filter, configuration migration, message store) and mention it in the PR. For a smoke test in-game: build, copy the output into your Dalamud -`devPlugins/HellionChat/` directory and load it through `/xlplugins`. +`devPlugins/HellionChat/` directory and load it via `/xlplugins`. -## Continuous integration +## Continuous Integration Every push and every pull request runs: -- `build.yml` — `dotnet build` and `dotnet test` -- `codeql.yml` — CodeQL security analysis +| Workflow | What it checks | +| ------------- | ------------------------------------- | +| `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. +## Translations + +Hellion-specific strings live in +`HellionChat/Resources/HellionStrings.resx` (English source) and +`HellionStrings..resx` (per-language). These are accepted as +direct pull requests. + +The upstream Chat 2 strings in `HellionChat/Resources/Language.*.resx` +are **not** translated here. They are owned by the upstream project +and synced in via cherry-pick. Please contribute those to +[Infiziert90/ChatTwo](https://github.com/Infiziert90/ChatTwo) instead. + ## Licensing By submitting a pull request you confirm that: @@ -109,23 +130,18 @@ By submitting a pull request you confirm that: - 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. +There is no separate CLA. Forking HellionChat is explicitly permitted +under the EUPL-1.2, as with any EUPL-licensed project. -## Translations +## Response Times -Hellion-specific strings live in `HellionChat/Resources/HellionStrings.resx` -(English source) and `HellionStrings..resx` (per-language). -Translations are accepted as direct pull requests against those files. +| Channel | Address | +| ------------- | -------------------------- | +| GitHub Issues | Preferred for bugs and feature requests | +| Discord DM | `@j.j_kazama` | +| Email | `kontakt@hellion-media.de` | -The upstream Chat 2 strings in `HellionChat/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. +I respond on weekdays during European business hours and take weekends +and FFXIV patch days off. A pull request that sits for a few days has +not been ignored. Pinging once after a week is fine; please do not +ping daily.