* Move free functions to the anonymous namespace
* Additionally move static free functions to the anonymous namespace
* Move functions that must be accessed externally to static class functions
Avoid shadowing variables:
* Rename variables to something better if possible
* If not, postfix shadowing arguments with _. Favour leaving member
variables without postfixes.
* Rename variables prefixed with _ to avoid library function collisions
* Avoid double underscore anywhere in names
* Make definition and declaration argument names match where seen
* Favour using class variable over argument variable, where equivalent
* Remove explicit this-> where equivalent
Makes it so that looking back in chat history, you can see which users you were
connected to for any message. Otherwise self client restarts are unseen.
Follows showGroupJoinLeaveMessages setting which defaults to false, so only
users who opt in will see the messages.
Scrap generic numArg handling. It somewhat increases complexity and doesn't
reduce code either.
They're still slightly flaky even with insanely long timeouts, and even when not they waste a huge amount of our runner time sitting and waiting for the DHT to disconnect and reconnect.
Still run on our fedora job to get almost all of the benefit, plus AddressSanitizer is enabled there for better testing synergy.
Commit format is already checked in CI, unlike this template which doesn't
actually enforce anything. Each PR showing "1 task done" clutters the PR list
view.
CI has very flaky network causing everything to take way longer than expected.
None of the tests are actually checking that something happens quickly, so just
set a stupidly long timeout to avoid flakiness.
Due to poor design, bootstrapNodes.json was saved the same if manually set by
user, or if just storing qTox defaults. Because of this, for users using
defaults, they would be stuck with stale defaults indefinitely without this one
time reset.
The user list that's removed is backed up to bootstrapNodes.backup.json.
Going forward, the user list and default list will be stored separately.
Fix#6452
Allows qTox to tell the difference between a default list that should be
upgraded when defaults are changed, ora user list that should never be changed.
Similar to how History handles SCHEMA_VERSION. Run separately on global and
personal settings, since some state in global, and personal settings can’t be
done globally since they require the passkey.
Restrict a user from downgrading past the saved settings version, due to
possible compatibility breaks or old qTox versions re-introducing corrupt state
that was already healed.
Pass in new profile state for personal settings rather than relying on settings
file presence because personal settings can be stored in either the personal
settings file or global settings file. This was introduced in
aea9eea8a4 when personal settings were first
moved to their own file.
macOS 10.14 is EOL by Apple, and brew no longer supports it. We can no longer
build qTox on 10.14 using our brew-based release process. Instead we will
release from 10.15, which loses compatibility with 10.14 with our current build
process.
Installations to Program Files (default) inherit restrictive permissions,
disallowing regular users from writing to files in the install location. If a
user installs to other directories with more lax permissions though, i.e. C:\,
the install directory can be writable by non-admins, causing a privilege
escalation opportunity. An unprivileged user could modify or replace the qTox
binary or a dll, that would then be run by any other user on the system.
Clone Program Files permissions rather than trying to craft sane permissions
manually for simplicity and compatibility.