chore(linting): refresh configs and sweep auto-fix
Pull in the refreshed linter and tooling configs (editorconfig, gitignore, gitattributes, prettierignore, prettierrc, markdownlint, yamllint, env.example, dotnet-tools) and run prettier and markdownlint in --fix / --write mode across the repo so the existing tree matches the new rules. - prettier 2-space indent on yaml/yml and json overrides, asterisk strong, underscore emphasis, proseWrap always - markdownlint MD007 indent aligned to 2 and MD049 to underscore so prettier output stays passing - preflight Block F also ignores CLAUDE.md (gitignored personal file) - prettierignore extended to keep HellionChat.yaml manifest and the NuGet packages.lock.json out of the formatter No semantic content changed; csharpier, build, full build-suite (729/729) and the new prettier/markdownlint/yamllint checks all green.
This commit is contained in:
+66
-56
@@ -1,93 +1,103 @@
|
||||
# Upstream Sync
|
||||
|
||||
HellionChat is a standalone EUPL-1.2 plugin that originated from [Chat 2](https://github.com/Infiziert90/ChatTwo). Since
|
||||
v1.0.0 it lives under its own namespace, IPC channels and source tree. The active cherry-pick pipeline from upstream
|
||||
Chat 2 is closed since the v1.4.x cycle.
|
||||
HellionChat is a standalone EUPL-1.2 plugin that originated from
|
||||
[Chat 2](https://github.com/Infiziert90/ChatTwo). Since v1.0.0 it lives under its own namespace, IPC
|
||||
channels and source tree. The active cherry-pick pipeline from upstream Chat 2 is closed since the
|
||||
v1.4.x cycle.
|
||||
|
||||
This document covers what that means, why I closed it, and what stays in place.
|
||||
|
||||
## A Word on Intent
|
||||
|
||||
HellionChat is not trying to replace Chat 2. I build it for myself, and maybe for people who want the same things I do:
|
||||
a privacy-first chat plugin with tighter defaults and no remote-access surface. If that is not you, Chat 2 is the better
|
||||
choice and a well-maintained project.
|
||||
HellionChat is not trying to replace Chat 2. I build it for myself, and maybe for people who want
|
||||
the same things I do: a privacy-first chat plugin with tighter defaults and no remote-access
|
||||
surface. If that is not you, Chat 2 is the better choice and a well-maintained project.
|
||||
|
||||
I am available to Infi if he ever has questions about HellionChat or how I have diverged from the upstream code. What I
|
||||
will not do is interfere with Chat 2's direction or push unsolicited opinions into his project.
|
||||
I am available to Infi if he ever has questions about HellionChat or how I have diverged from the
|
||||
upstream code. What I will not do is interfere with Chat 2's direction or push unsolicited opinions
|
||||
into his project.
|
||||
|
||||
Long-term compatibility between Chat 2 and HellionChat is not guaranteed and, frankly, not technically possible. I am
|
||||
building a new UI from scratch and making deliberate architectural decisions that pull in a different direction. Some
|
||||
upstream patches will simply stop applying cleanly and that is expected.
|
||||
Long-term compatibility between Chat 2 and HellionChat is not guaranteed and, frankly, not
|
||||
technically possible. I am building a new UI from scratch and making deliberate architectural
|
||||
decisions that pull in a different direction. Some upstream patches will simply stop applying
|
||||
cleanly and that is expected.
|
||||
|
||||
## Why Cherry-Picking Stopped in v1.4.x
|
||||
|
||||
Two things converged:
|
||||
|
||||
1. **Chat 2 is in a rework cycle.** Infi mentioned directly that parts of ChatTwo are being reworked and "stuff may not
|
||||
be able to be cherry picked anymore." Once the upstream code paths I would pull from no longer exist in the same
|
||||
shape, `git cherry-pick` stops being a meaningful tool — what would land would not be the change Infi wrote, it would
|
||||
be a hand-port of his concept.
|
||||
2. **HellionChat has drifted enough that selective patches require adaptation anyway.** The UI is being rebuilt, the
|
||||
theme engine sits on top of HellionStyle which has no upstream equivalent, the privacy filter changes how messages
|
||||
flow through MessageManager. Even before the rework was announced, more and more upstream patches needed adaptation
|
||||
rather than a clean apply.
|
||||
1. **Chat 2 is in a rework cycle.** Infi mentioned directly that parts of ChatTwo are being reworked
|
||||
and "stuff may not be able to be cherry picked anymore." Once the upstream code paths I would
|
||||
pull from no longer exist in the same shape, `git cherry-pick` stops being a meaningful tool —
|
||||
what would land would not be the change Infi wrote, it would be a hand-port of his concept.
|
||||
2. **HellionChat has drifted enough that selective patches require adaptation anyway.** The UI is
|
||||
being rebuilt, the theme engine sits on top of HellionStyle which has no upstream equivalent, the
|
||||
privacy filter changes how messages flow through MessageManager. Even before the rework was
|
||||
announced, more and more upstream patches needed adaptation rather than a clean apply.
|
||||
|
||||
Together those two points mean continuing to call this an "active cherry-pick pipeline" was no longer honest. So I
|
||||
closed it.
|
||||
Together those two points mean continuing to call this an "active cherry-pick pipeline" was no
|
||||
longer honest. So I closed it.
|
||||
|
||||
## What Closing the Pipeline Means in Practice
|
||||
|
||||
- The `upstream` git remote was removed locally on 2026-05-08. Anyone setting up a fresh clone does **not** add it back.
|
||||
- New commits will not carry `(cherry picked from commit ...)` trailers. Anything that originates from Chat 2 from this
|
||||
point forward will be a hand-port at most, and it gets called out as such in its own commit message and in the
|
||||
relevant source comments.
|
||||
- The existing cherry-pick trail stays in the git history exactly as it is. Every `(cherry picked from commit ...)` line
|
||||
that was added with `-x` in earlier releases remains intact; that is the attribution paper trail and removing it would
|
||||
be wrong.
|
||||
- The `upstream` git remote was removed locally on 2026-05-08. Anyone setting up a fresh clone does
|
||||
**not** add it back.
|
||||
- New commits will not carry `(cherry picked from commit ...)` trailers. Anything that originates
|
||||
from Chat 2 from this point forward will be a hand-port at most, and it gets called out as such in
|
||||
its own commit message and in the relevant source comments.
|
||||
- The existing cherry-pick trail stays in the git history exactly as it is. Every
|
||||
`(cherry picked from commit ...)` line that was added with `-x` in earlier releases remains
|
||||
intact; that is the attribution paper trail and removing it would be wrong.
|
||||
|
||||
## What Does Not Change
|
||||
|
||||
- **EUPL-1.2 anchor lines in source files.** Files that originated from Chat 2 keep their licence headers and any "based
|
||||
on Infiziert90/ChatTwo" notice exactly as they are. The licence obligations under EUPL-1.2 do not lapse because
|
||||
cherry-picking stopped.
|
||||
- **NOTICE.md** stays canonical. Attribution to Infi and Anna for the message store, channel logic, hook system, ImGui
|
||||
chat window and the localisation infrastructure remains the foundation statement of this fork.
|
||||
- **README acknowledgements.** The Acknowledgements section in `README.md`, the maintainer thanks in the About tab, and
|
||||
the `Language.*.resx` Crowdin translator credit list all stay as they are.
|
||||
- **The original `Language.*.resx` files** remain in the source tree in their last upstream-sync state. They are the
|
||||
work of the Chat 2 Crowdin community and the existing translations stay valuable. They will not receive automatic
|
||||
upstream updates anymore — see CONTRIBUTING.md for what that means for translators.
|
||||
- **EUPL-1.2 anchor lines in source files.** Files that originated from Chat 2 keep their licence
|
||||
headers and any "based on Infiziert90/ChatTwo" notice exactly as they are. The licence obligations
|
||||
under EUPL-1.2 do not lapse because cherry-picking stopped.
|
||||
- **NOTICE.md** stays canonical. Attribution to Infi and Anna for the message store, channel logic,
|
||||
hook system, ImGui chat window and the localisation infrastructure remains the foundation
|
||||
statement of this fork.
|
||||
- **README acknowledgements.** The Acknowledgements section in `README.md`, the maintainer thanks in
|
||||
the About tab, and the `Language.*.resx` Crowdin translator credit list all stay as they are.
|
||||
- **The original `Language.*.resx` files** remain in the source tree in their last upstream-sync
|
||||
state. They are the work of the Chat 2 Crowdin community and the existing translations stay
|
||||
valuable. They will not receive automatic upstream updates anymore — see CONTRIBUTING.md for what
|
||||
that means for translators.
|
||||
|
||||
## What Could Re-Open Later
|
||||
|
||||
If Chat 2's rework lands and stabilises, and there is a piece of upstream code that I genuinely want in HellionChat, the
|
||||
path forward is **study and re-implement**, not cherry-pick. That means:
|
||||
If Chat 2's rework lands and stabilises, and there is a piece of upstream code that I genuinely want
|
||||
in HellionChat, the path forward is **study and re-implement**, not cherry-pick. That means:
|
||||
|
||||
- Read the upstream change, understand the design, port the concept to HellionChat's actual code paths.
|
||||
- Credit the upstream author in the commit message and, if the ported code is non-trivial, in a source-file comment.
|
||||
- Read the upstream change, understand the design, port the concept to HellionChat's actual code
|
||||
paths.
|
||||
- Credit the upstream author in the commit message and, if the ported code is non-trivial, in a
|
||||
source-file comment.
|
||||
- Pre-clear with Infi if the port is large enough to warrant a conversation.
|
||||
|
||||
This is heavier than `git cherry-pick -x` and that is the point. Cherry-picking was light because both codebases shared
|
||||
structure; once they do not, the proper attribution costs a real conversation rather than a flag on a git command.
|
||||
This is heavier than `git cherry-pick -x` and that is the point. Cherry-picking was light because
|
||||
both codebases shared structure; once they do not, the proper attribution costs a real conversation
|
||||
rather than a flag on a git command.
|
||||
|
||||
## Contributing Back
|
||||
|
||||
HellionChat benefits from Chat 2's work, so I try to give something back where I can. If I fix a bug or improve
|
||||
something that would be useful to Chat 2 and is not HellionChat-specific, I submit a good-will PR to
|
||||
[Infiziert90/ChatTwo](https://github.com/Infiziert90/ChatTwo).
|
||||
HellionChat benefits from Chat 2's work, so I try to give something back where I can. If I fix a bug
|
||||
or improve something that would be useful to Chat 2 and is not HellionChat-specific, I submit a
|
||||
good-will PR to [Infiziert90/ChatTwo](https://github.com/Infiziert90/ChatTwo).
|
||||
|
||||
A few things to note about that process:
|
||||
|
||||
- Good-will PRs are validated in a separate fork first to make sure the fix stands on its own without HellionChat
|
||||
context.
|
||||
- They are written by hand. No AI-generated code goes to Infi's project. He did not ask for Pair-level AI involvement
|
||||
and I will not push that decision onto his codebase.
|
||||
- This is not guaranteed for every change, only where it makes sense and where I am confident the fix is clean and
|
||||
self-contained.
|
||||
- Good-will PRs are validated in a separate fork first to make sure the fix stands on its own
|
||||
without HellionChat context.
|
||||
- They are written by hand. No AI-generated code goes to Infi's project. He did not ask for
|
||||
Pair-level AI involvement and I will not push that decision onto his codebase.
|
||||
- This is not guaranteed for every change, only where it makes sense and where I am confident the
|
||||
fix is clean and self-contained.
|
||||
- Whether it gets accepted is Infi's call, and a "no" is fine.
|
||||
|
||||
## When Upstream Takes a Direction I Cannot Follow
|
||||
|
||||
If a future Chat 2 release breaks compatibility with the HellionChat privacy philosophy in a way that cannot be resolved
|
||||
(mandatory cloud sync, removal of the local message store, an incompatible licence change), HellionChat continues from
|
||||
where it is. The inherited history stays under EUPL-1.2 and stays attributed.
|
||||
If a future Chat 2 release breaks compatibility with the HellionChat privacy philosophy in a way
|
||||
that cannot be resolved (mandatory cloud sync, removal of the local message store, an incompatible
|
||||
licence change), HellionChat continues from where it is. The inherited history stays under EUPL-1.2
|
||||
and stays attributed.
|
||||
|
||||
Reference in New Issue
Block a user