Commit Graph

3275 Commits

Author SHA1 Message Date
octoshrimpy 949f0da6ff Merge branch 'master' into feature/mms-compression-refactor 2026-08-01 17:37:37 -04:00
octoshrimpy 2bd62f2f94 perf(mms): decode an image once per attachment instead of per attempt
Addresses the review feedback on #826.

Compression searches for a size that fits under the carrier limit, so it encodes
the same image many times: a binary search over dimensions, then a quality ladder
from 90 down to 40 if nothing fit. Every one of those attempts went through
ImageUtils.getScaledImage, which re-opened the source URI and re-decoded it from
scratch. Decoding is the expensive part and it was the only part being repeated
unnecessarily; a large photo could be decoded a dozen or more times to send once.

ScaledImageEncoder decodes the source a single time, sampled down to no smaller
than the largest width the search will ask for, and re-encodes that bitmap from
memory for each attempt. The search itself is unchanged.

The decode is guarded: with no carrier cap the target size is the original image,
which on a modern camera sensor is large enough to matter, so an OutOfMemoryError
returns null and the caller falls back to Glide, which streams instead of holding
the whole bitmap.

Also fixes three edge cases raised in review:

- A bounds decode that fails leaves outWidth/outHeight at zero, making the aspect
  ratio 0/0 and every derived dimension garbage. Detect it and fall back rather
  than divide by it.

- searchHi was floored at 100, which raised it above the original width, and above
  the carrier maximum when that was under 100. Both upscale the image and inflate
  the payload. The floor is now 1 and the search starts at 1 rather than 100.

- The last-resort fallback hard-coded a width of 100, upscaling anything narrower.
  It is now bounded by searchHi, so it can only shrink.
2026-08-01 17:15:23 -04:00
octoshrimpy 691ac19a9e Add DeepWiki badge (#824)
* Add DeepWiki badge

Updated README to include DeepWiki badge for auto-updating deepwiki docs

* docs(contributing): give DeepWiki its own section with badge

The link was buried at the end of "Getting Your Pull Request Merged", a
section about PR etiquette rather than reading code. Move it under its own
heading at the top of Helpful Tips, where someone about to explore the
codebase will actually look, and add the badge to match the README.

---------

Co-authored-by: octoshrimpy <git@octo.sh>
2026-08-01 15:04:26 -04:00
Weblate (bot) ca9640afa2 Translations update from Hosted Weblate (#763)
* Translated using Weblate (Indonesian)

Currently translated at 100.0% (410 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/id/

* Translated using Weblate (Chinese (Simplified Han script))

Currently translated at 100.0% (410 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/zh_Hans/

* Translated using Weblate (Italian)

Currently translated at 100.0% (410 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/it/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (410 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/tr/

* Translated using Weblate (Russian)

Currently translated at 100.0% (410 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/ru/

* Translated using Weblate (French)

Currently translated at 99.7% (409 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/fr/

* Added translation using Weblate (Breton)

* Added translation using Weblate (Breton)

* Added translation using Weblate (Breton)

* Translated using Weblate (Breton)

Currently translated at 7.5% (31 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/br/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (410 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/bg/

* Translated using Weblate (Tagalog)

Currently translated at 79.2% (325 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/tl/

* Translated using Weblate (Persian)

Currently translated at 97.3% (399 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/fa/

* Translated using Weblate (Persian)

Currently translated at 97.3% (399 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/fa/

* Translated using Weblate (Persian)

Currently translated at 98.5% (404 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/fa/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (410 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/hu/

* Translated using Weblate (Hebrew)

Currently translated at 94.3% (387 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/he/

* Translated using Weblate (Hebrew)

Currently translated at 99.0% (406 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/he/

* Translated using Weblate (Hebrew)

Currently translated at 100.0% (410 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/he/

---------

Co-authored-by: Arif Budiman <arifpedia@gmail.com>
Co-authored-by: Monstorix <monstorix@outlook.com>
Co-authored-by: Mic <m@micz.it>
Co-authored-by: Cabbar Hayıroğlu <halil48efe@gmail.com>
Co-authored-by: bomzhellino <adm.bomzh@gmail.com>
Co-authored-by: Antonin Del Fabbro <message@antonin.one>
Co-authored-by: Pierre Wani Alan Morvan <per.morvan.bzh29@gmail.com>
Co-authored-by: 109247019824 <109247019824@users.noreply.hosted.weblate.org>
Co-authored-by: denny m <deinosnychos@gmail.com>
Co-authored-by: oskolist <oskolist@proton.me>
Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
2026-08-01 15:03:14 -04:00
Weblate (bot) 62d58d0998 Translations update from Hosted Weblate (#773)
* Added translation using Weblate (Japanese)

* Translated using Weblate (French)

Currently translated at 100.0% (14 of 14 strings)

Translation: QUIK/Emoji Reaction Regex
Translate-URL: https://hosted.weblate.org/projects/quik/emoji-reaction-regex/fr/

* Added translation using Weblate (Breton)

* Translated using Weblate (Bulgarian)

Currently translated at 0.0% (0 of 14 strings)

Translation: QUIK/Emoji Reaction Regex
Translate-URL: https://hosted.weblate.org/projects/quik/emoji-reaction-regex/bg/

* Added translation using Weblate (Spanish)

* Translated using Weblate (Spanish)

Currently translated at 14.2% (2 of 14 strings)

Translation: QUIK/Emoji Reaction Regex
Translate-URL: https://hosted.weblate.org/projects/quik/emoji-reaction-regex/es/

---------

Co-authored-by: Samvid Konchada <samvid@skiff.com>
Co-authored-by: Antonin Del Fabbro <message@antonin.one>
Co-authored-by: Pierre Wani Alan Morvan <per.morvan.bzh29@gmail.com>
Co-authored-by: 109247019824 <109247019824@users.noreply.hosted.weblate.org>
Co-authored-by: ekirchman <ej.kirchman@gmail.com>
2026-08-01 15:02:54 -04:00
Khushal Majoka 7e44142b4e compose: Fix sendAsGroup switch resetting while typing on new conversation (#842)
Fixes #841
2026-07-30 21:55:08 -04:00
Inhishonor 96fcb8841a refactor(mms): Add an algorithm for compressing GIFs in one pass 2026-06-30 10:07:49 -07:00
octoshrimpy b0f5107f1f fix(mms): Replace broken compression loop with binary search
Scale factor algorithm became <= 0 after 4-5 attempts regardless of
image size, silently bailing and leaving images potentially over the
carrier size limit. Replace with binary search on dimensions (100px to
carrier max) plus a quality-reduction fallback (90→40) for images that
still don't fit. Adds compressAttachment dispatch for extensibility
(audio/* logged, image/* compressed, else raw). Fixes InputStream leak
in BitmapFactory dimension probe. Queries MMS_CONFIG_ALLOW_ATTACH_AUDIO
for future audio support groundwork.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-29 12:36:37 -07:00
Inhishonor 01474f09cb refactor(utils): Split up navigator into several smaller classes
Move common functions into QkNavigator, and move external navigations to ExternalNavigator
2026-06-24 20:20:13 -07:00
Inhishonor a88d5c62e0 fix(main): Get scheduled messages from view model
The previous behavior fetched scheduled messages directly from the conversation adaptor. This was causing memory leaks and potentially crashes. Now, the view model fetches it and provides the data through state.
2026-06-12 09:42:01 -07:00
Inhishonor fb10b709c9 fix(main): Don't animate layout changes
This was causing a crash when opening the app from a lock screen notification. It doesn't cause any visual problems.
2026-06-12 09:41:26 -07:00
Ben Iofel 9200469181 chore(repo): Delete app/build/outputs/apk/debug/app-debug.apk 2026-05-19 17:30:56 -07:00
Inhishonor 6a20c9b9ff fix(gallery): Use a dedicated dark theme
The app was setting gallery to black mode programmatically, and for some reason this was affecting other activities theming. We can just use a custom theme to force black mode that won't mess with other screens.
2026-05-13 14:14:19 -07:00
Inhishonor 65d7ffe7d0 chore: release v4.3.6 (2238) v4.3.6 2026-04-19 11:43:52 -07:00
Inhishonor afe7ccd923 fix(ci): Set permissions for release after merge 2026-04-19 11:41:39 -07:00
Inhishonor 5674e038e0 chore: release v4.3.5 (2237) 2026-04-19 11:34:43 -07:00
Inhishonor 066659b920 fix(ci): Update permissions for create pr action 2026-04-15 12:49:46 -07:00
Inhishonor 89e25f673c fix(ci): Call generate-release-notes with write permission 2026-04-15 12:19:43 -07:00
Inhishonor 666a77cb69 fix(ci): Fix permissions for fetching release notes
GitHub has changed what permissions this requires, so we have to set GITHUB_TOKEN to have write access.
2026-04-15 12:04:38 -07:00
Inhishonor 2edb91c417 refactor(ci): Improve release notes cleaning process for manual release 2026-04-15 11:35:30 -07:00
ezn24 c141cd5dce Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (14 of 14 strings)

Translation: QUIK/Emoji Reaction Regex
Translate-URL: https://hosted.weblate.org/projects/quik/emoji-reaction-regex/zh_Hant/
2026-04-11 09:12:13 -06:00
ezn24 f9430fa40e Added translation using Weblate (Chinese (Traditional Han script)) 2026-04-11 09:12:13 -06:00
logmilo15 512b18d48a Translated using Weblate (Vietnamese)
Currently translated at 100.0% (14 of 14 strings)

Translation: QUIK/Emoji Reaction Regex
Translate-URL: https://hosted.weblate.org/projects/quik/emoji-reaction-regex/vi/
2026-04-11 09:12:13 -06:00
logmilo15 fa52ec6533 Added translation using Weblate (Vietnamese) 2026-04-11 09:12:13 -06:00
Niyon S V 59f507de7f Added translation using Weblate (Malayalam) 2026-04-11 09:12:13 -06:00
bomzhellino 02c26b0a93 Translated using Weblate (Russian)
Currently translated at 100.0% (14 of 14 strings)

Translation: QUIK/Emoji Reaction Regex
Translate-URL: https://hosted.weblate.org/projects/quik/emoji-reaction-regex/ru/
2026-04-11 09:12:13 -06:00
Rav Var bb3a580633 Translated using Weblate (Polish)
Currently translated at 100.0% (14 of 14 strings)

Translation: QUIK/Emoji Reaction Regex
Translate-URL: https://hosted.weblate.org/projects/quik/emoji-reaction-regex/pl/
2026-04-11 09:12:13 -06:00
Rav Var 728c962e16 Added translation using Weblate (Polish) 2026-04-11 09:12:13 -06:00
Joseph 9da7ae0eb4 Translated using Weblate (French)
Currently translated at 14.2% (2 of 14 strings)

Translation: QUIK/Emoji Reaction Regex
Translate-URL: https://hosted.weblate.org/projects/quik/emoji-reaction-regex/fr/
2026-04-11 09:12:13 -06:00
Joseph 82d7a2ab96 Added translation using Weblate (French) 2026-04-11 09:12:13 -06:00
Sérgio Marques 6e2c954738 Translated using Weblate (Portuguese)
Currently translated at 100.0% (410 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/pt/
2026-04-10 21:49:23 -06:00
Cabbar Hayıroğlu 5fd80023c7 Translated using Weblate (Turkish)
Currently translated at 100.0% (410 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/tr/
2026-04-10 21:49:23 -06:00
ezn24 c50918acfb Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (1 of 1 strings)

Translation: QUIK/Short Description
Translate-URL: https://hosted.weblate.org/projects/quik/short-description/zh_Hant/
2026-04-10 21:49:23 -06:00
JSchmerling 8565364dc9 Translated using Weblate (German)
Currently translated at 99.5% (408 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/de/
2026-04-10 21:49:23 -06:00
ezn24 ffa77308fd Added translation using Weblate (Chinese (Traditional Han script)) 2026-04-10 21:49:23 -06:00
ezn24 2c5e59e7ec Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (410 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/zh_Hant/
2026-04-10 21:49:23 -06:00
Marius Olsen-Ryum 2c17af8382 Added translation using Weblate (Norwegian Bokmål) 2026-04-10 21:49:23 -06:00
Karl Ragnar Giese 72c2060277 Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.7% (405 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/nb_NO/
2026-04-10 21:49:23 -06:00
Marius Olsen-Ryum 2db0b52c60 Translated using Weblate (Norwegian Bokmål)
Currently translated at 98.7% (405 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/nb_NO/
2026-04-10 21:49:23 -06:00
Marek Polák ebb7a9cc1f Translated using Weblate (Czech)
Currently translated at 100.0% (410 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/cs/
2026-04-10 21:49:23 -06:00
spearhead ca8cbe865d Translated using Weblate (French)
Currently translated at 99.7% (409 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/fr/
2026-04-10 21:49:23 -06:00
Joseph 32ef44b697 Translated using Weblate (French)
Currently translated at 99.7% (409 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/fr/
2026-04-10 21:49:23 -06:00
109247019824 f445e068ed Translated using Weblate (Bulgarian)
Currently translated at 100.0% (410 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/bg/
2026-04-10 21:49:23 -06:00
Joseph 25fe910e52 Translated using Weblate (French)
Currently translated at 99.5% (408 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/fr/
2026-04-10 21:49:23 -06:00
Станіслав Яцук e4847786ab Translated using Weblate (Ukrainian)
Currently translated at 100.0% (410 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/uk/
2026-04-10 21:49:23 -06:00
ezn24 c608f51a39 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 99.7% (409 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/zh_Hant/
2026-04-10 21:49:23 -06:00
rehork 19cd3f73ab Translated using Weblate (Polish)
Currently translated at 100.0% (410 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/pl/
2026-04-10 21:49:23 -06:00
logmilo15 7c0c4a296f Translated using Weblate (Vietnamese)
Currently translated at 100.0% (410 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/vi/
2026-04-10 21:49:23 -06:00
Ghost of Sparta a34c63c566 Translated using Weblate (Hungarian)
Currently translated at 100.0% (410 of 410 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/hu/
2026-04-10 21:49:23 -06:00
logmilo15 65b27d2d6b Translated using Weblate (Vietnamese)
Currently translated at 97.0% (397 of 409 strings)

Translation: QUIK/strings
Translate-URL: https://hosted.weblate.org/projects/quik/strings/vi/
2026-04-10 21:49:23 -06:00