Watch
1
0
Fork
You've already forked nexus
0
forked from Nexus/nexus

Compare commits

..
Author SHA1 Message Date
7988fd23a5
bump gomuks 2026-11-11 01:13:30 -05:00
949d5f26a9
bump gomuks 2026-11-11 00:59:38 -05:00
aae9bf9655
bump gomuks 2026-11-11 00:20:46 -05:00
1691fa981a
bump gomuks vendorHash 2026-11-11 00:00:32 -05:00
393d03d1b7
bump gomuks 2026-11-10 23:57:32 -05:00
c5cc5a052f
bump gomuks 2026-11-10 20:20:53 -05:00
11d74b2b2d
Revert "bump gomuks, drop explicit goolm tags"
This reverts commit 69c392a51f.
2026-11-10 19:59:42 -05:00
69c392a51f
bump gomuks, drop explicit goolm tags 2026-11-10 19:57:01 -05:00
1689cb1007
follow nixpkgs properly 2026-11-10 19:25:20 -05:00
2d8cd4eff2
fix use after dispose error from videos
Fixes #169
2026-11-10 19:21:29 -05:00
7b542d8d1e
fix android builds in devshell 2026-11-10 19:02:28 -05:00
f106db5948
run e2e flow on forgejo 2026-11-10 18:43:15 -05:00
af99de75da add e2e testing (#167)
Reviewed-on: Nexus/nexus#167
2026-11-10 18:29:02 -05:00
f1f0fea114
update webcrypto gitHash for nix package 2026-11-09 23:44:06 -05:00
a4141de01d
use webcrypto from main 2026-11-09 23:24:51 -05:00
ab3b9cc83f
set reaction tooltip triggerMode to manual 2026-11-09 17:58:25 -05:00
ffbb0ad9e2
make hovering a reaction show its shortcode 2026-11-09 17:31:19 -05:00
d5f29dc344
reorganize and rename widgets 2026-11-09 17:25:02 -05:00
05d25869ef
add reactions popover
Fixes #168
2026-11-09 17:14:46 -05:00
a09ae01b4e
fix up matrix:u links 2026-11-09 15:48:10 -05:00
8aada9a895
add per-room notif overrides
Fixes #163
2026-11-09 15:40:17 -05:00
a5711d2ded
show sizes for message images 2026-11-09 12:46:08 -05:00
ecac985d90
fix timeline weirdness with zero extents 2026-11-09 12:03:52 -05:00
272241f338
show filesize on audio and video renderers
Fixes #164
2026-11-09 11:37:50 -05:00
8692527105
add room ID to room summaries
Fixes #165
2026-11-09 11:32:22 -05:00
ac31fbb74d
timeline fixups 2026-11-09 10:58:08 -05:00
c658034d3b
small cleanup to player controls 2026-11-08 14:11:01 -05:00
995afe1412
clean up audio players 2026-11-07 22:40:56 -05:00
bf2aa50556
Reapply "add timeline debugPrints"
This reverts commit d1aa91fbbd.
2026-11-07 16:26:17 -05:00
d1aa91fbbd
Revert "add timeline debugPrints"
This reverts commit 1da836e20d.
2026-11-07 16:23:15 -05:00
274256dfe4
always show jump to bottom when theres a contextual event 2026-11-07 16:22:53 -05:00
1da836e20d
add timeline debugPrints 2026-11-07 15:59:21 -05:00
e609bcebcd
prepare v1.1.0-alpha1 2026-11-07 13:03:00 -05:00
bf8490896c
clean up thread timestamps 2026-11-06 12:36:27 -05:00
a229fcc598
add threads button back to appbar, hide close button on linux mobile mode 2026-11-06 12:30:20 -05:00
06ba23d3c0
add some more safety checks to composer 2026-11-06 10:45:53 -05:00
dbc42b0ec2
better UX for gomuks built-in commands
Fixes #157
2026-11-06 10:41:19 -05:00
29840d595a
fix weird focus issues with android OSK 2026-11-06 10:08:04 -05:00
5eed03c10e
make thread roots more distinguishable, and always show them even when redacted 2026-11-06 09:46:59 -05:00
ee28ddeddd
tweak minimum size 2026-11-06 09:46:00 -05:00
b29f801f37
Revert "prepare v1.1.0"
This reverts commit d61de252fb.
2026-11-05 23:52:47 -05:00
d61de252fb
prepare v1.1.0 2026-11-05 23:37:18 -05:00
a701bc6413
some small read receipt fixes 2026-11-05 23:33:04 -05:00
545fdd1f6b
clamp shown read receipts to at least 1
fixes weird error when rotating on directory page
2026-11-05 23:29:10 -05:00
4061b7b51e
fixes for some overflows on reply previews 2026-11-05 23:14:30 -05:00
b5fe2d4967
update gomuks vendorHash 2026-11-05 23:05:17 -05:00
ea29889e5c
tweak memory management 2026-11-05 20:51:28 -05:00
e899bb3929
keep message drafts on room switches
this is for you courge
2026-11-05 20:44:13 -05:00
7f7bdbf525
add thread support
Fixes #129
2026-11-05 19:14:46 -05:00
47645ea327
say "Redacted event" instead of "Unknown event type" for previews of redacted events 2026-11-04 12:48:29 -05:00
e382499a2a
add room directory support 2026-11-04 12:43:01 -05:00
033c7f9c05
use the correct font for timestamps 2026-11-03 23:56:15 -05:00
256e5fadbe
only show hide option for local events 2026-11-03 23:40:18 -05:00
39b8242867
set branch in .gitmodules
Helpful for updates.
2026-11-03 23:18:35 -05:00
28ba67cb59
update gomuks vendorHash 2026-11-03 21:27:46 -05:00
a0605a3617
Add room upgrades
Fixes #155
2026-11-03 21:13:27 -05:00
6d9a8e812b
bump gomuks 2026-11-03 20:06:51 -05:00
ecc4618ccd
add support for publishing rooms to the room directory
Part of #134
2026-11-03 17:50:26 -05:00
b201b1159e
fix regression in space edge logic
This bug caused space edges to clear sometimes.
2026-11-03 17:14:14 -05:00
029efe7c0a
add tombstone support
Fixes #147
2026-11-03 16:53:28 -05:00
522df86976
fix android build 2026-11-03 16:21:11 -05:00
ff9166966d
bump avif_native hashes 2026-11-03 15:54:41 -05:00
20eed13884
Add weighted search
Fixes #74
2026-11-03 15:50:46 -05:00
b6c6ac35d9
bump deps 2026-11-03 15:39:11 -05:00
a8e045bb3a
bump window_manager 2026-11-03 15:32:54 -05:00
b154b4ee2e
add GomuksEvent model 2026-11-03 15:16:38 -05:00
b4d5a632dd
extract adaptive sheets into their own library material_adaptive_sheets 2026-11-03 14:53:53 -05:00
2580cc8c1c
try to fix disposed errors when ending poll 2026-11-03 14:26:53 -05:00
2fc5a9bf85
make both HTML and plaintext links be styled the same way 2026-11-03 14:23:23 -05:00
8650c44266
add internal gomuks command support 2026-11-03 14:16:09 -05:00
3fc33a5ac9
Add MSC4391 support
Fixes #133
2026-11-03 13:12:58 -05:00
f35f715b81
don't try to download media for account switcher when logged out 2026-11-02 17:55:33 -05:00
e398043a49
allow editing in/out attachments from messages 2026-11-02 17:14:06 -05:00
e9b009d1b9
refactor to use mutations where helpful 2026-11-02 17:06:01 -05:00
641341ed90
Add account switcher
Fixes #146
2026-11-02 17:00:54 -05:00
3a8d977f11
add m.location support
Needs cross-platform testing. Currently only tested on Android.
2026-11-02 15:02:49 -05:00
979068fc3a
Add block button to profiles
Fixes #152
2026-11-02 12:44:41 -05:00
b55a6e0e83
allow viewing space timelines
Fixes #139
2026-11-02 12:30:04 -05:00
7007c9af89
allow adding / removing rooms from a space
Fixes #140
2026-11-02 12:21:58 -05:00
f6aaf49164
add poll support
Fixes #130
2026-11-02 12:03:52 -05:00
40f5d0f459
new linkify handling
Should fix mentions in non-HTML messages
2026-11-01 16:42:23 -05:00
bcb0c57015
allow colons in search regex 2026-11-01 12:48:32 -05:00
45b3ec10bf
show senders for both messages and stickers in reply previews 2026-11-01 12:44:52 -05:00
7baf56adef
stickers replace composer, instead of sending immediately
Fixes #153
2026-11-01 12:39:14 -05:00
51e3fe1007
add matrix: URI deeplinking
Fixes #148

Needs cross-platform testing, currently only tested on Android.
2026-11-01 11:52:13 -05:00
9e1d2f6921
fix search text being stripped when at end of message
using custom fork of fluttertagger for now
2026-10-31 15:33:30 -04:00
c9172e92eb
add push rule settings
Fixes #126
2026-10-31 15:22:13 -04:00
cb983701ca
make sdk bound less strict 2026-10-28 10:47:17 -04:00
285e6ad76a
check that formattedBody exists before rendering a message as HTML
In case people send HTML messages without HTML, which they do for some reason.
2026-10-26 23:54:28 -04:00
cd60163caf
update gomuks vendorHash 2026-10-26 17:35:52 -04:00
a2638d5c82
bump gomuks, use new pause/resume commands 2026-10-26 17:32:06 -04:00
f971c50df0
use a text span with a recognizer instead of a WidgetSpan
Fixes displaynames not ellipsising properly
2026-10-26 12:45:54 -04:00
1efbc131b4
auto write desktop file on debug mode install on Linux
Fixes #150
2026-10-26 12:13:06 -04:00
4b329b4c6f
add settings for image packs
Closes #131
2026-10-26 12:05:45 -04:00
2041b81141
add toJson to all content models
Fixes a regression from the primary constructor content migration
2026-10-25 18:30:28 -04:00
a3ef4f8135
fix invalid power level creation
oops, misread spec and now this breaks rooms on Synapse
2026-10-25 17:04:21 -04:00
0a09a4ee0a
general cleanups and mounted guards 2026-10-24 12:02:23 -04:00
62e200f305
fix typing indicators not ellipsizing 2026-10-24 11:30:14 -04:00
dd01ad9d74
migrate Content classes to primary constructors
The Riverpod bug preventing us from doing this has been fixed.
2026-10-23 20:44:29 -04:00
853116ab2f
treewide cleanups 2026-10-23 20:26:37 -04:00
53d9c2b1e6
make enums fall back to unknown or null where possible
Futureproofing.
2026-10-23 20:12:54 -04:00
401b527714
ignore invalid account data 2026-10-23 20:05:23 -04:00
3754bc2feb
allow sending emoji/stickers from emote packs 2026-10-23 18:16:45 -04:00
868023a4a1
avoid un-needed reloads for diffs 2026-10-23 17:02:41 -04:00
9e6951818a
hide server ACL events from timeline by default, introduce setting to show them 2026-10-23 14:29:37 -04:00
0743c4cfc6
reorder appearance settings 2026-10-23 14:26:26 -04:00
6336764da0
add power level groups 2026-10-23 12:24:22 -04:00
3a39f1c5ac
more intuitive permissions in encrypted rooms 2026-10-23 12:12:20 -04:00
6e2d56ec75
add diffing for a lot of events 2026-10-23 12:01:38 -04:00
4e140e9fc7
add pinned event and server ACL diffing 2026-10-23 11:28:44 -04:00
e5dd53ed6c
tweak color picking algorithm for power levels, and introduce setting for per PL or per user colors 2026-10-23 10:23:49 -04:00
c0f4c053b0
Make displayname colors based off of power level
Fixes #128
2026-10-23 01:10:01 -04:00
ee36a9b1c8
Revert "use media_kit from main"
This reverts commit f5371382d7.
2026-10-23 00:36:31 -04:00
f5371382d7
use media_kit from main
Has some perf improvements, especially for Linux
2026-10-23 00:28:43 -04:00
2937c241e0
release v1.0.0 2026-10-22 22:10:33 -04:00
9dcddb3fbe
Revert "quick smoketest of macos"
This reverts commit 3014a9d029.
2026-10-22 22:08:59 -04:00
3014a9d029
quick smoketest of macos 2026-10-22 21:41:31 -04:00
4a9f151d92
don't watch entire room in room settings
performance improvement
2026-10-22 21:36:16 -04:00
d4ae5ebccf
drop unstable timezone key support 2026-10-22 21:32:19 -04:00
850bd33b18
fix maxMagnitude value for power levels
(oops thats a xor not an exponent operator)
2026-10-22 21:28:51 -04:00
8fbfcde9c5
add profile editor
Fixes #12
2026-10-22 21:20:13 -04:00
e0b5dc58d0
gate android branches of window_manager 2026-10-22 17:31:43 -04:00
ffbf2722f7
turn down minimum size
too large for linux mobile rn
2026-10-22 16:33:02 -04:00
3e1552f246
don't open media if context not mounted 2026-10-22 16:09:27 -04:00
44a1ec667e
switch to new window_manager from main 2026-10-22 16:06:28 -04:00
479279b68e
bring back padding for filters on member list 2026-10-22 15:33:29 -04:00
b0dd452926
add power level room settings 2026-10-22 15:29:02 -04:00
fcfe4eed1e
more correct fallback for unknown join conditions 2026-10-22 14:32:58 -04:00
b390dbbbe1
add room access settings 2026-10-22 14:22:54 -04:00
8e51852ae3
add general room settings 2026-10-22 11:29:19 -04:00
48c04d9b3e
make swipe from right open member list 2026-10-22 10:53:07 -04:00
7f30150e95
make theme's platform Android when Linux Mobile Mode is on
Allows for swiping drawers closed
2026-10-22 10:37:31 -04:00
c8e1aef74b
show mutual rooms in user popover
Fixes #97
2026-10-22 10:25:50 -04:00
5ee3449f02
bump gomuks 2026-10-22 09:56:52 -04:00
1715ee785e
make names in typing indicators clickable 2026-10-21 23:01:22 -04:00
e38307657d
Read receipt support
Fixes #93
2026-10-21 22:58:06 -04:00
e14ab3e708
use *Async methods from gomuks
Performance improvement due to not needing as many Isolates.
2026-10-21 22:57:26 -04:00
f5645db6ea
only reserve space for jump to bottom when it exists 2026-10-21 15:09:41 -04:00
0fcbc275cd
add typing indicators
Fixes #92
2026-10-21 15:07:02 -04:00
a54004736b
add event search
Fixes #77
2026-10-21 13:31:01 -04:00
427e06be3e
add knock support
Fixes #123
2026-10-21 12:32:02 -04:00
a1a15af30d
use dot shorthands for default immutable collections where possible 2026-10-20 18:23:41 -04:00
800fb5566d add a global toggle to hide membership events (#142)
fixes #141

Co-authored-by: seres <seres@seres.eu.org>
Reviewed-on: Nexus/nexus#142
2026-10-20 18:15:01 -04:00
80197aff00
add keyboard inset workaround to MainActivity
Should be reverted once https://github.com/flutter/flutter/issues/191156 is fixed
2026-10-20 15:17:34 -04:00
78162efbde
move MainActivity to correct directory 2026-10-20 15:15:42 -04:00
a2906746b9
release v1.0.0-alpha5 2026-10-19 21:18:33 -04:00
6659f21ceb
apply SafeArea on showAdaptiveSheet
This fixes actions being cut off when using button navigation.
2026-10-19 21:18:03 -04:00
a065b823bb
remove outdated bundled-emoji reference 2026-10-19 21:10:05 -04:00
765e96cce4
refactor and improve notification handling 2026-10-19 21:10:05 -04:00
9cf16db669
use webcrypto fork to fix macOS builds 2026-10-19 20:39:33 -04:00
2c8a4da2a8
Reapply "override webcrypto to a version with build hooks"
This reverts commit eca2b0b558.
2026-10-19 20:02:34 -04:00
cb426cd27e
add fallback emoji font list until flutter 3.50 releases 2026-10-19 19:39:09 -04:00
bfd259543d
don't bundle an emoji font
Might need reverts after testing.
2026-10-19 18:19:05 -04:00
9f0b80072d
pause sync when app is backgrounded 2026-10-19 17:40:57 -04:00
b6ee5aec64
use system emoji before bundled
Needs testing on:
- Android
- Windows
- MacOS
To make sure that it doesn't break stuff.
2026-10-19 10:38:30 -04:00
deac9ef24e
handle permission denials more gracefully 2026-10-18 16:36:36 -04:00
e24e99fd8e
slight improvements to windows and darwin notifs 2026-10-18 16:14:00 -04:00
4580110da0
update gomuks vendorHash 2026-10-18 16:04:56 -04:00
d1724932b2
clean up and improve notifications
Thanks to Gomuks' new handling, we have sender displayname and avatar, and can use android's conversation notifications.

On other platforms, we just append sender name to the body, bolded if possible.

This also improves the logic on when to send notifications, as we drop notifs where `response["notification"]` is null.

We also now correctly set if notifications should play a sound or not, based on `PushNotification.sound`.

`PushNotification.image` handling might come sometime in the future, but it seems hard on Android.
2026-10-18 16:01:37 -04:00
a6fe80fea2
split APKs per abi and only upload arm64 APK 2026-10-17 16:19:27 -04:00
9f45cbc1e7
add warning when user has cross signing but not secret storage 2026-10-17 16:12:10 -04:00
eca2b0b558
Revert "override webcrypto to a version with build hooks"
This reverts commit 4e6ba571fc.

Due to an upstream bug, this broke Linux aarch64 builds, as well as MacOS builds.
2026-10-17 11:53:23 -04:00
4e6ba571fc
override webcrypto to a version with build hooks 2026-10-17 11:37:51 -04:00
200e03f082
noheic always 2026-10-17 11:21:20 -04:00
8180338d99
use another avif library that works on aarch64-linux 2026-10-17 11:18:23 -04:00
72c5e7d819
add errorBuilder to reactions 2026-10-17 10:24:30 -04:00
254b7e134f
release v1.0.0-alpha4 2026-10-16 22:14:15 -04:00
ef25e765d4
handle events_decrypted 2026-10-16 22:12:15 -04:00
58a27fdd9e
tiny cleanup in avif decoding 2026-10-16 22:00:00 -04:00
6d42477041
add support for avif images
Fixes #138
2026-10-16 20:35:42 -04:00
2f17f5b6c6
add swipe to reply
Fixes #90
2026-10-16 18:08:42 -04:00
1380233f2e
release v1.0.0-alpha3 2026-10-16 17:20:36 -04:00
a3a3781252
open sidebar on homepage pop 2026-10-16 17:17:19 -04:00
81851bdc42
fix no room selected after leave / init 2026-10-16 17:13:25 -04:00
f19a51939c
small cleanups 2026-10-16 17:06:22 -04:00
0ad85f24d5
Add support for downloading media
Fixes #85
2026-10-16 17:05:26 -04:00
1c2ba2971b
release v1.0.0-alpha2 2026-10-16 11:23:14 -04:00
fb0af571ed
fixup controls on narrow videos 2026-10-16 11:14:07 -04:00
9cd43f4e3c
only start timer to end highlight after scroll complete 2026-10-16 11:08:24 -04:00
0fa0f57738
fix ctrl+v text paste not working 2026-10-16 11:02:23 -04:00
00f22d46b7
slight cleanups 2026-10-16 10:56:55 -04:00
23046f08a9
add support for initializing and resetting crypto identity
Fixes #137
2026-10-16 10:49:04 -04:00
784e5254e2
fixup credits header on readme 2026-10-15 23:41:40 -04:00
7193ac0dba
remove progress list and disclaimer for readme
Progress list has been replaced by issues, now there aren't too many unchecked boxes.
2026-10-15 23:40:33 -04:00
7ab4b5e59f
update screenshots 2026-10-15 23:28:08 -04:00
c23dc19c6e
update readme progress list
[skip ci]
2026-10-15 23:03:48 -04:00
0b79aac7af
update readme for release
[skip ci]
2026-10-15 23:01:47 -04:00
e4f290eaa6
release v1.0.0-alpha1 2026-10-15 22:57:36 -04:00
d309754c60
fix nix build 2026-10-15 22:57:36 -04:00
a5dedb0d38
add Not yet implemented warning to discover / directory page 2026-10-15 22:41:20 -04:00
659e76b8f8
add slight padding above browse space fab 2026-10-15 22:40:55 -04:00
ab3eda0beb
show topics and summaries for spaces 2026-10-15 22:39:37 -04:00
b71a7f0bd6
Show space hierarchies
Fixes #83
2026-10-15 22:34:27 -04:00
8d944831f5
treewide: small refactors 2026-10-15 20:10:44 -04:00
9117663c48
mass migrate to adaptive sheets 2026-10-15 20:06:37 -04:00
ba258c2fcd
invite-related fixups 2026-10-15 20:01:24 -04:00
485383e99c
fixup weird behavior when leaving spaces 2026-10-15 19:50:35 -04:00
ed84410039
add support for creating rooms
Fixes #81
2026-10-15 19:49:04 -04:00
df592b3f38
add better OAuth error
Fixes #88
2026-10-15 18:30:12 -04:00
d47c4ae15c
update gomuks vendorHash 2026-10-15 15:30:33 -04:00
d308ef98cb
small fixups
Fixes #67
2026-10-15 15:13:31 -04:00
f082a75d9c
run GomuksStart on an isolate 2026-10-15 14:25:45 -04:00
36f61a62d8
allow pasting attachments from keyboard
Closes #55
2026-10-15 13:56:10 -04:00
27137c488d
replace media_kit's video widget with a custom impl
Fixes #48

This helps Linux touchscreen devices like Linux phones, where the old widget didn't work correctly.
2026-10-15 10:53:30 -04:00
ce5c7b972b
make user sheets popovers on desktop 2026-10-15 10:25:20 -04:00
76d78596cd
show bottom sheets / dialogs / menus based on screen size
Fixes #76
2026-10-15 10:20:27 -04:00
ed2d08ed40
fixup showing an error when opening info dialogue on sync waiting 2026-10-15 10:02:43 -04:00
24e516e6dd
store related events for mentions 2026-10-15 00:44:08 -04:00
66a437094a
show badges totaled in more areas 2026-10-15 00:42:56 -04:00
d37ec2878b
add invite support
Closes #82
2026-10-15 00:35:38 -04:00
dbf30c3706
fix historical event jumps
Fixes #118
2026-10-14 23:52:16 -04:00
2d619bf1ad
properly order historical timelines
Fixes #117
2026-10-14 23:37:53 -04:00
07700c1eff
add syncing waiting / error / failed indicator 2026-10-14 23:21:31 -04:00
a5fef138dd
add support for altering room ordering
Fixes #115
2026-10-14 22:58:10 -04:00
7353955d4e
add more guidelines to DEVELOPMENT.md 2026-10-14 17:04:05 -04:00
012ecd9249
treewide sweepfixes 2026-10-14 17:01:39 -04:00
8fda43ccf8
Push sidebar if needed and scroll to notif when tapped
Fixes #116
2026-10-14 16:51:14 -04:00
3a33bf7bfe
Allow swapping UnifiedPush distributor
Fixes #120
2026-10-14 16:41:01 -04:00
9237a3dbed
use upstream nix2flatpak
All PRs have been merged.
2026-10-14 16:27:27 -04:00
30a5fa100c
gracefully catch errors when parsing membership state 2026-10-12 10:36:41 -04:00
f198888635
bump deps
fixes #119
2026-10-11 13:43:13 -04:00
be945031cd
bump nix2flatpak 2026-10-11 12:48:53 -04:00
ad525b338c
fix state events not wrapping
Why did it do this ??????
2026-10-08 10:12:43 -04:00
0010160714
fix bigEmoji causing an overflow in replies 2026-10-08 10:08:33 -04:00
f741a6790d
update gomuks vendorHash 2026-10-06 19:27:37 -04:00
7be1dfe0bc
add inviting from room menu 2026-10-06 19:23:00 -04:00
08dcfdab75
fixup topic alignment for short topics 2026-10-06 10:26:59 -04:00
c81000d6c6
slightly improve bitfield handling for UnreadType 2026-10-05 20:16:01 -04:00
3c6c610f7c
improve UP timeout behavior
Hopefully more reliable.
2026-10-05 17:00:56 -04:00
61c5aa94c2
add timeout for UP reg 2026-10-05 15:07:22 -04:00
02ba9180db
fix error when opening settings during init sync 2026-10-05 14:23:06 -04:00
3c6f9f5da2
allow adding minimized button on all desktop platforms
Didn't mean to limit that to Linux
2026-10-05 12:35:18 -04:00
1d4af179d4
try opting out of predictive back
Needed until flutter bug is fixed
2026-10-05 12:23:08 -04:00
9974a6c225
add enableOnBackInvokedCallback true
Hopefully fixes drawers not popping?
2026-10-05 12:01:13 -04:00
9c83ae573a
add setting for showing minimize button 2026-10-05 11:26:26 -04:00
66cfb0e2c6
fix wrapping issues on event previews 2026-10-05 11:16:11 -04:00
02c486e1b3
make it more clear which methods free the buffer 2026-10-05 10:11:16 -04:00
b694da31f9
Revert "swap to SystemNavigator.pop from exit"
This reverts commit a86748e85f, as it was causing issues on Windows.
2026-10-05 10:10:47 -04:00
f931615890
fix scrollview not sticking to bottom if composer sends multiline messages 2026-10-04 17:15:23 -04:00
ae8fa17db3
mark homeserver url field as a .url keyboardType 2026-10-04 16:45:19 -04:00
a63f4674fd
make composer auto capitalize sentences 2026-10-04 16:06:54 -04:00
a46d93dfc5
filter shown recent emoji to valid emoji 2026-10-04 13:01:06 -04:00
294723fdfb
tweak reply sizing more 2026-10-04 11:22:14 -04:00
5e3c7ffa68
alter text alignment and icon sizes treewide 2026-10-04 11:16:39 -04:00
1fd9810b83
fall back to filename when body is empty 2026-10-04 10:25:29 -04:00
d119370816
tweak padding and sizing in reply renderer 2026-10-04 10:08:17 -04:00
ffaa516dcd
always make event previews two lines for non-state events 2026-10-04 00:32:20 -04:00
e480e6193b
refactor and improve room list 2026-10-03 21:58:01 -04:00
e41efd92c1
turn up verify page horizontal padding
looks a little nicer
2026-10-03 21:32:53 -04:00
b253fc1d96
change font size of tagline on select server page 2026-10-03 21:05:42 -04:00
967fe66a1b
remove unredacted from login page for now 2026-10-03 21:01:20 -04:00
658fa562cf
await route.completed before assuming settings are popped 2026-10-03 20:58:11 -04:00
fe33ae2e97
lower insetPadding for verify dialog 2026-10-03 20:39:00 -04:00
bcb085c035
scroll chat by composer height change delta
slightly evil but works
2026-10-03 20:35:44 -04:00
eae79d943d
make verify dialog scrollable 2026-10-03 20:15:17 -04:00
bdac4a11d7
default to empty via when none are provided
fixes joining with only a room alias
2026-10-03 14:44:22 -04:00
2ed2443298
make composer revert to unedited content when dismissing edit, plus more fixes 2026-10-03 14:40:19 -04:00
7f71adab4c
fix double watch in composer 2026-10-03 13:59:11 -04:00
0a3ec830a3
stop event preview resizing itself on load
Fixes #109
2026-10-03 13:50:46 -04:00
650f1ac8e4
allow hiding gomuks internal messages 2026-10-03 13:24:47 -04:00
af5f238db0
stop complaining at me formatter 2026-10-03 12:34:56 -04:00
006008f61d
rename AvatarOrHash.height to be more accurate 2026-10-03 12:25:22 -04:00
f23a29e7c1
tweak MessageDisplayname fallback state 2026-10-03 12:23:33 -04:00
493776e3dd
clear init complete state on logout 2026-10-03 11:56:17 -04:00
25afcf4acd
fix silent useless error during verify 2026-10-03 11:53:32 -04:00
e54b059bc9
fix not in range error when logging out 2026-10-03 11:44:35 -04:00
b8b074b229
bump gomuks 2026-10-03 11:26:18 -04:00
9ffad93469
cleanup logic in event renderer 2026-10-03 01:22:03 -04:00
3875c3a14a
Add a setting (off by default) for showing all rooms in home
Fixes #107

@LogN review
2026-10-03 01:15:11 -04:00
a86748e85f
swap to SystemNavigator.pop from exit 2026-10-03 01:01:59 -04:00
19363baa8d
fixup issues in join dialog
Fixes #112
2026-10-03 00:53:05 -04:00
41bdb04b72
make chat follow new messages when scrolled to bottom
Fixes #106
2026-10-02 19:57:48 -04:00
8da46dffe4
allow hiding client stickies
Fixes #105
2026-10-02 17:01:25 -04:00
49f2dc55b8
update platform support in readme 2026-10-02 12:13:26 -04:00
f9ff04405f
mark nix package as broken on darwin 2026-10-02 12:09:55 -04:00
ecb965994a
small tweaks to room list 2026-10-02 11:36:03 -04:00
36917bbea5
fix localContent being outdated for edits 2026-10-02 11:32:10 -04:00
684d6bad82
only pop from notifications list if Navigator reports canPop 2026-10-02 11:22:03 -04:00
45d69b0b9f
move NotificationsPage into sidebar via NavigationBar 2026-10-02 11:19:46 -04:00
3b2cf6b2a4
move padding for user sheet inside the scrollview 2026-10-01 18:29:03 -04:00
a61cac130b
make user bottom sheet scrollable 2026-10-01 18:22:02 -04:00
ec30adc0e3
allow sending media even when last event was an edit 2026-10-01 18:12:59 -04:00
a63d182c50
show git commit in about dialog 2026-10-01 16:15:36 -04:00
64a8edda7d
don't make composer buttons narrow
It doesn't actually change the hitbox? Only the shape of the InkWell.
2026-10-01 15:27:22 -04:00
2e85b26511
make PinnedEventsController expose IList of eventRowIds 2026-10-01 12:26:12 -04:00
a91b45be31
make send button narrow 2026-10-01 12:23:13 -04:00
d9062f68c4
bump nix2flatpak, use updated runtime 2026-10-01 12:07:24 -04:00
b3b873ffce
hardcode padding in order to make PopupMenuButton actually .narrow
This is needed because of a flutter bug, see https://github.com/flutter/flutter/issues/193656.
2026-10-01 11:33:10 -04:00
ab69bfe553
bump lock 2026-10-01 10:31:41 -04:00
98108d013e
use m3e iconbuttons 2026-09-30 11:47:40 -04:00
bdf8fc6ce1
make inline codeblocks actually inline 2026-09-30 11:16:03 -04:00
b738c1d0e0
Bump gomuks
Fixes #104
2026-09-30 09:51:52 -04:00
93b832839b
only add non-free text reactions to recent 2026-09-29 21:40:08 -04:00
301bcd94f2
fixup jumps from notifs sometimes not working 2026-09-29 20:47:20 -04:00
da7f2dcf4e
change how cross-room jumping works 2026-09-29 20:23:16 -04:00
b92aaed610
fixup notif jumping 2026-09-29 20:11:57 -04:00
1e4aab08ad
clean up and fix up jumping 2026-09-29 19:52:11 -04:00
1c4bf99be2 Add support for jumping to event links (#103)
Fixes #78.

Reviewed-on: Nexus/nexus#103
2026-09-29 17:00:43 -04:00
597112f5d3
add room summary image for TWIM
Yes, I'm preparing rather early this week :p
2026-09-29 16:05:28 -04:00
c8b9654219
Clickable room links
Fixes #80
2026-09-29 16:02:25 -04:00
9bc2d9955a
make relatedEvent store a rowId 2026-09-29 15:17:35 -04:00
ead463262c
make NotificationsController work off of rowIds 2026-09-29 15:10:54 -04:00
281bab0202
Add room preview dialog
Closes #79
2026-09-29 13:55:17 -04:00
9e024fb6f2
only mark as read when fully at bottom 2026-09-29 10:46:15 -04:00
a0036bdda3
watch clientSticky in RoomChatController 2026-09-29 10:24:45 -04:00
bd7cd0b10c
fixup edit handling 2026-09-29 09:45:51 -04:00
ec0934110f
swap msystem to avoid warning on windows build 2026-09-28 23:01:50 -04:00
1cfda9c68b
bundle more DLLs with windows build 2026-09-28 22:03:21 -04:00
1758815cc9
bundle all fonts
Should fix #57
2026-09-28 20:43:50 -04:00
9f4702b9d1
remove SelectableRegion as it is causing issues 2026-09-28 19:32:18 -04:00
195d212d68
improve speed of state merge 2026-09-28 18:29:46 -04:00
a698cf8c28
small cleanups 2026-09-28 18:20:36 -04:00
338d5dfee9
clarify flatpak updates 2026-09-28 17:56:13 -04:00
efa3681816
improve install docs, incl flatpak repo and nixos module 2026-09-28 17:53:38 -04:00
3824ca1c13
remove metadata
It is now statically hosted by caddy
2026-09-28 17:45:01 -04:00
01566894a6
add flatpak repo
Hopefully this works
2026-09-28 16:48:18 -04:00
64e548f0c5
fix hash for xdg_desktop_portal
Fixes nix build
2026-09-28 14:36:27 -04:00
4bde7875fb
up-to-date xdg portals
Fixes #101
2026-09-28 14:32:18 -04:00
07f8e58a4c
named records, small fixes to last commit 2026-09-28 13:17:15 -04:00
a220e27877
Make RoomChatController only return IList of eventRowId
Fixes #102
2026-09-28 12:46:00 -04:00
5304f22456
workaround for reactions not updating on historical timeline 2026-09-28 11:03:55 -04:00
e5b39507c8
Jump to current timelime when scrolled to bottom of historical timeline
Fixes #100.
2026-09-28 09:55:08 -04:00
d37538b69f
gate pop behind canPop 2026-09-28 09:49:20 -04:00
e300f4efc9
small fixups 2026-09-26 21:11:11 -04:00
bab699658f
pop sidebar before pushing notif page 2026-09-26 20:32:44 -04:00
1c1f585362
add JumpToEventController to allow jumping to events from the NotificationsPage when it has been pushed from the NotificationController 2026-09-26 19:37:47 -04:00
c90a1c41b0
working jumps from notif page
Doesn't work from notif page pushed from notif controller
2026-09-26 19:13:30 -04:00
9f070fcdba
reorganize pages into being under widgets 2026-09-26 18:06:51 -04:00
d712bb3193
tweak scroll behavior 2026-09-26 14:52:24 -04:00
3217c17ea0
don't depend on SuperSliverList for scrolls 2026-09-26 13:58:30 -04:00
031fbe326c
change highlight timing 2026-09-26 13:42:31 -04:00
0149aa2f84
fixup jumping to pins 2026-09-26 13:30:39 -04:00
a1efdb0f46
check off jumping on readme 2026-09-26 13:15:48 -04:00
389b65ae61 add support for jumping to out-of-context events (#95)
Fixes #84.

Reviewed-on: Nexus/nexus#95
2026-09-26 13:03:16 -04:00
3429a3ed98
add twim image 2026-09-25 10:20:53 -04:00
7ab92f76bf
fix for janky scrolling when tapping reply with SuperSliverView
I don't like this but it does work.
2026-09-24 22:46:48 -04:00
aecfac9533
free base before buffer 2026-09-24 22:20:31 -04:00
c7b89b8e56
small cleanups 2026-09-24 20:59:18 -04:00
721727d48c
small cleanups 2026-09-24 20:50:28 -04:00
004c3bcd0d
remove outdated error ignores
I believe some of these are fixed, if not they should be noisy so I notice them and can re-add
2026-09-24 20:38:30 -04:00
943cd85e22
treewide: ref.watch(ClientController.provider.notifier) -> ref.read 2026-09-24 20:35:20 -04:00
09904536e7
small fixups 2026-09-24 20:31:22 -04:00
856072e0b0
fixup! refactor chatview to have two sliver lists 2026-09-24 20:22:30 -04:00
110caff170
refactor chatview to have two sliver lists
Co-authored-by: Erwan Leboucher <erwanleboucher@gmail.com>
2026-09-24 20:02:23 -04:00
eeb2e2f54b
extract scroll helpers into their own hook 2026-09-24 18:10:30 -04:00
529a2e35c4
make buildEventOptions an extension 2026-09-24 14:41:13 -04:00
6ad4657d76
refactor chatview 2026-09-24 14:24:41 -04:00
38fd19ad1a
move isInBackground in main 2026-09-24 14:08:54 -04:00
0636366359
fixup errors caused by bump 2026-09-24 11:56:46 -04:00
efe9262a97
tweak timeout 2026-09-24 11:49:19 -04:00
2763a0fdf5
bump deps 2026-09-24 11:47:20 -04:00
a5da44fdea
more restrictive timeout on notification init 2026-09-24 11:42:57 -04:00
ccca02a0bc
Separate out GomuksListenerController from ClientController
Fixes #89
2026-09-24 11:03:16 -04:00
721349ca21
explicit listener for ClientStateController in notifs 2026-09-23 11:22:47 -04:00
5d994bf2bb
wait for metadata to come in on notif's rooms before sending them 2026-09-23 11:17:02 -04:00
a90bf00f18
dispose notif handler 2026-09-23 10:30:12 -04:00
f2efbbeb9f
fixup select 2026-09-22 20:48:59 -04:00
ed761d6071
gate selectable text behind mouse connected 2026-09-22 20:40:55 -04:00
8f35ea2435
Add "Copy Text" context menu option 2026-09-22 20:18:16 -04:00
023e75e063
always make events selectable (on mobile the long press overrides it) 2026-09-22 20:11:18 -04:00
4d0a4605d6
type contextMenuCallback 2026-09-22 19:57:23 -04:00
faa7292001
add codeblock copy button 2026-09-22 19:19:21 -04:00
027033ad9e
allow copying messages when on desktop without mobile mode on 2026-09-22 19:13:32 -04:00
ece3d16318
use dot shorthands in about dialog 2026-09-22 18:48:47 -04:00
5738239da2
fix name of ShowAboutDialog extension 2026-09-22 18:31:38 -04:00
a2791a6717
various small fixups 2026-09-22 15:53:37 -04:00
f910d87a23
don't require login for UP controller to finish init 2026-09-22 15:33:55 -04:00
f4142859ba
fallback isFocused to true 2026-09-22 15:05:57 -04:00
775c77194b
run in background properly on android 2026-09-22 15:02:30 -04:00
41806be9bf
More platform-independent approach to managing registered state 2026-09-22 14:34:08 -04:00
6e47594a91
fix race condition on startup 2026-09-22 11:36:29 -04:00
386b3ad1cf
inline the mention fetch 2026-09-22 10:37:49 -04:00
61f2aa7f2a
update gomuks vendorHash 2026-09-22 10:02:56 -04:00
0c660a98a7
just grab events out of get_mentions for now 2026-09-22 09:57:10 -04:00
09534a6775
use GomuksConfig 2026-09-22 09:53:00 -04:00
0cd815dc79
init ClientController before other providers 2026-09-21 23:03:57 -04:00
800ed0636d
bump nix2flatpak 2026-09-21 22:18:24 -04:00
e4cf2a837c
fixup login 2026-09-21 21:41:18 -04:00
11dca9bf14
seperate URI handler desktop file 2026-09-21 21:20:16 -04:00
436b8642b3
read not watch MultiProviderController providers
Fixes random loading animations
2026-09-21 19:27:10 -04:00
269d97be8f
bump nix2flatpak 2026-09-21 18:53:49 -04:00
43f70f35a3
bump nix2flatpak 2026-09-21 18:00:42 -04:00
92b148f5b6
gate registration behind not flatpak 2026-09-21 17:54:03 -04:00
00a42b5f1a
fixup flatpak build 2026-09-21 17:20:43 -04:00
700b4e720f
open notifications page on notif tap
please please please let me never touch c++ again i hate it

also the c++ got reformatted here but i dont really care
2026-09-21 16:56:12 -04:00
2a11bcb7e8
update hashes 2026-09-21 15:44:10 -04:00
fea39e4191
use xdg_desktop_portal over flutter_local_notifications on linux 2026-09-21 15:43:01 -04:00
deaf564c36
use portals for linux notifs 2026-09-21 14:16:29 -04:00
c0d14ac30e
don't write service by default 2026-09-20 17:27:45 -04:00
1a6a5c36ea
link to module from readme 2026-09-20 17:21:26 -04:00
35ef82accd
fixup module 2026-09-20 17:18:39 -04:00
f40dd22277
use mkEnableOption for enableNotifications 2026-09-20 17:14:56 -04:00
1cfea5a819
add nix module 2026-09-20 17:13:22 -04:00
b3023d8147
don't auto create dbus service 2026-09-20 17:00:10 -04:00
e8fb3a8523
use SharedPreferencesAsync to avoid race condition in Sharedprefs
This was so painful to debug...
2026-09-20 15:45:32 -04:00
0d1ace3fd0
add more logs for notifs 2026-09-20 13:41:22 -04:00
3d690c26d8
hopefully fixup UP on linux when backgrounded 2026-09-20 13:27:47 -04:00
3fee789c90
fixup flatpak perms 2026-09-20 00:07:47 -04:00
d7c64fea80
potentially fix notifs on flatpak 2026-09-20 00:04:50 -04:00
87e7e093f7
Revert "don't invalidate UP controller"
This reverts commit 73c4a7d07f.
2026-09-20 00:02:49 -04:00
8b7e29ae33
Set device name to "Nexus on $platform"
Fixes #86.
2026-09-19 22:41:13 -04:00
673c5bd894
fix memory leaks
Oops! They were pretty slow, but still adds up. This might fix the bug that was stopping Nexus from working on GraphineOS.
2026-09-19 21:13:03 -04:00
650c62fb99
update gomuks hash 2026-09-19 18:45:05 -04:00
4f3b77f9f3
set env for gomuks
Fixes #62
2026-09-19 18:41:09 -04:00
85bb653980
fix gomuks init on android / ios 2026-09-18 15:39:45 -04:00
a9d2ccbcd1
bump gradle 2026-09-18 13:02:40 -04:00
73c4a7d07f
don't invalidate UP controller 2026-09-18 10:57:16 -04:00
57f9498aa3
better wrapping behavior for timestamps on state events 2026-09-18 09:58:49 -04:00
cfab803fa0
show timestamps for state events 2026-09-17 23:21:33 -04:00
f23a35384d
nicer / less intrusive mention style 2026-09-17 14:27:51 -04:00
7f7fb451e6
Bump emoji picker to 1.1.1
Better performance now.
2026-09-17 12:09:16 -04:00
5d62e66cd9
remove duplicate "Windows EXE" entry in "Try it out" section of README
Thanks to @julian45 for spotting this!
2026-09-16 22:11:43 -04:00
009ba504e3
fixup logic for not init-ing UP
An XOR was never the right choice for this
2026-09-16 22:07:00 -04:00
30b922d390
enlarge emojis on emoji overlay 2026-09-16 22:03:42 -04:00
63183e0824
don't init UP on platforms other than Linux or Android 2026-09-16 21:59:55 -04:00
163947fc90
add emoji overlay 2026-09-16 16:52:58 -04:00
11457470a0
move around args to overlays 2026-09-16 16:30:15 -04:00
dca0b7dd7d
refactor overlay system 2026-09-16 16:27:10 -04:00
e5dc270f83
bump emoji picker 2026-09-16 16:27:07 -04:00
810a0b102b
add support for setting recent emoji 2026-09-16 15:46:51 -04:00
ec1603b828
add support for showing recent emoji 2026-09-16 15:18:41 -04:00
5acdbb5be0 Better emoji picker (#73)
Adds a better, custom, emoji picker.

Reviewed-on: Nexus/nexus#73
2026-09-16 14:47:46 -04:00
e21c9e8c22
make highlights work better for Notifications page 2026-09-12 09:52:01 -04:00
ea687471bc
Make TODO on notifications page more useful 2026-09-11 22:42:43 -04:00
8c440447f2
check off Notifications page in readme 2026-09-11 22:42:17 -04:00
8ebec15324
hide label whe not selected for filter 2026-09-11 22:41:38 -04:00
cd8d551e26
take notif filter out of card 2026-09-11 22:39:18 -04:00
118e5a5826
update readme for platform support to be more clear 2026-09-11 22:35:13 -04:00
6ca9b2a948
add notification page filter 2026-09-11 22:34:43 -04:00
23e01c7a0d
Notifications page
Doesn't yet allow for jumping to events
2026-09-11 22:03:42 -04:00
9e7fcdbef7
sticky -> clientSticky to avoid conflicts with sticky events 2026-09-11 19:50:29 -04:00
9507d69458
move windows warning in readme 2026-09-11 19:29:47 -04:00
13d90df226
remove un-needed overrides 2026-09-11 19:28:10 -04:00
e925f9657c
add needed permissions for UnifiedPush to nexus flatpak 2026-09-10 17:14:41 -04:00
b8882d6e48
mark off notification support as added, add notifications page todo 2026-09-10 17:06:14 -04:00
ff9bf3bec4 Push Notifications (#66)
Fixes #35.

Things to do:
- [x] Register with local distributor
- [x] Register with homeserver
- [x] Recieve messages
- [x] Show notifications
- [ ] Notifications page (could come later)

Reviewed-on: Nexus/nexus#66
2026-09-10 15:37:05 -04:00
6e42902322
run GomuksInit on an Isolate
Fixes #70
2026-09-10 15:32:30 -04:00
c105a6035c
use dot shorthands where possible in generate script 2026-09-10 15:21:53 -04:00
3d7ef9b32f
actually generate bindings
Yes `ffigen`, I did actually want you to generate the bindings, not a file consisting only of comments. Crazy, right?
2026-09-10 15:20:56 -04:00
51ef66174a
fix generate script to work with new ffigen 2026-09-10 15:15:12 -04:00
1efb68ebe0
bump deps, remove unwanted and now un-needed analyzer rule
Fixes #69
2026-09-10 15:09:47 -04:00
0a667fda0b
update gomuks vendorHash 2026-09-09 15:44:25 -04:00
da352cd035
cap max length of embeds 2026-09-09 15:37:41 -04:00
0201f71e5d
allow banning left users 2026-09-09 15:26:04 -04:00
4314c88d5c
fallback to empty profile if fetch fails 2026-09-09 15:25:10 -04:00
88cdcf9863
use compat bridge for settings sidebar 2026-08-23 14:02:25 -04:00
e2f25749e0
fix fetching spec versions early 2026-08-23 14:00:11 -04:00
47a3d9d92f
Add comment about why MaterialUiCompatibilityBridge is needed for HtmlWidget
[skip ci]
2026-08-22 15:19:46 -04:00
a680c5cd0c
update navigation_rail_m3e hash 2026-08-22 15:15:39 -04:00
0887421f3e
put bridge for link colors 2026-08-22 15:14:41 -04:00
a090d88a23
add theming workaround for navigation_rail_m3e 2026-08-22 15:12:35 -04:00
32693fb3b5
fix path in nix build 2026-08-22 14:26:28 -04:00
4e1f1b64bc
run APK build on x86_64 2026-08-22 14:18:12 -04:00
20f1c784f6
optimize gomuks build size 2026-08-22 14:16:35 -04:00
9b79304edc
try to optimize APK size 2026-08-22 14:05:31 -04:00
b797b8de9c
fix icons not rendering 2026-08-22 13:51:44 -04:00
56bb75866c
bump JDK version 2026-08-22 13:50:00 -04:00
3baea40669
skip broken android lints 2026-08-22 13:24:26 -04:00
2e72ecd559
fix navigation_rail_m3e hash
Fixes nix build
2026-08-22 13:06:33 -04:00
077044ec19 Move to Flutter 3.47, use the improvements that come with this (#64)
Reviewed-on: Nexus/nexus#64
2026-08-22 13:04:33 -04:00
01b13b4764
set min version of macos to 13.0 2026-08-12 10:46:32 -04:00
050e42cc6f
comp for older macos 2026-08-12 10:34:36 -04:00
67cee201b6
add TODO comment to LinkToMention extension 2026-08-11 20:52:14 -04:00
2d7b067c93
use mobile icon for macOS
this looks better in the macos launcher squircles
2026-08-11 20:39:04 -04:00
a9993013f5
add rooms to mention chips
Needs handling for event links, plus clickability
2026-08-11 20:34:43 -04:00
9c488e8981
only upload .dmgs 2026-08-11 20:08:59 -04:00
5c16f42d20
pin upload-artifact to a commit 2026-08-11 19:58:15 -04:00
092fc616e6
fix paths in macos CI 2026-08-11 19:56:26 -04:00
6cbf78be6b
change step names for macos
[skip ci]
2026-08-11 19:20:08 -04:00
68f4bb0c03
update macos status in readme 2026-08-11 19:18:09 -04:00
9e24f4cb31
add DMG builds 2026-08-11 19:12:56 -04:00
43d2e94d62
make loadOlder properly guard 2026-08-11 10:39:45 -04:00
62fe37c6ae
use mobile icons on iOS 2026-08-11 10:17:24 -04:00
b9dfbd3ca2
update MacOS icons 2026-08-11 10:16:18 -04:00
620440e2a1
Allow logging into homeservers without discovery working 2026-08-10 22:50:13 -04:00
724171384c
change readme wording
[skip ci]
2026-08-08 20:49:23 -04:00
1bd677eb23
add MacOS support to readme 2026-08-08 20:36:48 -04:00
41658c3a9d
change output artifact name for macos ci 2026-08-08 20:33:41 -04:00
b011cc2166
reformat build hook file
[skip ci]
2026-08-08 20:31:09 -04:00
75ad6cbd02
set SDKROOT for macos build 2026-08-08 20:20:02 -04:00
6c1d3d8894
debug macos 2026-08-08 20:08:49 -04:00
842ab0a82c
don't use xcrun clang on macos 2026-08-08 19:57:03 -04:00
a0e5d2fb9e
make macos-related actions not use nix 2026-08-08 19:48:56 -04:00
a2cdc3df68
set CC manually macos 2026-08-08 19:08:20 -04:00
07f8a35b74
bump deps, remove hack for fallback theme that is no longer needed 2026-08-08 19:05:04 -04:00
85b9007c47
bump flake 2026-08-08 18:53:12 -04:00
5bbd51c4bc
fix macos permission issues 2026-08-08 18:52:49 -04:00
21a0e0db70
correctly undo lipo changes 2026-08-08 18:03:57 -04:00
a5f42fe56e
add workaround for lipo issues with Flutter from Nix on MacOS 2026-08-08 17:56:01 -04:00
185c1d2714
undo lipo changes 2026-08-08 17:53:58 -04:00
7eab09585b
Revert "move lipo wrapper"
This reverts commit 56dbd91c96.
2026-08-08 17:51:00 -04:00
c84f0e7e93
dismiss keyboard on scroll of room chat 2026-08-08 17:02:31 -04:00
f7847d587c
only enable autofocus on desktop platforms 2026-08-08 16:57:51 -04:00
56dbd91c96
move lipo wrapper 2026-08-08 16:49:25 -04:00
7bb4d87638 feat: Add iOS platform support (#60)
Co-authored-by: Henry-Hiles <henry@henryhiles.com>
Reviewed-on: Nexus/nexus#60
2026-08-08 16:35:56 -04:00
bf31f5510a
make room dialog scrollable 2026-08-08 16:21:58 -04:00
bd185824f9
set loading when waiting for token exchange 2026-08-08 16:18:54 -04:00
2afd5ae258
put account data keys in model 2026-08-08 16:14:11 -04:00
76f9175857
update gomuks vendorHash 2026-08-08 13:27:10 -04:00
e32941f062
remove old extraEnv for macos
No longer needed.
2026-08-08 13:22:51 -04:00
cf89604ff5
update gomuks
Fixes error when fetching versions after login
2026-08-08 13:21:29 -04:00
83e8084213
catch parsing errors for invalid replies 2026-08-08 11:31:07 -04:00
ae5b6e2b40
bump gomuks, fix profile issues caused by this 2026-08-05 16:28:47 -04:00
1621e917c0
slight formatting change for video player 2026-08-05 16:03:49 -04:00
d1c2b2dd0a
show reactions inline in non-message events that are in bubbles, e.g. stickers
Fixes #59.
2026-08-05 16:03:41 -04:00
82a0dd90b0
update gomuks hash 2026-08-04 21:08:51 -04:00
f97c5548a3
add invite blocking support plus msc4494 support
To accomplish this I also reworked how account data is stored and added a method to fetch capabilities, and another method to set account data
2026-08-04 21:04:55 -04:00
115bec5f05
slightly tweak readme
[skip ci]
2026-07-31 11:55:48 -04:00
fc4aa5a10d
persist member list opened status 2026-07-31 10:20:06 -04:00
f3c31db244
update build requirements 2026-07-29 21:57:03 -04:00
419d75ca83
wrap messages with unknown message types 2026-07-29 19:46:39 -04:00
9831446c66
add a little padding to send errors 2026-07-29 16:18:07 -04:00
d7f49568a7
move attachment sending check to be earlier
fixes sending with keyboard before attachment uploaded
2026-07-29 12:11:57 -04:00
f0f426a647
improve matcher for encrypted media 2026-07-29 12:06:19 -04:00
80fa9673bb
fix pending attachments disappearing when new events are sent 2026-07-29 11:58:12 -04:00
8c25228bd9
comment out macos CI auto running [skip ci] 2026-07-28 20:39:03 -04:00
9bf664624a
clone submodules on macos 2026-07-28 17:43:51 -04:00
e8b90591d5
only include wayland in devshell on macos 2026-07-28 17:16:21 -04:00
b2813a0eb5
use devshell for macos 2026-07-28 17:04:06 -04:00
9298eb815d
use libclang.dylib on macos 2026-07-28 15:57:39 -04:00
06075f75c5
make gomuks nix package build to a .dylib on macos 2026-07-28 15:49:27 -04:00
60968f5f3e
make macos builder build app from nix 2026-07-28 15:29:41 -04:00
afd6168535
fix macos CI name
[skip ci]
2026-07-28 15:15:20 -04:00
2a1cc33ee3
add macos ci
hopefully this works first try :3
2026-07-28 15:13:14 -04:00
5f13d3fbf5
don't show errors when url preview fails 2026-07-27 22:02:20 -04:00
eca9d3b411
use gomuks for URL previews 2026-07-27 16:01:40 -04:00
16fdf0c420
download audio and video using gomuks 2026-07-27 15:46:08 -04:00
3536f74851
mark encrypted media as done 2026-07-26 23:11:01 -04:00
fa451621de
use gomuks for downloading media 2026-07-26 23:01:36 -04:00
90230651e6
default auth method to none
Fixes auth on MAS
2026-07-26 18:26:20 -04:00
92b88e46ac
fix attachments disappearing when editing messages 2026-07-26 17:21:01 -04:00
1799e02844
update gomuks vendorHash 2026-07-26 15:13:39 -04:00
cf26ec7130
bump gomuks 2026-07-26 14:40:20 -04:00
716541b457
fixup oauth animation 2026-07-24 10:13:20 -04:00
965c7ea2dc
add media for twim 2026-07-24 09:59:50 -04:00
85d02f2ac9
bump gomuks 2026-07-23 15:29:23 -04:00
1c446c4cdf
bump gomuks
fixes no loading issue when restarting verification after closing app
2026-07-23 13:58:33 -04:00
51430d2830
Verify state on login
This fixes "already logged in errors" if you started logging in before cancelling, and then trying again.
2026-07-22 21:53:42 -04:00
4e208764f5
remove outdated comment 2026-07-22 16:45:47 -04:00
eecc307f04
disable provider auto retry 2026-07-22 16:35:18 -04:00
6221eb4a7a
bump gomuks
Fixes overly aggressive caching on login, causing issues when changing login server
2026-07-22 16:19:06 -04:00
370549072e
make logout properly pop all settings on mobile 2026-07-22 15:57:21 -04:00
80b938c0be
fix wrong settings categories opening when multiple sections exist 2026-07-22 15:37:50 -04:00
87e1ef0d9b
clean up if statements into one 2026-07-22 12:00:35 -04:00
f8c705531c
ignore setState during build
It seems to happen randomly right now.
2026-07-22 11:59:10 -04:00
2a91959333
fix encrypted uploads 2026-07-21 21:34:49 -04:00
34ddd6d32b
change font weight for tooltips 2026-07-21 20:57:58 -04:00
a8726feef6
allow sending messages without a body if they have an attachment 2026-07-21 20:27:21 -04:00
bd1bad76d7
add camera picking support
Not tested.
2026-07-21 20:21:16 -04:00
c4f63d18b5
add support for sending media
Still needs camera support.
2026-07-21 20:19:01 -04:00
a8285548e8
custom style for tooltips 2026-07-21 18:25:38 -04:00
cdad9b760e
add settings to login page, but gate login settings 2026-07-21 18:00:52 -04:00
06c5411dfc
fix bug flutter bump introduced in mention overlay 2026-07-21 16:28:05 -04:00
f6b5bd4057
bump gomuks 2026-07-21 16:27:53 -04:00
0da3b4da22
don't require non-null metadata 2026-07-21 16:25:15 -04:00
a557cffdbf
remove old comment in gradle 2026-07-20 20:41:09 -04:00
9d7156d176
remove un-needed context 2026-07-20 20:40:24 -04:00
b792247575
slight wording tweak 2026-07-20 20:39:12 -04:00
35fbe1094f
update login status in readme 2026-07-20 20:38:26 -04:00
05d1c3b04a
link to macos issue 2026-07-20 20:38:11 -04:00
22e58e3d05
fix search logic when multiple categories exist 2026-07-20 20:00:44 -04:00
09bc9bdcbd
fix highlightwrapper on new flutter version 2026-07-20 19:55:19 -04:00
7d106ad3a2 OAuth Support (#53)
Rips out the old auth method, adds OAuth support. Fixes #51.

Tested Platforms:
- [x] Linux
    - [x] Flatpak
    - [x] Native (Nix)
- [x] Android
- [ ] Windows
- [ ] MacOS

Reviewed-on: Nexus/nexus#53
2026-07-20 19:46:18 -04:00
5df975f607
wrap settings category in safearea 2026-07-19 00:30:41 -04:00
8f3f9fbef1
wrap select server page in safe area 2026-07-19 00:20:04 -04:00
a9ac891ec4
wrap chat page in a safearea 2026-07-19 00:12:15 -04:00
7992f0e815
treewide(refactor): rename files to follow the same style 2026-07-18 12:12:54 -04:00
15d441e4c4
mark search as fullscreen when categories are pages 2026-07-17 22:20:54 -04:00
7492d3a3d4
add padding to select server page 2026-07-17 22:18:42 -04:00
518b0dd11e
mark settings as done in readme 2026-07-17 20:37:59 -04:00
0ef9b25320 Add settings page (#46)
Fixes #37, fixes #47.

Reviewed-on: Nexus/nexus#46
2026-07-17 20:36:41 -04:00
06824784cb
change event padding 2026-07-14 20:22:39 -04:00
08d67553be
fix message bubble alignment 2026-07-14 20:17:44 -04:00
8b2d354a60
use .of(context) instead of .pop(context) 2026-07-14 20:10:40 -04:00
8773faf7c4
reverse pins list 2026-07-14 19:58:39 -04:00
818e582ddd Support for pinned messages (#49)
The first draft to support pinned messages. Fixes #39.

Co-authored-by: Henry-Hiles <henry@henryhiles.com>
Reviewed-on: Nexus/nexus#49
2026-07-14 19:29:47 -04:00
71a4274ff2
refactor build.dart 2026-07-13 18:38:34 -04:00
7b734a89ac
add client perm for MacOS 2026-07-07 20:05:18 -04:00
ceb749d272
trim SDK path 2026-07-07 19:58:31 -04:00
45240f6cb0
fix generate.dart on macos 2026-07-07 19:26:41 -04:00
4c90fbd7d1
get xcode sdk 2026-07-07 18:51:27 -04:00
8e76da4ac2
remove macos titlebar
Credit to @mirameow:matrix.org for this!
2026-07-07 18:26:37 -04:00
195ebc776a
add macos folder 2026-07-07 15:49:07 -04:00
a1e217ac78
more restrictive ai policy 2026-07-03 14:04:07 -04:00
148bc8f95c
improve creation of editSource 2026-06-23 11:32:37 -04:00
b037dc06c8
add pulseaudio socket to flatpak 2026-06-23 11:11:05 -04:00
3c7c74f745
hide URL previews if generating them throws an error 2026-06-23 10:50:20 -04:00
b727d0342d
bump gomuks 2026-06-21 17:52:05 -04:00
db5735e9e2
Fixup aspect ratio calculation for non-null widths 2026-06-20 23:48:15 -04:00
7c01611859
Default to 1:1 when no width/height are given for an image 2026-06-20 23:39:05 -04:00
632c02a517
update windows tags 2026-06-18 14:52:18 -04:00
355c564123
update gomuks vendorHash 2026-06-18 14:48:37 -04:00
1af957d4a1
bump gomuks 2026-06-18 14:44:56 -04:00
1986e2a627
fixes to creator power level logic 2026-06-17 23:24:25 -04:00
ab40600746 Take into account creators when checking power levels (#44)
Fixes #40.

Reviewed-on: Nexus/nexus#44
Reviewed-by: Henry Hiles <henry@henryhiles.com>
2026-06-17 23:16:51 -04:00
2d0f41000e
improve expandable image viewer 2026-06-13 20:49:45 -04:00
3349ca7253
wrap expanded image stack in a safearea to help with notch issues 2026-06-13 18:44:02 -04:00
18657eb980
improved expandable image widget 2026-06-13 18:31:14 -04:00
b4b157c39f
fix check
Don't check off clickable room mentions (because its not true)
2026-06-12 15:50:16 -04:00
a76b6e6ed3
remove screenshots, now that twim is out 2026-06-12 11:02:00 -04:00
5bbd472999
use gingers profile for an example 2026-06-12 09:56:19 -04:00
6c0e149c25
add profile screenshot 2026-06-12 09:55:28 -04:00
b26c144eea
add new screenshots of sidebars 2026-06-12 09:51:42 -04:00
ddc8db8326
some keyboard navigation fixes
This still isnt perfect, it sometimes skips over nodes, needs investigation.
2026-06-11 13:41:06 -04:00
bc307cbcda
up size of spaces in sidebar 2026-06-11 12:50:47 -04:00
e40de37b9d
move message button above kick/ban 2026-06-10 10:41:25 -04:00
7757825e27
add placeholder while profile loading 2026-06-10 10:40:21 -04:00
795e9b6e9b
add l10n todo comment 2026-06-09 21:15:15 -04:00
abba60c28b
onTapUp -> onTap when possible 2026-06-09 20:40:31 -04:00
8cea4b6cf3
fix user sheet on small screens 2026-06-09 20:37:21 -04:00
d46646d781
redesign user popover 2026-06-09 20:34:56 -04:00
e15d947fac
rename FlashWrapper to HighlightWrapper 2026-06-08 11:03:34 -04:00
562ce5d4ff
Add link to settings issue 2026-06-07 17:12:54 -04:00
f60189bfb8
fix mark all as read behavior with subspaces 2026-06-07 16:57:57 -04:00
309d0df581
fix unread logic to take into account subspaces 2026-06-06 21:19:01 -04:00
3310d9b907
nicer error handling for message parses 2026-06-06 19:13:45 -04:00
8c047827de
Fix text overflows for long subspace names 2026-06-06 19:02:58 -04:00
d513e466fd
Render subspace avatars, if available 2026-06-06 18:40:32 -04:00
84a729aea8
new screenshots, update readme 2026-06-06 17:38:54 -04:00
23e0aa3c4e
change image fit 2026-06-06 17:30:24 -04:00
f0a26b58d1
fix incorrect selected hint 2026-06-06 17:09:54 -04:00
78b5abea7d
fix out of range error 2026-06-06 17:03:06 -04:00
e1d7a30a06
Support one level of subspaces 2026-06-06 15:11:40 -04:00
0c61623a94
fix fallback for null displayName in mention chip 2026-06-06 13:15:41 -04:00
0a9b71230b
set sidebar width to infinity 2026-06-06 13:04:44 -04:00
15c057707f
slightly lower size of sidebar 2026-06-06 13:04:12 -04:00
9cc18e16b8
only show appbar on member list if its a drawer 2026-06-06 13:02:51 -04:00
240984a832
Don't connect M3EToggleButtonGroup
I think it looks nicer this way.
2026-06-06 12:25:09 -04:00
633e83b915
slight cleanups 2026-06-06 12:21:42 -04:00
c5122fc34f
add some more padding to member list 2026-06-06 10:55:12 -04:00
457de3c77c
more performant member list 2026-06-06 10:51:56 -04:00
c9aa0173d8
fix navigation rail hash 2026-06-06 10:18:40 -04:00
22aa26fd05
fix keyboard navigation of forms
Including submit with keyboard, and not defocusing on submit of a form
2026-06-06 10:15:29 -04:00
c10c74a1f3
change max line size for navigation rail 2026-06-05 23:32:12 -04:00
46136c09ad
fix padding color of space sidebar 2026-06-05 21:47:13 -04:00
5f9622e1c9
try to fix android build 2026-06-05 21:39:51 -04:00
6e02cce84f
WIP subspace support 2026-06-05 21:23:06 -04:00
7e7e6877e2
add hash for navigation_rail_m3e to fix nix build 2026-06-05 20:42:52 -04:00
895ab3c96f
redesign sidebar to be m3e 2026-06-05 20:38:03 -04:00
b25840756d
add back shift+enter for newline 2026-06-05 19:40:12 -04:00
735a3357d7
fix logic for deciding when to fetch members 2026-06-05 18:38:27 -04:00
02b7892fb0
better handle when room is null 2026-06-05 18:33:16 -04:00
3afb4befa5
add null check in room chat controller 2026-06-05 18:10:41 -04:00
a11663eece
use M3EToggleButtonGroup 2026-06-05 18:10:41 -04:00
7f12efd338
add some more padding 2026-06-05 18:10:41 -04:00
fcdada6f3e
add support for v12 creators 2026-06-05 18:10:41 -04:00
0c950247b0
improve UI of member list, sort by power level 2026-06-05 18:10:41 -04:00
27dca24889
better login flow
Co-authored-by: Henry-Hiles <henry@henryhiles.com>
2026-06-05 17:28:53 -04:00
621bb74cc9
turn up max zoom of expandable image viewer 2026-06-05 12:52:30 -04:00
33c3a568f9
remove extra indent from nix build 2026-06-04 21:14:53 -04:00
561f6ecc84
use correct fallback for icons 2026-06-04 20:49:14 -04:00
a7ccf0ff00
fix not showing first membership events 2026-06-04 19:26:18 -04:00
0e984fd95b
change some icons for events 2026-06-04 19:25:28 -04:00
c898b2671a
add link to #35 from readme 2026-06-03 10:48:07 -04:00
e63e5a8c08
fix auto scroll down sometimes not triggering 2026-06-03 10:41:34 -04:00
a87c9dc678
warm up emojis controller 2026-06-03 10:24:05 -04:00
5fcc31b427
add a slight offset to the maxScrollExtent jump to not accidentally mark room as read 2026-06-03 10:18:20 -04:00
99270f4bd1
don't reverse CustomScrollView
Reviewed-on: Nexus/nexus#34
2026-06-02 21:09:35 -04:00
d2ec5f035b
treewide: use dot shorthands where possible
Now this feature is stable, we should use it. I might have missed some usecases, but these can be added in future commits.
2026-06-02 12:50:56 -04:00
6281c1d13a
make UrlPreviewController not autoDispose 2026-05-31 22:13:46 -04:00
60315de04a
update screenshots 2026-05-31 22:02:22 -04:00
eb87cbc17b
more elegantly handle empty displaynames 2026-05-31 21:46:29 -04:00
130dbac879
Link to Effective Dart: Style guide in DEVELOPMENT.md
Co-authored-by: istalri <oldangrydanishgirl.unit949@passinbox.com>
2026-05-31 13:46:19 -04:00
2dd3fed62f
add info block for stddef issues 2026-05-31 13:02:41 -04:00
f60a499875
better loading state for message displayname widget 2026-05-30 11:35:12 -04:00
a72ef5ea2d
fix incorrect message grouping heuristics 2026-05-30 11:30:07 -04:00
1b81e31c13
add early return on build hook 2026-05-30 11:19:27 -04:00
db12fd2e9a
remove extra curly bracket in logger 2026-05-30 11:11:19 -04:00
60454ed249
remove deprecated argument to build_runner 2026-05-29 13:14:06 -04:00
0a333e92d1
add an AI policy 2026-05-29 13:10:01 -04:00
31c3173bb5
add member list to readme 2026-05-28 19:16:29 -04:00
c6904e9766
Fix some alignment issues 2026-05-26 21:56:44 -04:00
e5b7512e79
nicer action buttons on user popover 2026-05-26 21:50:40 -04:00
5daa861a31
round menus 2026-05-26 21:26:40 -04:00
82860deff1
make padding symmetrical for load more button 2026-05-26 21:04:17 -04:00
2ec442b35b
fix conditional rendering of popover actions 2026-05-26 20:56:32 -04:00
786c8cb3e2
remove un-needed double check of condition 2026-05-26 20:18:28 -04:00
a150ef2ecf
Fix some textOnly handling 2026-05-26 20:04:09 -04:00
bb037c8162
set max lines for pmp text to 1 2026-05-26 19:58:01 -04:00
eac59c58f5
center align pmp text 2026-05-26 19:54:56 -04:00
4e5c709fb9
slight refactor of callback in message avatar widget 2026-05-26 19:53:05 -04:00
451875b137
add sticker support 2026-05-26 19:43:25 -04:00
e1c81b504a
render TopicContent 2026-05-26 19:30:57 -04:00
f27db22151
render ServerACLContent 2026-05-26 19:29:47 -04:00
3d6ebedd94
render PinnedEventsContent 2026-05-26 19:25:41 -04:00
70eba46c76
add and render HistoryVisibilityContent 2026-05-26 19:22:53 -04:00
ec64a81fed
add create event, fix generic event icon 2026-05-26 19:13:19 -04:00
2ba620350d
refactor message renderer into its own widget 2026-05-26 19:11:09 -04:00
a0c2eefc1e
Add room alias support 2026-05-26 18:44:27 -04:00
9939e59429
Don't underline room topic
This makes finding out that the room dialog exists slightly difficult, but it looks nicer.

We could look into another way to make it obvious that room icon, title, and description are clickable.
2026-05-26 15:35:08 -04:00
e69f04f6e7
Add room details dialog
Fixes #20
2026-05-26 15:31:37 -04:00
4848840538
increase padding for no permission message 2026-05-26 13:09:32 -04:00
64b3127fd1
show last displayname if displayname loading 2026-05-26 12:14:35 -04:00
b836c3b06e
show messages whilst sending 2026-05-26 12:07:43 -04:00
d9f62a9de9
show last avatar if avatar loading 2026-05-26 12:07:35 -04:00
32dd08fd91
expand no permissions message 2026-05-26 10:42:23 -04:00
6de046bf7b
Fix sizing of event previews 2026-05-26 10:14:26 -04:00
ebbb4dc662
make pmp via text smaller 2026-05-26 09:52:35 -04:00
1d6a121ec4
calculate image aspect ratio for more accurate blurhash 2026-05-26 09:47:23 -04:00
ed0292468a
show hashed colors while avatar loading 2026-05-26 09:38:29 -04:00
8b310c955d
Mark windows support as added 2026-05-25 12:01:12 -04:00
14b140e23d
make SDK bound less strict 2026-05-24 10:53:56 -04:00
b47e61e005
rename chat box to composer 2026-05-23 20:21:44 -04:00
05bc9034d1
measure size of chat box to dynamically adjust padding
Fixes #21
2026-05-23 20:14:33 -04:00
d7ea233b18
copy mingw dlls windows 2026-05-23 18:31:36 -04:00
70ffbedba4
fix typo in DEVELOPMENT.md 2026-05-23 12:29:56 -04:00
a1386790a9
update gomuks vendorHash 2026-05-23 12:21:04 -04:00
68d2f654cc
bump gomuks 2026-05-23 12:17:40 -04:00
5368bacf1d
Add a code style guide to DEVELOPMENT.md 2026-05-23 12:13:41 -04:00
564fe3c964 Update flutter version in windows CI 2026-05-21 17:05:39 -04:00
16cf126df4 Remove flutter chat (#26)
Had to squash merge manually as Forgejo was erroring
2026-05-21 17:02:08 -04:00
bd1d5ea745
fixup bugs related to PMP
Closes #25, as "Explain how to send messages using a certain PMP" is now added to the progress list.
2026-05-09 21:42:51 -04:00
1ca802c78b
fix gomuks vendor hash 2026-05-09 21:01:08 -04:00
7b9eda2d36
update submodule 2026-05-09 20:57:47 -04:00
63eb001c09
bump gomuks 2026-05-09 18:25:15 -04:00
00c3503c1f
Add development instructions 2026-05-09 18:24:35 -04:00
469a625c40
add mark as read for rooms/DMs, fixes #24 2026-05-09 11:10:52 -04:00
66ef2de027
fix android build by overriding path_provider_android back to an earlier version
I don't know why this is needed
2026-05-08 22:17:11 -04:00
972c143de2
fix windows build
Bumps flutter version for windows.yml, fixing build
2026-05-08 21:41:33 -04:00
2f39985afb
bump deps 2026-05-08 21:34:22 -04:00
0ab466d011
fix Android icon
Adds a monochrome icon, along with reverting the foreground to its previous state, except 512x512. Should hopefully be the end of Android icon chicanery.
2026-05-06 19:13:23 -04:00
7857bcdc2e
fix icon sizing on login page 2026-05-06 18:17:22 -04:00
9faff092ed
higher res PNGs 2026-05-06 18:16:07 -04:00
0949fa6523
improve android app icon 2026-05-06 18:07:25 -04:00
e310f0f60e
fix some power level checks, fixes #19 2026-05-04 12:53:04 -04:00
7d8b267986
update progress list [skip ci] 2026-05-04 00:06:31 -04:00
c945c26413
Fix outdated repo links 2026-05-03 20:29:59 -04:00
4dc16a5529
Revert "WIP removal of new_events_controller"
This reverts commit 5a99616e9c.
2026-05-03 12:10:37 -04:00
ebd4b8a765
higher res pngs 2026-05-03 12:02:21 -04:00
26b95fac69
fix android icons 2026-05-02 16:42:55 -04:00
152331b262
Don't show icon in readme as forgejo messes up formatting 2026-05-02 16:36:10 -04:00
5f56c52fe0
use center tag 2026-05-02 10:12:32 -04:00
a8ae10c9ce
new icons 2026-05-02 10:02:40 -04:00
ad36dcb2f3 Update README.md 2026-04-28 23:12:07 -04:00
Zach Russell
8b4cd75076 Update windows build chain docs 2026-04-28 23:12:07 -04:00
5a99616e9c
WIP removal of new_events_controller [skip ci] 2026-04-28 20:44:12 -04:00
def69d85e7
add option for aligning bubbles to progress list 2026-04-24 20:03:14 -04:00
f4b2dcb824
hopefully fix debugLocked error 2026-04-14 18:09:31 -04:00
50e1a8e4c7
remove un-needed async 2026-04-14 10:58:25 -04:00
82dab26fd4
fix emoji dep hash 2026-04-13 23:18:01 -04:00
313dc377ec
fetch emoji list from gemoji for a more complete emoji list 2026-04-13 22:44:22 -04:00
b93f4c979c
Make reactions flexible to fix overflow issues 2026-04-13 09:39:59 -04:00
b701da19dc
fix nix build 2026-04-12 16:53:30 -04:00
327c4066f3
Check off reactions in the readme 2026-04-12 16:50:09 -04:00
1282a8b897
don't show recents in emoji picker modal 2026-04-12 16:49:24 -04:00
6ca974e6fc
add emoji button to composer 2026-04-12 16:46:13 -04:00
e16a780fa3
add support for sending emojis through a custom picker 2026-04-12 16:29:03 -04:00
dc1eb52fe0
re-order room menu items 2026-04-12 15:30:01 -04:00
3e8eba0872
disable react button while last action is pending 2026-04-12 15:07:49 -04:00
4954fb8c09
allow redacting/removing reactions 2026-04-12 14:56:08 -04:00
4ff507e93f
fix spellchecker complaining 2026-04-12 14:20:26 -04:00
1dcf3018a2
Allow sending reactions
(but not redacting them yet)
2026-04-12 14:15:00 -04:00
6b8eef3f17
fix reactions on edited messages 2026-04-12 13:23:05 -04:00
f997e257a2
update submodule remote 2026-04-12 13:05:08 -04:00
07decc10e2
potential loading time optimization 2026-04-10 16:33:53 -04:00
e9b78a14d5
Update reactions as they are modified 2026-04-10 16:31:55 -04:00
7b2a6b84ad
Update progress list [skip ci] 2026-04-10 12:15:48 -04:00
5154e0fc6b
Try to fix error handling on sync 2026-04-10 11:53:32 -04:00
3cfbe7c078
make errors on sync noisy 2026-04-10 11:12:22 -04:00
133e613214
add reactions for twim 2026-04-10 10:31:34 -04:00
5e07cec14d
Fix aligning close button to right 2026-04-09 12:12:55 -04:00
116649e8d7
Add the ability to see reactors on hover 2026-04-08 16:02:15 -04:00
5f5ad911c2
Reaction support, currently readonly 2026-04-08 15:47:53 -04:00
624127f3a8
add default height for emoticons 2026-04-07 12:28:06 -04:00
f860d9651f
Remove polls note that is no longer accurate 2026-04-06 11:14:47 -04:00
2850b015a1
Remove readme note on reactions, I'll do a custom impl 2026-04-06 10:41:34 -04:00
3a7e708e39
update readme 2026-04-06 10:39:43 -04:00
798eb3c3fd
add ability to copy link to message 2026-04-06 10:22:32 -04:00
ee648ab105
add ability to copy room/space link 2026-04-06 10:17:04 -04:00
2c23951ea8
Fix via handling 2026-04-06 09:57:03 -04:00
f4b2669f3d
Fix link sending 2026-04-06 09:20:54 -04:00
6fe5677a13
oops thats not the event type! 2026-04-06 09:20:39 -04:00
729f71e529
remove a todo since its already in the progress list 2026-04-05 22:10:07 -04:00
b80bd557dd
add redact PL check 2026-04-05 22:00:34 -04:00
15d02458ab
Add comment to mention overlay to add vias to link 2026-04-05 21:48:25 -04:00
8dff27c56f
use room alias where available 2026-04-05 21:45:39 -04:00
c857b89899
update readme 2026-04-05 21:41:41 -04:00
06d6bf0cbc
Make reply displayname flexible, fixes overflow on small screens and large displaynames 2026-04-05 21:30:47 -04:00
9fdf08a5d8
don't open user popover on reply preview 2026-04-05 21:25:25 -04:00
7fc314036e
Refactor content handling in message controller 2026-04-05 16:30:40 -04:00
aac843d793
Continuously load more messages until there are 20 or no more 2026-04-05 13:32:59 -04:00
639d27a5fc
refactor url previews 2026-04-05 11:26:03 -04:00
92f6b2fbba
Autofocus chatbox on edit/reply 2026-04-05 11:21:15 -04:00
4aa962193d
fix parsing links as mentions 2026-04-04 21:33:31 -04:00
24f5f7d0b6
Remove old comments [skip ci] 2026-04-04 18:49:35 -04:00
9464b2bf78
Don't defocus chat box on send 2026-04-04 18:49:21 -04:00
fd4b16c700
Pass href to mention chip, fixing some mentions 2026-04-04 18:36:20 -04:00
a8383951ba
Refactor dialog stuff 2026-04-04 18:26:19 -04:00
185ee37f04
fix checks for memberships 2026-04-04 17:52:42 -04:00
f38715c8ef
Add powerlevel checks 2026-04-04 17:44:55 -04:00
63535fb462
Fix embed link open on some configurations 2026-04-04 16:30:36 -04:00
7c1918857a
Fix pointer on MentionChip 2026-04-04 13:37:07 -04:00
20f0ce9fa5
Add filtering by ban type to member list 2026-04-04 13:33:24 -04:00
fa8b8ddd14
remove capitalized extension in favor of intl's toBeginningOfSentenceCase 2026-04-04 12:31:17 -04:00
c3ca1e3491
Add dialog for kick/ban 2026-04-04 12:28:49 -04:00
8154d41dc5
don't preview matrix.to urls 2026-04-04 11:39:15 -04:00
d70c439278
clickable user mentions 2026-04-04 11:34:40 -04:00
5796d250c7
add comment to html [skip ci] 2026-04-04 11:07:04 -04:00
a9c4acaa74
smaller icon foreground for android 2026-04-04 10:29:56 -04:00
73ac0018ca
remove unneeded replace 2026-04-04 10:00:44 -04:00
a64cfd35be
Update android icon 2026-04-04 09:49:24 -04:00
f460a3bacc
fix linkify callback 2026-04-04 09:48:13 -04:00
51dd8c5668
Fix readme formatting 2026-04-03 20:04:33 -04:00
35bf379f03
only render message as html when content is set to html 2026-04-03 20:01:20 -04:00
f4624c2866
Add server-generated URL preview support 2026-04-03 19:39:39 -04:00
cadd5c1255
expandable profile pictures in popout 2026-04-03 17:58:59 -04:00
3a1bcb5b8f
Add (WIP) ban/klck ability 2026-04-02 17:37:27 -04:00
c130d28b93
add popover for TWIM 2026-04-02 11:19:37 -04:00
e669ede6fe
add "Try it out" section to README 2026-04-02 11:17:03 -04:00
5a0a5cb138
update todo 2026-04-02 10:58:59 -04:00
e30355a6f1
Support stable identifiers for MSC4175 2026-04-02 10:58:34 -04:00
4e4e387aa2
onTapDown -> onTapUp, helps on mobile for scrolling 2026-04-02 10:26:48 -04:00
2ead857805
make it so you can't ban yourself 2026-04-01 22:38:22 -04:00
a562d043a8
fix mobile issues with popover 2026-04-01 22:36:03 -04:00
bb842abfb1
Don't make message text selectable as it breaks long press context menus 2026-04-01 22:27:18 -04:00
0b9ddbfbc8
add profile popovers 2026-04-01 16:29:19 -04:00
7ee165b300
add snap note to readme 2026-04-01 13:51:29 -04:00
60b7f22566
Update prerequisites in readme 2026-04-01 12:29:43 -04:00
e42aaeb30a
fix readme step for generating bindings to be in line with new command 2026-04-01 10:27:52 -04:00
6d903a8882
disable some sidebar buttons that aren't done yet 2026-04-01 10:15:41 -04:00
388e09abb7
fix constraint on `flutter_chat_ui 2026-04-01 09:56:25 -04:00
4dc692634e
fix timestamp for messages sent with a PMP 2026-03-30 17:24:13 -04:00
0a6c097c50
expandable inline images 2026-03-30 15:24:26 -04:00
08cca4d3d3
Re-add custom hashCode and == on MessageConfig, fixing constant MessageController reloads due to room changing 2026-03-30 13:42:41 -04:00
cdba3c480e
fix timestamp displays 2026-03-30 13:29:51 -04:00
55ecbc3590
Add better error handling, send messages early and update when delivered 2026-03-30 13:08:57 -04:00
8c7adbc9d3
update platform support 2026-03-29 15:01:13 -04:00
60be7aaf72
don't pass room around, use many watches 2026-03-29 14:14:11 -04:00
e0ba99d9b9
cache inline images (e.g. emojis) 2026-03-29 12:05:44 -04:00
e2d29439d5
Fix state type error 2026-03-29 11:53:56 -04:00
92e5206326
Workaround for c10y 779 2026-03-29 11:39:43 -04:00
ecc40bfe49 don't auto dispose author controller
Signed-off-by: Henry-Hiles <henry@henryhiles.com>
2026-03-29 10:20:33 -04:00
eaf1f3a178 Fix inverted logic in message controller
Signed-off-by: Henry-Hiles <henry@henryhiles.com>
2026-03-29 01:14:27 -04:00
18ee13901c
fix error caused by c10y 779 2026-03-29 00:04:06 -04:00
c784094a4c
add some more message parses 2026-03-29 00:00:39 -04:00
690d2549bc
Expandable room icons 2026-03-28 00:11:24 -04:00
ab61338382
Use resolve for homeserver, fixing trailing slash issues 2026-03-27 23:10:15 -04:00
48adf82b7e
rename windows build step [skip ci] 2026-03-27 23:10:12 -04:00
1f274307ad
fix Windows CI, though native windows devel may not work
Needs looking into once someone wants to help develop on Windows
2026-03-27 22:59:09 -04:00
c609de8279
improve errors further 2026-03-27 22:54:03 -04:00
1d33eed829
fix error messages for images on release build 2026-03-27 22:52:37 -04:00
e6c47c036d
fix gomuks path 2026-03-27 22:48:14 -04:00
c6767863eb
set up go earlier 2026-03-27 22:35:29 -04:00
f5c277e8b0
go build early 2026-03-27 22:29:24 -04:00
84bed89632
temp, dont use this 2026-03-27 22:16:23 -04:00
6c064cfcef
add more logging to build hook [skip ci] 2026-03-27 22:04:00 -04:00
2c4d5670e5
sort room list for unread first then recent 2026-03-27 21:51:11 -04:00
a51c869d7e
Change min size for window 2026-03-27 21:13:18 -04:00
a1401f20ea
fix icons for flatpak build 2026-03-27 10:36:04 -04:00
f8d6dcead5
show appbar on verify page 2026-03-26 20:35:04 -04:00
02c79a6d7c
add hardcoded GOCACHE
This will probably need to be changed if we get any windows developers
2026-03-26 20:15:05 -04:00
11aef9fc5a
add GOENV to windows build 2026-03-26 18:45:45 -04:00
2f39949a2e
use a relative dir for caching on windows 2026-03-26 17:37:42 -04:00
166295fdb5
disable caching for go action 2026-03-26 17:03:43 -04:00
607cd54e02
Clone with submodules for windows script 2026-03-26 16:55:06 -04:00
67b96ae731
fix no hash provided for dynamic_system_colors 2026-03-26 16:51:24 -04:00
ed81b4afa1
change dynamic_system_colors bound 2026-03-26 16:47:45 -04:00
345fa3b5ff
pin flutter version for windows [skip ci] 2026-03-26 16:38:10 -04:00
f50fb6ab09
simplify windows script [skip ci] 2026-03-26 16:33:57 -04:00
5601fb27c0
test new windows build [skip ci] 2026-03-26 16:31:08 -04:00
0d1f7c1819
more verbose errors for login and verify 2026-03-26 15:53:42 -04:00
4bbf694479
remove dep on window_size 2026-03-26 15:49:28 -04:00
dd9b9fdc62
rename app id to match desktop file 2026-03-26 12:22:07 -04:00
8b7f88cc0b
rename desktop file 2026-03-26 12:09:20 -04:00
70793a2f77
test commented out sizes 2026-03-26 10:54:43 -04:00
b2c763deef
change artifact names 2026-03-26 10:28:22 -04:00
5c66d35017
add keystore to android build 2026-03-26 10:13:31 -04:00
a25f9d2e73
check out submodules for android build 2026-03-26 09:51:30 -04:00
4a3b7e9a14
add some more info to the flatpak 2026-03-25 23:31:57 -04:00
6974e5cc06
allow dri permission for flatpak 2026-03-25 23:18:52 -04:00
42c32b1b1c
fix android build 2026-03-25 23:06:53 -04:00
87466f9d05
Add apk build workflow 2026-03-25 22:50:33 -04:00
ea72654887
run flatpak build on both x86_64 and aarch64 2026-03-25 22:38:52 -04:00
f1af130a63
simplify flatpak action, run on push 2026-03-25 22:33:05 -04:00
e7b772ef66
Add flatpak build 2026-03-25 22:29:24 -04:00
28dfe9e981
Working flatpak builds 2026-03-25 22:06:30 -04:00
d4c98a0cfb
Add GenericName to desktop file 2026-03-25 21:31:14 -04:00
01772b567a
Shorten nix install 2026-03-25 13:09:50 -04:00
f9927d1eb3
Wrap binary to fix libgomuks load 2026-03-25 12:11:38 -04:00
0d44d10e05
add icon and desktop file to nix package 2026-03-25 11:52:04 -04:00
11ecec5ab3
add nix package 2026-03-25 11:40:31 -04:00
b407bbfdee
add background for android icon 2026-03-25 11:40:25 -04:00
04b7ab8e2e
WIP nix builds
Not working, needs a separate gomuks build
2026-03-24 21:02:23 -04:00
0cae2692bc
Add a todo to parse vias correctly 2026-03-24 16:51:30 -04:00
b387f0755a
make sidebar auto collapse when selecting a room on the mobile layout 2026-03-24 16:45:25 -04:00
840f2fe464
remove now un-needed lock 2026-03-24 16:29:42 -04:00
e5062683e8
Fix send on enter on mobile 2026-03-24 16:14:42 -04:00
ffe879680d
Don't wait for potential double tap for appbar actions, makes button taps more responsive in appbar 2026-03-24 15:34:26 -04:00
32dfba178a
Update readme instructions 2026-03-24 12:43:38 -04:00
fe845e6cd6
Use a submodule for gomuks source 2026-03-24 12:37:00 -04:00
d3e6340b28
Fix readme to no longer show the Dart SDK. 2026-03-24 10:33:43 -04:00
b6e7bb82da
Don't autofocus chat box due to OSK issues for now
I can fix this later by stopping the text input from rerenderring so often
2026-03-24 09:41:24 -04:00
eb503ba647
Fix android builds on nix, might need further cleanup later 2026-03-24 09:29:49 -04:00
cda971a335
lock gomuks src to a commit 2026-03-23 23:04:59 -04:00
e4f666b824 Merge pull request 'Initial flutter android build' (#4) from zaaach/nexus:android into main
Reviewed-on: Henry-Hiles/nexus#4
Reviewed-by: Henry Hiles <henry@henryhiles.com>
2026-03-23 22:56:39 -04:00
623 changed files with 35695 additions and 6120 deletions

View file

@ -0,0 +1,28 @@
name: "End-to-end tests"
on:
push:
branches: ["main"]
pull_request:
workflow_dispatch:
jobs:
e2e:
runs-on: ["large", "debian-13-x86_64"]
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
submodules: recursive
- name: Lix GHA Installer Action
uses: samueldr/lix-gha-installer-action@v2026-02-22
with:
extra_nix_config: experimental-features = nix-command flakes flake-self-attrs
- name: Generate code
run: nix develop --command bash -c "flutter pub get && dart scripts/generate.dart && flutter pub run build_runner build"
- name: Run end-to-end tests
run: nix run .#e2e-headless

39
.github/workflows/android.yml vendored Normal file
View file

@ -0,0 +1,39 @@
name: "Build APK"
on:
push:
branches: ["main"]
tags: ["*"]
workflow_dispatch:
jobs:
build-apk:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
submodules: recursive
- name: Lix GHA Installer Action
uses: samueldr/lix-gha-installer-action@v2026-02-22
with:
extra_nix_config: experimental-features = nix-command flakes flake-self-attrs
- name: Decode keystore
run: echo "$KEYSTORE_CONTENT" | base64 --decode > keystore.jks
env:
KEYSTORE_CONTENT: ${{ secrets.KEYSTORE_CONTENT }}
- name: Build app
run: nix develop --command bash -c "flutter pub get && dart scripts/generate.dart && flutter pub run build_runner build && flutter build apk --target-platform android-arm64 --split-per-abi --dart-define=GIT_COMMIT=${{ github.sha }}"
env:
KEYSTORE_PATH: ../../keystore.jks
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
- name: Upload installer artifact
uses: actions/upload-artifact@v6
with:
name: APK
path: build/app/outputs/flutter-apk/app-arm64-v8a-release.apk

73
.github/workflows/flatpak.yml vendored Normal file
View file

@ -0,0 +1,73 @@
name: "Build Flatpaks"
on:
push:
branches: ["main"]
tags: ["*"]
workflow_dispatch:
jobs:
build-flatpak:
strategy:
fail-fast: false
matrix:
include:
- arch: x86_64
runner: ubuntu-latest
- arch: aarch64
runner: ubuntu-24.04-arm
runs-on: ${{ matrix.runner }}
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Lix GHA Installer Action
uses: samueldr/lix-gha-installer-action@v2026-02-22
with:
extra_nix_config: experimental-features = nix-command flakes flake-self-attrs
- name: Build app
run: nix build .#flatpak
- name: Upload installer artifact
uses: actions/upload-artifact@v6
with:
name: flatpak-${{ matrix.arch }}
path: result/nexus.federated.nexus.flatpak
publish:
needs: build-flatpak
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Install flatpak tooling
run: sudo apt-get update && sudo apt-get install -y flatpak ostree
- name: Download bundles
uses: actions/download-artifact@v7
with:
pattern: flatpak-*
path: bundles
- name: Build OSTree repo
run: |
ostree init --repo=repo --mode=archive-z2
for bundle in bundles/*/nexus.federated.nexus.flatpak; do
flatpak build-import-bundle repo "$bundle"
done
flatpak build-update-repo --prune repo
- uses: actions/upload-pages-artifact@v4
with:
path: repo
- name: Deploy to Pages
id: deployment
uses: actions/deploy-pages@v4

48
.github/workflows/ios.yml vendored Normal file
View file

@ -0,0 +1,48 @@
name: "Build iOS App"
on:
push:
branches: ["main"]
tags: ["*"]
workflow_dispatch:
jobs:
build-app:
runs-on: macos-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
submodules: recursive
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: 3.47.4
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version-file: gomuks/go.mod
- name: Build app
run: |
flutter pub get
dart scripts/generate.dart
flutter pub run build_runner build
flutter build ios --no-codesign --dart-define=GIT_COMMIT=${{ github.sha }}
# Unsigned IPA: SideStore/AltStore re-sign this on-device with the
# user's own Apple ID at install time, so no certificate is needed here.
- name: Package unsigned IPA
run: |
mkdir Payload
cp -r build/ios/iphoneos/Runner.app Payload/
zip -r Nexus.ipa Payload
- name: Upload IPA artifact
uses: actions/upload-artifact@v6
with:
name: Nexus.ipa
path: Nexus.ipa

47
.github/workflows/macos.yml vendored Normal file
View file

@ -0,0 +1,47 @@
name: "Build MacOS App"
on:
push:
branches: ["main"]
tags: ["*"]
workflow_dispatch:
jobs:
build-app:
runs-on: macos-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
submodules: recursive
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: 3.47.4
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version-file: gomuks/go.mod
- name: Build App
run: |
flutter pub get
dart scripts/generate.dart
flutter pub run build_runner build
flutter build macos --dart-define=GIT_COMMIT=${{ github.sha }}
- name: Create DMG
id: create-dmg
uses: L-Super/create-dmg-actions@28511e988b13ca34096d439159a66d468b8e724f
with:
dmg_name: nexus
src_dir: build/macos/Build/Products/Release/Nexus.app
- name: Upload DMG
uses: actions/upload-artifact@v6
with:
name: nexus.dmg
path: ${{ steps.create-dmg.outputs.dmg_path }}

View file

@ -1,46 +1,74 @@
name: "Build Windows Version"
name: "Build EXE"
on:
workflow_dispatch:
push:
branches: ["main"]
tags: ["*"]
workflow_dispatch:
jobs:
build-windows:
runs-on: "windows-latest"
build-exe:
runs-on: windows-latest
steps:
- name: "Checkout repository"
uses: "actions/checkout@v4"
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
submodules: recursive
- name: "Set up Flutter"
uses: "subosito/flutter-action@v2"
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: 3.47.4
- name: "Set up Rust"
uses: "dtolnay/rust-toolchain@stable"
with:
targets: "x86_64-pc-windows-msvc"
- name: Set up Go
uses: actions/setup-go@v6
with:
go-version-file: gomuks/go.mod
- name: "Install Flutter dependencies"
run: flutter pub get
- name: Setup MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: CLANG64
install: >-
mingw-w64-x86_64-gcc
- name: "Run build_runner & build Windows EXE"
run: |
flutter pub run build_runner build --delete-conflicting-outputs
flutter build windows --release
- name: Go build
run: |
cd gomuks/pkg/ffi
go build -tags goolm,sqlite_fts5 -o ../../../libgomuks.dll -buildmode=c-shared
- name: "Upload exe zip"
uses: "actions/upload-artifact@v4"
with:
name: "windows-portable"
path: "build/windows/x64/runner/Release/"
- name: Build with Flutter
run: |
flutter pub get
dart scripts/generate.dart
flutter pub run build_runner build
flutter build windows --dart-define=GIT_COMMIT=${{ github.sha }}
- name: "Install Inno Setup"
run: choco install innosetup -y
- name: Copy MinGW runtime DLLs
shell: msys2 {0}
run: |
cp /mingw64/bin/libgcc_s_seh-1.dll build/windows/x64/runner/Release/
cp /mingw64/bin/libwinpthread-1.dll build/windows/x64/runner/Release/
cp /mingw64/bin/libstdc++-6.dll build/windows/x64/runner/Release/
- name: "Build Inno Setup installer"
run: iscc windows/installer.iss
- name: Copy MSVC runtime DLLs
shell: powershell
run: |
$release = "build/windows/x64/runner/Release"
- name: "Upload installer artifact"
uses: "actions/upload-artifact@v4"
with:
name: "windows-installer"
path: "windows/dist/Nexus-Setup.exe"
Copy-Item C:\Windows\System32\MSVCP140.dll $release -Force
Copy-Item C:\Windows\System32\VCRUNTIME140.dll $release -Force
Copy-Item C:\Windows\System32\VCRUNTIME140_1.dll $release -Force
- name: Install Inno Setup
run: choco install innosetup -y
- name: Build Inno Setup installer
run: iscc windows/installer.iss
- name: Upload installer artifact
uses: actions/upload-artifact@v6
with:
name: windows-installer
path: windows/dist/Nexus-Setup.exe

6
.gitignore vendored
View file

@ -36,7 +36,11 @@ key.properties
# Generated Files
*.g.dart
*.freezed.dart
src/
# Devel Password
password.txt
# Nix
/result
# Widget Preview related
.widget_preview/

4
.gitmodules vendored Normal file
View file

@ -0,0 +1,4 @@
[submodule "gomuks"]
path = gomuks
url = https://github.com/gomuks/gomuks
branch = quad/nexus

View file

@ -4,7 +4,7 @@
# This file should be version controlled and should not be manually edited.
version:
revision: "nixpkgs000000000000000000000000000000000"
revision: "6b182d2c7585eba26d4edce0f97630effd256c33"
channel: "stable"
project_type: app
@ -13,11 +13,11 @@ project_type: app
migration:
platforms:
- platform: root
create_revision: nixpkgs000000000000000000000000000000000
base_revision: nixpkgs000000000000000000000000000000000
- platform: windows
create_revision: nixpkgs000000000000000000000000000000000
base_revision: nixpkgs000000000000000000000000000000000
create_revision: 6b182d2c7585eba26d4edce0f97630effd256c33
base_revision: 6b182d2c7585eba26d4edce0f97630effd256c33
- platform: ios
create_revision: 6b182d2c7585eba26d4edce0f97630effd256c33
base_revision: 6b182d2c7585eba26d4edce0f97630effd256c33
# User provided section

17
.vscode/launch.json vendored Normal file
View file

@ -0,0 +1,17 @@
{
"configurations": [
{
"name": "Flutter",
"type": "dart",
"request": "launch",
"program": "lib/main.dart"
},
{
"name": "Flutter (Headless)",
"type": "dart",
"request": "launch",
"program": "lib/main.dart",
"env": { "FLUTTER_HEADLESS": "1" }
}
]
}

13
.vscode/settings.json vendored
View file

@ -2,8 +2,19 @@
"cSpell.words": [
"Appbar",
"Displayname",
"fluttertagger",
"Gomuks",
"Homeserver",
"Linkified",
"localpart",
"msgtype",
"muks",
"prefs",
"vodozemac"
"recents",
"unban",
"underride",
"unifiedpush",
"unredact",
"webpush"
]
}

104
DEVELOPMENT.md Normal file
View file

@ -0,0 +1,104 @@
# Development Documentation
## Build instructions
Build instructions can be found in [README.md](./README.md#build-it-yourself).
## Updating Gomuks
You can run the following command to update the Gomuks submodule:
```sh
git submodule update --remote
```
## Code Style
See [Effective Dart: Style](https://dart.dev/effective-dart/style) for general rules. There are some extra rules detailed below:
### Controllers and Helpers ([Riverpod](https://pub.dev/packages/riverpod))
Controllers live in `lib/controllers/` and provide a source that exposes data and logic via Riverpod providers, allowing other parts of the code to watch state changes with ref.watch (`ref.watch(MyController.provider)`), access the current value with ref.read (`ref.read(MyController.provider)`), and run helper methods on those classes using the notifier:
```dart
ref.read(MyController.provider.notifier).helperMethod()
```
We use an object oriented style for controllers, where `provider` is a static member on the controller class. E.g.
```dart
class MyController(final SomeInputType input)
extends AsyncNotifier<DataThisControllerExposes> {
@override
Future<DataThisControllerExposes> build() async {
return input.foo;
}
static final provider =
AsyncNotifierProvider.family<MyController, DataThisControllerExposes, SomeInputType>(
MyController.new,
);
}
```
#### `watch` vs `read`
Only use `ref.watch` in a `build` method, where you want to rebuild when the value changes. Everywhere else, like callbacks, `useEffect`, and methods on a controller, use `ref.read`.
Use `.select` to narrow down what you depend on, e.g. `ref.watch(RoomsController.provider.select((rooms) => rooms[roomId]))`.
Providers which are not controllers, e.g. they expose no data, only methods, should instead live in `lib/helpers/`. For an example, see `lib/helpers/launch_helper.dart`. Other, non-provider helpers, like extensions or helper methods can also go in `lib/helpers/`.
### Don't use StatefulWidgets ([Flutter Hooks](https://pub.dev/packages/flutter_hooks))
This project uses Flutter Hooks to help with boilerplate that StatefulWidgets create. Instead of using a StatefulWidget, we just use hooks like `useState` or `useEffect` in the build method of a `HookWidget`, which is a drop in replacement for `StatelessWidget`. If you need both a `WidgetRef` to watch providers, and access to hooks, use `HookConsumerWidget`.
### Models ([Freezed](https://pub.dev/packages/freezed))
We use Freezed for our models to avoid boilerplate and enforce an immutable style of state and data modeling throughout the code. See their documentation for more info, or see our existing models in `lib/models/`.
### Immutable Data Collections ([Fast Immutable Collections](https://pub.dev/packages/fast_immutable_collections))
When possible, use immutable collections instead of the mutable equivalent. For example, use `IMap` over `Map`, `IList` over `List`, `ISet` over `Set`. This matches the immutable style of Riverpod and Freezed.
### Don't create globals
When possible, we prefer not to create global variables or methods. You can usually replace a global variable with a Riverpod controller, and a global method with an extension method.
I'm also not a big fan of unneeded private methods or variables, but this is contextual.
### Modern Dart syntax
We try to use newer Dart language features where they make code shorter:
- Primary constructors for classes, including widgets, e.g. `class const MemberList(final String roomId, {super.key}) extends HookConsumerWidget`.
- Dot shorthands wherever the type can be inferred, e.g. `.new(...)`, `padding: .all(8)`, `relationType == .reply`.
- Patterns and switch expressions over null checks and casts, e.g. `if (event.content case MessageContent(:final body?))` rather than checking `is` then using `!`.
### Prefer `map` over inline `for` loops
When building a list (or set, or map) from another collection, use `.map`, `.expand` and friends rather than a `for` inside the collection literal:
```dart
// Prefer
children: rooms.map((room) => RoomTile(room)).toList(),
// Over
children: [for (final room in rooms) RoomTile(room)],
```
Regular `for` statements are fine for logic that doesn't just build a collection.
### Async values and errors
When rendering an `AsyncValue`, use the `betterWhen` extension, which shows our standard loading and error widgets, or a switch expression if you need more control (e.g. `AsyncData(:final value) || AsyncLoading(:final value?)` to keep showing old data while reloading).
For futures started from the UI that nothing awaits, like button presses, add `.onError(showError)` so failures are shown to the user instead of being lost.
## LLM/AI Assisted Contributions
LLM generated code is NOT allowed. All contributions should be written by humans. Using LLMs for interacting with others, e.g. for Comments, PRs, etc, is also not allowed.
## Code of Conduct
All contributions must follow the [Federated Nexus Code of Conduct](https://federated.nexus/code/).

241
README.md
View file

@ -1,11 +1,8 @@
# Nexus Client
> [!WARNING]
> Nexus Client is still heavily in development, and is not ready for use!
## Description
A simple and user-friendly Matrix client made with Flutter and the Matrix Dart SDK.
A simple and user-friendly Matrix client made with Flutter and a Gomuks backend.
## Screenshots
@ -13,137 +10,109 @@ A simple and user-friendly Matrix client made with Flutter and the Matrix Dart S
| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------: |
| ![Screenshot of Nexus Client in dark mode, showing users talking, with a sidebar showing rooms and spaces, and another sidebar showing members](./assets/screenshotDark.png) | ![The same screenshot as above, but in light mode](./assets/screenshotLight.png) |
## Progress
## Try it out
- [ ] New logo
- [ ] Make context menus appear as bottom sheets on mobile
- [x] Move from the Dart SDK to the Gomuks SDK with Dart bindings: https://git.federated.nexus/Henry-Hiles/nexus/pulls/2
- [ ] Allow using remote gomuks over websocket
- [ ] Platform Support
- [x] Linux
- [x] Windows
- [ ] MacOS
- [ ] Android
- [ ] iOS
- [ ] Web (may not be possible)
- [x] Login
- [x] Username / password auth
- [ ] OAuth / OIDC
- [x] Improve initial sync experience
- [x] Rooms / Spaces
- [x] Displaying and choosing
- [x] Reading, showing unread
- [x] Mark as read button on rooms and spaces
- [ ] Searching
- [ ] Creating (Rooms, Spaces, and DMs)
- [x] Joining
- [ ] Parse vias
- [x] Using a text/uri/link
- [x] Plain text
- [x] `matrix:` Uri
- [x] Matrix.to link
- [ ] From space
- [ ] Exploring
- [x] Leaving
- [x] Subspaces
- [x] Messages
- [x] Encryption
- [x] Restoring crypto identity from a recovery passphrase/key
- [x] Sending
- [x] Plain text
- [x] HTML/Markdown
- [x] Replies
- [x] Choose ping on/off
- [ ] Per message profiles
- [ ] Attachments
- [ ] Commands with [MSC4391](https://github.com/matrix-org/matrix-spec-proposals/pull/4391)
- [x] Mentions
- [x] Users
- [x] Rooms
- [ ] Inline emoji picker (Putting this here since it'll be implemented the same way as mentions)
- [ ] Custom emojis/stickers
- [ ] GIFs using Gomuks' GIF proxies
- [x] Recieving
- [x] Plain text
- [x] Per message profiles
- [x] HTML
- [x] Replies
- [x] Viewing
- [ ] Jump to original message
- [x] In loaded timeline
- [ ] Out of loaded timeline
- [x] Edits
- [x] Attachments
- [x] Unencrypted
- [ ] Encrypted
- [x] Blurhashing
- [ ] Downloading attachments
- [x] Opening attachments in their own view
- [ ] Polls: Waiting on https://github.com/SwanFlutter/dynamic_polls/issues/1
- [x] Mentions
- [x] Users
- [x] Rooms
- [ ] Plain text (not sure if I want to add this or not, I probably won't unless there's interest)
- [x] Matrix URIs
- [x] Matrix.to links
- [ ] Do some fancy fetching to get nice names
- [ ] Make clickable
- [x] Custom emojis/stickers
- [x] History loading
- [x] Backwards
- [ ] Forwards
- [x] Editing
- [x] Deleting
- [ ] Reactions: Waiting on https://github.com/flyerhq/flutter_chat_ui/pull/838 or me doing a custom impl
- [ ] Pins
- [ ] Displaying
- [ ] Creating
- [ ] Threads
- [ ] Profile popouts
- [ ] Copy link to [room, space]
- [ ] Reporting
- [x] Events
- [ ] Rooms
- [ ] Notifications using UnifiedPush
- [ ] Group calls using [MSC4195](https://github.com/matrix-org/matrix-spec-proposals/pull/4195)
- [ ] Invites
- [ ] Settings
- [ ] Light/Dark mode
- [ ] SSD or CSD
- [ ] Show media by default
- [ ] Dynamic Theming
- [ ] Devices
- [ ] Viewing devices
- [ ] Verifying devices
- [ ] URL preview: Server / Client / None
- [ ] Account changes
- [ ] Display name
- [ ] Profile picture
- [ ] Timezone
- [ ] Pronouns
- [ ] Password
- [ ] About
- [x] Log Out
If you want to try out Nexus, download the [latest release](https://git.federated.nexus/Nexus/nexus/releases/latest).
## Build Instructions
### Nightly Builds
First, clone and open the repo:
For the newest changes, grab one of the following nightly artifacts, built by CI from the latest commit on `main`.
```sh
git clone https://git.federated.nexus/Henry-Hiles/nexus
cd nexus
- [Android APK](https://nightly.link/Henry-Hiles/nexus/workflows/android/main/APK.zip)
- [Unsigned iOS IPA](https://nightly.link/Henry-Hiles/nexus/workflows/ios/main/Nexus.ipa.zip)
- [Unsigned MacOS DMG](https://nightly.link/Henry-Hiles/nexus/workflows/macos/main/nexus.dmg.zip)
- [Windows EXE](https://nightly.link/Henry-Hiles/nexus/workflows/windows/main/windows-installer.zip)
Or, use one of the below methods:
### Nightly Flatpak Repo
Make sure Flatpak is set up on your system, then run:
```bash
flatpak install --user https://nexus.federated.nexus/flatpak/nexus.flatpakref
```
This adds the Nexus remote and installs the app for your user only, so no root access is needed (x86_64 and aarch64 are supported). To install system-wide instead, use `--system` in place of `--user`. Updates arrive through `flatpak update` or your software center.
### NixOS Module
Add Nexus as a flake input, following `nixpkgs` for less fetches:
```nix
nexus = {
url = "git+https://git.federated.nexus/Nexus/nexus";
inputs.nixpkgs.follows = "nixpkgs";
};
```
This tracks the latest commit on `main`. To stay on a release instead, pin the input to its tag:
```nix
url = "git+https://git.federated.nexus/Nexus/nexus?ref=refs/tags/v1.0.1";
```
Then import the module and enable it in your NixOS configuration:
```nix
{ inputs, ... }:
{
imports = [ inputs.nexus.nixosModules.default ];
programs.nexus = {
enable = true;
enableNotifications = true; # optional: push notifications via UnifiedPush
};
}
```
This installs Nexus system-wide. With `enableNotifications`, it also installs KUnifiedPush and registers its systemd and D-Bus services so notifications work. The `package` option lets you override the package if you need to.
## Build it yourself
### Prerequisites
#### Linux
- With Nix: Either use direnv, or `nix flake develop`
- Without Nix: Install Flutter, Go, Olm, Git, Clang, and GLibc.
- On NixOS: Either use direnv and `direnv allow`, or `nix develop`
- On other distros: Install Flutter, Go, Git, Libclang, Libass, MPV, and Glibc. Do not use any Snap packages, they cause various compilation issues.
#### Windows / MacOS
#### Windows
I don't really know. You will need Flutter, Git, Olm, Go, and Visual Studio tools, and otherwise I guess just keep installing stuff until there aren't any errors. I will look into this sometimeTM.
You will need:
- Flutter
- Git
- Libass
- MPV
- Go
- Visual Studio 2022 (Desktop development with C++)
- [MSYS2/MinGW-w64 GCC](https://www.msys2.org/) (for CGO)
- [LLVM/Clang + libclang](https://clang.llvm.org/get_started.html) (for `ffigen`)
On Windows, make sure these are available in your shell `PATH`:
- `C:\msys64\ucrt64\bin` (or your MinGW bin path containing `x86_64-w64-mingw32-gcc.exe`)
- `C:\Program Files\LLVM\bin` (contains `clang.exe` and `libclang.dll`)
For `dart scripts/generate.dart`, you may also need:
```powershell
$env:CPATH = "C:\msys64\ucrt64\include"
```
#### MacOS
Similar prerequisites apply (Flutter, Git, Go, C toolchain, LLVM/libclang), but exact setup has not been fully documented yet.
### Clone repo
First, clone and open the repo:
```sh
git clone --recurse-submodules https://git.federated.nexus/Nexus/nexus
cd nexus
```
### Set up Flutter
@ -153,22 +122,23 @@ Get dependencies:
flutter pub get
```
Get dependencies:
Generate Gomuks bindings:
```sh
flutter pub get
dart scripts/generate.dart
```
Clone Gomuks and generate bindings:
```sh
scripts/generate.sh
```
> [!NOTE]
> If you are having issues with `stddef.h` not being found, try setting CPATH manually:
>
> ```sh
> export CPATH="$(clang -v 2>&1 | grep "Selected GCC installation" | rev | cut -d' ' -f1 | rev)/include"
> ```
Build generated files, and watch for new changes:
```sh
flutter pub run build_runner watch --delete-conflicting-outputs
flutter pub run build_runner watch
```
Run the app:
@ -177,6 +147,13 @@ Run the app:
flutter run
```
Development instructions can be found in [DEVELOPMENT.md](./DEVELOPMENT.md).
## Community
Join the [Nexus Client Matrix Room](https://matrix.to/#/#nexus:federated.nexus) for questions or help with developing or using Nexus Client.
Join the [Nexus Client Matrix room](https://matrix.to/#/#nexus:federated.nexus) for questions or help with developing or using Nexus Client.
## Credits
Thank you Hylke Bons (https://planetpeanut.studio) for making the amazing icon for Nexus!
Thank you Tulir Asokan for making [Gomuks](https://github.com/gomuks/gomuks), and helping us integrate it into Nexus!

View file

@ -1,12 +1,18 @@
analyzer:
errors:
invalid_annotation_target: ignore
avoid_print: ignore
exclude:
- "build/**"
- "**/*.g.dart"
- "**/*.freezed.dart"
errors:
invalid_annotation_target: ignore
avoid_print: ignore
exclude:
- "build/**"
- "**/*.g.dart"
- "**/*.freezed.dart"
- android/**
- ios/**
- web/**
- windows/**
- macos/**
- linux/**
include: package:flutter_lints/flutter.yaml
linter:
rules:
prefer_double_quotes: true
rules:
prefer_double_quotes: true

View file

@ -1,78 +0,0 @@
plugins {
id "com.android.application"
id "kotlin-android"
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
id "dev.flutter.flutter-gradle-plugin"
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file("local.properties")
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader("UTF-8") { reader ->
localProperties.load(reader)
}
}
def flutterVersionCode = localProperties.getProperty("flutter.versionCode")
if (flutterVersionCode == null) {
flutterVersionCode = "1"
}
def flutterVersionName = localProperties.getProperty("flutter.versionName")
if (flutterVersionName == null) {
flutterVersionName = "1.0"
}
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
namespace = "nexus.federated.Nexus"
ndkVersion = flutter.ndkVersion
compileSdk = 34
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
// do we want to update.. eventually?
jvmTarget = "17"
}
defaultConfig {
applicationId = "nexus.federated.Nexus"
minSdk = 29
targetSdkVersion flutter.targetSdkVersion
versionCode = flutterVersionCode.toInteger()
versionName = flutterVersionName
}
signingConfigs {
release {
keyAlias "key"
def storePath = keystoreProperties['path'] ?: System.getenv("KEYSTORE_PATH")
storeFile storePath ? file(storePath) : null
keyPassword keystoreProperties['password'] ?: System.getenv("KEYSTORE_PASSWORD")
storePassword keystoreProperties['password'] ?: System.getenv("KEYSTORE_PASSWORD")
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
debug {
applicationIdSuffix = ".debug"
}
}
}
flutter {
source = "../.."
}

View file

@ -0,0 +1,84 @@
import java.util.Properties
plugins {
id("com.android.application")
id("dev.flutter.flutter-gradle-plugin")
}
val keystoreProperties = Properties()
val keystorePropertiesFile = rootProject.file("key.properties")
if (keystorePropertiesFile.exists()) {
keystorePropertiesFile.inputStream().use {
keystoreProperties.load(it)
}
}
android {
namespace = "nexus.federated.nexus"
compileSdk = 36
ndkVersion = flutter.ndkVersion
compileOptions {
isCoreLibraryDesugaringEnabled = true
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}
defaultConfig {
applicationId = "nexus.federated.nexus"
minSdk = 29
targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode
versionName = flutter.versionName
multiDexEnabled = true
}
signingConfigs {
create("release") {
keyAlias = "key"
val storePath =
keystoreProperties["path"]?.toString()
?: System.getenv("KEYSTORE_PATH")
storeFile = storePath?.let { file(it) }
keyPassword =
keystoreProperties["password"]?.toString()
?: System.getenv("KEYSTORE_PASSWORD")
storePassword =
keystoreProperties["password"]?.toString()
?: System.getenv("KEYSTORE_PASSWORD")
}
}
buildTypes {
release {
signingConfig = signingConfigs.getByName("release")
}
debug {
applicationIdSuffix = ".debug"
}
}
}
dependencies {
implementation("org.unifiedpush.android:embedded-fcm-distributor:3.1.0")
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4")
}
kotlin {
compilerOptions {
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_21
}
}
flutter {
source = "../.."
}

View file

@ -1,12 +1,16 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="29" />
<!-- Until https://github.com/flutter/flutter/issues/145290 is fixed, we need enableOnBackInvokedCallback as false -->
<application
android:enableOnBackInvokedCallback="false"
android:label="Nexus"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher"
@ -22,6 +26,21 @@
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<meta-data android:name="flutter_deeplinking_enabled" android:value="false" />
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="nexus.federated.nexus" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="matrix" />
</intent-filter>
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
@ -41,6 +60,16 @@
<meta-data
android:name="flutterEmbedding"
android:value="2" />
<!-- Needed by pasteboard, for pasting files from the clipboard -->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
</application>
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility and

View file

@ -1,5 +0,0 @@
package nexus.federated.Nexus
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity()

View file

@ -0,0 +1,40 @@
package nexus.federated.nexus
import android.os.Build
import android.os.Bundle
import android.view.View
import android.view.WindowInsets
import android.view.WindowInsetsAnimation
import io.flutter.embedding.android.FlutterActivity
// TODO: Revert this commit once https://github.com/flutter/flutter/issues/191156 is fixed
class MainActivity: FlutterActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) return
window.decorView.setWindowInsetsAnimationCallback(
object : WindowInsetsAnimation.Callback(DISPATCH_MODE_CONTINUE_ON_SUBTREE) {
override fun onProgress(
insets: WindowInsets,
runningAnimations: List<WindowInsetsAnimation>,
) = insets
override fun onEnd(animation: WindowInsetsAnimation) {
if ((animation.typeMask and WindowInsets.Type.ime()) != 0) reapplyInsets()
}
},
)
}
override fun onWindowFocusChanged(hasFocus: Boolean) {
super.onWindowFocusChanged(hasFocus)
if (hasFocus && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) reapplyInsets()
}
// Posted so it runs after Flutter has applied any insets it deferred.
private fun reapplyInsets() {
val view = findViewById<View>(FLUTTER_VIEW_ID) ?: return
view.post { view.rootWindowInsets?.let(view::onApplyWindowInsets) }
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Some files were not shown because too many files have changed in this diff Show more