1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00
Commit Graph

7962 Commits

Author SHA1 Message Date
Anthony Bilinski
90484a1fdf
chore(CI): Replace CentOS 8 CI with AlmaLinux
CentOS is EOL, and AlmaLinux seems like the closest successor
2022-02-08 02:08:42 -08:00
Anthony Bilinski
65c42ebd9e
chore(release): Create release on tag push
Release will be created as a draft, remaining private until manually published.
All generated artifacts will be uploaded, but will still need to be signed, and
the code archives still need to be created following
MAINTAINING.md#after-tagging

Fix #6345
2022-01-09 21:06:40 -08:00
Anthony Bilinski
c85e24e7db
chore(release): Create nightly release on master branch pushes
* Tag is required to create a release, so tag "nightly" is moved to
  latest commit on each run.
* Each time the tag is moved, the existing "nightly" release is updated
  automatically by github to point to the new tag and bundle the new
commit's source code.
* Artifacts are uploaded with intentionally conflicting names to replace
  last commit's version of artifacts, rather than deleting the whole
release and making a new one.
* This has two benefits, it doesn't notify of a new release on each
  commit, and it doesn't leave a gap where there's no nightly release
available.
2022-01-09 20:55:07 -08:00
Anthony Bilinski
83fcc76e43
chore(docs): Remove old native Windows build instructions
They depend on bootstrap.bat and windows/bootstrap.sh which were removed in
38729e18e8, are missing dependencies, and aren't
tested in CI.
2022-01-09 18:52:53 -08:00
Anthony Bilinski
481818fb59
chore(docs): Remove instructions for building packages automatically
Functionality was removed in 351e769eb7.
2022-01-09 18:52:53 -08:00
Anthony Bilinski
7d0d62c154
chore(build): Remove bootstrap.sh
* It is untested by CI and adds a lot of complexity compared to manually
compiling toxcore and toxext in a couple commands. This also exposes
the cmake configs rather than wrapping them in an out of date list of
script configs for users.
2022-01-09 18:52:53 -08:00
Anthony Bilinski
ff2cad3b03
chore(build): Remove qTox-Mac-Deployer-ULTIMATE.sh
* It is only partially covered by CI and doesn't simplify the build process
much for users. Replacing it in CI with just build-osx.sh significantly reduces
script complexity and is fully tested.
* bootstrap-osx.sh copying system libs and headers locally is unneeded.
  Already the DMG file contains them, and re-linking the app against
updated system files may be desirable.
* Update INSTALL.md for macOS to use brewfile, use common dependency build
  scripts, and use cmake rather than wrapper scripts.
* Build macOS in Release mode in CI, for release artifact creation
* Don't copy all used libs into a local folder, macdeployerqt already
  handles this for the dmg, and for local running of the app using the
system libs and relinking on update is desirable to avoid running out of
date dependencies unexpectedly.
2022-01-09 18:52:53 -08:00
Anthony Bilinski
e405868037
chore(build): Update build_toxcore_linux.sh to handle relative call paths 2022-01-09 18:52:53 -08:00
Anthony Bilinski
f5cf3cd183
chore(CI): Remove CIRP, replaced by direct GH action uploads
Previously was used to upload release artifacts from travis CI, which is
supported in GH actions through actions/upload-artifact.
2022-01-09 18:10:32 -08:00
Anthony Bilinski
5fcf86b521
chore(CI): Remove if-no-files-found from artifact upload
Artifacts are now conditionally uploaded based on matrix, so they should always be present when expected.
2022-01-09 17:43:27 -08:00
Anthony Bilinski
a07ab89cc8
chore(CI): Upload release Windows zips from GH actions workflow 2022-01-09 14:47:14 -08:00
Anthony Bilinski
c06e830f71
chore(maintaining): Remove update-toxcore-version.sh script
Was used to update all the duplicate versions of toxcore spread around the
repo. Now all builds and user instructions for the version come from
buildscripts/download/download_toxcore.sh directly, so this script serves no
purpose.
2022-01-04 13:50:30 -08:00
Anthony Bilinski
2c6a01c8ec
chore(flatpak): Fix JSON syntax, single quote to double quote 2022-01-03 15:47:40 -08:00
Anthony Bilinski
9ea6d7e8fc
fix(flatpak): Build flatpak qTox and dependencies in Release mode 2022-01-01 10:56:44 -08:00
Anthony Bilinski
263ac68c86
chore(CI): Remove circle CI, replaced by GH actions
Windows and macOS builds are done on PR and on release on GH actions.
2021-12-31 21:48:39 -08:00
Anthony Bilinski
e1287b94c7
Merge pull request #6413
Mick Sayson (1):
      chore(CI): Use docker for CI scripts
2021-12-31 21:13:46 -08:00
Anthony Bilinski
cea54c17c9
Merge pull request #6386
Mick Sayson (3):
      fix(filetransfer): Fix UI inconsistencies with pause/resume
      refactor(filetransfer): Move file transfer progress into ToxFile
      feat(filesform): Add in progress transfers to files form
2021-12-20 05:55:52 -08:00
Mick Sayson
8abe8320d2 chore(CI): Use docker for CI scripts
Motiviation:
* Reproducing issues in CI is currently difficult
* Predicting issues in CI is currently difficult if you are not on
  ubuntu 18.04
* Reproducing issues submitted from other distros is currently done by
  creating a VM of that distro and building qtox for it locally
* Documentation for how to build on different distros is out of date
* Issues on non-ubuntu distributions are not caught by CI
* Cross compiling for windows locally is not trivial
* Iterating when working with custom build scripts is slow, scripts
  don't necessarily support re-running without re-starting the docker
  container and re-building qtox again
* Updating dependencies is a pain

Changes:
* docker-compose file has been added to the root of our repo.
  After `docker compose run --rm ubuntu` (or other supported distros),
  you are ready to compile and run qtox
* Dependencies are owned by dependency install scripts in buildscripts/.
  This allows us to use the same exact dependencies in our
  OSX/windows/linux scripts
* New docker images have been added for a variety of distributions.
  These are now run in CI in a variety of configurations
  * Docker images are cached in CI so rebuild time for the majority of
    jobs is quite quick
* Build scripts have been trimmed to leverage state of docker
  containers.
  * Windows build script no longer installs anything, dependencies are
    now managed by the windows_builder docker images
  * Build scripts should now be easily re-runnable. Usage is now `docker
    compose run --rm <image>` and then run the scripts
* All artifacts are now uploaded to github after build, this means we
  can take an appimage/flatpak/exe/dmg for any given PR and try it out
  without having to build it ourselves

Notes:
* Docker image size is quite important. We have a maximum of 5GB cache
  space on github actions. The majority of the linux distro docker
  images cache at ~300-400MB, which gives us room to test ~6 distros
  after accounting for the sizes of flatpak/windows docker images
* Docker layer ordering is relatively intentional. Approximate order
  should be that large dependencies that change infrequently should be
  farther up. This lowers the amount of rebuilding we have to do when
  dependencies are updated
* download_xxx.sh scripts are the cleanest way I could find to implement
  a shared dependency map between osx scripts and docker containers.
  Although it would be nice to have a single dependency mapping file,
  splitting it into individual scripts allows us to only rebuild some
  docker layers when dependencies are updated.
* Github actions are split between docker image building and docker
  image use. This allows us to re-use the same docker images for
  multiple jobs, but only build it once
  * Unfortunately I could not find a way to de-duplicate the stitching
    between jobs, so we have a lot of copy pasta in that area
2021-12-19 14:56:05 -08:00
Anthony Bilinski
7f4c308990
Merge branch 'v1.17-dev' 2021-12-14 21:20:14 -08:00
Anthony Bilinski
f0e82c3d90
chore(release): Update version number to v1.17.4 2021-12-14 17:04:29 -08:00
Anthony Bilinski
aca23cd100
chore(release): Add changelog for v1.17.4 2021-12-14 03:33:40 -08:00
Anthony Bilinski
992cdbd045
chore: Replace deprecated QMutex::Recursive with QRecursiveMutex 2021-12-14 03:33:34 -08:00
Maxim Biro
96e1ce573b
chore(windows): update VPX to 1.11.0 2021-12-14 01:29:59 -08:00
Maxim Biro
f854e5bbef
chore(windows): update Exif to 0.6.24 2021-12-14 01:29:20 -08:00
Maxim Biro
0eb4dc3735
chore(windows): update FFmpeg to 4.4.1 2021-12-14 01:28:19 -08:00
Maxim Biro
bc7497a01c
chore(windows): update SQLCipher to 4.5.0 2021-12-14 01:25:48 -08:00
Maxim Biro
265e2e1721
chore(windows): update Qt to 5.12.12 2021-12-14 01:23:01 -08:00
Anthony Bilinski
1e6cf4fdb7
Merge pull request #6416
Maxim Biro (6):
      chore(windows): update Qt to 5.12.12
      chore(windows): update SQLCipher to 4.5.0
      chore(windows): update FFmpeg to 4.4.1
      chore(windows): update Exif to 0.6.24
      chore(windows): update VPX to 1.11.0
      chore(windows): Update toxcore to 0.2.13
2021-12-14 01:03:51 -08:00
Anthony Bilinski
e12e6fecaa
chore(deps): update c-toxcore to v0.2.13 2021-12-14 00:43:14 -08:00
Mick Sayson
257a19caaa feat(filesform): Add in progress transfers to files form
As part of #1532 it was identified that long running file transfers
could get lost deep in the chatlog. This could result in unexpected use
of bandwidth over time if users lose track of old/large transfers. This
commit updates the files form to show in progress file transfers and
offer a way to control them.

* FilesForm now works on ToxFiles instead of finished file paths
* FilesForm widgets have been replaced with an MV tree view with depth
  1. The existing QListWidget did not provide us the controls to render
  more complex items. The use of delegates allows us to efficiently draw
  progress bars and controls
* getHumanReadableSize has been extracted from FileTransferWidget into a
  more general utils file
2021-12-11 15:38:35 -08:00
Mick Sayson
c7efe320d2 refactor(filetransfer): Move file transfer progress into ToxFile
* Refactor/test ToxFileProgress to ensure that when it's moved it
  behaves well
* Notice problems with speed averaging. We were average speeds without
  keeping track of the times they were over. Adding samples of different
  lengths would result in incorrect speeds. Refactor whole class to correct
* Move ToxFileProgress to be a member of ToxFile
* Remove duplicated members between ToxFile and ToxFileProgress
* Move sample addition into CoreFile
2021-12-11 15:38:35 -08:00
Mick Sayson
3bc4aa52be fix(filetransfer): Fix UI inconsistencies with pause/resume 2021-12-11 13:56:08 -08:00
Anthony Bilinski
9624fc33b0
chore(deps): update c-toxcore to v0.2.13 2021-12-08 01:02:55 -08:00
Maxim Biro
d03c60e3b2
chore(windows): Update toxcore to 0.2.13 2021-12-07 04:56:42 -05:00
Maxim Biro
2414593386
chore(windows): update VPX to 1.11.0 2021-12-07 04:56:40 -05:00
Maxim Biro
d08c37b5a4
chore(windows): update Exif to 0.6.24 2021-12-07 04:56:39 -05:00
Maxim Biro
de84dcb89c
chore(windows): update FFmpeg to 4.4.1 2021-12-07 04:56:36 -05:00
Maxim Biro
560751db88
chore(windows): update SQLCipher to 4.5.0 2021-12-07 04:56:17 -05:00
Maxim Biro
da8885cffb
chore(windows): update Qt to 5.12.12 2021-12-07 04:28:03 -05:00
sudden6
3c58b992c6
perf: reduce repainting in animations
By profiling qTox using perf I discovered, that
NotificationIcon::updateGradient takes significant amount of CPU time
even though qTox is idle and no one is typing.

This commit fixes:

1) correctly determine visibility of NotificationIcon
2) only invalidate boundingRect in fixed intervals
3) apply the same fixes to Spinner since it has the same problem
2021-11-28 12:45:14 +01:00
Anthony Bilinski
6a10abf1b3
Merge pull request #6374
Anthony Bilinski (20):
      revert(chatlog): "fix stick to bottom behavior"
      revert(chatlog): partially revert "prevent invalid history access"
      revert(chatlog): "add comments for functions that load history"
      revert(chatlog): "scroll bar stuck to bottom (fix #5755)"
      revert(chatlog): "update workerStb"
      revert(chatlog): "optimize load messages during the search"
      revert(chatlog): "feat: save selected search text after scrolling up"
      revert(chatlog): "feat: check chat status before start a search"
      revert(chatlog): "fix: data validation during the search"
      revert(chatlog): "fix a crash when there are no messages to load"
      revert(chatlog): "prohibition to remove messages in group chat"
      revert(chatlog): "edit load history when scrolling"
      revert(chatlog): "simple edit code"
      revert(chatlog): "remove part messages from chat"
      revert(chatlog): "edit position chat after load history"
      revert(chatlog): "add action "Go to current date""
      revert(chatlog): "edit load history in search"
      revert(chatlog): "edit function "Load chat history""
      revert(chatlog): "load messages from the database after date"
      chore(review): Copyright notice cleanup

Mick Sayson (8):
      fix(history): Fix qt deprecation warning
      revert(chatlog): "feat: load messages from the database before date"
      revert(chatlog): Revert cleanup
      refactor(chatlog): Move rendering of messages from GenericChatForm -> ChatLog
      refactor(chatlog): Store ChatLine::Ptr in messages instead of ChatMessage
      feat(chatlog): Re-implement sliding window ChatLog view
      refactor(chatlog): Remove unused getRow functions from ChatLine
      refactor(chatlog): Rename ChatLog -> ChatWidget
2021-11-21 17:34:37 -08:00
Anthony Bilinski
54a2b8970b
chore(review): Copyright notice cleanup 2021-11-21 16:19:22 -08:00
Mick Sayson
ffef0e3796
refactor(chatlog): Rename ChatLog -> ChatWidget
* Makes the distinction between IChatLog (the model class) and
  ChatWidget (the view class) more clear
2021-11-21 16:18:45 -08:00
Mick Sayson
3757f733cc
refactor(chatlog): Remove unused getRow functions from ChatLine
* The getRow functions would not track correctly since the rows indexes
  cannot be fixed to the view anymore
2021-11-21 16:18:44 -08:00
Mick Sayson
b36a38e716
feat(chatlog): Re-implement sliding window ChatLog view
* Replace lines/messages with helper class to synchronize state between
  IChatLog and ChatLog more easily
* selection indexes have been replaced with ChatLine::Ptrs, this is to
  ensure consistency while the view slides around
    * This has another benefit of removing all the code that has to
      manually slide the selection boxes around
* Replaced all insertion/removal functions with single "insertAtIdx".
  This helps ensure that mappings between ChatLogIdx and position within
  the view are captured correctly as items in the view slide around
* workerTimeout replaced with more generic name "renderFinished" that is
  used in synchronous and asynchronous paths
* Removed unused function ChatForm::insertChatMessage
* Re-implemented "Go to current date" with new ChatLog APIs
* Removed unused GenericChatForm::addSystemDateMessage. This is handled
  by ChatLog now
* Resolves #6223
* Resolves #5878
* Resolves #5940
2021-11-21 16:18:44 -08:00
Mick Sayson
a9f7c0ca7e
refactor(chatlog): Store ChatLine::Ptr in messages instead of ChatMessage
* This simplifies future refactoring since the rest of ChatLog expects
  to be working with the base class
2021-11-21 16:18:40 -08:00
Mick Sayson
b7a88cde6e
refactor(chatlog): Move rendering of messages from GenericChatForm -> ChatLog
* Simplifies reasoning about who owns what functionality between
  GenericChatForm and ChatLog. GenericChatForm is now just a layout
  class and ChatLog handles all interactions with retrieving and
  displaying messages from the model
* Reasoning for work is described in more detail in #6223
2021-11-21 16:18:32 -08:00
Mick Sayson
dd7df35720
revert(chatlog): Revert cleanup
* Fix compilation issues caused by incorrect merges
2021-11-21 16:17:35 -08:00
Mick Sayson
00ab89c3ce
revert(chatlog): "feat: load messages from the database before date"
This reverts commit fb2957c5ee.
2021-11-21 16:17:35 -08:00
Anthony Bilinski
041b697e77
revert(chatlog): "load messages from the database after date"
This reverts commit b705ac8060.
2021-11-21 16:17:35 -08:00