This is a large change that mostly results in regressions in dev, but paves the way for a massive API overhaul.
changed network requests to use Qt networking facilities. This simplifies the code greatly as Qt networking manages its own threading. This also will allow easier integration of websockets in the future.
had to make a breaking change to the API to take parameters for GET requests as path parameters instead of sending them in the body (it's illegal to send a body with a GET request and Qt actually enforces this where requests didn't)
wrote a new cryptography implementation with much better misuse resistance and type safety. A new key exchange directly modeled after the Signal 3XDH whitepaper. New primitives informed by IETF whitepapers and broad compatibility. This implementation is left unused and the previous implementation moved to a new module. The unit tests were changed to test the new implementation as the old one will not survive in the codebase long.
Implemented pydantic models and outline for new API implementation directly integrated with the new cryptography integration. None of this is used yet, but will be used for the planned new API
removed and simplified some modules that had potentially confusing semantics and little to no actual benefits. Also moved toward removing the autologging dependency which does not play well with static type checkers.
With this PR, the dev branch will be temporarily broken. The tests will run, the server works, and the client will launch, but there are bugs in the current API which don't seem worth addressing when I already have plans to completely change the API.
Checklist
[ ] If code changes were made then they have been tested.
[ ] This PR fixes an issue.
[ ] This PR adds something new (e.g. new method or parameters).
[ ] This PR is a breaking change (e.g. methods or parameters removed/renamed)
[ ] This PR is not a code change (e.g. documentation, README, ...)
lol I literally have code spellcheck enabled and I still messed spelling. Oh well, this is kind of a messy PR anyway. I just needed to merge this before it became a literal full rewrite :P
Summary
This is a large change that mostly results in regressions in dev, but paves the way for a massive API overhaul.
changed network requests to use Qt networking facilities. This simplifies the code greatly as Qt networking manages its own threading. This also will allow easier integration of websockets in the future.
had to make a breaking change to the API to take parameters for GET requests as path parameters instead of sending them in the body (it's illegal to send a body with a GET request and Qt actually enforces this where requests didn't)
wrote a new cryptography implementation with much better misuse resistance and type safety. A new key exchange directly modeled after the Signal 3XDH whitepaper. New primitives informed by IETF whitepapers and broad compatibility. This implementation is left unused and the previous implementation moved to a new module. The unit tests were changed to test the new implementation as the old one will not survive in the codebase long.
Implemented pydantic models and outline for new API implementation directly integrated with the new cryptography integration. None of this is used yet, but will be used for the planned new API
removed and simplified some modules that had potentially confusing semantics and little to no actual benefits. Also moved toward removing the autologging dependency which does not play well with static type checkers.
With this PR, the dev branch will be temporarily broken. The tests will run, the server works, and the client will launch, but there are bugs in the current API which don't seem worth addressing when I already have plans to completely change the API.
Checklist