The date on a release generally reflects when the source commit was tagged and the release build was first posted to GitHub or our alpha channels on the Play Store and Apple's App Store. The main rollout to users in general on the app stores is typically a few days later.
Many fixes and improvements, including:
- Support for setting yourself as away/unavailable, or setting a status message.
- Fixed several issues in message compose and autocomplete.
- Fixed several issues in sending messages under bad network conditions.
- Translation updates for Portuguese, Italian, Hindi, Turkish, French, German, and Czech.
- Support for the new "availability" or "user status" feature (#3344; 7d16af845^..f37856207, 130fde9fd^..7bbd09896)
- Distinct nav icons "inbox" and "world" for the unreads and all-messages screens, rather than both "home". (#3232)
- Fixed issue causing stuttering animation on lightbox. (#3334)
- Fixed background color below compose box on notched displays. (#3329)
- Fixed color of user-group icon in @-mention autocomplete in dark mode. (#3366)
- Support batched remove-notification events, on Android. (#3343)
- Translation updates for Turkish. (a6b548999)
- Improved documentation for developing against a dev server. (e62f84f2d)
- Small improvements to Git documentation. (f018461d4)
- Almost all selectors are now annotated with types. (#3360, #3364)
- Fixed ineffective caching in many selectors. (#3015; 2e898e745^..414e48cc6)
- New script
tools/ios
to build for iOS and upload to the App Store, entirely from the command line. (38f8b5da1) - New, more streamlined and secure workflow for signing Android release builds. (06b53639b^..23a3c705b)
This was a beta-only release.
Many fixes and improvements, including:
- Fixed several issues in message compose and autocomplete.
- Fixed several issues in sending messages under bad network conditions.
- Translation updates for Portuguese, Italian, Hindi, French, German, and Czech.
A terse and incomplete list:
- Numerous type improvements: actions, events, strict-local
- Fixed #3274, lightbox action sheet
- Fixed #3259, outbox reordering
- Fixed #3120 by retrying outbox
- Reducer refactor
- Fixed #3280, iOS layout at top
- Android build updates
- Compose box simpler, and fixed some latency
- Fixed double autocomplete popups
- Fixed #3295 in compose box
- Make WebViews debuggable
- Buffer thunk actions
- Fixed #2128, spamming server with notif signups
- android notif: Completely cut out wix library
- android notif: Upgrade to FCM from GCM
- Fixed #3338, by using server's
found_newest
/found_oldest
- Fixed caching in some selectors (#3015)
- Fixed some inefficient data structures (#3339)
- Fixed #3289,
@
-autocomplete following newline - Cleaned up CI in several ways
- Fixed #2693, emoji cut off at bottom
- Translation updates for Portuguese, Italian, Hindi, French, German, and Czech
This was an alpha-only release, followed closely by 23.1.110. See above for details.
- Fixed regression in 22.0.107: launching the app from a notification would lead to a "No messages" screen. (#3284, 5d1b5b0d8)
Many fixes and improvements, including:
- Fixed bug: a successfully-sent message would stick around as a zombie, with "sending" animation.
- Evaded bug in React Native: the message list and nav bar sometimes failed to display.
- Redesigned language-settings screen uses each language's own name, drops flag images, and has search.
- Translation updates in Korean, Hindi, Ukrainian, and Chinese.
- Fixed bug: a successfully-sent message would stick around as a zombie, with "sending" animation. (#3203)
- Evaded bug in React Native: the message list and nav bar sometimes failed to display. (#3089)
- Redesigned language-settings screen uses each language's own name, drops flag images, and has search. (#2611, #3231)
- Don't (attempt to) stop notifications on switching accounts. (23e01e850)
- Fix broken layout on account details screen. (#3228)
- Paint "safe area" with appropriate background color. (#3236)
- Translation updates in Korean, Hindi, Ukrainian, and Chinese. (7cc9950c6, 6b4ce281c)
- Keep presence info up to date. (#3207)
All active developers will benefit from knowing about these. More details on each in subsections below.
-
Major typing upgrades, including:
- Exact object types -- use them in most cases. Discussion in 61d2e3426.
- Intersection types -- probably never use them. Discussion in ff515bc9d and 124a2f39a.
- Read-only arrays -- use them in most cases. Discussion in 4c3aaa0b1.
-
New patterns for getting styles: static where possible, and otherwise using new React context API instead of legacy one. All new code should follow. Examples in a2bfcb41b, 51dd1b3b2, f6ddc2dba.
-
The type
Account
is no longer the same asAuth
. In either case,Identity
is preferred where it suffices. Changed in 5738ccb6f, as part of notifications changes. -
getAuth
and other account-related selectors no longer return malformed data. Some throw; others explicitly can returnundefined
. Interfaces in jsdoc inaccountsSelectors.js
; discussion in 33a4df218. -
We no longer lie to Redux through
areStatesEqual
! See #3163. -
Automated refactoring is pretty great! Discussion in e566058bf of one approach. Lower-tech approaches already helped powerfully for migrating to exact types, and to new
styles
API.
-
Experimented with automated refactoring: an AST-based tool
jscodeshift
, and lower-tech Perl one-liners. (jscodeshift
discussed in e566058bf, used in 47365203f. Perl one-liners on several occasions; seegit log --grep perl
.) -
tools/test
accepts--diff COMMIT
: run only on files changed sinceCOMMIT
(vs. default of files changed in current branch.) (1fe380e1a) -
Reactotron disabled by default, because it broke basic app functionality. :'-( (170ed2a32, 598386524)
-
New script
tools/changelog
streamlines some steps of making a release. (593d38d06^..9dfb52e24)
-
Most object types are now exact. Let's do more of that. (Discussion in 61d2e3426; additional changes in a15c00e1a^..b9b48657f, 703739338, e5e57abe3^..9c1898242)
-
Intersection types nearly all replaced with object spread. (Discussion in ff515bc9d and 124a2f39a; additional changes in eb3783b1a^..47365203f)
-
New patterns for getting styles: static where possible, and otherwise using new React context API instead of legacy one. Most existing code migrated; all new code should follow. (examples in a2bfcb41b, 51dd1b3b2, f6ddc2dba; fuller changes in 112f99be9^..8dad2d191, 1f71edad9^..a4e0f23b3)
-
Major parts of notifications code rewritten, others refactored; the wix
react-native-notifications
library reduced to a small role. (Context in #2877. Changes in 410041dfa^..2ed116267, dcbe2ac86^..d6454eb50, 034e25be8^..3a2076e0f, f1eae82d8^..233d68c40) -
Rewrote
accountsSelectors.js
. NowgetAuth
can only return a real, authentication-bearing value. (Discussion in 33a4df218; changes in 3706965d3^..614f56bd2, f1eae82d8) -
Removed the
connectPreserveOnBackOption
hack, where we told lies to Redux viaareStatesEqual
. (#3163, da6c43d4b^..cd7b25757) -
Server API bindings describe more routes (even that the app doesn't use); route bindings have a more uniform signature, and link to API docs. (1acf7d96a^..8170045d8, 0af4af22b^..6becc6e91
-
We subscribe to all server events with our queue. (d8b36412c^..6c7fffc76)
-
Logic fixes in Android notification UI code for sound and vibration; no visible changes yet. (125dc0806^..458ef8832)
-
Don't run old migrations on first install. (863bca711)
-
Don't use
console.warn
. (21f64aad7) -
More read-only array types. (4c3aaa0b1)
-
Translated-message files moved out of
src/
, tostatic
, to avoid spamming grep results. (1fc26a512) -
Upgraded RN to v0.57.8, from v0.57.1. (c03c85684^..ca759b106, 329dd67f0)
-
New script
tools/upgrade
to help systematize upgrading dependencies. (b64ce0023^..eb130c631)
Many fixes and improvements, including:
- Full support for custom emoji, including in composing messages and in reactions.
- Fetch updates much sooner when reopened after several minutes idle.
- Fixed bug: a message view seen shortly after starting the app could show "No messages".
- Fixed bug: uploading an image while viewing a stream would go to the wrong topic.
- Fixed bug: a draft message typed just after starting the app was lost.
- Complete translations for Italian and Korean.
- Fixed a regression in 21.0.104: the autocomplete popup would sometimes not respond when touched. (#3209)
This was a beta version that did not become a production release; see above.
- Fixed issue where a message view seen shortly after starting the app could show "No messages". (#3162)
- Fixed issue where uploading an image while viewing a stream would go to the wrong topic. (#3130)
- Fixed a regression in 21.0.104: the password input for logging into a server was rendered in a broken way, looking empty. (#3182)
tools/test
accepts a--fix
option. (177d3eaa9)
- New internal API
withGetText
for acquiring a handy string-translating function, to use in any part of the app that isn't a React component. (#2812; c22dfee9b^..9eaa05c27) - New experimental internal API for the (server) API bindings:
import api from ...
, thenapi.sendMessage(...)
etc. (63ae59808^..acb979cf5) - We no longer write
props: Props
, or where applicablestate: State
, at the top of each React component; the type arguments toPureComponent
orComponent
express that already. (7e3becfba, c5df77962) - A good swath of our uses of
any
andObject
are replaced with real types, and 20 more files are marked strict-local; 60 to go. (9a0df7416^..60f14ed83)
This was a beta version that did not become a production release; see the regression fix above.
- Added full support for custom emoji ("realm emoji"), including in composing messages and in reactions. (#2129, #2846)
- The app now fetches updates much sooner when reopened after several minutes idle. (#3190)
- Fixed issue where a draft message typed just after starting the app was lost. (#2861)
- Complete translations for Italian and Korean. (62c8d92d8)
- Fixed missing line that made switching to Indonesian language not work. (d92329bb4)
- Messages pending send can now be deleted in long-press menu, like other messages. (#3189)
- Force-upgrade screen provides helpful App Store or Play Store deep-link. (#3158)
- Fixed handling of old reactions with emoji that have changed name. (#3169)
- Fixed misrendering of "keypad" emoji like
:zero:
. (#3129) - Group PM conversations now show combined avatars with rounded corners, like individual avatars. (#3167)
- Fixed bugs causing top bar to sometimes be white instead of stream-colored. (#2797, #3139)
- Long-pressing a recipient bar now offers "Unmute topic" when appropriate. (8b60314e0 / #3156)
- Alert words are now highlighted in the message list. (#3082)
- Fixed fetching of explicit avatars (
!avatar(...)
) in messages. (#3047) - Overflow menu in lightbox is now properly aligned. (#3024)
- Send button has larger touch target. (#2945)
- Error banners in message list show as red, rather than gray.
- Fixed oversizing of images in Dropbox inline previews. (#3136)
- Various improvements across the app for latency and performance.
- Tests and linters run fast by default (<5s on a fast desktop for small changes, <1s for no changes), by running only on files changed in the current branch. (977596d9e^..bd24bd1be)
- Spell-checker results are now pure warnings, free to ignore. (ff7bc2992)
- Configuration for Reactotron, and expanded developer documentation on debugging. (#3109, 0e5d03631^..59967fc23)
- One-step release-mode Android builds without signing keys or Sentry. (#2883; 8d55447be^..ee40b3c7b)
- Detailed step-by-step instructions for setting up dev environment on WSL. (#3193)
- Extensive refactoring of the message list and rendering to HTML. (#3156, #3170)
- New
caseNarrow
abstraction for working with narrow objects. (fa6134aa6^..e9fe1e801) - Explain
Auth
vs.Account
types, and introduce distinctIdentity
. (f5a2603a4^..28b1177d3) - Applied
@flow strict-local
to most files and@flow strict
to many files, fixing newly-exposed type issues. (#3164, 6efa7980c, 2a96ede50, fa1b8a85c; 5ec1d3f9d^..597c51f6e; 5a2d49f85^..da5d519bf) - Began to use more Flow "exact types". (01003e619, 24211fb55, others)
- Flow types on many more areas of code.
- Enable ESLint in most places where it was disabled, fixing issues. (ddd51e5eb^..a533fa8d8)
- Scripts run on Bash, and are moved out of package.json to their own files. (6c25beeb0, 3119ec697, 8d3e8ade5^..4d58c11d8)
Many fixes and improvements, including:
- Mark messages you see as read, even in a short thread.
- Tapping an emoji reaction works again to add/remove your own.
- Messages you send no longer flicker when they reach the server.
- Translation updates. Complete translations for Polish and Portuguese, the latter nearly from scratch!
- Mark messages you see as read, even in a short thread. (#2988)
- Tapping an emoji reaction works again to add/remove your own. (#2784)
- Messages you send no longer flicker when they reach the server. (#2483)
- Translation updates. Complete translations for Polish and Portuguese, the latter nearly from scratch!
- (iOS) Downloading a shared image works again. (#2618)
- (iOS) Fix multiple bugs affecting autocorrect when typing a message. (#3052, #3053)
- (iOS) New React Native version 0.57 no longer breaks typing in Chinese or Japanese. (#2434)
- (Android) New React Native version 0.57 no longer crashes when typing an astral-plane Unicode character, including post-2009 emoji. (#2787)
- (Android) Fix crash when downloading a file, by requesting needed permissions. (#3115)
- SSO login was broken. (#3126)
- (Android, infra) Client-side support for removing notifications when you read the messages elsewhere. (#2634)
- (infra) Updated to React Native v0.57 (from v0.55). (#2789)
TODO: backfill some of this information from notes in other places.