forked from Silverfish/proton-bridge
966 lines
41 KiB
Markdown
966 lines
41 KiB
Markdown
# ProtonMail Bridge Changelog
|
|
|
|
Changelog [format](http://keepachangelog.com/en/1.0.0/)
|
|
|
|
## Unreleased
|
|
|
|
### Added
|
|
* GODT-682 Persistent anonymous API cookies for Import-Export.
|
|
* GODT-357 Use go-message to make a better message parser.
|
|
* GODT-720 Time measurement of progress for Import-Export.
|
|
|
|
### Changed
|
|
* GODT-511 User agent format changed.
|
|
* Unsilent errors reading mbox files.
|
|
* GODT-692 QA build with option to change API URL by ENV variable.
|
|
* GODT-704 User agent detected by fake IMAP extension instead of AUTH callback (some clients use LOGIN instead of AUTH).
|
|
|
|
### Removed
|
|
* GODT-519 Unused AUTH scope parsing methods.
|
|
|
|
### Fixed
|
|
* GODT-698 Use correct package type for signed PGP/Inline messages.
|
|
* Generic bug report window title.
|
|
* Fix missing check for unencrypted recipients during sending.
|
|
|
|
|
|
## [IE 1.0.x] Congo (v1.0.0 live 2020-09-08)
|
|
|
|
### Added
|
|
* GODT-633 Persistent anonymous API cookies for better load balancing and abuse detection.
|
|
* GODT-461 Add support for `\Deleted` flag.
|
|
|
|
### Changed
|
|
* GODT-462 Pausing event loop while FETCHing to prevent EXPUNGE
|
|
* Wait for unilateral response to be delivered
|
|
* GODT-409 Set flags have to replace all flags.
|
|
* GODT-531 Better way to add trusted certificate in macOS.
|
|
* Bumped golangci-lint to v1.29.0
|
|
* GODT-549 Check log file size more often to prevent huge log files.
|
|
* Bumped various dependencies:
|
|
* andybalholm/cascadia v1.1.0 -> v1.2.0
|
|
* emersion/go-imap-specialuse 20161227184202-ba031ced6a62 -> 20200722111535-598ff00e4075
|
|
* emersion/go-sasl 20191210011802-430746ea8b9b -> 20200509203442-7bfe0ed36a21
|
|
* github.com/go-resty/resty/v2 v2.2.0 -> v2.3.0
|
|
* github.com/golang/mock v1.4.3 -> v1.4.4
|
|
* github.com/google/go-cmp v0.4.0 -> v0.5.1
|
|
* github.com/hashicorp/go-multierror v1.0.0 -> v1.1.0
|
|
* github.com/jaytaylor/html2text 20200220170450-61d9dc4d7195 -> 20200412013138-3577fbdbcff7
|
|
* github.com/jhillyerd/enmime v0.8.0 -> v0.8.1
|
|
* github.com/keybase/go-keychain 20200218013740-86d4642e4ce2 -> 20200502122510-cda31fe0c86d
|
|
* github.com/logrusorgru/aurora 20200102142835-e9ef32dff381 -> v2.0.3+incompatible
|
|
* github.com/miekg/dns v1.1.29 -> v1.1.30
|
|
* github.com/nsf/jsondiff 20190712045011-8443391ee9b6 -> 20200515183724-f29ed568f4ce
|
|
* github.com/sirupsen/logrus v1.4.2 -> v1.6.0
|
|
* github.com/stretchr/testify v1.5.1 -> v1.6.1
|
|
* github.com/therecipe/qt 20200126204426-5074eb6d8c41 -> 20200701200531-7f61353ee73e
|
|
* github.com/urfave/cli v1.22.3 -> v1.22.4
|
|
* golang.org/x/net 20200301022130-244492dfa37a -> 20200707034311-ab3426394381
|
|
* golang.org/x/text v0.3.2 -> v0.3.3
|
|
* Set first-start to false in bridge, not in frontend.
|
|
* GODT-400 Refactor sendingInfo.
|
|
* GODT-513 Update routes to API v4.
|
|
* GODT-551 Do not ignore errors during message flagging.
|
|
* GODT-380 Adding IE GUI to Bridge repo and building
|
|
* BR: extend functionality of PopupDialog
|
|
* BR: makefile APP_VERSION instead of BRIDGE_VERSION
|
|
* BR: use common logs function for Qt
|
|
* BR: change `go.progressDescription` to `string`
|
|
* IE: Rounded button has fa-icon
|
|
* IE: `Upgrade` → `Update`
|
|
* IE: Moving `AccountModel` to `qt-common`
|
|
* IE: Added `ReportBug` to `internal/importexport`
|
|
* IE: Added event watch in GUI
|
|
* IE: Removed `onLoginFinished`
|
|
* Structure for transfer rules in QML
|
|
* GODT-213 Convert panics from message parser to error.
|
|
* GODT-585 Do not allow deleting messages from All Mail.
|
|
|
|
### Fixed
|
|
* GODT-655 Fix date picker with automatic Windows DST
|
|
* GODT-454 Fix send on closed channel when receiving unencrypted send confirmation from GUI.
|
|
* GODT-597 Duplicate sending when draft creation takes too long
|
|
* GODT-634 Hover on links in popups.
|
|
|
|
|
|
|
|
## [v1.3.x] Emma (v1.3.2 beta 2020-08-04, v1.3.3 beta 2020-08-06, v1.3.3 live 2020-08-12)
|
|
|
|
### Added
|
|
* GODT-554 Detect and notify about "bad certificate" IMAP TLS error.
|
|
* IMAP mailbox info update when new mailbox is created.
|
|
* GODT-72 Use ISO-8859-1 encoding if charset is not specified and it isn't UTF-8.
|
|
|
|
### Changed
|
|
* GODT-360 Detect charset embedded in html/xml.
|
|
* GODT-354 Do not label/unlabel messsages from `All Mail` folder.
|
|
* GODT-388 Support for both bridge and import/export credentials by package users.
|
|
* GODT-387 Store factory to make store optional.
|
|
* GODT-386 Renamed bridge to general users and keep bridge only for bridge stuff.
|
|
* GODT-312 Validate recipient emails in send before asking for their public keys.
|
|
* GODT-368 Bump docker-credential-helpers version.
|
|
* GODT-394 Don't check SMTP message send time in integration tests.
|
|
* GODT-280 Migrate to gopenpgp v2.
|
|
* `Unlock()` call on pmapi-client unlocks both User keys and Address keys.
|
|
* Salt is available via `AuthSalt()` method.
|
|
* GODT-308 Better user error message when request is canceled.
|
|
* GODT-162 User Agent does not contain bridge version, only client in format `client name/client version (os)`.
|
|
* GODT-258 Update go-imap to v1.
|
|
* Fix UNSEEN to return sequence number of first unseen message and not count of unseen messages.
|
|
* INBOX name is never quoted.
|
|
* GODT-204 `ClientManager`.
|
|
* `Client` is now an interface; `client` is the concrete type.
|
|
* `Client`s are only created by `ClientManager`.
|
|
* Only one `Client` per userID exists at any given time; clients are reused.
|
|
* Tokens are managed by `ClientManager` (`TokenManager` is removed).
|
|
* `expiresAt` is no longer part of `Client`; token expiry and refreshing is handled by `ClientManager`.
|
|
* Auths generated by clients during Auth/AuthRefresh are handled by `ClientManager` (which forwards them to `Bridge`).
|
|
* `ClientManager` is the "one source of truth" for the host URL for all `Client`s.
|
|
* Alternative Routing is enabled/disabled by `ClientManager`.
|
|
* Logging out of `Clients` is handled/retried asynchronously by `ClientManager`.
|
|
* GODT-265 Alternative Routing v2 (more resiliant to short term connection drops).
|
|
* GODT-310 Alternative parsing of `References` header (old parsing probably malformed message IDs).
|
|
* GODT-320 Only report the same TLS issue once every 24 hours.
|
|
* GODT-468 Bump go-imap version to get fix for NIL client delimiter.
|
|
* GODT-465 Bump go-imap version to get fix for SELECT function.
|
|
* GODT-456 Bump bbolt version from 1.3.3 to 1.3.5 to get fixes for unsafe operations.
|
|
|
|
### Removed
|
|
* Dead code from `pkg/message`.
|
|
|
|
### Fixed
|
|
* GODT-356 Fix crash when removing account while mail client is fetching messages (regression from GODT-204).
|
|
* GODT-358 Bad timeouts with Alternative Routing.
|
|
* GODT-363 Drafts are not deleted when already created on webapp.
|
|
* GODT-390 Don't logout user if AuthRefresh fails because internet was off.
|
|
* GODT-341 Fixed flaky unittest for Store synchronization cooldown.
|
|
* Crash when failing to match necessary html element.
|
|
* Crash in message.combineParts when copying nil slice.
|
|
* Handle double charset better by using local ParseMediaType instead of mime.ParseMediaType.
|
|
* Don't remove log dir.
|
|
* GODT-422 Fix element not found (avoid listing credentials, prefer getting).
|
|
* GODT-404 Don't keep connections to proxy servers alive if user disables DoH.
|
|
* Ensure DoH is used at startup to load users for the initial auth.
|
|
* Issue causing deadlock when reloading users keys due to double-locking of a mutex.
|
|
* Correctly handle failure to unlock single key.
|
|
* GODT-479 Fix flaky integration tests.
|
|
* GODT-484 Fix infinite loop when decoding invalid 2231 charset
|
|
* GODT-267 Correctly detect if a message is a draft even if does not have DraftLabel.
|
|
* GODT-308 Reduce minimum read speed threshold to avoid issues with flaky internet.
|
|
* GODT-321 Changing address ordering would cause all messages to disappear in combined mode.
|
|
* GODT-129 Fix custom message PGP by using template.
|
|
* GODT-280 Don't assume contact keys are stored armored.
|
|
* GODT-427 Fix race condition in auth refresh that could cause user to be logged out.
|
|
|
|
|
|
## [v1.2.8] Donghai-fix-append (beta 2020-06-XXX)
|
|
|
|
### Changed
|
|
* GODT-396 reduce number of EXISTS calls.
|
|
* GODT-143 Allow appending to Sent folder when sender matches account address.
|
|
|
|
### Fixed
|
|
* GODT-502 Fixed crash when unable to parse a message header.
|
|
|
|
## [v1.2.7] Donghai-fix-sync - (beta 2020-05-07 live 2020-04-20)
|
|
|
|
### Added
|
|
* IMAP extension MOVE with UIDPLUS support.
|
|
* IMAP extension Unselect.
|
|
* More logs about event loop activity.
|
|
|
|
### Changed
|
|
* GODT-313 Reduce number of synchronizations.
|
|
* Do not trigger sync by counts.
|
|
* Cooldown timer for sync retries.
|
|
* Poll interval randomization.
|
|
* GODT-225 Do not send an EXISTS reposnse after EXPUNGE or when nothing changed (fixes rebuild of mailboxes in Outlook for Mac).
|
|
* GODT-165 Optimization of RebuildMailboxes.
|
|
* GODT-282 Completely delete old draft instead moving to trash when user updates draft.
|
|
* Adding DSN Sentry as build time parameter.
|
|
* GODT-124 Bump go-appdir from v1.0.0 to v1.1.0.
|
|
* CSB-72 Skip processing message update event if http statuscode is 422.
|
|
|
|
### Fixed
|
|
* Use correct binary name when finding location of addcert.scpt.
|
|
|
|
|
|
## [v1.2.6] Donghai - beta (2020-03-31)
|
|
|
|
### Added
|
|
* GODT-145 Support drafts.
|
|
* GODT-211,GODT-231 fix updating subject and other fields.
|
|
* GODT-220 Fix deleting drafts.
|
|
* GODT-224 Fix creating draft from outlook without sender.
|
|
* GODT-230,GODT-232 fix constructing sender address for drafts.
|
|
* Sync already synced draft to newly created drafts mailbox.
|
|
* Add Subject to EventMessageUpdated in pmapi.
|
|
* GODT-37 Add body and TLS handshake timeouts.
|
|
* GODT-90 Implement DOH (DNS over HTTPS) proxy.
|
|
* Noninteractive mode.
|
|
|
|
|
|
### Changed
|
|
* Bump version go-1.14.
|
|
* Bump dependencies:
|
|
| Repo | Old Version | New Version |
|
|
| github.com/0xAX/notificator | v0.0.0-20161214074916-82e921414e03 | v0.0.0-20191016112426-3962a5ea8da1 |
|
|
| github.com/ProtonMail/go-autostart | v0.0.0-20171017232241-85d98b097aae | v0.0.0-20181114175602-c5272053443a |
|
|
| github.com/abiosoft/ishell | v0.0.0-20171224170712-50251d04cb42 | v2.0.0+incompatible |
|
|
| github.com/emersion/go-sasl | v0.0.0-20161116183048-7e096a0a6197 | v0.0.0-20191210011802-430746ea8b9b |
|
|
| github.com/fatih/color | v1.7.0 | v1.9.0 |
|
|
| github.com/golang/mock | v1.4.2 | v1.4.3 |
|
|
| github.com/google/go-cmp | v0.3.1 | v0.4.0 |
|
|
| github.com/jaytaylor/html2text | v0.0.0-20190408195923-01ec452cbe43 | v0.0.0-20200220170450-61d9dc4d7195 |
|
|
| github.com/jhillyerd/enmime | v0.7.0 | v0.8.0 |
|
|
| github.com/logrusorgru/aurora | v0.0.0-20190803045625-94edacc10f9b | v0.0.0-20200102142835-e9ef32dff381 |
|
|
| github.com/skratchdot/open-golang | v0.0.0-20160302144031-75fb7ed4208c | v0.0.0-20200116055534-eef842397966 |
|
|
| github.com/stretchr/testify | v1.4.0 | v1.5.1 |
|
|
| github.com/therecipe/qt | v0.0.0-20191022233421-590f404884c9 | v0.0.0-20200126204426-5074eb6d8c41 |
|
|
| github.com/urfave/cli | v1.19.1 | v1.22.3 |
|
|
|
|
* Pkg/updates: closing File reader to avoid too many opened files during update.
|
|
* Created monorepo with bridge, pmapi, bridge utils, mime and srp.
|
|
* One lint config for all packages and lint fixes in the code.
|
|
* Fix tests for bridge utils to work on MacOS.
|
|
* All tests use testify framework.
|
|
* Processed TODOs or created issues.
|
|
* Cleanup up comments.
|
|
* GODT-169 Reduce the number of keyring unlocks.
|
|
* CSB-40 return error instead of panic in credential store.
|
|
* #577 Avoid multiple send.
|
|
* GODT-39 Sync is paging per message ID with ability to continue after interrupted sync.
|
|
* Panic handler used in store for event loop and sync.
|
|
* GODT-109 Merge only 50 events into one.
|
|
* Use v1.0.16 of pmapi.
|
|
* GODT-236 Requests to /messages/{read,unread,delete,undelete,label,unlabel} are paged with up to 100 message IDs.
|
|
|
|
### Fixed
|
|
* GODT-227 Mitigate potential crash due to using a logged out pmapi client (proper fix to come in emma release).
|
|
* UserIDs were not checked when importing to Sent folder (affects copying from account1/sent to account2/sent).
|
|
|
|
|
|
## [v1.2.5] Charles - live (2020-03-11) beta (from 2020-02-10)
|
|
|
|
### Hotfix
|
|
* CSB-40 panic in credential store.
|
|
* Keyring unlocking locker.
|
|
* No panic on failed html parse.
|
|
* Too many open files.
|
|
|
|
### Added
|
|
* GODT-112 Migration of preferences from c10 to c11.
|
|
* GODT-100 Test for external internal ID when appending to Sent folder to return APPEND UID otherwise skip with no error.
|
|
* GODT-43 Connection troubleshooting modal.
|
|
* GODT-55 Uid support in fake api.
|
|
* GODT-88 Increase uid validity on switch mode.
|
|
* #951 Implementation of IMAP extension UIDPLUS.
|
|
* #964 New store package, see Changed section.
|
|
|
|
### Removed
|
|
* MOVE IMAP extension due to missing interaction with UIDPLUS.
|
|
|
|
### Changed
|
|
* GODT-88 Run mbox sync in parallel when switch password mode (re-init not user).
|
|
* GODT-95 Do not throw error when trying to create new mailbox in IMAP root.
|
|
* GODT-75 Do not fail on unlabel inside delete.
|
|
* #1095 always delete IMAP USER including wrong pasword.
|
|
* Unique pmapi client userID (including #1098).
|
|
* Using go.enmime@v0.6.1 snapshot.
|
|
* Better detection of non-auth-error.
|
|
* Reset `hasAuthChannel` during logout for proper login functionality (set up auth channel and unlock keys).
|
|
* Allow `APPEND` messages without parsable email address in sender field.
|
|
* #1060 avoid `Append` after internal message ID was found and message was copyed to mailbox using `MessageLabel`.
|
|
* #1049 Basic usage of store in SMTP package to poll event loop during sending message.
|
|
* #1050 pollNow waits for events to be processed.
|
|
* #1047 Fix fetch of empty mailbox.
|
|
* #1046 Fix removing mailbox counts.
|
|
* #1048 For any message build error return custom message.
|
|
* When event loop exits with error it logs out user from Bridge.
|
|
* #953 #984 First label messages before unlabeling when moving messages.
|
|
* Fixes after refactor:
|
|
* Slight memory optimization.
|
|
* #1043 do not stuck in loop for updating message which does not exist anywhere anymore.
|
|
* #1034 fix UID dynamic range for empty list.
|
|
* Fix of sequence number in IMAP IDLE expunge during deleting messages.
|
|
* #1030 #1028 Fix some crashes and bad auths.
|
|
* #953 #984 label messages first during moving them.
|
|
* #964 (and #769,#899,#918,#930,#931,#949) refactor of IMAP.
|
|
* Fix of sequence number in IMAP IDLE expunge during deleting messages.
|
|
* Fix not-returning empty result for UID dynamic range as said in RFC.
|
|
* Separated IMAP to store and IMAP.
|
|
* Store is responsible for everything about db and calls to pmapi, including event loop, sync, address mode.
|
|
* IMAP is responsible only for IMAP interfaces.
|
|
* Event loop is only one per ProtonMail account (instead of one per alias)
|
|
* It also means only one database per account (instead of one per address)
|
|
* Changing address mode is not destroying database, only buckets with IDs mapping (keeping metadata for account)
|
|
* Before first sync we set event ID so we will not miss changes happening during sync.
|
|
* Thanks to previous point we are not starting new sync when we finish first one because of unprocessed events.
|
|
* Sync is not blocking event loop (user can get new messages even during sync)
|
|
* Sync is not blocking reading operations (user can list mailboxes even before first sync is done)
|
|
* Sync is not blocking writing operations such as mark messages read/unread and so on.
|
|
* Most operations have to be passed to API and only event loop is writing them to the database.
|
|
* Avoid relying on counts API endpoint; use event counts as much as possible.
|
|
* Separate function for storing message content type and header into database.
|
|
* Sequence number optimised for last item in mailbox.
|
|
* Allow sending IMAP idle update to timeout to avoid blocking bridge.
|
|
* Synchronisation will create a label if not yet present.
|
|
* Labels and Folders (including system folders) are stored in DB together with their counts for offline read-out.
|
|
* AddressIDs for all user addresses are stored in DB.
|
|
* IMAP updates channel is set when an IMAP client connects (and IMAP updates are dropped until then)
|
|
* DB keeps track of address mode (split/combined)
|
|
* Event loop starts as soon as user is initialised (i.e. logged in), not just when imap is connected.
|
|
* Use pmapi v1.0.13.
|
|
* Logout user if initialisation fails.
|
|
* Send UserRefreshEvent on user login and logout.
|
|
* Use godog v0.8.0 under new name 'cucumber' (instead of DATA-DOG).
|
|
|
|
### Fixed
|
|
* #1057 Logging in to an already logged in user would display unrelated error "invalid mailbox password".
|
|
* #1056 Changing mailbox password sometimes didn't log out user.
|
|
* #1066 Split address mode can not work when credentials store is cleared.
|
|
* #1071 Bridge can think it is in combined mode when actually it's in split mode.
|
|
* Missing `enmime` dependency.
|
|
* Issue where a failed sync was not attempted again.
|
|
* Removing an address would crash bridge.
|
|
* #1087 Accounts with capital letters could not be added.
|
|
* #1087 Inactive addresses were not filtered out of the store.
|
|
* #1087 Unlock with correct key if message is sent to alias and not primary (aka original) address.
|
|
* #1109 Receiving an event referencing an address that isn't present could crash bridge.
|
|
* Avoid concurrent map writes in imap backend.
|
|
* GODT-103 User keys were not unlocked later if they were not unlocked during startup.
|
|
|
|
|
|
## [v1.2.4] Brooklyn beta (2019-12-16)
|
|
|
|
### Added
|
|
* #976: fix slow authentication.
|
|
* Server security setting in info (GUI, CLI).
|
|
* Default SSL for SMTP based on Mac version.
|
|
* GUI/CLI items to controls SMTP security setup.
|
|
* Set new security and restart.
|
|
|
|
### Changed
|
|
* #961 Timeouts for go-pmapi client with http.Transport.
|
|
* Event poll with no change will hang forever. Using separate goroutine and timeout instead of proper fix (will be in refactor).
|
|
* Fixed an issue where entering an in-use port multiple times via the CLI would make bridge use it.
|
|
* Update therecipe/qt and Qt to 5.13.
|
|
|
|
## [v1.2.3] Akashi - live (2019-11-05) beta (2019-10-22)
|
|
|
|
### Added
|
|
* #963 report first-start metric with bridge version.
|
|
* #941 report new-login metric, report daily heartbeat.
|
|
* #921 remote key lookup via Web Key Directory (WKD).
|
|
* #919 TLS issue notification in CLI.
|
|
|
|
### Changed
|
|
* #769 #930 #931 #949 Syncing messages and fetching message and attachments in parallel with five workers.
|
|
* #956 #741 update keychain.
|
|
* Re-download and re-unlock user keyring when addresses are changed.
|
|
* #944 Ugrade go-pmapi dependency to v1.0.4 to support phase one of the key migration.
|
|
* #683 Password rehides each time password entry screen is shown.
|
|
* Import-Export#219 fix double parameter definition.
|
|
* Upgrade go-pm-bridge-utils dependency to v1.0.1.
|
|
* #935 Fix wrong download link for linux updates.
|
|
* #952 fix error when sending mail with only BCC recipients (use empty slice instead of nil slice).
|
|
* Refactor `generateSendingInfo` to simplify logic; add test for this method.
|
|
* Generate code-coverage report with `make code-coverage`.
|
|
* #942 fix focus window with logout message when trying to connect from the client.
|
|
* Do not use panic for second instance.
|
|
* #928 do not hide 'no keychain' dialog when upgrade is needed.
|
|
* Sending `NO` for errors while `FETCH`.
|
|
* #899 Upgrade from Bolt to BBolt.
|
|
* Upgrade to gopenpgp.
|
|
* Bridge utils in own repository.
|
|
* Code made compatible with name changes in go-pmapi.
|
|
|
|
|
|
## [v1.2.2] - beta and live 2019-09-06
|
|
|
|
### Changed
|
|
* User compare case insensitive.
|
|
|
|
## [v1.2.1] - beta and live 2019-09-05
|
|
|
|
### Changed
|
|
* #924 fix start of bridge without internet connection.
|
|
|
|
## [v1.2.0] - beta 2019-08-22
|
|
|
|
### Added
|
|
* #903 added http.Client timeout to not hang out forever.
|
|
* Closing body after checking internet connection.
|
|
* Pedantic lint for bridgeUtils.
|
|
* Selected events are buffered and emited again when frontend loop is ready.
|
|
* #890 implemented 2FA endpoint (auth split).
|
|
* #888 TLS Cert.
|
|
* Error bar and modal with explanation in GUI.
|
|
* Signal to show error.
|
|
* Add pinning to bridge (only for live API builds).
|
|
* #887 #883:
|
|
* Wait before clearing data.
|
|
* Configer which provides pmapi.ClientConfig and app directories.
|
|
* #861 restart after clear data.
|
|
* Panic handler for all goroutines.
|
|
* CD for linux.
|
|
* #798.
|
|
* Check counts after sync.
|
|
* Update counts in all mailboxes after sync.
|
|
* `db.Mailbox.RemoveMissing`, `db.Mailbox.PutMany`.
|
|
* `util.NotImplemented`.
|
|
* Tests for sync.
|
|
* Bridge core tests:
|
|
* Introduced interfaces: `pmapiClienterFactory`, `pmapiClienter`, `credentialStorer`.
|
|
* Automatic mock generation for `listener.Listener`, `bridge.pmapiClienter`, `bridge.credentialStorer`.
|
|
* #818 REFACTOR: see doc/code-structure.md.
|
|
* Tests for bridge core & utils.
|
|
* Update user before `GetQuota`.
|
|
* Http bridge API.
|
|
* Bridge core tests:
|
|
* Introduced interfaces: `pmapiClienterFactory`, `pmapiClienter`, `credentialStorer`.
|
|
* Automatic mock generation for `listener.Listener`, `bridge.pmapiClienter`, `bridge.credentialStorer`.
|
|
* #774 start initialization with sync immediately after login.
|
|
|
|
### Removed
|
|
* Using `PutMeta` for DB to not rewrite header and size.
|
|
* `Timeout` for connection (keep only `DialTimeout`).
|
|
* #798 `imapMailbox.sync`.
|
|
* #818 REFACTOR: see doc/code-structure.md.
|
|
* Bridge global functions `GetAuth`, `GetAuthInfo`, `GetUserSettings` (using member functions of `pmapi.Client` instead).
|
|
* `backend.setCache`: not used.
|
|
* IMAP extension for `XSTOP` and `XFOCUS`.
|
|
* Keychain `Disconnected` is not used, deleting directly (not using hide).
|
|
* `apiIdFrom(uid bool, id uint32)`, `apiIdRangeFromSeq(uid bool, seq imap.Seq)`: not used.
|
|
* `server/dial.go` not used.
|
|
* Util `CustomMessage`, `StartTicker` not used.
|
|
|
|
### Changed
|
|
* Check before first even sync.
|
|
* Do sync in parallel from events.
|
|
* Closing event loop by CloseConnectionEvent.
|
|
* Allow client to log in with address only.
|
|
* Fix IMAP users lock.
|
|
* #646 download headers when needed for first time.
|
|
* #895 fix of parsing address list.
|
|
* #844 do not spam GUI with logout events & sleep after bad login attempt from the client.
|
|
* #887 #883 #898 #902 logout account from API and all IMAP connections before clearing cache for account.
|
|
* #882 unassign PMAPI client after logout and force to run garbage collector.
|
|
* #880, #884, #885, #886 fix of informing user about outgoing non-encrypted e-mail.
|
|
* #838 `Sirupsen` -> `sirupsen`.
|
|
* #893 save panic report file everytime.
|
|
* #880 fix of informing user about outgoing non-encrypted e-mail.
|
|
* Fix aliases in split mode.
|
|
* Fix decrypted data in log notification.
|
|
* #471 fix of using font awesome in regular text.
|
|
* `SearchMessage` all IDs from DB not depends on `totalOnAPI`.
|
|
* #798 populate efficiently.
|
|
* Improved `imap.db.mailbox.Counts()`.
|
|
* `mbox.total,unread` -> `mbox.totalOnAPI,unreadOnAPI`.
|
|
* Always show DB status (even for `IDLE` updates).
|
|
* `imapUser.sync` now takes `labelID` as parameter.
|
|
* Split population by 1000 messages.
|
|
* `db.User.put(msgs,keepCache)` is used in sync to not overwrite `msg.Size` and `msg.Header` in DB.
|
|
* Separate sync function from `backend.labelMailbox` class.
|
|
* `UidNext` uses bolt sequence value instead of cursor position.
|
|
* `util.tests.go` moved to `bridgeUtils`.
|
|
* #471 fix of using font awesome in regular text.
|
|
* #818 REFACTOR: see doc/code-structure.md.
|
|
* No global states/variables anymore.
|
|
* Code separated from one big package into smaller packages (bridge core, utils, IMAP, SMTP, API).
|
|
* Bridge core completely refactored - core should be API over credentials store and PMAPI.
|
|
* Configuration and preferences are on one place; passed as dependency to all packages.
|
|
* Bridge utils separated from the rest of the bridge code to be used in Import/Export.
|
|
* Many channels converted into one listener which can register listeners and emit events to them.
|
|
* Each package is ready to be used with interfaces for possibility of mocking.
|
|
* Removed IMAP extension XFOCUS, used bridge local API instead.
|
|
* Removed IMAP extension XSTOP.
|
|
* Sentry is not used in dev environment.
|
|
* Logs are not cleared after start, clearing is triggered by `watchLogFileSize()` instead.
|
|
* Log path changed one folder level up i.e. from `.../protonmail/bridge/c10` to `.../protonmail/bridge`.
|
|
* Always cleared malformed keychain records.
|
|
* Set credentials version on each `Put`.
|
|
* `util.WriteHeader` -> `imap.writeHeader`.
|
|
* Save `message.ExternalID` for every client not just AppleMail.
|
|
* Server errors reported to frontend by common event listener.
|
|
* Handle logout in event loop.
|
|
|
|
|
|
## [v1.1.6] - 2019-07-09 (beta 2019-07-01)
|
|
|
|
### Added
|
|
* #841 assume text/plain during sending e-mails when missing content type.
|
|
* #805 list the new package links in upgrade dialog for linux.
|
|
* #802 report the list errors to sentry.
|
|
* #508 content related header fields for mail are saved in DB inside `msg.Header`.
|
|
* #508 `doNotCacheError` to decide whether to rebuild message.
|
|
* CI with lint check.
|
|
* Build flag `nogui`.
|
|
* Dummy html interface.
|
|
|
|
### Removed
|
|
* #508 content type rewrite on `GetHeader`.
|
|
* #508 content type on custom message.
|
|
|
|
### Changed
|
|
* #854 avoid `nil` header and bodystructure on fail (as regression of #508).
|
|
* Sanitize version in json file.
|
|
* #850 keep correct main and body headers for import (as regression of #508).
|
|
* #841 choose parent ID only when there is exactly one message with external ID.
|
|
* #811 #proton/backend-communication#11 go-pmapi!57 uid fixed.
|
|
* Update Qt 5.11.3 to 5.12.0.
|
|
* Using gomodules instead of glide.
|
|
* #508 use MIMEType and attachments to choose correct `Content-Type`.
|
|
* #508 custom message replaces body before header is created.
|
|
* #508 main header has `Content-Type` only after message was fully fetched.
|
|
* #770 ignore empty key from data card and support multiple keys for contacts.
|
|
* Build tags for simpler build of beta and QA builds.
|
|
* Lint corrections.
|
|
|
|
|
|
## [v1.1.5] - 2019-05-23 (beta 2019-05-23, 2019-05-16)
|
|
|
|
### Changed
|
|
* Fix custom message format.
|
|
* #802 acumulated long lines while parsing body structure.
|
|
* Process `AddressEvent` before `MessageEvent`.
|
|
* #791 updated crypto: fix wrong signature format.
|
|
* #793 fix returning size.
|
|
* #706 improved internet connection checking.
|
|
* #771 updated raven, crypto, pmapi.
|
|
* #792 use `INFO` as basic log level.
|
|
* Only one crash from second instance.
|
|
* During event `MessageID` in log as field.
|
|
|
|
## [v1.1.4 live] - 2019-04-10 (beta 2019-04-05, 2019-03-27)
|
|
|
|
### Added
|
|
* Address with port to IMAP debug.
|
|
* #750 `backend/events.Manager.LastEvent`.
|
|
* #750 `backend.user.areAllEventsProcessed`.
|
|
* #750 Wait with message events until all related mailboxes are synchronized.
|
|
* Restart limit to 10.
|
|
* Release string to raven.
|
|
|
|
### Changed
|
|
* #748 when charset missing assume utf8 and check the validity.
|
|
* #750 before sync check that events are uptodate, if not poll events instead of sync.
|
|
* Use pmapi with support of decrypted access token.
|
|
* #750 Status is using DB status instead of API.
|
|
* Format panic error as string instead of struct dump.
|
|
* Validity of local certificate to increased to 20 years.
|
|
|
|
### Removed
|
|
* #750 Synchronization after 450 messages.
|
|
|
|
## [v1.1.3] - 2019-03-04
|
|
|
|
### Added
|
|
* Sentry crash reporting in main.
|
|
* Program arguments to turn of CPU and memory profiling.
|
|
* Full version of program visible on release notes.
|
|
|
|
### Changed
|
|
* #720 only one concurent DB sync.
|
|
* #720 sync every 3 pages.
|
|
* #512 extending list of charsets go-pm-mime!4.
|
|
|
|
## [v1.1.2] - beta only 2019-02-21
|
|
|
|
### Changed
|
|
* #512 fail on unknown charset.
|
|
* #729 #733 visitor for MIME parsing.
|
|
|
|
## [v1.1.1] - 2019-02-11
|
|
### Added
|
|
* #671 include `name` param in attachment `Content-Type` (in addition to `Content-Disposition` param `filename`).
|
|
* #671 do not include content headers for section requests e.g. `BODY.PEEK[2]`.
|
|
* Version info checks for newer version (do not show dialog when older is online).
|
|
* #592 new header `X-Pm-ConversationID-Id` and also added to `References`.
|
|
* #666 invoke `panic` while adding account `jakubqa+crash@protonmail.com`.
|
|
* #592 new header fields `X-Pm-Date` storing m.Time and `X-Pm-External-Id` storing m.ExternalID.
|
|
* #484 search criteria `Unkeyword` support.
|
|
|
|
### Changed
|
|
* Fix srp modulus issue with new `ProtonMail/crypto`.
|
|
* Generate version files from main file.
|
|
* Be able to set update set on build.
|
|
* #597 check on start that certificat will be still valid after one month and generate new cert if not.
|
|
* #597 extended certificate validity to 2 years.
|
|
* Copyright 2019.
|
|
* Exclude `protontech` repos from credits.
|
|
* Refactor of `go-pmapi`, `go-pm-crypto`, `go-pm-mime` and `go-srp`.
|
|
* Re-signed pubkey key.
|
|
* Version, revision and build time is set in main.
|
|
* #666 use `bytes.Reader` instead of `bytes.Buffer`.
|
|
* #666 clear unused buffers in body structure map.
|
|
* No API request for fetch `body[header]`.
|
|
* Added crash file counter to pass log tests.
|
|
* #484 search fully relies on DB information (no need to reach API).
|
|
* #592 `parsingHeader` allows negative time (before 1.1.1970).
|
|
* #592 add original header first and then rewrite.
|
|
* #592 `Message-Id` rewritten only if not present.
|
|
* #592 rename `X-Internal-Id` to `X-Pm-Internal-Id`.
|
|
* #592 internal references are added only when not present already.
|
|
* #592 field `Date` changed to m.Time only when wrong format or missing `Date`.
|
|
* #645 pmapi#26 `Message.Flags` instead of `IsEncrypted`, `Type`, `IsReplied`, `IsRepliedAll`, `IsForwarded`.
|
|
* DB: do not allow to put Body or Attachements to db.
|
|
* #574 SMTP: can now send more than one email.
|
|
* #671 Verbosity levels: `debug` (only bridge), `debug-client` (bridge and client communication), `debug-server` (bridge, whole SMTP/IMAP communication).
|
|
* #644 Return rfc.size 0 or correct size of fetched body (stored in DB).
|
|
* #671 API requests URI in debug logs.
|
|
* #625 Fix search results for Flagged and Unflagged.
|
|
* Draft optimization fetch header.
|
|
* #656 Fix sending of calendar invite on Outlook on MacOS.
|
|
* #46 Allowed to run multiple instances, once per user.
|
|
|
|
### Removed
|
|
* Makefile clean up old deploy code.
|
|
|
|
### Release notes
|
|
* Support multiple Bridge instances running in parallel (one per user).
|
|
|
|
### Fixed bugs
|
|
* SMTP stays authenticated after sent message.
|
|
* Reduce memory, processor and number of API calls.
|
|
|
|
## [v1.1.0] - 2018-10-22
|
|
|
|
### Removed
|
|
* `go-pmapi.Config.ClientSecret`.
|
|
* `go-pmapi.PublicKey.Send`.
|
|
* Program argument `main`.
|
|
* `backend.getMIMEMessageBodySection` (use `message.BodySection`).
|
|
* `backend.getSize` (use `message.BodySection`).
|
|
|
|
### Added
|
|
* IMAP server: more info when write/send/flush error occurs #648.
|
|
* Linux package paths inside version-json.
|
|
* Draggable popup windows for outgoing non-encrypted message #519.
|
|
* Pmapi able to receive plain accessToken go-pmapi#23 #604.
|
|
* DB debug switch.
|
|
* Clearing message cache when db is cleared.
|
|
* Debug string to tests.
|
|
* Mime tree section parsing and test.
|
|
* Start ticker.
|
|
* Dump DB status.
|
|
* `backend.ApplicationOutdated()` mechanism: once triggered logout all email clients. On try to login say _application outdated_.
|
|
* Force upgrade event (send from event loop).
|
|
* New systray with error symbol (used in mac for force update).
|
|
* Test for upgrade.
|
|
* GUI for upgrade.
|
|
* Add native upgrade to updates.
|
|
* Dial timeout client.
|
|
* Custom `copyRecursively` function.
|
|
* When there is fresh version on start show release notes.
|
|
* Keychain helper using GNU pass.
|
|
* Error message on missing keychain.
|
|
|
|
### Changed
|
|
* Imap `SEARCH` loops until all messages are listed #581.
|
|
* Cached message timestamp is renewed on load.
|
|
* Message cache ID is userID+messageID.
|
|
* Private cache and added bodystructure.
|
|
* Remove addresses from `m.ToList` that were not requested in SMTP `TO`.
|
|
* IsFirstStart setup before loading Gui. Set it to false right after (don't wait till quit).
|
|
* Check `eventMessage` not nil before address check.
|
|
* `util.EventChannel` refactor: `SendEvent`->`Send` and new `SendEvent(EventCode)`.
|
|
* Information bar keeps on once app is outdated.
|
|
* Error dialog for upgrade has option for force upgrade.
|
|
* IsFirstStart setup before loading Gui. Set false right after (don't wait till quit).
|
|
* Pmapi: access token decrypted only if needed.
|
|
* Move `updates` from `frontend` to `util`.
|
|
* Move `CheckInternetConnection()` to `util`.
|
|
* Makefile clean up and change scripts for building.
|
|
* Reorganized updates.
|
|
* Start with new versioning.
|
|
|
|
1.1.0
|
|
| | `--- bug fix number (internal, irregular, beta relases)
|
|
| `----- minor version (features, release once per month, live release, milestones)
|
|
`------- major version (big changes, once per year, breaking changes, api force upgrade)
|
|
|
|
* Upgrade restart option in qt-frontend.
|
|
* GOOS save functions.
|
|
* Windows update procedure.
|
|
* Darwin update procedure.
|
|
* `zip` replaced by `tgz`.
|
|
* Using move instead of write truncated.
|
|
* Linux dependencies (pass and gnome-keychain optional).
|
|
* `Store.helper` -> `Store.secrets`.
|
|
|
|
### Release notes
|
|
* New self-update procedure.
|
|
* Changed restarting mechanism.
|
|
* Support for GNU pass for linux.
|
|
* Various GUI improvements.
|
|
|
|
### Fixed bugs
|
|
* RFC complaint SEARCH and FETCH responses.
|
|
* Additional synchronization of mail database.
|
|
|
|
|
|
## [v1.0.6 silent] - 2018-08-23
|
|
### Added
|
|
* New svg icon in linux package.
|
|
|
|
## [v1.0.6] - 2018-08-09
|
|
|
|
### Added
|
|
* `backend.GetUserSettings()`.
|
|
|
|
### Changed
|
|
* Related to Desktop-Bridge#561.
|
|
* Api flag to build scripts.
|
|
* `BodyKey` and `AttachmentKey` contains `Key` and `Algorithm`.
|
|
* `event.User.Addresses` -> `event.Addresses`.
|
|
* `user.Addresses` -> `client.Addresses()`.
|
|
* Typos and fixes.
|
|
* Pmapi update.
|
|
* `backend.configClient` -> `backend.authClient`.
|
|
* `auth.Uid` -> `auth.Uid()`.
|
|
* `keyRingForAddress()` -> `Client.KeyRingForAddressID()`.
|
|
* `Message.IsRead` -> `Message.Unread`.
|
|
* `pmapi.User.Unlock()` -> `pmapi.Client.UnlockAddresses()`.
|
|
* `TwoFactor` -> `HasTwoFactor()` and `PasswordMode` -> `HasMailboxPassword()`.
|
|
* Icon to match ImportExport.
|
|
|
|
|
|
### Release notes
|
|
* Removed deprecated API routes.
|
|
|
|
### Fixed bugs
|
|
* Frequent Thunderbird timeout.
|
|
* SMTP requests not case-sensitive.
|
|
|
|
## [v1.0.5] - 2018-07-12
|
|
|
|
### Added
|
|
* UpdateCurrentAgent from lastMailClient.
|
|
* Current OS.
|
|
* Use Qt to set nice OS with version.
|
|
* All `client.Do` errors are interpreted as connection issue.
|
|
* Moved to internal gitlab.
|
|
* Typo `frontend-qml`.
|
|
* Better message for case when server is not reacheable.
|
|
* Setting 1min timeout to IMAP connection.
|
|
|
|
### Changed
|
|
* Password: click2show, click2hide.
|
|
* Notification in bug report window.
|
|
* Less frequent version check.
|
|
* Closing ticker.
|
|
|
|
### Removed
|
|
* Sockets and unused libraries.
|
|
|
|
### Release notes
|
|
* Improved response of IMAP server.
|
|
* Sending requests with client information.
|
|
* Less frequent notification about new version.
|
|
|
|
### Fixed bugs
|
|
* Support of Outlook calendar event format.
|
|
* Too many opened file descriptors issue.
|
|
* Fixed 7bit MIME issue while sending.
|
|
|
|
|
|
## [v1.0.4] - 2018-05-15
|
|
|
|
### Changed
|
|
* Version files available at both download and static.
|
|
* MIME `text/calendar` are parsed as attachment.
|
|
* UserID as identifier in keychain and pmapi token.
|
|
* Keychain format and function refactor.
|
|
* Create crash file on panic with full trace.
|
|
* Clear old data only in main process (no double keychain typing).
|
|
* Create label udpate API route.
|
|
* Selectable text in release notes.
|
|
|
|
### Added
|
|
* Support sending to external PGP recipients.
|
|
* Return error codes: `0: Ok`, `2: Frontend crashed`, `3: Bridge already running`, `4: Uknown argument`, `42: Restart application`.
|
|
|
|
### Release notes
|
|
* 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).
|
|
* Notification that outgoing email will be delivered as non-encrypted.
|
|
* NOTE: Due to a change of the keychain format, you will need to add your account(s) to the Bridge after installing this version.
|
|
|
|
### Bugs fixed
|
|
* Support accounts with same user names.
|
|
* Support sending vCalendar event.
|
|
|
|
## [v1.0.3] - 2018-03-26
|
|
* All from silent updates plus following.
|
|
|
|
### Changed
|
|
* Okay -> "Remind me later".
|
|
* Imported message with `text/html` body was imported as `text/plain`.
|
|
* Reload cache when labeling Seen/Unseen.
|
|
* Merge with Import-Export branch.
|
|
* Inheritable Bug report window.
|
|
* Common functions: WriteHeader (parse PM mail) and CustomMessage (when incorrect keys).
|
|
* Updates refactor.
|
|
* Bug report window.
|
|
* Checkbox and with label (only I/E).
|
|
* Error dialog and Info tooltip (only I/E).
|
|
* Add user modal formating (colors, text).
|
|
* Account view style.
|
|
* Input box style (used in bug report).
|
|
* Input field style (used in add account and change port).
|
|
* Added style variables for I/E.
|
|
* Tab button style.
|
|
* Window bar style and functionality (closing / minimize window).
|
|
|
|
### Release notes
|
|
* Improved responsiveness in the UI.
|
|
|
|
### Fixed bugs
|
|
* Fixed some formatting issues with imports.
|
|
* Fixed port changing via CLI.
|
|
|
|
## Silent update - 2018-03-13
|
|
|
|
### Changed
|
|
* Remove firewall error message.
|
|
|
|
|
|
## [v1.0.2] - 2018-03-12
|
|
* All from silent updates plus following.
|
|
|
|
### Added
|
|
* UTF-7 support.
|
|
* Message when communication between bridge and email client is blocked by firewall (Windows only).
|
|
|
|
### Changed
|
|
* Added gnome-keyring dejavu fonts into linux dependency.
|
|
* Corrected parentID when reply/forward: taken from `protonmail.internalid` reference.
|
|
* Update user object in backend after unlock to apply address changes.
|
|
|
|
### Release notes
|
|
* UTF7 encoding support for older imported emails.
|
|
|
|
### Fixed bugs
|
|
* Fixed issues with conversation threading.
|
|
* Support for multiple "ReplyTo" addresses.
|
|
* Fixed issue where some address updates would not register immediately.
|
|
|
|
|
|
|
|
## [v1.0.1-4 (linux only)] Silent deploy - 2018-02-28
|
|
|
|
### Changed
|
|
* More similar look of window title bar to Windows 10 style.
|
|
* Qt 5.10 Button Controls 2 conflict (`icon`->`iconText`).
|
|
|
|
### Added
|
|
* Linux default font.
|
|
* Multiple reply-to addresses support (also API).
|
|
* Command line interface.
|
|
* Credits are generated automatically from glide.lock.
|
|
* Created script to build linux packages (dep,rpm,PKGBUILD).
|
|
* Correct config folders with env variable `$XDG_CONFIG_HOME`.
|
|
|
|
### Fixed bugs
|
|
* Clearing global cache.
|
|
* Default linux font problems.
|
|
* Support Reply-To multiple addresses.
|
|
|
|
### Release notes
|
|
* Improved visual appearance for win and linux.
|
|
|
|
|
|
|
|
## [v1.0.1] Silent deploy - 2017-12-30
|
|
|
|
### Changed
|
|
* Fixed bug with parsing address list (CC became BCC).
|
|
|
|
|
|
|
|
## [v1.0.1] - 2017-12-20
|
|
|
|
### Added
|
|
* When current log file is more than 10MB open new one, checked every 15min.
|
|
* Keep only last three log files including current one, triggered every start and when switching log files.
|
|
* Translation context.
|
|
* Accessibility objects for button and static text.
|
|
* All objects are accessible including focus scope for modals and messages.
|
|
* Automatically fill the email client in bug report form.
|
|
* Catch corrupted MacOS keychain error and show the link to FAQ.
|
|
* Unlabel message.
|
|
* Update emptying and filtering routes.
|
|
* Parse the address comment as defined in RFC.
|
|
|
|
### Changed
|
|
* Default log level set to Warning.
|
|
* Info logs during adding account and connecting client promoted to warning level.
|
|
* Log only when email client was changed (previously logged on every assign).
|
|
* Force upgrade bubble notification only when requested by API.
|
|
* Don't show warning systray icon when "You have then newest version!" bubble message is showed.
|
|
* Header date format RFC822Z -> RFC1123Z.
|
|
* IMAP ID and QUOTA responses forced to use quoted strings (fixing SparkMail issue).
|
|
* Avoid AddressChanged bubble when no address was changed.
|
|
|
|
### Release notes
|
|
* Reduced log file size and log file history.
|
|
* Accessibility support for MacOS VoiceOver and Windows Narrator.
|
|
* Improved notification system.
|
|
* Supported imports with older address format.
|
|
|
|
|
|
|
|
## [v1.0.0] - 2017-12-06
|
|
|
|
### Added
|
|
* Encoding support of message body, title items, attachment name, for all standard charsets.
|
|
* Force update API message handled as new version event.
|
|
|
|
### Changed
|
|
* Refactor `bridge-qtfronted` -> `frontend`.
|
|
* Only one main file and basic support of CLI (not finished).
|
|
* Common QML package `ProtonUI`, which is used by `BridgeUI` and `ImportExportUI`.
|
|
* ChangedUser signal contain address and event type to distinguish between logout, internet off/on, address_change.
|
|
* API address changed event handled gracefully (if not possible, logout).
|
|
* Update mac keychain (should resolve problem with adding new account to bridge, NOT CONFIRMED).
|
|
* Solved hanging GUI on keychain error (should solve all win-7, no-gui errors).
|
|
* New systray icons for Mac (black and white no background).
|
|
* GUI cosmetics:
|
|
* "Click here to start" triangle position.
|
|
* Wrong cursor type on link.
|
|
* Create main window before notification.
|
|
|
|
### Release notes
|
|
* Better notification when new version is needed or when account address is changed.
|
|
* Encoding support for the standard charsets.
|
|
* Improved visual appearance.
|
|
|
|
### Fixed bugs
|
|
* Fixed missing GUI for Windows with empty keychain.
|
|
|
|
|
|
|
|
## Changelog format
|
|
* Changelog [format](http://keepachangelog.com/en/1.0.0/).
|
|
|
|
### Guiding Principles
|
|
* Changelogs are for humans, not machines.
|
|
* There should be an entry for every single version.
|
|
* The same types of changes should be grouped.
|
|
* Versions and sections should be linkable.
|
|
* The latest version comes first.
|
|
* The release date of each version is displayed.
|
|
* Mention whether you follow Semantic Versioning.
|
|
|
|
### Types of changes
|
|
* `Added` for new features.
|
|
* `Changed` for changes in existing functionality.
|
|
* `Deprecated` for soon-to-be removed features.
|
|
* `Removed` for now removed features.
|
|
* `Fixed` for any bug fixes.
|
|
* `Security` in case of vulnerabilities.
|
|
* Additional for in app release notes.
|
|
* `Release notes` in case of vulnerabilities.
|
|
* `Fixed bugs` in case of vulnerabilities.
|
|
|