Skip to content

Update translations from Weblate #2

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 211 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
211 commits
Select commit Hold shift + click to select a range
b806f9d
message [nfc]: Add _disposed flag; check it
PIG208 May 19, 2025
17a1a4c
message: Create an outbox message on send; manage its states
PIG208 Mar 25, 2025
61e343b
message: Avoid double-sends after send-message request succeeds
PIG208 May 21, 2025
36f0cb7
theme [nfc]: Move bgMessageRegular to DesignVariables
PIG208 Apr 30, 2025
d68d5a7
topics: Add topic list page
PIG208 Apr 30, 2025
d81b812
topics: Add TopicListButton to channel action sheet
lakshya1goel May 1, 2025
86f62c9
msglist [nfc]: Make trailingWhitespace a constant
PIG208 Apr 23, 2025
75f0deb
narrow test: Make sure sender is selfUser for outbox DM messages
PIG208 May 27, 2025
815b9d2
test [nfc]: Extract {dm,stream}OutboxMessage helpers
PIG208 Apr 22, 2025
2829bd8
msglist test [nfc]: Make checkInvariant compatible with MessageBase
PIG208 Apr 24, 2025
a4c564b
msglist [nfc]: Extract _addItemsForMessage
PIG208 Apr 1, 2025
2880065
l10n: Update translations from Weblate.
weblate May 28, 2025
1bb8206
version: Sync version and changelog from v0.0.30 release
gnprice May 29, 2025
d6a4959
l10n: Add zh, zh-Hans-CN, and zh-Hant-TW
PIG208 May 20, 2025
245d9d9
msglist: Colorize channel icon in the app bar, following Figma
chrisbobbe May 21, 2025
bb20554
msglist: Use store.senderDisplayName for sender row
PIG208 May 26, 2025
a268695
msglist [nfc]: Make _SenderRow accept MessageBase
PIG208 May 26, 2025
33c9779
compose [nfc]: Make confirmation dialog message flexible
PIG208 May 26, 2025
efe86b4
compose test [nfc]: Move some edit message helpers out of group
PIG208 May 26, 2025
47680e9
compose [nfc]: Update string to mention "edit" in name and description
PIG208 May 26, 2025
145e99f
msglist [nfc]: Distribute a 4px bottom padding down to conditional cases
chrisbobbe May 29, 2025
5636e72
msglist: Put edit-message progress bar in top half of 4px bottom padding
PIG208 May 27, 2025
ca3ef63
notif: Fix error message when account not found in store
rajveermalviya Mar 27, 2025
bb1ca88
l10n: Add translatable strings from v0.0.30 release
gnprice May 30, 2025
a4b5abb
msglist [nfc]: Add a TODO(#1518) for restore-failed-edit
chrisbobbe May 30, 2025
dbc3488
home test [nfc]: Move testNavObserver out to `main`
chrisbobbe Jun 3, 2025
e094fdc
home test: Remove an unnecessary `tester.pump` for a route animation
chrisbobbe Jun 3, 2025
177ad1c
home test [nfc]: Move some `find.descendant`s
chrisbobbe Jun 3, 2025
22e0502
home test: Make tapOpenMenu stronger; rename with "AndAwait" to clarify
chrisbobbe Jun 4, 2025
67842c0
home test: Add tapButtonAndAwaitTransition
chrisbobbe Jun 3, 2025
64cfee9
home test: Finish making menu tests robust to route animation changes
chrisbobbe Jun 3, 2025
1fd5844
home test [nfc]: Name a helper more helpfully
chrisbobbe Jun 3, 2025
834834b
home test: Make loading-page tests robust to route animation changes
chrisbobbe Jun 4, 2025
d3b0b43
licenses test: Add a smoke test for `additionalLicenses`
rajveermalviya Jun 3, 2025
fc874ae
licenses: Add asset entry for KaTeX license
rajveermalviya Jun 3, 2025
ebea818
settings [nfc]: Suppress some new deprecation warnings
chrisbobbe Jun 10, 2025
618a75c
home: Add placeholder text for empty Inbox, Channels, and Direct mess…
chrisbobbe Jun 6, 2025
debe99e
msglist [nfc]: Build end-of-feed widgets in a helper method
gnprice May 8, 2025
d831280
msglist [nfc]: Say we'll show "loading" even when fetch is at other end
gnprice May 2, 2025
3be9377
msglist [nfc]: Use `fetched` getter when reading
gnprice May 2, 2025
b1f97c6
msglist [nfc]: Use an enum for fetched/fetching/backoff state
gnprice May 2, 2025
babef41
msglist [nfc]: Split unfetched vs fetchInitial states, just for asserts
gnprice May 4, 2025
5aec54d
msglist [nfc]: Unify fetch/cooldown status as busyFetchingMore
gnprice May 2, 2025
70c31c3
msglist [nfc]: Rename backoff state to share between older/newer
gnprice May 2, 2025
b75f168
msglist [nfc]: Rename fetchingMore status from fetchOlder
gnprice May 2, 2025
7558042
msglist [nfc]: Pull out a _setStatus method
gnprice May 2, 2025
6ff889b
msglist [nfc]: Introduce haveNewest in model, always true for now
gnprice May 2, 2025
7793458
msglist: Set haveNewest from response, like haveOldest
gnprice May 2, 2025
dcaf366
test [nfc]: Generalize a helper eg.getMessagesResult
gnprice May 17, 2025
f3fb431
msglist [nfc]: Rearrange to follow normal ordering of class members
gnprice May 18, 2025
14a6695
msglist [nfc]: Document narrow field; make setter private
gnprice May 8, 2025
44b49be
msglist: Send positive numAfter for fetchInitial
gnprice May 8, 2025
ce98562
msglist: Make initial fetch from any anchor, in model
gnprice May 8, 2025
4fc6862
msglist [nfc]: Cut default for MessageListView.anchor
gnprice May 17, 2025
21d0d5e
msglist test [nfc]: Simplify a bit by cutting redundant default narrow
gnprice May 17, 2025
2f69e7c
msglist [nfc]: Factor out _fetchMore from fetchOlder
gnprice May 2, 2025
7820fd9
msglist: Add fetchNewer method to model
gnprice May 2, 2025
1ecd491
recent dms: Let last item scroll 90px up from bottom to make room for…
chrisbobbe Jun 4, 2025
90f1760
icons: Add "plus" icon, from Figma
chrisbobbe Jun 4, 2025
5d9cf6a
icons: Add checked_circle_{,un}checked from Figma, with modifications
chrisbobbe Jun 6, 2025
a0ae459
new-dm: Add UI for starting new DM conversations
chimnayajith Apr 24, 2025
0058cd7
new-dm: Support unselecting a user by tapping chip in input
chrisbobbe Jun 6, 2025
5afac68
l10n: Update translations from Weblate.
weblate Jun 12, 2025
796dcda
version: Sync version and changelog from v0.0.31 release
gnprice Jun 12, 2025
0338752
changelog: Tweak some wording in v0.0.31 to read a bit smoother
gnprice Jun 12, 2025
211b545
msglist: When initial message fetch comes up empty, auto-focus compos…
chrisbobbe Jun 3, 2025
7bc258b
msglist: Call fetchNewer when near bottom
gnprice May 2, 2025
c02451f
msglist: Show loading indicator at bottom as well as top
gnprice May 14, 2025
48abb5c
msglist: Accept anchor on MessageListPage
gnprice May 13, 2025
b1730ae
msglist: Jump, not scroll, to end when it might be far
gnprice May 9, 2025
17d822f
internal_link [nfc]: Introduce NarrowLink type
gnprice May 13, 2025
cb94d4e
internal_link [nfc]: Propagate InternalLink up to caller
gnprice May 13, 2025
aab5089
internal_link: Parse /near/ in narrow links
gnprice May 13, 2025
8cb2c7b
internal_link: Open /near/ links at the given anchor in msglist
gnprice May 13, 2025
d34f3b3
msglist: Fetch at first unread, optionally, instead of newest
gnprice Jun 12, 2025
2a5c741
message test: Add some is-message-list-notified checks
chrisbobbe Jun 12, 2025
11f05dc
msglist: Add and manage outbox message objects in message list view
PIG208 Mar 27, 2025
7370abd
pigeon [nfc]: Rename `notifications.dart` to `android_notifications.d…
rajveermalviya Feb 28, 2025
39fee00
dialog [nfc]: Document required ancestors for BuildContext
rajveermalviya Mar 27, 2025
6fe4af6
binding test [nfc]: Reorder androidNotificationHost getter
rajveermalviya Mar 28, 2025
9601d7b
docs: Document testing push notifications on iOS Simulator
rajveermalviya Mar 10, 2025
7caf2c4
docs: Clarify and expand a few spots in the iOS simulator notif doc
gnprice May 18, 2025
9719415
store: Add "blocking future" option on GlobalStoreWidget
gnprice Apr 12, 2025
5ac19e2
notif [nfc]: Move NotificationOpenPayload to a separate file
rajveermalviya May 27, 2025
b29b926
notif [nfc]: Introduce NotificationOpenService
rajveermalviya May 27, 2025
142939a
notif [nfc]: Rename NotificationOpenPayload methods
rajveermalviya May 27, 2025
cb1ddb9
notif [nfc]: Refactor NotificationOpenService.routeForNotification
rajveermalviya May 27, 2025
10f3691
notif: Show a dialog if received malformed Android Notification URL
rajveermalviya May 27, 2025
1911520
notif test [nfc]: Pull out androidNotificationUrlForMessage and setup…
rajveermalviya May 28, 2025
d7d0899
notif ios: Add parser for iOS APNs payload
rajveermalviya May 28, 2025
3401344
notif ios: Navigate when app launched from notification
rajveermalviya Feb 28, 2025
6dce764
notif ios: Navigate when app running but in background
rajveermalviya Mar 3, 2025
b7646c7
deps: Upgrade Flutter to 3.33.0-1.0.pre.465
rajveermalviya Jun 12, 2025
9f18a16
l10n: Remove use of deprecated "synthetic-package" option
rajveermalviya Jun 12, 2025
8f2b647
deps: Update CocoaPods pods (tools/upgrade pod)
rajveermalviya Jun 12, 2025
44956c6
deps: Update flutter_lints to 6.0.0, from 5.0.0
rajveermalviya Jun 12, 2025
cc47c89
deps: Upgrade firebase_core, firebase_messaging to latest
rajveermalviya Jun 12, 2025
2566f02
deps: Update dart_style to 3.1.0, from 3.0.1
rajveermalviya Jun 12, 2025
5692788
deps: Update pigeon to 25.3.2, from 25.3.1
rajveermalviya Jun 12, 2025
6527846
deps: Update file_picker to 10.2.0, from 10.1.9
rajveermalviya Jun 12, 2025
2036178
deps: Pin video_player to 2.9.5
rajveermalviya Jun 12, 2025
32401c6
deps: Upgrade packages within constraints (tools/upgrade pub)
rajveermalviya Jun 12, 2025
57ccaca
deps android: Upgrade Gradle to 8.14.2, from 8.14
rajveermalviya Jun 12, 2025
3ef9de6
deps android: Upgrade Android Gradle Plugin to 8.10.1, from 8.10.0
rajveermalviya Jun 12, 2025
fabd42f
compose: Remove a redundant TypingNotifier.stoppedComposing call
chrisbobbe May 30, 2025
a670966
compose [nfc]: Remove obsoleted TODO(#720)s
chrisbobbe May 30, 2025
2003b63
compose [nfc]: Expand a comment to include an edge case
chrisbobbe May 30, 2025
7e29108
msglist: Support retrieving failed outbox message content
PIG208 Apr 1, 2025
5caa859
api: Add InitialSnapshot.mutedUsers
sm-sayedi Feb 19, 2025
37a5948
api: Add muted_users event
sm-sayedi May 1, 2025
4259263
user: Add UserStore.isUserMuted, with event updates
sm-sayedi Feb 22, 2025
adaa571
icons: Add "person", "eye", and "eye_off" icons
sm-sayedi Feb 25, 2025
efdfbea
l10n: Update translations from Weblate.
weblate Jun 13, 2025
a3313ec
version: Sync version and changelog from v0.0.32 release
gnprice Jun 13, 2025
a0241e0
msglist: Say "Quote message" for the quote-and-reply button, followin…
chrisbobbe Jun 13, 2025
46671b4
msglist: Implement mark-read-on-scroll, without yet enabling
chrisbobbe Jun 14, 2025
301384c
msglist: Enable mark-read-on-scroll feature, with new global setting!
chrisbobbe Jun 12, 2025
0a19789
docs/release: Document using the bot to update translations from Weblate
gnprice Jun 14, 2025
25f91b7
l10n: Update translations from Weblate.
weblate Jun 14, 2025
f8677ac
version: Sync version and changelog from v0.0.33 release
gnprice Jun 14, 2025
67af2ed
logo: Switch app icons to non-"beta" versions
rajveermalviya Jun 13, 2025
2ab189d
android, ios: Update app name to "Zulip", from "Zulip beta"
rajveermalviya Jun 14, 2025
40046c8
notif: Use a different channel ID from previous values of zulip-mobile
rajveermalviya Jun 14, 2025
a4a96a1
notif: Use PackageInfo to generate sound resource file URL
rajveermalviya Jun 14, 2025
e0e51b1
android: Switch app ID to that of the main app
rajveermalviya Jun 14, 2025
378e187
ios: Switch app ID to that of the main app
rajveermalviya Jun 14, 2025
5be0e70
l10n: Add translatable strings from welcome dialog in v30.0.256 release
gnprice Jun 15, 2025
fec0071
l10n: Update translations from Weblate.
weblate Jun 15, 2025
a6ea882
version: Sync version and changelog from v30.0.256 release
gnprice Jun 15, 2025
725bb5e
version: Sync version and changelog from v30.0.257 release
gnprice Jun 16, 2025
3ae72ab
changelog: Update link in v30.0.257 user notes
gnprice Jun 15, 2025
76e64be
db: Debug-log a bit more on schema migrations
gnprice Jun 14, 2025
9bcb2a5
legacy-data: Describe LegacyAppData type and deserializers
gnprice Jun 13, 2025
e140bbb
legacy-data: Describe where legacy data is stored and how encoded
gnprice Jun 13, 2025
6dc5a80
legacy-data: Use legacy data to initialize this app's data
gnprice Jun 13, 2025
21bb1b5
legacy-data: Record whether legacy-app data was found
gnprice Jun 15, 2025
0e34d96
welcome: Show a dialog on first upgrading from legacy app
gnprice Jun 15, 2025
c750bdc
legacy-data: Tolerate dupe account, proceeding to next account
gnprice Jun 16, 2025
2209d03
legacy-data: Tolerate an item failing to decompress
gnprice Jun 16, 2025
c561c61
l10n: Update translations from Weblate.
weblate Jun 16, 2025
3031f20
settings: Reword to "in conversation views" consistently
gnprice Jun 16, 2025
b3e6632
version: Sync version and changelog from v30.0.258 release
gnprice Jun 16, 2025
ca4d0e3
changelog: Fix heading for 30.0.258
gnprice Jun 16, 2025
d3d7721
doc: Update README for launch, hooray
gnprice Jun 17, 2025
1ed0d3c
notif: Update Pigeon generated Swift code
rajveermalviya Jun 17, 2025
57c2471
check: Include ios files as the outputs for the pigeon suite
rajveermalviya Jun 17, 2025
616e77e
api: Add realm- and server-level presence settings to InitialSnapshot
chrisbobbe Jun 20, 2025
5945711
api: Add `presences` to InitialSnapshot
chrisbobbe Jun 20, 2025
66b648a
api: Add `presence` event
chrisbobbe Jun 20, 2025
a023bc7
api: Add updatePresence
chrisbobbe Jun 20, 2025
3284ea5
store: Add realm- and server-level presence settings to PerAccountStore
chrisbobbe Jun 20, 2025
5d43df2
store: Add `Presence` model, storing and reporting presence
chrisbobbe Jun 23, 2025
f11c52f
presence: Show presence on avatars throughout the app, and in profile
chrisbobbe Jun 20, 2025
edba020
l10n: Update translations from Weblate.
weblate Jun 23, 2025
080a7e5
msglist test [nfc]: Make a test explicit that it exercises "Combined …
chrisbobbe Jul 1, 2025
42d8b32
msglist: Show recipient headers on all messages, in Mentions / Starred
chrisbobbe Jun 24, 2025
0cf88f3
msglist test: Add missing test for tapping channel in recipient header
chrisbobbe Jun 26, 2025
a922f56
msglist: Tapping a message in Starred or Mentions opens anchored msglist
chrisbobbe Jul 2, 2025
c4a0ad9
users: Have userDisplayEmail handle unknown users
chrisbobbe Jun 9, 2025
cf857e0
lightbox: Use senderDisplayName for sender's name
chrisbobbe Jun 9, 2025
2ef4070
compose: Fix error on quote-and-replying message from unknown sender
chrisbobbe Jun 9, 2025
0b4751d
users [nfc]: Use userDisplayName at last non-self-user sites in widgets/
chrisbobbe Jun 9, 2025
d93f61a
muted-users: Say "Muted user" to replace a user's name, where applicable
chrisbobbe Jun 9, 2025
8b01b47
theme [nfc]: Rename some variables that aren't named variables in Figma
chrisbobbe Jun 9, 2025
86137cd
muted-users: Use placeholder for avatars of muted users, where applic…
chrisbobbe Jun 9, 2025
e672a29
msglist [nfc]: Remove a no-op MainAxisAlignment.spaceBetween in _Send…
chrisbobbe Jun 9, 2025
cd65877
button [nfc]: Have ZulipWebUiKitButton support a smaller, ad hoc size
chrisbobbe Jun 10, 2025
17294ee
button [nfc]: Have ZulipWebUiKitButton support an icon
chrisbobbe Jun 10, 2025
2ca3015
button [nfc]: Have ZulipWebUiKitButton support ad hoc minimal-neutral…
chrisbobbe Jun 10, 2025
b509c24
msglist: Hide content of muted messages, with a "Reveal message" button
chrisbobbe Jun 9, 2025
3974ff1
page [nfc]: Move no-content placeholder widget to page.dart, from hom…
chrisbobbe Jul 1, 2025
7bd509d
msglist test [nfc]: Move a Finder helper outward for reuse
chrisbobbe Jun 27, 2025
8749817
msglist: Friendlier placeholder text when narrow has no messages
chrisbobbe Jul 1, 2025
f57ea71
content test [nfc]: Use const for math block tests
rajveermalviya Apr 24, 2025
d303cc0
content test [nfc]: Enable skips in testParseExample and testParse
gnprice May 29, 2025
71b16af
content [nfc]: Inline _logError in _KatexParser._parseSpan
rajveermalviya May 8, 2025
b812cde
content [nfc]: Refactor _KatexParser._parseChildSpans to take list of…
rajveermalviya May 8, 2025
e7053c2
content: Populate `debugHtmlNode` for KatexNode
rajveermalviya May 27, 2025
d798810
content [nfc]: Reintroduce KatexNode as a base sealed class
rajveermalviya Apr 24, 2025
10620d7
content: Ignore more KaTeX classes that don't have CSS definition
rajveermalviya May 19, 2025
e971402
content: Handle 'mspace' and 'msupsub' KaTeX CSS classes
rajveermalviya May 19, 2025
44305ef
content [nfc]: Explain why KaTeX .mspace requires no action
gnprice Jul 2, 2025
86dbcf8
content: Support parsing and handling inline styles for KaTeX content
rajveermalviya Apr 1, 2025
f003f58
content: Correctly apply font-size to interpret "em" on the same KaTe…
gnprice Jul 2, 2025
3438f08
content: Ignore KaTeX classes that don't have CSS definition
rajveermalviya Jun 17, 2025
0498916
content [nfc]: Explain why some KaTeX CSS classes are unused in its CSS
gnprice Jul 2, 2025
5e686f0
content [nfc]: Make MathNode a sealed class
rajveermalviya Jun 17, 2025
88ebff2
content [nfc]: Make `KatexHtmlParseError` private
rajveermalviya Jun 17, 2025
b11f758
content: Allow KaTeX parser to report failure reasons
rajveermalviya Jun 17, 2025
4b90a9a
tools/content: Support surveying unimplemented KaTeX features
rajveermalviya Jun 17, 2025
80dcd47
tools/content: Add a flag to control verbosity of KaTeX check result
rajveermalviya Jun 18, 2025
898d907
api [nfc]: Remove backward-compat code for mark-read protocol in FL <155
chrisbobbe Jul 2, 2025
58f5c7c
content: Initial support for inline <audio>, showing source links
rajveermalviya Jun 30, 2025
7143368
version: Sync version and changelog from v30.0.259 release
gnprice Jul 3, 2025
3f52e04
docs/release: Add warning that this document needs an update
gnprice Jul 3, 2025
dc5acec
docs/release: Document steps for "preview releases"
gnprice Jul 3, 2025
55e14f4
msglist [nfc]: Make a widget-like class for the app bar
chrisbobbe Jul 2, 2025
f420613
narrow [nfc]: Make Narrow.containsMessage return nullable bool
chrisbobbe Jul 2, 2025
38714de
msglist [nfc]: Add a notifyListeners, redundant but to simplify reaso…
chrisbobbe Jul 3, 2025
61a2319
msglist [nfc]: Add public renarrowAndFetch method, and use internally
chrisbobbe Jul 3, 2025
3ecdd50
icons: Add `remove` and `search`, from Figma
chrisbobbe Jul 3, 2025
6fcc009
internal_link [nfc]: Renumber a TODO that isn't about basic search
chrisbobbe Jul 3, 2025
8d68939
narrow [nfc]: Reorder ApiNarrowWith to be later, since more specific
chrisbobbe Jul 3, 2025
f1c6b56
msglist [nfc]: Fix a comment that wasn't quite right for starred/ment…
chrisbobbe Jul 3, 2025
8bf418e
model [nfc]: Remove a TODO about topic muting, which is already resolved
chrisbobbe Jul 3, 2025
dd49897
msglist [nfc]: Renumber a TODO about muting
chrisbobbe Jul 3, 2025
ac7be16
model: Temporarily cut matchContent, matchTopic from message objects
chrisbobbe Jul 3, 2025
a6104aa
msglist: Support basic keyword search
chrisbobbe Jul 2, 2025
997e2fc
msglist [nfc]: Pull out a _showAsMuted method
gnprice Jul 3, 2025
0ada484
l10n: Update translations from Weblate.
weblate Jul 3, 2025
4da9f02
l10n: Update translations from Weblate.
weblate Jul 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 18 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,34 @@
# Zulip Flutter (beta)
# Zulip Flutter

A Zulip client for Android and iOS, using Flutter.
The official Zulip app for Android and iOS, built with Flutter.

This app is currently [in beta][beta].
When it's ready, it [will become the new][] official mobile Zulip client.
To see what work is planned before that launch,
see the [milestones][] and the [project board][].
This app [was launched][] as the main Zulip mobile app
in June 2025.
It replaced the [previous Zulip mobile app][] built with React Native.

[beta]: https://chat.zulip.org/#narrow/stream/2-general/topic/Flutter/near/1708728
[will become the new]: https://chat.zulip.org/#narrow/stream/2-general/topic/Flutter/near/1582367
[milestones]: https://github.com/zulip/zulip-flutter/milestones?direction=asc&sort=title
[project board]: https://github.com/orgs/zulip/projects/5/views/4
[was launched]: https://blog.zulip.com/flutter-mobile-app-launch
[previous Zulip mobile app]: https://github.com/zulip/zulip-mobile#readme


## Using Zulip
## Get the app

To use Zulip on iOS or Android, install the [official mobile Zulip client][].

You can also [try out this beta app][beta].

[official mobile Zulip client]: https://github.com/zulip/zulip-mobile#readme
Release versions of the app are available here:
* [Zulip for iOS](https://apps.apple.com/app/zulip/id1203036395)
on Apple's App Store
* [Zulip for Android](https://play.google.com/store/apps/details?id=com.zulipmobile)
on the Google Play Store
* Or if you don't use Google Play, you can
[download an APK](https://github.com/zulip/zulip-flutter/releases/latest)
from the official build we post on GitHub.


## Contributing

Contributions to this app are welcome.

If you're looking to participate in Google Summer of Code with Zulip,
this is one of the projects we intend to accept [GSoC 2025 applications][gsoc]
for.
this was among the projects we accepted [GSoC applications][gsoc] for
in 2024 and 2025.

[gsoc]: https://zulip.readthedocs.io/en/latest/outreach/gsoc.html#mobile-app

Expand Down
2 changes: 1 addition & 1 deletion android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ android {
}

defaultConfig {
applicationId "com.zulip.flutter"
applicationId "com.zulipmobile"
minSdkVersion 28
targetSdkVersion flutter.targetSdkVersion
// These are synced to local.properties from pubspec.yaml by the flutter tool.
Expand Down
4 changes: 2 additions & 2 deletions android/app/lint-baseline.xml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<issues format="6" by="lint 8.5.2" type="baseline" client="gradle" dependencies="false" name="AGP (8.5.2)" variant="all" version="8.5.2">
<issues format="6" by="lint 8.10.0" type="baseline" client="gradle" dependencies="false" name="AGP (8.10.0)" variant="all" version="8.10.0">

<!--TODO(#855) see if this is no longer needed-->
<issue
id="InvalidPackage"
message="Invalid package reference in library; not included in Android: `javax.xml.stream`. Referenced from `org.apache.tika.utils.XMLReaderUtils`.">
<location
file="$GRADLE_USER_HOME/caches/modules-2/files-2.1/org.apache.tika/tika-core/3.1.0/6ba44a9ddf8f6f2b4bc88e8bc64269aea0424607/tika-core-3.1.0.jar"/>
file="$GRADLE_USER_HOME/caches/modules-2/files-2.1/org.apache.tika/tika-core/3.2.0/9232bb3c71f231e8228f570071c0e1ea29d40115/tika-core-3.2.0.jar"/>
</issue>

</issues>
2 changes: 1 addition & 1 deletion android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:label="Zulip beta"
android:label="Zulip"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
<activity
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Autogenerated from Pigeon (v25.3.1), do not edit directly.
// Autogenerated from Pigeon (v25.3.2), do not edit directly.
// See also: https://pub.dev/packages/pigeon
@file:Suppress("UNCHECKED_CAST", "ArrayInDataClass")

Expand All @@ -13,7 +13,7 @@ import io.flutter.plugin.common.StandardMethodCodec
import io.flutter.plugin.common.StandardMessageCodec
import java.io.ByteArrayOutputStream
import java.nio.ByteBuffer
private object NotificationsPigeonUtils {
private object AndroidNotificationsPigeonUtils {

fun wrapResult(result: Any?): List<Any?> {
return listOf(result)
Expand Down Expand Up @@ -128,7 +128,7 @@ data class NotificationChannel (
if (this === other) {
return true
}
return NotificationsPigeonUtils.deepEquals(toList(), other.toList()) }
return AndroidNotificationsPigeonUtils.deepEquals(toList(), other.toList()) }

override fun hashCode(): Int = toList().hashCode()
}
Expand Down Expand Up @@ -171,7 +171,7 @@ data class AndroidIntent (
if (this === other) {
return true
}
return NotificationsPigeonUtils.deepEquals(toList(), other.toList()) }
return AndroidNotificationsPigeonUtils.deepEquals(toList(), other.toList()) }

override fun hashCode(): Int = toList().hashCode()
}
Expand Down Expand Up @@ -215,7 +215,7 @@ data class PendingIntent (
if (this === other) {
return true
}
return NotificationsPigeonUtils.deepEquals(toList(), other.toList()) }
return AndroidNotificationsPigeonUtils.deepEquals(toList(), other.toList()) }

override fun hashCode(): Int = toList().hashCode()
}
Expand Down Expand Up @@ -249,7 +249,7 @@ data class InboxStyle (
if (this === other) {
return true
}
return NotificationsPigeonUtils.deepEquals(toList(), other.toList()) }
return AndroidNotificationsPigeonUtils.deepEquals(toList(), other.toList()) }

override fun hashCode(): Int = toList().hashCode()
}
Expand Down Expand Up @@ -299,7 +299,7 @@ data class Person (
if (this === other) {
return true
}
return NotificationsPigeonUtils.deepEquals(toList(), other.toList()) }
return AndroidNotificationsPigeonUtils.deepEquals(toList(), other.toList()) }

override fun hashCode(): Int = toList().hashCode()
}
Expand Down Expand Up @@ -339,7 +339,7 @@ data class MessagingStyleMessage (
if (this === other) {
return true
}
return NotificationsPigeonUtils.deepEquals(toList(), other.toList()) }
return AndroidNotificationsPigeonUtils.deepEquals(toList(), other.toList()) }

override fun hashCode(): Int = toList().hashCode()
}
Expand Down Expand Up @@ -382,7 +382,7 @@ data class MessagingStyle (
if (this === other) {
return true
}
return NotificationsPigeonUtils.deepEquals(toList(), other.toList()) }
return AndroidNotificationsPigeonUtils.deepEquals(toList(), other.toList()) }

override fun hashCode(): Int = toList().hashCode()
}
Expand Down Expand Up @@ -419,7 +419,7 @@ data class Notification (
if (this === other) {
return true
}
return NotificationsPigeonUtils.deepEquals(toList(), other.toList()) }
return AndroidNotificationsPigeonUtils.deepEquals(toList(), other.toList()) }

override fun hashCode(): Int = toList().hashCode()
}
Expand Down Expand Up @@ -459,7 +459,7 @@ data class StatusBarNotification (
if (this === other) {
return true
}
return NotificationsPigeonUtils.deepEquals(toList(), other.toList()) }
return AndroidNotificationsPigeonUtils.deepEquals(toList(), other.toList()) }

override fun hashCode(): Int = toList().hashCode()
}
Expand Down Expand Up @@ -509,11 +509,11 @@ data class StoredNotificationSound (
if (this === other) {
return true
}
return NotificationsPigeonUtils.deepEquals(toList(), other.toList()) }
return AndroidNotificationsPigeonUtils.deepEquals(toList(), other.toList()) }

override fun hashCode(): Int = toList().hashCode()
}
private open class NotificationsPigeonCodec : StandardMessageCodec() {
private open class AndroidNotificationsPigeonCodec : StandardMessageCodec() {
override fun readValueOfType(type: Byte, buffer: ByteBuffer): Any? {
return when (type) {
129.toByte() -> {
Expand Down Expand Up @@ -721,7 +721,7 @@ interface AndroidNotificationHostApi {
companion object {
/** The codec used by AndroidNotificationHostApi. */
val codec: MessageCodec<Any?> by lazy {
NotificationsPigeonCodec()
AndroidNotificationsPigeonCodec()
}
/** Sets up an instance of `AndroidNotificationHostApi` to handle messages through the `binaryMessenger`. */
@JvmOverloads
Expand All @@ -737,7 +737,7 @@ interface AndroidNotificationHostApi {
api.createNotificationChannel(channelArg)
listOf(null)
} catch (exception: Throwable) {
NotificationsPigeonUtils.wrapError(exception)
AndroidNotificationsPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
Expand All @@ -752,7 +752,7 @@ interface AndroidNotificationHostApi {
val wrapped: List<Any?> = try {
listOf(api.getNotificationChannels())
} catch (exception: Throwable) {
NotificationsPigeonUtils.wrapError(exception)
AndroidNotificationsPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
Expand All @@ -770,7 +770,7 @@ interface AndroidNotificationHostApi {
api.deleteNotificationChannel(channelIdArg)
listOf(null)
} catch (exception: Throwable) {
NotificationsPigeonUtils.wrapError(exception)
AndroidNotificationsPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
Expand All @@ -785,7 +785,7 @@ interface AndroidNotificationHostApi {
val wrapped: List<Any?> = try {
listOf(api.listStoredSoundsInNotificationsDirectory())
} catch (exception: Throwable) {
NotificationsPigeonUtils.wrapError(exception)
AndroidNotificationsPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
Expand All @@ -803,7 +803,7 @@ interface AndroidNotificationHostApi {
val wrapped: List<Any?> = try {
listOf(api.copySoundResourceToMediaStore(targetFileDisplayNameArg, sourceResourceNameArg))
} catch (exception: Throwable) {
NotificationsPigeonUtils.wrapError(exception)
AndroidNotificationsPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
Expand Down Expand Up @@ -835,7 +835,7 @@ interface AndroidNotificationHostApi {
api.notify(tagArg, idArg, autoCancelArg, channelIdArg, colorArg, contentIntentArg, contentTextArg, contentTitleArg, extrasArg, groupKeyArg, inboxStyleArg, isGroupSummaryArg, messagingStyleArg, numberArg, smallIconResourceNameArg)
listOf(null)
} catch (exception: Throwable) {
NotificationsPigeonUtils.wrapError(exception)
AndroidNotificationsPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
Expand All @@ -852,7 +852,7 @@ interface AndroidNotificationHostApi {
val wrapped: List<Any?> = try {
listOf(api.getActiveNotificationMessagingStyleByTag(tagArg))
} catch (exception: Throwable) {
NotificationsPigeonUtils.wrapError(exception)
AndroidNotificationsPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
Expand All @@ -869,7 +869,7 @@ interface AndroidNotificationHostApi {
val wrapped: List<Any?> = try {
listOf(api.getActiveNotifications(desiredExtrasArg))
} catch (exception: Throwable) {
NotificationsPigeonUtils.wrapError(exception)
AndroidNotificationsPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
Expand All @@ -888,7 +888,7 @@ interface AndroidNotificationHostApi {
api.cancel(tagArg, idArg)
listOf(null)
} catch (exception: Throwable) {
NotificationsPigeonUtils.wrapError(exception)
AndroidNotificationsPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
Expand Down
Binary file modified android/app/src/main/res/mipmap-hdpi/ic_launcher_background.webp
Binary file not shown.
Binary file modified android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.webp
Binary file not shown.
Binary file modified android/app/src/main/res/mipmap-mdpi/ic_launcher_background.webp
Binary file not shown.
Binary file modified android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.webp
Binary file not shown.
Binary file not shown.
Binary file modified android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.webp
Binary file not shown.
Binary file not shown.
Binary file modified android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.webp
Binary file not shown.
Binary file not shown.
Binary file not shown.
2 changes: 1 addition & 1 deletion android/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ android.enableJetifier=true
# Defining them here makes them available both in
# settings.gradle and in the build.gradle files.

agpVersion=8.10.0
agpVersion=8.10.1

# Generally update this to the version found in recent releases
# of Android Studio, as listed in this table:
Expand Down
2 changes: 1 addition & 1 deletion android/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
# the wrapper is the one from the new Gradle too.)
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-all.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
20 changes: 0 additions & 20 deletions assets/app-icons/zulip-beta-combined.svg

This file was deleted.

4 changes: 0 additions & 4 deletions assets/app-icons/zulip-white-z-beta-on-transparent.svg

This file was deleted.

Binary file modified assets/icons/ZulipIcons.ttf
Binary file not shown.
3 changes: 3 additions & 0 deletions assets/icons/check_circle_checked.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions assets/icons/check_circle_unchecked.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions assets/icons/eye.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading