chore: migrate to new version + fixed several critical bugs

- Migrated project to latest Telegram iOS base (v12.3.2+)
- Fixed circular dependency between GhostModeManager and MiscSettingsManager
- Fixed multiple Bazel build configuration errors (select() default conditions)
- Fixed duplicate type definitions in PeerInfoScreen
- Fixed swiftmodule directory resolution in build scripts
- Added Ghostgram Settings tab in main Settings menu with all 5 features
- Cleared sensitive credentials from config.json (template-only now)
- Excluded bazel-cache from version control
This commit is contained in:
ichmagmaus 812
2026-02-23 23:04:32 +01:00
parent 703e291bcb
commit db53826061
1017 changed files with 62337 additions and 40559 deletions
@@ -5,4 +5,4 @@ APP_SPECIFIC_URL_SCHEME=tgapp
GLOBAL_CONSTANTS = APP_CONFIG_IS_INTERNAL_BUILD=false APP_CONFIG_IS_APPSTORE_BUILD=true APP_CONFIG_APPSTORE_ID=686449807 APP_SPECIFIC_URL_SCHEME="\"$(APP_SPECIFIC_URL_SCHEME)\""
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) $(GLOBAL_CONSTANTS)
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) APP_CONFIG_API_ID=YOUR_API_ID APP_CONFIG_API_HASH="\"YOUR_API_HASH\"" APP_CONFIG_HOCKEYAPP_ID="\"ad8831329ffc8f8aff9a2b0b86558b24\""
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) APP_CONFIG_API_ID=8 APP_CONFIG_API_HASH="\"7245de8e747a0d6fbe11f7cc14fcc0bb\"" APP_CONFIG_HOCKEYAPP_ID="\"ad8831329ffc8f8aff9a2b0b86558b24\""
+1 -1
View File
@@ -5,4 +5,4 @@ APP_SPECIFIC_URL_SCHEME=tgfork
GLOBAL_CONSTANTS = APP_CONFIG_IS_INTERNAL_BUILD=false APP_CONFIG_IS_APPSTORE_BUILD=true 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=YOUR_API_ID APP_CONFIG_API_HASH="\"YOUR_API_HASH\"" APP_CONFIG_HOCKEYAPP_ID="\"\""
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) APP_CONFIG_API_ID=8 APP_CONFIG_API_HASH="\"7245de8e747a0d6fbe11f7cc14fcc0bb\"" APP_CONFIG_HOCKEYAPP_ID="\"\""
@@ -1,115 +1,116 @@
{
"images" : [
"images": [
{
"filename" : "BlueNotificationIcon@2x.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "20x20"
"filename": "GhostIcon@40x40.png",
"idiom": "iphone",
"scale": "2x",
"size": "20x20"
},
{
"filename" : "BlueNotificationIcon@3x.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "20x20"
"filename": "GhostIcon@60x60.png",
"idiom": "iphone",
"scale": "3x",
"size": "20x20"
},
{
"filename" : "Simple@58x58.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "29x29"
"filename": "GhostIcon@58x58.png",
"idiom": "iphone",
"scale": "2x",
"size": "29x29"
},
{
"filename" : "Simple@87x87.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "29x29"
"filename": "GhostIcon@87x87.png",
"idiom": "iphone",
"scale": "3x",
"size": "29x29"
},
{
"filename" : "Simple@80x80.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "40x40"
"filename": "GhostIcon@80x80.png",
"idiom": "iphone",
"scale": "2x",
"size": "40x40"
},
{
"filename" : "BlueIcon@2x-1.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "40x40"
"filename": "GhostIcon@120x120.png",
"idiom": "iphone",
"scale": "3x",
"size": "40x40"
},
{
"filename" : "BlueIcon@2x.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "60x60"
"filename": "GhostIcon@120x120.png",
"idiom": "iphone",
"scale": "2x",
"size": "60x60"
},
{
"filename" : "BlueIcon@3x.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "60x60"
"filename": "GhostIcon@180x180.png",
"idiom": "iphone",
"scale": "3x",
"size": "60x60"
},
{
"filename" : "BlueNotificationIcon.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "20x20"
"filename": "GhostIcon@20x20.png",
"idiom": "ipad",
"scale": "1x",
"size": "20x20"
},
{
"filename" : "BlueNotificationIcon@2x-1.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "20x20"
"filename": "GhostIcon@40x40.png",
"idiom": "ipad",
"scale": "2x",
"size": "20x20"
},
{
"filename" : "Simple@29x29.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "29x29"
"filename": "GhostIcon@29x29.png",
"idiom": "ipad",
"scale": "1x",
"size": "29x29"
},
{
"filename" : "Simple@58x58-1.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "29x29"
"filename": "GhostIcon@58x58.png",
"idiom": "ipad",
"scale": "2x",
"size": "29x29"
},
{
"filename" : "Simple@40x40-1.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "40x40"
"filename": "GhostIcon@40x40.png",
"idiom": "ipad",
"scale": "1x",
"size": "40x40"
},
{
"filename" : "Simple@80x80-1.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "40x40"
"filename": "GhostIcon@80x80.png",
"idiom": "ipad",
"scale": "2x",
"size": "40x40"
},
{
"idiom" : "ipad",
"scale" : "1x",
"size" : "76x76"
"filename": "GhostIcon@76x76.png",
"idiom": "ipad",
"scale": "1x",
"size": "76x76"
},
{
"filename" : "BlueIconIpad@2x.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "76x76"
"filename": "GhostIcon@152x152.png",
"idiom": "ipad",
"scale": "2x",
"size": "76x76"
},
{
"filename" : "BlueIconLargeIpad@2x.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "83.5x83.5"
"filename": "GhostIcon@167x167.png",
"idiom": "ipad",
"scale": "2x",
"size": "83.5x83.5"
},
{
"filename" : "Simple-iTunesArtwork.png",
"idiom" : "ios-marketing",
"scale" : "1x",
"size" : "1024x1024"
"filename": "GhostIcon@1024x1024.png",
"idiom": "ios-marketing",
"scale": "1x",
"size": "1024x1024"
}
],
"info" : {
"author" : "xcode",
"version" : 1
"info": {
"author": "xcode",
"version": 1
}
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 925 B

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

+5 -5
View File
@@ -110,17 +110,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>Ghostgram 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, Ghostgram 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, Ghostgram 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, Ghostgram 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>
@@ -188,7 +188,7 @@
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>Telegram iOS Color Theme File</string>
<string>Ghostgram iOS Color Theme File</string>
<key>UTTypeIconFiles</key>
<array>
<string>BlueIcon@3x.png</string>
Binary file not shown.
@@ -1,12 +1,16 @@
/* Localized versions of Info.plist keys */
"NSContactsUsageDescription" = "Telegram will continuously upload your contacts to its heavily encrypted cloud servers to let you connect with your friends across all your devices.";
"NSLocationWhenInUseUsageDescription" = "When you send your location to your friends, Telegram needs access to show them a map.";
"NSLocationAlwaysAndWhenInUseUsageDescription" = "When you choose to share your Live Location with friends in a chat, Telegram needs background access to your location to keep them updated for the duration of the live sharing.";
"NSLocationAlwaysUsageDescription" = "When you choose to share your live location with friends in a chat, Telegram needs background access to your location to keep them updated for the duration of the live sharing. You also need this to send locations from an Apple Watch.";
/* GHOSTGRAM: App display name */
"CFBundleDisplayName" = "Ghostgram";
"CFBundleName" = "Ghostgram";
"NSContactsUsageDescription" = "Ghostgram will continuously upload your contacts to its heavily encrypted cloud servers to let you connect with your friends across all your devices.";
"NSLocationWhenInUseUsageDescription" = "When you send your location to your friends, Ghostgram needs access to show them a map.";
"NSLocationAlwaysAndWhenInUseUsageDescription" = "When you choose to share your Live Location with friends in a chat, Ghostgram needs background access to your location to keep them updated for the duration of the live sharing.";
"NSLocationAlwaysUsageDescription" = "When you choose to share your live location with friends in a chat, Ghostgram needs background access to your location to keep them updated for the duration of the live sharing. You also need this to send locations from an Apple Watch.";
"NSCameraUsageDescription" = "We need this so that you can take and share photos and videos, as well as make video calls.";
"NSPhotoLibraryUsageDescription" = "We need this so that you can share photos and videos from your photo library.";
"NSPhotoLibraryAddUsageDescription" = "We need this so that you can save photos and videos to your photo library.";
"NSPhotoLibraryUsageDescription" = "We need this so that you can share photos and videos from your photo library and save the ones you capture.";
"NSPhotoLibraryAddUsageDescription" = "We need this so that you can save photos and videos to your photo library and save the ones you capture.";
"NSMicrophoneUsageDescription" = "We need this so that you can record and share voice messages and videos with sound.";
"NSSiriUsageDescription" = "You can use Siri to send messages.";
"NSFaceIDUsageDescription" = "You can use Face ID to unlock the app.";
@@ -4856,12 +4856,9 @@ Sorry for the inconvenience.";
"Conversation.SendMessage.SetReminder" = "Set a Reminder";
"Conversation.SelectedMessages_1" = "%@ Selected";
"Conversation.SelectedMessages_2" = "%@ Selected";
"Conversation.SelectedMessages_3_10" = "%@ Selected";
"Conversation.SelectedMessages_any" = "%@ Selected";
"Conversation.SelectedMessages_many" = "%@ Selected";
"Conversation.SelectedMessages_0" = "%@ Selected";
"Conversation.SelectedMessagesFormat_1" = "{} Selected";
"Conversation.SelectedMessagesFormat_any" = "{} Selected";
"AccentColor.Title" = "Accent Color";
@@ -15459,6 +15456,8 @@ Error: %8$@";
"Notification.StarsGiftOffer.Expired" = "%1$@ didn't respond to your offer for %2$@ within %3$@ your %4$@ have been refunded";
"Notification.StarsGiftOffer.Expired.Stars_1" = "%@ Star";
"Notification.StarsGiftOffer.Expired.Stars_any" = "%@ Stars";
"Notification.StarsGiftOffer.Expired.Hours_1" = "%@ hours";
"Notification.StarsGiftOffer.Expired.Hours_any" = "%@ hours";
"Notification.StarsGiftOffer.ExpiredYou" = "The offer from %1$@ to buy your %2$@ for %3$@ has expired";
"Notification.StarsGiftOffer.ExpiredYou.Stars_1" = "%@ Star";
"Notification.StarsGiftOffer.ExpiredYou.Stars_any" = "%@ Stars";
@@ -15623,3 +15622,50 @@ Error: %8$@";
"Chat.GiftPurchaseOffer.AcceptConfirmation.BadValue" = "The value of this gift is **%@** higher than the offer.";
"Chat.GiftPurchaseOffer.AcceptConfirmation.Confirm" = "Confirm Sale";
"Notification.PremiumGift.DaysTitle_1" = "%@ Day Premium";
"Notification.PremiumGift.DaysTitle_any" = "%@ Days Premium";
"MediaEditor.Audio.Title" = "Audio";
"MediaEditor.Audio.SavedMusic" = "SAVED MUSIC";
"MediaEditor.Audio.ShowMore" = "Show More";
"WebApp.AddToAttachmentTitle" = "Add to Attachment Menu";
"Gift.Upgrade.Wearable.Title" = "Wearable";
"Gift.Upgrade.Wearable.Text" = "Display gifts on your page and set them as profile covers or statuses.";
"Gift.Upgrade.ViewAllVariants" = "View all variants";
"CocoonInfo.Title" = "COCOON";
"CocoonInfo.Description" = "**Cocoon** (**Co**nfidential **Co**mpute **O**pen **N**etwork) handles AI tasks **safely** and **efficiently**.";
"CocoonInfo.Private.Title" = "Private";
"CocoonInfo.Private.Text" = "No third party can access any data, such as translations, inside Cocoon.";
"CocoonInfo.Efficient.Title" = "Efficient";
"CocoonInfo.Efficient.Text" = "Cocoon has allowed Telegram to reduce translation costs by 6x.";
"CocoonInfo.ForEveryone.Title" = "For Everyone";
"CocoonInfo.ForEveryone.Text" = "Any developer can use Cocoon for AI features. Learn more at [@cocoon](telegram) or [cocoon.org](web).";
"CocoonInfo.IntergrateInfo" = "Want to integrate Cocoon into your projects?\nReach out at [t.me/cocoon?direct]()";
"CocoonInfo.Understood" = "Understood";
"Conversation.Translation.CocoonInfo" = "Translations are powered by\n**#Cocoon**. [How does it work?]()";
"Conversation.EmojiStake.Won" = "%1$@ won %2$@";
"Conversation.EmojiStake.WonYou" = "You won %@";
"Conversation.EmojiStake.Lost" = "%1$@ lost %2$@";
"Conversation.EmojiStake.LostYou" = "You lost %@";
"Conversation.Dice.Stake" = "Stake:";
"Conversation.Dice.Change" = "change";
"EmojiStake.Title" = "Emoji Stake";
"EmojiStake.Description" = "An experimental feature for Telegram Premium users.";
"EmojiStake.ResultsTitle" = "RESULTS AND RETURNS";
"EmojiStake.StreakInfo" = "A streak resets after 3 # or a stake change.";
"EmojiStake.StakeTitle" = "STAKE";
"EmojiStake.StakePlaceholder" = "Amount";
"EmojiStake.Roll" = "Save and Roll";
"Conversation.Summary.Title" = "AI Summary";
"Conversation.Summary.Text" = "Tap to see original text";
"Conversation.Summary.Limit.Title" = "AI Summary";
"Conversation.Summary.Limit.Text" = "Summarize large messages with AI unlimited with Telegram Premium.";
@@ -1,7 +1,11 @@
/* Localized versions of Info.plist keys */
"NSContactsUsageDescription" = "Актуальная информация о ваших контактах будет храниться зашифрованной в облаке Telegram, чтобы вы могли связаться с друзьями с любого устройства.";
"NSLocationWhenInUseUsageDescription" = "Когда вы отправляете друзьям геопозицию, Telegram нужно разрешение, чтобы показать им карту.";
/* GHOSTGRAM: App display name */
"CFBundleDisplayName" = "Ghostgram";
"CFBundleName" = "Ghostgram";
"NSContactsUsageDescription" = "Актуальная информация о ваших контактах будет храниться зашифрованной в облаке Ghostgram, чтобы вы могли связаться с друзьями с любого устройства.";
"NSLocationWhenInUseUsageDescription" = "Когда вы отправляете друзьям геопозицию, Ghostgram нужно разрешение, чтобы показать им карту.";
"NSLocationAlwaysAndWhenInUseUsageDescription" = "Фоновый доступ к геопозиции требуется, чтобы обновлять вашу геопозицию, когда вы транслируете её в чат с друзьями.";
"NSLocationAlwaysUsageDescription" = "Фоновый доступ к геопозиции требуется, чтобы обновлять вашу геопозицию, когда вы транслируете её в чат с друзьями. Он также необходим для отправки геопозиции с Apple Watch.";
"NSCameraUsageDescription" = "Это необходимо, чтобы вы могли делиться снятыми фотографиями и видео.";
@@ -10,3 +14,4 @@
"NSMicrophoneUsageDescription" = "Это необходимо, чтобы вы могли делиться голосовыми сообщениями и видео со звуком.";
"NSSiriUsageDescription" = "Вы можете использовать Siri для отправки сообщений.";
"NSFaceIDUsageDescription" = "Вы можете разблокировать приложение с помощью Face ID.";