text:
hack: Update preflight with ergonomics changes

@xugy99, @Anhui-tqhuang: I spent some time working with the Cloud Architects today on the onboarding process and I'd like to propose some changes to how the preflight script fits together. This PR sketches out the beginning of it by rewriting the --help; essentially I think we should split the script between two core use-cases: onboarding and productive-use.
Rather than using the --with-infra flag to add the DP overhead, the --onboard flag should check that the subscription is configured correctly, and that there is enough quota for a DP and a single non-HA E2s_v3 cluster. The customer should be able to do something like curl raw.githubusercontent.com/azure-preflight | bash -s -- $SUBSCRIPTION $REGION in their Azure web CLI and be off and running.
The other options remain for customers that are up and running but want to make sure that they have enough capacity to provision a new cluster. I don't think this second use case is ideal long-term - we want the portal/API to provide all the feedback the customer needs here.
I have a few other proposals to codify as well - e.g., you'll note here that I'm requiring <target-subscription> rather than assuming the default subscription in az is the target - but I'd like to get this first, largest change out there first to see what you guys think.

onboarding seems like a init step when customer first uses our services, in your case, onboarding is related to a specific region which makes me a bit confused 🤔

this looks good to me as a pre-first-flight check:

user has to know which subscription is going to be used
user has to know the first region it prefers for flight

@ba-edb do you want us to continue on patching to your branch?

onboarding seems like a init step when customer first uses our services, in your case, onboarding is related to a specific region which makes me a bit confused

The onboarding follows a specific script; I'm suggesting we try to make that as simple as possible with this script. But you're right about needing to preflight a second region - we still need the --infra option. Will amend.

@ba-edb do you want us to continue on patching to your branch?

Sure! I'm going to poke at this a bit more over the next couple of days as well. Thanks Guang.

@xugy99 I rebased this PR with main branch and made some tiny fix for the conflicts with @Simonzhaohui's comments. I also add an option --onboard based on the initial @ba-edb's comment.
@ba-edb @xugy99 I set this PR to read for review. Could you provide some comments for it?

repo: EnterpriseDB/cloud-utilities


text:
No augmented forward pass found for dgemqrt_64_

Enzyme currently fails for a simple linear algebra differentiation, I'm not sure if this is supposed to work or it requires a custom rule, also I'm wondering where are the custom rules defined nowadays?
using Enzyme
f(x) = sum(Matrix(qr(x).Q))
autodiff(Reverse, f, Duplicated(rand(2, 2), zeros(2, 2))) # boom!

it seems reaching the routine defined in LAPACK and stop there, perhaps should have this defined upstream?

Sorry, closing as duplicate of the aforementioned lapack issue

source: gharchive/issue

authors: Roger-luo wsmoses

license: MIT

license_type: permissive

license_source: github-api


text:
Pixel Streaming HMD -- Convergence is not working as expected

When enabling pixel streaming plugin in 5.2 and launching a stream with HMD enabled, the stereo convergence rendered in headset is really distorted and not resolving correctly.  Streamer infrastructure is working great (nice job!) and really easy to setup but I'm wondering if there is something not configured correctly for stereo view, or if I've missed something.  Tested using Quest Pro.
*On Quest 2 the image converges but the FOV is incorrect.

Just collating this has also been reporting here: https://github.com/EpicGames/PixelStreamingInfrastructure/issues/73#issuecomment-1574250926
We are aware of the issue and considering a fix for 5.3 if possible.
CC @Belchy06

Also reported here: https://github.com/EpicGames/PixelStreamingInfrastructure/issues/291

CC @michaelbecker-d so you get vis on this issue as it moves along.

hi @lukehb ! just saw 5.3 is in preview, any chance it includes the fix?

@michaelbecker-d Sorry to say that we don't have a fix in hand yet, so it isn't in 5.3 preview.

Hi! Any update on a fix for 5.3?

Sadly not, we have had our priorities shuffled internally. We would be willing to accept/review a PR engine side or frontend side to speed the issue along, but we have been unable to get any internal engineering allocation on this so far due to other things being higher priority. Personally, I would love to get this solved, but we just haven't had the time/approval we need to do so.

For those interested in jumping in to solve the issue I do believe the issue is likely on engine side in the PixelStreamingHMD module that has many hardcoded values and needs to more correctly render an image for the VR headset which is connected on the browser side. It will probably involve sending a custom datachannel payload from the browser to UE to configure the IPD and such values.

Better hardcoded values in the engine module for the Quest 2 are
const float ProjectionCenterOffset = 0.09f;
const float HalfFov = 1.6f / 2.f;

OpenXR vs Default Pixel Streaming HMD

Comparison

OpenXR in grayscale. Default Pixel Streaming HMD in colour.

OpenXR vs
const float ProjectionCenterOffset = 0.09f;
const float HalfFov = 1.5f / 2.f;  // 1.6f is better but I only have an image for 1.5f

Comparison

OpenXR in grayscale. Pixel Streaming HMD with better hardcoded values in colour.

You can play with whatever determines ViewportSize.X to try and make the image wider.
diff --git a/Engine/Plugins/Media/PixelStreaming/Source/PixelStreamingHMD/Private/PixelStreamingHMD.cpp b/Engine/Plugins/Media/PixelStreaming/Source/PixelStreamingHMD/Private/PixelStreamingHMD.cpp
index 3735afe..57279ef 100644
--- a/Engine/Plugins/Media/PixelStreaming/Source/PixelStreamingHMD/Private/PixelStreamingHMD.cpp
+++ b/Engine/Plugins/Media/PixelStreaming/Source/PixelStreamingHMD/Private/PixelStreamingHMD.cpp
@@ -110,7 +110,7 @@ void FPixelStreamingHMD::DrawDistortionMesh_RenderThread(struct FHeadMountedDisp
        FRHICommandListImmediate& RHICmdList = Context.RHICmdList;
        const FSceneViewFamily& ViewFamily = *(View.Family);
        FIntPoint ViewportSize = ViewFamily.RenderTarget->GetSizeXY();
-       RHICmdList.SetViewport(0, 0, 0.0f, ViewportSize.X, ViewportSize.Y, 1.0f);
+       RHICmdList.SetViewport(0, 0, 0.0f, ViewportSize.X + 100, ViewportSize.Y, 1.0f);  // Increase amount of picture for eyes. Though modifying this here offsets the right eye so it doesn't do any good

        static const uint32 NumVerts = 4;
        static const uint32 NumTris = 2;
@@ -181,10 +181,10 @@ void FPixelStreamingHMD::CalculateStereoViewOffset(const int32 ViewIndex, FRotat

 FMatrix FPixelStreamingHMD::GetStereoProjectionMatrix(const int32 ViewIndex) const
 {
-       const float ProjectionCenterOffset = 0.151976421f;
+       const float ProjectionCenterOffset = 0.09f;  // Fix eyes converging too far. A straight line is now straight
        const float PassProjectionOffset = (ViewIndex == EStereoscopicEye::eSSE_LEFT_EYE) ? ProjectionCenterOffset : -ProjectionCenterOffset;

-       const float HalfFov = 2.19686294f / 2.f;
+       const float HalfFov = 1.6f / 2.f;  // Fix fov
        TSharedPtr<SWindow> TargetWindow = GEngine->GameViewport->GetWindow();
        FVector2f SizeInScreen = TargetWindow->GetSizeInScreen();
        const float InWidth = SizeInScreen.X / 2.f;

Thanks for providing some hard numbers @owu-1, I'll be sure to give them a try when I've got the HMD out again.
Out of curiosity, do you have a source for the updated values, or were they from trial and error?

No problem and yea it was just trial and error. The workflow to achieve it being

Open an empty VR template
Select the camera in the Pawn blueprint and untick Lock to HMD
Mirror the headset screen to PC with scrcpy
Use OBS to capture the scrcpy window
Put the headset into the Oculus link menu
Optionally disable the proximity sensor so you don't have to keep putting on the headset for the headset's image to display in scrcpyadb shell am broadcast -a com.oculus.vrpowermanager.prox_close https://www.reddit.com/r/OculusQuest/comments/ivc2hr/switch_off_proximity_sensorblack_screen_fix_solved/
Run the game. Scrcpy should now show the game playing on the headset. The camera should be locked. Change the initial position by moving around Player Start
In OBS, right click on the scrcpy image and screenshot the source. Import the image into OBS and adjust its opacity and colour correction. This is now the OpenXR reference
Disable the OpenXR plugin and enable the PixelStreaming plugin. Setup PixelStreamingInfrastructure for VR
Start Pixel Steaming and note the difference in OBS. Sadly you have to keep putting on the headset to start the stream, but after its started you can put it off if the proximity sensor is disabled

Hey guys,
Do we have a chance to get a fix for 5.4?

Hey @demonixis,
I can't guarantee anything at this point.

@ephb We would be very open to a PR. Likely it is on the UE side, but if you link it here we will review it.

Issue is present on Apple Vision Pro (see issue  above).
On Apple Vision Pro, the left and right display images are rendered fine on their own, but when viewed through the AVP with both eyes, the resulting image is distorted.

Environment: Apple Vision Pro/Safari/Ubuntu

Thanks for adding that note. We started work on this specifically with the intent of fixing VisionPro as well.
The issue can reliably reproduced on Quest 3 and we are looking into a fix first.

@brycelynch, @michaelbecker-d, @SerenaDose, @owu-1, @demonixis, @ephb
The issue has been moved to the new repository: https://github.com/EpicGamesExt/PixelStreamingInfrastructure/issues/7
It should be live shortly, so you can continue following the issue there. Thank you for your contribution!

authors: Belchy06 DenisTensorWorks SerenaDose brycelynch demonixis ephb lukehb michaelbecker-d owu-1

repo: EpicGames/PixelStreamingInfrastructure


text:
Revert "Add support for binary tuple data in replication messages"

This reverts commit 1a494558c49d2c5a64d6051b48370ef7439f6e30.

Reverting because postgres 13 doesn't support binary pgoutput mode

source: gharchive/pull-request

repo: Epsio-Labs/rust-postgres


text:
Forward Pass Residual Transformer

Greetings,
With the residual transformer, you want to predict the residual layer tokens. So I am a little bit confused as to why you take the tokens of the first $n - 1$ layers here. That is, you take the base layer + 4 residual layers. Shouldn't you take all_indices[..., 1:] to get the residual tokens?

Ah nvm, to predict the $n$-th layer, it needs to take the $n-1$ previous layers as input.


text:
Missing documentation for context and data actors

csdocs fails to provide documentation for context and data modules and actors.
The problem is that their modules' __init__.py is missing the required documentation string. This bug is triggered if the first module(s) have a missing doc string. Previously, this bug has been been hidden by the charts module that was removed with this release.
We should fix this, and write a test for missing module documentation.

This has been fixed on the develop branch. Closing issue.

authors: olaan persquare

repo: EricssonResearch/calvin-base

license_source: bigquery


text:
Fix issue with import when using webpack 5

When using this package with webpack@5.x.x I am getting the following error:
ERROR in ./node_modules/leaflet-shape-markers/src/ShapeMarkers.js 1:0-51
Should not import the named export 'version' (reexported as 'VERSION') from default-exporting module (only default export is available soon)
 @ ./node_modules/esri-leaflet-renderers/src/Symbols/PointSymbol.js 8:0-90 146:15-27 148:15-28 150:15-26 152:15-22
 @ ./node_modules/esri-leaflet-renderers/src/Renderers/Renderer.js 3:0-49 41:13-24
 @ ./node_modules/esri-leaflet-renderers/src/Renderers/ClassBreaksRenderer.js

It seems that "soon" webpack will not allow named export from import.
The suggested fix shouldn't break anything as it just changed the way things are imported and then exported.
I encountered such a case when using L.esri.WebMap.

@dpraimeyuu thank you for the PR. Note this is a similar change to these that we have made in the other Esri Leflet repos:

https://github.com/Esri/esri-leaflet/pull/1273
https://github.com/Esri/esri-leaflet-vector/pull/187
https://github.com/Esri/esri-leaflet-heatmap/pull/25/commits/ba6169cff6811c3934285d0cc950bb6b5b8a46ac
https://github.com/Esri/esri-leaflet-cluster/pull/49/files

Just for consistency's sake, would you mind slightly modifying your PR code to follow the pattern that we're doing in those:
import packageInfo from '../package.json';
var version = packageInfo.version;
export { version as VERSION };

Thanks!

@gavinr-maps ah, marvelous! I will make the change consistent with other repos.
Huge thanks for replying 🙏

authors: dpraimeyuu gavinr-maps


text:
Tan11389/navigate route fix

Description
Comments out Esri.samples because the QTextToSpeech-based class registered to it is not supported
Type of change

[x] Bug fix
[ ] New sample implementation
[ ] Sample viewer enhancement
[ ] Other enhancement

Might consider backporting to main as well for 200.0

authors: JamesMBallard tanneryould

repo: Esri/arcgis-maps-sdk-samples-qt


text:
modularize kml samples

Description

modularizes kml samples except for play a KML tour which was already done for Beta
There's a missing resource in the "display kml network links" sample that doesn't affect the sample working but just appears in the console. I'll create an issue to explore this but it's there on main too so not related to modularization.

Checklist:

[ ] Set target branch to main (current release) or v.next (next release)
[ ] Request a reviewer
[ ] Assign a reviewer
[ ] Tag reviewer in comment

@Luiy0 ready for review, thanks!

repo: Esri/arcgis-runtime-samples-java


text:
Update NavigateRoute.qrc

@JamesMBallard please review. While testing I noticed these files were missing from QRC which resulted in the h/cpp files not showing up in the viewer

cc @sbiswas96

repo: Esri/arcgis-runtime-samples-qt


text:
Support for big-endian architectures

Feature request: please consider to support also big endian architectures.

@avalentino  Sorry for the late reply. I have been thinking about it, and asked others for their opinion, too. My impression is there is no strong demand for it. It says in https://en.wikipedia.org/wiki/Endianness: "little endian is the dominant ordering for processor architectures". Many newer processors also support bi-endian, they can switch. My impression is that the overall share of big endian only processors continues to decline.
Adding big endian support to Lerc would mean bloating the code with swap commands, plus other changes. It would make life somewhat harder for everyone who wants to extend or modify the code. So at this point I'm leaning toward leaving it as is.

I thought about this, and I believe there are two approaches to supporting big-endian processors, only one of which suffers from the problems you note.  The cheap and simple way to do it is to declare by fiat that, while the standard interchange format for Lerc data shall be little-endian, implementations are free to use big-endian data internally.  While I have not had time to peruse Lerc’s actual code, in my experience, even arbitrary bit-field data tends to be processed at some level in multi-byte units of standardized size.  These units of standardized size - usually 32 or 64 bits, these days - behave predictably regardless of the order their constituent bytes are stored in.  Assuming nothing super esoteric is going on, it should be possible to compile Lerc almost as-is on a big-endian machine and have it behave in an internally consistent manner; once that milestone is achieved, allowing such a build to interact usefully with the little-endian majority is just a matter of inserting an I/O filter function to byte-reverse the individual fields in each blob if the code is run on a big-endian machine.  That doesn't require byte-swap operations strewn messily throughout the code, it just requires maintaining clarity of demarcation amongst the various data fields.  (By that I mean, shortcuts that make assumptions about adjacent data units may require extra analysis to ensure correct behaviour - but from a maintainability perspective, are such shortcuts really a good idea in the first place?)

authors: avalentino gsteemso tmaurer3

repo: Esri/lerc


text:
[src][utils][data_process.py

def xlsx2csv(raw_data_path : str)-> None:
def csv2npy(raw_data_path : str)-> None:
def dataset_split(dataset_root : str, data_path : str, test_ratio : float = 0.2, val_ratio : float = 0.2)-> None:

Data processing script for EVENT 2.
Related data can be placed under [data][event_2].

authors: EtchChan alfeak

repo: EtchChan/XIAOTIAN-CDS


text:
[ethicapp-v2] Issue #211: Incorporar logo EthicApp en topbar alumno

Se cambió el logo anterior en la vista de alumno por el de Ethicapp que es el mismo que es usando en la vista de profesor, a continuación comparaciones visuales del cambio:

Vista Inicial:

Antes:
Después:

Vista Actividad:

Antes:
Después:

@nicolasgebauer Hagamos una prueba de este PR. Es un cambio simple, que consiste en verificar que el logo de EthicApp está correctamente incorporado a la interfaz del alumno. Hay un par de conflictos que tendríamos que analizar previo a mezclar.

authors: claudio-alvarez mabarraza

repo: EthicApp-Development/ethicapp-main


text:
✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩

✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨💫🌟⭐🤩✨

i just cloned and have been trying to view it doesn't seem to work. your help will be greatly apprecited find attached the error message

Should work now

authors: EvanBacon rewdt

repo: EvanBacon/react-flappy-bird


text:
Update README.md

Portfolio Author
@Akshayp2002
Portfolio Link?
https://devakshay.vercel.app
GitHub Link:
https://github.com/Akshayp2002/personal-portfolio-angular
Tech Stack
Angular , Tailwind CSS

Updated please check


text:
Several classes miss a "toString()" method

While debugging or logging it's helpful to have a visual representation of the instance.
A class like "DeleteResult" for example currently has no "toString()" method.
It could look like this:
@Override
public String toString() {
    return "DeleteResult [logPosition=" + logPosition + "]";
}

Some work done here: https://github.com/EventStore/EventStoreDB-Client-Java/pull/204

Cool. Many tnx.

authors: YoEight michael-schnell

repo: EventStore/EventStoreDB-Client-Java


text:
[BUG] Incorrect expression naming for struct get

The reason why select from #1810 wasn't working was because there was a discrepancy between the name element in the Field struct of the struct get expression and the name() method of the expression.
This PR is a quick fix to that behavior for that specific expression, but ideally we would want to consolidate the logic between Expr::to_field and Expr::name so that there aren't two code paths for getting the name of an expression. The problem behind that is Expr::to_field takes in a schema, which is not always easily obtainable during the calls we make in the code to Expr::name. Notably, Python code in the physical plan and execution step generally do not use the schema, but do use expression names. Thus always requiring a schema for Expr::name would not work.
This raises the question: would a schema ever affect the name of an expression? The conclusion from a conversation with @clarkzinzow and @jaychia was no. Thus, would it be reasonable to separate the name from an expression's field, so that Expr::name was the single source of truth?
Moreover, in the future we would like to do table-scoped columns so that we are able to construct expressions that take data from multiple tables. Once we do that, it should be possible to derive the dtype of an expression by determining the dtypes of the columns or literals which are leaves in the expression tree. Then, we wouldn't even need to pass around a schema altogether?
Anyway, lots to think about. We'll leave this as tech debt that should be reworked when implement table-scoped columns, since that will likely require rethinking a lot about schemas and expressions as well.

@kevinzwang can you also make a ticket noting the tech debt and what the suggested solution is?

repo: Eventual-Inc/Daft


text:
fix: remove confusing naming visible

Rename visible to available to avoid ambiguity as to whether visible is visible on the UI or available on the data.
API changes are backward compatible.

It is strange how a mere function name refactoring can cause a decrease in test coverage. I'll have to look into it.

It is strange how a mere function name refactoring can cause a decrease in test coverage. I'll have to look into it.

I agree that VisibleRows is potentially confusing, but I don't know if AvailableRows is better enough to warrant a breaking API change.  I understand that you've tied the old name to the new as pass-through functions, but to me this is still a breaking change and I don't necessarily want to deprecate something lightly.
I think the better solution for now might just be to very clearly document the meaning of VisibleRows, if it's currently unclear.

It is strange how a mere function name refactoring can cause a decrease in test coverage. I'll have to look into it.

Also to clarify this mystery, it's because you've added the passthrough functions.  You're not just renaming the function, you're adding new functions and keeping the legacy names around, even if technically they're just one line of code to call the new functions.

authors: Evertras alswl

repo: Evertras/bubble-table


text:
Collision detection is weird

It often takes the game around 1 second to realize that the player has hit an obstacle or the floor; collision detection for floor & obstacle still doesn't work
-> use bitmap border instead of rect borders
-> create component for floor

fixed in e279a98f594b1591bb367972e5b4f49da825402a

repo: EverythingUnderCTRL/HTLCatcher


text:
Using Hammer for ratelimiting external API calls

This is more of a question than an issue with the library - I'm currently attempting to use Hammer to ratelimit access to an external API to avoid hitting ratelimits on the API itself. Other libraries I found require the ratelimits to be declared upfront somehow and the possibility to create a rate limit checker seemed appropriate (since I get the rate limits returned in HTTP headers) so I went with Hammer.
However, since the API starts counting ratelimits after my first request, and Hammer's rate limits move in "windows" due to stamp_key/2...:
https://github.com/ExHammer/hammer/blob/b2cf18dd66bbd2b1f2a6d8e5350b4585b4d51bce/lib/hammer/utils.ex#L17-L24
... this doesn't quite work out, namely because Hammer's buckets are almost guaranteed to expire before an API bucket expires. What would you recommend to do in this case instead? Perhaps it would be possible to allow for using a custom "initial start" for stamp_key?
Thanks for creating this library, by the way. I really like the configurability of backends and being able to extend those if needed.

(Sorry for the late reply, I haven't been keeping up on my Github notifications)
Wow, that's a tricky one. I guess if you wanted to try adding a custom start for stamp_key, and it works, I'd be totally willing to merge the change in.

Follow up question, what kind of information do you get back from the remote api? do you get a sort of "remaining calls" count and a timestamp of when that will be refreshed? I have an idea that might work depending on what kind of data we have available.

Thanks for the reply. Adding a custom start for stamp_key definitely sounds like a possibility but I'm not sure if we might be able to do something better based on the API data.
The API returns the total amount of calls you've done, the maximum of calls, and the timeframe for which they apply. The API doesn't return the starting timestamp, but if you track your current calls somewhere, I imagine you could stamp it yourself. However, in case you hit the limit the API does return the amount of seconds until it expires again. What did you have in mind?

@JuneKelly would you mind sharing your idea here? otherwIse I ll close this as I am not sure what to do with it

closing as I don t have details  and don t seem that we wil make progress on this

authors: ShaneKilkelly epinault jchristgit

repo: ExHammer/hammer

license: mit


text:
Add entities by CSV file

also support AMEX for market US in company lookup

@taral I think there is something fishy with the return value from run_script in create_entities_from_csv - the basescript defines None so I get warnings in tests in IntelliJ- problem?

This change is

 python-sdk: add support for creating entitites by CSV file upload

@taral and now I got failure from Jenkins too :)

repo: Exabel/python-sdk


text:
Unsupported encoding

I'm using the following code to open the excel file to read it.
excelReader = ExcelReaderFactory.CreateReader(stream, new ExcelReaderConfiguration()
            {
                FallbackEncoding = Encoding.UTF8,

                LeaveOpen = false,

                AnalyzeInitialCsvRows = 0,
            });

I get the following error,

Encoding 1252 data could not be found. Make sure you have correct international codeset assembly installed and enabled.

Is there any fix for the same?

Even I'm facing the same issue when I use excel file in netcore xunit tests

Probably this: https://github.com/ExcelDataReader/ExcelDataReader/blob/develop/README.md#important-note-on-net-core

Yes this resolved the issue for me System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);

It doesnt help me with the mobile devices

@Zumbalamambo What .NET runtime are you targeting? I assume Xamarin?
Perhaps this is this relevant?
https://docs.microsoft.com/en-us/xamarin/ios/app-fundamentals/localization/encodings

Thanks @andersnm  that helped for Xamarin on Mac - ticked "West".

repo: ExcelDataReader/ExcelDataReader


text:
Dynamic staff enchantments

Makes staff enchantments reliant on known spells instead of known enchantments.

Apologies, meant to target my fork


text:
Search - The search page opens without focusing on the search field.

If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!

Issue found when executing PR https://github.com/Expensify/App/pull/15413
Action Performed:

Login with any account
Navigate to Settings ->Payments
Click on "Add payment method"
Press (CTRL+K) on the keyboard

Expected Result:
The search page should open with a focus on the search field.
Actual Result:
The search page opens without focusing on the search field.
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

Version Number: 1.2.77.1
Reproducible in staging?: Yes
Reproducible in production?: Yes
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation

https://user-images.githubusercontent.com/93399543/222026100-a02f1b99-da33-4019-923e-c6ffe9c67f84.mp4
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub

Bug0 Triage Checklist (Main S/O)

[ ] This "bug" occurs on a supported platform (ensure Platforms in OP are ✅)
[ ] This bug is not a duplicate report (check E/App issues and #expensify-bugs)

If it is, comment with a link to the original report, close the issue and add any novel details to the original issue instead

[ ] This bug is reproducible using the reproduction steps in the OP. S/O

If the reproduction steps are clear and you're unable to reproduce the bug, check with the reporter and QA first, then close the issue.
If the reproduction steps aren't clear and you determine the correct steps, please update the OP.

[ ] This issue is filled out as thoroughly and clearly as possible

Pay special attention to the title, results, platforms where the bug occurs, and if the bug happens on staging/production.

[ ] I have reviewed and subscribed to the linked Slack conversation to ensure Slack/Github stay in sync

Closing as a dupe of https://github.com/Expensify/App/issues/15276

authors: MelvinBot kbecciv puneetlath

repo: Expensify/App


text:
[HOLD][$250] Migrate index.js to function component

Class Component Migration
Filenames

[ ] src/components/RoomNameInput/index.js

type: React.Component
has state values: true
has refs: true
has context: false
lifecycle methods: none

Task

We currently have some class components in our codebase that we would like to refactor to a function component.
Here's a link with some general advice on how to refactor a class component to a function component: https://react.dev/reference/react/Component#alternatives
If you need additional guidance, please ask in #expensify-open-source
Test for any regressions and verify that there are no breaking changes

⚠ Could not update price automatically because there is no linked Upwork Job ID. The BZ team member will need to update the price manually in Upwork.

I am ready to work on this ticket. :)

I can work on this issue.

I'm able to work on this if needed!

I'd like to work on this.

Hey! I’m from Software Mansion, an expert agency, and I’d like to work on this issue.

Appears to have been refactored now so I think we can take off hold.

Closing this out as payment will be addressed in this issue.

authors: MelvinBot dayana7204 jczekalski marcaaron mejed-alkoutaini mkhutornyi olexyt srikarparsi


text:
Thread - Edited message is visible after refresh page

If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!

Issue found when executing PR https://github.com/Expensify/App/pull/20336
Action Performed:

Login with any account
Open a report
Send a markdown message e.g google.com
Clicking on reply in thread of this message
Edit the message

Expected Result:
Edited message should be visible immediately.
Actual Result:
Edited message is visible after refresh page.
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

Version Number: 1.3.28.5
Reproducible in staging?: yes
Reproducible in production?: yes
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/93399543/16e3a0d4-4d69-4dd2-bbc1-cac0cc008419
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub

I think this is a dupe of this https://github.com/Expensify/Expensify/issues/282991 Do you agree @chiragsalian?

Yes, its a dupe of https://github.com/Expensify/Expensify/issues/282991, im closing this out just so there is one issue to focus on.

authors: MitchExpensify chiragsalian kbecciv


text:
Chat disappears in High Traffic account

If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!

Action Performed:

Go to some HT channel (https://new.expensify.com/r/8292963527436014).Please do not post testing messages as this is a real channel with real customers.
Scroll upwards.
After a while the chat breaks and just a blank area appears.
Try scroll up and down and notice a hug gap appears between the chat messages

Expected Result:
While scrolling upwards the messages should load in order from and there should be no gap and chat should not break
Actual Result:
Chat breaks and a huge gap is introduced between messages
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number:
Reproducible in staging?: needs reproduction
Reproducible in production?: needs reproduction
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/43996225/6e4d7903-6c61-4252-9d06-84aa8897093f
https://github.com/Expensify/App/assets/43996225/807423e1-38bf-4ffd-a74c-4ef8acd37e55
Expensify/Expensify Issue URL:
Issue reported by: @Talha345
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1689786243613119
View all open jobs on GitHub

I experience this issue all the time with my DMs. @marcaaron is this going to be handled by the pagination project? Should I close this?

@mateocole I was not able to reproduce. It was reproduced only by the contributor @Talha345. So I created a GH ticket with needs reproduction label.

This will likely be resolved by the Comment Linking project.
cc @roryabraham and @perunt
Do we have a milestone or GH Project that we can add this issue to and put it on HOLD?
I think closing it is also reasonable - this has been a known problem for a very long time 🤷♂

we don't have a specific GH Project to tackle this issue directly. In V1 of comment linking, we use FlatList, which caused the same virtualization problem mentioned here. But in V2, we're planning to switch to WishList, and that should sort things out. The only problem is we don't have a set date for when WishList will be ready since it's still in the final stages of development and polishing.

@perunt @roryabraham I'll assign this to you then. Feel free to keep it open, with the correct priority, if it makes sense or close it.

Going to put this on HOLD for the comment linking project. I don't think it will necessarily be directly addressed by anything planned for the comment linking project, but this issue is a prerequisite for fixing this, so it makes sense to put this on HOLD

Long-term I kind of think some form of eviction from the Onyx cache would be a way to solve this. i.e: once we have bidirectional pagination implemented, then we can drop reportActions from the Onyx cache and fetch them back page-by-page from the disk.
WishList might help but I do think that larger and larger chats will lead to longer and longer initial load times, even for WishList

on HOLD

on HOLD

@kavimuru, could you please test it again? Recently, a few PRs were merged, which removed the old hack with the list in WEB and added some optimization. So, it should be way better now.

requested retest: https://expensify.slack.com/archives/C9YU7BX5M/p1703268042698819

This issue can no longer be reproduced, closing this out 🎉

@roryabraham would this issue be eligible for the reporting bonus as this was quite a peculiar bug?
Thanks!

authors: Talha345 flaviadefaria kavimuru marcaaron perunt roryabraham


text:
[$500] Web - Profile - Atachment clip icon is displayed instead of spinner when avatar is loading

If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!

Action Performed:

Go to https://26772.pr-testing.expensify.com/.
Go to Settings > Click on the avatar.
Upload an image for avatar using the image attached (any image will do actually).
Click on the avatar > View photo.

Expected Result:
When the avatar is loading, a spinner will be shown.
Actual Result:
When the avatar is loading, an attachment clip icon is displayed instead.
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[x] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

Version Number: v1.3.72-9 PR:26772
Reproducible in staging?: Y
Reproducible in production?: N
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/115492554/89bc2ded-b962-4084-a083-39590b3e2ca9

Expensify/Expensify Issue URL:
Issue reported by: Applause-Internal Team
Slack conversation: @
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01117548f1220d1a72
Upwork Job ID: 1706703351401648128
Last Price Increase: 2023-10-03

Issue found when testing this PR #26772

:wave: Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open StagingDeployCash deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:

Identify the pull request that introduced this issue and revert it.
Find someone who can quickly fix the issue.
Fix the issue yourself.

@izarutskaya can we verify that this bug is reproducible on staging? I don't think we should be blocking deploy on something that we haven't verified happens on staging.

Gonna remove the Deploy Blocker label until it's verified on staging.

Kindly assign this to me.

Contributor detaila
Expensify account email: fchukwuedo+1@gmail.com
Upwork Profile Link: https://upwork.com/freelancers/favourch

Contributor details
Your Expensify account email: fchukwuedo+1@gmail.com
Upwork Profile Link: https://upwork.com/freelancers/favourch

@favourch we don't assign issues without first receiving a proposal. Can you please follow the contributor guidelines around that? Thanks!

Still waiting on proposals

@situchan Can you verify that it's reproducible on staging/production still?

verified still reproducible on latest staging
https://github.com/Expensify/App/assets/108292595/b90d7eeb-f2c0-4607-b49d-3886182020fe

@favourch If you're interested in fixing this issue, please provide a proposal with our proposal template. Thanks!

Issue not reproducible during KI retests. (First week)

Great!

Still reproducible on new account
https://github.com/Expensify/App/assets/108292595/7ff69e04-4366-4cf3-89cc-dbeb4deb0488

Bumping Slack for more proposals.

Also doubling the bounty

That's correct. The proposal was posted on Sep 24

For the duplicated issue, we usually close latter one.

@mkhutornyi's proposal looks good to me.
originalFileName is just optimistic value, not saved in server.
🎀 👀 🎀 C+ reviewed

Assigned!

I agree with you @fedirjh. Let's keep this issue open and close the other one.

Payment Summary:
This issue is eligible for an urgency bonus. It was created before the announcement removing the urgency bonus on Oct 24.
PR created on Oct 20
PR approved on Oct 20
@mkhutornyi requires payment offer (Contributor) - $1500 - PAID
@situchan requires payment offer (Reviewer) - $1500 - PAID

@situchan, can you complete the BZ checklist when you get a moment? Thank you!

@situchan bump!

Finding offending PR. Will complete checklist by Monday

@situchan were you able to find the offending PR?

[x] The PR that introduced the bug has been identified. Link to the PR: https://github.com/Expensify/App/pull/20365
[x] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment: https://github.com/Expensify/App/pull/20365/files#r1402017696
[x] A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion: N/A
[x] Determine if we should create a regression test for this bug.
[x] If we decide to create a regression test for the bug, please propose the regression test steps to ensure the same bug will not reach production again.

This is minor glitch and doesn't affect user previewing attachment so no need regression test. Also this was caught by Applause team

Still holding

@situchan bump!

@johncschuster is there anything pending from me?

Here's checklist

authors: OSBotify favourch izarutskaya jasperhuangg johncschuster mvtglobally situchan


text:
[Profile] Web - Joined workspace which is pending for approval disappears after relogin

If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!

Version Number: 1.4.49.0
Reproducible in staging?: y
Reproducible in production?: new feature
Issue reported by: Applause - Internal Team
Action Performed:
Precondition:

The invite link to workspace is https://staging.new.expensify.com/settings/workspaces/<Workspace_ID>/join?email=<admin_email>
Example: https://staging.new.expensify.com/settings/workspaces/51C70B8D97474AA5/join?email=applausetester+kh070307@applause.expensifail.com

[Employee] Click on the invite to join the workspace.
[Employee] After the workspace shows up in All workspaces page, log out.
[Employee] Log in again and go to All workspaces page.

Expected Result:
Joined workspace which is pending for approval should be visible after relogin
Actual Result:
Joined workspace which is pending for approval disappears after relogin
Workaround:
n/a
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence
https://github.com/Expensify/App/assets/93399543/5daa81ff-6eca-4acc-ae0f-5ba297bf49f4
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~010b6b769a86dd06b0
Upwork Job ID: 1767247956971724800
Last Price Increase: 2024-03-11

Can't reproduce. I think it's a BE and already fixed.

This seems like a backend issue too. We're probably not sending the policy data for non-member back to the user on OpenApp.

I'm gonna add the Hot Pick label here. @tgolen feel free to remove it if you wanna take this on.

No update, in hot picks waiitng for a volunteer.

@amyevans we renamed those routes in Ideal Nav v2, so the correct url is /settings/workspaces/<policyID>/join?email=<inviterEmail>

It seems like the issue comes from the API not sending data for the join requests.

Hmm I think the solution for this one might be a bit involved, since we currently only store the join requests in the policy object, so we'd have to query all policies in the DB to find which ones have a join request from a particular user 😅 I think we'd have to solve this by introducing a new NVP and also storing join requests on the user account level.

I'll work on this one

Discussing here

As discussed in the thread above, we decided to :do-nothing: given that we:

Don't display anything to users in OldDot besides the growl
Users never asked us for this feature
Low usage of this flow
We currently show the pending requests, but users would have to log out / in to not see it again

Feel free to reopen if you feel differently.

authors: dragnoir kbecciv kevinksullivan luacmartins


text:
[Simplified Collect][Taxes] Value row shows decimal point with no digit when saving amount with a dot and with no digit after

If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!

Version Number: 1.4.54-0
Reproducible in staging?: y
Reproducible in production?: new feature
If this was caught during regression testing, add the test name, ID and link from TestRail: n/a
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: applause internal team
Slack conversation:
Action Performed:
Precondition:

User is an admin of Collect workspace.

Go to staging.new.expensify.com.
Go to Profile > Workspaces > Collect workspace.
Go to Taxes.
Click Add rate.
Click Value.
Enter an amount, followed by a dot (decimal).
Save the value with empty amount after the decimal.

Expected Result:
The Value row will not display decimal since there is no value after the dot.
Actual Result:
The Value row shows decimal with no digit after it.
Workaround:
unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[x] Android: Native
[x] Android: mWeb Chrome
[ ] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence
https://github.com/Expensify/App/assets/38435837/736f3662-21b5-4de4-95a2-d4ebcc8f024f

View all open jobs on GitHub

Proposal
Please re-state the problem that we are trying to solve in this issue.
Value row shows decimal point with no digit when saving amount with a dot and with no digit after
What is the root cause of that problem?
we display and send to backend what user type in amount field without clean it.
What changes do you think we should make in order to solve the problem?
we can add parseFloat to value here to be return `${parseFloat(value)}%`;
https://github.com/Expensify/App/blob/ed6fbbc4ba40990b61fd92f32b95b205422ab904/src/libs/actions/TaxRate.ts#L15-L17
and this method is used in the title and before send tax to backend
What alternative solutions did you explore? (Optional)

This was introduced here. This is NAB since this feature is only available on Collect policies in NewDot and users don't have access to that yet. I think we can address that as a follow up to the other tax PRs. cc @kosmydel @filip-solecki

I leave it to @luacmartins since i belive he's working on this feature. Also @ShridharGoel, i think your proposal might be incorrect since it will block a user from entering a decimal unless they click on the left arrow to go somewhere in between a number and then enter a decimal which is not the best user experience.

Hey, I am the author of the original PR and I will take care of this one.
Can the value rates be decimal? If so, how many decimal places should we show?
@luacmartins

Thanks for taking this on @kosmydel! It seems like OldDot accepts 16 decimals 😅 @trjExpensify can you confirm if we should keep the same behavior?

Confirmed internally that we should support up to 16 decimals!

Lol yeah, no idea why it's 16 decimals but let's not introduce a discrepancy across OldDot/NewDot without a good reason to!

Lol yeah, no idea why it's 16 decimals but let's not introduce a discrepancy across OldDot/NewDot without a good reason to!

I changed it, but our component (@/components/AmountForm.tsx) that we use has a limit of 10 for the length of the amount. In our case, it means 8 decimals places. Should I modify it, to support 16 decimal places? Or 8 places is enough?

cc @luacmartins, @trjExpensify do you think the above is fine?

We discussed this in Slack, we'll update the components to support 16 decimals. Additionally, we'll update the param sent to the API to better align with what's stored both locally and in the DB.

Yeah, it makes sense to align the two. I really want to meet the person with 16 decimals in play though, I bet they are the best customer! :)

The 16 decimals limit leads to the overflow. Slack thread.

Yeah, all good. Are we handling that here or somewhere else?

I think this was handled in the menuItem, but the BNP still shows it
https://github.com/Expensify/App/assets/22219519/0e4cb400-c1e0-48b7-8810-798d615d6b1b

@luacmartins did the linked PR cause a regression?

This was a new feature and it was under development at the time, so no regressions

@shubham1206agra $500 - offer sent

@shubham1206agra let me know if you didn't receive the offer on Upwork. If you have, it's ready for you to accept and be paid :D

Shubham asked for payment to be delayed - slack

Melvin, not overdue

Paid

authors: ahmedGaber93 chiragsalian kosmydel luacmartins m-natarajan sonialiap trjExpensify


text:
[Mentions v2] Return reportName and reportID for mentionedReportIDs when requesting report data

When we fetch new data for a report we might be getting reportActions that contain room mentions that we don't have the matching name for in the FE, so we need to start sending the reportNames and reportIDs when the user request the reportActions of a report. This behavior is described here.

All PRs are in production.


text:
Split - Individual split amount reverts to previous amount when returning from member selection page

If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!

Version Number: 1.4.75-0
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail: N/A
Issue reported by: Applause - Internal Team
Action Performed:

Go to staging.new.expensify.com
Go to FAB > Split expense
Enter amount X and select participants
On confirmation page, the individual split amount for each member is x
Click Amount
Change to amount Y so that the individual split amount for each participant is y
Click on the back button to return to participant selection page
Hit Next button

Expected Result:
The individual split amount will remain y because the split amount is Y
Actual Result:
The individual split amount becomes x when the split amount is Y
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence

https://github.com/Expensify/App/assets/78819774/d9c7ea01-4b6d-4921-9c5a-58a2650cebf5
View all open jobs on GitHub

@zanyrenney  FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors

We think that this bug might be related to #vip-split

Proposal
Please re-state the problem that we are trying to solve in this issue.
The split share of individual amount is reset back to the previous amount when go back to participant selector and then go next again.
What is the root cause of that problem?
When we go next from the participant page, we calculate the split amount based on the transaction amount.
https://github.com/Expensify/App/blob/8375abea3a377e7416404addde255b6ac8530a9b/src/pages/iou/request/step/IOURequestStepParticipants.tsx#L106-L114
When we update the amount, the transaction amount gets updated, so the function should work normally. However, even though the transaction data is updated, the function itself goToNextStep that is called in MoneyRequestParticipantsSelector,
https://github.com/Expensify/App/blob/8375abea3a377e7416404addde255b6ac8530a9b/src/pages/iou/request/step/IOURequestStepParticipants.tsx#L151-L154
The onFinish callback still holds the old reference of goToNextStep which holds the old reference of the transaction amount. It's because we memoize the component,
https://github.com/Expensify/App/blob/8375abea3a377e7416404addde255b6ac8530a9b/src/pages/iou/request/MoneyRequestParticipantsSelector.tsx#L372-L376
but doesn't check for the onFinish callback props.
What changes do you think we should make in order to solve the problem?

Add onFinish comparison to the memo.
prevProps.onFinish === nextProps.onFinish && ...
The other props that is not added to the comparison is onParticipantsAdded & action. We can optionally add them or just remove the memoization.

yikes, this got assigned after I was OOO.

Adding external label to get the proposal reviewed.

hey @abdulrahuman5196 we already have a proposal above, please can you review it and let me know what you think here? Thank you!

bump @abdulrahuman5196 please can you review the two proposals?

We have paused work on split, so closing this out for now.

authors: bernhardoj lanitochka17 zanyrenney


text:
Sage Intacct - Workspace in "Reuse existing connection" list has different workspace avatar color

If you haven’t already, check out our contributing guidelines for onboarding and email contributors@expensify.com to request to join our Slack channel!

Version Number: 9.0.10-2
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: applause internal team
Slack conversation:
Action Performed:
Precondition:

User has a few workspaces.
One of the workspaces is connected to Sage Intacct.
The workspace which is connected to Sage Intacct has default workspace avatar.

Go to staging.new.expensify.com
Go to another workspace that is not connected to Sage Intacct.
Go to Accounting.
Tap Connect next to Sage Intacct.
Select Reuse existing connection.

Expected Result:
The workspace in "Reuse existing connection" list will have the correct workspace avatar with background color.
Actual Result:
The workspace in "Reuse existing connection" list has different workspace avatar compared to the actual workspace avatar with always blue background color surrounding the letter "A".
Workaround:
unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
https://github.com/user-attachments/assets/dbb7c2fa-7cf3-479c-87f8-360311b9bc45

View all open jobs on GitHub

@bfitzexpensify FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors

We think that this bug might be related to #vip-vsb

Hey @gijoe0295 - are you seeing anything strange with the contract on your end? When I attempt to close and pay it out, I am seeing this error:

Great, thanks for confirming. @ishpaul777 if you can get the BZ checklist complete I'll finalise the C+ payout too

Thanks @ishpaul777 - offer sent.

Great - all paid out. Thanks everyone!

authors: bfitzexpensify m-natarajan


text:
[Leads to paid] Add setting up tags as an onboarding task to Manage my team expenses intent

Proposal: Add setting up tags as an onboarding task to Manage my team expenses intent
Problem: The vast majority of workspaces configure tags before they convert and add a card on file. From the collect usage data we did for #wave-collect, ~50% of workspaces have single level tags. Yet, during onboarding for a top down paid workspace, we don't even introduce the idea of a tag. This could suggest we don't have this feature as it is also buried under More Features in Workspace settings.
Solution: Let's add a set up tags onboarding task to Manage my team expenses intent
Set up tags task copy

Title: Set up tags (optional)
Description
Tags can be used if you want more details with every expense. Use tags for projects, clients, locations, departments, and more. If you need multiple levels of tags you can upgrade to a control plan.
Here’s how to setup tags:

Click your profile picture.
Go to Workspaces.
Select your workspace.
Click More features.
Enable Tags.
Navigate to Tags in the workspace editor.
In Tags, click + Add tag to make your own.

Take me to more features.

Context for how to add a task and then show it for a specific intent selected during onboarding is here

Mocks:

@Expensify/design for visibility

Looks good! Minor nitpick - but I think there would be a big "Mark as complete" button on the right?

Yup good call Shawn. Should look like this:

Right on 🤙

Updated mocks:

Looks good!

Auth PR deployed and App PR in review.

This should be on production now. @eVoloshchak helped with the PR review and testing so we can close this out once they get paid.

@marcaaron - I am so sorry but finally looking at it in prod we realized the optional is kinda weird. All of them are upto the admins after all. Why is this specially optional. Can we remove that from the task title copy? Sorry again for the double work.

No worries. It's a small change.

@eVoloshchak sent you an offer

@anmurali, no need, I'll request the payment via NewDot
Could you post a payment summary please?

Payment Summary:

[ ] @eVoloshchak $250 approved on New Dot

$250 approved ror @eVoloshchak

authors: JmillsExpensify anmurali dannymcclain dubielzyk-expensify eVoloshchak marcaaron shawnborton


text:
Expensify Card institution icon looks bland compared to others

Action Performed:
Break down in numbered steps

Go to Settings > Payments in an account that has an Expensify Card and is importing other cards
Look at the list of Payment methods

Expected Result:
The Expensify "institution" icon should look on par with other institutions like Chase and Bank of America. Given that we aren't showing an icon of a card for other banks, but rather the icon shown is the institution's logo, I would think we should use the Expensify logo since that is the institution issuing the card. Here's what it would look like if we did:

Actual Result:
The icon next to the Expensify Card looks bland and not like an actual institution.

Platform:

Where is this issue occurring?

Web
iOS
Android
Desktop App
Mobile Web

Version Number: v1.0.97-0
@Expensify/design curious what you think.

Yeah, I agree that this would be a positive change!

Cool, I'll do that then.

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

authors: botify michelle-thompson puneetlath


text:
[$250] [HOLD for payment 2024-12-16] Incorrect default feed name in feed selector

Coming from here, when you first add a card feed, the default feed name is %Bank% cards. You can then edit this name to be whatever you want. The default feed name should appear consistently everywhere (the feed itself, feed settings, feed selector, etc.) It currently does not appear correctly on the feed selector.

Issue OwnerCurrent Issue Owner: @
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~021866248038611712453
Upwork Job ID: 1866248038611712453
Last Price Increase: 2024-12-09

Hi, I'm Viktoryia from Callstack - expert contributor group - and I would like to work on this issue.

Small PR has been opened for the review: https://github.com/Expensify/App/pull/53536

TY!

Oh wait, just checking - @allgandalf will you be paid for this job specifically, or are you bundling this job into a larger payment?

We will bundle the payments

Ok cool, i shall close the Upworks job then - thanks Vit

LMK if anyone needs a payment summary. Upworks job is closed now.

@allgandalf Can you add the checklist and then we can close

No payment needed

Thanks @allgandalf!

authors: VickyStash jliexpensify joekaufmanexpensify mountiny


text:
Fix bug where IOUPreview is not show for requests following a send money action

CC @tgolen, as you were assigned to the original issue
Details
Since the send money flow was introduced, a bug has existed where the IOUPreview will not show for outstanding requests. THis is because our 'shouldShowIOUPreview' condition was only looking for IOUActions, instead of a specific type of action (create).
Fixed Issues

$ https://github.com/Expensify/App/issues/15435
Tests

Verify that IOUPreview components are visible

Log in with two users: userA and userB
As user B, make three iou requests from userB
For both users, the full IOUPreview should be shown only for the most recent request
As any user, send money to the other
An IOUPreview should display for both the SendMoney, and most recent IOU request action

Offline tests

[After running the regular test, go offline
Send money again, using the PayPal option
An IOUPreview should display for both of the SendMoney actions, and also the most recent IOU request action

QA Steps

Run above tests
PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

Mobile Web - Chrome

Mobile Web - Safari

Desktop

iOS

Android

@tgolen @eVoloshchak One of you needs to copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button]

@tgolen @eVoloshchak One of you needs to copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button]

Wow, nice coincidental assignment.

@tgolen friendly bump for review. In case you missed it, Pullerbear assigned you after I CC'd you :)

Ready for review again @eVoloshchak, @tgolen

Reviewer Checklist

[ ] I have verified the author checklist is complete (all boxes are checked off).
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[ ] MacOS / Chrome / Safari
[ ] MacOS / Desktop

[ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If any new file was added I verified that:

[ ] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

Mobile Web - Chrome

Mobile Web - Safari

Desktop

iOS

Android

Thanks both!

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/Julesssss in version: 1.2.81-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/roryabraham in version: 1.2.81-1 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

authors: Julesssss MelvinBot OSBotify eVoloshchak


text:
feat: Allow adding newlines in description for tasks

Details
Make the text input controls for the task descriptions support multiline input and autogrow.
Fixed Issues
$ https://github.com/Expensify/App/issues/19135
PROPOSAL: https://github.com/Expensify/App/issues/19135#issuecomment-1551880839
Tests

Open the Expensify app or web
Select Assign task from the global "New" menu
Attempt to enter multiple lines when providing a description
Click Next
Click on Description
Verify that you can enter or edit multiple lines
After saving the task, navigate to the created task.
Click on the description and verify that you can edit or enter multiple lines.

[x] Verify that no errors appear in the JS console

Offline tests
N/A
QA Steps
Same as tests.

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
https://github.com/Expensify/App/assets/4160319/08470a39-007e-4c4e-8a41-8b924775179e

Mobile Web - Chrome
19135-android-chrome.webm

Mobile Web - Safari
https://github.com/Expensify/App/assets/4160319/83f85835-20d2-4ede-8505-ff79faf2e0e5

Desktop
https://github.com/Expensify/App/assets/4160319/b9e6823d-8f0a-468f-82de-3f6330396b74

iOS
https://github.com/Expensify/App/assets/4160319/7c5ef7bf-a999-4b05-80db-88c5bdaa2cf9

Android
19135-android-native.webm

@sobitneupane There appears to be a couple of bugs with the way the autogrow TextInput control is implemented. The welcomeMessage input in the WorkspaceInviteMessagePage component also exhibits these issues, but it seems to go unnoticed because it is prefilled with four lines of text, and pressing Enter does not do anything when you try to edit the invite message.

When the control initially loads and it is blank, the input area expands to fill the max height. However, once you start typing, the input area height auto-adjusts to fit the single line of text that the user is currently on. This happens on the following platforms: Safari (iOS and macOS), desktop, Android Chrome.
When you press Enter to create a new line, the input area does not auto adjust to the next line until the user starts typing characters on the new line. This seems to automatically resolve itself once the control reaches the container max height. This happens on the following platforms: Web (Safari, Chrome), iOS Safari, Android Chrome, Android native.

Are these known issues? If not, shall I report them on Slack?

@akinwale I don't think we would expect you to solve those issues if they are pre-existing and will only be re-surfaced by your PR.
cc: @youssef-lr

@akinwale Instead of trimming the description, we should continue description from the next line.

@sobitneupane This would require modifying the MenuItem component by changing how the title is displayed. Right now, it is set to numberOfLines={1}. I can add a boolean prop called multilineTitle which can be used to remove the number of lines, and wrap the text as required. These seem to be out of scope for this PR considering the number of changes to a different component which is widely used across the app, but I can go ahead if necessary. Please let me know what you think.
https://github.com/Expensify/App/blob/b424edcbe7cea7ed5fe36bc5602f6eb4ed1d78bf/src/components/MenuItem.js#L159-L166

@akinwale Can you please confirm this?

@sobitneupane Yeah, this is done. Please check the latest commit.

Since we have made the text input multiline, I think we should make the Description text multiline.

Something like this:

But the lower section of the report is scrollable. So, we should either make the whole report scrollable including Task Title and Task Description or fix the height of Description and make just the Description scrollable.
https://github.com/Expensify/App/assets/25876548/1cbd23c3-6d7e-4906-8a85-2cfcbe5b9b4e
@youssef-lr What is your opinion on this?

@akinwale  https://github.com/Expensify/App/pull/19377#issuecomment-1560512162
Sorry, I don't understand what you mean? Do you mean that with your latest commit the issue no longer exists? Or Are you confirming that it cannot be solved frontend?

User cannot save description with newline. It might be a backend issue. @akinwale Can you please look around the code and confirm it is not a front end issue.

Sorry, I misunderstood. I thought you were referring to the multiline description here.
Not being able to save description with newline is a backend issue. I've confirmed this as descriptions without newlines are saved just fine. I was planning to submit a bug report for this after this issue got merged.

@youssef-lr User cannot save description with newline. Probably it is a backend issue.
https://github.com/Expensify/App/assets/25876548/f9cd7f41-0c8e-41df-a1da-769314dd79c1

But the lower section of the report is scrollable. So, we should either make the whole report scrollable including Task Title and Task Description or fix the height of Description and make just the Description scrollable.

@sobitneupane I think the intended design here is for the header to be fixed, while the report below is scrollable. You can also observe the same behaviour with the MoneyRequestHeader component for money / IOU requests.
Will wait for @youssef-lr's thoughts on this.

@sobitneupane I think you could also start a discussion on Slack about this so that we can have an idea on the design and close this soon.

@youssef-lr Bump on https://github.com/Expensify/App/pull/19377#issuecomment-1560530638 and https://github.com/Expensify/App/pull/19377#issuecomment-1560518276

https://github.com/Expensify/App/pull/19377#issuecomment-1562549362
@akinwale Sounds good. Can you please start a discussion on #expensify-open-source?

#19377 (comment)
@akinwale Sounds good. Can you please start a discussion on #expensify-open-source?

@sobitneupane Based on @thienlnam's reply in the Slack discussion, looks like we can move forward with this as it is right now (no further design changes required). I have fixed the merged conflicts against the latest main branch.

Thanks @akinwale for carrying the discussion in slack.
@youssef-lr Should we hold this PR for https://github.com/Expensify/App/pull/19377#issuecomment-1560530638?

I can create another issue to track the BE issue. But we can still move forward on this - you can still have a long description without new lines

Thanks @thienlnam.
@akinwale Can you please resolve the conflict and let me know. If everything goes well, let's get it merged today.

Thanks @thienlnam.
@akinwale Can you please resolve the conflict and let me know. If everything goes well, let's get it merged today.

@sobitneupane Will do.
Also, @tjferriss raised a point about merging this issue with one for the money request header here because they are very similar. Do you want to clarify if it's ok to move forward with this?

Commented on the issue

Commented

@sobitneupane Clarified here so we can move forward with this PR as is. I have fixed the merge conflicts so I'll just wait for the final review. Thanks.

@akinwale Android app crashes on opening task report with multiline description.
Please make sure to retest PR on all platform after making any major update and please do update the screenshots in PR body as well.

In addition to this, as suggested by @thienlnam in slack, let's not change anything in task report and continue with the current design. I think leaving a single line description is okay for now. If we have multiline input, it will have this issue.

It’s fine to leave this current design in order to close this out - I’ll create a new issue for the redesign that can handle those issues. Thanks for investigating

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/youssef-lr in version: 1.3.28-0 🚀

platform
result

🤖 android 🤖
failure ❌

🖥 desktop 🖥
failure ❌

🍎 iOS 🍎
failure ❌

🕸 web 🕸
failure ❌

🚀 Deployed to production by https://github.com/AndrewGable in version: 1.3.28-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

authors: OSBotify akinwale sobitneupane thienlnam