chore: prepare wintergram 1.1 release
|
|
@ -1,2 +0,0 @@
|
|||
# Add directories or file patterns to ignore during indexing (e.g. foo/ or *.csv)
|
||||
spm-files
|
||||
130
.gitignore
vendored
|
|
@ -1,8 +1,33 @@
|
|||
fastlane/README.md
|
||||
fastlane/report.xml
|
||||
fastlane/test_output/*
|
||||
fastlane/fastlanematch
|
||||
build/*
|
||||
# WinterGram — files that should never be committed
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Build outputs and caches
|
||||
# -----------------------------------------------------------------------------
|
||||
build/
|
||||
build-input/
|
||||
bazel-bin
|
||||
bazel-bin/*
|
||||
bazel-genfiles
|
||||
bazel-genfiles/*
|
||||
bazel-out
|
||||
bazel-out/*
|
||||
bazel-testlogs
|
||||
bazel-testlogs/*
|
||||
bazel-telegram-ios
|
||||
bazel-telegram-ios/*
|
||||
bazel-WinterGram
|
||||
bazel-WinterGram/*
|
||||
buck-out/*
|
||||
.buckd/*
|
||||
DerivedData
|
||||
*.hmap
|
||||
*.dSYM
|
||||
*.dSYM.zip
|
||||
*.ipa
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Xcode / IDE user state
|
||||
# -----------------------------------------------------------------------------
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
|
|
@ -15,28 +40,52 @@ xcuserdata
|
|||
*.xccheckout
|
||||
*.xcscmblueprint
|
||||
*.moved-aside
|
||||
DerivedData
|
||||
*.hmap
|
||||
*.ipa
|
||||
*.xcuserstate
|
||||
.DS_Store
|
||||
*.dSYM
|
||||
*.dSYM.zip
|
||||
*.ipa
|
||||
*/xcuserdata/*
|
||||
buck-out/*
|
||||
.buckd/*
|
||||
tools/buck
|
||||
tools/bazel
|
||||
AppBinary.xcworkspace/*
|
||||
Project.xcodeproj/*
|
||||
Watch/Watch.xcodeproj/*
|
||||
AppBundle.xcworkspace/*
|
||||
*.xcworkspace
|
||||
*.xcodeproj
|
||||
!*_Xcode.xcodeproj
|
||||
.idea
|
||||
*/.idea/*
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# WinterGram local configuration
|
||||
# -----------------------------------------------------------------------------
|
||||
build-system/wintergram-development-configuration.json
|
||||
build-system/fake-codesigning-wintergram/
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Editor / AI assistant / local tooling
|
||||
# -----------------------------------------------------------------------------
|
||||
.vscode/
|
||||
.claude/
|
||||
**/.claude/settings.local.json
|
||||
.xcodebuildmcp/
|
||||
tools/buck
|
||||
tools/bazel
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# OS and swap files
|
||||
# -----------------------------------------------------------------------------
|
||||
.DS_Store
|
||||
*.swp
|
||||
*/*.swp
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Python / Node artifacts
|
||||
# -----------------------------------------------------------------------------
|
||||
**/*.pyc
|
||||
*.pyc
|
||||
**/node_modules/
|
||||
tools/sim-watcher/dist/
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Submodule-generated headers and prebuilt binaries
|
||||
# -----------------------------------------------------------------------------
|
||||
submodules/OpusBinding/SharedHeaders/*
|
||||
submodules/FFMpegBinding/SharedHeaders/*
|
||||
submodules/OpenSSLEncryptionProvider/SharedHeaders/*
|
||||
submodules/TelegramCore/FlatSerialization/Sources/*
|
||||
submodules/MtProtoKit/TON/macOS/lib/libtonlibjson.0.5.dylib
|
||||
submodules/MtProtoKit/TON/macOS/lib/libtonlibjson.dylib
|
||||
submodules/MtProtoKit/TON/macOS/lib/cmake/Tonlib/TonlibConfig.cmake
|
||||
|
|
@ -49,37 +98,26 @@ submodules/MtProtoKit/TON/macOS/lib/fift/Lisp.fif
|
|||
submodules/MtProtoKit/TON/macOS/lib/fift/Lists.fif
|
||||
submodules/MtProtoKit/TON/macOS/lib/fift/Stack.fif
|
||||
submodules/MtProtoKit/TON/macOS/lib/fift/TonUtil.fif
|
||||
bazel-bin
|
||||
bazel-bin/*
|
||||
bazel-genfiles
|
||||
bazel-genfiles/*
|
||||
bazel-out
|
||||
bazel-out/*
|
||||
bazel-telegram-ios
|
||||
bazel-telegram-ios/*
|
||||
bazel-testlogs
|
||||
bazel-testlogs/*
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Bazel / SPM / LSP generated files
|
||||
# -----------------------------------------------------------------------------
|
||||
xcodeproj.bazelrc
|
||||
*/*.swp
|
||||
*.swp
|
||||
build-input/*
|
||||
**/*.pyc
|
||||
*.pyc
|
||||
submodules/OpusBinding/SharedHeaders/*
|
||||
submodules/FFMpegBinding/SharedHeaders/*
|
||||
submodules/OpenSSLEncryptionProvider/SharedHeaders/*
|
||||
submodules/TelegramCore/FlatSerialization/Sources/*
|
||||
buildServer.json
|
||||
.build/**
|
||||
Telegram.LSP.json
|
||||
**/.build/**
|
||||
Telegram.LSP.json
|
||||
spm-files
|
||||
xcode-files
|
||||
.bsp/**
|
||||
.sourcekit-lsp/**
|
||||
/.claude/
|
||||
**/.claude/settings.local.json
|
||||
**/.vscode/launch.json
|
||||
/buildbox/*
|
||||
**/node_modules/
|
||||
tools/sim-watcher/dist/
|
||||
|
||||
# Legacy / tool-specific
|
||||
fastlane/README.md
|
||||
fastlane/report.xml
|
||||
fastlane/test_output/*
|
||||
fastlane/fastlanematch
|
||||
AppBinary.xcworkspace/*
|
||||
Project.xcodeproj/*
|
||||
Watch/Watch.xcodeproj/*
|
||||
AppBundle.xcworkspace/*
|
||||
|
|
|
|||
196
.gitlab-ci.yml
|
|
@ -1,196 +0,0 @@
|
|||
stages:
|
||||
- build
|
||||
- deploy
|
||||
- verifysanity
|
||||
- verify
|
||||
- submit
|
||||
|
||||
variables:
|
||||
LANG: "en_US.UTF-8"
|
||||
LC_ALL: "en_US.UTF-8"
|
||||
GIT_SUBMODULE_STRATEGY: normal
|
||||
|
||||
internal:
|
||||
tags:
|
||||
- ios_internal
|
||||
stage: build
|
||||
only:
|
||||
- master
|
||||
except:
|
||||
- tags
|
||||
script:
|
||||
- export PATH=/opt/homebrew/opt/ruby/bin:$PATH
|
||||
- export PATH=`gem environment gemdir`/bin:$PATH
|
||||
- python3 -u build-system/Make/Make.py remote-build --darwinContainers="$DARWIN_CONTAINERS" --darwinContainersHost="$DARWIN_CONTAINERS_HOST" --cacheHost="$TELEGRAM_BAZEL_CACHE_HOST" --configurationPath="build-system/appcenter-configuration.json" --gitCodesigningRepository="$TELEGRAM_GIT_CODESIGNING_REPOSITORY" --gitCodesigningType=adhoc --configuration=release_arm64 --embedWatchApp --watchApiId="$TELEGRAM_WATCHOS_APP_ID" --watchApiHash="$TELEGRAM_WATCHOS_APP_HASH"
|
||||
- python3 -u build-system/Make/DeployBuild.py --configuration="$TELEGRAM_PRIVATE_DATA_PATH/deploy-configurations/internal-configuration.json" --ipa="build/artifacts/Telegram.ipa" --dsyms="build/artifacts/Telegram.DSYMs.zip"
|
||||
- rm -rf build-input/configuration-repository-workdir
|
||||
- rm -rf build-input/configuration-repository
|
||||
- python3 -u build-system/Make/Make.py remote-build --darwinContainers="$DARWIN_CONTAINERS" --darwinContainersHost="$DARWIN_CONTAINERS_HOST" --cacheHost="$TELEGRAM_BAZEL_CACHE_HOST" --configurationPath="$TELEGRAM_PRIVATE_DATA_PATH/build-configurations/enterprise-configuration.json" --gitCodesigningRepository="$TELEGRAM_GIT_CODESIGNING_REPOSITORY" --gitCodesigningType=enterprise --configuration=release_arm64 --embedWatchApp --watchApiId="$TELEGRAM_WATCHOS_APP_ID" --watchApiHash="$TELEGRAM_WATCHOS_APP_HASH"
|
||||
- python3 -u build-system/Make/DeployBuild.py --configuration="$TELEGRAM_PRIVATE_DATA_PATH/deploy-configurations/enterprise-configuration.json" --ipa="build/artifacts/Telegram.ipa" --dsyms="build/artifacts/Telegram.DSYMs.zip"
|
||||
environment:
|
||||
name: internal
|
||||
|
||||
internal_testflight:
|
||||
tags:
|
||||
- ios_internal
|
||||
stage: deploy
|
||||
only:
|
||||
- master
|
||||
except:
|
||||
- tags
|
||||
script:
|
||||
- python3 -u build-system/Make/Make.py remote-build --darwinContainers="$DARWIN_CONTAINERS" --darwinContainersHost="$DARWIN_CONTAINERS_HOST" --cacheHost="$TELEGRAM_BAZEL_CACHE_HOST" --configurationPath="build-system/appstore-configuration.json" --gitCodesigningRepository="$TELEGRAM_GIT_CODESIGNING_REPOSITORY" --gitCodesigningType=appstore --configuration=release_arm64 --embedWatchApp --watchApiId="$TELEGRAM_WATCHOS_APP_ID" --watchApiHash="$TELEGRAM_WATCHOS_APP_HASH"
|
||||
- python3 -u build-system/Make/Make.py remote-deploy-testflight --darwinContainers="$DARWIN_CONTAINERS" --darwinContainersHost="$DARWIN_CONTAINERS_HOST" --ipa="build/artifacts/Telegram.ipa" --dsyms="build/artifacts/Telegram.DSYMs.zip"
|
||||
environment:
|
||||
name: testflight_llc
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- build/artifacts
|
||||
expire_in: 1 week
|
||||
|
||||
appstore_development:
|
||||
tags:
|
||||
- ios_internal
|
||||
stage: build
|
||||
only:
|
||||
- appstore-development
|
||||
except:
|
||||
- tags
|
||||
script:
|
||||
- python3 -u build-system/Make/Make.py remote-build --darwinContainers="$DARWIN_CONTAINERS" --darwinContainersHost="$DARWIN_CONTAINERS_HOST" --cacheHost="$TELEGRAM_BAZEL_CACHE_HOST" --configurationPath="$TELEGRAM_PRIVATE_DATA_PATH/build-configurations/enterprise-configuration.json" --gitCodesigningRepository="$TELEGRAM_GIT_CODESIGNING_REPOSITORY" --gitCodesigningType=enterprise --configuration=release_arm64
|
||||
environment:
|
||||
name: appstore-development
|
||||
artifacts:
|
||||
paths:
|
||||
- build/artifacts/Telegram.DSYMs.zip
|
||||
expire_in: 1 week
|
||||
|
||||
experimental_i:
|
||||
tags:
|
||||
- ios_experimental
|
||||
stage: build
|
||||
only:
|
||||
- experimental-3
|
||||
except:
|
||||
- tags
|
||||
script:
|
||||
- export PATH=/opt/homebrew/opt/ruby/bin:$PATH
|
||||
- export PATH=`gem environment gemdir`/bin:$PATH
|
||||
- python3 -u build-system/Make/Make.py remote-build --darwinContainers="$DARWIN_CONTAINERS" --darwinContainersHost="$DARWIN_CONTAINERS_HOST" --cacheHost="$TELEGRAM_BAZEL_CACHE_HOST" --configurationPath="build-system/appcenter-configuration.json" --gitCodesigningRepository="$TELEGRAM_GIT_CODESIGNING_REPOSITORY" --gitCodesigningType=adhoc --configuration=release_arm64
|
||||
- python3 -u build-system/Make/Make.py remote-deploy-testflight --darwinContainers="$DARWIN_CONTAINERS" --darwinContainersHost="$DARWIN_CONTAINERS_HOST" --ipa="build/artifacts/Telegram.ipa" --dsyms="build/artifacts/Telegram.DSYMs.zip"
|
||||
environment:
|
||||
name: experimental
|
||||
artifacts:
|
||||
paths:
|
||||
- build/artifacts/Telegram.DSYMs.zip
|
||||
expire_in: 1 week
|
||||
|
||||
experimental:
|
||||
tags:
|
||||
- ios_internal
|
||||
stage: build
|
||||
only:
|
||||
- experimental-2
|
||||
except:
|
||||
- tags
|
||||
script:
|
||||
- python3 -u build-system/Make/Make.py remote-build --darwinContainers="$DARWIN_CONTAINERS" --darwinContainersHost="$DARWIN_CONTAINERS_HOST" --cacheHost="$TELEGRAM_BAZEL_CACHE_HOST" --configurationPath="$TELEGRAM_PRIVATE_DATA_PATH/build-configurations/enterprise-configuration.json" --gitCodesigningRepository="$TELEGRAM_GIT_CODESIGNING_REPOSITORY" --gitCodesigningType=enterprise --configuration=release_arm64
|
||||
environment:
|
||||
name: experimental-2
|
||||
artifacts:
|
||||
paths:
|
||||
- build/artifacts/Telegram.DSYMs.zip
|
||||
expire_in: 1 week
|
||||
|
||||
beta_testflight:
|
||||
tags:
|
||||
- ios_beta
|
||||
stage: build
|
||||
only:
|
||||
- beta
|
||||
- hotfix
|
||||
except:
|
||||
- tags
|
||||
script:
|
||||
- export PATH=/opt/homebrew/opt/ruby/bin:$PATH
|
||||
- export PATH=`gem environment gemdir`/bin:$PATH
|
||||
- python3 -u build-system/Make/Make.py remote-build --darwinContainers="$DARWIN_CONTAINERS" --darwinContainersHost="$DARWIN_CONTAINERS_HOST" --cacheHost="$TELEGRAM_BAZEL_CACHE_HOST" --configurationPath="build-system/appstore-configuration.json" --gitCodesigningRepository="$TELEGRAM_GIT_CODESIGNING_REPOSITORY" --gitCodesigningType=appstore --configuration=release_arm64 --embedWatchApp --watchApiId="$TELEGRAM_WATCHOS_APP_ID" --watchApiHash="$TELEGRAM_WATCHOS_APP_HASH"
|
||||
environment:
|
||||
name: testflight_llc
|
||||
artifacts:
|
||||
paths:
|
||||
- build/artifacts
|
||||
expire_in: 3 weeks
|
||||
|
||||
deploy_beta_testflight:
|
||||
tags:
|
||||
- ios_beta
|
||||
stage: deploy
|
||||
only:
|
||||
- beta
|
||||
- hotfix
|
||||
except:
|
||||
- tags
|
||||
script:
|
||||
- python3 -u build-system/Make/Make.py remote-deploy-testflight --darwinContainers="$DARWIN_CONTAINERS" --darwinContainersHost="$DARWIN_CONTAINERS_HOST" --ipa="build/artifacts/Telegram.ipa" --dsyms="build/artifacts/Telegram.DSYMs.zip"
|
||||
environment:
|
||||
name: testflight_llc
|
||||
|
||||
verifysanity_beta_testflight:
|
||||
tags:
|
||||
- ios_beta
|
||||
stage: verifysanity
|
||||
only:
|
||||
- beta
|
||||
- hotfix
|
||||
except:
|
||||
- tags
|
||||
script:
|
||||
- rm -rf build/verify-input && mkdir -p build/verify-input && mv build/artifacts/Telegram.ipa build/verify-input/TelegramVerifySource.ipa
|
||||
- python3 -u build-system/Make/Make.py remote-build --darwinContainers="$DARWIN_CONTAINERS" --darwinContainersHost="$DARWIN_CONTAINERS_HOST" --cacheHost="$TELEGRAM_BAZEL_CACHE_HOST" --configurationPath="build-system/appstore-configuration.json" --codesigningInformationPath=build-system/fake-codesigning --configuration=release_arm64
|
||||
- python3 -u build-system/Make/Make.py remote-ipa-diff --darwinContainers="$DARWIN_CONTAINERS" --darwinContainersHost="$DARWIN_CONTAINERS_HOST" --ipa1="build/artifacts/Telegram.ipa" --ipa2="build/verify-input/TelegramVerifySource.ipa"
|
||||
- if [ $? -ne 0 ]; then echo "Verification failed"; mkdir -p build/verifysanity_artifacts; cp build/artifacts/Telegram.ipa build/verifysanity_artifacts/; exit 1; fi
|
||||
environment:
|
||||
name: testflight_llc
|
||||
artifacts:
|
||||
when: on_failure
|
||||
paths:
|
||||
- build/artifacts
|
||||
expire_in: 1 week
|
||||
|
||||
verify_beta_testflight:
|
||||
tags:
|
||||
- ios_beta
|
||||
stage: verify
|
||||
only:
|
||||
- beta
|
||||
- hotfix
|
||||
except:
|
||||
- tags
|
||||
script:
|
||||
- rm -rf build/verify-input && mkdir -p build/verify-input && mv build/artifacts/Telegram.ipa build/verify-input/TelegramVerifySource.ipa
|
||||
- python3 -u build-system/Make/Make.py remote-build --darwinContainers="$DARWIN_CONTAINERS" --darwinContainersHost="$DARWIN_CONTAINERS_HOST" --configurationPath="build-system/appstore-configuration.json" --codesigningInformationPath=build-system/fake-codesigning --configuration=release_arm64
|
||||
- python3 -u build-system/Make/Make.py remote-ipa-diff --darwinContainers="$DARWIN_CONTAINERS" --darwinContainersHost="$DARWIN_CONTAINERS_HOST" --ipa1="build/artifacts/Telegram.ipa" --ipa2="build/verify-input/TelegramVerifySource.ipa"
|
||||
- if [ $? -ne 0 ]; then echo "Verification failed"; mkdir -p build/verify_artifacts; cp build/artifacts/Telegram.ipa build/verify_artifacts/; exit 1; fi
|
||||
environment:
|
||||
name: testflight_llc
|
||||
artifacts:
|
||||
when: on_failure
|
||||
paths:
|
||||
- build/artifacts
|
||||
expire_in: 1 week
|
||||
|
||||
submit_appstore:
|
||||
tags:
|
||||
- deploy
|
||||
only:
|
||||
- beta
|
||||
- hotfix
|
||||
stage: submit
|
||||
needs: []
|
||||
when: manual
|
||||
script:
|
||||
- sh "$TELEGRAM_SUBMIT_BUILD"
|
||||
environment:
|
||||
name: testflight_llc
|
||||
4
.gitmodules
vendored
|
|
@ -1,7 +1,7 @@
|
|||
|
||||
[submodule "submodules/rlottie/rlottie"]
|
||||
path = submodules/rlottie/rlottie
|
||||
url=../rlottie.git
|
||||
url = https://github.com/TelegramMessenger/rlottie.git
|
||||
[submodule "build-system/bazel-rules/rules_apple"]
|
||||
path = build-system/bazel-rules/rules_apple
|
||||
url=https://github.com/ali-fareed/rules_apple.git
|
||||
|
|
@ -13,7 +13,7 @@ url=https://github.com/bazelbuild/rules_swift.git
|
|||
url = https://github.com/bazelbuild/apple_support.git
|
||||
[submodule "submodules/TgVoipWebrtc/tgcalls"]
|
||||
path = submodules/TgVoipWebrtc/tgcalls
|
||||
url=../tgcalls.git
|
||||
url = https://github.com/TelegramMessenger/tgcalls.git
|
||||
[submodule "third-party/libvpx/libvpx"]
|
||||
path = third-party/libvpx/libvpx
|
||||
url = https://github.com/webmproject/libvpx.git
|
||||
|
|
|
|||
|
|
@ -6,7 +6,9 @@ This file provides guidance to AI assistants when working with code in this repo
|
|||
|
||||
The app is built using Bazel via the `Make.py` wrapper. There is no selective per-module build — the only supported invocation builds the full `Telegram/Telegram` target.
|
||||
|
||||
**Command:**
|
||||
**Convenience wrapper:** `scripts/build-wintergram.sh` wraps the Make.py invocations for the WinterGram dev config and emits WinterGram-named IPAs in `build/`: `sim` (simulator), `sideload` / `livecontainer` (device), `all`, plus `--install`/`--run` (simulator-only: build + install into the booted Simulator), `--clean`, `--open-build-dir`. It sources `~/.zshrc` itself. App icons are regenerated from `branding/wnt-app-icon-*.png` by `scripts/generate-app-icons.sh`.
|
||||
|
||||
**Raw command (canonical):**
|
||||
|
||||
```sh
|
||||
python3 build-system/Make/Make.py --overrideXcodeVersion \
|
||||
|
|
|
|||
170
README.md
|
|
@ -1,122 +1,102 @@
|
|||
<h1 align="center">WinterGram</h1>
|
||||
|
||||
<h4 align="center">WinterGram (Wnt) is a feature-rich, privacy-focused Telegram client for iPhone — a native iOS port of the AyuGram experience, built on top of Telegram-iOS.</h4>
|
||||
# WinterGram
|
||||
|
||||
<p align="center">
|
||||
<a href="LICENSE"><img src="https://img.shields.io/badge/License-GPLv2-green?style=for-the-badge&logo=gnu&logoColor=FFFFFF" alt="License"></a>
|
||||
<img src="https://img.shields.io/badge/Platform-iOS%2015%2B-black?style=for-the-badge&logo=apple&logoColor=white" alt="Platform">
|
||||
<img src="https://img.shields.io/badge/Language-Swift-orange?style=for-the-badge&logo=swift&logoColor=white" alt="Swift">
|
||||
<img src="https://img.shields.io/badge/Build-Bazel-43A047?style=for-the-badge&logo=bazel&logoColor=white" alt="Bazel">
|
||||
<img src="https://img.shields.io/github/stars/reekeer/WinterGram?style=for-the-badge&logo=github&logoColor=white" alt="Stars">
|
||||
<img src="https://img.shields.io/github/last-commit/reekeer/WinterGram?style=for-the-badge&logo=github&logoColor=white" alt="Last Commit">
|
||||
<img src="branding/icon-app-light.png" width="112" height="112" alt="WinterGram white icon">
|
||||
</p>
|
||||
|
||||
---
|
||||
<p align="center">
|
||||
<strong>Privacy-focused Telegram client for iOS</strong>
|
||||
</p>
|
||||
|
||||
**WinterGram** brings the most-loved AyuGram features to iOS with a clean, Material-inspired interface, a configurable **Liquid Glass** appearance, and a single dedicated settings tab where everything lives. It speaks both the standard `tg://` deep links and its own `wnt://` scheme.
|
||||
<p align="center">
|
||||
<a href="LICENSE"><img src="https://img.shields.io/badge/License-GPLv2-green?style=flat-square" alt="License"></a>
|
||||
<img src="https://img.shields.io/badge/Version-1.1-blue?style=flat-square" alt="Version 1.1">
|
||||
<img src="https://img.shields.io/badge/Platform-iOS%2015%2B-black?style=flat-square" alt="Platform">
|
||||
<img src="https://img.shields.io/badge/Language-Swift-orange?style=flat-square" alt="Swift">
|
||||
<img src="https://img.shields.io/badge/Build-Bazel-43A047?style=flat-square" alt="Bazel">
|
||||
</p>
|
||||
|
||||
WinterGram (Wnt) is an independent iOS client for Telegram. It keeps the familiar Telegram experience and adds a dedicated **WinterGram** settings tab where privacy tools, history recovery, appearance controls, and other enhancements live in one place.
|
||||
|
||||
The app speaks both `tg://` deep links and its own `wnt://` scheme.
|
||||
|
||||
---
|
||||
|
||||
## ✨ Features
|
||||
## Download
|
||||
|
||||
### 👻 Privacy & Ghost Mode
|
||||
- **Ghost Mode**: don't send read receipts, typing/upload status, or online presence — toggle it all at once.
|
||||
- **Send without sound**: never / only in Ghost Mode / always.
|
||||
- **Story ghost**: view stories without marking them seen, with an optional confirmation prompt.
|
||||
- **Mark read after action**, **go offline after going online**, and per-toggle locks.
|
||||
Prebuilt unsigned IPAs are published on the [Releases](../../releases) page. Install with [AltStore](https://altstore.io), [SideStore](https://sidestore.io), or another sideloading tool.
|
||||
|
||||
### 🗂 History & Recovery
|
||||
- **Save deleted messages**: keep messages locally even after the other side deletes them.
|
||||
- **Edit history**: store every revision of a message and browse it.
|
||||
- **Semi-transparent deleted markers** and a customizable deleted / edited mark.
|
||||
|
||||
### 🧊 Hidden Archive ("AАrchive")
|
||||
- Stash chats into a **separate, settings-only archive** — no notifications, no badge.
|
||||
- Optional **auto-mark-read** for everything sent to the stash.
|
||||
|
||||
### 🛡️ Anti-Features
|
||||
- **Disable ads** (sponsored messages).
|
||||
- **Local Telegram Premium** — unlock Premium-gated UI locally.
|
||||
- **Shadow ban** — silently hide a user's messages from your view.
|
||||
- **Hide / disable stories**, **hide Premium statuses**, **disable open-link warning**.
|
||||
|
||||
### 💬 Chat Conveniences
|
||||
- **Sticker / GIF / voice send confirmations**.
|
||||
- **Message seconds** in timestamps and **peer ID** display (Telegram or Bot API form).
|
||||
- **Message translation** with a selectable provider (Telegram / Google / Yandex / system).
|
||||
- **WebView platform spoofing** (auto / iOS / Android / macOS / desktop) and taller WebViews.
|
||||
|
||||
### 🎨 Appearance & Customization
|
||||
- **Liquid Glass** — frosted, translucent surfaces across the chat list, navigation, and tab bar, with **on/off toggle**, adjustable **transparency**, **blur radius**, **tint**, and per-surface application.
|
||||
- **Material Design** switches and controls.
|
||||
- **Avatar corner radius** (round → squircle → square) and **message bubble radius**, with optional single-corner mode.
|
||||
- **Custom fonts** (UI + monospace).
|
||||
- **App icons**, including the bundled WinterGram dark icon, plus **AyuGram / exteraGram icon-pack compatibility**.
|
||||
- **Custom emoji** support, with an option to show only your added emoji & stickers.
|
||||
WinterGram is not distributed on the App Store. Free Apple IDs must re-sign the app every 7 days; AltStore and SideStore can automate this.
|
||||
|
||||
---
|
||||
|
||||
## 🔗 Deep Links
|
||||
## Features
|
||||
|
||||
WinterGram registers and resolves two URL schemes — anything that works with `tg://` works with `wnt://`:
|
||||
WinterGram adds Ghost Mode, saved deleted messages, edit history, a hidden archive, local Premium UI, ad removal, Liquid Glass appearance, spoofing, chat conveniences, and more.
|
||||
|
||||
A complete, structured feature list is in [`docs/FEATURES.md`](docs/FEATURES.md).
|
||||
|
||||
Developer implementation notes: [`docs/wintergram-features.md`](docs/wintergram-features.md).
|
||||
|
||||
---
|
||||
|
||||
## Quick Start (build from source)
|
||||
|
||||
**Requirements:** macOS, Xcode, Python 3, ~60 GB free disk space.
|
||||
|
||||
```sh
|
||||
git clone --recursive https://github.com/reekeer/WinterGram.git
|
||||
cd WinterGram
|
||||
cp build-system/wintergram-development-configuration.example.json \
|
||||
build-system/wintergram-development-configuration.json
|
||||
# Edit the JSON: api_id, api_hash, bundle_id, team_id
|
||||
./scripts/build-wintergram.sh sim
|
||||
```
|
||||
|
||||
The simulator IPA lands in `build/WinterGram-Simulator.ipa`. Build straight into a running Simulator with `./scripts/build-wintergram.sh --install` (add `--run` to launch it). Full instructions (device builds, signing, AltStore): [`docs/wintergram-setup.md`](docs/wintergram-setup.md).
|
||||
|
||||
---
|
||||
|
||||
## Configuration
|
||||
|
||||
All WinterGram options are stored in `WinterGramSettings` and exposed through the WinterGram tab in Settings. English UI strings ship in `en.lproj`; Russian translations are seeded in `submodules/TelegramPresentationData/Sources/WinterGramStrings.swift`.
|
||||
|
||||
---
|
||||
|
||||
## Project Layout
|
||||
|
||||
```
|
||||
WinterGram/
|
||||
├── Telegram/ App entry, extensions, icons, xcconfig
|
||||
├── submodules/ Feature libraries (Swift / Obj-C)
|
||||
├── branding/ Source art: app-icon PNGs (wnt-app-icon-*.png) + badge/snowflake shapes
|
||||
├── docs/ Setup guide, feature list, architecture notes
|
||||
├── build-system/ Bazel wrapper (Make.py) and configs
|
||||
└── scripts/ Build + tooling
|
||||
├── build-wintergram.sh Convenience build script (sim / sideload / livecontainer)
|
||||
└── generate-app-icons.sh Regenerate every app icon from branding/wnt-app-icon-*.png
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Deep Links
|
||||
|
||||
Anything that works with `tg://` also works with `wnt://`:
|
||||
|
||||
```
|
||||
tg://resolve?domain=durov
|
||||
wnt://resolve?domain=durov
|
||||
wnt://wintergram/ghost
|
||||
```
|
||||
|
||||
`wnt://` links are normalized to the standard resolver at the entry point, so they route through exactly the same handling as native Telegram links.
|
||||
`wnt://` URLs are normalized to `tg://` at the app entry point.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Build
|
||||
## Contributing
|
||||
|
||||
WinterGram builds with the standard Telegram-iOS toolchain (Bazel via the `Make.py` wrapper) on **macOS with Xcode**.
|
||||
|
||||
```sh
|
||||
python3 build-system/Make/Make.py --overrideXcodeVersion \
|
||||
--cacheDir ~/telegram-bazel-cache \
|
||||
build \
|
||||
--configurationPath build-system/appstore-configuration.json \
|
||||
--gitCodesigningRepository <your-codesigning-repo> \
|
||||
--gitCodesigningType development --gitCodesigningUseCurrent \
|
||||
--buildNumber=1 --configuration=debug_sim_arm64
|
||||
```
|
||||
|
||||
See [`docs/wintergram-features.md`](docs/wintergram-features.md) for the feature → implementation map and the project's architecture notes.
|
||||
Maintainers: [**IMDelewer**](https://github.com/IMDelewer), [**salenyo**](https://github.com/salenyo) under the [reekeer](https://github.com/reekeer) organization. See [`MAINTAINERS.md`](MAINTAINERS.md).
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Configuration
|
||||
|
||||
All WinterGram options live in a single settings store (`WinterGramSettings`), persisted with the app's shared-data system and exposed through reactive signals. There is one dedicated **WinterGram** tab in Settings — no scattered toggles.
|
||||
|
||||
---
|
||||
|
||||
## 🗂 Structure
|
||||
|
||||
```
|
||||
WinterGram/
|
||||
├── Telegram/ ← App entry points and extensions
|
||||
├── submodules/ ← Feature libraries (Swift / Obj-C)
|
||||
│ └── TelegramUIPreferences/
|
||||
│ └── Sources/WinterGramSettings.swift ← all WinterGram options
|
||||
├── branding/ ← WinterGram icons and brand assets
|
||||
├── docs/ ← Architecture and feature documentation
|
||||
├── build-system/ ← Bazel build wrapper (Make.py)
|
||||
└── README.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🤝 Contributing
|
||||
|
||||
Contributions are welcome. WinterGram is maintained by [**IMDelewer**](https://github.com/IMDelewer) and [**salenyo**](https://github.com/salenyo) under the [reekeer](https://github.com/reekeer) organization. See [`MAINTAINERS.md`](MAINTAINERS.md).
|
||||
|
||||
---
|
||||
|
||||
<p align="center">
|
||||
Built on Telegram-iOS · inspired by AyuGram
|
||||
</p>
|
||||
|
||||
<p align="center"><sub><a href="LICENSE">GPLv2</a> © reekeer</sub></p>
|
||||
<p align="center"><sub><a href="LICENSE">GPLv2</a> © reekeer</sub></p>
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
c27f02cf6e413fdc
|
||||
106
Telegram/BUILD
|
|
@ -317,21 +317,25 @@ filegroup(
|
|||
)
|
||||
|
||||
alternate_icon_folders = [
|
||||
"BlackIcon",
|
||||
"BlackClassicIcon",
|
||||
"BlackFilledIcon",
|
||||
"BlueIcon",
|
||||
"BlackIcon",
|
||||
"BlueClassicIcon",
|
||||
"BlueFilledIcon",
|
||||
"WhiteFilledIcon",
|
||||
"BlueIcon",
|
||||
"New1",
|
||||
"New2",
|
||||
"Premium",
|
||||
"PremiumBlack",
|
||||
"PremiumTurbo",
|
||||
"WinterGramDark",
|
||||
"WinterGramDeveloper",
|
||||
"WinterGramHouseDark",
|
||||
"WinterGramHouseLight",
|
||||
"WinterGramLight",
|
||||
]
|
||||
|
||||
composer_icon_folders = ["Telegram"]
|
||||
composer_icon_folders = []
|
||||
|
||||
[
|
||||
filegroup(
|
||||
|
|
@ -434,6 +438,16 @@ plist_fragment(
|
|||
<string>tonsite</string>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Viewer</string>
|
||||
<key>CFBundleURLName</key>
|
||||
<string>{telegram_bundle_id}.wnt</string>
|
||||
<key>CFBundleURLSchemes</key>
|
||||
<array>
|
||||
<string>wnt</string>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
""".format(
|
||||
telegram_bundle_id = telegram_bundle_id,
|
||||
|
|
@ -525,6 +539,26 @@ associated_domains_fragment = "" if telegram_bundle_id not in official_bundle_id
|
|||
</array>
|
||||
"""
|
||||
|
||||
background_modes_fragment = """
|
||||
<key>UIBackgroundModes</key>
|
||||
<array>
|
||||
<string>audio</string>
|
||||
<string>fetch</string>
|
||||
<string>location</string>
|
||||
<string>remote-notification</string>
|
||||
<string>voip</string>
|
||||
<string>processing</string>
|
||||
</array>
|
||||
""" if telegram_aps_environment != "" else """
|
||||
<key>UIBackgroundModes</key>
|
||||
<array>
|
||||
<string>audio</string>
|
||||
<string>fetch</string>
|
||||
<string>location</string>
|
||||
<string>processing</string>
|
||||
</array>
|
||||
"""
|
||||
|
||||
siri_fragment = "" if not telegram_enable_siri else """
|
||||
<key>com.apple.developer.siri</key>
|
||||
<true/>
|
||||
|
|
@ -629,7 +663,7 @@ plist_fragment(
|
|||
template =
|
||||
"""
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>Telegram</string>
|
||||
<string>WinterGram</string>
|
||||
"""
|
||||
)
|
||||
|
||||
|
|
@ -955,14 +989,14 @@ ios_framework(
|
|||
plist_fragment(
|
||||
name = "ShareInfoPlist",
|
||||
extension = "plist",
|
||||
template =
|
||||
template =
|
||||
"""
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>{telegram_bundle_id}.Share</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Telegram</string>
|
||||
<string>WinterGram</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>NSExtension</key>
|
||||
|
|
@ -1047,14 +1081,14 @@ ios_extension(
|
|||
plist_fragment(
|
||||
name = "NotificationContentInfoPlist",
|
||||
extension = "plist",
|
||||
template =
|
||||
template =
|
||||
"""
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>{telegram_bundle_id}.NotificationContent</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Telegram</string>
|
||||
<string>WinterGram</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>NSExtension</key>
|
||||
|
|
@ -1154,14 +1188,14 @@ ios_extension(
|
|||
plist_fragment(
|
||||
name = "WidgetInfoPlist",
|
||||
extension = "plist",
|
||||
template =
|
||||
template =
|
||||
"""
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>{telegram_bundle_id}.Widget</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Telegram</string>
|
||||
<string>WinterGram</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>NSExtension</key>
|
||||
|
|
@ -1267,14 +1301,14 @@ ios_extension(
|
|||
plist_fragment(
|
||||
name = "IntentsInfoPlist",
|
||||
extension = "plist",
|
||||
template =
|
||||
template =
|
||||
"""
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>{telegram_bundle_id}.SiriIntents</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Telegram</string>
|
||||
<string>WinterGram</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>NSExtension</key>
|
||||
|
|
@ -1398,14 +1432,14 @@ ios_extension(
|
|||
plist_fragment(
|
||||
name = "BroadcastUploadInfoPlist",
|
||||
extension = "plist",
|
||||
template =
|
||||
template =
|
||||
"""
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>{telegram_bundle_id}.BroadcastUpload</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Telegram</string>
|
||||
<string>WinterGram</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>NSExtension</key>
|
||||
|
|
@ -1492,14 +1526,14 @@ ios_extension(
|
|||
plist_fragment(
|
||||
name = "NotificationServiceInfoPlist",
|
||||
extension = "plist",
|
||||
template =
|
||||
template =
|
||||
"""
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>{telegram_bundle_id}.NotificationService</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Telegram</string>
|
||||
<string>WinterGram</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>NSExtension</key>
|
||||
|
|
@ -1555,7 +1589,7 @@ ios_extension(
|
|||
plist_fragment(
|
||||
name = "TelegramInfoPlist",
|
||||
extension = "plist",
|
||||
template =
|
||||
template =
|
||||
"""
|
||||
<key>BGTaskSchedulerPermittedIdentifiers</key>
|
||||
<array>
|
||||
|
|
@ -1568,11 +1602,11 @@ plist_fragment(
|
|||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>Telegram</string>
|
||||
<string>WinterGram</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>{telegram_bundle_id}</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Telegram</string>
|
||||
<string>WinterGram</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
|
|
@ -1629,17 +1663,17 @@ plist_fragment(
|
|||
<key>NSCameraUsageDescription</key>
|
||||
<string>We need this so that you can take and share photos and videos.</string>
|
||||
<key>NSContactsUsageDescription</key>
|
||||
<string>Telegram stores your contacts heavily encrypted in the cloud to let you connect with your friends across all your devices.</string>
|
||||
<string>WinterGram stores your contacts heavily encrypted in the cloud to let you connect with your friends across all your devices.</string>
|
||||
<key>NSFaceIDUsageDescription</key>
|
||||
<string>You can use Face ID to unlock the app.</string>
|
||||
<key>NSLocationAlwaysUsageDescription</key>
|
||||
<string>When you send your location to your friends, Telegram needs access to show them a map. You also need this to send locations from an Apple Watch.</string>
|
||||
<string>When you send your location to your friends, WinterGram needs access to show them a map. You also need this to send locations from an Apple Watch.</string>
|
||||
<key>NSLocationWhenInUseUsageDescription</key>
|
||||
<string>When you send your location to your friends, Telegram needs access to show them a map.</string>
|
||||
<string>When you send your location to your friends, WinterGram needs access to show them a map.</string>
|
||||
<key>NSMicrophoneUsageDescription</key>
|
||||
<string>We need this so that you can record and share voice messages and videos with sound.</string>
|
||||
<key>NSMotionUsageDescription</key>
|
||||
<string>When you send your location to your friends, Telegram needs access to show them a map.</string>
|
||||
<string>When you send your location to your friends, WinterGram needs access to show them a map.</string>
|
||||
<key>NSPhotoLibraryAddUsageDescription</key>
|
||||
<string>We need this so that you can share photos and videos from your photo library.</string>
|
||||
<key>NSPhotoLibraryUsageDescription</key>
|
||||
|
|
@ -1658,15 +1692,7 @@ plist_fragment(
|
|||
<string>AremacFS-Regular.otf</string>
|
||||
<string>AremacFS-Semibold.otf</string>
|
||||
</array>
|
||||
<key>UIBackgroundModes</key>
|
||||
<array>
|
||||
<string>audio</string>
|
||||
<string>fetch</string>
|
||||
<string>location</string>
|
||||
<string>remote-notification</string>
|
||||
<string>voip</string>
|
||||
<string>processing</string>
|
||||
</array>
|
||||
{background_modes_fragment}
|
||||
<key>UIDeviceFamily</key>
|
||||
<array>
|
||||
<integer>1</integer>
|
||||
|
|
@ -1707,13 +1733,13 @@ plist_fragment(
|
|||
<string>public.data</string>
|
||||
</array>
|
||||
<key>UTTypeDescription</key>
|
||||
<string>Telegram iOS Color Theme File</string>
|
||||
<string>WinterGram iOS Color Theme File</string>
|
||||
<key>UTTypeIconFiles</key>
|
||||
<array>
|
||||
<string>BlueIcon@3x.png</string>
|
||||
</array>
|
||||
<key>UTTypeIdentifier</key>
|
||||
<string>org.telegram.Telegram-iOS.theme</string>
|
||||
<string>dev.reekeer.wintergram.theme</string>
|
||||
<key>UTTypeTagSpecification</key>
|
||||
<dict>
|
||||
<key>public.filename-extension</key>
|
||||
|
|
@ -1729,6 +1755,7 @@ plist_fragment(
|
|||
<true/>
|
||||
""".format(
|
||||
telegram_bundle_id = telegram_bundle_id,
|
||||
background_modes_fragment = background_modes_fragment,
|
||||
)
|
||||
)
|
||||
|
||||
|
|
@ -1777,12 +1804,13 @@ ios_application(
|
|||
":UrlTypesInfoPlist",
|
||||
],
|
||||
app_icons = [ ":{}_icon".format(name) for name in composer_icon_folders ],
|
||||
primary_app_icon = "WinterGramDarkIcon",
|
||||
alternate_icons = [
|
||||
":{}".format(name) for name in alternate_icon_folders
|
||||
],
|
||||
resources = [
|
||||
":LaunchScreen",
|
||||
#":DefaultAppIcon",
|
||||
":DefaultAppIcon",
|
||||
],
|
||||
frameworks = [
|
||||
":MtProtoKitFramework",
|
||||
|
|
@ -1845,9 +1873,9 @@ filegroup(
|
|||
)
|
||||
|
||||
ios_test_runner(
|
||||
name = "iPhone-17__26.2",
|
||||
name = "iPhone-17__26.5",
|
||||
device_type = "iPhone 17",
|
||||
os_version = "26.2",
|
||||
os_version = "26.5",
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -1864,7 +1892,7 @@ ios_ui_test_suite(
|
|||
bundle_id = "org.telegram.Telegram-iOS-uitests",
|
||||
minimum_os_version = minimum_os_version,
|
||||
runners = [
|
||||
":iPhone-17__26.2",
|
||||
":iPhone-17__26.5",
|
||||
],
|
||||
tags = ["manual"],
|
||||
test_host = "//Telegram",
|
||||
|
|
|
|||
|
|
@ -72,7 +72,29 @@
|
|||
<key>UIPrerenderedIcon</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>New1</key>
|
||||
<key>WinterGramDark</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>WinterGramDarkIpad</string>
|
||||
<string>WinterGramDarkLargeIpad</string>
|
||||
<string>WinterGramDarkNotificationIcon</string>
|
||||
</array>
|
||||
<key>UIPrerenderedIcon</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>WinterGramLight</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>WinterGramLightIpad</string>
|
||||
<string>WinterGramLightLargeIpad</string>
|
||||
<string>WinterGramLightNotificationIcon</string>
|
||||
</array>
|
||||
<key>UIPrerenderedIcon</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>New1</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
|
|
|
|||
|
|
@ -66,6 +66,26 @@
|
|||
<key>UIPrerenderedIcon</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>WinterGramDark</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>WinterGramDark</string>
|
||||
<string>WinterGramDarkNotificationIcon</string>
|
||||
</array>
|
||||
<key>UIPrerenderedIcon</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>WinterGramLight</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>WinterGramLight</string>
|
||||
<string>WinterGramLightNotificationIcon</string>
|
||||
</array>
|
||||
<key>UIPrerenderedIcon</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>New1</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
|
|
|
|||
8
Telegram/Telegram-iOS/AppIcons.xcassets/WinterGramDark.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"images" : [
|
||||
{ "idiom" : "universal", "scale" : "1x" },
|
||||
{ "filename" : "WinterGramDark@2x.png", "idiom" : "universal", "scale" : "2x" },
|
||||
{ "filename" : "WinterGramDark@3x.png", "idiom" : "universal", "scale" : "3x" }
|
||||
],
|
||||
"info" : { "author" : "xcode", "version" : 1 }
|
||||
}
|
||||
BIN
Telegram/Telegram-iOS/AppIcons.xcassets/WinterGramDark.imageset/WinterGramDark@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
Telegram/Telegram-iOS/AppIcons.xcassets/WinterGramDark.imageset/WinterGramDark@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 32 KiB |
8
Telegram/Telegram-iOS/AppIcons.xcassets/WinterGramDeveloper.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"images" : [
|
||||
{ "idiom" : "universal", "scale" : "1x" },
|
||||
{ "filename" : "WinterGramDeveloper@2x.png", "idiom" : "universal", "scale" : "2x" },
|
||||
{ "filename" : "WinterGramDeveloper@3x.png", "idiom" : "universal", "scale" : "3x" }
|
||||
],
|
||||
"info" : { "author" : "xcode", "version" : 1 }
|
||||
}
|
||||
BIN
Telegram/Telegram-iOS/AppIcons.xcassets/WinterGramDeveloper.imageset/WinterGramDeveloper@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
Telegram/Telegram-iOS/AppIcons.xcassets/WinterGramDeveloper.imageset/WinterGramDeveloper@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 37 KiB |
8
Telegram/Telegram-iOS/AppIcons.xcassets/WinterGramHouseDark.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"images" : [
|
||||
{ "idiom" : "universal", "scale" : "1x" },
|
||||
{ "filename" : "WinterGramHouseDark@2x.png", "idiom" : "universal", "scale" : "2x" },
|
||||
{ "filename" : "WinterGramHouseDark@3x.png", "idiom" : "universal", "scale" : "3x" }
|
||||
],
|
||||
"info" : { "author" : "xcode", "version" : 1 }
|
||||
}
|
||||
BIN
Telegram/Telegram-iOS/AppIcons.xcassets/WinterGramHouseDark.imageset/WinterGramHouseDark@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
Telegram/Telegram-iOS/AppIcons.xcassets/WinterGramHouseDark.imageset/WinterGramHouseDark@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 81 KiB |
8
Telegram/Telegram-iOS/AppIcons.xcassets/WinterGramHouseLight.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"images" : [
|
||||
{ "idiom" : "universal", "scale" : "1x" },
|
||||
{ "filename" : "WinterGramHouseLight@2x.png", "idiom" : "universal", "scale" : "2x" },
|
||||
{ "filename" : "WinterGramHouseLight@3x.png", "idiom" : "universal", "scale" : "3x" }
|
||||
],
|
||||
"info" : { "author" : "xcode", "version" : 1 }
|
||||
}
|
||||
BIN
Telegram/Telegram-iOS/AppIcons.xcassets/WinterGramHouseLight.imageset/WinterGramHouseLight@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
Telegram/Telegram-iOS/AppIcons.xcassets/WinterGramHouseLight.imageset/WinterGramHouseLight@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 84 KiB |
8
Telegram/Telegram-iOS/AppIcons.xcassets/WinterGramLight.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"images" : [
|
||||
{ "idiom" : "universal", "scale" : "1x" },
|
||||
{ "filename" : "WinterGramLight@2x.png", "idiom" : "universal", "scale" : "2x" },
|
||||
{ "filename" : "WinterGramLight@3x.png", "idiom" : "universal", "scale" : "3x" }
|
||||
],
|
||||
"info" : { "author" : "xcode", "version" : 1 }
|
||||
}
|
||||
BIN
Telegram/Telegram-iOS/AppIcons.xcassets/WinterGramLight.imageset/WinterGramLight@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
Telegram/Telegram-iOS/AppIcons.xcassets/WinterGramLight.imageset/WinterGramLight@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 36 KiB |
|
|
@ -1,4 +1,4 @@
|
|||
APP_NAME=Telegram
|
||||
APP_NAME=WinterGram
|
||||
APP_BUNDLE_ID=ph.telegra.Telegraph
|
||||
APP_SPECIFIC_URL_SCHEME=tgapp
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
APP_NAME=Telegram Fork
|
||||
APP_NAME=WinterGram
|
||||
APP_BUNDLE_ID=fork.telegram.Fork
|
||||
APP_SPECIFIC_URL_SCHEME=tgfork
|
||||
|
||||
|
|
|
|||
8
Telegram/Telegram-iOS/Config-WinterGram.xcconfig
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
APP_NAME=WinterGram
|
||||
APP_BUNDLE_ID=dev.reekeer.wintergram
|
||||
APP_SPECIFIC_URL_SCHEME=wnt
|
||||
|
||||
GLOBAL_CONSTANTS = APP_CONFIG_IS_INTERNAL_BUILD=true APP_CONFIG_IS_APPSTORE_BUILD=false APP_CONFIG_APPSTORE_ID=0 APP_SPECIFIC_URL_SCHEME="\"$(APP_SPECIFIC_URL_SCHEME)\""
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) $(GLOBAL_CONSTANTS)
|
||||
|
||||
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) APP_CONFIG_API_ID=2040 APP_CONFIG_API_HASH="\"b18441a1ff607e10a989891a5462e627\"" APP_CONFIG_HOCKEYAPP_ID=""
|
||||
|
|
@ -1,115 +1,110 @@
|
|||
{
|
||||
"images" : [
|
||||
"images": [
|
||||
{
|
||||
"filename" : "BlueNotificationIcon@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
"filename": "BlueNotificationIcon@2x.png",
|
||||
"idiom": "iphone",
|
||||
"scale": "2x",
|
||||
"size": "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "BlueNotificationIcon@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "20x20"
|
||||
"filename": "BlueNotificationIcon@3x.png",
|
||||
"idiom": "iphone",
|
||||
"scale": "3x",
|
||||
"size": "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "Simple@58x58.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
"filename": "Simple@58x58.png",
|
||||
"idiom": "iphone",
|
||||
"scale": "2x",
|
||||
"size": "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "Simple@87x87.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "29x29"
|
||||
"filename": "Simple@87x87.png",
|
||||
"idiom": "iphone",
|
||||
"scale": "3x",
|
||||
"size": "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "Simple@80x80.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
"filename": "Simple@80x80.png",
|
||||
"idiom": "iphone",
|
||||
"scale": "2x",
|
||||
"size": "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "BlueIcon@2x-1.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "40x40"
|
||||
"filename": "BlueIcon@2x-1.png",
|
||||
"idiom": "iphone",
|
||||
"scale": "3x",
|
||||
"size": "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "BlueIcon@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "60x60"
|
||||
"filename": "BlueIcon@2x.png",
|
||||
"idiom": "iphone",
|
||||
"scale": "2x",
|
||||
"size": "60x60"
|
||||
},
|
||||
{
|
||||
"filename" : "BlueIcon@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "60x60"
|
||||
"filename": "BlueIcon@3x.png",
|
||||
"idiom": "iphone",
|
||||
"scale": "3x",
|
||||
"size": "60x60"
|
||||
},
|
||||
{
|
||||
"filename" : "BlueNotificationIcon.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "20x20"
|
||||
"filename": "BlueNotificationIcon.png",
|
||||
"idiom": "ipad",
|
||||
"scale": "1x",
|
||||
"size": "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "BlueNotificationIcon@2x-1.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
"filename": "BlueNotificationIcon@2x-1.png",
|
||||
"idiom": "ipad",
|
||||
"scale": "2x",
|
||||
"size": "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "Simple@29x29.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "29x29"
|
||||
"filename": "Simple@29x29.png",
|
||||
"idiom": "ipad",
|
||||
"scale": "1x",
|
||||
"size": "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "Simple@58x58-1.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
"filename": "Simple@58x58-1.png",
|
||||
"idiom": "ipad",
|
||||
"scale": "2x",
|
||||
"size": "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "Simple@40x40-1.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "40x40"
|
||||
"filename": "Simple@40x40-1.png",
|
||||
"idiom": "ipad",
|
||||
"scale": "1x",
|
||||
"size": "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "Simple@80x80-1.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
"filename": "Simple@80x80-1.png",
|
||||
"idiom": "ipad",
|
||||
"scale": "2x",
|
||||
"size": "40x40"
|
||||
},
|
||||
{
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "76x76"
|
||||
"filename": "BlueIconIpad@2x.png",
|
||||
"idiom": "ipad",
|
||||
"scale": "2x",
|
||||
"size": "76x76"
|
||||
},
|
||||
{
|
||||
"filename" : "BlueIconIpad@2x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "76x76"
|
||||
"filename": "BlueIconLargeIpad@2x.png",
|
||||
"idiom": "ipad",
|
||||
"scale": "2x",
|
||||
"size": "83.5x83.5"
|
||||
},
|
||||
{
|
||||
"filename" : "BlueIconLargeIpad@2x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "83.5x83.5"
|
||||
},
|
||||
{
|
||||
"filename" : "Simple-iTunesArtwork.png",
|
||||
"idiom" : "ios-marketing",
|
||||
"scale" : "1x",
|
||||
"size" : "1024x1024"
|
||||
"filename": "Simple-iTunesArtwork.png",
|
||||
"idiom": "ios-marketing",
|
||||
"scale": "1x",
|
||||
"size": "1024x1024"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
"info": {
|
||||
"author": "xcode",
|
||||
"version": 1
|
||||
}
|
||||
}
|
||||
|
|
|
|||
8
Telegram/Telegram-iOS/DefaultAppIcon.xcassets/WinterGramBadge.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"images" : [
|
||||
{ "idiom" : "universal", "scale" : "1x" },
|
||||
{ "filename" : "WinterGramBadge@2x.png", "idiom" : "universal", "scale" : "2x" },
|
||||
{ "filename" : "WinterGramBadge@3x.png", "idiom" : "universal", "scale" : "3x" }
|
||||
],
|
||||
"info" : { "author" : "xcode", "version" : 1 }
|
||||
}
|
||||
BIN
Telegram/Telegram-iOS/DefaultAppIcon.xcassets/WinterGramBadge.imageset/WinterGramBadge@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
Telegram/Telegram-iOS/DefaultAppIcon.xcassets/WinterGramBadge.imageset/WinterGramBadge@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 9.8 KiB |
|
|
@ -84,12 +84,6 @@
|
|||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-76.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"filename" : "Icon-152.png",
|
||||
"idiom" : "ipad",
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 771 KiB After Width: | Height: | Size: 590 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 3 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5 KiB |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 8 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 9.2 KiB |
8
Telegram/Telegram-iOS/DefaultAppIcon.xcassets/WinterGramSnowflake.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"images" : [
|
||||
{ "idiom" : "universal", "scale" : "1x" },
|
||||
{ "filename" : "WinterGramSnowflake@2x.png", "idiom" : "universal", "scale" : "2x" },
|
||||
{ "filename" : "WinterGramSnowflake@3x.png", "idiom" : "universal", "scale" : "3x" }
|
||||
],
|
||||
"info" : { "author" : "xcode", "version" : 1 }
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
6
Telegram/Telegram-iOS/DefaultAppIcon.xcassets/WntGramBackplateShape.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"images" : [
|
||||
{ "filename" : "WntGramBackplateShape.png", "idiom" : "universal", "scale" : "1x" }
|
||||
],
|
||||
"info" : { "author" : "xcode", "version" : 1 }
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
8
Telegram/Telegram-iOS/DefaultAppIcon.xcassets/WntGramBanner.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"images" : [
|
||||
{ "idiom" : "universal", "scale" : "1x" },
|
||||
{ "filename" : "WntGramBanner@2x.png", "idiom" : "universal", "scale" : "2x" },
|
||||
{ "filename" : "WntGramBanner@3x.png", "idiom" : "universal", "scale" : "3x" }
|
||||
],
|
||||
"info" : { "author" : "xcode", "version" : 1 }
|
||||
}
|
||||
BIN
Telegram/Telegram-iOS/DefaultAppIcon.xcassets/WntGramBanner.imageset/WntGramBanner@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 249 KiB |
BIN
Telegram/Telegram-iOS/DefaultAppIcon.xcassets/WntGramBanner.imageset/WntGramBanner@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 460 KiB |
8
Telegram/Telegram-iOS/DefaultAppIcon.xcassets/WntGramBannerDefault.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"images" : [
|
||||
{ "idiom" : "universal", "scale" : "1x" },
|
||||
{ "filename" : "WntGramBannerDefault@2x.png", "idiom" : "universal", "scale" : "2x" },
|
||||
{ "filename" : "WntGramBannerDefault@3x.png", "idiom" : "universal", "scale" : "3x" }
|
||||
],
|
||||
"info" : { "author" : "xcode", "version" : 1 }
|
||||
}
|
||||
|
After Width: | Height: | Size: 216 KiB |
|
After Width: | Height: | Size: 377 KiB |
8
Telegram/Telegram-iOS/DefaultAppIcon.xcassets/WntGramDeveloperBadge.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"images" : [
|
||||
{ "idiom" : "universal", "scale" : "1x" },
|
||||
{ "filename" : "WntGramDeveloperBadge@2x.png", "idiom" : "universal", "scale" : "2x" },
|
||||
{ "filename" : "WntGramDeveloperBadge@3x.png", "idiom" : "universal", "scale" : "3x" }
|
||||
],
|
||||
"info" : { "author" : "xcode", "version" : 1 }
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
6
Telegram/Telegram-iOS/DefaultAppIcon.xcassets/WntGramSnowflakeShape.imageset/Contents.json
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"images" : [
|
||||
{ "filename" : "WntGramSnowflakeShape.png", "idiom" : "universal", "scale" : "1x" }
|
||||
],
|
||||
"info" : { "author" : "xcode", "version" : 1 }
|
||||
}
|
||||
|
After Width: | Height: | Size: 4.1 KiB |
|
|
@ -85,11 +85,31 @@
|
|||
<key>UIPrerenderedIcon</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>WinterGramDark</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>WinterGramDark</string>
|
||||
<string>WinterGramDarkNotificationIcon</string>
|
||||
</array>
|
||||
<key>UIPrerenderedIcon</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>WinterGramLight</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>WinterGramLight</string>
|
||||
<string>WinterGramLightNotificationIcon</string>
|
||||
</array>
|
||||
<key>UIPrerenderedIcon</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>CFBundlePrimaryIcon</key>
|
||||
<dict>
|
||||
<key>CFBundleIconName</key>
|
||||
<string>AppIconLLC</string>
|
||||
<string>WinterGramDarkIcon</string>
|
||||
<key>UIPrerenderedIcon</key>
|
||||
<true/>
|
||||
</dict>
|
||||
|
|
@ -171,11 +191,33 @@
|
|||
<key>UIPrerenderedIcon</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>WinterGramDark</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>WinterGramDarkIpad</string>
|
||||
<string>WinterGramDarkLargeIpad</string>
|
||||
<string>WinterGramDarkNotificationIcon</string>
|
||||
</array>
|
||||
<key>UIPrerenderedIcon</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>WinterGramLight</key>
|
||||
<dict>
|
||||
<key>CFBundleIconFiles</key>
|
||||
<array>
|
||||
<string>WinterGramLightIpad</string>
|
||||
<string>WinterGramLightLargeIpad</string>
|
||||
<string>WinterGramLightNotificationIcon</string>
|
||||
</array>
|
||||
<key>UIPrerenderedIcon</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>CFBundlePrimaryIcon</key>
|
||||
<dict>
|
||||
<key>CFBundleIconName</key>
|
||||
<string>AppIconLLC</string>
|
||||
<string>WinterGramDarkIcon</string>
|
||||
<key>UIPrerenderedIcon</key>
|
||||
<true/>
|
||||
</dict>
|
||||
|
|
@ -277,17 +319,17 @@
|
|||
<key>NSCameraUsageDescription</key>
|
||||
<string>We need this so that you can take and share photos and videos.</string>
|
||||
<key>NSContactsUsageDescription</key>
|
||||
<string>Telegram stores your contacts heavily encrypted in the cloud to let you connect with your friends across all your devices.</string>
|
||||
<string>WinterGram stores your contacts heavily encrypted in the cloud to let you connect with your friends across all your devices.</string>
|
||||
<key>NSFaceIDUsageDescription</key>
|
||||
<string>You can use Face ID to unlock the app.</string>
|
||||
<key>NSLocationAlwaysUsageDescription</key>
|
||||
<string>When you send your location to your friends, Telegram needs access to show them a map. You also need this to send locations from an Apple Watch.</string>
|
||||
<string>When you send your location to your friends, WinterGram needs access to show them a map. You also need this to send locations from an Apple Watch.</string>
|
||||
<key>NSLocationWhenInUseUsageDescription</key>
|
||||
<string>When you send your location to your friends, Telegram needs access to show them a map.</string>
|
||||
<string>When you send your location to your friends, WinterGram needs access to show them a map.</string>
|
||||
<key>NSMicrophoneUsageDescription</key>
|
||||
<string>We need this so that you can record and share voice messages and videos with sound.</string>
|
||||
<key>NSMotionUsageDescription</key>
|
||||
<string>When you send your location to your friends, Telegram needs access to show them a map.</string>
|
||||
<string>When you send your location to your friends, WinterGram needs access to show them a map.</string>
|
||||
<key>NSPhotoLibraryAddUsageDescription</key>
|
||||
<string>We need this so that you can share photos and videos from your photo library.</string>
|
||||
<key>NSPhotoLibraryUsageDescription</key>
|
||||
|
|
@ -355,13 +397,13 @@
|
|||
<string>public.data</string>
|
||||
</array>
|
||||
<key>UTTypeDescription</key>
|
||||
<string>Telegram iOS Color Theme File</string>
|
||||
<string>WinterGram iOS Color Theme File</string>
|
||||
<key>UTTypeIconFiles</key>
|
||||
<array>
|
||||
<string>BlueIcon@3x.png</string>
|
||||
</array>
|
||||
<key>UTTypeIdentifier</key>
|
||||
<string>org.telegram.Telegram-iOS.theme</string>
|
||||
<string>dev.reekeer.wintergram.theme</string>
|
||||
<key>UTTypeTagSpecification</key>
|
||||
<dict>
|
||||
<key>public.filename-extension</key>
|
||||
|
|
|
|||
|
|
@ -111,17 +111,17 @@
|
|||
<key>NSCameraUsageDescription</key>
|
||||
<string>We need this so that you can take and share photos and videos.</string>
|
||||
<key>NSContactsUsageDescription</key>
|
||||
<string>Telegram stores your contacts heavily encrypted in the cloud to let you connect with your friends across all your devices.</string>
|
||||
<string>WinterGram stores your contacts heavily encrypted in the cloud to let you connect with your friends across all your devices.</string>
|
||||
<key>NSFaceIDUsageDescription</key>
|
||||
<string>You can use Face ID to unlock the app.</string>
|
||||
<key>NSLocationAlwaysUsageDescription</key>
|
||||
<string>When you send your location to your friends, Telegram needs access to show them a map. You also need this to send locations from an Apple Watch.</string>
|
||||
<string>When you send your location to your friends, WinterGram needs access to show them a map. You also need this to send locations from an Apple Watch.</string>
|
||||
<key>NSLocationWhenInUseUsageDescription</key>
|
||||
<string>When you send your location to your friends, Telegram needs access to show them a map.</string>
|
||||
<string>When you send your location to your friends, WinterGram needs access to show them a map.</string>
|
||||
<key>NSMicrophoneUsageDescription</key>
|
||||
<string>We need this so that you can record and share voice messages and videos with sound.</string>
|
||||
<key>NSMotionUsageDescription</key>
|
||||
<string>When you send your location to your friends, Telegram needs access to show them a map.</string>
|
||||
<string>When you send your location to your friends, WinterGram needs access to show them a map.</string>
|
||||
<key>NSPhotoLibraryAddUsageDescription</key>
|
||||
<string>We need this so that you can share photos and videos from your photo library.</string>
|
||||
<key>NSPhotoLibraryUsageDescription</key>
|
||||
|
|
@ -189,13 +189,13 @@
|
|||
<string>public.data</string>
|
||||
</array>
|
||||
<key>UTTypeDescription</key>
|
||||
<string>Telegram iOS Color Theme File</string>
|
||||
<string>WinterGram iOS Color Theme File</string>
|
||||
<key>UTTypeIconFiles</key>
|
||||
<array>
|
||||
<string>BlueIcon@3x.png</string>
|
||||
</array>
|
||||
<key>UTTypeIdentifier</key>
|
||||
<string>org.telegram.Telegram-iOS.theme</string>
|
||||
<string>dev.reekeer.wintergram.theme</string>
|
||||
<key>UTTypeTagSpecification</key>
|
||||
<dict>
|
||||
<key>public.filename-extension</key>
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 9.7 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 81 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 73 KiB |
|
After Width: | Height: | Size: 2 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 27 KiB |