[WIP] Patchset for Telegram Desktop, heavily inspired by inugram
  • C++ 78.1%
  • TypeScript 15.7%
  • Batchfile 2.8%
  • CMake 2.4%
  • Objective-C++ 0.9%
  • Other 0.1%
Find a file
devilreef 6ae1a8c487
Some checks failed
mirror to github / mirror (push) Failing after 5s
Merge pull request 'chore(patches): rebase to latest upstream' (#4) from main into dev
Reviewed-on: #4
2026-06-10 11:02:55 +00:00
.claude/skills chore(patches): rebase to latest upstream 2026-06-10 17:02:18 +06:00
.forgejo/workflows ci: add forgejo workflow to mirror repo to github 2026-05-15 16:42:58 +06:00
docs feat: initial commit 2026-04-28 20:47:02 +06:00
patches chore(patches): rebase to latest upstream 2026-06-10 17:02:18 +06:00
res feat(inline-callback): tooltip, copy text, and copy-id menu entry 2026-05-08 18:19:28 +06:00
scripts fix(scripts): use cmd.exe shell on Windows so stg is found on PATH 2026-06-02 20:13:26 +04:00
src/cpp/arcanegram chore: bump upstream to b8e95a1a, fix streamer-mode phantom window 2026-05-12 19:13:11 +06:00
.gitattributes feat: initial commit 2026-04-28 20:47:02 +06:00
.gitignore ru strings + dynamic fast messages slots + ui streaming mode fix 2026-05-04 18:16:56 +04:00
AGENTS.md feat: initial commit 2026-04-28 20:47:02 +06:00
build-telegram.bat build: use native qsb from Qt 6.11.1, drop qtshadertools hack 2026-05-23 14:39:29 +06:00
BUILD.md docs(build): drop manual Libraries/win64 wipe step 2026-04-29 02:21:38 +06:00
eslint.config.js feat: initial commit 2026-04-28 20:47:02 +06:00
LICENSE docs: switch to unlicense + no-support clause 2026-04-29 01:52:12 +06:00
package.json feat: initial commit 2026-04-28 20:47:02 +06:00
pnpm-lock.yaml feat: initial commit 2026-04-28 20:47:02 +06:00
pnpm-workspace.yaml feat: initial commit 2026-04-28 20:47:02 +06:00
prepare-deps.bat feat: initial commit 2026-04-28 20:47:02 +06:00
README.md docs: update Known issues — crash is resolved, document actual libyuv workaround 2026-05-16 19:40:15 +04:00
series chore: rebase onto upstream b215e535 (latest tdesktop) 2026-05-16 19:40:12 +04:00
setup-vcvars.bat feat: initial commit 2026-04-28 20:47:02 +06:00
tsconfig.json feat: initial commit 2026-04-28 20:47:02 +06:00
upstream-commit chore(patches): rebase to latest upstream 2026-06-10 17:02:18 +06:00

Arcanegram

Personal patchset for Telegram Desktop.

No support, no warranty, no promises. Issues, questions, and feature requests will not be answered. Use at your own risk. See LICENSE.

Inspired by inugram (Telegram Android patchset).

Layout

  • patches/ — exported .patch files, applied in order from series.
  • series — patch order; export target, do not hand-edit.
  • upstream-commit — pinned tdesktop SHA.
  • src/cpp/arcanegram/ — fork C++ code, junctioned into the worktree at setup.
  • res/ — fork-owned resources (lang strings, icons).
  • worktree/ — gitignored local tdesktop checkout managed by stgit.

Patch groups: bugfix | feature | debloat | hooks | misc.

Setup

Requirements:

  • Node 20+, pnpm
  • git, stgit (stg --version)
  • tdesktop build toolchain — see tdesktop build docs
pnpm install
pnpm run setup

Clones tdesktop into worktree/ (with submodules — first run is ~15 min, ~5 GB), applies patches, junctions fork code in. Open worktree/ in your IDE and build the Telegram target.

Adding / modifying patches

cd worktree
stg new feature__my-thing -m 'short description'
# ...edit worktree...
stg refresh
cd ..
pnpm run export
git add patches/ series
git commit -m "feat(patches): short description"

To edit an existing patch, push it to the top first:

cd worktree && stg float feature__my-thing
# ...edit...
stg refresh
cd .. && pnpm run export

Rebasing onto newer upstream

pnpm run rebase latest
# ...resolve any conflicts in worktree, then:
pnpm run export

Windows specifics

  • Directory junctions are used instead of symlinks for the fork-source dir, so no admin / dev mode required.
  • File-level "symlinks" fall back to copy + git update-index --skip-worktree on platforms that refuse fs.symlink for files.

Known issues

  • libyuv duplicate symbols (LNK2005) on Windows Debug. libavif and tg_owt both statically bundle libyuv, causing LNK2005 for ~50 symbols (ScalePlane, CopyPlane, etc.) when linking with PDB (/Zi). Worked around by passing -DCMAKE_MSVC_DEBUG_INFORMATION_FORMAT= (empty) in build-telegram.bat, which disables debug info and avoids the conflict. The binary builds and runs correctly. If you re-enable /Zi, expect duplicate-symbol link errors.

License

Unlicense (public domain) with an explicit no-support clause. Do whatever you want with the code; expect nothing in return.