diff --git a/Telegram/Resources/uwp/AppX/AppxManifest.xml b/Telegram/Resources/uwp/AppX/AppxManifest.xml index 1db769eab..4004b9adf 100644 --- a/Telegram/Resources/uwp/AppX/AppxManifest.xml +++ b/Telegram/Resources/uwp/AppX/AppxManifest.xml @@ -9,7 +9,7 @@ + Version="1.0.25.0" /> Telegram Desktop Telegram Messenger LLP diff --git a/Telegram/Resources/winrc/Telegram.rc b/Telegram/Resources/winrc/Telegram.rc index d7239c73c..8dc1e1321 100644 --- a/Telegram/Resources/winrc/Telegram.rc +++ b/Telegram/Resources/winrc/Telegram.rc @@ -34,8 +34,8 @@ IDI_ICON1 ICON "..\\art\\icon256.ico" // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,24,0 - PRODUCTVERSION 1,0,24,0 + FILEVERSION 1,0,25,0 + PRODUCTVERSION 1,0,25,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -52,10 +52,10 @@ BEGIN BEGIN VALUE "CompanyName", "Telegram Messenger LLP" VALUE "FileDescription", "Telegram Desktop" - VALUE "FileVersion", "1.0.24.0" + VALUE "FileVersion", "1.0.25.0" VALUE "LegalCopyright", "Copyright (C) 2014-2017" VALUE "ProductName", "Telegram Desktop" - VALUE "ProductVersion", "1.0.24.0" + VALUE "ProductVersion", "1.0.25.0" END END BLOCK "VarFileInfo" diff --git a/Telegram/Resources/winrc/Updater.rc b/Telegram/Resources/winrc/Updater.rc index 1e36381d8..a29d12904 100644 --- a/Telegram/Resources/winrc/Updater.rc +++ b/Telegram/Resources/winrc/Updater.rc @@ -25,8 +25,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,24,0 - PRODUCTVERSION 1,0,24,0 + FILEVERSION 1,0,25,0 + PRODUCTVERSION 1,0,25,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -43,10 +43,10 @@ BEGIN BEGIN VALUE "CompanyName", "Telegram Messenger LLP" VALUE "FileDescription", "Telegram Desktop Updater" - VALUE "FileVersion", "1.0.24.0" + VALUE "FileVersion", "1.0.25.0" VALUE "LegalCopyright", "Copyright (C) 2014-2017" VALUE "ProductName", "Telegram Desktop" - VALUE "ProductVersion", "1.0.24.0" + VALUE "ProductVersion", "1.0.25.0" END END BLOCK "VarFileInfo" diff --git a/Telegram/SourceFiles/boxes/change_phone_box.cpp b/Telegram/SourceFiles/boxes/change_phone_box.cpp index 725b348e8..b61e9f765 100644 --- a/Telegram/SourceFiles/boxes/change_phone_box.cpp +++ b/Telegram/SourceFiles/boxes/change_phone_box.cpp @@ -53,7 +53,8 @@ void createErrorLabel(QWidget *parent, object_ptrsetFocusFast(); diff --git a/Telegram/SourceFiles/boxes/change_phone_box.h b/Telegram/SourceFiles/boxes/change_phone_box.h index ca696d54e..3e54c9a49 100644 --- a/Telegram/SourceFiles/boxes/change_phone_box.h +++ b/Telegram/SourceFiles/boxes/change_phone_box.h @@ -24,7 +24,8 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org class ChangePhoneBox : public BoxContent { public: - using BoxContent::BoxContent; + ChangePhoneBox(QWidget*) { + } protected: void prepare() override; diff --git a/Telegram/SourceFiles/core/version.h b/Telegram/SourceFiles/core/version.h index 9347c5c14..7edea9247 100644 --- a/Telegram/SourceFiles/core/version.h +++ b/Telegram/SourceFiles/core/version.h @@ -24,7 +24,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org #define BETA_VERSION_MACRO (0ULL) -constexpr int AppVersion = 1000024; -constexpr str_const AppVersionStr = "1.0.24"; +constexpr int AppVersion = 1000025; +constexpr str_const AppVersionStr = "1.0.25"; constexpr bool AppAlphaVersion = true; constexpr uint64 AppBetaVersion = BETA_VERSION_MACRO; diff --git a/Telegram/SourceFiles/messenger.cpp b/Telegram/SourceFiles/messenger.cpp index d9ecd025a..224acfb24 100644 --- a/Telegram/SourceFiles/messenger.cpp +++ b/Telegram/SourceFiles/messenger.cpp @@ -637,8 +637,8 @@ void Messenger::checkMapVersion() { if (Local::oldMapVersion() < AppVersion) { if (Local::oldMapVersion()) { QString versionFeatures; - if ((cAlphaVersion() || cBetaVersion()) && Local::oldMapVersion() < 1000024) { - versionFeatures = QString::fromUtf8("\xE2\x80\x94 Added Last Seen and Group Invite privacy settings."); + if ((cAlphaVersion() || cBetaVersion()) && Local::oldMapVersion() < 1000025) { + versionFeatures = QString::fromUtf8("\xE2\x80\x94 Edit your account phone number in Settings."); } else if (!(cAlphaVersion() || cBetaVersion()) && Local::oldMapVersion() < 1000012) { versionFeatures = langNewVersionText(); } else { diff --git a/Telegram/build/build.bat b/Telegram/build/build.bat index 168d8cf4f..0e1cd4383 100644 --- a/Telegram/build/build.bat +++ b/Telegram/build/build.bat @@ -271,11 +271,6 @@ if %BuildUWP% equ 0 ( ) else ( xcopy "%DeployPath%\%BetaKeyFile%" "%FinalDeployPath%\" /Y ) - xcopy "%DeployPath%\%BinaryName%.pdb" "%FinalDeployPath%\" - xcopy "%DeployPath%\%BinaryName%.exe.pdb" "%FinalDeployPath%\" - xcopy "%DeployPath%\Updater.exe" "%FinalDeployPath%\" - xcopy "%DeployPath%\Updater.pdb" "%FinalDeployPath%\" - xcopy "%DeployPath%\Updater.exe.pdb" "%FinalDeployPath%\" ) echo Version %AppVersionStrFull% is ready! diff --git a/Telegram/build/build.sh b/Telegram/build/build.sh index 64ce24695..7ef60757d 100755 --- a/Telegram/build/build.sh +++ b/Telegram/build/build.sh @@ -80,8 +80,6 @@ elif [ "$BuildTarget" == "macstore" ]; then echo "Building version $AppVersionStrFull for Mac App Store.." ReleasePath="$HomePath/../out/Release" BinaryName="Telegram Desktop" - DropboxPath="/Volumes/Storage/Dropbox/Telegram/deploy/$AppVersionStrMajor" - DropboxDeployPath="$DropboxPath/$AppVersionStrFull" else Error "Invalid target!" fi @@ -344,7 +342,6 @@ if [ "$BuildTarget" == "mac" ] || [ "$BuildTarget" == "mac32" ] || [ "$BuildTarg cp -v "$DeployPath/$UpdateFile" "$DeployToPath/" cp -v "$DeployPath/$SetupFile" "$DeployToPath/" - cp -rv "$DeployPath/$BinaryName.app.dSYM" "$DeployToPath/" if [ "$BetaVersion" != "0" ]; then cp -v "$DeployPath/$BetaKeyFile" "$DeployToPath/" fi @@ -358,10 +355,6 @@ if [ "$BuildTarget" == "mac" ] || [ "$BuildTarget" == "mac32" ] || [ "$BuildTarg rm "$ReleasePath/$BinaryName.app/Contents/MacOS/$BinaryName" rm "$ReleasePath/$BinaryName.app/Contents/Info.plist" rm -rf "$ReleasePath/$BinaryName.app/Contents/_CodeSignature" - - mkdir -p "$DropboxDeployPath" - cp -rv "$DeployPath/$BinaryName.app" "$DropboxDeployPath/" - cp -rv "$DeployPath/$BinaryName.app.dSYM" "$DropboxDeployPath/" fi fi diff --git a/Telegram/build/deploy.sh b/Telegram/build/deploy.sh index aba6a98bd..4aac2d49e 100755 --- a/Telegram/build/deploy.sh +++ b/Telegram/build/deploy.sh @@ -94,10 +94,6 @@ elif [ "$BuildTarget" == "mac" ]; then WinSetupFile="tsetup.$AppVersionStrFull.exe" WinPortableFile="tportable.$AppVersionStrFull.zip" WinRemoteFolder="tsetup" - DropboxPath="/Volumes/Storage/Dropbox/Telegram/deploy/$AppVersionStrMajor" - DropboxDeployPath="$DropboxPath/$AppVersionStrFull" - DropboxSetupFile="$SetupFile" - DropboxMac32SetupFile="$Mac32SetupFile" BackupPath="/Volumes/Storage/backup/$AppVersionStrMajor/$AppVersionStrFull" elif [ "$BuildTarget" == "mac32" ] || [ "$BuildTarget" = "macstore" ]; then Error "No need to deploy this target." @@ -128,10 +124,8 @@ if [ "$BetaVersion" != "0" ]; then SetupFile="tbeta${BetaVersion}_${BetaSignature}.tar.xz" elif [ "$BuildTarget" == "mac" ]; then SetupFile="tbeta${BetaVersion}_${BetaSignature}.zip" - DropboxSetupFile="tbeta${BetaVersion}_${BetaSignature}_mac.zip" Mac32UpdateFile="${Mac32UpdateFile}_${BetaSignature}" Mac32SetupFile="tbeta${BetaVersion}_${BetaSignature}.zip" - DropboxMac32SetupFile="tbeta${BetaVersion}_${BetaSignature}_mac32.zip" WinUpdateFile="${WinUpdateFile}_${BetaSignature}" WinPortableFile="tbeta${BetaVersion}_${BetaSignature}.zip" fi @@ -180,8 +174,6 @@ fi Error "$WinPortableFile not found!" fi fi - - mkdir -p "$DropboxDeployPath" fi #fi @@ -208,36 +200,18 @@ if [ "$BuildTarget" == "linux" ] || [ "$BuildTarget" == "linux32" ] || [ "$Build fi if [ "$DeployMac" == "1" ]; then - if [ -d "$DropboxDeployPath/Telegram.app.dSYM" ]; then - rm -rf "$DropboxDeployPath/Telegram.app.dSYM" - fi - cp -rv "$DeployPath/Telegram.app.dSYM" "$DropboxDeployPath/" if [ "$BetaVersion" == "0" ]; then mkdir -p "$BackupPath/tmac" mv -v "$DeployPath/$SetupFile" "$BackupPath/tmac/" fi fi if [ "$DeployMac32" == "1" ]; then - if [ -d "$DropboxDeployPath/Telegram32.app.dSYM" ]; then - rm -rf "$DropboxDeployPath/Telegram32.app.dSYM" - fi - mv -v "$Mac32DeployPath/Telegram.app.dSYM" "$DropboxDeployPath/Telegram32.app.dSYM" if [ "$BetaVersion" == "0" ]; then mkdir -p "$BackupPath/tmac32" mv -v "$Mac32DeployPath/$Mac32SetupFile" "$BackupPath/tmac32/" fi fi if [ "$DeployWin" == "1" ]; then - if [ -f "$WinDeployPath/Telegram.pdb" ]; then - mv -v "$WinDeployPath/Telegram.pdb" "$DropboxDeployPath/" - elif [ ! -f "$DropboxDeployPath/Telegram.pdb" ]; then - echo "Warning: Telegram.pdb not found." - fi - if [ -f "$WinDeployPath/Updater.pdb" ]; then - mv -v "$WinDeployPath/Updater.pdb" "$DropboxDeployPath/" - elif [ ! -f "$DropboxDeployPath/Updater.pdb" ]; then - echo "Warning: Updater.pdb not found." - fi if [ "$BetaVersion" == "0" ]; then mkdir -p "$BackupPath/tsetup" mv -v "$WinDeployPath/$WinSetupFile" "$BackupPath/tsetup/" diff --git a/Telegram/build/release.py b/Telegram/build/release.py new file mode 100644 index 000000000..eaa37ab99 --- /dev/null +++ b/Telegram/build/release.py @@ -0,0 +1,256 @@ +import os, sys, requests, pprint, re, json +from uritemplate import URITemplate, expand +from subprocess import call + +changelog_file = '../../changelog.txt' +token_file = '../../../TelegramPrivate/github-releases-token.txt' + +version = '' +commit = '' +for arg in sys.argv: + if re.match(r'\d+\.\d+', arg): + version = arg + elif re.match(r'^[a-f0-9]{40}$', arg): + commit = arg + +# thanks http://stackoverflow.com/questions/13909900/progress-of-python-requests-post +class upload_in_chunks(object): + def __init__(self, filename, chunksize=1 << 13): + self.filename = filename + self.chunksize = chunksize + self.totalsize = os.path.getsize(filename) + self.readsofar = 0 + + def __iter__(self): + with open(self.filename, 'rb') as file: + while True: + data = file.read(self.chunksize) + if not data: + sys.stderr.write("\n") + break + self.readsofar += len(data) + percent = self.readsofar * 1e2 / self.totalsize + sys.stderr.write("\r{percent:3.0f}%".format(percent=percent)) + yield data + + def __len__(self): + return self.totalsize + +class IterableToFileAdapter(object): + def __init__(self, iterable): + self.iterator = iter(iterable) + self.length = len(iterable) + + def read(self, size=-1): # TBD: add buffer for `len(data) > size` case + return next(self.iterator, b'') + + def __len__(self): + return self.length + +def checkResponseCode(result, right_code): + if (result.status_code != right_code): + print('Wrong result code: ' + str(result.status_code) + ', should be ' + str(right_code)) + sys.exit(1) + +pp = pprint.PrettyPrinter(indent=2) +url = 'https://api.github.com/' + +version_parts = version.split('.') + +stable = 1 +alpha = 0 +dev = 0 + +if len(version_parts) < 2: + print('Error: expected at least major version ' + version) + sys.exit(1) +if len(version_parts) > 4: + print('Error: bad version passed ' + version) + sys.exit(1) +version_major = version_parts[0] + '.' + version_parts[1] +if len(version_parts) == 2: + version = version_major + '.0' + version_full = version +else: + version = version_major + '.' + version_parts[2] + version_full = version + if len(version_parts) == 4: + if version_parts[3] == 'dev': + dev = 1 + stable = 0 + version_full = version + '.dev' + elif version_parts[3] == 'alpha': + alpha = 1 + stable = 0 + version_full = version + '.alpha' + else: + print('Error: unexpected version part ' + version_parts[3]) + sys.exit(1) + +access_token = '' +if os.path.isfile(token_file): + with open(token_file) as f: + for line in f: + access_token = line.replace('\n', '') + +if access_token == '': + print('Access token not found!') + sys.exit(1) + +print('Version: ' + version_full); +local_folder = '/Volumes/Storage/backup/' + version_major + '/' + version_full + +if stable == 1: + if os.path.isdir(local_folder + '.dev'): + dev = 1 + stable = 0 + version_full = version + '.dev' + local_folder = local_folder + '.dev' + elif os.path.isdir(local_folder + '.alpha'): + alpha = 1 + stable = 0 + version_full = version + '.alpha' + local_folder = local_folder + '.alpha' + +if not os.path.isdir(local_folder): + print('Storage path not found!') + sys.exit(1) + +local_folder = local_folder + '/' + +files = [] +files.append({ + 'local': 'tsetup.' + version_full + '.exe', + 'remote': 'tsetup.' + version_full + '.exe', + 'backup_folder': 'tsetup', + 'mime': 'application/octet-stream', + 'label': 'Windows: Installer', +}) +files.append({ + 'local': 'tportable.' + version_full + '.zip', + 'remote': 'tportable.' + version_full + '.zip', + 'backup_folder': 'tsetup', + 'mime': 'application/zip', + 'label': 'Windows: Portable', +}) +files.append({ + 'local': 'tsetup.' + version_full + '.dmg', + 'remote': 'tsetup.' + version_full + '.dmg', + 'backup_folder': 'tmac', + 'mime': 'application/octet-stream', + 'label': 'macOS and OS X 10.8+: Installer', +}) +files.append({ + 'local': 'tsetup32.' + version_full + '.dmg', + 'remote': 'tsetup32.' + version_full + '.dmg', + 'backup_folder': 'tmac32', + 'mime': 'application/octet-stream', + 'label': 'OS X 10.6 and 10.7: Installer', +}) +files.append({ + 'local': 'tsetup.' + version_full + '.tar.xz', + 'remote': 'tsetup.' + version_full + '.tar.xz', + 'backup_folder': 'tlinux', + 'mime': 'application/octet-stream', + 'label': 'Linux 64 bit: Binary', +}) +files.append({ + 'local': 'tsetup32.' + version_full + '.tar.xz', + 'remote': 'tsetup32.' + version_full + '.tar.xz', + 'backup_folder': 'tlinux32', + 'mime': 'application/octet-stream', + 'label': 'Linux 32 bit: Binary', +}) + +r = requests.get(url + 'repos/telegramdesktop/tdesktop/releases/tags/v' + version) +if r.status_code == 404: + print('Release not found, creating.') + if commit == '': + print('Error: specify the commit.') + sys.exit(1) + if not os.path.isfile(changelog_file): + print('Error: Changelog file not found.') + sys.exit(1) + changelog = '' + started = 0 + with open(changelog_file) as f: + for line in f: + if started == 1: + if re.match(r'^\d+\.\d+', line): + break; + if re.match(r'^\s+$', line): + continue + changelog += line + else: + if re.match(r'^\d+\.\d+', line): + if line[0:len(version) + 1] == version + ' ': + started = 1 + elif line[0:len(version_major) + 1] == version_major + ' ': + if version_major + '.0' == version: + started = 1 + if started != 1: + print('Error: Changelog not found.') + sys.exit(1) + + changelog = changelog.strip() + print('Changelog: '); + print(changelog); + + r = requests.post(url + 'repos/telegramdesktop/tdesktop/releases', headers={'Authorization': 'token ' + access_token}, data=json.dumps({ + 'tag_name': 'v' + version, + 'target_commitish': commit, + 'name': 'v ' + version, + 'body': changelog, + 'prerelease': (dev == 1 or alpha == 1), + })) + checkResponseCode(r, 201) + +r = requests.get(url + 'repos/telegramdesktop/tdesktop/releases/tags/v' + version) +checkResponseCode(r, 200); + +release_data = r.json() +#pp.pprint(release_data) + +release_id = release_data['id'] +print('Release ID: ' + str(release_id)) + +r = requests.get(url + 'repos/telegramdesktop/tdesktop/releases/' + str(release_id) + '/assets'); +checkResponseCode(r, 200); + +assets = release_data['assets'] +for asset in assets: + name = asset['name'] + found = 0 + for file in files: + if file['remote'] == name: + print('Already uploaded: ' + name) + file['already'] = 1 + found = 1 + break + if found == 0: + print('Warning: strange asset: ' + name) + +for file in files: + if 'already' in file: + continue + file_path = local_folder + file['backup_folder'] + '/' + file['local'] + if not os.path.isfile(file_path): + print('Warning: file not found ' + file['local']) + continue + + upload_url = expand(release_data['upload_url'], {'name': file['remote'], 'label': file['label']}) + '&access_token=' + access_token; + + content = upload_in_chunks(file_path, 10) + + print('Uploading: ' + file['remote'] + ' (' + str(round(len(content) / 10000) / 100.) + ' MB)') + r = requests.post(upload_url, headers={"Content-Type": file['mime']}, data=IterableToFileAdapter(content)) + + checkResponseCode(r, 201) + + print('Success! Removing.') + return_code = call(["rm", file_path]) + if return_code != 0: + print('Bad rm code: ' + str(return_code)) + sys.exit(1) + +sys.exit() diff --git a/Telegram/build/release.sh b/Telegram/build/release.sh new file mode 100755 index 000000000..abbacfb90 --- /dev/null +++ b/Telegram/build/release.sh @@ -0,0 +1,44 @@ +set -e +FullExecPath=$PWD +pushd `dirname $0` > /dev/null +FullScriptPath=`pwd` +popd > /dev/null + +Param1="$1" +Param2="$2" +Param3="$3" +Param4="$4" + +if [ ! -d "$FullScriptPath/../../../TelegramPrivate" ]; then + echo "" + echo "This script is for building the production version of Telegram Desktop." + echo "" + echo "For building custom versions please visit the build instructions page at:" + echo "https://github.com/telegramdesktop/tdesktop/#build-instructions" + exit +fi + +Error () { + cd $FullExecPath + echo "$1" + exit 1 +} + +while IFS='' read -r line || [[ -n "$line" ]]; do + set $line + eval $1="$2" +done < "$FullScriptPath/version" + +VersionForPacker="$AppVersion" +if [ "$BetaVersion" != "0" ]; then + Error "No releases for closed beta versions" +elif [ "$AlphaChannel" == "0" ]; then + AppVersionStrFull="$AppVersionStr" + AlphaBetaParam='' +else + AppVersionStrFull="$AppVersionStr.alpha" + AlphaBetaParam='-alpha' +fi + +cd "$FullScriptPath" +python release.py $AppVersionStr $Param1 $Param2 $Param3 $Param4 diff --git a/Telegram/build/version b/Telegram/build/version index e7f729f33..0f96e2aa6 100644 --- a/Telegram/build/version +++ b/Telegram/build/version @@ -1,6 +1,6 @@ -AppVersion 1000024 +AppVersion 1000025 AppVersionStrMajor 1.0 -AppVersionStrSmall 1.0.24 -AppVersionStr 1.0.24 +AppVersionStrSmall 1.0.25 +AppVersionStr 1.0.25 AlphaChannel 1 BetaVersion 0 diff --git a/changelog.txt b/changelog.txt index 18d16e7fe..2bd5dd5d9 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,7 @@ +1.0.25 alpha (21.03.17) + +- Edit your account phone number in Settings. + 1.0.24 alpha (19.03.17) - Added Last Seen and Group Invite privacy settings.