text:
Do not remove the array of modular (linked) item codenames

Motivation
The SDK uses rich text resolvers to transform modular (linked) item references found in rich text elements into HTML (or other output format). This is great but the SDK also removes the property that holds the array of codenames from the original response.
In Gatsby, the internal GraphQL store abstracts from presentation and the codenames of items is exactly what is needed to build the standard relationships among nodes. In order for the Gatsby source plugin to work, I have to refill the missing modular_content array from the debug part of the response.
Proposed solution
If possible, do not strip the modular_content array from the rich text element JavaScript objects.

Available in https://www.npmjs.com/package/kentico-cloud-delivery/v/5.0.0-beta.6

authors: Enngage JanLenoch

repo: Enngage/kentico-cloud-js


text:
Add missing YAML CPAN dependency

Add missing YAML CPAN dependency as required here https://github.com/Ensembl/ensembl-rest/blame/release/97/lib/EnsEMBL/REST/Model/Documentation.pm#L33

Odd. Does YAML::XS not imply YAML vanilla?

As far as I can tell from metacpan, not yet - the author plans to make YAML a front-end module for various implementations but for now it's just a specific, pure-Perl implementation - and a deprecated one to boot.

Apparently not https://metacpan.org/pod/YAML::XS

Dependencies
none

I had to install it manually for the REST server this release. I'm not sure I've had to do it previously, but given that the YAML module is explicitly used I think it should be in cpanfile.

I guess the use of YAML could be switched to YAML::XS but I'll leave that for you to decide.

@nicklangridge Just a quick reminder that there isn't much time left before the branching of release 98, if you would like to have this fixed by then.

So you want a PR with YAML::XS in Documentation.pm instead of this solution?

Yes, if it works of course.

source: gharchive/pull-request

authors: mkszuba nerdstrike nicklangridge

repo: Ensembl/ensembl-rest

license_type: permissive

license_source: github-api


text:
Assets are not rendering through assets variable, They can be uploaded but don't render through variable

Image Using Asset variable for source

Image using url for source

it will work with the merge of #718

closing in favor of #718

source: gharchive/issue

repo: EnsembleUI/ensemble-react


text:
review map

check if anything can be done to improve flow through the map

some improvements are implemented

repo: Entkenntnis/einhorn-der-mathematik

license: MIT


text:
🛑 HorizonFx is down

In d68a214, HorizonFx (https://horizonfx.id) was down:

HTTP code: 403
Response time: 850 ms

Resolved: HorizonFx is back up in a9e7c14 after 8 minutes.

repo: EnvyxLinzie/times-hzfx


text:
[Roots 3] Component Pouch equipped as a bauble not being prioritized when using the 'open pouch' hotkey

Was curious about whether some variant of Soulbound would apply to the pouch, so I put it in an enchanting table with Quark Oddities' enchanting system enabled, scrolled through a few enchants before running out of exp and giving up, put it back in the baubles slot.
Checked the pouch later with a hotkey and everything that was in it is now gone.
I would guess this has something to do with the NBT data being changed by Quark(in regards to 'pending enchantments') and the storage somehow being messed up, but don't really know for sure.

A follow-up: I took the pouch out of my bauble slot and opened it manually and the stuff is still in there just fine. But if I put it back on, and then open it with the assigned hotkey, it still appears completely empty.

Okay, follow-up to the follow-up: I forgot I had a second pouch in my inventory because I was going to craft the bigger one soon to compare. The hotkey was opening that before the one in my baubles slot because it was in a top inventory slot.
Changing this issue to be "make the component pouch hotkey prioritize the one you're wearing as a bauble, if you are wearing it as a bauble."

That does happen, yeah. The code primarily checks for the inventory first, but I can easily reverse that check. When I discussed it last with @EpicSquid the main idea was that it was only recommended to have one pouch. So... yeah.

Yeah just a bit strange to me that something expressly equipped does not take priority when opening with a hotkey.

Agreed, and the logic has been reversed to prioritize the Bauble pouch first if Baubles is installed.

authors: Febilian duely

repo: EpicSquid/Roots


text:
No streaming option

Currently Kaku downloads the full song to your hard drive which can take a long time, it'd be useful to have an option to stream from the site just like Atraci.

Ahhh ... if you did check the settings page, you'll notice that there is one option to let you change the streaming from video to audio. And if you are using audio format, it would be blast-fast to download the whole song.

I think that should answer your question so i'll close first. Feel free to reopen if you found any other bugs.

Actually, I have had this on before posting the issue. I feel like a streaming option would be very useful for when the connection is wonky.

@EragonJ
I would be clearer if the video player space would disappear when only the audio stream isselected

i think the change would be minor and i don't plan to implement that because it's kinda weird to keep changing UI there. Thanks for providing feedbacks here.

I do not like the way you're going with this project, "it's kinda wierd" and "the change would be minor". The video view is absolutely useless with the option selected and it actually looks "kinda wierd" having it without having any video. The suggestion screenshot by @reddit-is-fun looks much cleaner.

@zatherz You're free to submit a pull request and the dev might accept it. In my opinion this would be an improvement, but definitely a minor one. Developers have been cooperative so far.

come on ... it's open source project and it's always welcome to have you guys' PR if you think things are important. It's my personal idea about that improvement and I still got more important things to do like syncing, online DJ, mobile app version and so on.
It would be thankful if you can jump in and be part of contributors @zatherz ! It would be awesome.
@reddit-is-fun thanks for leaving your idea here. :)

authors: EragonJ reddit-is-fun zatherz

repo: EragonJ/Kaku

license: mit

license_source: bigquery


text:
Get Error Activity from AndroidManifest.xml

As discussed in https://github.com/Ereza/CustomActivityOnCrash/issues/4, it will be great if we can set an error Activity directly from AndroidManifest.xml, so we only need to add this line:
 CustomActivityOnCrash.install(this);

Maybe it can add a custom action in order to be launched from library:
        <activity
            android:name=".view.activity.ErrorActivity">
            <intent-filter>
                <action android:name="cat.ereza.customactivityoncrash.ERROR" />
            </intent-filter>
        </activity>

As discussed, it will work like:

Prioritary: CustomActivityOnCrash.setErrorActivityClass(CustomErrorActivity.class);
Secondary: Manifest action
Less important: Default error activity.

I have created new pull request with this change, please review.

Implemented. Thanks!

authors: AizazAZ Ereza alorma

repo: Ereza/CustomActivityOnCrash


text:
Inconsistent results of each training under the same parameter configuration even when seed is fixed.

Hello!
I want to ask why the model evaluation results of each training under the same parameter configuration are inconsistent. My environment is exactly the same as the environment.yaml file provided, and I have not modified any code. I want to know if this is normal when the random seed is fixed.

Hi, thanks for using our code.
We found that the random seed for train_vq is not set and just fixed it. Please pull the latest code to use it.
Feel free to create a pull request to contribute to MoMask.

Hi, thanks for using our code.
We found that the random seed for train_vq is not set and just fixed it. Please pull the latest code to use it.
Feel free to create a pull request to contribute to MoMask.

It seems that the eval_val_loader in train_vq.py should use the validation set instead of the test set?


text:
analyze cmd report generation

Analyze command report handling should support two modes (incremental check mode):

(clean mode) remove all previous plist reports (clean up report directory when you do reanalysis. Current)
(default incremental mode) do not remove all reports just, rewrite plist reports that changed (the same report name should be generated for the same source file). This will be used to support update mode analysis (when only some files changed).

Implementation

add -incremental mode to analysis command which overwrites only those plist files that were update by the current build command
This means that plist files should not have new random patterns in them from run to run.

Static analyzer names should not be in the generated report name and we can not depend on that information during report storage as right now.
scan-build generates report files with different file naming conventions and we should be able to store them as well.
Analyzer type for the reports will be lost in this way. If needed later we could create some mapping between the checkers and the analyzers (store into database but only if some feature needs it).

repo: Ericsson/codechecker


text:
Use Spring Poot port from application.yml/boostrap.yml

@ErnestOrt

Hi @BohdanKorinnyi,
First of all, thanks for your effort!
Doing a first quick review, before performing a test, I've notice the following:
Constants.java
Move this static class to an enum and rename it with a more specific name for instance FileExtension.
pomLocation
This field should not contain neither pom.xml or build.gradle, if we do do check if pom.xml is in the path (which I see it a good idea) we should also check that build.gradle is not there.
ResponseEntity
Should not be more simple to throw an exception if configuration file has not been found instead of using Optional & ResponseEntity?
Missing requirement...
This is an improvement which we did not think and after review it makes a lot of sense. Based on which build file has been found (pom.xml or buil.gradle) we could already set the build tool. Also we should add an initial option on the Register Microservice form called select build tool to avoid having maven choosed by default, and do the proper validation on the javascript side.
Cheers,
Ernest

Hi @BohdanKorinnyi, functionality doesn't work even with the two microservices that we have as example. I will have to reject this pull request. I encourage you to take your time when developing a feature, it's not a competition and we need to be accurate with simplicity and readability.

authors: BohdanKorinnyi ErnestOrt

repo: ErnestOrt/Trampoline


text:
🛑 舞萌Net (maimai DX Net Server) is down

In b1c120c, 舞萌Net (maimai DX Net Server) (https://maimai.wahlap.com) was down:

HTTP code: 503
Response time: 1257 ms

Resolved: 舞萌Net (maimai DX Net Server) is back up in 0093856 after 2 hours, 57 minutes.


text:
🛑 舞萌Net (maimai DX Net Server) is down

In a53299c, 舞萌Net (maimai DX Net Server) (https://maimai.wahlap.com) was down:

HTTP code: 503
Response time: 939 ms

Resolved: 舞萌Net (maimai DX Net Server) is back up in f9a077e after 3 hours, 9 minutes.


text:
Ekzerco 1: Pli ol unu traduka solvo

Sur http://esperanto.github.io/esperanto-kurso-zagreba-metodo/html/output/01/ekzerco1/
la maŝino ne akceptas

lingvisto: Sprachwissenschaftler

Estus bele, se la maŝino akceptus pli ol unu solvon - kaj se la uzanto povus peti akcepton de sia solvo. Simile kiel ĉe Duolingo.

Dankon, Georg, ke vi enmetis la proponon :)


text:
Avoid potentially overwriting with entry(..).or_insert_with(...)

So, this is, indeed, slightly cleaner, but.
It occurs to me that, in the case where this does present an issue, we also might not want the
                     self.response_sender.send(response_msg).await.unwrap();

immediately before this.
If we're seeing issues because HotShot is spamming for new block candidates faster than we're getting additional transactions (shame on HotShot), we might need to add a way to detect this behavior as soon as build_block gets builder_hash, and return a specific response at that point.
However.
I don't really see how the previous implementation could have caused the observed issue, as there would always still be some entry in that map even if we got a request that created a duplicate.

Solves MCs into #92

Solves MC into #92

repo: EspressoSystems/hotshot-builder-core


text:
Move tagged_blob macro here from jf-utils

It conceptually belongs here anyways. Also, this fixes the dependency tree so that commit can depend on tagged_blob without depending on jf-utils (which would create a cycle). This will enable tagged base 64 serialization support directly on the Commitment type, obviating the need for many newtype structs. That will be done in a subsequent change.
During the move, I streamlined the tagged_blob macro a bit. I removed the TaggedBlob wrapper type which was only used to add custom serde impls and to convert to and from for serializing other types. Instead, serialization now goes directly through TaggedBase64, and I have implemented serialization and deserialization for the TaggedBase64 type itself.
Since TaggedBlob is gone, I renamed the macro tagged for simplicity.

Good call @VictorKoenders . I think serialization is central enough to the purpose of TaggedBase64 for these to be default features, but I will still make them feature flagged so users can opt out with default-features=false

Thanks jeb!

authors: VictorKoenders jbearer


text:
Update symbol reference

Description
Replaces a URL to an image being used to create a picture marker symbol. I'll merge this into v.next for sample viewer build and also ensure it gets picked up in the module branch for v200.

Checklist:

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

@Luiy0 please could I get a review? See issue in Java board for background.

repo: Esri/arcgis-runtime-samples-java


text:
no 'dist' folder created when running 'npm install arcgis-to-geojson-utils' on commandline

why is npm run bundle called for arcgis-to-geojson-utils after its installed via the dependency here, but the same script is not run when the package is installed via the commandline?
$ npm install arcgis-to-geojson-utils

i haven't been able to figure out how to use the module when its still native ES6.

Looks like I need an empty .npmignore file otherwise the .gitignore removes dist from the published version.
I'm doing these a little differently then Esri Leaflet. In Esri Leaflet we ship ES 6 with directions for every compiler/toolchain/whatever on how to compile it. This was a great experiment and I'm glad it worked but it is in general a total mess. It is way easier to do what I am doing here and ship compiled code with a special jspm directive for ES 6.

:bulb: makes a lot more sense now.

In Esri Leaflet we ship ES6 ... it is in general a total mess

agreed!

try running npm pack before publishing to confirm that the .zip is gone and the distvv is there.

Looks like we should be good now.

confirmed.  thanks!

authors: jgravois patrickarlt

repo: Esri/arcgis-to-geojson


text:
Add Favorite Button Appears Grayed Out

The button styles differ between the "Add to Map" and "Add Favorite" buttons making the "Add Favorite" button appear grayed-out/disabled (it is not)
This style change should/might be fixed/addressed with https://github.com/Esri/military-tools-desktop-addins/issues/2

This has been verified and can be close

authors: NatalieCampos csmoore

repo: Esri/military-symbol-editor-addin-wpf


text:
METOC 2525D symbology issue (possibly incorrect key)

One of two issues from https://github.com/Esri/military-symbology/issues/270 - This one is a symbology issue, possibly related to the key values.
This should allow us to get on with finishing up 270.

Fixed
SIDC
Name
Feature Type

- [ ]
45171000
Bounded Areas of Weather-Operator Defined-Freeform
Atmospheric Area

This is currently drawing with a black border and grey fill.

Should be operator's choice of a black solid line or black dashed line:

This issue is fixed. the problem was a spurious point feature had the key value. I deleted it and associated the key with the correct polygon symbol. It is working now.

repo: Esri/military-symbology


text:
Tool Help - Range Rings (from Interval)

Below are enhancement requests and bugs for the Range Rings (from Interval) tool within the Distance and Direction toolset.
Title

[ ] Pro I would change the name to "Range Rings From Interval". This follows the naming convention from core software geoprocessing tools.

Description

[ ] BUG, Pro The current description is missing a determiner before "number" and has a misspelling. Change to:

Create a concentric circle from a center, with a number of rings, and the distance between rings.
Usage

[ ] BUG, Pro Update first bullet to read:

One Input Center Feature must be used at a minimum.

[ ] Pro I would delete the second bullet because it is immaterial to understanding the tool.

[ ] BUG, Pro Change the third bullet to:

The World Azimuthal Equidistant (WKID 54032) projected coordinate system is the default if no Spatial Reference is selected.
Syntax

[ ] Pro All parameters should be lowercase with underscores separating words (example: input_center_features). This follows the naming convention from core software geoprocessing tools.

[ ] BUG, Pro Input_Center_Features: Change the Explanation to:

The point feature set that identifies the center of the range ring.
The minimum amount of points allowed is one.

[ ] Pro Interval_Between_Rings: Change to:

The distance between each of the rings.

[ ] Pro Distance_Units: Change to:

The linear unit of measurement used for the Interval Between Rings parameter.

[ ] Pro Output_Ring_Features: Change to:

The feature class containing the output ring features.

[ ] Pro Output_Radial_Features: Change to:

The feature class containing the output radial features.

[ ] BUG, Pro Spatial_Reference: Change to:

Choose the coordinate system for output geodatasets.
The World Azimuthal Equidistant (WKID 54032) projected coordinate system is the default if no Spatial Reference is selected.

@jrweakland
A general comment on the name of the tool. Originally there was only one tool: Range Rings. We added two others to the toolbox, and to distinguish between the newer ones we added "From Interval" to identify it by capability. Should we go back to the original Range Rings or go with your suggestion Range Rings From Interval. I am OK either way.

@mfunk - I prefer the "Range Rings From Interval" name. It is more descriptive.

skipping the renaming of the tool parameters

currently waiting for direction on what to do with the "Credits" and "Use Limitations" closing the issue, when we find out, we will just need to go back and do an umbrella fix for all the tools

authors: dfoll jrweakland mfunk


text:
Overwriting feature service fails on Portals

Repro Steps:

Stand up a feature service and feature collection pair on a portal using data store
Configure the overwrite script against the portal items
Run script: Receive error
Failed to update Transportation511 feature service: {u'services': [{u'success': False, u'error': {u'message': u"Service name 'Transportation511' already exists for '0123456789ABCDEF'"}}]}

Resources:
Transportation 511 sample data
One of the public portals the dev team maintains
@NikkiGolding @jmhauck fyi

this was originally discovered during 10.6 certification testing.

I have been able to reproduce the issue and have seen it occur across multiple versions of Portal (10.6, 10.5.1, and 10.5). The issue occurs when we call publish to update the feature service. This call is supposed to overwrite the existing service.
I cannot reproduce the general issue when I go through a similar workflow of overwriting the service by uploading a new file geodatabase directly in the portal home app. I also cannot reproduce the general issue when I overwrite a web layer directly from Pro against the same portal. In the process of following up with development on this to see if they can help us get to the bottom of it as well as closely reviewing the network traffic differences between the workflows that are succeeding vs the one that fails.

@jessnoo ready to be verified

@NikkiGolding @jessnoo This does boil down to a difference in how things are handled internally between Enterprise and AGOL. For the overwrite flag to be honored on the Enterprise side it expects a relationship to exist between the Field Geodatabase and the Feature Service. This relationship is generated automatically when a user uploads a file geodatabase and allows the system to generate the service. AGOL on the other hand does not require this relationship to exist. Therefore, we see the difference between the two environments.
The commit above adds a step that will now always check if this item relationship exists and if not it will add it. This will now occur on both Enterprise and AGOL.

This is the portal issue that was logged: https://devtopia.esri.com/WebGIS/arcgis-portal-services/issues/7266

verified on 10.6 portal

I am getting this now. This is only loosely related but this was the only related google hit for this error:
targetService = fgd.publish(overwrite=True)
Exception: {'message': "Service name '006_Roads_Highways' already exists for '123xyz'"}

authors: chrisdel101 jessnoo jmhauck

repo: Esri/overwrite-hosted-features


text:
Filters are not working and multiple console errors are shown

Describe the bug
Filters are not working and console error: Cannot read properties of null (reading 'tagName')
Expected Behavior
COnfigured filters should be available for a given layer
Reproduction Steps & Sample

Create a new app using this web map https://arcgissolutions.maps.arcgis.com/home/item.html?id=56cf45a606484a0188d5f073b133af74
disable Express mode
setup an attribute filter on the Manhole layer and choose User input for Asset type and use dropdown
when you're done adding the filter, notice that the filter button does not appear in the UI above the table when you switch to the Manhole layer and see console errors

Other Relevant Info
No response

cc @sarahmcdonald7

This is fixed

authors: avezina azizaparveen

repo: Esri/solutions-components


text:
Distance and Direction: Distance and Bearing on Line tab produces an inaccurate line.

Widget
Distance and Direction
Version of widget
2.0
Bug or Enhancement
Bug
Repo Steps or Enhancement details
Creating a line using the Distance and Bearing option produces a line that does not represent the true angle supplied by a user. Here are the steps to reproduce:

Select Distance and Bearing option
Create a center point
Set Length to 1000
Select Kilometers for units
Set Angle to 90
Click Enter

What is produced is a geodesic line on the map but not at a 90 degree angle. It instead produces a line that is a little more than 90 degrees; a misrepresentation of what was supplied as input parameters.

This is an API issue, it has been logged with Core.

This issue was moved to Esri/distance-direction-addin-dotnet#442

authors: csmoore kgonzago nfeuerstein

repo: Esri/solutions-webappbuilder-widgets


text:
Please could someone tell me how to set it up to work like a Gamecube controller

Please would someone be kind enough to provide the settings required to make the triggers function like a Gamecube controller?
I love this program, but sadly there are no presets for it even though it has the functionality for them. :(
Thanks in advance.

i think using pulse should make it behave like gamecube

It's not the same unfortunately. With pulse it seems to click straight away but on a proper GC controller it clicks at the end.

It's not the same unfortunately. With pulse it seems to click straight away but on a proper GC controller it clicks at the end.
EDIT: This shows the correct functionality:
https://www.youtube.com/watch?v=YdclV38jAhg

It's not the same unfortunately. With pulse it seems to click straight away but on a proper GC controller it clicks at the end.
EDIT: This shows the correct functionality:
https://www.youtube.com/watch?v=YdclV38jAhg

move the first slider forward (like 160-200)

It's a bit more accurate at 180 but the actual feel is still a far cry from the real thing and it doesn't click at the right time while also lacking rigidity. I would really appreciate some specific settings from someone who can do a better job than me to emulate them properly.

It's a bit more accurate at 180 but the actual feel is still a far cry from the real thing and it doesn't click at the right time while also lacking rigidity. I would really appreciate some specific settings from someone who can do a better job than me to emulate them properly.

Ok that's the second time someone is asking for builtin presets lol. I have some exams to do, I'll try making some afterwards

authors: Etaash-mathamsetty djhazardous

repo: Etaash-mathamsetty/trigger-control


text:
Blog: Added filter by tags

Created TagField Component
File Location: src/lib/components/utils/acm-tagfield.svelte
Usage: Allows users to make selections and filter content.

Created new file utils.ts to store common functions
File Location: src/lib/common/utils.ts

Added Filter by Tags feature for Blog page.
Made some changes to these files:

In blog/index.svelte: Added TagField component.
In blog/_query.ts: Modified fetchNewsletters.
In blog/index.json.ts: Modified get function.

This PR is intended to resolve #277

I'll work on merging this in with my changes some time this week

It does not appear to be workin

I don’t know what happened. Maybe you’re in DEBUG mode or maybe there are something wrong in “.env” file.
Everything works perfectly on my PC.

@NLTN Oh that's not my local environment it's the vercel preview linked in https://github.com/EthanThatOneKid/acmcsuf.com/pull/466#issuecomment-1124441436, if you want we can try to find some time to work on this maybe this week or a week from now (the week of 7/10)? If not we can push this back to when the semester starts

authors: NLTN jaasonw


text:
Handle Rows / Rowdata with different number of columns

I'm trying to create a table which will have data parsed from a CSV file.
CSVs are tricky beasts, and there may be cases where records may have different number of fields.
name,address,detail
This,Is a,good record
This,record,has,some,more,data
This is too,small

Now, I could make a pass over the file, find out the MAXIMUM number of columns and create a table with that many columns.
But is there some other approach we could take?
I don't want to make multiple passes over the data as I want to show the table as soon as possible (say with first 50 rows), while i load the rest of the CSV async.
Can we dynamically add columns? What would happen to all other rows that don't have that column's value?
Having a model that could represent arbitrarily sized rows would be great!

I think this is actually already possible.  In this situation, what I would do is read in the CSV headers as columns and start with those as Columns.  Then, for every row, create RowData that contains every column that the row contains.  If there are missing columns, you don't need to fill them in.  If a row doesn't have the data in its RowData, it will simply be blank for that column.
Additionally you can add columns dynamically by using WithColumns.  When your async loading returns more data, if it returns more columns you can regenerate the column list and use WithColumns on the table.  It will keep the same data, and any rows that didn't have the new columns will simply show blanks for the new columns.

Thanks, I wasn't aware of WithColumns.
Another issue that I ran into is the fact that not all CSVs have a "header" row so:

We'd need a way to not have a column header row on table UI.
The bigger issue is that RowData is a map[string] but in cases like these where there is no header, OR where the header is shorter than some row. What column name do we use? I guess, we could generate internal column names like _c1, _c2 etc?

We'd need a way to not have a column header row on table UI.

As in, some column headers shouldn't show up in the table, or that the entire header row should not be visible?  The latter is a new feature, and I think that would be reasonable to add.

The bigger issue is that RowData is a map[string] but in cases like these where there is no header, OR where the header is shorter than some row. What column name do we use? I guess, we could generate internal column names like _c1, _c2 etc?

Yes, I think that's what needs to happen here.  I would keep track of some incrementing value, and go from there.  I'm cautiously open to ideas if you think some mechanism in bubble-table itself might be useful, but right now I suspect this is best handled by the client code with the data for now.

As in, some column headers shouldn't show up in the table, or that the entire header row should not be visible? The latter is a new feature, and I think that would be reasonable to add.

If the CSV has no header, then the entire header row should not be visible.
In cases where the header is smaller than some row, and we use generated column names, I would want to hide those particular columns as well. So, for eg. there could be 5 columns (Name, Age, Gender, _c1, _c2) but only 3 of the headers should be visible on the UI. The remaining two headers should be "empty".
This is what the Visidata tool does - and is the right thing to do IMO:

Also notice how missing values (in the last row) are shown differently than empty values. That is something bubble-table should incorporate as well. Empty values should not be used to represent missing ones.

I think there are two issues to address with code changes on bubble table's end given the above:

Allow header row to be hidden (I think this is probably best to start with a simple toggle option)
Add "missing data" option to be shown when data is missing from row (to differentiate between that and empty string or zero value) to match behavior above

For current functionality, regarding the hiding of columns, there are two points that should cover this depending on what you mean by "hide":

If the column doesn't exist on the table, the column won't appear... but the rows can still safely contain whatever data you wish, so you can mix and match columns as you like
The column can have an empty title, but still have the _cX key to match it with data.  This should cover a situation where the CSV has no header value but you still want to display the data.

Does the above sound reasonable to you?  If it does I can create two issues for the first two for clarity/tracking.

Yes this seems reasonable.

I've added the two features and released as v0.13.5, let me know if that covers the remaining use cases.

I'm going to close this for now for tidiness, but please feel free to reopen it if there's anything missing, or open a new issue if there's anything new that comes up!

authors: Evertras dufferzafar

repo: Evertras/bubble-table


text:
Fix xlsb stream reading

Loop until all bytes read instead of returning null if not all bytes are read
fixes #602

Won't this cause an infinite loop if the file is corrupt and we reach the end of the stream before we've managed to read the whole record?

repo: ExcelDataReader/ExcelDataReader


text:
PDF via HTML behaves strangely

I noticed that the singlepage HTML PDF output isn't quite right. It seems to be missing some sections and there are errors at build. We should look into this. Maybe this will partly be addressed in #73 ? Not sure...

this should be covered by https://github.com/ExecutableBookProject/jupyter-book/issues/505

repo: ExecutableBookProject/cli


text:
README.md correction

Please correct this in README.md:

"...to match tag colors with tag colors."

Thanks! Fixed it

authors: babakks macjuul

repo: ExodiusStudios/vscode-comment-anchors


text:
Add the various REST methods for service instance dependencies

Right now the only way to delete these is through the database.

SDR-based API addresses this.

repo: ExpediaDotCom/seiso


text:
fix: support personal access token input

:pencil: Description
Adds support for a personal_access_token input to be used with the manage-merge-queue helper. This is needed to distinguish github events which need to be able to trigger other workflows.

:tada: This PR is included in version 1.7.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

authors: danadajian eg-oss-ci

repo: ExpediaGroup/github-helpers


text:
[$500] Test

Test
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01b3c10fe3e8118504
Upwork Job ID: 1594758605200601088

Ignore, testing.

repo: Expensify/App


text:
[$1000] Text input label is moving while adding a bank account to a workspace

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/18468
Action Performed:

Open the App
Login
Open Settings > Workspaces
Open any existing workspace or create a new one if you don't have one
Open Connect Bank Account > Connect Bank Manually or with Plaid
Complete the 1st and 2nd step
From the 3rd step, go back
Verify the text input birthdate label is not moving

Expected Result:
The text input label is not moving
Actual Result:
The text input label is a little moving compared to other environments.
Workaround:
Unknown
Platforms:

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

[x] Android / native (example device:  SG M52)
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[ ] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: 1.3.12.0
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/22010baa-12e8-48c0-84aa-bb287265c910
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/~01f18692795ade1d13
Upwork Job ID: 1658893459664945152
Last Price Increase: 2023-05-17

@kbecciv Can you list what devices this was reproducible on? It seems to only affect a few specific devices. Samsung Galaxy S10 seems to be a device that we can get reproductions on

@alex-mechler Issue reproduced on SG M52

Thanks @kbecciv !

Not overdue, the job was just created yesterday.

Hi I'm Fábio from Callstack - expert contributor group - I would like to take a look at this issue

Update: I wasn't able to reproduce this issue on the emulator, as stated before it seems to be very device-specific. I asked a team member which has a Galaxy A32 (Android 11) to test and he wasn't able to reproduce it.
https://github.com/Expensify/App/assets/20051562/daaea6d0-0890-4814-9d2f-a0371dae2514
Tomorrow I'll ask another team member that has a Galaxy S9 to try to test and reproduce the issue.

Note: It's not related to this issue and I'm not sure if it was already reported, but the checkbox text is "broken".

@fedirjh @fabioh8010 please be sure to apply to the Upwork posting here.

Update: We tried another device, Samsung Galaxy S9 SM-G960F (Android 10), but again we weren't able to reproduce this issue.
https://github.com/Expensify/App/assets/20051562/329d7de0-e132-4f1a-9dd1-e25c52ca8790
I'm afraid that I won't be able to work on a fix for this issue, as I don't have the means to reproduce it. I also would like to reinforce that this kind of minor visual glitches that are very device-specific are usually not worth fixing it, as it can be a issue with a specific custom OS version or a range of devices of a specific brand. In most of these cases, the issue is with the custom OS / device itself and probably are not solvable.

@fabioh8010 @fedirjh @mountiny Should we just close this one then?

Yes completely agree, thanks for digging into this Fabio.
I will close this out as there seems to be no payments due here, thanks!

authors: alex-mechler arielgreen deetergp fabioh8010 kbecciv mountiny


text:
[$1000] No error message received when adding up to 2 letters at the end of phone number string in the sign in 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!

Action Performed:

Open the "Staging New Expensify" website.
Input the phone number and enter up to 2 letters at the end.
Observe there is no error message and the user taken to the magic code page.
Now add the 3rd letter at the end and observe an error appears.

Expected result:
The error message should be displayed when adding letters at the end of phone number string.
Actual result:
No error message if adding 2  or less cletters - the user is taken to magic code page and number entered is trimmed
But if the 3rd letter is added, an error message appears
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: 1.3.19-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
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/43996225/e0fef2ce-c869-4925-93e2-1371d3acaf7f
https://github.com/Expensify/App/assets/43996225/fea72946-4e16-46e2-8bd8-e662ea1e4cf9
Expensify/Expensify Issue URL:
Issue reported by: @OleksiiBashkyrov
Slack conversation:
https://expensify.slack.com/archives/C049HHMV9SM/p1683707368642449
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01f2a4871cda7d066b
Upwork Job ID: 1663676043295756288
Last Price Increase: 2023-06-06

Proposal
Please re-state the problem that we are trying to solve in this issue.
No error message until adding 2 letters, taken to magic code page and number entered is trimmed
But if 3rd letter added error message appears
What is the root cause of that problem?
The issue is from the function parsedPhoneNumber which we are using from a lib "awesome-phonenumber", this function return possible : true if 1 or 2 characters are added at the end and we have a condition against this property so the error doesn't pop.
https://github.com/Expensify/App/blob/f55c36ca9be7f347713a89521826449d90d07d06/src/pages/signin/LoginForm.js#L149-L158

What changes do you think we should make in order to solve the problem?
We can solve this by replacing the extra added characters if there are any with the empty string if the property possible is true otherwise the the state would be update with the original number which was added first.
if (!Str.isValidEmail(login) && !parsedPhoneNumber.possible) {
            if (ValidationUtils.isNumericWithSpecialChars(login)) {
                this.setState({formError: 'common.error.phoneNumber'});
            } else {
                this.setState({formError: 'loginForm.error.invalidFormatEmailLogin'});
            }
            return;
        }else{
            this.setState({
                login:parsedPhoneNumber.possible ? login.replace(/\D+/g, '') : login
            });
        }

the extra characters will be removed as soon as the user clicks the continue button.
After applying the solution
https://github.com/Expensify/App/assets/46372909/22f1f515-7965-42aa-81e0-ed7162e828e0
What alternative solutions did you explore? (Optional)
We can open an issue in github repo of the library we are using "awesome-phonenumber" and wait to get this fixed.

I can repro:
https://github.com/Expensify/App/assets/30815269/cbe6d5ab-3d2c-4d00-ba42-cb722042f841
I think for consistency's sake, we should either:

Surface the error if ant number of letters are added after a number OR
Automatically remove any letters after a number (since this isn't required)

Asking internally here - https://expensify.slack.com/archives/C01SKUP7QR0/p1685405176413529

Got some consensus on the behaviour we want:

We should not change the user’s input
Always throw an error if what they input is invalid

So this means, if they enter even 1 letter after a number, we need to throw the Invalid error.

Proposal
Please re-state the problem that we are trying to solve in this issue.
No error message is shown when adding up to 2 letters at the end of the phone number input on sign-in page.
What is the root cause of that problem?
The library we are using to parse phone number and get if is valid or not is parsing the last two characters internally and giving us validation of the phone number.
Example response -
{
    "number": {
        "input": "+14098797654ab",
        "international": "+1 409-879-7654",
        "national": "(409) 879-7654",
        "e164": "+14098797654",
        "rfc3966": "tel:+1-409-879-7654",
        "significant": "4098797654"
    },
    "regionCode": "US",
    "valid": true,
    "possible": true,
    "canBeInternationallyDialled": true,
    "possibility": "is-possible",
    "type": "fixed-line-or-mobile",
    "typeIsMobile": true,
    "typeIsFixedLine": true,
    "countryCode": 1
}

What changes do you think we should make in order to solve the problem?
Keeping @jliexpensify points in mind that we do not need to change the user's input and show an error on any character addition after phone no, we can put regex phone check on phone input along with the library valid check like this -

        const phoneValidationRegex = /^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/;

        if (!Str.isValidEmail(login) && (!parsedPhoneNumber.possible || !phoneValidationRegex.test(phoneLogin))) {

This will ensure that all the previous check works according to the library along with this new check on the phone input.
What alternative solutions did you explore? (Optional)
We can look for an overall solution for the library awesome-phonenumber parsePhoneNumber method.

Replace code
const phoneLogin = LoginUtils.appendCountryCode(LoginUtils.getPhoneNumberWithoutSpecialChars(login));
const parsedPhoneNumber = parsePhoneNumber(phoneLogin);
    if (!Str.isValidEmail(login) && !parsedPhoneNumber.possible) {
        if (ValidationUtils.isNumericWithSpecialChars(login)) {
            this.setState({formError: 'common.error.phoneNumber'});
        } else {
            this.setState({formError: 'loginForm.error.invalidFormatEmailLogin'});
        }
        return;
    }

With
const phoneWithSpChar = LoginUtils.getPhoneNumberWithoutSpecialChars(login)
    const phoneLogin = LoginUtils.appendCountryCode(phoneWithSpChar);
    const parsedPhoneNumber = parsePhoneNumber(phoneLogin);

    if (!Str.isValidEmail(login) && (!parsedPhoneNumber.possible || Number.isNaN(Number(phoneWithSpChar)))) {
        if (!ValidationUtils.isNumericWithSpecialChars(login)) {
            this.setState({formError: 'common.error.phoneNumber'});
        } else {
            this.setState({formError: 'loginForm.error.invalidFormatEmailLogin'});
        }
        return;
    }

It will work perfectly without changing your existing login

Contribute Details
Expensify account email: rnsshrmb2010@gmail.com
Upwork Profile Link:

@hoangzinh Please check the recording in the issue thread. I tried the same.

Alright adding a plus help easily reproduce

May be this is intentional I guess https://github.com/google/libphonenumber/blob/master/FAQ.md#non_digits

In that case we should remove the extra added character which could be a typo and update the state before going onto the next screen

But if you click on the go back button from the magic code screen, you would not see the typo, which otherwise would be there and can be misleading

So if according to awesome-phonenumber this is intentional, then I guess it's intentional? Maybe there are phone numbers like that? I really don't know

Going by the consensus as @jliexpensify mentioned that we should not automatically change the user's input without notifying the user about the error.
@stitesExpensify After checking the reason in the awesome-phonenumber library [here](https://github.com/google/libphonenumber/blob/master/FAQ.md#why-does-the-library-treat-some-non-digit-characters-as-digits, it mentions that library doesn't aim to verify that string is only a phone number. It extracts the phone number from the given string.
Hence we should put a check from our side to the given input and show an error to the user in case of an error.
cc: @Julesssss @Santhosh-Sellavel

Hi Team,
I analyzed your issue and why it is not triggering.
parsePhoneNumber(phoneLogin) not validating if you add two alphabet
characters  at the end and it is provided as status "is-possible". If you
once more 3 alphabets at the end then it is providing invalid as status.
To fix this issue you have added one more condition and need to check if
the given input is number or not after removing the special character. Then
only it will trigger a message for the invalid phone number.
And more issue in logic is that,
*ValidationUtils.isNumericWithSpecialChars(login)
*line returns *TRUE *if the given input number is valid. Hear your ae
checking if given input number is valid then show error message.
Because of the above issues in your code, the message does not trigger an
error message.
Please follow my steps to fix this issue
Replace your code from line number 148 to 158
const phoneLogin =
LoginUtils.appendCountryCode(LoginUtils.getPhoneNumberWithoutSpecialChars(login));
const parsedPhoneNumber = parsePhoneNumber(phoneLogin);
    if (!Str.isValidEmail(login) && !parsedPhoneNumber.possible) {
        if (ValidationUtils.isNumericWithSpecialChars(login)) {
            this.setState({formError: 'common.error.phoneNumber'});
        } else {
            this.setState({formError:

'loginForm.error.invalidFormatEmailLogin'});
}
return;
}
With below code
  const phoneWithSpChar =

LoginUtils.getPhoneNumberWithoutSpecialChars(login)
    const phoneLogin = LoginUtils.appendCountryCode(phoneWithSpChar);
    const parsedPhoneNumber = parsePhoneNumber(phoneLogin);

    if (!Str.isValidEmail(login) && (!parsedPhoneNumber.possible ||

Number.isNaN(Number(phoneWithSpChar)))) {
if (!ValidationUtils.isNumericWithSpecialChars(login)) {
this.setState({formError: 'common.error.phoneNumber'});
} else {
this.setState({formError:
'loginForm.error.invalidFormatEmailLogin'});
}
return;
}
Regards,
Hanamantraya Rajashekhar
9582017725
Email : @.***
On Thu, Jun 1, 2023 at 3:40 AM Rajdeep Gupta @.***>
wrote:

Going by the consensus as @jliexpensify https://github.com/jliexpensify
mentioned that we should not automatically change the user's input without
notifying the user about the error.
@stitesExpensify https://github.com/stitesExpensify After checking the
reason in the awesome-phonenumber library [here](
https://github.com/google/libphonenumber/blob/master/FAQ.md#why-does-the-library-treat-some-non-digit-characters-as-digits,
it mentions that library doesn't aim to verify that string is only a phone
number. It extracts the phone number from the given string.
Hence we should put a check from our side to the given input and show an
error to the user in case of an error.
cc: @Julesssss https://github.com/Julesssss @Santhosh-Sellavel
https://github.com/Santhosh-Sellavel
—
Reply to this email directly, view it on GitHub
https://github.com/Expensify/App/issues/19751#issuecomment-1571030298,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AB6DYRCN5VHQFAP24OOFNJDXI66ULANCNFSM6AAAAAAYTASANA
.
You are receiving this because you were mentioned.Message ID:
@.***>

@stitesExpensify

So if according to awesome-phonenumber this is intentional, then I guess it's intentional? Maybe there are phone numbers like that? I really don't know

Have a look at this

Why does the library treat some non-digit characters as digits?
When parsing, the library does its best to extract a phone number out of the given input string. It looks for the phone number in the provided text; it doesn't aim to verify whether the string is only a phone number.
If the input looks like a vanity number to the library, parse() assumes this is intentional and converts alpha characters to digits. Please read the documentation for PhoneNumber parse(String, String) in PhoneNumberUtil for details. Also see Iterable findNumbers(CharSequence, String).
Some examples:
+1 412 535 abcd is parsed the same as +1 412 535 2223.
If someone mistypes and adds an extra alpha character in the middle, then the library assumes this was a mistake and fixes it. E.g. the extra c in +1 412 535 c0000 is ignored, and this is parsed the same as +1 412 535 0000.
If someone mistypes and replaces a digit in the middle with an alpha character, and the remaining characters do not make up a valid number, this alpha character is not converted and the resulting number is invalid, e.g. with +1 412 535 c000.

After seeing this the library does it intentionally to ignore typos. Adding any additional validation checks makes the use of the library pointless here.

@rnsshrmb2010 Please start by reading our contributing guidelines. Understand our process,  and submit proposal following our guidelines & proposal template.

By using this library this issue can't fix.
@Santhosh-Sellavel
Sure I will read your guide line. I want to know one thing is that weather we have to use that library hear or we have find out some other way to fix issue?

By using this library this issue can't fix.
@Santhosh-Sellavel
Sure I will read your guide line. I want to know one thing is that weather
we have to use that library hear or we have find out some other way to fix
issue?
Shall commit my code and I will create PR to merge code?

@rnsshrmb2010 Don't rush again we are discussing to decide whether we want to handle this issue.
Please start reading our [contributing guidelines] (https://github.com/Expensify/ReactNativeChat/blob/main/contributingGuides/CONTRIBUTING.md) first, you will understand the process which clears all your queries.

Sure I am processing step by step
On Thu, 1 Jun, 2023, 10:23 pm Santhosh Sellavel, @.***>
wrote:

@rnsshrmb2010 https://github.com/rnsshrmb2010 Don't rush again we are
discussing to decide whether we want to handle this issue.
Please start reading our [contributing guidelines] (
https://github.com/Expensify/ReactNativeChat/blob/main/contributingGuides/CONTRIBUTING.md)
first, you will understand the process which clears all your queries.
—
Reply to this email directly, view it on GitHub
https://github.com/Expensify/App/issues/19751#issuecomment-1572416643,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AB6DYRGS6UM2FTC7UNNGZS3XJDCINANCNFSM6AAAAAAYTASANA
.
You are receiving this because you were mentioned.Message ID:
@.***>

My account created on slack and I want to know what the next process is?
please guide start work on this issue
On Thu, Jun 1, 2023 at 7:23 AM Hanamantraya Rajashekhar <
@.***> wrote:

Hi Team,
I analyzed your issue and why it is not triggering.
parsePhoneNumber(phoneLogin) not validating if you add two alphabet
characters  at the end and it is provided as status "is-possible". If you
once more 3 alphabets at the end then it is providing invalid as status.
To fix this issue you have added one more condition and need to check if
the given input is number or not after removing the special character. Then
only it will trigger a message for the invalid phone number.
And more issue in logic is that, *ValidationUtils.isNumericWithSpecialChars(login)
*line returns *TRUE *if the given input number is valid. Hear your ae
checking if given input number is valid then show error message.
Because of the above issues in your code, the message does not trigger an
error message.
Please follow my steps to fix this issue
Replace your code from line number 148 to 158
const phoneLogin =
LoginUtils.appendCountryCode(LoginUtils.getPhoneNumberWithoutSpecialChars(login));
const parsedPhoneNumber = parsePhoneNumber(phoneLogin);
    if (!Str.isValidEmail(login) && !parsedPhoneNumber.possible) {
        if (ValidationUtils.isNumericWithSpecialChars(login)) {
            this.setState({formError: 'common.error.phoneNumber'});
        } else {
            this.setState({formError:

'loginForm.error.invalidFormatEmailLogin'});
}
return;
}
With below code
  const phoneWithSpChar =

LoginUtils.getPhoneNumberWithoutSpecialChars(login)
    const phoneLogin = LoginUtils.appendCountryCode(phoneWithSpChar);
    const parsedPhoneNumber = parsePhoneNumber(phoneLogin);

    if (!Str.isValidEmail(login) && (!parsedPhoneNumber.possible ||

Number.isNaN(Number(phoneWithSpChar)))) {
if (!ValidationUtils.isNumericWithSpecialChars(login)) {
this.setState({formError: 'common.error.phoneNumber'});
} else {
this.setState({formError:
'loginForm.error.invalidFormatEmailLogin'});
}
return;
}
Regards,
Hanamantraya Rajashekhar
9582017725
Email : @.***
On Thu, Jun 1, 2023 at 3:40 AM Rajdeep Gupta @.***>
wrote:

Going by the consensus as @jliexpensify https://github.com/jliexpensify
mentioned that we should not automatically change the user's input without
notifying the user about the error.
@stitesExpensify https://github.com/stitesExpensify After checking the
reason in the awesome-phonenumber library [here](
https://github.com/google/libphonenumber/blob/master/FAQ.md#why-does-the-library-treat-some-non-digit-characters-as-digits,
it mentions that library doesn't aim to verify that string is only a phone
number. It extracts the phone number from the given string.
Hence we should put a check from our side to the given input and show an
error to the user in case of an error.
cc: @Julesssss https://github.com/Julesssss @Santhosh-Sellavel
https://github.com/Santhosh-Sellavel
—
Reply to this email directly, view it on GitHub
https://github.com/Expensify/App/issues/19751#issuecomment-1571030298,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AB6DYRCN5VHQFAP24OOFNJDXI66ULANCNFSM6AAAAAAYTASANA
.
You are receiving this because you were mentioned.Message ID:
@.***>

@stitesExpensify

So if according to awesome-phonenumber this is intentional, then I guess it's intentional? Maybe there are phone numbers like that? I really don't know

Have a look at this

Why does the library treat some non-digit characters as digits?
When parsing, the library does its best to extract a phone number out of the given input string. It looks for the phone number in the provided text; it doesn't aim to verify whether the string is only a phone number.
If the input looks like a vanity number to the library, parse() assumes this is intentional and converts alpha characters to digits. Please read the documentation for PhoneNumber parse(String, String) in PhoneNumberUtil for details. Also see Iterable findNumbers(CharSequence, String).
Some examples:
+1 412 535 abcd is parsed the same as +1 412 535 2223.
If someone mistypes and adds an extra alpha character in the middle, then the library assumes this was a mistake and fixes it. E.g. the extra c in +1 412 535 c0000 is ignored, and this is parsed the same as +1 412 535 0000.
If someone mistypes and replaces a digit in the middle with an alpha character, and the remaining characters do not make up a valid number, this alpha character is not converted and the resulting number is invalid, e.g. with +1 412 535 c000.

After seeing this the library does it intentionally to ignore typos. Adding any additional validation checks makes the use of the library pointless here.

@stitesExpensify @Julesssss thougths?

After seeing this the library does it intentionally to ignore typos. Adding any additional validation checks makes the use of the library pointless here.

I disagree. I think that we should still validate that there are no letters. Doing additional validation does not remove the usefulness of the library validation.

Yep, lets still resolve on our side.

Julesssss Can I resolve by adding some extra condition on it?

@Julesssss Can you review my proposal, I have followed the given guidelines and conditions.

Proposal
Please re-state the problem that we are trying to solve in this issue.
No error message until adding 2 letters, taken to magic code page and number entered is trimmed
But if 3rd letter added error message appears
What is the root cause of that problem?
The issue is from the function parsedPhoneNumber which we are using from a lib "awesome-phonenumber", this function return possible : true if 1 or 2 characters are added at the end and we have a condition against this property so the error doesn't pop.
https://github.com/Expensify/App/blob/f55c36ca9be7f347713a89521826449d90d07d06/src/pages/signin/LoginForm.js#L149-L158

What changes do you think we should make in order to solve the problem?
We can solve this by replacing the extra added characters if there are any with the empty string if the property possible is true otherwise the the state would be update with the original number which was added first.
if (!Str.isValidEmail(login) && !parsedPhoneNumber.possible) {
            if (ValidationUtils.isNumericWithSpecialChars(login)) {
                this.setState({formError: 'common.error.phoneNumber'});
            } else {
                this.setState({formError: 'loginForm.error.invalidFormatEmailLogin'});
            }
            return;
        }else{
            this.setState({
                login:parsedPhoneNumber.possible ? login.replace(/\D+/g, '') : login
            });
        }

the extra characters will be removed as soon as the user clicks the continue button.
After applying the solution
https://github.com/Expensify/App/assets/46372909/22f1f515-7965-42aa-81e0-ed7162e828e0
Alternatively we can add a regex for validation if 1 or more characters are added at the end
like this
   const customPhoneValidationRegex = /^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/;

        if (!Str.isValidEmail(login) && !parsedPhoneNumber.possible || !customPhoneValidationRegex.test(phoneLogin)) {
            if (ValidationUtils.isNumericWithSpecialChars(login)) {
                this.setState({formError: 'common.error.phoneNumber'});
            } else {
                this.setState({formError: 'loginForm.error.invalidFormatEmailLogin'});
            }
            return;
        }

After applying this solution

What alternative solutions did you explore? (Optional)
We can open an issue in github repo of the library we are using "awesome-phonenumber" and wait to get this fixed.

@Santhosh-Sellavel the regex here validates if the user has added the extra character and gives the validation error

@qasimkhan23 You have just modified your solution post-submission of the @sethraj14's proposal, your initial solution never  had regex.

@Santhosh-Sellavel I didn't know we can't modify after submission, I'll keep that in mind next time

We can modify the solution, but should not be a duplicate of other proposals. Also when you modify a solution should post a comment that the proposal updated.

@Santhosh-Sellavel The regex validates all the phone number inputs. It catches our issue and gives the required error to the user. As discussed here, we do not automatically want to modify the user input, this regex works with our library check.

@sethraj14

The regex validates all the phone number inputs.

Can you explain/elaborate on how this regex works, is this any standard regex?

@sethraj14

The regex validates all the phone number inputs.

Can you explain/elaborate on how this regex works, is this any standard regex?

Yes, the regex currently matches with all these possibilities of the phone number.

There is more extensive regex for phone number matching but as we are also using awesome-phonenumber library, this regex will be verifying the contents of the phone number.
We can surely modify the regex in the PR.
Alternate regex
^(\+\d{1,2}\s?)?1?\-?\.?\s?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$\

@Santhosh-Sellavel Detailed explanation of both regex -
/^[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}$/

^(\+\d{1,2}\s?)?1?\-?\.?\s?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$\

@Julesssss Are we good with adding yet another regex for  Phone validation?

Are we good with adding yet another regex for Phone validation?

I'm struggling to look for our existing phone regex (other than the lib), but I think it's okay in this case as long as we document why we needed this new regex.

@Prince-Mendiratta what was the need for us to include the library? To handle what special cases?

I think we can use this existing simple regex to ensure it only includes digits then use exiting lib to validate possibility of it.

@hoangzinh  I like the sound of this, though my only remaining question is whether the existing library would still be necessary.

I think we can use this existing simple regex to ensure it only includes digits then use exiting lib to validate possibility of it.

@hoangzinh I like the sound of this, though my only remaining question is whether the existing library would still be necessary.

@Julesssss  If we use the existing phone regex we need to remove the library as it adds no values.
Ex: Using the library we expect +1.800.555.1234 as a valid phone number, but as per our existing regex it's not valid.
@stitesExpensify @Prince-Mendiratta Can you help us this move forward?

What was the need for us to include the library?
To handle what special cases?
What characters are allowed as valid for phone number input?

cc: @Julesssss

I'm leaning towards replacing the library, but it would be good to clarify the questions above first so that we can be sure we're not losing any benefits the lib provides. I also asked in Slack here

Thank you. Maybe the simplest solution is to just close the issue and do nothing here then.

Please check https://github.com/Expensify/App/issues/16760#issuecomment-1564829986 (second paragraph)
TL; DR: A library feature/limitation. Probably nothing to do unless we can:

Disable the feature (need to read the above comment)
Replace the library

Okay, lets close this.


text:
Draft message doesn't remain when It is empty

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 any chat
Send new message
Edit this message
Replace the message by empty string (don't click save)
Click another report
Back to previous report

Expected Result:
Draft message should be remained
Note that: When replacing draft message by another string, It will be remained
Actual Result:
Draft message doesn't remain
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: 1.3.55-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:
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/21cba4ea-a809-42bd-af7f-384443df330f
https://github.com/Expensify/App/assets/43996225/95d38886-ce30-4881-b7cb-8e3143f1d906
Expensify/Expensify Issue URL:
Issue reported by: @dukenv0307
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1691551143871559
View all open jobs on GitHub

@greg-schroeder  I'm logging off now and will be OoO for the next week so reassigning this to you in the meantime.  Thanks!

Ok, sure!

Hmmmmm. I don't know about this. Why would a user replace a message with an empty string? That doesn't seem like a viable use case to me. I don't know that we should optimize for that.

Started a discussion

Team agreed it's worth moving over to External

@samh-nl I followed through with your proposal, but it could have resulted better.

The current user with a bunch of reportActionsDrafts_ saved in their storage will be affected, so I don't think changing it to undefined will be a good idea.

@samh-nl Could we use the current key reportActionsDrafts_? If possible, we should avoid adding a new key and use the associate key.

Not overdue, it still open for proposals.

Awaiting new proposals

Still awaiting proposals, might send this to CS/SWM soon

Proposal
Please re-state the problem that we are trying to solve in this issue.
Draft message doesn't remain when it's empty
What is the root cause of that problem?
We save draft while it's changing here
https://github.com/Expensify/App/blob/b57d3a3d347aff057edb0bba2a4cd65448f4d670/src/pages/home/report/ReportActionItemMessageEdit.js#L198-L203
As you can see, when draft is empty, we store the original value. So when we remount the ReportActionItemMessageEdit component, original message would appear
This is the root cause
What changes do you think we should make in order to solve the problem?
We can store the space character if draft is empty and trim it when mounting.
In the above line 202
        debouncedSaveDraft(' ');

And change the line
https://github.com/Expensify/App/blob/b57d3a3d347aff057edb0bba2a4cd65448f4d670/src/pages/home/report/ReportActionItemMessageEdit.js#L104
with
        return Str.htmlDecode(props.draftMessage.trim());

I think this change wouldn't have any side effects

Result
https://github.com/Expensify/App/assets/126839717/a94b68d9-29b4-4398-9a2e-b1c9a9c19df0

What alternative solutions did you explore? (Optional)

Bump @mollfpr for proposal review

Proposal
Please re-state the problem that we are trying to solve in this issue.
When we edit a comment, delete all chars change report and comeback the draft input is filled with the former text instead of empty string
What is the root cause of that problem?
We intentionally set the old string to the text input if it's empty because the condition for the Edit input to show up is that the draft message is not empty. We do that here: https://github.com/Expensify/App/blob/b57d3a3d347aff057edb0bba2a4cd65448f4d670/src/pages/home/report/ReportActionItemMessageEdit.js#L198-L203
What changes do you think we should make in order to solve the problem?
We should not replace empty string by the old text.
In the collection ONYXKEYS.COLLECTION.REPORT_ACTIONS_DRAFTS we currently only store strings, we should also store a boolean isEditing. We must change this line https://github.com/Expensify/App/blob/d2bdaece9151c8c65d3b4bc4c9578be663f1950d/src/ONYXKEYS.ts#L384
with this:
[ONYXKEYS.COLLECTION.REPORT_ACTIONS_DRAFTS]: Record<string, boolean>;
Of course right now the messages stored in onyx don't have this boolean, we will set it to false but for compatibility we will have to test both conditions like this:
if (props.isEditing || !props.draftMessage)
    show Edit Input

What alternative solutions did you explore? (Optional)

Will review the proposals in the morning.

Just a note: I agree with this: https://github.com/Expensify/App/issues/25488#issuecomment-1699632670 , my proposal is if a migration is difficult/impossible

@samh-nl I'm unsure if it is worth doing, and I've never seen us doing it. We can make it work by creating a new key and eventually removing the old one.
@s-alves10 That might be work, but it's clearly a workaround.

Just a note: I agree with this: https://github.com/Expensify/App/issues/25488#issuecomment-1699632670 , my proposal is if a migration is difficult/impossible

@ShogunFire Could you elaborate on this? Are your solution require a migration too?

@mollfpr
We're now treating empty string as an action, not as a draft
We're treating spaces as an empty in draft already.
So I suggested to use space as an empty draft. This doesn't require onyx migration and requires minimal changes. Also this doesn't define a new state of messages.
I don't think this is a workaround
Note: We need to distinguish empty draft and non-draft. There are two ways to do this: one suggested by @samh-nl - needs onyx migration, and one described in my proposal. I think we should not introduce new state as possible.

@mollfpr my proposal doesn't require a migration because we would still be testing the current condition: if the draft string is not empty then we show the edit mode. We would just add another condition with a new boolean isEditing, part of  the existing collection. Inspired by what you suggested here: https://github.com/Expensify/App/issues/25488#issuecomment-1688174202

Thoughts on the above @mollfpr?

I don't think this is a workaround

@s-alves10 How it's not a workaround? A whitespace is not an empty string; an empty string should have no character.

@ShogunFire How the isEditing will be set? Will changing the value types cause the error log when the draft value is only a string?

@samh-nl I believe you already have the answer to the Onyx migration.

The alternative I outlined would be to add a separate boolean value to store which are being edited, for example reportActionsEditing_. For backwards compatibility, we could set editing = true if draft is not empty (or isEditing = editing || !empty(draft)). I can work out the implementation details more if you think it may be a good approach.

Could this solution be implemented? I'm okay with adding a new key now since we don't have any clean approach.

The alternative I outlined would be to add a separate boolean value to store which are being edited, for example reportActionsEditing_. For backwards compatibility, we could set editing = true if draft is not empty (or isEditing = editing || !empty(draft)). I can work out the implementation details more if you think it may be a good approach.

@samh-nl  I'm inclined to see this as a proposal, if you will.

Please give the other option of renaming the Onyx key also some consideration, it's a bit more elegant and the trade-off (existing drafts are removed when people refresh) may not be a problem in practice.

If you can explain the clear plan, you can start a discussion in the slack regarding the trade of.

Looks like conversation continues on trying to find the right proposal

Bumped slack discussion

Not overdue. I will revisit the proposals and the slack discussion.

Slack discussion hasn't really gone anywhere. What do you want to do here @mollfpr?

Sorry for the delay 🙏

Please give the other option of renaming the Onyx key also some consideration, it's a bit more elegant and the trade-off (existing drafts are removed when people refresh) may not be a problem in practice.

@greg-schroeder I like the above suggestion better, but the trade-off might need to be conveyed to the internal.

Okay. I bumped the internal team

@samh-nl can you summarize where we ended up here?

Excellent recap, thank you. Let's hold then.

No update yet

holding

@samh-nl Looks like the issue we were holding for was finished up - do you think we're good to proceed here?

Sorry for the delay.
The proposal looks good, but I still don't know when and how the migration will be run. @samh-nl Could you elaborate on the migration step?

Bump @samh-nl!

Does that help answer your question @mollfpr?

Migrations are defined in this directory and subsequently called here

Got it! The proposal looks good to me!
🎀 👀 🎀 C+ reviewed!

This is on staging, awaiting deploy to prod

You can ignore this @sonialiap, it's a bug, I will handle payment

[@mollfpr] The PR that introduced the bug has been identified. Link to the PR:
[@mollfpr] 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:

No offending PR.

[@mollfpr] 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:

The regression test should be good.

[@mollfpr] Determine if we should create a regression test for this bug.
[@mollfpr] 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.

Open any report
Send a message
Press the Edit button in the newly added message
Empty the draft message input
Navigate to a different report
Return to the first report
Verify that the draft message input is empty
👍 or 👎

@greg-schroeder No need to send me the offer; I'll make a manual request in NewDot. Thank you!

reporter: $50
c: $500
c+: $500
Offers sent to @dukenv0307 and @samh-nl, and you can do a manual request @mollfpr.

filing regression test

$500 payment approved for @mollfpr (c+) based on summary above.

Sorry all, let me review this one

Hmm. This is tricky. The issue was reported/created in August before our first pricing changes, but no PR was created until late 2023, well after our payscale changed. I think we could probably honor the original reporting bonus given the date, but the work done on the PR took place well after the $500 baseline was established. That seems most fair to me.

authors: JmillsExpensify ShogunFire flaviadefaria greg-schroeder kavimuru mollfpr s-alves10


text:
Wallet- The wallet page keeps loading infinitely and "add payment method" is greyed out

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:

Launch app
Login using expensifail account
Tap profile icon
Tap Wallet

Expected Result:
The wallet page should show content without loading and "add payment method" must not be greyed out
Actual Result:
The wallet page keeps loading infinitely and "add payment method" is greyed out
Workaround:
Unknown
Platforms:

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

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

Version Number: 1.3.56-18
Reproducible in staging?: Yes
Reproducible in production?: No
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/78819774/f871138a-ab81-4aab-a6b1-77ecde2c14bb

Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub

I've run into some issues getting my Android emulator working, but I think they are sorted out now so I should be able to test the reproduction steps soon.

I cannot reproduce on iOS FWIW

Not reproducible on Android w/ a normal (non-expensifail) account

Checked this on my real life Android phone on the staging version of the app. It is not reproducible for me.
Gonna mark this as a "Needs reproduction" and remove the blocker.

I'm going to mark this Weekly and if nobody can reproduce it by the time it goes Overdue again, I'm going to close it.

Nobody has been in a rush to reproduce this one, so I am going to close it.

authors: deetergp lanitochka17 marcaaron mountiny roryabraham


text:
Add routes property to Transaction.ts

The routes parameter is added to Transaction as part of the Wave 5 Distance Request project. However, TypeScript definition is not updated.
Update Transaction.ts
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~011517d68819835cdf
Upwork Job ID: 1696989716534452224
Last Price Increase: 2023-08-30

Idk why it assigned two BZ members there.

Proposal
Please re-state the problem that we are trying to solve in this issue.
Add routes property to Transaction.ts
What is the root cause of that problem?
New Feature
What changes do you think we should make in order to solve the problem?
we need to update this into Transaction.ts
type Routes = {
[k: string]: Route;
}
type Route = {
distance?: number;
geometry?: Geometry;
}
type Geometry = {
coordinates?: number[][];
type?: string;
}
 const hasRouteError = Boolean(lodashGet(transaction, 'errorFields.route')); due to this i take as boolean
type ErrorFields = {
route?: boolean
}
Transaction.ts
type Transaction = {
+  routes?: Routes
 + errorFields?:  ErrorFields
}

Proposal for Updating Transaction TypeScript Definition in Transaction.ts:
Problem: The Transaction type definition lacks the routes parameter, introduced in the Wave 5 Distance Request project, leading to inconsistencies between type and usage.
Root Cause: The missing routes parameter in the Transaction type creates a disparity between type definition and implementation.
Solution: Update the Transaction type definition in Transaction.ts to include the routes parameter:
Alternative Solutions Explored: None considered due to importance of accurately reflecting new parameter.

Contributor details
Your Expensify account email: projects.techinject@gmail.com
Upwork Profile Link: https://www.upwork.com/freelancers/~01030af9e59561fbc8

Contributor details
Your Expensify account email: https://new.expensify.com/a/15545122
Upwork Profile Link: https://www.upwork.com/freelancers/~01030af9e59561fbc8

Contributor details
Your Expensify account email: projects.techinject@gmail.com
Upwork Profile Link: https://www.upwork.com/freelancers/~01030af9e59561fbc8

Proposal for Updating Transaction TypeScript Definition in Transaction.ts:
Problem: The Transaction type definition lacks the routes parameter, introduced in the Wave 5 Distance Request project, leading to inconsistencies between type and usage.
Root Cause: The missing routes parameter in the Transaction type creates a disparity between type definition and implementation.
Solution: Update the Transaction type definition in Transaction.ts to include the routes parameter:
Alternative Solutions Explored: None considered due to importance of accurately reflecting new parameter.
Contributor details
Your Expensify account email: projects.techinject@gmail.com
Upwork Profile Link: https://www.upwork.com/freelancers/~01030af9e59561fbc8

Proposal for Updating Transaction TypeScript Definition in Transaction.ts:
Problem: The Transaction type definition lacks the routes parameter, introduced in the Wave 5 Distance Request project, leading to inconsistencies between type and usage.
Root Cause: The missing routes parameter in the Transaction type creates a disparity between type definition and implementation.
Solution: Update the Transaction type definition in Transaction.ts to include the routes parameter:
Alternative Solutions Explored: None considered due to importance of accurately reflecting new parameter.

can i get the assignment of the task?

Contributor details
Your Expensify account email: projects.techinject@gmail.com
Upwork Profile Link: https://www.upwork.com/freelancers/~01030af9e59561fbc8

Proposal
Please re-state the problem that we are trying to solve in this issue.
Add routes property to Transaction.ts
What is the root cause of that problem?
No RC.
What changes do you think we should make in order to solve the problem?

type Geometry = {
    coordinates: Array<[number, number]>;
    type: 'LineString';
};

type Route = {
    distance: number;
    geometry: Geometry;
};

type Routes = {
    route0: Route;
    // In case in future we make any type change in API.
    [key: string]: Route;
};

Will be adding routes key in here https://github.com/Expensify/App/blob/430a837ab9c6c8a41106ecd2b739486a0a54db9e/src/types/onyx/Transaction.ts#L23
type Transactions {
    // ...existing
    routes: Routes
}

What alternative solutions did you explore? (Optional)
NA

Proposal for Updating Transaction TypeScript Definition in Transaction.ts:
Problem: The Transaction type definition lacks the routes parameter, introduced in the Wave 5 Distance Request project, leading to inconsistencies between type and usage.
Root Cause: The missing routes parameter in the Transaction type creates a disparity between type definition and implementation.
Solution: Update the Transaction type definition in Transaction.ts to include the routes parameter:
Alternative Solutions Explored: We can make it an optional param None considered due to importance of accurately reflecting new parameter.

@TechInjectIndia Please follow these guides to give your best and have good chances of selecting.
https://github.com/Expensify/App/tree/main/contributingGuides
https://github.com/Expensify/App/blob/main/contributingGuides/PROPOSAL_TEMPLATE.md please follow this doc to propose your solution so that you have equal chances as well as other. Later read all the docs inside the first links.
Thanks.!

Sorry this was a mistake. This issue is no longer external

Thanks for the update @hayata-suenaga

Only payee is: @rushatgabhane does not require payment (Eligible for Manual Requests)
As this is no longer an external issue, closing out for the payment now this https://github.com/Expensify/App/pull/27122

@zanyrenney sorry, I am the one who reviewed PR

are you eligible for manual requests @situchan ?

are you eligible for manual requests @situchan ?

not yet. still using upwork

External issue reporter - N/A
Contributor that fixed the issue - Hayata (internal employee)
Contributor+ that helped on the issue and/or PR - @situchan

PAYMENT SUMMARY
External issue reporter - N/A
Contributor that fixed the issue - Hayata (internal employee)
Contributor+ that helped on the issue and/or PR - @situchan PAID

authors: TechInjectIndia b4s36t4 hayata-suenaga neil-marcellini pradeepmdk situchan zanyrenney


text:
Tax - Maximum tax amount is 0 error msg on updating currency for non-default tax rate

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.62-0
Reproducible in staging?: Y
Reproducible in production?: N
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): applausetester+1088ck@applause.expensifail.com
Issue reported by: Applause - Internal Team
Issue found when executing PR https://github.com/Expensify/App/pull/39562
Action Performed:
Precondition : Add tax rates for any WS apart from the default one

Tap on FAB button >> Request money
Select Manual option & enter amount
Select workspace with enabled taxes
On the confirm screen choose a different tax rate
Click on Tax amount option
Change currency to a different option & tap on Save button (Note: Error message appears)
Change back currency to USD & tap on save button

Expected Result:
No error message appear & tax amount get saved on changing currency for a non-default rate
Actual Result:
Maximum tax amount is 0 error msg on updating currency for non-default tax rate
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
[ ] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence

https://github.com/Expensify/App/assets/78819774/d3fc138a-c47b-4e4b-ae6a-06794593439f
View all open jobs on GitHub

@luacmartins  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-vsp

@akinwale @ZhenjaHorbach can you please check as this might be coming from your PR. Thanks!

I can reproduce on staging, but not locally anymore

Hmm it only happens with certain currencies

I think it might be coming from https://github.com/Expensify/App/pull/39723

Yea, found the cause

Left a comment here - https://github.com/Expensify/App/pull/39723#issuecomment-2048508256

I put up a PR, but I'm unsure if the logic makes sense. Asked the original authors for a review

CP'ing here https://expensify.slack.com/archives/C07J32337/p1712828884534849

This was fixed internally and there was no C+ review, so we can close this.

authors: MonilBhavsar lanitochka17 luacmartins mountiny


text:
Crash when opening search 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:
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
Expensify/Expensify Issue URL:
Issue reported by: @roryabraham
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1719267975652129
Action Performed:

Go to staging.new.expensify.com or open the app in iOS
Tap/click search icon from the bottom menu

Expected Result:
Search page opens
Actual Result:
App crash on opening search page
Workaround:
Unknown
Platforms:

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

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

Screenshots/Videos

Add any screenshot/video evidence

View all open jobs on GitHub

This has been labelled "Needs Reproduction". Follow the steps here: https://stackoverflowteams.com/c/expensify/questions/16989

@m-natarajan Please try cleaning your Onyx cache, rerun then app and tell us if this fixes the problem. This solution worked for my case.
If yes then I believe this should not be a big problem, unfortunately we're still in development mode for the Search features so small bumps like this one might happen.
CC @luacmartins for visibility

Proposal
Please re-state the problem that we are trying to solve in this issue.
App Crash when opening search page
What is the root cause of that problem?
We are accessing shouldShowCategoryColumn without using optional chaining operator. This causes a crash sometimes if the network is slow and SearchResults object has not fully loaded.
We should use optionalChaining when accessing this property:
metadata?.columnsToShow?.shouldShowCategoryColumn,

What changes do you think we should make in order to solve the problem?
We will use optionalChaining  when acessing shouldShowCategoryColumn in these places:
https://github.com/Expensify/App/blob/2f688ad31969f148b18a3793b057b31c4f02aec7/src/libs/SearchUtils.ts#L141
https://github.com/Expensify/App/blob/2f688ad31969f148b18a3793b057b31c4f02aec7/src/libs/SearchUtils.ts#L188
https://github.com/Expensify/App/blob/2f688ad31969f148b18a3793b057b31c4f02aec7/src/components/SelectionList/SearchTableHeader.tsx#L56
Additionally
We will optionalChaining when accessing shouldShowTagColumn and shouldShowTaxColumn here:
https://github.com/Expensify/App/blob/2f688ad31969f148b18a3793b057b31c4f02aec7/src/libs/SearchUtils.ts#L142
https://github.com/Expensify/App/blob/2f688ad31969f148b18a3793b057b31c4f02aec7/src/libs/SearchUtils.ts#L189
https://github.com/Expensify/App/blob/2f688ad31969f148b18a3793b057b31c4f02aec7/src/components/SelectionList/SearchTableHeader.tsx#L61
https://github.com/Expensify/App/blob/2f688ad31969f148b18a3793b057b31c4f02aec7/src/libs/SearchUtils.ts#L143
https://github.com/Expensify/App/blob/2f688ad31969f148b18a3793b057b31c4f02aec7/src/libs/SearchUtils.ts#L190
https://github.com/Expensify/App/blob/2f688ad31969f148b18a3793b057b31c4f02aec7/src/components/SelectionList/SearchTableHeader.tsx#L66

If yes then I believe this should not be a big problem, unfortunately we're still in development mode for the Search features so small bumps like this one might happen.

Agree, but I think we should add optional chaining as a sanity check for scenarios like these, so the app doesn't crash!

@neonbhai please put up a PR to add optional chaining

@neonbhai how's the PR coming along?

PR ready for review!

Applying the New Feature label to get another BZ member on this while I am OOO til July 10. To catch you up on where we are @kadiealexander, this PR was just merged to main, and we should expect it to be merged to staging soon -- nothing to do in the meantime.
Thanks for watching over this, I'll grab it back from you when I return!

Summarizing payment on this issue:

Contributor: @neonbhai $125 PAID via Upwork
Contributor+: N/A [internal]

Upwork job is here: https://www.upwork.com/jobs/~0102a0367add306853

authors: Kicu MelvinBot luacmartins m-natarajan neonbhai stephanieelliott


text:
[$250] Sign in – Onboarding modal is missing in new tab

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: v.9.0.18-1
Reproducible in staging?: Y
Reproducible in production?: N
Email or phone of affected tester (no customers): ponikarchuks+98824@gmail.com
Issue reported by:
Action Performed:

Go to https://staging.new.expensify.com/
In Sign in page enter new Gmail account
When Onboarding modal appears open new tab and paste https://staging.new.expensify.com/

Expected Result:
Onboarding modal is present in new tab
Actual Result:
Onboarding modal is missing in new tab
Workaround:
Unknown
Platforms:

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

Screenshots/Videos
https://github.com/user-attachments/assets/6395e2b1-0d6e-43a8-9ff1-5d09d2c76df5

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01f33db55519f8fc02
Upwork Job ID: 1821535504288913507
Last Price Increase: 2024-08-08

Issue OwnerCurrent Issue Owner: @jayeshmangwani

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

So strange. Can't reproduce with private domain, can reproduce with public domain:
https://github.com/user-attachments/assets/49aa21f4-5adc-4145-9ffb-cd32a89cfb94

Let's get some eyes on it.

When we open a new tab, the isOnboardingFlowStatusKnownPromise promise reset after we call isOnboardingFlowCompleted here

@dominictb I don't think this is the root cause. The issue is happening on staging and not in production, so any recent PR may have caused this problem.

@fedirjh I tested it after commenting out that code, and I'm still able to reproduce the issue. Have you tested to confirm that it's the cause of this bug?

@jayeshmangwani The changes that @dominictb pointed out in his proposal are recently added in this PR, which is deployed to staging recently :

@fedirjh I've tested it a few times, but I'm not confident that those lines are the cause. Are you sure about this?

Hello, I am the author of PR #46750. I removed my changes and tried to reproduce the bug, and I can still reproduce it even without the changes from my PR.

@jayeshmangwani Did you disable the strict mode?

No, let me try it by disabling it

Thanks for the help, @dominictb and @fedirjh. Disabling the strict mode did the trick!

@dominictb's  Proposal will solve this issue.
Issue comes from this PR https://github.com/Expensify/App/pull/46559, that was merged recently and it is now in the regression period.
@NikkiWines What do you suggest? How should we proceed?

We should get this back to the C+ and PR author if they're here to fix it, or revert that PR. @DylanDylann @nkdengineer

I will raise a PR to fix this issue.

@DylanDylann The PR is here.

Yeah, ideally let's have this solved by the original PR author - though if we end up using the solution that was posted above, let's be sure to compensate @dominictb's accordingly

Removing the DeployBlocker label as it looks like a frontend issue.

I’m unassigning myself from this issue. @DylanDylann will be handling it

@ishpaul777 reviewed, adding assingment

Fixed with a CP

@NikkiWines Should I eligible for compenstation since this https://github.com/Expensify/App/pull/47097 uses my proposal https://github.com/Expensify/App/issues/47054#issuecomment-2275970044?. The only difference is it creates a new function to resolve the onboarding promise.

Yes, since the core logic used in the fix is the same, I think compensation should be provided as the issue had been marked as external and help wanted at the time of your proposal being made. @trjExpensify what do you think?

I think we can do a partial payment agreed, so when this comes around, I'll be sure to send an offer for $125.

Yup, I've been OoO. Payment summary as follows:

$125 to @dominictb for contributing to the proposed fix
$250 to @ishpaul777 for the C+ review

@ishpaul777 paid, @dominictb I've reached out to you for your Upwork profile.

@dominictb offer now sent.

Paid, closing!

authors: IuliiaHerets NikkiWines jayeshmangwani marcaaron nkdengineer trjExpensify tushar-a-b


text:
Modal that shows European countries list is not being shown

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.53-0
Reproducible in staging?: Y
Reproducible in production?: Y
Issue was found when executing this PR:
Email or phone of affected tester (no customers): https://github.com/Expensify/App/pull/51173
Issue reported by: Applause Internal Team
Action Performed:

Navigate to staging.new.expensify.com
Create a workspace
Change the workspace currency to EUR, GBP, CAD or AUD
Go to more features and enable workflows
Go to workflows and click on connect bank account

Expected Result:
New component with European countries list gets shown.
Actual Result:
No new component with European countries list gets shown but the usual "Update currency to USD" modal gets shown
Workaround:
Unknown
Platforms:

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

Screenshots/Videos
https://github.com/user-attachments/assets/aa14fa77-9da7-4659-a00c-22981da0ccd0

View all open jobs on GitHub

@CortneyOfstad  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

Hey, I'm the creator of the PR. We're building a flow for global reimbursements that will support adding bank account for workspaces with different currency than USD - https://github.com/Expensify/App/issues/50896. At the moment this whole feature is accessible in development mode only. I can try to find out if there is something we can do to make this flow accessible by QAs right now if there is such need. I'm not 100% that there is such need at the moment as we're building it piece by piece and it won't be fully operational until phase 4. There will be a moment when we will want to make it accessible by everyone and at this point it will be of course tested as a whole.

I can make it visible in debug mode and also create a switch for it in the troubleshoot section. I believe it's not a big effort and would allow you QAs to check this.

Thanks for @MrMuzyk! I agree that this is not needed right now, so going to close!

authors: CortneyOfstad IuliiaHerets MrMuzyk


text:
Chat - Composer is cut off when trying to edit message after opening it on a search result

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:
Reproducible in staging?:
Reproducible in production?:
If this was caught on HybridApp, is this reproducible on New Expensify Standalone?:
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:
Slack conversation (hyperlinked to channel name):
Action Performed:

Open the staging.new.expensify.com website.
Open any chat that has messages on it.
Tap on the search icon on the top right corner.
Tap on the option to search on the current chat.
Add a word that will trigger a result on the search.
Tap on enter.
Open the last message on the search results.
Long tap on the message and select "Edit Message"
Verify that the edition composer is displayed compleе.

Expected Result:
Edition composer should be displayed entirely when trying to edit a message accessed via search result.
Actual Result:
When opening a message on a search result and trying to edit it, the edition composer is displayed cutted off.
Workaround:
Unknown
Platforms:

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

Screenshots/Videos
https://github.com/user-attachments/assets/59c5fdbd-bbc8-49d4-bb2b-cb42a9306df4

View all open jobs on GitHub

Goit my hands on Android, working on installing Hybridapp.

I can't replicate this on Android Hybridapp or Safari MacOS. Requesting a retest.

I think this is organically fixed. No one can repro.

authors: IuliiaHerets RachCHopkins