Release notes
This commit is contained in:
parent
dc3f61acee
commit
b7b2297635
27
Makefile
27
Makefile
|
@ -10,8 +10,8 @@ TARGET_OS?=${GOOS}
|
|||
.PHONY: build build-ie build-nogui build-ie-nogui build-launcher build-launcher-ie versioner
|
||||
|
||||
# Keep version hardcoded so app build works also without Git repository.
|
||||
BRIDGE_APP_VERSION?=1.5.5-git
|
||||
IE_APP_VERSION?=1.2.3-git
|
||||
BRIDGE_APP_VERSION?=1.5.5+git
|
||||
IE_APP_VERSION?=1.2.3+git
|
||||
APP_VERSION:=${BRIDGE_APP_VERSION}
|
||||
SRC_ICO:=logo.ico
|
||||
SRC_ICNS:=Bridge.icns
|
||||
|
@ -186,7 +186,7 @@ install-go-mod-outdated:
|
|||
|
||||
|
||||
## Checks, mocks and docs
|
||||
.PHONY: check-has-go add-license change-copyright-year test bench coverage mocks lint-license lint-golang lint updates doc
|
||||
.PHONY: check-has-go add-license change-copyright-year test bench coverage mocks lint-license lint-golang lint updates doc release-notes
|
||||
check-has-go:
|
||||
@which go || (echo "Install Go-lang!" && exit 1)
|
||||
|
||||
|
@ -256,18 +256,22 @@ updates: install-go-mod-outdated
|
|||
doc:
|
||||
godoc -http=:6060
|
||||
|
||||
release-notes: release-notes/bridge.html release-notes/import-export.html
|
||||
|
||||
release-notes/bridge.html:
|
||||
./utils/release_notes.sh Bridge
|
||||
|
||||
release-notes/import-export.html:
|
||||
./utils/release_notes.sh Import-Export
|
||||
|
||||
.PHONY: gofiles
|
||||
# Following files are for the whole app so it makes sense to have them in bridge package.
|
||||
# (Options like cmd or internal were considered and bridge package is the best place for them.)
|
||||
gofiles: ./internal/bridge/credits.go ./internal/bridge/release_notes.go ./internal/importexport/credits.go ./internal/importexport/release_notes.go
|
||||
gofiles: ./internal/bridge/credits.go ./internal/importexport/credits.go
|
||||
./internal/bridge/credits.go: ./utils/credits.sh go.mod
|
||||
cd ./utils/ && ./credits.sh bridge
|
||||
./internal/bridge/release_notes.go: ./utils/release-notes.sh ./release-notes/notes-bridge.txt ./release-notes/bugs-bridge.txt
|
||||
cd ./utils/ && ./release-notes.sh bridge
|
||||
./internal/importexport/credits.go: ./utils/credits.sh go.mod
|
||||
cd ./utils/ && ./credits.sh importexport
|
||||
./internal/importexport/release_notes.go: ./utils/release-notes.sh ./release-notes/notes-importexport.txt ./release-notes/bugs-importexport.txt
|
||||
cd ./utils/ && ./release-notes.sh importexport
|
||||
|
||||
|
||||
## Run and debug
|
||||
|
@ -319,3 +323,10 @@ clean: clean-vendor
|
|||
rm -rf cmd/Import-Export/deploy
|
||||
rm -f build last.log mem.pprof main.go
|
||||
rm -rf logo.ico icon.rc icon_windows.syso internal/frontend/qt/icon_windows.syso
|
||||
rm -f release-notes/bridge.html
|
||||
rm -f release-notes/import-export.html
|
||||
|
||||
.PHONY: generate
|
||||
generate:
|
||||
go generate ./...
|
||||
$(MAKE) add-license
|
||||
|
|
|
@ -102,11 +102,6 @@ func New( //nolint[funlen]
|
|||
Aliases: []string{"man"},
|
||||
Func: fe.printManual,
|
||||
})
|
||||
fe.AddCmd(&ishell.Cmd{Name: "release-notes",
|
||||
Help: "print release notes. (aliases: notes, fixed-bugs, bugs, ver, version)",
|
||||
Aliases: []string{"notes", "fixed-bugs", "bugs", "ver", "version"},
|
||||
Func: fe.printLocalReleaseNotes,
|
||||
})
|
||||
fe.AddCmd(&ishell.Cmd{Name: "credits",
|
||||
Help: "print used resources.",
|
||||
Func: fe.printCredits,
|
||||
|
|
|
@ -28,10 +28,6 @@ func (f *frontendCLI) checkUpdates(c *ishell.Context) {
|
|||
f.Println("Your version is up to date.")
|
||||
}
|
||||
|
||||
func (f *frontendCLI) printLocalReleaseNotes(c *ishell.Context) {
|
||||
f.Println("TODO")
|
||||
}
|
||||
|
||||
func (f *frontendCLI) printCredits(c *ishell.Context) {
|
||||
for _, pkg := range strings.Split(importexport.Credits, ";") {
|
||||
f.Println(pkg)
|
||||
|
|
|
@ -138,11 +138,7 @@ func New( //nolint[funlen]
|
|||
Aliases: []string{"man"},
|
||||
Func: fe.printManual,
|
||||
})
|
||||
fe.AddCmd(&ishell.Cmd{Name: "release-notes",
|
||||
Help: "print release notes. (aliases: notes, fixed-bugs, bugs, ver, version)",
|
||||
Aliases: []string{"notes", "fixed-bugs", "bugs", "ver", "version"},
|
||||
Func: fe.printLocalReleaseNotes,
|
||||
})
|
||||
|
||||
fe.AddCmd(&ishell.Cmd{Name: "credits",
|
||||
Help: "print used resources.",
|
||||
Func: fe.printCredits,
|
||||
|
|
|
@ -28,10 +28,6 @@ func (f *frontendCLI) checkUpdates(c *ishell.Context) {
|
|||
f.Println("Your version is up to date.")
|
||||
}
|
||||
|
||||
func (f *frontendCLI) printLocalReleaseNotes(c *ishell.Context) {
|
||||
f.Println("TODO")
|
||||
}
|
||||
|
||||
func (f *frontendCLI) printCredits(c *ishell.Context) {
|
||||
for _, pkg := range strings.Split(bridge.Credits, ";") {
|
||||
f.Println(pkg)
|
||||
|
|
|
@ -340,8 +340,6 @@ Dialog {
|
|||
winMain.dialogAddUser .visible = false
|
||||
winMain.dialogChangePort .visible = false
|
||||
winMain.dialogCredits .visible = false
|
||||
winMain.dialogVersionInfo .visible = false
|
||||
// dialogFirstStart should reappear again after closing global
|
||||
root.visible = true
|
||||
}
|
||||
|
||||
|
|
|
@ -138,8 +138,7 @@ Item {
|
|||
fontSize : Style.main.fontSize
|
||||
textUnderline : true
|
||||
onClicked : {
|
||||
go.getLocalVersionInfo()
|
||||
winMain.dialogVersionInfo.show()
|
||||
Qt.openUrlExternally(go.releaseNotesLink)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,7 +38,6 @@ Window {
|
|||
property alias dialogUpdate : dialogUpdate
|
||||
property alias dialogFirstStart : dialogFirstStart
|
||||
property alias dialogGlobal : dialogGlobal
|
||||
property alias dialogVersionInfo : dialogVersionInfo
|
||||
property alias dialogConnectionTroubleshoot : dialogConnectionTroubleshoot
|
||||
property alias bubbleNote : bubbleNote
|
||||
property alias addAccountTip : addAccountTip
|
||||
|
@ -66,7 +65,6 @@ Window {
|
|||
!dialogUpdate .visible &&
|
||||
!dialogFirstStart .visible &&
|
||||
!dialogGlobal .visible &&
|
||||
!dialogVersionInfo .visible &&
|
||||
!bubbleNote .visible
|
||||
|
||||
Accessible.role: Accessible.Grouping
|
||||
|
@ -350,13 +348,13 @@ Window {
|
|||
Check <a href="%1">release notes</a> to learn what is new in %2.<br>
|
||||
Use your package manager to update or download and install the new version manually from<br><br>
|
||||
%3',
|
||||
"Message for update in Linux").arg("releaseNotes").arg(go.newversion).arg(dialogUpdate.manualLinks)
|
||||
"Message for update in Linux").arg(go.releaseNotesLink).arg(go.newversion).arg(dialogUpdate.manualLinks)
|
||||
} else {
|
||||
return qsTr('A new version of Bridge is available.<br>
|
||||
Check <a href="%1">release notes</a> to learn what is new in %2.<br>
|
||||
You can continue with the update or download and install the new version manually from<br><br>
|
||||
<a href="%3">%3</a>',
|
||||
"Message for update in Win/Mac").arg("releaseNotes").arg(go.newversion).arg(go.landingPage)
|
||||
"Message for update in Win/Mac").arg(go.releaseNotesLink).arg(go.newversion).arg(go.landingPage)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -373,25 +371,6 @@ Window {
|
|||
id: dialogTlsCert
|
||||
}
|
||||
|
||||
Dialog {
|
||||
id: dialogVersionInfo
|
||||
property bool checkVersionOnClose : false
|
||||
title: qsTr("Information about", "title of release notes page") + " v" + go.newversion
|
||||
VersionInfo { }
|
||||
onShow : {
|
||||
// Hide information bar with old version
|
||||
if (infoBar.state=="oldVersion") {
|
||||
infoBar.state="upToDate"
|
||||
dialogVersionInfo.checkVersionOnClose = true
|
||||
}
|
||||
}
|
||||
onHide : {
|
||||
// Reload current version based on online status
|
||||
if (dialogVersionInfo.checkVersionOnClose) go.runCheckVersion(false)
|
||||
dialogVersionInfo.checkVersionOnClose = false
|
||||
}
|
||||
}
|
||||
|
||||
DialogYesNo {
|
||||
id: dialogGlobal
|
||||
question : ""
|
||||
|
|
|
@ -1,127 +0,0 @@
|
|||
// 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/>.
|
||||
|
||||
// credits
|
||||
|
||||
import QtQuick 2.8
|
||||
import BridgeUI 1.0
|
||||
import ProtonUI 1.0
|
||||
|
||||
Item {
|
||||
Rectangle {
|
||||
id: wrapper
|
||||
anchors.centerIn: parent
|
||||
width: 2*Style.main.width/3
|
||||
height: Style.main.height - 6*Style.dialog.titleSize
|
||||
color: "transparent"
|
||||
|
||||
Flickable {
|
||||
anchors.fill : wrapper
|
||||
contentWidth : wrapper.width
|
||||
contentHeight : content.height
|
||||
flickableDirection : Flickable.VerticalFlick
|
||||
clip : true
|
||||
|
||||
|
||||
Column {
|
||||
id: content
|
||||
anchors.top: parent.top
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
width: wrapper.width
|
||||
spacing: Style.dialog.spacing
|
||||
|
||||
AccessibleText {
|
||||
visible: go.changelog != ""
|
||||
anchors {
|
||||
left: parent.left
|
||||
}
|
||||
font.bold: true
|
||||
font.pointSize: Style.main.fontSize * Style.pt
|
||||
color: Style.main.text
|
||||
text: qsTr("Release notes", "list of release notes for this version of the app") + ":"
|
||||
}
|
||||
|
||||
AccessibleSelectableText {
|
||||
anchors {
|
||||
left: parent.left
|
||||
leftMargin: Style.main.leftMargin
|
||||
}
|
||||
font {
|
||||
pointSize : Style.main.fontSize * Style.pt
|
||||
}
|
||||
width: wrapper.width - anchors.leftMargin
|
||||
onLinkActivated: {
|
||||
Qt.openUrlExternally(link)
|
||||
}
|
||||
wrapMode: Text.Wrap
|
||||
color: Style.main.text
|
||||
text: go.changelog
|
||||
}
|
||||
|
||||
AccessibleText {
|
||||
visible: go.bugfixes != ""
|
||||
anchors {
|
||||
left: parent.left
|
||||
}
|
||||
font.bold: true
|
||||
font.pointSize: Style.main.fontSize * Style.pt
|
||||
color: Style.main.text
|
||||
text: qsTr("Fixed bugs", "list of bugs fixed for this version of the app") + ":"
|
||||
}
|
||||
|
||||
AccessibleSelectableText {
|
||||
visible: go.bugfixes!=""
|
||||
anchors {
|
||||
left: parent.left
|
||||
leftMargin: Style.main.leftMargin
|
||||
}
|
||||
font {
|
||||
pointSize : Style.main.fontSize * Style.pt
|
||||
}
|
||||
width: wrapper.width - anchors.leftMargin
|
||||
onLinkActivated: {
|
||||
Qt.openUrlExternally(link)
|
||||
}
|
||||
wrapMode: Text.Wrap
|
||||
color: Style.main.text
|
||||
text: go.bugfixes
|
||||
}
|
||||
|
||||
Rectangle{id:spacer; color:Style.transparent; width: Style.main.dummy; height: buttonClose.height}
|
||||
|
||||
ButtonRounded {
|
||||
id: buttonClose
|
||||
anchors.horizontalCenter: content.horizontalCenter
|
||||
text: qsTr("Close")
|
||||
onClicked: {
|
||||
dialogVersionInfo.hide()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
AccessibleSelectableText {
|
||||
anchors.horizontalCenter: content.horizontalCenter
|
||||
font {
|
||||
pointSize : Style.main.fontSize * Style.pt
|
||||
}
|
||||
color: Style.main.textDisabled
|
||||
text: "\n Current: "+go.fullversion
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -12,4 +12,3 @@ ManualWindow 1.0 ManualWindow.qml
|
|||
OutgoingNoEncPopup 1.0 OutgoingNoEncPopup.qml
|
||||
SettingsView 1.0 SettingsView.qml
|
||||
StatusFooter 1.0 StatusFooter.qml
|
||||
VersionInfo 1.0 VersionInfo.qml
|
||||
|
|
|
@ -306,10 +306,5 @@ Item {
|
|||
gui.winMain.showAndRise()
|
||||
}
|
||||
go.runCheckVersion(false)
|
||||
|
||||
if (go.isFreshVersion) {
|
||||
go.getLocalVersionInfo()
|
||||
gui.winMain.dialogVersionInfo.show()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -314,7 +314,6 @@ Dialog {
|
|||
// hide all other dialogs
|
||||
winMain.dialogAddUser .visible = false
|
||||
winMain.dialogCredits .visible = false
|
||||
//winMain.dialogVersionInfo .visible = false
|
||||
// dialogFirstStart should reappear again after closing global
|
||||
root.visible = true
|
||||
}
|
||||
|
|
|
@ -130,8 +130,7 @@ Item {
|
|||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked : {
|
||||
go.getLocalVersionInfo()
|
||||
winMain.dialogVersionInfo.show()
|
||||
Qt.openUrlExternally(go.releaseNotesLink)
|
||||
}
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
}
|
||||
|
|
|
@ -34,7 +34,6 @@ Window {
|
|||
property alias dialogAddUser : dialogAddUser
|
||||
property alias dialogGlobal : dialogGlobal
|
||||
property alias dialogCredits : dialogCredits
|
||||
property alias dialogVersionInfo : dialogVersionInfo
|
||||
property alias dialogUpdate : dialogUpdate
|
||||
property alias popupMessage : popupMessage
|
||||
property alias popupFolderEdit : popupFolderEdit
|
||||
|
@ -61,7 +60,6 @@ Window {
|
|||
property bool activeContent :
|
||||
!dialogAddUser .visible &&
|
||||
!dialogCredits .visible &&
|
||||
!dialogVersionInfo .visible &&
|
||||
!dialogGlobal .visible &&
|
||||
!dialogUpdate .visible &&
|
||||
!dialogImport .visible &&
|
||||
|
@ -278,13 +276,13 @@ Window {
|
|||
Check <a href="%2">release notes</a> to learn what is new in %3.<br>
|
||||
Use your package manager to update or download and install new the version manually from<br><br>
|
||||
<a href="%4">%4</a>',
|
||||
"Message for update in Linux").arg(go.programTitle).arg("releaseNotes").arg(go.newversion).arg(go.landingPage)
|
||||
"Message for update in Linux").arg(go.programTitle).arg(go.releaseNotesLink).arg(go.newversion).arg(go.landingPage)
|
||||
} else {
|
||||
return qsTr('A new version of %1 is available.<br>
|
||||
Check <a href="%2">release notes</a> to learn what is new in %3.<br>
|
||||
You can continue with update or download and install new the version manually from<br><br>
|
||||
<a href="%4">%4</a>',
|
||||
"Message for update in Win/Mac").arg(go.programTitle).arg("releaseNotes").arg(go.newversion).arg(go.landingPage)
|
||||
"Message for update in Win/Mac").arg(go.programTitle).arg(go.releaseNotesLink).arg(go.newversion).arg(go.landingPage)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -327,31 +325,6 @@ Window {
|
|||
Credits { }
|
||||
}
|
||||
|
||||
Dialog {
|
||||
id: dialogVersionInfo
|
||||
anchors {
|
||||
top : infoBar.bottom
|
||||
bottomMargin: innerWindowBorder
|
||||
leftMargin: innerWindowBorder
|
||||
rightMargin: innerWindowBorder
|
||||
}
|
||||
property bool checkVersion : false
|
||||
title: qsTr("Information about", "title of release notes page") + " v" + go.newversion
|
||||
VersionInfo { }
|
||||
onShow : {
|
||||
// Hide information bar with olde version
|
||||
if ( infoBar.state=="oldVersion" ) {
|
||||
infoBar.state="upToDate"
|
||||
dialogVersionInfo.checkVersion = true
|
||||
}
|
||||
}
|
||||
onHide : {
|
||||
// Reload current version based on online status
|
||||
if (dialogVersionInfo.checkVersion) go.runCheckVersion(false)
|
||||
dialogVersionInfo.checkVersion = false
|
||||
}
|
||||
}
|
||||
|
||||
DialogYesNo {
|
||||
id: dialogGlobal
|
||||
question : ""
|
||||
|
|
|
@ -1,125 +0,0 @@
|
|||
// 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/>.
|
||||
|
||||
// credits
|
||||
|
||||
import QtQuick 2.8
|
||||
import ProtonUI 1.0
|
||||
import ImportExportUI 1.0
|
||||
|
||||
Item {
|
||||
id: root
|
||||
Rectangle {
|
||||
id: wrapper
|
||||
anchors.centerIn: parent
|
||||
width: 2*Style.main.width/3
|
||||
height: Style.main.height - 6*Style.dialog.titleSize
|
||||
color: "transparent"
|
||||
|
||||
Flickable {
|
||||
anchors.fill : wrapper
|
||||
contentWidth : wrapper.width
|
||||
contentHeight : content.height
|
||||
flickableDirection : Flickable.VerticalFlick
|
||||
clip : true
|
||||
|
||||
|
||||
Column {
|
||||
id: content
|
||||
anchors.top: parent.top
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
width: wrapper.width
|
||||
spacing: 5
|
||||
|
||||
Text {
|
||||
visible: go.changelog != ""
|
||||
anchors {
|
||||
left: parent.left
|
||||
}
|
||||
font.bold: true
|
||||
font.pointSize: Style.main.fontSize * Style.pt
|
||||
color: Style.main.text
|
||||
text: qsTr("Release notes:")
|
||||
}
|
||||
|
||||
Text {
|
||||
anchors {
|
||||
left: parent.left
|
||||
leftMargin: Style.main.leftMargin
|
||||
}
|
||||
font.pointSize: Style.main.fontSize * Style.pt
|
||||
width: wrapper.width - anchors.leftMargin
|
||||
wrapMode: Text.Wrap
|
||||
color: Style.main.text
|
||||
text: go.changelog
|
||||
}
|
||||
|
||||
Text {
|
||||
visible: go.bugfixes != ""
|
||||
anchors {
|
||||
left: parent.left
|
||||
}
|
||||
font.bold: true
|
||||
font.pointSize: Style.main.fontSize * Style.pt
|
||||
color: Style.main.text
|
||||
text: qsTr("Fixed bugs:")
|
||||
}
|
||||
|
||||
Repeater {
|
||||
anchors.fill: parent
|
||||
model: go.bugfixes.split(";")
|
||||
|
||||
Text {
|
||||
visible: go.bugfixes!=""
|
||||
anchors {
|
||||
left: parent.left
|
||||
leftMargin: Style.main.leftMargin
|
||||
}
|
||||
font.pointSize: Style.main.fontSize * Style.pt
|
||||
width: wrapper.width - anchors.leftMargin
|
||||
wrapMode: Text.Wrap
|
||||
color: Style.main.text
|
||||
text: modelData
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle{id:spacer; color:"transparent"; width:10; height: buttonClose.height}
|
||||
|
||||
|
||||
ButtonRounded {
|
||||
id: buttonClose
|
||||
anchors.horizontalCenter: content.horizontalCenter
|
||||
text: "Close"
|
||||
onClicked: {
|
||||
root.parent.hide()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
AccessibleSelectableText {
|
||||
anchors.horizontalCenter: content.horizontalCenter
|
||||
font {
|
||||
pointSize : Style.main.fontSize * Style.pt
|
||||
}
|
||||
color: Style.main.textDisabled
|
||||
text: "\n Current: "+go.fullversion
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -62,13 +62,8 @@ Dialog {
|
|||
|
||||
onLinkActivated : {
|
||||
console.log("clicked link:", link)
|
||||
if (link == "releaseNotes"){
|
||||
root.hide()
|
||||
winMain.dialogVersionInfo.show()
|
||||
} else {
|
||||
root.hide()
|
||||
Qt.openUrlExternally(link)
|
||||
}
|
||||
root.hide()
|
||||
Qt.openUrlExternally(link)
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
|
|
|
@ -61,14 +61,14 @@ Rectangle {
|
|||
id: message
|
||||
font.pointSize: root.fontSize * Style.pt
|
||||
}
|
||||
|
||||
|
||||
ClickIconText {
|
||||
anchors.verticalCenter : message.verticalCenter
|
||||
text : "("+go.newversion+" " + qsTr("release notes", "display the release notes from the new version")+")"
|
||||
visible : root.state=="oldVersion" && ( go.changelog!="" || go.bugfixes!="")
|
||||
visible : root.state=="oldVersion"
|
||||
iconText : ""
|
||||
onClicked : {
|
||||
dialogVersionInfo.show()
|
||||
Qt.openUrlExternally(go.releaseNotesLink)
|
||||
}
|
||||
fontSize : root.fontSize
|
||||
}
|
||||
|
|
|
@ -274,9 +274,7 @@ Window {
|
|||
property string landingPage : "https://landing.page"
|
||||
//property string downloadLink: "https://landing.page/download/link"
|
||||
property string downloadLink: "https://protonmail.com/download/beta/protonmail-bridge-1.1.5-1.x86_64.rpm;https://www.protonmail.com/downloads/beta/Desktop-Bridge-link1.exe;https://www.protonmail.com/downloads/beta/Desktop-Bridge-link1.exe;https://www.protonmail.com/downloads/beta/Desktop-Bridge-link1.exe;"
|
||||
//property string changelog : "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."
|
||||
property string changelog : "• Support of encryption to external PGP recipients using contacts created on beta.protonmail.com (see https://protonmail.com/blog/pgp-vulnerability-efail/ to understand the vulnerabilities that may be associated with sending to other PGP clients)\n• Notification that outgoing email will be delivered as non-encrypted.\n• NOTE: Due to a change of the keychain format, you will need to add your account(s) to the Bridge after installing this version"
|
||||
property string bugfixes : "• Support accounts with same user names\n• Support sending vCalendar event"
|
||||
property string releaseNotesLink : "https://protonmail.com/download/bridge/release_notes.html"
|
||||
property string credits : "here;goes;list;;of;;used;packages;"
|
||||
|
||||
property real progress: 0.3
|
||||
|
|
|
@ -833,10 +833,7 @@ Window {
|
|||
property string programTitle : "ProtonMail Import-Export app"
|
||||
property string newversion : "q0.1.0"
|
||||
property string landingPage : "https://landing.page"
|
||||
property string changelog : "• Lorem ipsum dolor sit amet\n• consetetur sadipscing elitr,\n• sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,\n• sed diam voluptua.\n• At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."
|
||||
//property string changelog : ""
|
||||
property string bugfixes : "• lorem ipsum dolor sit amet;• consetetur sadipscing elitr;• sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat;• sed diam voluptua;• at vero eos et accusam et justo duo dolores et ea rebum;• stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet"
|
||||
//property string bugfixes : ""
|
||||
property string releaseNotesLink : "https://protonmail.com/download/ie/release_notes.html"
|
||||
|
||||
property real progress: 0.0
|
||||
property int progressFails: 0
|
||||
|
|
|
@ -53,8 +53,7 @@ type GoQMLInterface struct {
|
|||
_ string `property:"fullversion"`
|
||||
_ string `property:"downloadLink"`
|
||||
_ string `property:"landingPage"`
|
||||
_ string `property:"changelog"`
|
||||
_ string `property:"bugfixes"`
|
||||
_ string `property:"releaseNotesLink"`
|
||||
|
||||
// translations
|
||||
_ string `property:"wrongCredentials"`
|
||||
|
@ -171,6 +170,8 @@ func (s *GoQMLInterface) SetFrontend(f *FrontendQt) {
|
|||
s.SetProgramTitle(f.programName)
|
||||
|
||||
s.ConnectOpenLicenseFile(f.openLicenseFile)
|
||||
s.SetReleaseNotesLink("https://protonmail.com/download/ie/release_notes.html")
|
||||
|
||||
s.ConnectGetLocalVersionInfo(f.getLocalVersionInfo)
|
||||
s.ConnectIsNewVersionAvailable(f.isNewVersionAvailable)
|
||||
s.ConnectGetBackendVersion(func() string {
|
||||
|
|
|
@ -653,17 +653,4 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>VersionInfo</name>
|
||||
<message>
|
||||
<location filename="qml/BridgeUI/VersionInfo.qml" line="30"/>
|
||||
<source>Release notes:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="qml/BridgeUI/VersionInfo.qml" line="53"/>
|
||||
<source>Fixed bugs:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -49,8 +49,7 @@ type GoQMLInterface struct {
|
|||
_ string `property:"fullversion"`
|
||||
_ string `property:"downloadLink"`
|
||||
_ string `property:"landingPage"`
|
||||
_ string `property:"changelog"`
|
||||
_ string `property:"bugfixes"`
|
||||
_ string `property:"releaseNotesLink"`
|
||||
|
||||
// Translations.
|
||||
_ string `property:"wrongCredentials"`
|
||||
|
@ -181,6 +180,8 @@ func (s *GoQMLInterface) SetFrontend(f *FrontendQt) {
|
|||
s.SetGoos(runtime.GOOS)
|
||||
s.SetProgramTitle(f.programName)
|
||||
|
||||
s.SetReleaseNotesLink("https://protonmail.com/download/bridge/release_notes.html")
|
||||
|
||||
s.ConnectGetBackendVersion(func() string {
|
||||
return f.programVer
|
||||
})
|
||||
|
|
|
@ -71,7 +71,6 @@
|
|||
<file alias="OutgoingNoEncPopup.qml" >./qml/BridgeUI/OutgoingNoEncPopup.qml</file>
|
||||
<file alias="SettingsView.qml" >./qml/BridgeUI/SettingsView.qml</file>
|
||||
<file alias="StatusFooter.qml" >./qml/BridgeUI/StatusFooter.qml</file>
|
||||
<file alias="VersionInfo.qml" >./qml/BridgeUI/VersionInfo.qml</file>
|
||||
</qresource>
|
||||
<qresource prefix="ImportExportUI">
|
||||
<file alias="qmldir" >./qml/ImportExportUI/qmldir</file>
|
||||
|
@ -104,7 +103,6 @@
|
|||
<file alias="SelectFolderMenu.qml" >./qml/ImportExportUI/SelectFolderMenu.qml</file>
|
||||
<file alias="SelectLabelsMenu.qml" >./qml/ImportExportUI/SelectLabelsMenu.qml</file>
|
||||
<file alias="SettingsView.qml" >./qml/ImportExportUI/SettingsView.qml</file>
|
||||
<file alias="VersionInfo.qml" >./qml/ImportExportUI/VersionInfo.qml</file>
|
||||
<file alias="images/folder_open.png" >./share/icons/folder_open.png</file>
|
||||
<file alias="images/envelope_open.png" >./share/icons/envelope_open.png</file>
|
||||
</qresource>
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
## v1.4.5
|
||||
- 2020-10-22
|
||||
|
||||
### New
|
||||
|
||||
Improving Performance
|
||||
|
||||
* Bulletproofing against any potential data loss and/or duplication
|
||||
* Performance improvements for handling attachments and non-standard formatting
|
||||
* Better stability of the message parser
|
||||
|
||||
Outgoing messages support
|
||||
|
||||
* Additional foreign encoding support for outgoing messages
|
||||
* Complete refactor of the way messages are parsed to simplify code maintenance
|
||||
* Improved User-Agent detection
|
||||
|
||||
Added MacOS Big Sur compatibility
|
||||
|
||||
Added persistent anonymous API cookies
|
||||
|
||||
### Fixed
|
||||
|
||||
Fixed rare mail loss when moving from Spam folder
|
||||
|
||||
Limited log size
|
||||
|
||||
Fixed Linux font issues (mouse hover)
|
||||
|
||||
## v1.3.3
|
||||
- 2020-08-12
|
||||
|
||||
### New
|
||||
|
||||
Improvements to Alternative Routing
|
||||
|
||||
* Version two of this feature is now more resilient to unstable internet connections, which results in a smoother experience using this feature.
|
||||
* Includes fixes to previous implementation of Alternative Routing when first starting the application or when turning it off.
|
||||
|
||||
Email parsing improvements
|
||||
|
||||
* Improved detection of email encodings embedded in html/xml in addition to message header; add a fallback option if encoding is not specified and decoding as UTF8 fails (ISO-8859-1)
|
||||
* tweaked logic of parsing "References" header.
|
||||
|
||||
User interaction improvements
|
||||
|
||||
* Some smaller improvements in specific cases to make the interaction with Proton Bridge clearer for the user
|
||||
|
||||
Code updates & maintenance
|
||||
|
||||
* Migrated to GopenPGP v2
|
||||
* updates to GoIMAPv1
|
||||
* increased bbolt version to 1.3.5 and various improvements regarding extensibility and maintainability for upcoming work.
|
||||
|
||||
General stability improvements
|
||||
|
||||
* Improvements to the behavior of the application under various unstable internet conditions.
|
||||
|
||||
### Fixed
|
||||
|
||||
Fixed a slew of smaller bugs and some conditions which could cause the application to crash.
|
|
@ -0,0 +1,26 @@
|
|||
## v1.1.2
|
||||
- 2020-09-23
|
||||
|
||||
### New
|
||||
|
||||
Improving performance
|
||||
|
||||
* Speed up import by implementing parallel processing (parallel fetch, encrypt and upload of messages)
|
||||
* Optimising the initial fetch of messages from external accounts
|
||||
|
||||
Better message parsing
|
||||
|
||||
* Better handling of attachments and non-standard formatting
|
||||
* Improved stability of the message parser
|
||||
|
||||
Improved metrics
|
||||
|
||||
* Added persistent anonymous API cookies
|
||||
|
||||
|
||||
### Fixed
|
||||
|
||||
Fixed issues causing failing of import
|
||||
|
||||
* Import from mbox files with long lines
|
||||
* Improvements to import from Yahoo accounts
|
|
@ -1,24 +0,0 @@
|
|||
#!/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/>.
|
||||
|
||||
PACKAGE=$1
|
||||
|
||||
# Generate release notes information
|
||||
cat ../utils/license_header.txt > ../internal/$PACKAGE/release_notes.go
|
||||
echo -e "// Code generated by `echo $0` at '`date`'. DO NOT EDIT.\n\npackage ${PACKAGE}\n\nconst ReleaseNotes = \``cat ../release-notes/notes-${PACKAGE}.txt`\n\`\n\nconst ReleaseFixedBugs = \``cat ../release-notes/bugs-${PACKAGE}.txt`\n\`" >> ../internal/$PACKAGE/release_notes.go
|
|
@ -0,0 +1,174 @@
|
|||
/* CUSTOM CSS */
|
||||
html, body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", system-ui, "Ubuntu", "Droid Sans", sans-serif;
|
||||
font-size: 14px;
|
||||
padding: 0 26px;
|
||||
line-height: 1.6 22px;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
body {
|
||||
border: 1px dashed #aaa;
|
||||
max-width: 1024px;
|
||||
margin: auto;
|
||||
margin-top: 2em;
|
||||
margin-bottom: 2em;
|
||||
padding-bottom: 1em;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-weight: 400;
|
||||
color: #666;
|
||||
font-size: 2em;
|
||||
text-align: center;
|
||||
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 2.6em;
|
||||
font-weight: 400;
|
||||
color: #666;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.6em;
|
||||
font-weight: 400;
|
||||
color: #222;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
p {
|
||||
padding: 1em 2em 0 2em;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
a {
|
||||
color: rgb(0, 116, 224);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: square;
|
||||
list-style-position: inside;
|
||||
margin: 0;
|
||||
padding: 0 3em 1em 3em;
|
||||
}
|
||||
|
||||
li {
|
||||
padding-top: 1em;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
section[id^="new"] h3::before {
|
||||
content: "";
|
||||
display: inline-block;
|
||||
margin-right: 0.3em;
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
background-size: 1em;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1NzYgNTEyIj4KPHBhdGggZD0iTTUyOC4xIDE3MS41TDM4MiAxNTAuMiAzMTYuNyAxNy44Yy0xMS43LTIzLjYtNDUuNi0yMy45LTU3LjQgMEwxOTQgMTUwLjIgNDcuOSAxNzEuNWMtMjYuMiAzLjgtMzYuNyAzNi4xLTE3LjcgNTQuNmwxMDUuNyAxMDMtMjUgMTQ1LjVjLTQuNSAyNi4zIDIzLjIgNDYgNDYuNCAzMy43TDI4OCA0MzkuNmwxMzAuNyA2OC43YzIzLjIgMTIuMiA1MC45LTcuNCA0Ni40LTMzLjdsLTI1LTE0NS41IDEwNS43LTEwM2MxOS0xOC41IDguNS01MC44LTE3LjctNTQuNnpNMzg4LjYgMzEyLjNsMjMuNyAxMzguNEwyODggMzg1LjRsLTEyNC4zIDY1LjMgMjMuNy0xMzguNC0xMDAuNi05OCAxMzktMjAuMiA2Mi4yLTEyNiA2Mi4yIDEyNiAxMzkgMjAuMi0xMDAuNiA5OHoiIGZpbGw9IiMyMjIiLz4KPC9zdmc+Cg==")
|
||||
}
|
||||
|
||||
section[id^="fixed"] h3::before {
|
||||
content: "";
|
||||
display: inline-block;
|
||||
margin-right: 0.3em;
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
background-size: 1em;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNjYuNTIzIDM2Ni41MjMiPg0KPHBhdGggZmlsbD0iIzIyMiIgZD0iTTM1OC4zNzksODQuNjQ5Yy0xLjY2Ni0zLjc2Ni01LjA3OC02LjQ2OS05LjEyNS03LjIyOGMtNC4wNTMtMC43NjItOC4yMTEsMC41MjMtMTEuMTI3LDMuNDI5bC00Ni4xNDgsNDUuOTY2LGMtNi45ODYsNi45ODctMTYuMjc5LDEwLjgzNS0yNi4xNjIsMTAuODM2Yy05Ljg4MSwwLTE5LjE3Mi0zLjg0OC0yNi4xNi0xMC44MzdjLTYuOTg4LTYuOTg4LTEwLjgzNy0xNi4yNzgtMTAuODM4LTI2LjE2MSxjMC05Ljg4MywzLjg1LTE5LjE3MywxMC44MjItMjYuMTQ4bDQ2LjEwNy00NS45NzRjMi45MjItMi45MTIsNC4yMTktNy4wNzksMy40NjUtMTEuMTM1Yy0wLjc1NC00LjA1Ni0zLjQ2MS03LjQ3OS03LjIzMi05LjE0NixjLTEyLjEyMS01LjM2Mi0yNS41OTQtOC4xOTctMzguOTY1LTguMTk4Yy0yNC44MzgsMC4wMDEtNDcuODgxLDkuMzYyLTY0Ljg3OSwyNi4zNjFMMTYyLjkzOSw0MS42MSxjLTI2LjM0OCwyNi4zNDgtMzQuMTQ2LDY1LjE3OS0yMC43Miw5OS4yMDdMMTcuMjgxLDI2NS43NTVDNi4xMzgsMjc2LjksMC4wMDEsMjkxLjcxNCwwLDMwNy40NzMsYy0wLjAwMSwxNS43NTksNi4xMzYsMzAuNTc0LDE3LjI3OSw0MS43MTljMTEuMTQ1LDExLjE0NCwyNS45NjEsMTcuMjc5LDQxLjcxOSwxNy4yNzljMTUuNzU5LTAuMDAxLDMwLjU3NC02LjEzNyw0MS43MTktMTcuMjc5LEwyMjUuNjY4LDIyNC4yNGMxMC43MTksNC4xOTEsMjIuMjM4LDYuMzc5LDMzLjc5Nyw2LjM3OWMyNC43MDUsMCw0Ny45My05LjYxOSw2NS4zOTYtMjcuMDg4bDE1LjE5NS0xNS4xOTQsQzM2Ni42NzgsMTYxLjcxNCwzNzQuMDM5LDEyMC4wNDYsMzU4LjM3OSw4NC42NDl6IE0yNTkuNDY1LDIwNS42MTljLTEwLjgwMS0wLjAwMi0yMS40NzctMi41NDEtMzEuMDAyLTcuNDgxLGMtNS4yOTUtMi43NDQtMTEuMzk2LTEuMDc5LTE1LjUxOCwzLjI5M0w4My4wMzgsMzMxLjUxMmMtNi40MjIsNi40MjMtMTQuOTYsOS45NTgtMjQuMDQxLDkuOTU4cy0xNy42MTktMy41MzYtMjQuMDQxLTkuOTU3LGMtNi40Mi02LjQyMi05Ljk1Ny0xNC45NTktOS45NTctMjQuMDRzMy41MzctMTcuNjE5LDkuOTU5LTI0LjA0MWwxMzAuMDYtMTI5LjkyNWM0LjQ4NS00LjI2Miw2LjA0MS0xMC4yMjYsMy4yOTQtMTUuNTIxLGMtMTMuNTk2LTI2LjIyMy04LjU5OC01Ny43OTUsMTIuMzA1LTc4LjY5OGwxNS4xOTctMTUuMTk2YzEyLjI3Ny0xMi4yNzgsMjkuMDQxLTE5LjA0LDQ3LjIwMS0xOS4wNCxjMy4zNzMsMCw2Ljc1MiwwLjI0MywxMC4wOTYsMC43MTlsLTMxLjEzNSwzMS4wNDVjLTExLjcxMSwxMS43MS0xOC4xNTgsMjcuMjc5LTE4LjE1OCw0My44MzksYzAuMDAyLDE2LjU2MSw2LjQ0OSwzMi4xMywxOC4xNiw0My44MzljMTEuNzA5LDExLjcxMSwyNy4yNzksMTguMTYsNDMuODQsMTguMTU5YzE2LjU2MS0wLjAwMiwzMi4xMjktNi40NSw0My44Mi0xOC4xNDEsbDMxLjIxNS0zMS4wOTNjMi45NjUsMjAuOTMxLTMuNjAyLDQyLjM2NC0xOC40NzUsNTcuMjM4bC0xNS4xOTUsMTUuMTk2QzI5NC40MzgsMTk4LjU5OCwyNzcuNDksMjA1LjYxOSwyNTkuNDY1LDIwNS42MTl6Ii8+DQo8cGF0aCBmaWxsPSIjMjIyIiBkPSJNNjEuODk0LDI4NS4wNzhjLTUuMjA5LDAtMTAuMTA2LDIuMDI3LTEzLjc4OSw1LjcxMWMtMy42ODIsMy42ODQtNS43MTEsOC41OC01LjcxMSwxMy43ODlzMi4wMjgsMTAuMTA0LDUuNzExLDEzLjc4OSxjMy42ODMsMy42ODMsOC41OCw1LjcxMSwxMy43ODksNS43MTFjNS4yMDktMC4wMDIsMTAuMTA1LTIuMDI4LDEzLjc4OS01LjcxM2MzLjY4NC0zLjY4Myw1LjcxMS04LjU4LDUuNzExLTEzLjc4NyxjMC01LjIwOS0yLjAyOC0xMC4xMDYtNS43MTEtMTMuNzg5QzcxLjk5OSwyODcuMTA0LDY3LjEwMywyODUuMDc4LDYxLjg5NCwyODUuMDc4eiIvPg0KPC9zdmc+DQo=")
|
||||
}
|
||||
|
||||
.level2 {
|
||||
border-top: 1px dashed #999;
|
||||
padding-bottom: 2em;
|
||||
}
|
||||
|
||||
.level2::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
.level2>h2 {
|
||||
float: left;
|
||||
width: 20%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.level2>ul {
|
||||
float: left;
|
||||
width: 20%;
|
||||
text-align: center;
|
||||
clear: both;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.level2>ul>li {
|
||||
border-radius: 5px;
|
||||
border: 1px solid #ccc;
|
||||
color: #444;
|
||||
padding: 0.5em;
|
||||
font-size: 0.8em;
|
||||
font-family: 'Courier New', Courier, monospace;
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
.level3 {
|
||||
float: right;
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
.level3>h3 {
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.level3:first-of-type>h3 {
|
||||
margin-top: -1.5em;
|
||||
}
|
||||
|
||||
|
||||
@media only screen and (max-width: 600px) {
|
||||
.level2>h2 {
|
||||
float: none;
|
||||
text-align: left;
|
||||
width: 30%;
|
||||
display: inline-block;
|
||||
|
||||
}
|
||||
|
||||
.level2>ul {
|
||||
float: none;
|
||||
display: inline-block;
|
||||
width: 69%;
|
||||
text-align: right;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.level2>ul>li {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.level3 {
|
||||
clear: both;
|
||||
float: none;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.level3:first-of-type>h3 {
|
||||
margin-top: 1em;
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
// Copyright (c) 2020 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
|
||||
|
||||
# Generate HTML release notes
|
||||
# hosted at https://protonmail.com/download/{ie,bridge}/release_notes.html
|
||||
|
||||
# Load props
|
||||
APP_NAME=$1
|
||||
if [ "$APP_NAME" == "" ]; then
|
||||
APP_NAME="Bridge"
|
||||
fi
|
||||
|
||||
APP_TYPE=$(echo "$APP_NAME"|tr [A-Z] [a-z])
|
||||
INFILE="release-notes/${APP_TYPE}.md"
|
||||
OUTFILE="release-notes/${APP_TYPE}.html"
|
||||
|
||||
# Check dependencies
|
||||
if ! which -s pandoc; then
|
||||
echo "PANDOC NOT FOUND!\nPlease install pandoc in order to build release notes."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Build release notes
|
||||
pandoc $INFILE -f markdown -t html -s -o $OUTFILE -c utils/release_notes.css --self-contained --section-divs --metadata title="Release notes - ProtonMail $APP_NAME"
|
Loading…
Reference in New Issue