[GODT-961] Update release notes link

* on release notes, check updates if link missing
* on update set release note link
* update version and links with every check
* clean old release notes
* change paths to IEapp notes
This commit is contained in:
Jakub
2021-01-18 11:52:17 +01:00
committed by Jakub Cuth
parent 6523b906af
commit a72f52a5ed
22 changed files with 127 additions and 105 deletions

View File

@ -268,13 +268,13 @@ updates: install-go-mod-outdated
doc: doc:
godoc -http=:6060 godoc -http=:6060
release-notes: release-notes/bridge.html release-notes/import-export.html release-notes: release-notes/bridge.html release-notes/ie.html
release-notes/bridge.html: release-notes/bridge.html:
./utils/release_notes.sh Bridge ./utils/release_notes.sh bridge
release-notes/import-export.html: release-notes/ie.html:
./utils/release_notes.sh Import-Export ./utils/release_notes.sh ie
.PHONY: gofiles .PHONY: gofiles
# Following files are for the whole app so it makes sense to have them in bridge package. # Following files are for the whole app so it makes sense to have them in bridge package.

View File

@ -147,6 +147,9 @@ func checkAndHandleUpdate(u types.Updater, f frontend.Frontend, autoUpdate bool)
return return
} }
// Update links in UI
f.SetVersion(version)
if !u.IsUpdateApplicable(version) { if !u.IsUpdateApplicable(version) {
logrus.Debug("No need to update") logrus.Debug("No need to update")
return return

View File

@ -95,6 +95,9 @@ func checkAndHandleUpdate(u types.Updater, f frontend.Frontend, autoUpdate bool)
return return
} }
// Update links in UI
f.SetVersion(version)
if !u.IsUpdateApplicable(version) { if !u.IsUpdateApplicable(version) {
logrus.Debug("No need to update") logrus.Debug("No need to update")
return return

View File

@ -230,8 +230,6 @@ func (f *frontendCLI) NotifyManualUpdate(update updater.VersionInfo, canInstall
// NOTE: Save the update somewhere so that it can be installed when user chooses "install now". // NOTE: Save the update somewhere so that it can be installed when user chooses "install now".
} }
func (f *frontendCLI) NotifySilentUpdateInstalled() { func (f *frontendCLI) SetVersion(version updater.VersionInfo) {}
} func (f *frontendCLI) NotifySilentUpdateInstalled() {}
func (f *frontendCLI) NotifySilentUpdateError(err error) {}
func (f *frontendCLI) NotifySilentUpdateError(err error) {
}

View File

@ -257,8 +257,6 @@ func (f *frontendCLI) NotifyManualUpdate(update updater.VersionInfo, canInstall
// NOTE: Save the update somewhere so that it can be installed when user chooses "install now". // NOTE: Save the update somewhere so that it can be installed when user chooses "install now".
} }
func (f *frontendCLI) NotifySilentUpdateInstalled() { func (f *frontendCLI) SetVersion(version updater.VersionInfo) {}
} func (f *frontendCLI) NotifySilentUpdateInstalled() {}
func (f *frontendCLI) NotifySilentUpdateError(err error) {}
func (f *frontendCLI) NotifySilentUpdateError(err error) {
}

View File

@ -42,6 +42,7 @@ var (
type Frontend interface { type Frontend interface {
Loop() error Loop() error
NotifyManualUpdate(update updater.VersionInfo, canInstall bool) NotifyManualUpdate(update updater.VersionInfo, canInstall bool)
SetVersion(update updater.VersionInfo)
NotifySilentUpdateInstalled() NotifySilentUpdateInstalled()
NotifySilentUpdateError(error) NotifySilentUpdateError(error)
} }

View File

@ -135,9 +135,7 @@ Item {
textColor : Style.main.textDisabled textColor : Style.main.textDisabled
fontSize : Style.main.fontSize fontSize : Style.main.fontSize
textUnderline : true textUnderline : true
onClicked : { onClicked : gui.openReleaseNotes()
Qt.openUrlExternally(go.updateReleaseNotesLink)
}
} }
} }
} }

View File

@ -303,6 +303,13 @@ Item {
winMain.bubbleNote.show() winMain.bubbleNote.show()
} }
function openReleaseNotes(){
if go.updateReleaseNotesLink == "" {
go.checkForUpdates()
}
Qt.openUrlExternally(go.updateReleaseNotesLink)
}
// On start // On start
Component.onCompleted : { Component.onCompleted : {
// set messages for translations // set messages for translations

View File

@ -405,6 +405,14 @@ Item {
} }
*/ */
function openReleaseNotes(){
if go.updateReleaseNotesLink == "" {
go.checkForUpdates()
}
Qt.openUrlExternally(go.updateReleaseNotesLink)
}
property string areYouSureYouWantToQuit : qsTr("There are incomplete processes - some items are not yet transferred. Do you really want to stop and quit?") property string areYouSureYouWantToQuit : qsTr("There are incomplete processes - some items are not yet transferred. Do you really want to stop and quit?")
// On start // On start
Component.onCompleted : { Component.onCompleted : {

View File

@ -127,9 +127,7 @@ Item {
font.underline: true font.underline: true
MouseArea { MouseArea {
anchors.fill: parent anchors.fill: parent
onClicked : { onClicked : gui.openReleaseNotes()
Qt.openUrlExternally(go.updateReleaseNotesLink)
}
cursorShape: Qt.PointingHandCursor cursorShape: Qt.PointingHandCursor
} }
} }

View File

@ -248,9 +248,7 @@ Rectangle {
target: linkText target: linkText
visible: true visible: true
text: "(" + qsTr("view release notes", "display the release notes from the new version") + ")" text: "(" + qsTr("view release notes", "display the release notes from the new version") + ")"
onClicked: { onClicked: gui.openReleaseNotes()
Qt.openUrlExternally(go.updateReleaseNotesLink)
}
} }
PropertyChanges { PropertyChanges {
target: actionText target: actionText

View File

@ -118,14 +118,18 @@ func (f *FrontendQt) Loop() (err error) {
} }
func (f *FrontendQt) NotifyManualUpdate(update updater.VersionInfo, canInstall bool) { func (f *FrontendQt) NotifyManualUpdate(update updater.VersionInfo, canInstall bool) {
f.Qml.SetUpdateVersion(update.Version.String()) f.SetVersion(update)
f.Qml.SetUpdateLandingPage(update.LandingPage)
f.Qml.SetUpdateReleaseNotesLink(update.ReleaseNotesPage)
f.Qml.SetUpdateCanInstall(canInstall) f.Qml.SetUpdateCanInstall(canInstall)
f.updateInfo = update
f.Qml.NotifyManualUpdate() f.Qml.NotifyManualUpdate()
} }
func (f *FrontendQt) SetVersion(version updater.VersionInfo) {
f.Qml.SetUpdateVersion(version.Version.String())
f.Qml.SetUpdateLandingPage(version.LandingPage)
f.Qml.SetUpdateReleaseNotesLink(version.ReleaseNotesPage)
f.updateInfo = version
}
func (f *FrontendQt) NotifySilentUpdateInstalled() { func (f *FrontendQt) NotifySilentUpdateInstalled() {
f.Qml.NotifySilentUpdateRestartNeeded() f.Qml.NotifySilentUpdateRestartNeeded()
} }
@ -428,6 +432,8 @@ func (f *FrontendQt) checkForUpdates() {
return return
} }
f.SetVersion(version)
if !f.updater.IsUpdateApplicable(version) { if !f.updater.IsUpdateApplicable(version) {
logrus.Debug("No need to update") logrus.Debug("No need to update")
return return

View File

@ -47,6 +47,9 @@ func (s *FrontendHeadless) NotifyManualUpdate(update updater.VersionInfo, canIns
// NOTE: Save the update somewhere so that it can be installed when user chooses "install now". // NOTE: Save the update somewhere so that it can be installed when user chooses "install now".
} }
func (s *FrontendHeadless) SetVersion(update updater.VersionInfo) {
}
func (s *FrontendHeadless) NotifySilentUpdateInstalled() { func (s *FrontendHeadless) NotifySilentUpdateInstalled() {
} }

View File

@ -163,14 +163,18 @@ func (s *FrontendQt) Loop() (err error) {
} }
func (s *FrontendQt) NotifyManualUpdate(update updater.VersionInfo, canInstall bool) { func (s *FrontendQt) NotifyManualUpdate(update updater.VersionInfo, canInstall bool) {
s.Qml.SetUpdateVersion(update.Version.String()) s.SetVersion(update)
s.Qml.SetUpdateLandingPage(update.LandingPage)
s.Qml.SetUpdateReleaseNotesLink(update.ReleaseNotesPage)
s.Qml.SetUpdateCanInstall(canInstall) s.Qml.SetUpdateCanInstall(canInstall)
s.updateInfo = update
s.Qml.NotifyManualUpdate() s.Qml.NotifyManualUpdate()
} }
func (s *FrontendQt) SetVersion(version updater.VersionInfo) {
s.Qml.SetUpdateVersion(version.Version.String())
s.Qml.SetUpdateLandingPage(version.LandingPage)
s.Qml.SetUpdateReleaseNotesLink(version.ReleaseNotesPage)
s.updateInfo = version
}
func (s *FrontendQt) NotifySilentUpdateInstalled() { func (s *FrontendQt) NotifySilentUpdateInstalled() {
s.Qml.NotifySilentUpdateRestartNeeded() s.Qml.NotifySilentUpdateRestartNeeded()
} }
@ -420,6 +424,8 @@ func (s *FrontendQt) checkForUpdates() {
return return
} }
s.SetVersion(version)
if !s.updater.IsUpdateApplicable(version) { if !s.updater.IsUpdateApplicable(version) {
logrus.Debug("No need to update") logrus.Debug("No need to update")
return return

View File

@ -48,6 +48,9 @@ func (s *FrontendHeadless) NotifyManualUpdate(update updater.VersionInfo, canIns
// NOTE: Save the update somewhere so that it can be installed when user chooses "install now". // NOTE: Save the update somewhere so that it can be installed when user chooses "install now".
} }
func (s *FrontendHeadless) SetVersion(update updater.VersionInfo) {
}
func (s *FrontendHeadless) NotifySilentUpdateInstalled() { func (s *FrontendHeadless) NotifySilentUpdateInstalled() {
} }

View File

@ -1,8 +0,0 @@
• Message corruption - rare cases of overly long headers
• AppleMail crashes (related to timestamps)
• Sending messages from aliases in combined inbox mode
• Fedora font issues
For more detailed summary of the changes see https://github.com/ProtonMail/proton-bridge/blob/master/Changelog.md

View File

@ -1 +0,0 @@
• Installation issues on linux

View File

@ -1,2 +0,0 @@
• Improvements to message parsing
• Better error handling

View File

@ -1,3 +0,0 @@
• Allow an import of already encrypted messages (as cypher text)
• Cosmetic GUI changes
• Better error handling

View File

@ -1,22 +1,23 @@
// Copyright (c) 2021 Proton Technologies AG
//
// This file is part of ProtonMail Bridge.
//
// ProtonMail Bridge is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ProtonMail Bridge is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with ProtonMail Bridge. If not, see <https://www.gnu.org/licenses/>.
#!/bin/bash #!/bin/bash
# Copyright (c) 2021 Proton Technologies AG
#
# This file is part of ProtonMail Bridge.
#
# ProtonMail Bridge is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# ProtonMail Bridge is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with ProtonMail Bridge. If not, see <https://www.gnu.org/licenses/>.
# create QML JSON object from list of golang constants # create QML JSON object from list of golang constants
# run this script and output line stored in `out.qml` insert to `Gui.qml` # run this script and output line stored in `out.qml` insert to `Gui.qml`

View File

@ -1,37 +1,42 @@
// Copyright (c) 2021 Proton Technologies AG
//
// This file is part of ProtonMail Bridge.
//
// ProtonMail Bridge is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ProtonMail Bridge is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with ProtonMail Bridge. If not, see <https://www.gnu.org/licenses/>.
#!/bin/bash #!/bin/bash
# Copyright (c) 2021 Proton Technologies AG
#
# This file is part of ProtonMail Bridge.
#
# ProtonMail Bridge is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# ProtonMail Bridge is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with ProtonMail Bridge. If not, see <https://www.gnu.org/licenses/>.
# Generate HTML release notes # Generate HTML release notes
# hosted at https://protonmail.com/download/{ie,bridge}/release_notes.html # hosted at https://protonmail.com/download/{ie,bridge}/release_notes.html
# Load props # Load props
APP_NAME=$1 APP_TYPE=$1
if [ "$APP_NAME" == "" ]; then if [ "$APP_TYPE" == "" ]; then
APP_NAME="Bridge" APP_TYPE="bridge"
fi
APP_NAME="Bridge"
if [ "$APP_TYPE" == "ie" ]; then
APP_NAME="Import-Export app"
fi fi
APP_TYPE=$(echo "$APP_NAME"|tr [A-Z] [a-z])
INFILE="release-notes/${APP_TYPE}.md" INFILE="release-notes/${APP_TYPE}.md"
OUTFILE="release-notes/${APP_TYPE}.html" OUTFILE="release-notes/${APP_TYPE}.html"
# Check dependencies # Check dependencies
if ! which -s pandoc; then if ! which pandoc; then
echo "PANDOC NOT FOUND!\nPlease install pandoc in order to build release notes." echo "PANDOC NOT FOUND!\nPlease install pandoc in order to build release notes."
exit 1 exit 1
fi fi