9a8a014795
Chat 2 has entered a major rework that Infi confirmed makes selective patches no longer portable. The cherry-pick pipeline as a routine workflow stops with the v1.4.x cycle. Documentation reflects the new state across all touchpoints. UPSTREAM_SYNC.md rewritten: replaces the "How I Cherry-Pick" / "Reviewing What Is New Upstream" / "Conflict Handling" sections with "Why Cherry-Picking Stopped", "What Closing the Pipeline Means in Practice", "What Does Not Change", "What Could Re-Open Later". Existing cherry-pick trails in the git history stay intact, EUPL-1.2 anchor lines and NOTICE.md remain canonical. README.md, CONTRIBUTING.md, ROADMAP.md, THIRD_PARTY_NOTICES.md and the PR template updated to match: cherry-pick references reframed as historical or pointed at UPSTREAM_SYNC.md for the current state. NOTICE.md keeps the BetterTTV cherry-pick example as a concrete past case but adds a paragraph that the pipeline is closed and clarifies the attribution standard is preserved unchanged. PULL_REQUEST_TEMPLATE.md drops the "Upstream cherry-pick from Chat 2" checkbox and the cherry-pick-path compatibility prompt. The upstream git remote was already removed locally on 2026-05-08 (separate change, not in this commit). No source-file edits, no manifest version bump, no changelog entry — this is documentation-only and ships with the next release.
128 lines
5.8 KiB
Markdown
128 lines
5.8 KiB
Markdown
# 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.
|
|
|
|
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.
|
|
|
|
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.
|
|
|
|
## 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.
|
|
|
|
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.
|
|
|
|
## 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.
|
|
|
|
## 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:
|
|
|
|
- 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.
|
|
|
|
## 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).
|
|
|
|
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.
|
|
- 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.
|