Mick Sayson (6):
feat(messages): Multipacket message support
feat(messages): History and offline message support for extended messages
feat(extensions): UI updates for extension support
fix(extensions): Add toxext to CI scripts
feat(extensions): Update documentation
feat(extensions): Split messages on extended messages
v0.0.2 of toxext_extended_messages brought in a user configurable max
message size. This changeset implements the minimum work required for
qTox to work sanely under the new API.
* Hardcode a max message size for all friends
* If a friend negotiates a max message size below the hardcoded value
pretend they do not have the extension
* Move splitMessage out of Core to MessageProcessor
* Updates to allow for extended messages to be split
Added a UI element to indicate extension support of the chatroom. For
all groups it will always be red since we do not support extensions in
groups. In a 1-1 chat the indicator will either be green/yellow/red
depending on if the friend has support for all/some/none of qTox's
desired extension set.
* Added new negotiating friend state to allow delayed sending of offline
messages
* Added ability to flag currently outgoing message as broken in UI
* Reworked OfflineMsgEngine to support multiple receipt types
* Moved resending logic out of the OfflineMsgEngine
* Moved coordination of receipt and DispatchedMessageId into helper
class usable for both ExtensionReceiptNum and ReceiptNum
* Resending logic now has a failure case when the friend's extension
set is lower than the required extensions needed for the message
* When a user is known to be offline we do not allow use of any
extensions
* Added DB support for broken message reasons
* Added DB support to tie an faux_offline_pending message to a required
extension set
* Introduced ToxExt and CoreExt abstraction
* Along with interfaces for mocking and unit testing
* Add "supportedExtensions" concept to Friend
* Dispatch messages to CoreExt instead of Core when friend supports
extended messages
* Only split messages for core when extended messages are unavailable
* Offline message engine/History not altered. Currently only valid for
an existing session after extension negotiation has completed
Brew disabled updating from shallow clones:
https://github.com/Homebrew/brew/pull/9383
The update is also uneeded since our .travis.yml already has `update: true` for
the brew extension.
In history we cache peers to avoid extra DB lookups, this code is not
pretty and seems to provide little benefit. This reduces the cognitive
load when trying to reason about history.
* Removed peerId table from history
* Replaced peerId lookups with generated select statement
* Benchmarked on a profile with ~100 peers in the db and saw no
noticible change in transaction time (6-30 ms both before and after
the changes)
powerjungle (3):
feat(ui): add warning in GUI when running unstable version
refactor(log): change unstable version warning message
refactor(ui): change unstable version warning message
This commit fixes an issue when switching from any language back to English,
the system translations remain to be the last language even if the application
translations have switched back to English.
In some languages the "up to date" text can get over the qTox version text, so
this commit moves "up to date" above. The commit also moves the "Update
available" button above and stretches it.
Stop specifying a specific path in cmake for the SDK, since the path differs in
10.16, and cmake will find it automatically.
Use the oldest supported SDK based on https://developer.apple.com/support/xcode/Fix#6252
https://github.com/qTox/qTox/pull/5866 both updated our travis xcode version,
and also added the dots in 8e597ed736. When macOS
was updated by Apple, older versions aged out of support, and brew also stopped
supporting them. Our travis xcode9.2 at the time stopped getting binary
packages (kegs) from brew because of that, and started having to compile
packages which is what was causing the timeouts.
Updating our xcode version allowed us to get binary packages from brew again,
so the workaround of constant output to avoid timing out while compiling large
packages is no longer needed.
(cherry picked from commit db1397d69c)