[$500] Conversation - Back arrow leads to LHN instead of group lists after page refresh in a profile screen

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

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

Navigate to https://staging.expensify.com/
and log in
Create a group conversation
Type something
Open group details > members
Open any profile
Refresh the page
Tap on the back button to navigate up to the top of the screen (left side)

Expected Result:
The user should be taken to the group members page instead of LHN.
Actual Result:
After a page refresh, the back button leads the user directly to LHN.
Workaround:
Unknown
Platforms:

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

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

Screenshots/Videos
https://github.com/Expensify/App/assets/115492554/4d89c48d-fb65-40a0-a550-1562c486394d

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

Upwork Job URL: https://www.upwork.com/jobs/~0110014b7fdb5c2a05
Upwork Job ID:<PHONE_NUMBER>678555648
Last Price Increase: 2023-12-30

Proposal
Please re-state the problem that we are trying to solve in this issue.
What is the root cause of that problem?
We are not setting the right route for navigateBackTo in the ProfilePage.
What changes do you think we should make in order to solve the problem?

Check if the `backTo`` param is the same as the current route and change it to a default route
Or set it the previous report.

Proposal
Please re-state the problem that we are trying to solve in this issue.
The navigation behavior in group conversation for participant details, profile and private notes is taking user to LHN instead of the previous screen.
What is the root cause of that problem?
The navigation behavior issue can be found in three areas the participant details page, the profile page and private notes page.
Open group conversation, click on members to navigate to participants page then click on profile, then refresh page, click back button, the user is taken to LHN instead of previous screen.
Open group conversation, click on members navigate to participants page, then refresh page, click back button, the user is taken to LHN instead of previous screen.
Open group conversation, click on private notes, refresh the page, click back button, the user is taken to private notes list page instead of the details page.
Open group conversation, click on members, click on profile, click on private notes, refresh the page, click back button, the user is taken to private notes list page instead of profile page.
The root cause of the issues would be incorrect handling of the backTo url.
What changes do you think we should make in order to solve the problem?
https://github.com/Expensify/App/blob/9208c95e3c9b375897e7133696ffcdb07b67fb74/src/pages/ReportParticipantsPage.js#L124
Need to pass backTo property to Profile route
Navigation.navigate(ROUTES.PROFILE.getRoute(option.accountID, ROUTES.REPORT_PARTICIPANTS.getRoute(props.report.reportID)));
https://github.com/Expensify/App/blob/9208c95e3c9b375897e7133696ffcdb07b67fb74/src/pages/ReportParticipantsPage.js#L101
Need to pass onBackButtonPress to HeaderWithBackButton component
Navigation.goBack(ROUTES.REPORT_WITH_ID_DETAILS.getRoute(props.report.reportID))
https://github.com/Expensify/App/blob/9208c95e3c9b375897e7133696ffcdb07b67fb74/src/pages/ReportDetailsPage.js#L155
In the call to ReportUtils.navigateToPrivateNotes pass backTo param ROUTES.REPORT_WITH_ID_DETAILS.getRoute(props.report.reportID)
https://github.com/Expensify/App/blob/9208c95e3c9b375897e7133696ffcdb07b67fb74/src/pages/ProfilePage.js#L257
In the call to ReportUtils.navigateToPrivateNotes pass backTo param ROUTES.REPORT_WITH_ID_DETAILS.getRoute(props.report.reportID)
In Routes.ts need to add optional backTo parameter for PRIVATE_NOTES_EDIT and PRIVATE_NOTES_LIST
PRIVATE_NOTES_LIST: {
    route: 'r/:reportID/notes',
    getRoute: (reportID: string, backTo?: string) => getUrlWithBackToParam(`r/${reportID}/notes`, backTo),
},
PRIVATE_NOTES_EDIT: {
    route: 'r/:reportID/notes/:accountID/edit',
    getRoute: (reportID: string, accountID: string | number, backTo?: string) => getUrlWithBackToParam(`r/${reportID}/notes/${accountID}/edit`, backTo),
},

In ReportUtils.ts,pass backTo param to navigateToPrivateNotes and then also pass backTo param to routes PRIVATE_NOTES_EDIT and PRIVATE_NOTES_LIST
function navigateToPrivateNotes(report: Report, session: Session, backTo: string = '') {
    if (isEmpty(report) || isEmpty(session) || !session.accountID) {
        return;
    }
    const currentUserPrivateNote = report.privateNotes?.[session.accountID]?.note ?? '';
    if (isEmpty(currentUserPrivateNote)) {
        Navigation.navigate(ROUTES.PRIVATE_NOTES_EDIT.getRoute(report.reportID, session.accountID, backTo));
        return;
    }
    Navigation.navigate(ROUTES.PRIVATE_NOTES_LIST.getRoute(report.reportID, backTo));
}

In PrivateNotesEditPage.js and PrivateNotesListPage.js need to pass onBackButtonPress property to HeaderWithBackButton component.
onBackButtonPress={() => Navigation.goBack(route.params.backTo ? route.params.backTo : ROUTES.PRIVATE_NOTES_VIEW.getRoute(report.reportID, route.params.accountID))}
onBackButtonPress={() => Navigation.goBack(route.params.backTo ? route.params.backTo : '')}
What alternative solutions did you explore? (Optional)

Reviewing now

@Tony-MK 's proposal here https://github.com/Expensify/App/issues/33797#issuecomment-1872583750 looks good and works well. There are also other ingresses leading to the Profile page wherein clicking the back is leading to LHN. So @Tony-MK's PR should aim to fix other ingresses as well. Other  proposals here is like a extension of the approved proposal implementing similar fix at other places as well.
🎀 👀 🎀
C+ Reviewed

waiting for review @Gonals when you have time can you buddy check the decision here - https://github.com/Expensify/App/issues/33797#issuecomment-1873858826

I'm going to be ooo next week so adding a buddy to monitor this while I'm gone.
status - https://github.com/Expensify/App/issues/33797#issuecomment-1877785564

@Gonals bump again on the comment https://github.com/Expensify/App/issues/33797#issuecomment-1877785564. Thanks!

@Gonals bump again on the comment #33797 (comment). Thanks!

I already assigned the developer a few days ago! 😁

@CortneyOfstad, Waiting for the PR review.

Caught up in a priority issue yesterday and today. Will try to close out the PR by tomorrow.

@abdulrahuman5196 any updates on the PR? Thanks!

@abdulrahuman5196 bump ^^^

@CortneyOfstad  hi, we had some comments on the PR. I need to review the latest version. Will work on reviewing latest version.

Sounds good @abdulrahuman5196 — thanks!

@abdulrahuman5196 just checking in to see where we're at with the comments on the PR — thank you!

Hi @CortneyOfstad . Will close the pending action items in my morning.

@abdulrahuman5196 Any update on the PR? If the pending action has not been completed, do you think that is something that can be done by EOD? Thanks!

Thanks @abdulrahuman5196! It shows that is has not launched to staging yet due to on-going QA, so going to keep an eye on this 👍

PR went into staging 2 days ago 👍

@Christinadobrzyn I am going OoO until March 11th, so going to have you keep an eye on this while I am gone if that is okay? Thanks!

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

Doesn't seem to be a regression. Seems to be a bug for sometime.

Determine if we should create a regression test for this bug.

Yes.

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.

Go to the application and log in.
Create a group chat, if none exists.
Go to the group chat.
Open the group details > members list.
Visit a member's profile page and refresh it.
Verify that the same member's profile page is displayed like in step 5.
Tap on the back button.
Verify the app navigated back to the member's list mentioned in step 4.

@Christinadobrzyn Added bz checklist. This issue should be on payment due for March 7. It seems melvin didn't update automatically

Thanks @abdulrahuman5196!
Payouts due:
Contributor: $500 @Tony-MK (paid in Upwork - https://www.upwork.com/nx/wm/offer/28096419
Contributor+: $500 @abdulrahuman5196 (paid in Upwork - https://www.upwork.com/nx/wm/offer/28096418)
Upwork job is here.
Regression test - https://github.com/Expensify/Expensify/issues/376315
I think this is good to close - let me know otherwise!


⚠ Adam Brand Music has degraded performance

In 91928a6, Adam Brand Music (https://adambrandmusic.com) experienced degraded performance:

HTTP code: 200
Response time: 5523 ms

Resolved: Adam Brand Music performance has improved in c43a038 after 8 minutes.


在nextjs中使用提示 Warning: Did not expect server HTML to contain a  in .

直接复制的官方demo在nextjs中使用提示  Warning: Did not expect server HTML to contain a  in .

终端报错信息：
Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayoutEffect should only be used in components that render exclusively on the client. See https://reactjs.org/link/uselayouteffect-ssr for common fixes.

警告不管

https://github.com/react-component/tween-one/pull/132

我的解决方案给你参考一下，希望可以帮到你


Specified string is not recognized

Currently, I get:

> "abc" = [X|_] ?
...
  = Expected one of ... string

Expected answer: X = a, on the grounds that "string" colloquially means a list of characters, and I am specifying such a list using the double quoted term "abc".

Yep, that's an issue!  Thanks for pointing it out.
In general, I see this project kind of like this 1668 illustration of a shark: well-intentioned and detailed, but dang, had that guy ever actually seen a shark?
Similarly, when I implemented "strings", I didn't know how strings worked in Prolog -- I just wanted to be able to print stuff out.  Here's what there is currently, and what I think I should change it to -- please correct me if I'm wrong about any of this:

hi is called a functor by the lexer.  I think it's just an atom, not a functor, but tbh I'm not entirely sure the difference between an atom and a zero-argument functor.
'hi' is called a string by the lexer.  It is distinct from an atom, and just represents some opaque bit of data.  This should change to be identical to hi.
"hi" is not parsed.  It should be, as you say, a list of characters.

And just to confirm, is a "character" the same as a single-character functor? Like "abc" = [a,b,c]?

Yes hi is an atom. A functor is a functor name together with an arity. So for example, in the term f(a,b,c), the principal functor is f/3.  We also have the following connection:

3.134 principal functor: The principal functor of a
compound term is F/N if the functor of the compound
term is F and its arity is N.

The principal functor of an atomic term is C/0 if the
atomic term is C.

Therefore, we have for example:

?- functor(a, F, A).
   F = a, A = 0.

Single quotes can be used to denote atoms, if necessary, for example if the atoms contains spaces, double quotes etc.
Yes, I am using "character" synonymously with "one-char atom", i.e., atom of length 1:

<IP_ADDRESS> Characters and one-char atoms

C, a set of characters, is an implementation defined subset
of PCS, the processor character set (6.5),

Any member of C is represented in a Prolog term by a
one-char atom whose name is that member of C.

NOTE - There is a one-to-one mapping between members of
C (characters) and members of CC (character codes) (<IP_ADDRESS>).

This should be fixed now:
> 'hello' = hello ?

Yes.
> "abc" = [X | Tail] ?

Solution:
   Tail = [b, c]
   X = a


TSX: Add support for member expressions, closes #39

You forgot to add it for typescript react.
Thanks for the good work!

Oops, thank you for catching that one.


Exception when running licensee on the licensee project

Hey !
I was trying out licensee on licensee. Although it works perfectly with some other projects, I get an exception when trying it out on the cloned licensee project itself.
I am under Mac Os X 10.11.3
ruby 2.2.1p85
$ licensee
/Users/nicolas/.rvm/gems/ruby-2.2.1/gems/licensee-6.1.0/lib/licensee/version.rb:1:in `<top (required)>': Licensee is not a class (TypeError)
	from /Users/nicolas/.rvm/gems/ruby-2.2.1/gems/licensee-6.1.0/lib/licensee.rb:1:in `require_relative'
	from /Users/nicolas/.rvm/gems/ruby-2.2.1/gems/licensee-6.1.0/lib/licensee.rb:1:in `<top (required)>'
	from /Users/nicolas/.rvm/gems/ruby-2.2.1/gems/licensee-6.1.0/bin/licensee:2:in `require_relative'
	from /Users/nicolas/.rvm/gems/ruby-2.2.1/gems/licensee-6.1.0/bin/licensee:2:in `<top (required)>'
	from /Users/nicolas/.rvm/gems/ruby-2.2.1/bin/licensee:23:in `load'
	from /Users/nicolas/.rvm/gems/ruby-2.2.1/bin/licensee:23:in `<main>'
	from /Users/nicolas/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `eval'
	from /Users/nicolas/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `<main>'

Hope this helps.

Also on a Mac (10.10.5).
ruby 2.0.0p481
Running licensee 8.0.0 (from path)
$ licensee
License file: LICENSE.md
Attribution: Copyright (c) 2014-2015 Ben Balter
License: MIT License
Confidence: 100%
Method: Licensee::Matchers::Exact

@callicles I believe this has been fixed meanwhile. Do you mind trying the latest version and closing this issue if you cannot reproduce it anymore?

ok, let me try that

Cannot reproduce with last version


enable FP16Optimizer for fp16 deepspeed training.

What does this PR do?
This PR enables FP16 Optimizer when fp16 training is enabled.
Benchmark validation.
This is the logs from both runs with and without fp16 training flag.
Roberta-large

with fp16 optimizer :
***** train metrics *****
  epoch                    =      13.33
  train_loss               =     0.5796
  train_runtime            = 0:02:46.34
  train_samples            =       3668
  train_samples_per_second =    307.796
  train_steps_per_second   =      1.202

without fp16 optimizer
***** train metrics *****
  epoch                    =      13.33
  train_loss               =     0.5796
  train_runtime            = 0:02:54.16
  train_samples            =       3668
  train_samples_per_second =    293.974
  train_steps_per_second   =      1.148

The recipe that I ran on this test:
"optimum/examples/onnxruntime/training/text-classification/run_glue.py"
command used to run the recipe:
python -m torch.distributed.launch --nproc_per_node=4 /home/adamlouly/optimum/examples/onnxruntime/training/text-classification/run_glue.py --model_name_or_path roberta-base --task_name MRPC --max_seq_length 128 --learning_rate 3e-6 --do_train --output_dir /dev/optim_al --overwrite_output_dir --max_steps 200 --logging_steps 20 --per_device_train_batch_size 64 --fp16 --deepspeed  /home/adamlouly/optimum/aml_ds_config_zero_1.json
config json file:
{   "fp16": {     "enabled": true,     "loss_scale": 0,     "loss_scale_window": 1000,     "hysteresis": 2,     "min_loss_scale": 1   },   "zero_optimization": {     "stage": 1,     "allgather_partitions": true,     "allgather_bucket_size": 200000000,     "overlap_comm": true,     "reduce_scatter": true,     "reduce_bucket_size": 200000000,     "contiguous_gradients": false,     "cpu_offload": false   },   "zero_allow_untested_optimizer": true,   "optimizer": {     "type": "AdamW",     "params": {       "lr": "auto",       "betas": "auto",       "eps": "auto",       "weight_decay": "auto"     }   },   "scheduler": {     "type": "WarmupLR",     "params": {       "warmup_min_lr": "auto",       "warmup_max_lr": "auto",       "warmup_num_steps": "auto"     }   },   "steps_per_print": 2000,   "train_batch_size": "auto",   "train_micro_batch_size_per_gpu": "auto",   "gradient_accumulation_steps": "auto",   "wall_clock_breakdown": false }

@JingyaHuang  can you please approve the workflows?

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.

Hi @AdamLouly,
Thanks for the PR!
Just to have a further understanding of the fp16 optimizer wrapper, it works both for DeepSpeed and Apex right? In Transformers, while using Apex as backend for mixed precision, the optimizer is wrapped in the function _wrap_model,
https://github.com/huggingface/optimum/blob/eff4c2ba39d4db06be36542d167ba50517be94e2/optimum/onnxruntime/trainer.py#L1488
will it make sense also to wrap this?
And under the hood, what does the wrapper optimize? Is it compatible regardless of the optimizer used?

_wrap_model

Yes I think we have to wrap the apex one as well, thanks for pointing it out,
to answer your question:

FP16_Optimizer is a simple wrapper to replace inefficient FP16_Optimizer function calls implemented by libraries for example
Apex, DeepSpeed, Megatron-LM.
these are the supported Optimizers.
   "megatron.fp16.fp16.FP16_Optimizer": LegacyMegatronLMModifier,   "deepspeed.runtime.zero.stage2.FP16_DeepSpeedZeroOptimizer": DeepSpeedZeROModifier,   "deepspeed.runtime.zero.stage_1_and_2.DeepSpeedZeroOptimizer": DeepSpeedZeROModifier,   "apex.amp.optimizer.unique_name_as_id": ApexAMPModifier,

Updated the perf results on the description using roberta-large

@JingyaHuang formatter trainer.py

@JingyaHuang  do you use black for lint? that's what I used and it still fails, thoughts?

@JingyaHuang do you use black for lint? that's what I used and it still fails, thoughts?

@AdamLouly, yes we use black and I sort. You can use directly ‘make style’ for formatting.

@JingyaHuang do you use black for lint? that's what I used and it still fails, thoughts?

@AdamLouly, yes we use black and I sort. You can use directly ‘make style’ for formatting.

make style reformat other files that I have not change as well.

@AdamLouly,
you could either format trainer.py with the latest black and isort. Or apply make style, but only commit trainer.py.


Get the version from package.json.

Thanks for contributing! Sorry it took so long for me to fix this.


Translated Context.md

Thanks for reviewing! 🙂

I think we should write "Context" instead of "Kontext", because this is a technical term in React and all methods are named after it. (setContext etc.)

Hi Phil, yeah I spent quite a bit thinking about whether to use Kontext or Context. Switched it back to Context 👍

Hello @tamarau . Thank you for your translation (: Could you please read the pages again. Sometimes it sounds like a little bit to "Google-Translatorish" :/

Hi @ph1p thanks for reviewing and will do! I know, after living in the UK for so long my German can sound a bit too Denglisch sometimes :(

Thank you! Please check my suggestion and I'll merge it as soon as possible (:

@ph1p all done! :)


misc: upgrade ahooks

There are recent breaking changes and bug fixes for ahooks v3, especially for usePersistFn. This PR bumps the dependency.

Codecov Report

Merging #1231 (e07b627) into master (6cb77ca) will increase coverage by 1.73%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #1231      +/-   ##
==========================================
+ Coverage   22.34%   24.07%   +1.73%
==========================================
  Files         164       92      -72
  Lines       14140     9313    -4827
==========================================
- Hits         3159     2242     -917
+ Misses      10750     6931    -3819
+ Partials      231      140      -91

Flag
Coverage Δ

be_integration_test_latest
?

be_integration_test_v4.0.1
?

be_unit_test
24.07% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 6cb77ca...e07b627. Read the comment docs.


Negative float literals are not parsed after procedural macro

Disclaimer: I am not 100% sure whether this is a bug in RA or a missing validation in Rustc.
When writing -4.0f32 in Rust, it is usually parsed as two different tokens (a minus operator and a float literal).
But a procedural macro can also generate new tokens, including negative float literals:
#[proc_macro]
fn example_verbose(input: TokenStream) -> TokenStream {
    let literal = Literal::f32_suffixed(-42.0);
    quote! { #literal }
}

or even shorter
#[proc_macro]
fn example(input: TokenStream) -> TokenStream {
    let literal = -42.0f32;
    quote! { #literal }
}

Unfortunately, these currently cause RA to crash:
thread '<unnamed>' panicked at 'Fail to convert given literal Literal {
    text: "-42.0f32",
    id: TokenId(
<PHONE_NUMBER>,
    ),
}', crates/mbe/src/subtree_source.rs:161:28

I use this as a temporary workaround, but it is clearly not ideal:
pub fn generate_f32(value: f32) -> TokenStream {
    let is_negative = value.is_sign_negative();

    if is_negative {
        let value = value.abs();
        quote! { - #value }
    } else {
        quote! { #value }
    }
}

The work-around for this bug is a bit cumbersome, so I am hoping that providing more information might increase the chances of this getting fixed:
I think the problem is this:

Within the context of a macro, proc_macro::Literal::f32_suffixed(-2.0) generates a new literal with text value "-2.0f32".
RA tries to convert the resulting Literal("-2.0f32") token to an internal representation in convert_literal(l: &tt::Literal) -> TtToken, here. For this, it needs to know the kind of literal (e.g. float, char).
Therefore, it calls the lexer to obtain the syntax kind of the first token it sees in the literal's text value. These calls are here and here.
Finally, the lexer calls rustc_lexer::first_token(text) (here).
Unfortunately, rustc_lexer considers the minus as a distinct (non-literal) token:fn main() {
    println!("Literal: {:?}", rustc_lexer::first_token("-2.0f32").kind);
    // >> Literal: Minus
}

We ascend back to convert_literal. This is where the problem finally comes to light:// fn convert_literal(l: &tt::Literal) -> TtToken
let kind = lex_single_syntax_kind(&l.text)
    .map(|(kind, _error)| kind)       // kind = Minus
    .filter(|kind| kind.is_literal()) // kind.is_literal() = false
    // None
    .unwrap_or_else(|| panic!("Fail to convert given literal {:#?}", &l));

In a nutshell, the problem is first caused by the fact that:

rustc_lexer considers -2.0 two distinct tokens ...
but proc_macro's API generates a single token for -2.0.

There are three places where this might be fixed:

In a future version, proc_macro's API should panic when Literal::f32_*(...) and friends are called with a negative value, here. (This wouldn't fix the problem per se, but it would at least add some validation.)
In a future version, quote's implementation of ToTokens for f32 and friends should check if the given value is negative and use Punct::new(...) for the minus sign if necessary, here.
In a future version, rust_analyzer/mbe should implement its own work-around by looking at the second token's syntax kind if the first token is a minus sign, here.

Unfortunately, none of 1-3 are currently implemented and as a result, importing a procedural macro that does quote! { -1.0 } now crashes RA server completely.
One more thing: in the proc_macro crate, the authors already acknowledge that negative literals might not survive a round-trip, which leads me to believe that this should probably be fixed in 3, rather than 1.
Any thoughts?

I submitted a similar issue to quote here. It might be easier to solve with a fix there.


Failed to connect to the wayland display '(default)'

Not sure if this is working.  Ran the code and its stuck with this message.
error: XDG_RUNTIME_DIR not set in the environment.
Warning: gst-resource-error-quark: Could not initialise Wayland output (7): gstwaylandsink.c(333): gst_wayland_sink_find_display (): /GstPipeline:pipeline0/GstWaylandSink:waylandsink0:
Failed to create GstWlDisplay: 'Failed to connect to the wayland display '(default)''

I am running into the same error. Were you able to solve the issue?

When running birdfeeder.sh with Coral camera on the Dev Board, I get:
** (python3:3933): CRITICAL **: 16:37:50.961: Failed to flush Wayland connection
thousands of lines in the Terminal window.
I'm getting a results.log file which includes some confirmed bird IDs and images saved. But hundreds of images are being saved in just a few seconds of running before I ^Z out. I don't think this is the way is should run.

I found that there were two issues contributing to the behavior I described:
FIRST - I am running the birdfeeder.sh script in a terminal window on Mac OSX with USB-c to my laptop plugged into the OTG port on the Dev board. The Waylandsink is the end of the gstream pipeline that is processing the images from the camera and sending them to the tflite software for inferencing. Apparently, the Waylandsink object doesn't clear(flush) properly unless there is a HDMI monitor connected to the Coral Dev Board. I do not know why but if I plug a monitor into the HDMI port on the board, I see the camera image on the monitor and there is NO steady stream of error messages complaining that the sink us not flushing. Of course, the images do not show up on the terminal window.
SECOND - In the birdfeeder.sh script, there is a line
“	—training False”
which is supposed to allow the collections of images to retrain the model if desired. I (mistakenly) thought that setting this parameter to “False” would cause the program to run in “classification” mode and not collect an image if only background was seen by the camera. But I was betting hundreds of images of the background. A study of the code showed that that would only happen if the program was running in training mode. It turns out that setting the —training parameter to False is not sufficient; it must be deleted from the parameter list in the birdfeeder.sh file. In classification mode, an image is saved only when a bird is “seen” by the camera in which case the event is recorded in the results.log file. This is the way I expect the program to run.

try do:
sudo apt-get install gstreamer1.0-x
this solve for me.

On Mar 5, 2020, at 6:48 AM, Luiz Felipe <notifications<EMAIL_ADDRESS>wrote:
sudo apt-get install gstreamer1.0-x
Hello Luiz.
I tried your suggestion. Here is a bit of the result:
mendel@jumping-quill:~$ sudo apt-get install gstreamer1.0-x
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
gstreamer1.0-x
0 upgraded, 1 newly installed, 0 to remove and 51 not upgraded.
Need to get 1,247 kB of archives.
After this operation, 1,448 kB of additional disk space will be used.
Get:1 https://packages.cloud.google.com/apt mendel-bsp-enterprise-day/main arm64 gstreamer1.0-x arm64 1.14.4+imx-5 [1,247 kB]
Fetched 1,247 kB in 1s (1,145 kB/s)
Selecting previously unselected package gstreamer1.0-x:arm64.
(Reading database ... 49751 files and directories currently installed.)
Preparing to unpack .../gstreamer1.0-x_1.14.4+imx-5_arm64.deb ...
Unpacking gstreamer1.0-x:arm64 (1.14.4+imx-5) ...
Setting up gstreamer1.0-x:arm64 (1.14.4+imx-5) ...
mendel@jumping-quill:~$
mendel@jumping-quill:~$
mendel@jumping-quill:~$ echo now try runing the program
now try runing the program
mendel@jumping-quill:~$
mendel@jumping-quill:~$ sh birdfeeder/birdfeeder.sh
Loading /home/mendel/birdfeeder/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite with /home/mendel/birdfeeder/inat_bird_labels.txt labels.
Detected EdgeTPU dev board.

Steve Miller

I sold the dev board.  Mendel is just very unstable when you could just use the USB accelerator and get 90% of the functionality while being able to use raspbian.


What does using a const assertion after a const string declaration do?

Sorry for asking a question, tried both Stack Overflow and Discord but none worked.
What's the difference between:
const CONSTANT = 'VALUE';
const object = { property: CONSTANT };

and
const CONSTANT = 'VALUE' as const;
const object = { property: CONSTANT };

In both cases, the type of CONSTANT is inferred to be "VALUE" (instead of as string). However, only in the second case, the type of object is inferred to be:
{
    property: "VALUE";
}

Instead of as:
{
    property: string;
}

I'm wondering why this is the case, even though in both examples, the type of CONSTANT is inferred to be "VALUE".

Sorry for asking a question, tried both Stack Overflow

You asked only one hour ago. Have some patience.

The docs give an example like:
// Type '"hello"'
let x = "hello" as const;

In my case, it is:
// Type is already '"hello"' even without the const assertion.
const x = "hello";

I don't know how more I can clarify this question. I think it is very clear. Just read the first post again please.

Because you're using const. The example uses let.

It looks like this is a question rather than a bug report. This issue tracker is for tracking bugs and active work on TypeScript itself, rather than a general forum for programmers using TypeScript to get help or ask questions.
You can ask questions on sites like Stack Overflow. We are not able to provide one-on-one support on the issue tracker. Please read the issue template carefully - it has important information on what kinds of reports can be acted on here, as well as links to useful TypeScript resources. Thanks!


fixed: Name overflowing the available area

Details

Fixed Issues

$ #4622
Tests | QA Steps

Go to your Profile Page and edit your name so that is very lengthy.
Now open the setting page.
Name should be cropped with Ellipsis.

Tested On

[x] Web
[x] Mobile Web
[x] Desktop
[x] iOS
[x] Android

Screenshots

Web | Desktop

Mobile Web

iOS

Android

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

🚀 Deployed to staging by @deetergp in version: 1.0.85-10 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

This has been deployed to production and is now subject to a 7-day regression period.
If no regressions arise, payment will be issued on 2021-09-06.  :confetti_ball: