From a564bbdf805a92444e9c1d0d0e15a3b4a24838f2 Mon Sep 17 00:00:00 2001 From: thermatk Date: Mon, 11 Dec 2017 20:36:13 +0300 Subject: [PATCH] [TF] Readme + Changelog + Version bump --- Changelog.md | 265 ++++++++++++++++++ DigitalResistance.jpg | Bin 0 -> 37038 bytes README.md | 105 +++++-- TMessagesProj/build.gradle | 4 +- .../org/telegram/messenger/BuildVars.java | 2 +- 5 files changed, 356 insertions(+), 20 deletions(-) create mode 100644 Changelog.md create mode 100644 DigitalResistance.jpg diff --git a/Changelog.md b/Changelog.md new file mode 100644 index 0000000000..2d716fe94e --- /dev/null +++ b/Changelog.md @@ -0,0 +1,265 @@ +### v4.6c +- **Telegram FOSS:** + - WIP + +### v4.6b +- **Telegram FOSS:** + - Allow to set a proxy before login #230 + - Use MS DF 2 PWN RKN. Getting connected to Telegram behind a country-wide block may require you to stare on your login screen for some seconds. + - Update FFmpeg to 3.4.2 + - Update OpenSSL to 1.0.2o + - Update SQLite to 3.23.1 + +#### v4.8.5 (not released as FOSS version) +- Discover new stickers. Type one emoji to see suggestions from popular sticker sets. Suggestions from the sticker sets you've added will come first. +- Search for Stickers. Scroll up in the sticker panel and use the new search field to quickly locate your sticker sets or discover new ones. +- Multi-shot sending. Take and send multiple photos and videos one after another. + +#### v4.8.2 (not released as FOSS version) +- Fixed sunrise and sunset time issues for Auto-Night Mode. +- Fixed badge counter for Nova Launcher. +- Fixed round videos recording on some devices. + +#### v4.8 (not released as FOSS version) +- Streaming for videos. Start watching any newly uploaded video instantly without having to fully download it first. +- Auto-Night Mode. Automatically switch to the dark version of the interface after nightfall or in low-light conditions. +- Telegram Login widget. Log in to other websites and services using your Telegram account. + +#### v4.7 (not released as FOSS version) +- Quickly switch between different Telegram accounts if you use multiple phone numbers. +- Swipe left on any message to reply to it. + +### v4.6a +- **Telegram FOSS:** + - version bump to rebuild with NDK r14b + - fixes unsupported content for url sharing #200 + +### v4.6 +- New granular settings for auto-downloading media. +- Link previews for Instagram posts and tweets with multiple photos will now show all the media as an album. +- Embeddable HTML-widget for messages in public channels and groups (available when viewing t.me links to messages in web-browsers). +- Added support for albums to Secret Chats. +- Added full support for MTProto 2.0. +- **Telegram FOSS:** + - emojiOne replaced with Twemoji + +### v4.2.1b +- **Telegram FOSS:** + - update OpenSSL to 1.0.2n + - fix videos without sound + - fix image sharing bug (sorry for that one!) + +### v4.2.1a +- **Telegram FOSS:** + - **SECURITY:** update OpenSSL to 1.0.2m + - **SECURITY:** update FFmpeg to 3.4 + - **SECURITY:** update SQLite and libWebP to latest versions. + - Build native code for armv6 devices + - Dropped the unused Google Breakpad library + - Can and should now be built with NDK r15c + - Added location sharing through "geo:" intents + +#### v4.5 (not released as FOSS version) +- Grouped Photos. Group media into albums when sharing multiple photos and videos. Choose the exact order of media you send. +- Saved Messages. Bookmark messages by forwarding them to “Saved Messages”. +- Better Search. Find bots and public channels faster by typing their titles in Search. Popular bots and channels are shown first. +- Pinned Messages. Pin messages in your channels to make important announcements more visible. + +#### v4.4 (not released as FOSS version) +- Share your location with friends in real time with the new Live Locations. +- Control whether new members in supergroups can see earlier message history. +- Easily recognize messages from group admins by the new ‘admin’ badge. +- Listen to audio files with more comfort using the redesigned player. +- Added French, Malay, Indonesian, Russian, and Ukrainian languages. +- Suggest alternative translations using our new localization platform – translations.telegram.org + +#### v4.3 (not released as FOSS version) +- Groups with unread mentions and replies are now marked with an '@' badge in the chats list. +- Navigate new mentions and replies in a group using the new '@' button. +- Mark stickers as Favorite to quickly access them from the redesigned sticker panel. +- Invite friends to Telegram using the new streamlined interface. +- Add an official sticker set for your group to be used by all members without adding (100+ member groups only). +- Numerous design and UI improvements. + +#### v4.2.2 (not released as FOSS version) +- Add emoji to a message by typing ‘:’ + keyword. :relieved : :satisfied : :smirk : +- Search through messages of a particular user in any group. To do this, tap '...' in the top right corner when in a group > Search > tap the new 'Search by member' icon in the bottom right corner. +- While searching, select a user to browse all of her messages in the group or add a keyword to narrow down search results. + +### v4.2.1 +- Send self-destructing photos and videos to any one-on-one chats (use the clock icon in the media picker to set a timer). +- Edit photos even quicker with the improved photo editor. +- Add a bio to your profile (in Settings) so that people in large group chats know who you are. +- Download media from large public channels faster thanks to the new encrypted CDNs. +- When choosing a sticker, tap the "up" button in the sticker panel to expand it to full screen. + +### v4.1.1 +- Improved voice calls, bug fixes. +- **Telegram FOSS:** + - Revert Russian and Czech translations(closer to upstream, xmls are always outdated) + - Payments code restored, cleaned from binaries and might be working(not tested, please report) + +#### v4.1.0 (not released as FOSS version) +- Up to 10.000 members in each supergroup. +- Granular rights for supergroup admins. +- Granular restrictions and temporary bans for members. +- Event log: all service actions taken by members and admins in the last 48 hours – with search and filters. +- Admins can now search for specific users among group and channel members. + +#### v4.0 (not released as FOSS version) +- Video messages. Tap the mic icon to switch to camera mode, then tap and hold to record stylish video messages. Swipe up while recording for hands free mode (works with voice notes). +- Meet Telesco.pe, where anyone can view video messages from public channels — no Telegram account required. +- Bots can now accept payments from users. +- The Instant View Platform is now public and will soon support thousands of websites, including your favorite ones. + +#### v3.18.1 (not released as FOSS version) +- Voice calls are now available in Europe, Africa, North and South Americas. + +### v3.18.0c +- **Telegram FOSS:** + - Telegram-FOSS won't suggest to update from Google Play + - The location pin is now accurate (#155) + +### v3.18.0b +- **Telegram FOSS:** + - Add OpenStreetMap attribution (#151) + - Include Russian and Czech translation xmls + +### v3.18.0a +- **Telegram FOSS:** + - Fix location sharing on SDK < 23 + +### v3.18.0 +- Telegram Calls are here: secure, crystal-clear, constantly improved by artificial intelligence. We are rolling them out in Europe today, the rest of the world will get calls within a few days. +- Choose between 5 grades of video compression and preview the quality of your video before you send it. +- **Telegram FOSS:** + - Update to openssl 1.0.2k + - Restore SMS receiving functionality: reviewed, harmless + - Restore Giphy search + - Add [osmdroid](https://github.com/osmdroid/osmdroid) for location messages support + +#### v3.17.0 (not released as FOSS version) +- Use custom themes to change the appearance of the app. +- Check out the new dark theme in Settings > Themes. See the @themes channel for more ideas. +- Create your own themes using the new built-in editor. + +#### v3.16.0 (not released as FOSS version) +- Delete recently sent messages for everyone. +- Network Usage in 'Data and Storage' Settings. +- App remembers scroll position when switching to another chat and back. +- Messages from one sender are grouped together. +- Added a floating date to the top of the screen when scrolling. +- Recently downloaded files are shown when sharing a file. +- Report spam from Secret chats. +- Send GIFs directly from Gboard. +- Android 7.1: Added fast action menu to home screen. + +#### v3.15.0 (not released as FOSS version) +- Pin important chats to the top of the list so that you never miss a new message. +- Link your Telegram account with hundreds of services like Twitter, Instagram, Spotify, Gmail, and others. Control apps via Telegram, or get messages when something happens. Talk to @IFTTT to set up. +- Rotate photos by any number of degrees in the photo editor. +- View YouTube and Vimeo in Picture-in-Picture mode. + +#### v3.14.0 (not released as FOSS version) +- Instant View for Medium articles and some other sites. No more waiting for the pages to load! +- ‘Groups in common’ in user profiles. +- ‘Jump to date’ in message search. +- 'View Pack' for recent stickers. +- Setting a passcode now hides your chats from the task-switcher. +- Improved camera speed, video compression. +- Improved interfaces. +- Also introducing telegra.ph, a new publishing platform. You can now use telegra.ph to publish articles – it’s clean, simple and efficient. + +#### v3.13.2 (not released as FOSS version) +- Major update to Telegram's Bot Platform: Bots can now offer you rich HTML5 experiences, like games. +- Check out @gamebot for examples of what's coming. +- You can use these bots in inline mode in any of your chats to share a game and compete with friends. +- All games are loaded as ordinary web pages, so this update won't add a single byte to the size of our apps. +- Added many small improvements to the sticker panel. + +### v3.13.1 +- Major update to Telegram's Bot Platform: Bots can now offer you rich HTML5 experiences, like games. +- Check out @gamebot for examples of what's coming. +- You can use these bots in inline mode in any of your chats to share a game and compete with friends. +- All games are loaded as ordinary web pages, so this update won't add a single byte to the size of our apps. +- Added many small improvements to the sticker panel. +- **Telegram FOSS:** + - Use emojiOne emoji set as a free replacement for Telegrams emoji. + +#### v3.12 (not released as FOSS version) +- Draw on your photos and apply stylish masks, stickers, and text. We're launching a platform for masks today; anyone can upload their own sets of masks, beards, glasses, and the like. +- Create your own GIFs using the new "mute" feature after you record a video. +- Access trending stickers directly from the stickers panel in any of your chats. +- Added support for Android 7.0. + +#### v3.11 (not released as FOSS version) +- Trending stickers. Install noteworthy sets from the new tab in Settings. +- Unused stickers archived automatically when you go over the 200 limit. +- Group previews. Preview groups via invite link – see who else is in the group before joining. +- Personal storage. Keep messages, media and any other stuff in the new storage chat with yourself. +- New improved camera interface (4.1+) +- Preview bot content before sending (4.1+) +- Download large media and files 2-4x times faster. + +### v3.10.1 +- DRAFTS AND MORE +- Introducing Drafts: Seamless syncing for unsent messages on all your devices. Drafts are now visible in your chats list. +- New internal video player (Android 4.1 and above). +- Unread messages counter on the 'Scroll to bottom' button. +- View earlier profile pictures in groups. +- More about this update: https://telegram.org/blog/drafts +- **Telegram FOSS:** + - Bots can ask for accessing your location now, we therefore include the corresponding Android permission. This is opt-in behaviour. + +#### v3.9.0 (not released as FOSS version) +- Edit your messages everywhere within 2 days after posting. +- Mention people in groups by typing @ and selecting them from the list — even if they don't have a username. +- Get to your friends faster with the new People list in Search. +- Find inline bot shortcuts in the attachment menu. +- Add chat shortcuts to home screen. + +#### v3.8.1 (not released as FOSS version) +- Fully redesigned chat screens, optimized colors, beautiful progress bars, revamped attachments. +- Tap on any sticker to view its pack and add it to your collection. Preview and send stickers from the pack preview menu. +- Introducing Bot API 2.0, the biggest update to our bot platform since June 2015. Try out these sample bots to see what's coming your way soon: @music, @sticker, @youtube, @foursquare + +### v3.7.0 +- PUBLIC GROUPS, PINNED POSTS, 5,000 MEMBERS +- Groups can now have 5,000 members (up from 1,000) +- Groups of any size may be converted to supergroups +- New tools for supergroup admins: +- Make your group public by setting up a public link – anyone will be able to view the chat and join it +- Pin messages to keep important updates visible and notify all members +- Select messages to delete, report as spam, block users, or remove all messages from a user + +### v3.6.1a +- **Telegram FOSS:** + - Fix emoji not displaying in chat window + +### v3.6.1 +- Bug fixes + +### v3.6.0 +- Edit messages in channels and supergroups. +- Share links for posts in channels (in the Quick Share menu). +- Option to add admin signatures to messages in channels. +- Silent messages in channels that will not notify members. +- Quick Share button for bots (works for messages with links, photos or videos). +- Tap and hold to view stickers in full size without sending. Now works everywhere, including emoji suggestions and the 'Add stickers' screen. + +### v3.5.1 +- Raise to speak fixes + +### v3.5.0 +- New Voice Messages +- Waveform visualizations, brand new player. Experimental: raise to speak / raise to listen +- New Secret Chats +- Support for all the stuff you love in cloud chats: GIFs, replies, sticker set previews, and inline bots. Added improved key visualization and optional link previews +- New privacy settings +- Control who can add you to groups and channels with granular precision +- New photo editor. Added rotate, fade, tint and curves tools +- **Telegram FOSS Changes:** + - Don't set network alarm if there's no network connection. + - Upgrade to openssl-1.0.1s. + - Fix always clearing recent emojis. + - Fix Location Parsing. Now works on non-english languages. diff --git a/DigitalResistance.jpg b/DigitalResistance.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e99eee72c79deec7dbdf7e72e6bf3449da363834 GIT binary patch literal 37038 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 15fba02cfb..31d3f63db0 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,103 @@ -## Telegram messenger for Android +[![Releases](https://img.shields.io/github/release/Telegram-FOSS-Team/Telegram-FOSS.svg)](https://github.com/Telegram-FOSS-Team/Telegram-FOSS/releases/latest) +[![Discussions](https://img.shields.io/badge/Offtopics-Telegram-blue.svg)](https://t.me/joinchat/AAAAAEFaw9LIC-VgKVCevg) + +[![Donate](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/Telegram-FOSS/) + +# Telegram-FOSS [Telegram](https://telegram.org) is a messaging app with a focus on speed and security. It’s superfast, simple and free. -This repo contains the official source code for [Telegram App for Android](https://play.google.com/store/apps/details?id=org.telegram.messenger). -##Creating your Telegram Application +This is an unofficial, FOSS-friendly fork of the original [Telegram App for Android](https://github.com/DrKLO/Telegram). + +This version of Telegram is available on FDroid: + +[Get it on F-Droid](https://f-droid.org/app/org.telegram.messenger) + +## Current Maintainers + +- [thermatk](https://github.com/thermatk) +- [Bubu](https://github.com/Bubu) +- you? :) + +## Discussion + +Join the [Telegram-FOSS Offtopics group](https://t.me/joinchat/AAAAAEFaw9LIC-VgKVCevg) + +You can also join `#telegram-foss:matrix.org` via [matrix](https://matrix.to/#/#telegram-foss:matrix.org) or `#telegram-foss` on freenode. + +## Changes: + +*Replacement of non-FOSS, untrustworthy or suspicious binaries or source code:* +- Do location sharing with OpenStreetMap(osmdroid) instead of Google Maps +- Use Twemoji emoji set instead of Apple's emoji +- Google Play Services GCM replaced with always-on Telegram's push service +- **SECURITY:** Old BoringSSL prebuilts are replaced with the newest upstream OpenSSL source code built at compile time +- **SECURITY:** Old FFmpeg prebuilts are replaced with the newest upstream source code built at compile time +- **SECURITY:** Bundled SQLite is updated +- **SECURITY:** Bundled libWebP is updated -We welcome all developers to use our API and source code to create applications on our platform. -There are several things we require from **all developers** for the moment. +*Removal of non-FOSS, untrustworthy or suspicious binaries or source code and their functionality:* +- Google Vision face detection +- Google Wallet and Android Pay integration +- Bing image search (would require an API key) +- Foursquare map search (would require an API key) +- HockeyApp crash reporting and self-updates -1. [**Obtain your own api_id**](https://core.telegram.org/api/obtaining_api_id) for your application. -2. Please **do not** use the name Telegram for your app — or make sure your users understand that it is unofficial. -3. Kindly **do not** use our standard logo (white paper plane in a blue circle) as your app's logo. -3. Please study our [**security guidelines**](https://core.telegram.org/mtproto/security_guidelines) and take good care of your users' data and privacy. -4. Please remember to publish **your** code too in order to comply with the licences. +*Other:* +- Added the ability to parse locations from intents containing a `geo:,,` string. +- Builds with armv6 support +- Fix calls -### API, Protocol documentation +## Versioning + +This repository contains tags to make tracking versions easier. + +Versions are in form "v$UPSTREAM$RELEASE" where: + +* $UPSTREAM is the public, visible version of upstream. +* $RELEASE is a letter ([a-z]) indicating minor releases between official versions (sometimes, upstream is updated without relating the changes to an specific version). + +## API, Protocol documentation Telegram API manuals: https://core.telegram.org/api MTproto protocol manuals: https://core.telegram.org/mtproto -### Usage +## Building + +**Important:** +1. You need the [Android-NDK](https://developer.android.com/ndk/downloads/index.html) r14b to build the apk. + +2. Don't forget to include the submodules when you clone: + - `git clone --recursive https://github.com/Telegram-FOSS-Team/Telegram-FOSS.git` + +3. Build native FFmpeg dependency: + - Go to the `TMessagesProj/jni` folder and execute the following (define the path to your NDK r14b installation): + + ``` + export NDK=[PATH_TO_NDK] + ./build_ffmpeg_android.sh + ``` + +4. If you want to publish a modified version of Telegram: + - You should get **your own API key** here: https://core.telegram.org/api/obtaining_api_id and create a file called `API_KEYS` in the source root directory. + The contents should look like this: + ``` + APP_ID = 12345 + APP_HASH = aaaaaaaabbbbbbccccccfffffff001122 + ``` + - Do not use the name Telegram and the standard logo (white paper plane in a blue circle) for your app — or make sure your users understand that it is unofficial + - Take good care of your users' data and privacy + - **Please remember to publish your code too in order to comply with the licenses** + +5. Building under Windows may be problematic and won't be fixed -**Beware of using the dev branch and uploading it to any markets, in many cases it not will work as expected**. +The project can be built with Android Studio or from the command line with gradle: -First of all, take a look at **src/main/java/org/telegram/messenger/BuildVars.java** and fill it with correct values. -Import the root folder into your IDE (tested on Android Studio), then run project. +`./gradlew assembleFatRelease` -### Localization +# DIGITAL RESISTANCE -We moved all translations to https://translations.telegram.org/en/android/. Please use it. +![DIGITALRESISTANCE](/DigitalResistance.jpg?raw=true "DIGITALRESISTANCE") diff --git a/TMessagesProj/build.gradle b/TMessagesProj/build.gradle index f6c33bc2ad..e539d67a4a 100644 --- a/TMessagesProj/build.gradle +++ b/TMessagesProj/build.gradle @@ -74,7 +74,7 @@ android { } } - defaultConfig.versionCode = 1155 + defaultConfig.versionCode = 1157 sourceSets.debug { manifest.srcFile 'config/debug/AndroidManifest.xml' @@ -151,7 +151,7 @@ android { defaultConfig { minSdkVersion 16 targetSdkVersion 25 - versionName "4.6.0" + versionName "4.6.0b" //obtain your own keys at https://core.telegram.org/api/obtaining_api_id buildConfigField 'int', 'APP_ID', getAppId() diff --git a/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java b/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java index 4fd3864b45..48a05da3fa 100644 --- a/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java +++ b/TMessagesProj/src/main/java/org/telegram/messenger/BuildVars.java @@ -11,7 +11,7 @@ public class BuildVars { public static boolean DEBUG_VERSION = BuildConfig.DEBUG; public static boolean DEBUG_PRIVATE_VERSION = false; - public static int BUILD_VERSION = 1155; + public static int BUILD_VERSION = 1157; public static String BUILD_VERSION_STRING = "4.6"; public static int APP_ID = BuildConfig.APP_ID; //obtain your own APP_ID at https://core.telegram.org/api/obtaining_api_id public static String APP_HASH = BuildConfig.APP_HASH; //obtain your own APP_HASH at https://core.telegram.org/api/obtaining_api_id