38 KiB
ProtonMail Bridge Changelog
Changelog format
Unreleased
Added
- 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 Mailfolder. - 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.Clientis now an interface;clientis the concrete type.Clients are only created byClientManager.- Only one
Clientper userID exists at any given time; clients are reused. - Tokens are managed by
ClientManager(TokenManageris removed). expiresAtis no longer part ofClient; token expiry and refreshing is handled byClientManager.- Auths generated by clients during Auth/AuthRefresh are handled by
ClientManager(which forwards them toBridge). ClientManageris the "one source of truth" for the host URL for allClients.- Alternative Routing is enabled/disabled by
ClientManager. - Logging out of
Clientsis handled/retried asynchronously byClientManager.
- GODT-265 Alternative Routing v2 (more resiliant to short term connection drops).
- GODT-310 Alternative parsing of
Referencesheader (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.
[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
hasAuthChannelduring logout for proper login functionality (set up auth channel and unlock keys). - Allow
APPENDmessages without parsable email address in sender field. - #1060 avoid
Appendafter internal message ID was found and message was copyed to mailbox usingMessageLabel. - #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
enmimedependency. - 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
generateSendingInfoto 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
NOfor errors whileFETCH. - #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.
- Introduced interfaces:
- #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.
- Introduced interfaces:
- #774 start initialization with sync immediately after login.
Removed
- Using
PutMetafor DB to not rewrite header and size. Timeoutfor connection (keep onlyDialTimeout).- #798
imapMailbox.sync. - #818 REFACTOR: see doc/code-structure.md.
- Bridge global functions
GetAuth,GetAuthInfo,GetUserSettings(using member functions ofpmapi.Clientinstead). backend.setCache: not used.- IMAP extension for
XSTOPandXFOCUS. - Keychain
Disconnectedis not used, deleting directly (not using hide). apiIdFrom(uid bool, id uint32),apiIdRangeFromSeq(uid bool, seq imap.Seq): not used.server/dial.gonot used.- Util
CustomMessage,StartTickernot used.
- Bridge global functions
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.
SearchMessageall IDs from DB not depends ontotalOnAPI.- #798 populate efficiently.
- Improved
imap.db.mailbox.Counts(). mbox.total,unread->mbox.totalOnAPI,unreadOnAPI.- Always show DB status (even for
IDLEupdates). imapUser.syncnow takeslabelIDas parameter.- Split population by 1000 messages.
db.User.put(msgs,keepCache)is used in sync to not overwritemsg.Sizeandmsg.Headerin DB.- Separate sync function from
backend.labelMailboxclass. UidNextuses bolt sequence value instead of cursor position.
- Improved
util.tests.gomoved tobridgeUtils.- #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/c10to.../protonmail/bridge. - Always cleared malformed keychain records.
- Set credentials version on each
Put. util.WriteHeader->imap.writeHeader.- Save
message.ExternalIDfor 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
doNotCacheErrorto 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
nilheader 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-Typeonly 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
AddressEventbeforeMessageEvent. - #791 updated crypto: fix wrong signature format.
- #793 fix returning size.
- #706 improved internet connection checking.
- #771 updated raven, crypto, pmapi.
- #792 use
INFOas basic log level. - Only one crash from second instance.
- During event
MessageIDin 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
nameparam in attachmentContent-Type(in addition toContent-Dispositionparamfilename). - #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-Idand also added toReferences. - #666 invoke
panicwhile adding accountjakubqa+crash@protonmail.com. - #592 new header fields
X-Pm-Datestoring m.Time andX-Pm-External-Idstoring m.ExternalID. - #484 search criteria
Unkeywordsupport.
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
protontechrepos from credits. - Refactor of
go-pmapi,go-pm-crypto,go-pm-mimeandgo-srp. - Re-signed pubkey key.
- Version, revision and build time is set in main.
- #666 use
bytes.Readerinstead ofbytes.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
parsingHeaderallows negative time (before 1.1.1970). - #592 add original header first and then rewrite.
- #592
Message-Idrewritten only if not present. - #592 rename
X-Internal-IdtoX-Pm-Internal-Id. - #592 internal references are added only when not present already.
- #592 field
Datechanged to m.Time only when wrong format or missingDate. - #645 pmapi#26
Message.Flagsinstead ofIsEncrypted,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(usemessage.BodySection).backend.getSize(usemessage.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
copyRecursivelyfunction. - When there is fresh version on start show release notes.
- Keychain helper using GNU pass.
- Error message on missing keychain.
Changed
-
Imap
SEARCHloops 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.ToListthat were not requested in SMTPTO. -
IsFirstStart setup before loading Gui. Set it to false right after (don't wait till quit).
-
Check
eventMessagenot nil before address check. -
util.EventChannelrefactor:SendEvent->Sendand newSendEvent(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
updatesfromfrontendtoutil. -
Move
CheckInternetConnection()toutil. -
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.
-
zipreplaced bytgz. -
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.
BodyKeyandAttachmentKeycontainsKeyandAlgorithm.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()andPasswordMode->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.Doerrors 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/calendarare 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/htmlbody was imported astext/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.internalidreference. - 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 byBridgeUIandImportExportUI. - 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.
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
Addedfor new features.Changedfor changes in existing functionality.Deprecatedfor soon-to-be removed features.Removedfor now removed features.Fixedfor any bug fixes.Securityin case of vulnerabilities.- Additional for in app release notes.
Release notesin case of vulnerabilities.Fixed bugsin case of vulnerabilities.