gcc12 complains about use-after-free

This line
seems to explicitly use a variable after freeing it. I'm not a C++ expert, but this is causing build failures in GCC 12.
Repro steps: clone this repo and follow the instructions in the Makefile
 build git:(main)  $ make
-- Copied demoData files
[  0%] Built target third-party
[  0%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/lattice/be2-poly-impl.cpp.o
[  0%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/lattice/be4-poly-impl.cpp.o
[  1%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/lattice/be6-poly-impl.cpp.o
[  1%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/lattice/benative-poly-impl.cpp.o
[  1%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/lattice/dgsampling.cpp.o
[  2%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/lattice/elemparamfactory.cpp.o
[  2%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/lattice/elemparams.cpp.o
[  2%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/lattice/field2n.cpp.o
[  3%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/lattice/hal/default/dcrtpoly-impl.cpp.o
In file included from /home/jkun/openfhe-development/src/core/include/math/discretegaussiangenerator.h:77,
                 from /home/jkun/openfhe-development/src/core/include/lattice/ilelement.h:42,
                 from /home/jkun/openfhe-development/src/core/include/lattice/hal/dcrtpoly-interface.h:52,
                 from /home/jkun/openfhe-development/src/core/include/lattice/hal/default/dcrtpoly.h:51,
                 from /home/jkun/openfhe-development/src/core/include/lattice/hal/default/lat-backend-default.h:39,
                 from /home/jkun/openfhe-development/src/core/include/lattice/lat-hal.h:42,
                 from /home/jkun/openfhe-development/src/core/lib/lattice/hal/default/dcrtpoly.cpp:39,
                 from /home/jkun/openfhe-development/src/core/lib/lattice/hal/default/dcrtpoly-impl.cpp:36:
/home/jkun/openfhe-development/src/core/include/math/distributiongenerator.h: In static member function ‘static lbcrypto::PRNG& lbcrypto::PseudoRandomNumberGenerator::GetPRNG()’:
/home/jkun/openfhe-development/src/core/include/math/distributiongenerator.h:132:26: error: pointer ‘mem’ used after ‘void free(void*)’ [-Werror=use-after-free]
  132 |                 uint32_t counter = reinterpret_cast<long long>(mem);  // NOLINT
      |                          ^~~~~~~
/home/jkun/openfhe-development/src/core/include/math/distributiongenerator.h:131:21: note: call to ‘void free(void*)’ here
  131 |                 free(mem);
      |                 ~~~~^~~~~
cc1plus: all warnings being treated as errors
make[2]: *** [src/core/CMakeFiles/coreobj.dir/build.make:188: src/core/CMakeFiles/coreobj.dir/lib/lattice/hal/default/dcrtpoly-impl.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:551: src/core/CMakeFiles/coreobj.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

$ gcc --version
gcc (Debian 12.1.0-8) 12.1.0

Ditto for deprecated-declarations, though adding the following compiler options allows OpenFHE to build fine.
-Wno-error=use-after-free -Wno-error=deprecated-declarations
Feel free to close if there is no plan to fix these warnings.

Hi @j2kun This bug has already been fixed in the dev branch: https://github.com/openfheorg/openfhe-development/tree/dev Please give a try. We are going to push from dev to main (release v0.9.3) later this week.

I do see another error for -Werror=deprecated-declarations
In file included from /home/jkun/openfhe-development/third-party/cereal/include/cereal/archives/json.hpp:62,
                 from /jkun/openfhe-development/src/core/include/utils/serial.h:65,
                 from /jkun/openfhe-development/src/core/unittest/UnitTestSerialize.cpp:49:
/jkun/openfhe-development/third-party/cereal/include/cereal/external/rapidjson/document.h:102:19: error: ‘template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator’ is deprecated [-Werror=deprecated-declarations]
  102 |     : public std::iterator<std::random_access_iterator_tag
      |                   ^~~~~~~~
In file included from /usr/include/c++/12/string:45,
                 from /usr/include/c++/12/bits/locale_classes.h:40,
                 from /usr/include/c++/12/bits/ios_base.h:41,
                 from /usr/include/c++/12/ios:42,
                 from /usr/include/c++/12/ostream:38,
                 from /usr/include/c++/12/iostream:39,
                 from /home/jkun/openfhe-development/src/core/unittest/UnitTestSerialize.cpp:36:
/usr/include/c++/12/bits/stl_iterator_base_types.h:127:34: note: declared here
  127 |     struct _GLIBCXX17_DEPRECATED iterator
      |                                  ^~~~~~~~
/home/jkun/openfhe-development/third-party/cereal/include/cereal/external/rapidjson/document.h:110:18: error: ‘template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator’ is deprecated [-Werror=deprecated-declarations]
  110 |     typedef std::iterator<std::random_access_iterator_tag,ValueType> BaseType;
      |                  ^~~~~~~~
/usr/include/c++/12/bits/stl_iterator_base_types.h:127:34: note: declared here
  127 |     struct _GLIBCXX17_DEPRECATED iterator
      |                                  ^~~~~~~~
cc1plus: all warnings being treated as errors

This one, I think, can be disabled?

Thank you for reporting this bug. Yes, we just became aware of this problem with g++12 and are working on fixing it.

@j2kun All fixes to the issues mentioned above have been merged in to the dev branch. Please confirm that you don't see any failures using the dev branch and I will close this ticket after that.
We will update the main branch with these fixes for the next release. Thank you

Works for me, thanks!


prefer-const fails on array destructurisation

Bug Report

TSLint version: 4.5.1
TypeScript version: 2.0.10
Running TSLint via: (pick one) CLI

TypeScript code being linted
let [a,b] = [1,2];
a++;

with tslint.json configuration:
"prefer-const": [true, {"destructuring": "all"}],

Actual behavior
lint fails cause b is never changed
Expected behavior
lint should not fail

That option was only added in v5+ https://github.com/palantir/tslint/commit/6b913e332f2acad11a1f1ac7d2a88ff4f4117348


add bundit link

add my github new link

@BunditSpace  try this year and make sure you follow and star the repo Happy hacking


feat: improve tailwind deployment flow

By moving folks from twind over to the tailwind plugin we have traded support questions about "how to get twind autocompletion working?" with "my styles are not showing up in automatic mode". The tailwind plugin has a hard requirement on having a build step. We have documented this at various places and have a guide on how to set everything up, but it's much better if we float those steps from Fresh itself when we detect this.
With this PR we will prepare a .github/workflows/deploy.yml file already where the user only needs to swap out the project name.
When Fresh is started in production mode, the tailwind plugin is active and no snapshot files were loaded, then we print a helpful hint to the console:
No pre-compiled tailwind styles found.

Did you forget to run "deno task build" prior to starting the production server?

When we are running inside Deno Deploy this PR goes one step further. Since it is the first time many users might use Deno Deploy we'll also show a simple page that shows how to finish the tailwind setup. I've intentionally tried to not present this as a warning but rather as a "finishing" step to avoid scaring users off. It's not the prettiest page, but it's good enough for now.

Fixes https://github.com/denoland/fresh/issues/2223

There're still complex steps. And maybe it violates https://deno.com/blog/you-dont-need-a-build-step which i think is a regress.

@liigo sounds like you'd enjoy the existing twind plugin more than the tailwind plugin. As communicated in past Fresh blog posts already a build step overall is necessary to have a fast site. The main goal now is to make that as smooth as possible from a UX perspective. Long term we're hoping to enhance the Deno Deploy platform to have run the build step there, so that user's don't need to configure anything. But there is no timeline on that yet.
For folks who dislike the build step I'd recommend staying with twind.


feat: added NewsItem component

resolves #63

For reference:

Please pull changes from #70 and the branch you've started for #64 into this PR so the changes can be evaluated as a whole.

This has been completed

I'm seeing errors when running npm run dev:
[Vue warn]: Invalid prop: type check failed for prop "date". Expected Date, got String with value "October 30, 2019".
[Vue warn]: Invalid prop: type check failed for prop "picture". Expected Object, got String with value "http://wecount.inclusivedesign.ca/wp-content/uploads/2019/10/walrus_talks.png".
[Vue warn]: Invalid prop: type check failed for prop "postList". Expected String with value "[object Object],[object Object]", got Array

Please address these issues.
Also, a few other notes:

I'd like you to review the use of the <article> tag. The layout you're using here nests two levels of <article>, which it shouldn't. Why? Which level should be changed to a different tag, and what should the tag be?
When I run the Validity Chrome Extension, I get an error related to your use of the <div> element within the <figure>, an error related to your use of the <time> element, and some errors related to <img> tags. Please install the extension and see if you can find ways to address these. You'll need to read up about <figure> and <time>.
Please turn on VoiceOver on your Mac and see what's read out when you tab through the links on the News & Views page. Can this be improved further?

Hey Ned,
I don't get those warning errors when I run npm run dev.
I looked into which correct tags I should use and figure seemed like the best fit for this use case. I also referenced multiple government of Canada pages and they use the same format. I would like to go over this tomorrow. In the meantime, I will address the issue with nested article> tags

I'm seeing errors when running npm run dev:
[Vue warn]: Invalid prop: type check failed for prop "date". Expected Date, got String with value "October 30, 2019".
[Vue warn]: Invalid prop: type check failed for prop "picture". Expected Object, got String with value "http://wecount.inclusivedesign.ca/wp-content/uploads/2019/10/walrus_talks.png".
[Vue warn]: Invalid prop: type check failed for prop "postList". Expected String with value "[object Object],[object Object]", got Array

Please address these issues.
Also, a few other notes:

I'd like you to review the use of the <article> tag. The layout you're using here nests two levels of <article>, which it shouldn't. Why? Which level should be changed to a different tag, and what should the tag be?
When I run the Validity Chrome Extension, I get an error related to your use of the <div> element within the <figure>, an error related to your use of the <time> element, and some errors related to <img> tags. Please install the extension and see if you can find ways to address these. You'll need to read up about <figure> and <time>.
Please turn on VoiceOver on your Mac and see what's read out when you tab through the links on the News & Views page. Can this be improved further?

Hey Ned,
I don't get those warning errors when I run npm run dev.
I looked into which correct tags I should use and figure seemed like the best fit for this use case. I also referenced multiple government of Canada pages and they use the same format. I would like to go over this tomorrow. In the meantime, I will address the issue with nested article> tags

@TeddTech these errors are showing up for me when I visit the news-and-views page.
Regarding the <figure> It looks like the issue is where you've placed the <figcaption> element. If you read the spec it says:

Content model:
Either: One figcaption element followed by flow content.
Or: Flow content followed by one figcaption element.
Or: Flow content.

As @greatislander mentioned, you should run the pages through a validator.

I'm seeing errors when running npm run dev:
[Vue warn]: Invalid prop: type check failed for prop "date". Expected Date, got String with value "October 30, 2019".
[Vue warn]: Invalid prop: type check failed for prop "picture". Expected Object, got String with value "http://wecount.inclusivedesign.ca/wp-content/uploads/2019/10/walrus_talks.png".
[Vue warn]: Invalid prop: type check failed for prop "postList". Expected String with value "[object Object],[object Object]", got Array

Please address these issues.
Also, a few other notes:

I'd like you to review the use of the <article> tag. The layout you're using here nests two levels of <article>, which it shouldn't. Why? Which level should be changed to a different tag, and what should the tag be?
When I run the Validity Chrome Extension, I get an error related to your use of the <div> element within the <figure>, an error related to your use of the <time> element, and some errors related to <img> tags. Please install the extension and see if you can find ways to address these. You'll need to read up about <figure> and <time>.
Please turn on VoiceOver on your Mac and see what's read out when you tab through the links on the News & Views page. Can this be improved further?

Hey Ned,
I don't get those warning errors when I run npm run dev.
I looked into which correct tags I should use and figure seemed like the best fit for this use case. I also referenced multiple government of Canada pages and they use the same format. I would like to go over this tomorrow. In the meantime, I will address the issue with nested article> tags

@TeddTech these errors are showing up for me when I visit the news-and-views page.
Regarding the <figure> It looks like the issue is where you've placed the <figcaption> element. If you read the spec it says:

Content model:
Either: One figcaption element followed by flow content.
Or: Flow content followed by one figcaption element.
Or: Flow content.

As @greatislander mentioned, you should run the pages through a validator.

I have refactored the figure tag in NewsItem component by taking the div tag outside it and placing it below

Hi @TeddTech, this looks great. One small change: I think it would be better to name the prop for the alt tag altTag or something like that for clarity.

I have completed this change

I noticed one other thing. Each <NewsItem> is wrapped in a <div> within the grid container. Any reason why you can’t use v:for directly on the <NewsItem> component?

That's what I originally attempted to do. It throws an error saying you are not allowed to use vue directives in the directed child tag of a template tag. Also, template tags can only have a single child tag. I will recreate the error and post it below.

I noticed one other thing. Each <NewsItem> is wrapped in a <div> within the grid container. Any reason why you can’t use v:for directly on the <NewsItem> component?

This is the error it gives if you do that
[vue/valid-template-root]
The template root disallows 'v-for' directives.


Missing deploy_settings.py

We're trying to set up BeaverDam on EC2 using Ansible, but missing deploy_settings.py file.

You can just create one and import * from settings, then add deploy settings as you see fit. If you want something basic just use your regular setting file.


How and why does this work?

Hi. I'm just curious to understand how it's possible that Twitch's back-end sends the stream video data to a user not subscribed to a channel. If this extension is able to retrieve such data, it means it gets sent from Twitch to the local user even though they're not subscribed to the channel. Doesn't this look like too much of an amateur mistake to make?
Can someone explain?
Thanks.

Read the code

Has it ever occurred to you that maybe one could not have enough time or competence to look through code and they're asking what is supposed to be a "community" about the project?

Here we go again. Good luck with that attitude.

I wish you good luck with yours.

Oh I see a great number of kind people there as well. Lovely.


STOR-867: Update ibm-vpc-block-csi-driver to the latest release

STOR-867: Update ibm-vpc-block-csi-driver to the latest release
https://issues.redhat.com/browse/STOR-867

Golang Update
DCO fix
update to 1.18.3
remove binary
Update lint version

https://github.com/IBM/vpc-node-label-updater/compare/v4.1.7...dobsonj:rebase-v4.1.7
/cc @openshift/storage

level=error msg=OAuthServerDeploymentDegraded: waiting for the oauth-openshift route to contain an admitted ingress: no admitted ingress for route oauth-openshift in namespace openshift-authentication

and ibm-vpc-block-csi-controller-7cbbf5498-k9jwj failed to start because the worker nodes never joined the cluster.
"0/3 nodes are available: 3 node(s) had untolerated taint {node-role.kubernetes.io/master: }. preemption: 0/3 nodes are available: 3 Preemption is not helpful for scheduling."

/restart

/retest

/lgtm

/label docs-approved
/label px-approved
We don't document / announce CSI driver version bumps to customers.

Regression test is passed

/label qe-approved


Sportmode On

Description
As a user I want the car to be able to drive fast from the start so that the speed does not increase or decrease gradually.
Acceptance Criteria

The car will reaches maximum speed in 2 seconds
The car is faster than it is when sportmode is off

Edited the milestone so that both the on and off mode were available instead of making two different milestones.


Fuzzy string matching on resources

In V1, we can search for Pokémon via name:
HTTP GET /api/v1/pokemon/mew

This would be nice to have on other resources like types, moves, et cetera, in the V2 api

👍🏻

Taken care of in pull request #53. If a resource has a "name" attribute then it can be used in the path rather than the id/pk

I'm sorry for reliving this issue, but is it possible to do what the author talked about? Today, trying parcial names like https://pokeapi.co/api/v2/pokemon/pika/ returns me nothing. Could it be implemented? Or any direction in how to do it?

The best implementation would be on the client side, with a list of all the pokemon and thus searching there

I have a sort of spell check in my pypoke repo. It's not automcompleted yet
but you could add it. It uses a list of Pokémon but it is only good up to 3
characters off.
On Tue, Apr 10, 2018, 00:30 Alessandro Pezzè<EMAIL_ADDRESS>wrote:

The best implementation would be on the client side, with a list of all
the pokemon and thus searching there
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/PokeAPI/pokeapi/issues/18#issuecomment-379978709, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ARya1ZQ4ImlGG4_wkEanEWKZ8Q2XDz4dks5tnENugaJpZM4DE1k7
.

I do believe normalizing it via frontend and then doing that could do the trick. Thanks for answering!

On 10 Apr 2018, at 00:30, Alessandro Pezzè<EMAIL_ADDRESS>wrote:
The best implementation would be on the client side, with a list of all the pokemon and thus searching there
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/PokeAPI/pokeapi/issues/18#issuecomment-379978709, or mute the thread https://github.com/notifications/unsubscribe-auth/AAFWTzx4l-ag9WVXGH63DBrNbm0pVcjPks5tnENugaJpZM4DE1k7.

Because also if you fuzzy search on the front-end it will be much quicker!


Memory issues and previews?

Before anything else - this is a fantastic project!!
I've read through some previous advice re: memory usage and I'm using a 980ti (6GB VRAM) but am also battling image size limits. Using Adam and cudnn I am able to get up to a 1200px image just within my limit, but as you noted, the default Adam settings produce a noticeably inferior output. I've actually yet to find settings that sit as well (any suggestions?).
This brings up two different issues: 1. How can we work towards larger output - and possibly 2. how can we go about having a bit more visual feedback for the myriad of settings.
In terms of memory is there anything else that could be done short of buying a TitanX? Correct me if I'm wrong, but multi-GPU usage is also not supported (so I couldn't add a card, right?). Any other ideas? Any possibility of using a combined GPU/CPU mode or something along those lines?
As to the issue of having some visual feedback, I am finding myself very often running "quick" proofs using just a few iterations at a very small size (256). There are so many options to consider that I'm stabbing in the dark a bit I feel. Anyway, my suggestion (or perhaps something I should just figure out how to do myself) is to write a preview mode that perhaps does 8 small thumbnails using a variety of options that can be presented and looked through to find optimal settings. What do you think?
Thanks again for sharing this wonderful project!

Another way to produce larger outputs would be to swap the VGG-19 network for something smaller, like AlexNet or CaffeNet which are both available in the Caffe model zoo and are already supported in neural-style. I did some preliminary experiments with CaffeNet, and it indeed ran much faster and used much less memory, but my results were a lot worse than VGG-19 so I've left that as the default.
CPU + GPU is probably not going to help; the CPU will be much slower than the GPU, and frequent communication between the CPU and GPU will slow everything to a crawl.
You are correct that multi-GPU is not currently supported, and would be tricky to add. For deep learning models there are two basic ways to handle multi-GPU: either data parallelism, where you split your minibatches across GPUs for each step, or model parallelism where you compute different parts of the same model on different GPUs. Data parallelism is easier implement in general, but doesn't apply for neural-style since we only have a single datapoint that we pass through the model. Model parallelism would be possible, and could be implemented using fbcunn, but I've never used it so I don't know how easy it is to use. I'm also hesitant to pull in fbcunn as a dependency, because it will transitively pull in a lot of other dependencies and make the whole project a lot harder to install.
For visual feedback, I'm not sure that your idea will work. The same parameters (content weight, etc) tend to give different results for different image sizes, so you really need to test parameters at the size you want to render. You can change the -save_iter to save intermediate results more frequently; that might help experimentation. At larger image sizes you really get bitten, because the correct parameters will be different than for smaller image sizes, each iteration takes longer, and you need a good number of iterations (at least 100) to get a sense of what it's going to look like.

Thanks for your prompt response. I guess there's no free lunch today. :)
How large an image are you able to get out of the Titan card?

With ADAM and cuDNN I can generate 1387x1850 on the Titan X, but due to all the same problems you are encountering I haven't gotten anything that actually looks good at that resolution.
Currently I'm also driving my monitor off the Titan X, and compiz / X server are taking up about 900MB of memory; if I were to run the display off a different GPU and devote the entire Titan X to neural-style I could generate an image that was a bit bigger.

Thanks for that.
Have you noticed (when using ADAM) that there is a bit of a repeating odd/even pattern when viewing iterations... one seems to add small details, the next takes them away?  It's interesting to see the process happening. I find that I like the smoothness of the default better - but using ADAM seems to sometimes offer a superior overall luminance.

That may have to do with the TV regularization; you can try adjusting the -tv_weight parameter to change it; larger values will be more smooth and smaller values will be less smooth.
Currently the TV regularization is L2; on my TODO list is to add L1 TV regularization, which might give nicer results.

I was playing with HD images tonight, and made this one at 1920x1010:

It took around an hour to run on the Titan X.
 But this is still the best I have done so far at high resolution.

Very interesting. Thanks for that. Do you find using ADAM with the VGG-19 superior to using LBFGS with a smaller model?

I didn't spend too much time playing with smaller models, but even at low image sizes I was not happy with the results of L-BFGS with CaffeNet.

Can I ask you about how to get the alexnet/caffenet or VGG normalized models working?
I'm able to get the normalized model running, but the output is a solid color.
I did also pull down the other models, but am not able to pass them without error messages.

If you get a solid color, your TV regularization is probably too high. Try setting -tv_weight to a smaller value.
If you want to use a model other than VGG-19 or the normalized network, you'll need to use the -proto_file flag to specify the .prototxt file and the -model_file flag to specify the .caffemodel file. The names of the layers will differ from network to network, so you'll also have to use the -content_layers and -style_layers flags to specify which layers from the network you want to use for content and style reconstruction respectively. You can find the names of the layers by looking at the .prototxt file; for example with CaffeNet you may want something like -content_layers relu1,relu2,relu3,relu4 and -style_layers relu4. I'm not sure which layers will work best for other networks, so that is something you should experiment with.

@dxmachina  Hmmm, seems like an interesting challenge. I reckon it's always possible to find some way of training on arbitrarily-sized images, but it might be incredibly slow.  But it sounds like your priority right now is generating images, even if more slowly, rather than having super fast, but cannot generate really large images.  How slowly would you tolerate if there was a way of getting larger images?  I know zilch about this specific project, but I assume all the memory is going into the im2col unwrapping in the convolutions (Justin, is this a fair assumption?), so convolution kernels that dont unwrap will be able to handle larger images, but they might be significantly slower, eg 20-100 times.

@hughperkins There are quite a few things that eat up memory in this project :)
I haven't profiled it, but this is my guess as to what uses memory:
(1) im2col unwrapping, as you mentioned; however this only applies when using nn.SpatialConvolutionMM for convolutions. cuDNN does not use im2col for convolutions, which is why the cudnn backend saves a ton of memory. Of course, you can't use cuDNN on CPU or with OpenCL.
(2) Gradient history for L-BFGS. The L-BFGS algorithm builds up an approximation to the Hessian by storing a history of recent points and gradients; this uses quite a bit of auxiliary memory. Using ADAM rather than L-BFGS for optimization eliminates this, but adds more hyperparameters that need to be tweaked.
(3) VGG-19 activations and gradients. This is the big one. The convolutional part of VGG-19 that we use is comprised entirely of 3x3 convolutions stride 1, 2x2 pooling stride 2, and ReLUs. The architecture for the layers we use is c64-c64-pool-c128-c128-pool-c256-c256-c256-c256-pool-c512-c512-c512-c512-pool-c512. By my calculations, just storing the activations and gradients for all these layers for a 1920x1080 input takes about 5GB of memory. Getting around this is pretty tough.
To be honest I hadn't actually computed how much memory the VGG activations and gradients were taking before just now, and 5GB seems small. When actually running a 1920x1080 image, I see memory usage over 10GB. I wonder where my other 5GB are going?

cuDNN does not use im2col for convolutions,

Interesting.  That's new information for me.  Will ponder this :-)

By my calculations, just storing the activations and gradients for all these layers for a 1920x1080 input takes about 5GB of memory.

Hmmm, right, good point.  Each layer uses about 1920 * 1280 * 4 * 64 / 1024 / 1024 = 500MB; and there are 13 layers.

I see memory usage over 10GB. I wonder where my other 5GB are going?

I guess 5GB forwards, for the output tensors, and 5MB backwards, for the gradInput tensors?
You could plausibly reduce memory footprint in the backwards pass, by removing the gradInputtensors, as you move down the layers, at the expense of needing to reallocate them each time.  I think the reallocation expense might not be terribly high, so could be worth trying.

Will fbcunn be a lot faster and enable parallel processing? I am very eager for high quality, high resolution images. Thanks again so much!

The convolution implementation in fbcunn probably won't be faster than the one from cuDNN, since VGG-19 uses 3x3 kernels and the FFT-based convolution used by fbcunn only has a speed advantage for large kernels.
However it is possible that the nn.ModelParallel module from fbcunn could allow for higher resolution outputs by distributing the work across multiple GPUs.

@hughperkins Yes, dealing with larger image sizes is definitely one goal of mine. But overall just finding a way to start to use these technologies in existing photographic and/or artistic workflows. The "black-box" nature of deep learning can make this difficult - but I am enjoying the tweak-ability of this implementation.
The major areas of interest to me are:

Producing image sizes 2K and hopefully higher someday

Exerting more deterministic artistic control over the models

Exploring animation

It does sound like a large challenge given the enormous memory usage - but I have to believe there's some feasible solution. The trade-off may be waiting time - which is why I'm curious about getting some kind of telling preview before committing to a long process.
Love reading everyone's thoughts and trying to catch up a bit on the science.

Maybe a dumb idea- but given the speed of PCIe lanes and SSDs/Memory - would it not be possible to swap data periodically?

@dxmachina It would be possible to swap data out into system memory / disk, but that will be REALLY slow. The problem isn't memory bandwidth so much as latency - copying data from CPU to GPU requires synchronization between host and device, which is slow. As implemented now, we copy data to the device once at the beginning, and during optimization we don't need to copy anything between host and device. If you wanted to save GPU memory by swapping activations and gradients into main memory, you'd end up with multiple host / device synchronizations per optimization step, which would slow everything down quite a bit.
Not to mention that implementing such a strategy would probably be pretty hairy - the built in torch containers don't support that sort of thing, so we'd have to implement it ourselves.

@hughperkins If you're interested, there's a paper that discusses cuDNN's implementation of convolutions here: http://arxiv.org/abs/1410.0759

Any thoughts regarding this: http://petewarden.com/2015/05/23/why-are-eight-bits-enough-for-deep-neural-networks/

Hi Justin @jcjohnson  I was thinking the following possible simple fix - let me know if you think that might work.
If we created a new input -init_image that can be used to specify the start image (so adding to -init: Method for generating the generated image; one of random or image) a way to start with a specific image to continue with (we loose the gradients but create a way to seed the starting point).
Then we could write a script that chops up an initial input into let's say 4x the input (using imagemagic). We run the neural-style on each each of the 4 parts on GPU for 2000 interactions (using -style_scale 0.5). Then we can glue the 4 pieces together and run may 200 iterations on CPU for the full size to correct the edges.
What do you think?

@jjurg I've been going along that path, but haven't tried to apply more iterations to the stitched image. Did you?

Just out of curiosity, why does adam produce worse results than lbfgs?  They're both hunting for a local minimum right?


Expose versioned query parameters and make watch an operation on List

Sub-resources are needed to properly secure proxying to the node (as per agreement in authz discussions), because we need to tie "resource" and "verb" to an action.  The /proxy endpoint is too open to give to anyone but cluster admins.  As part of https://github.com/GoogleCloudPlatform/kubernetes/issues/3481 and the general "bastioning" of the API server, we want to introduce new sub resources that allow specific, typed access to a backend.  Examples:

Proxy to a pod's port: /pods/foo/proxy/5000/some/resource
Proxy to a service's port: /services/foo/proxy/5000/some/resource/path
Expose logs for a pod: /pods/foo/logs?container=test -> returns "text/plain" stream
Expose logs for a resource backed by a pod /jobs/foo/logs ->
Parameterize pod logs with query options: /pods/foo/logs?container=test&since=30s
Handle remote execution: /pods/foo/exec?container=test&cmd=/bin/bash&arg=-c&arg=echo+$foo -> upgrades connection to SPDY/HTTP2
Handle portforwarding: /pods/foo/portforward/5000?container=test
Allow binaries to be posted to an endpoint (with a given type) and converted by RESTStorage or apiserver into the underlying object - essentially hand off the request body to storage.

This requires three pieces of function:

Allow query parameters to be properly versioned across a set of distinct resources and verbs
Return an input stream from a RESTStorage Get or Post call
Upgrade an HTTP connection to a higher protocol (exec) or hijack it (port forward) or use it to proxy other requests (proxy)

Ideally we would also ensure we have methods that allow proper introspection through swagger

Handle content type negotiation when returning an input stream
Annotate request parameters with metadata for query params

This pull request will contain the changes to enable that functionality through a set of targeted refactors.  @csrwng @lavalamp @bgrant0607 @liggitt

A bunch of these commits are in other pulls, only the last few are specific.

I just have to ref. #3652. :-)

This pull request now changes watch from being a separate resource (although it's still exposed for legacy purposes) to GET /api/v1beta1/pods?watch=true&resourceVersion=10.  I will change the v1beta3 clients to handle this behavior.

I'm basically ok with the changes in this PR so far.
I'm also 100% on board with the shift towards subresources as opposed to API prefixes, and am more or less ok with the proposed API paths.
The difference between proxy and portforward is http vs. tcp? Why does portforward need a container name and not just a port? Do you also intend to support fd forwarding, for stdin/stdout/stderr (aka attach - #1521)?
I'd like to see an /endpoints subresource on services, pods, and nodes, and perhaps even on replication controllers. I could see proxy, etc. building upon that functionality.
An argument could be made that we should put the container name in the path, such as /pods/foo/containers/test/logs. Container subresources have been proposed before -- #1900. We don't necessarily need to allow mutation via that path right now, however.
We could similarly put ports in the path: /pods/foo/ports/5000.
Not directly related to this PR, but for proxy, we'll need to resolve the problems mentioned in #4440 at some point. The rewriting performed by the golang library only works for links within the same server, but not for links to other intra-cluster resources.

The difference between proxy and portforward is http vs. tcp?

Yes I think so

Why does portforward need a container name and not just a port?

Good point, port is sufficient

Do you also intend to support fd forwarding, for stdin/stdout/stderr (aka attach - #1521)?

Exec does.  One problem with all "upgrade" endpoints is that you have to full represent your request via query parameters or request headers, or you have to introduce custom client framing into the connection establishment protocol.  It was non-obvious what the best solution was (an example is passing a remote exec that has a massive argument list - 64kb or more, which exceeds the amount of data you'll be able to send via headers even in http2).

An argument could be made that we should put the container name in the path, such as /pods/foo/containers/test/logs. Container subresources have been proposed before -- #1900. We don't necessarily need to allow mutation via that path right now, however.

It should be possible in api_installer to extract the subpath for a sub resource (below it) and pass that into the sub resource.  Just hadn't hit the use case yet.

Comments addressed, ptal

poke :)

LGTM.
(Sorry, was OOO yesterday).
Needs to be rebased, unfortunately.

Travis was a flake.

Merging.


The DHT contains dialing ports

When we successfully connect to a node, we add the address of that node to the topology. However we add the TCP dialing port, which doesn't make sense in this context.

Fixed in #742


Refactor tvl on backend

Resolves L2B-2817
Important ENV change
ERROR_ON_UNSYNCED_DETAILED_TVL -> ERROR_ON_UNSYNCED_TVL
Summary

🤖 Generated by Copilot at 9f477a9
This pull request refactors the TVL API to remove the distinction between detailed and aggregated TVL data, and to add new features such as grouping, filtering, and breakdown of assets by value type. It renames and updates several types, functions, modules, and files to reflect the new TVL API structure and logic. It also removes unused code and simplifies the configuration and testing of the TVL API.
Walkthrough

🤖 Generated by Copilot at 9f477a9

Refactor TVL API to support new features and endpoints (link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link)
Rename and update functions and types to avoid confusion and reflect new logic (link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link,link)
Add new functions and types to handle new endpoints and aggregation logic (link,link,link,link,link,link,link,link,link,link,link)
Update existing functions and types to use new report types and grouping structures from tvl module (link,link,link)
Move getDataTimings function to a separate file and reuse it in other controllers (link)
Delete DetailedTvlController class and related functions and types, as they are no longer needed (link,link,link,link,link,link,link,link,link,link,link,link)
Delete placeholder API data, as it is no longer needed (link,link)
Move createTvlRouter function from TvlRouter module to TvlController module (link,link,link,link)
Rename generateTvlApiResponse.ts file to TvlController.ts, as it now contains more functions related to the TVL API controller logic (link)
Rename detailedTvl.test.ts file to tvl.test.ts, as it now contains tests for the new tvl module functions (link)
Move router.get('/api/tvl') route to the top of the createTvlRouter function, as it is the main endpoint for the TVL API (link)
Update variable names to match new function names and return types (link,link)

The distinction between detailed TVL and TVL is needed on frontend side.

tbh I would get rid of the detailed everywhere, and treat the detailed as new TVL, for the frontend maybe we can introduce a "summary" distinction


Broken link in README.md

Link https://github.com/aws-samples/meta-aws-demos/blob/master/raspberry_pi4/aws-iot-greengrass-v2/README.md in README.md is broken

I think this is fixed with the README rework.  Hopefully.


Add key features

Based on our discussion here, I finally added some Emacs Lisp key features. I borrowed heavily from Clojure, Racket, and Scheme, and added some extra information from Wikipedia.

@ErikSchierboom My bad, I didn't realize there was a limit. I'll remove one.

Thanks!


Unable to generate dynamic library

I cloned this repository. After performing the steps to integrate the project with Xcode and generating the bridge bindings as described in the documentation, I encountered an issue when running the application on macOS. The error message suggests a problem loading the dynamic library 'libflutter_rust_bridge_example.so.'
Steps to Reproduce:

Clone the repository: https://github.com/fzyzcjy/flutter_rust_bridge/tree/master/frb_example/with_flutter

Integrate the project with Xcode following the steps outlined in https://cjycode.com/flutter_rust_bridge/integrate/ios_linking.html.

Generate the bridge bindings using the just _generate_bridge_with_flutter command.

Run the application on macOS.

Expected Behavior:
I expected the application to run successfully on macOS after the integration and bridge binding generation.
Actual Behavior:
Upon running the application on macOS, I encountered the following error message:
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Invalid argument(s): Failed to load dynamic library 'libflutter_rust_bridge_example.so': dlopen(libflutter_rust_bridge_example.so, 0x0001): tried: 'libflutter_rust_bridge_example.so' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlibflutter_rust_bridge_example.so' (no such file), '/Users/rebo/Desktop/flutter_rust_bridge/frb_example/with_flutter/build/macos/Build/Products/Debug/with_flutter.app/Contents/Frameworks/FlutterMacOS.framework/Versions/A/./libflutter_rust_bridge_example.so' (no such file), '/Users/rebo/Desktop/flutter_rust_bridge/frb_example/with_flutter/build/macos/Build/Products/Debug/with_flutter.app/Contents/Frameworks/FlutterMacOS.framework/Versions/A/../../../libflutter_rust_bridge_example.so' (no such file), '/Users/rebo/Desktop/flutter_rust_bridge/frb_example/with_flutter/build/macos/Build/Products/Debug/with_flutter.app/Contents/Frameworks/libflutter_rust_bridge_example.so' (no such file), '/Users/rebo/Desktop/flutter_rust_bridge/frb_example/with_flutter/build/macos/Build/Products/Debug/with_flutter.app/Contents/MacOS/Frameworks/libflutter_rust_bridge_example.so' (no such file), '/Users/rebo/Desktop/flutter_rust_bridge/frb_example/with_flutter/build/macos/Build/Products/Debug/with_flutter.app/Contents/Frameworks/libflutter_rust_bridge_example.so' (no such file), '/usr/lib/libflutter_rust_bridge_example.so' (no such file, not in dyld cache), 'libflutter_rust_bridge_example.so' (no such file), '/usr/local/lib/libflutter_rust_bridge_example.so' (no such file), '/usr/lib/libflutter_rust_bridge_example.so' (no such file, not in dyld cache)

Codegen logs with RUST_LOG=debug environment variable
no needed

To Reproduce
No response
Expected behavior
No response
Generated binding code
No response
OS
MacOS
Version of flutter_rust_bridge_codegen
No response
Flutter info
Flutter (Channel stable, 3.13.6, on macOS 13.4.1 22F770820d darwin-arm64,
    locale en-US)
    • Flutter version 3.13.6 on channel stable at
      /Users/rebo/fvm/versions/stable
    • Upstream repository git@github.com:flutter/flutter.git
    • Framework revision ead455963c (2 weeks ago), 2023-09-26 18:28:17 -0700
    • Engine revision a794cf2681
    • Dart version 3.1.3
    • DevTools version 2.25.0

[!] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at /Users/rebo/Library/Android/sdk
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for
      more details.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14E300c
    • CocoaPods version 1.12.1

[✓] Chrome - develop for the web
    • CHROME_EXECUTABLE = /Applications/Google Chrome.app/Contents/MacOS/Google
      Chrome

[✓] Android Studio (version 2022.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      17.0.6+0-17.0.6b802.4-9586694)

[✓] IntelliJ IDEA Community Edition (version 2023.2.2)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 75.1.4
    • Dart plugin version 232.9559.10

[✓] VS Code (version 1.83.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension can be installed from:
      🔨 https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-arm64   • macOS 13.4.1 22F770820d
      darwin-arm64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 117.0.5938.149

[✓] Network resources
    • All expected network resources are available.

Version of clang++
No response
Version of ffigen
No response
Additional context
No response

On macOS libflutter_rust_bridge_example.dylib should be loaded instead of libflutter_rust_bridge_example.so, which may be the reason.

Hi, could you please check whether the files (dylib or so) is already there?

Hi @fzyzcjy
Inside the build folder contain only dylib
../flutter_rust_bridge/frb_example/with_flutter/build/macos/Build/Products/Debug/flutter_rust_bridge_example.dylib.

Hmm, could you please try https://github.com/Desdaemon/flutter_rust_bridge_template and see whether it works

I've discovered that the Flutter application on macOS runs in a sandboxed environment, which means that you can't access dynamic libraries from just anywhere on your system, except from specific locations or bundle it in your app.
Even if I have access to the full system, the ffi.dart unable to find dynamic library.
For development purposes, I've removed the app sandbox capability and updated the ffi.dart file as follows:
const base = 'flutter_rust_bridge_example';
final path = Platform.isWindows ? '$base.dll' : 'lib$base.so';
//late final dylib = loadLibForFlutter('/Desktop/flutter_rust_bridge/frb_example/with_flutter/build/macos/Build/Products/Debug/flutter_rust_bridge_example.dylib');
late final api = FlutterRustBridgeExampleImpl(dylib);

this work but I can't generate .so library


Improve video device selection flexibility and add DRM/KMS and SDL2 backend support

Introduce LV_VIDEO_CARD variable to let users specify different video device via environment variable, instead of recompiling the demo. Add DRM/KMS and SDL2 backend support, so users can test different backends.
In order to build the SDL2 backend, the lvgl submodule has to be rolled forward to newer commit ID, add commit which does that.

Can we make it more dynamic by parsing the content of LV_VIDEO_CARD? If it contains fb, it's a frame buffer device, if it contains dri it's  DRM, else it's SDL. For more explicit selection we can use an other environment variable, like LV_VIDEO_CARD_TYPE.
I'm not sure the "video card" is the best name here. What about LV_DISPLAY_DEVICE_NAME and LV_DISPLAY_DEVICE_TYPE?

Can we make it more dynamic by parsing the content of LV_VIDEO_CARD? If it contains fb, it's a frame buffer device, if it contains dri it's DRM, else it's SDL.

I think there are two questions here (and pardon my ignorance, I am not that deep in LVGL):

Is it allowed to build LVGL with multiple backends at the same time (multiple of { fbdev, drm, sdl } )?
If the answer to previous question is yes, should this be supported by this example code ?

For more explicit selection we can use an other environment variable, like LV_VIDEO_CARD_TYPE.

I updated the current patchset to use separate environment variables for each backend, that is probably better.

I'm not sure the "video card" is the best name here. What about LV_DISPLAY_DEVICE_NAME and LV_DISPLAY_DEVICE_TYPE?

For DRM it is card (see https://www.kernel.org/doc/html/latest/gpu/drm-uapi.html#render-nodes ), for fbdev I am not aware of specific term, so I would say, device node (see mknod(1)). SDL environment variables are out of scope of this discussion.

Is it allowed to build LVGL with multiple backends at the same time (multiple of { fbdev, drm, sdl } )?

Absolutely yes. However the required libs needs to be installed to compile succesfully.

Is it allowed to build LVGL with multiple backends at the same time (multiple of { fbdev, drm, sdl } )?

Absolutely yes. However the required libs needs to be installed to compile succesfully.

should this be supported by this example code ?
In fact, what is your take on the current state of this patchset ?

In fact, what is your take on the current state of this patchset ?

I can't clearly see the use case that we are about to solve. When does it happen that you havea single compiled image that you use in so different environments?

In fact, what is your take on the current state of this patchset ?

I can't clearly see the use case that we are about to solve. When does it happen that you havea single compiled image that you use in so different environments?

I don't have such a use case. For me it is sufficient to define which backend to use at build time.

Is selecting the display device (e.g. /dev/fb0) still important?

Is selecting the display device (e.g. /dev/fb0) still important?

There are systems with multiple outputs, e.g. MX8M Plus has DSI/LVDS/HDMI outputs, each on separate CRTC, which would also each get allocated a separate /dev/fbN device node.

I see. What if we do something like this:
const char * dev = "/dev/fb0"
if(argc > 0) dev = argv[1];
lv_linux_fbdev_set_file(disp, dev);

I think we can leave this project for fb dev only as it's trivial to change it support DRM or SDL. Mentioning it in the comments or in the README could be useful though.

I see. What if we do something like this:
const char * dev = "/dev/fb0"
if(argc > 0) dev = argv[1];
lv_linux_fbdev_set_file(disp, dev);

I think we can leave this project for fb dev only as it's trivial to change it support DRM or SDL. Mentioning it in the comments or in the README could be useful though.

Sorry for the late reply.
fbdev and its emulation is long deprecated in favor of DRM/KMS, so the DRM/KMS backend is far more interesting on Linux. The SDL backend is nice to have for GPU access, since SDL can set up the GL context. I think DRM/KMS and SDL are the more important backends on Linux.
What about renaming the repository to plain lv_port_linux and then cover all the output options ? I think github does create backward compatibility repo url alias, so the rename should be harmless.

What about renaming the repository to plain lv_port_linux and then cover all the output options ?

Good idea! On embedded /dev/fb is still widely used, but as long we support all, I'm happy.

I think github does create backward compatibility repo url alias, so the rename should be harmless.

Yes, it does. No problem with renaming.
However I'm afraid we are over-complicating the problem. In the end it's an example project. If we add too many logic we beat the purpose of having a simple code which is easy to understand and modify.
So what I would do is:

rename the repo to lv_port_linux
explain in comments how to use other drivers
explain in the README how to use other drivers

About this part:

* explain in the README how to use other drivers

Wouldn't that be effectively turning README into main.c , except without the compile coverage, so the examples there would bitrot over time ?
My hope is that with the ifdefs , the different driver use examples are clearly marked in the code , so that hopefully shouldn't confuse people. This is how it looks in the end -- https://github.com/marex/lv_port_linux_frame_buffer/blob/example_drm_kms_sdl2/main.c#L12 .

I think it's a good compromise! Let's go for it!

I think it's a good compromise! Let's go for it!

So uh ... what changes should I do here ?

Sorry for the late reply. So I suggest this:

Add this in main.c
Update the README with telling we support multiple Linux drivers
I'll rename the repo once the PR is merged.

Do you agree?

Sorry for the late reply. So I suggest this:
* Add [this](https://github.com/marex/lv_port_linux_frame_buffer/blob/example_drm_kms_sdl2/main.c#L12) in `main.c`

This part is already in place, you can see the result here https://github.com/marex/lv_port_linux_frame_buffer/tree/example_drm_kms_sdl2 and specifically https://github.com/marex/lv_port_linux_frame_buffer/blob/example_drm_kms_sdl2/main.c ). Is that what you want implemented or did I misunderstand ?

* Update the README with telling we support multiple Linux drivers

Done, you can see that in the first push from today, the second push is just tab indent fixup. See https://github.com/lvgl/lv_port_linux_frame_buffer/compare/57d8cff35d8f21fc760f00744fd5720d6b1d9087..47ba151551172c2a1816be32cbf8ff10ee4bbfc1 .

* I'll rename the repo once the PR is merged.

Please give it a once over and see if it still works for you too on your hardware. I can test it locally on MX8M and STM32MP, but another independent test would be nice.

Do you agree?

I do, thank you.

Thank you, really everything were here. I don't know what I was watching :sweat_smile:
I've tested it on my Linux notebook with SDL and needed to add 2 includes. Without these it was crashing. I guess getenv's return value was truncated to 32 bit.
Now all good, merging! I'm doing the rename too.

Thank you, really everything were here. I don't know what I was watching 😅

No worries.

I've tested it on my Linux notebook with SDL and needed to add 2 includes. Without these it was crashing. I guess getenv's return value was truncated to 32 bit.

The getenv(3) returns char * , atoi(3) takes char * and returns integer . That shouldn't overflow on x86 or amd64, unless your laptop resolution is enormous.
But including stdlib.h is definitely valid for both getenv() and atoi()  according to manpage.
Did the crash go away when you included the missing headers ?

Now all good, merging! I'm doing the rename too.

Thank you

The getenv(3) returns char * , atoi(3) takes char * and returns integer . That shouldn't overflow on x86 or amd64, unless your laptop resolution is enormous.

The problem is that when a function doesn't have a prototype even on 64 bit systems 32 bit return value is assumed. So let's say getenv returned 0x112233445667788 (an address), but as it was truncated to 32 bit only 0x1122334400000000 arrived. I don't know what the exact standard is behind it but I've already experienced this issue many times.

FYI, I opened a PR to mention this project as a simulator project
https://github.com/lvgl/lvgl/pull/6205

FYI, I opened a PR to mention this project as a simulator project lvgl/lvgl#6205

Recently, I was wondering, wouldn't it make even more sense to put the main.c from this repository into main lvgl repository demos/ subdirectory , and deprecate this repository altogether ?

I was thinking about something similar too. We have/can have support for these hardware/platform related things:

Display drivers: display controllers (e.g. ILI9341), DRM, Native windows, etc
LCD controller support (drive a display with HSYNC/VSYNC + RGB data): e.g. Renesas's GLCDC periphery
GPU support (speed up rendering): VG-Lite, Dave2D, SDL, OpenGL
Ready to use projects: like this one, but the same for development boards.

1, 2, and 3 are already supported, and now we are talking about 4. So the question is how to support full projects. In a project typically we have:

main.c
lv_conf.h
IDE/build system config files (Eclipse, VSCode, CMake, etc)

If we added e.g. a Linux project configured for Eclipse, VSCode, and CMake the user could download LVGL and open a project from e.g. lvgl/projects/linux. It could work, but it's a little bit strange to me. A library like LVGL should be part of a project and not the root folder of a project. I'm also afraid that adding e.g. 5 full NXP MCUXpreso projects (~200 MB each) will bloat LVGL (already 1GB).


Instructions unclear / not understanding

At the last step in creating a Jitstreamer server and Step 4 indicates: To pair your device, run the "pair" binary in JitStreamer/target/release/ folder with the argument -t (your computer TailScale IP)
Im not sure how to find the Pair binary, i probably just dont understand some things but some help would be greatly appreciated!

how you builded it


Add UI test

Ubuntu check fails, might want to ask in the forum for this

I like your idea. I will go ask in the forum


What is the difference between nGPT.py and nTransformers.py

What is the difference between nGPT.py and nTransformers.py？ And are they from two different papers? Thank you very much

@ghgmail nTransformer is just nGPT without the embedding and logit projection, a stack of attention and feedforwards


Create a lint rule for Subject next

Problem
Currently, the typings on Subject next are incorrect. They allow for optional arguments even when the subject itself not a Subject<void>. This is a holdover from when RxJS was first developed against TS, during which time is was unergonomic for developers to have to call subject.next(undefined) on Subject<void>. In particular for Angular developers, who use EventEmitter which inherits directly from Subject.
We tried to correct the types for v7, however, the change caused way too much breakage, particularly in Angular apps. So we decided to revert the change for v7 and we would instead
create a lint rule during v7 that would help users migrate their code to the appropriate types rather than just breaking their builds.
One problem is that any fix that is done here may cause additional issues.
There's the "tight" fix, where we simply add void to the types for the Subject. But the problem there is it may break consuming code that are not expecting void (even thought they should be).
There's also the "loose" fix, where we fix identified issues with any. The problem there being that we break type safety downstream in the name of preparing to fix the types.
Odds are that the loose fix is the appropriate thing to do.. I say this because what will happen is the lint rule will fail for some people, and they will do the appropriate fix, but for other people with larger code bases, they will be able to opt in to the "loose" fix and just move on, circling back to fix their code later.
Task

Create a lint rule that will identify TypeScript usage of Subject where next() is called without an argument, but the Subject type does not include void.
Create a fix for the lint rule that will correct the types of the Subject in question.
Work with important teams, such as the Angular team, to identify the appropriate change for the fix.

Incorrect:
class Foo { foo = 'test';  };

const s = new Subject<Foo>();
s.next(); // Error should be here.
s.next(new Foo());

Fixed (loose):
const s = new Subject<any>();
s.next(); // No error
s.next(new Foo());

Fixed (tight):
const s = new Subject<Foo | void>();
s.next(); // No error
s.next(new Foo());

There is now an rxjs-no-unsafe-subject-next rule in rxjs-tslint-rules and a no-unsafe-subject-next rule in eslint-plugin-rxjs.
I've not implemented fixers because not all problems can be fixed within the linting process. Files are linted one by one and they are fixed when they are linted. The problem is that the site that needs the fixin' is not the site of the rule failure. The fixes outlined above 'fix' the subjects declaration and that could be in another file - or even in another package. The subject might not even be called directly - it could be returned from a method or a getter. IMO fixing this is way too hard and not worth the effort. And, generally, I am not in favour of fixers that only work in some situations. They are certainly not something that I would want to support or (continually) explain.

We've decided to just keep Subject with the proper types in 7.


Add swift compatibility notes to readme.

If swift is working consider adding a demo project in swift.

How do I initialize & use Pixate Freestyle for iOS when using Swift?


use tmux-256color instead of screen-256color

Fixes #382
https://github.com/tmux/tmux/wiki/FAQ#i-dont-see-italics-or-italics-and-reverse-are-the-wrong-way-round
Tested with
echo -e "\e[3mitalic\e[0m"

Before:

After:

What font is this?

Terminess!
https://github.com/ryanoasis/nerd-fonts/tree/master/patched-fonts/Terminus/terminus-ttf-4.40.1/Regular

Why hasn't it been merged?

I know it's been a while and I'm sorry for that. But I just didn't find a way to reliably install the tmux-256color terminal definition on macOS Catalina and above for all programs. So I guess it's better to let users do the installation and if it's available then Oh my tmux! will use it

No worries, thanks for taking a look! I did not test different systems so I agree gh-205-382 is a more robust solution.


Hide overlapping icons when zooming out

Hi guys
I was wondering if it was possible to have a big set of icons but when zooming out and they overlap, to just not show the ones that are overlapping.
Like in this demo: http://alex3165.github.io/react-mapbox-gl/demos
thanks!

deck.gl natively doesn't support clustering, but you can check our demo and example code.


Unencrypted backups

This is a duplicate of this issue from restic. https://github.com/restic/restic/issues/1018
I'd like to be able to create backups that aren't encrypted at all. Is this something that could be implemented?
It is something that would be useful for many users, in particular for using rustic as an incremental backup mechanism in the open source Cyberpanel server control panel https://community.cyberpanel.net/t/cyberpanel-backups-v2-proposal/40370/

Thanks for opening this issue @nickchomey
I thought a bit about it. Actually I find the points given in the restic discussion why it might be a bad idea to add unencrypted backuse quite relevant.
On the other hand it should be not too hard to just disable the encryption. But that would mean to keep the repo format almost identical including a nonce and a checksum but just omitting the encryption part. Adding a random nonce is really important as rustic does rely on the fact that an "identical" file saved twice results in different filenames due to different hashes of the contents.
So, I would suggest the following:

For init add a flag like --no-encryption
This would generate a "key" file which just holds the key for the checksum computation, but in plaintext
For each repo operation, I would log a warning like "[warn] repository is not encrypted"
Changing between unencrypted and encrypted repositories wouldn't be possible except maybe using the copy command to copy data between an encrypted and an unencypted repository.


WebSocketServer doesn't accept connections over ipv6

Godot version:

3.2.1
OS/device including version:

Microsoft Windows 10 Home Version	10.0.18362 Build 18362
Issue description:

WebSocketServer and WebSocketClient fail to connect when attempting to use an ipv6 address, but connect correctly when using ipv4 addresses.
Documentation on how ipv6 interacts with Websockets in Godot is spotty, but based on PRs #26189 and #26688, I take it that ipv6 compatibility with websockets is mostly automatic.
If it is not automatic, I don't see any mention on the doc page wrt. configuring the server for this.
Steps to reproduce:
Server.cs
'
using Godot;
using System;
public class Server : Node
{
WebSocketServer server = new WebSocketServer();
int PORT = 3476;

// Called when the node enters the scene tree for the first time.
public override void _Ready()
{
    // server.Connect("data_received", this, "_OnData");
    server.Connect("client_connected", this, "_PeerConnected");
    // server.Connect("client_disconnected", this, "_PeerDisconnected");
    server.Listen(PORT);
    GD.Print("Server Listening");
}

public void _PeerConnected(int id, String protocol = "")
{
    GD.Print("_PeerConnected: ", id);
}
public override void _Process(float delta)
{
    server.Poll();
}

}
'
ipv6Test.zip
Client.cs:
'
using Godot;
using System;
public class Client : Node
{

    WebSocketClient client = new WebSocketClient();
    string ipv4 = "ws://<IP_ADDRESS>:3476";
    string ipv6 = "ws://1234:1234:123:1234:1234:1234:1234:1234:3476";
    // Called when the node enters the scene tree for the first time.
    public override void _Ready()
    {
        client.Connect("connection_established",this, "_Connected");
        client.ConnectToUrl(ipv4);
        GD.Print("Client trying to connect");
    }

    private void _Connected(string protocol)
    {
        GD.Print("Connected");
    }

// Called every frame. 'delta' is the elapsed time since the previous frame.
    public override void _Process(float delta)
    {
        client.Poll();
    }
}

'
Minimal reproduction project:

ipv6Test.zip

I confirm that URL parsing is broken for literal IPv6.
In any case, ws://1234:1234:123:1234:1234:1234:1234:1234:3476 is an invalid URL.
Should be: ws://[1234:1234:123:1234:1234:1234:1234:1234]:3476 (which will work in HTML5 at least).


Visualisation Mockups

Create digital mockups or sketches of desired visualisation (histograms, bar charts, pie charts, etc.), researching libraries such as D3.js, Chart.js, plotly.js.

duplicate of #9


Minor mistake in docs

The documentation for Model#$transaction refers to the static method knex, which appears to be a mistake.  See:
https://vincit.github.io/objection.js/api/model/instance-methods.html#transaction

Nope, they are one and the same.

Those functions are pretty useless and can even be misleading. They are simply implemented like this:
$transaction() {
  return this.constructor.knex();
}


Docs changes for 0.17.2

For inclusion in final release:

https://github.com/fishtown-analytics/dbt-docs/pull/115

Closed by #2658


Fix race condition in test_compileservice_cleanup test (#3806)

Pull request opened by the merge tool on behalf of #3806

Merged in a5f5f6a4b66851aee3bd10d737532b343a3ff5d2


reencode mismatch

I know that people have brought up this issue in the past, and the issue seems to be fixed by downloading the latest version of the save editor, which I have done, so I have attached my save file in the hopes that someone can help me figure out what I'm doing wrong.
Save0004.zip

Loads fine in the latest save editor.
https://github.com/gibbed/Gibbed.Borderlands2/releases


Build does not work on CI

Building examples in CI, throws the errors below.
Symbols defined in link.x by the crate riscv_rt are not found. This does not happen locally.
Temporary, the CI just performs a check stage, without linking
Errors:
rs/target/riscv32imac-unknown-none-elf/release/examples/blinky-e5dbbb45ec00cdf4" "--gc-sections" "-O1"
  = note: rust-lld: error: undefined symbol: _max_hart_id
          >>> referenced by asm.S:60
          >>>               riscv-rt.o:(.init+0x54) in archive /home/runner/work/redv-sifive-riscv-fe310-soc-rs/redv-sifive-riscv-fe310-soc-rs/target/riscv32imac-unknown-none-elf/release/deps/libriscv_rt-7ff81aced11b23f7.rlib
          >>> referenced by asm.S:61
          >>>               riscv-rt.o:(.init+0x58) in archive /home/runner/work/redv-sifive-riscv-fe310-soc-rs/redv-sifive-riscv-fe310-soc-rs/target/riscv32imac-unknown-none-elf/release/deps/libriscv_rt-7ff81aced11b23f7.rlib

          rust-lld: error: undefined symbol: _stack_start
          >>> referenced by asm.S:61
          >>>               riscv-rt.o:(.init+0x64) in archive /home/runner/work/redv-sifi

Goal:
Replace cargo check --examples by cargo build --examples in the CI
CC: @imahjoub , @ckormanyos

The issue is that the linker arguments defined in .cargo/config.toml are ignored in the pipeline:
rustflags = [
"-C", "link-arg=-Tmemory.x",
"-C", "link-arg=-Tlink.x",
]
Setting them explicitly in the environment variable RUSTFLAGS before invoking cargo build fixes the issue.


JPA sample and QueryDSL fires java.lang.LinkageError

Hi, a question here :)
I am playing with Alpha2 snapshot + jpa + jax-rs sample (https://github.com/wildfly-swarm/example-jpa-jaxrs-cdi) and trying to go further with QueryDSL (https://github.com/aracrown/ara-blog-examples/tree/master/s01e04) example. However, when trying to call a WS I get  java.lang.LinkageError: javax/persistence/EntityManager (https://gist.github.com/turisto/7d140b4fb9fa510f0ed5).
Currently I going with jar + Main configuration. Do I need to add something specific into Main class container or deployment? I believe it is related to configuration issues :)
Best regards,
Vytas

Do you have the JPA API as a dependency to your project? Or does QueryDSL include it?

My project does not have this dep as it is currently clone of example-jpa-jaxrs-cdi. QueryDSL has "provided" dependency of JPA API (provided).

Hmm, had a quick play with your example and wasn't able to see where the Classloading issue is coming from. Need to dig deeper.

Howdy, just fixed this in HEAD of wildfly-swarm.
One change required for your application is adding this line to your main()
        deployment.getArchive().addClasses(QEmployee.class);

Then it should work appropriately.

Cool. It works now! :)


Add video to your readme file

Hey there
the docs or explanation is not enough for users to understand how this works
please add this video to the READme
https://www.youtube.com/watch?v=O8_pcHMXV-M
thanks
M.

Thx, done


Performance drop when dragging tokens over a region with Difficult terrain using Elevation Ruler

Hello!
I've just installed the module and my dependencies are up-to-date, but when I try to drag a token over a region with difficult terrain, FoundryVTT starts lagging heavily. My CPU is AMD Ryzen 7 5800X, if it matters.
Here's a demonstration of the issue: https://youtu.be/2Xe7t13VOJs
Also, when a token enters the region, there's a warning in the console as well:

UPD: Turns out it happens with Elevation Ruler enabled, specifically when "Use Token Ruler" setting is active.

Addressed in v0.4.6 and Elevation Ruler v0.10.11. Should be much faster now. The slowdown was when ER asked TM for the move penalty through a region. To do that, TM was cloning an actor to determine what active effects would be imposed, but it took way too long for Foundry to initialize and update the actor.


[SPARK-43684][SPARK-43685][SPARK-43686][SPARK-43691][CONNECT][PS] Fix (NullOps|NumOps).(eq|ne) for Spark Connect.

What changes were proposed in this pull request?
This PR proposes to fix NullOps.(eq|ne) and NumOps.(eq|ne) for pandas API on Spark with Spark Connect.
This includes SPARK-43684, SPARK-43685, SPARK-43686, SPARK-43691 at once, because they are all related similar modifications in single file.
This PR also introduce new util function _is_extension_dtypes to check whether the given object is a type of extension dtype or not, and apply to all related functions.
Why are the changes needed?
The reason is that pandas API on Spark with Spark Connect operates differently from pandas as below:
For ne:
>>> pser = pd.Series([1.0, 2.0, np.nan])
>>> psser = ps.from_pandas(pser)
>>> pser.ne(pser)
0    False
1    False
2     True
dtype: bool
>>> psser.ne(psser)
0    False
1    False
2     None
dtype: bool

We expect True for non-equal case, but it returns None in Spark Connect. So we should cast None to True for ne.
For eq:
>>> pser = pd.Series([1.0, 2.0, np.nan])
>>> psser = ps.from_pandas(pser)
>>> pser.eq(pser)
0     True
1     True
2    False
dtype: bool
>>> psser.eq(psser)
0     True
1     True
2     None
dtype: bool

We expect False for non-equal case, but it returns None in Spark Connect. So we should cast None to False for eq.
Does this PR introduce any user-facing change?
Yes, NullOps.eq, NullOps.ne, NumOps.eq, NumOps.ne are now working as expected on Spark Connect.
How was this patch tested?
Uncomment the UTs, tested manually for vanilla PySpark.

Merged to master.


Very verbose "error" messages that don't seem to be errors

@lebokus Firstly, thanks for this plugin. :)
In the docker logs (using docker in docker), I see logs of examples of
time="2021-08-24T17:18:47Z" level=error msg="2021/08/24 17:18:47 Entering go-plugins-helpers getPath" plugin=61cd6bca634b9df27c29b4c824873d3afa87ab0dedb49b8149cfd3570579ff6c
time="2021-08-24T17:18:47Z" level=error msg="2021/08/24 17:18:47 Entering go-plugins-helpers capabilitiesPath" plugin=61cd6bca634b9df27c29b4c824873d3afa87ab0dedb49b8149cfd3570579ff6c
time="2021-08-24T17:18:47Z" level=error msg="2021/08/24 17:18:47 Entering go-plugins-helpers capabilitiesPath" plugin=61cd6bca634b9df27c29b4c824873d3afa87ab0dedb49b8149cfd3570579ff6c
time="2021-08-24T17:18:47Z" level=error msg="2021/08/24 17:18:47 Entering go-plugins-helpers getPath" plugin=61cd6bca634b9df27c29b4c824873d3afa87ab0dedb49b8149cfd3570579ff6c
time="2021-08-24T17:18:47Z" level=error msg="2021/08/24 17:18:47 Entering go-plugins-helpers capabilitiesPath" plugin=61cd6bca634b9df27c29b4c824873d3afa87ab0dedb49b8149cfd3570579ff6c

These don't seem to cause any negative effects and I've not set the DEBUG flag.
Is it possible to silence these messages?

Looks like these messages are actually produced by "go-plugins-helpers".
Related (currently open) PR:
https://github.com/docker/go-plugins-helpers/pull/130


Cannot save PDF from print layout, zero byte files created

Avoid duplicates

[x] Bug is not mentioned in the FAQ
[x] Bug is specific for Android only, for general issues / questions that apply to iOS and Android please raise them in the documentation repository
[x] Bug is not already reported in another issue

Technical details

Device name: Nokia 6.1
Android version: 10
App version: 2.3.4

Describe the bug
I created a QR codes for events that I organise, and want to export the code, so I can print it from another device (printer is USB only, not available through wifi). When using the print view and trying to save to the phone's storage, files are created but they are empty and have zero bytes.
Steps to reproduce the issue

Create a new event
Open the printable version by tapping "show printable version" ("Druckversion anzeigen" in my app, language is German)
Tap the printer icon in the upper right corner.
Then select "Save to PDF" to create a PDF file on the phone's storage.
The file will be created, but has zero bytes.

I guess the app lacks permissions for accessing the device's storage. When using the "share" button in step 3, and providing it to a file manager app or Nextcloud, a valid PDF file will be stored to the device or uploaded to the cloud.
Expected behaviour
I would expect a PDF file that can be opened with any PDF reader app, or copied from the phone to a different location. Obviously, a file with zero bytes are not valid PDF files.
Possible Fix
Creating valid files succeeds when not using the "print" button but the "share" button in step 3 and handing over the data to an app that already has permissions to access the device's storage (or uploads the file to the Internet). So I assume it is a permission thing.

Internal Tracking-ID: EXPOSUREAPP-8104

@mhaseneyer
I tried to reproduce your problem, but for me it worked.
I used a Pixel 3a emulator running Android 10 using the Deutsch (Deutschland) locale and the default print service (Standarddruckdienst)

Create an Einzelhandel event.
Three-dot symbol > "Druckversion anzeigen"
Tap printer symbol
Select printer "Als PDF speichern"
Tap print (to PDF) symbol
Tap "SPEICHERN" (into Downloads folder)
Open "Dateien" app
PDF file has non-zero size
Tap PDF file to open
PDF file (CHECKEN SIE EIN STOPPEN SIE DAS VIRUS with QR code) displays

Which print service are you using?
Which folder are you saving the PDF file to?
Is the folder on the phone or on an SD card?

Doing exactly the same, just at step 8 I get size zero.

I am using the default print service. Have never cared about printing from the device before, if there is a way of how I can be more specific about the print service, I am happy to learn how.
Internal storage, "Download" folder. This is location proposed by the app and I guess it is the default.
Phone. SD card exists but not used in this case.

@mhaseneyer
I tried, also unsuccessfully, to reproduce the issue on a Samsung Galaxy Android 10 system.
Perhaps you could try the function "Als PDF speichern" outside the Corona-Warn-App, for instance by selecting, then printing a file (to PDF) listed in the Android file manager.
On the Android 10 emulator I'm using (Pixel 3a), the printer services are under:
Einstellungen > Verbundene Geräte > Verbindungseinstellungen > Drucken
On a Samsung device you need:
Einstellungen > Verbindungen > Weitere Verbindungseinstellungen > Drucken
If you haven't installed anything extra, like a print service from a printer vendor, it will probably list only "Standarddruckdienst".

@mhaseneyer
If you enable "Error Reports" (App-Informationen > Fehlerberichte) in CWA you can view (Teilen und Fortsetzen) the logs which will contain print information if you attempt to print as PDF. You may find some clues to your issue there.

@mhaseneyer
Thank you for your report. We have informed the dev team and they will take a look at the problem now.

Corona-Warn-App Open Source Team

@mhaseneyer If I got your explanation right, you were able to see the following screen ,but when saving the file using Save as PDF it saves 0 bytes file , is that right?

Few things to note:
1-  if you were able to share the file using the sharing method it means that the file is generated properly in CWA , we don't need to ask for storage permissions as the file is generated in the internal app directory.
2- The following screen is outside CWA App , it is from the system itself , you can try to print an email from Gmail you should see a similar screen

if you are not able to print using other Apps also, then it is probably some settings in your device that need to be adjusted.
if the issue is related to CWA only , it would be great if you can share a bug report from the App and send us the report ID?

it is a CWA issue

@mtwalli

it is a CWA issue

Maybe you meant to write "it is not a CWA issue"? otherwise it doesn't make sense the close the issue.

@mtwalli

it is a CWA issue

Maybe you meant to write "it is not a CWA issue"? otherwise it doesn't make sense the close the issue.

@MikeMcC399  Yes, it mean it isn't a CWA issue, nothing we can do here


"Re-using environment state in sub-helmfiles" kubeContext not working

Operating system
NixOS
Helmfile Version
v0.158.1
Helm Version
v3.13.2
Bug description
configured kubeContext is not used (always default).
In Documentation describted "Re-using environment state in sub-helmfiles", which i found here:
Advanced Features > Best Practices Guide > Re-using environment state in sub-helmfiles
https://helmfile.readthedocs.io/en/stable/writing-helmfile/#re-using-environment-state-in-sub-helmfiles
Does not work:
Example helmfile.yaml
helmfile.yaml
environments:
  stage:
    kubeContext: stage
    values:
    - env/stage.yaml
  prod:
    kubeContext: prod
    values:
    - env/prod.yaml

---

helmfiles:
  - path: sub-helmfile.yaml
    values:
      - {{ toYaml .Values | nindent 6 }}

sub-helmfile.yaml
releases:
  - name: "a"
    chart: "a/a"
    installed: {{ .Values.enabled }}

env/prod.yaml
enabled: true

env/stage.yaml
enabled: false

Error message you've seen (if any)

Steps to reproduce
helmfile -e prod list
Working Helmfile Version
maybe never, see #948 and not working #947
Relevant discussion
No response

.Values is only environments[].values and environments[].secret , so I don't think it's possible currently

hmm, that could be the problem - do we like to change it?

I've also been looking into this, as I've been seeing the same behavior. Multiple comments in the old repo by @mumoshu seem to indicate this is by design. I'm still trying to figure out a simple solution...

But beware, as far as I remember --kube-context or --namespace doesn't work correctly with sub-helmfiles. As they only affect the parent helmfile.yaml. Not very sure what to do for those, though.

https://github.com/roboll/helmfile/issues/443#issuecomment-457123421

One of the rules of helmfile is that each sub-helmfile should be usable independently. So let's assume that your sub-helmfile should be complete on its own i.e. should work without inheritance at all.

https://github.com/roboll/helmfile/issues/725#issuecomment-506101418

To make each (sub-)helmfile modular, environment values are not automatically inherited to sub-helmfiles.

https://github.com/roboll/helmfile/issues/1045#issuecomment-568144432

Okay again, should we give the helmfiles the option to set kubeContext (and namespaces):
here a example to bypass it (if the options whould exists):
helmfiles:
  - path: sub-helmfile.yaml
    kubeContext: {{ .Environment.KubeContext }}
    namespace: {{ .Environment.Namespace }}
    values:
      - {{ toYaml .Values | nindent 6 }}


Mark the latest report action from other users as unread

Details

The app should mark the latest report action from other users as unread
Fixed Issues

$ https://github.com/Expensify/App/issues/31748
PROPOSAL: https://github.com/Expensify/App/issues/31748#issuecomment-1823817127
Tests

Launch the New Expensify app
Mark a chat where the latest message is not from you, as unread
Open the chat
Note that it shows the unread marker
Send a few messages to the chat
Return to LHN
Long press on the chat and mark it as unread
Open the chat
Verify that the unread indicator appears in the latest report action that doesn't come from the current user.

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

Offline tests

QA Steps

Launch the New Expensify app
Mark a chat where the latest message is not from you, as unread
Open the chat
Note that it shows the unread marker
Send a few messages to the chat
Return to LHN
Long press on the chat and mark it as unread
Open the chat
Verify that the unread indicator appears in the latest report action that doesn't come from the current user.

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

PR Author Checklist

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

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

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

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

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

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

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

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

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

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

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

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

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

Screenshots/Videos

Android: Native
https://github.com/Expensify/App/assets/129500732/5e80c1e0-9535-4464-8e4d-e98134322014

Android: mWeb Chrome
https://github.com/Expensify/App/assets/129500732/befa7253-fb7a-493f-a5e4-4079d40c5914

iOS: Native
https://github.com/Expensify/App/assets/129500732/c2e473dd-a543-4b19-bf5e-fea56bd81445

iOS: mWeb Safari
https://github.com/Expensify/App/assets/129500732/63e34380-3417-4bcc-9c85-981bc4e83241

MacOS: Chrome / Safari
https://github.com/Expensify/App/assets/129500732/e57dd696-580b-4806-a314-ecfe02f59283

MacOS: Desktop
https://github.com/Expensify/App/assets/129500732/7ab5ef6b-5425-457e-a57c-394fdfc8199d

When marking message as unread in the chat. Looks like one is able to mark their own messages as unread. Why we don't follow similar logic as we do when marking as unread from LHN.

I have the same thought on this. On Slack, when we unreadmark our message, it will put the marker on the message from another user before that message.
I think we should do the same when marking our own message from the popover.

Here's the case of what I think when marking my message

Mark the previous message from the recipient if it exists
Mark the next message from the recipient there is no previous message
No mark if no message from recipient

Let's not do that to keep things simplified? It could be interpreted as a bug more than a feature. Looks like in slack one is still able to mark the report as read

Let's not do that to keep things simplified? It could be interpreted as a bug more than a feature. Looks like in slack one is still able to mark the report as read
@MonilBhavsar Could you elaborate? Is the demo here enough?

Hey team!
I mean when inside the chat in slack, one is able to mark their own messages as unread.
So we should also allow users marking their own message as unread when in chat.
When marked unread from LHN, let's mark message from another user as unread
https://github.com/Expensify/App/assets/32012005/c928688b-4452-4338-a8dd-91e79eb9e396

@MonilBhavsar, I think the result in this PR is already good enough.
https://github.com/Expensify/App/assets/25520267/0cdfecad-8d4f-4d8f-a6a7-0ea9d7ec6a40

@dukenv0307 Let's finish this up, could you update the PR with the commented line? Thanks!

Reviewer Checklist

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

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

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

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

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

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

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

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

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

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

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

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

[ ] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[ ] If the PR modifies the form input styles:

[ ] I verified that all the inputs inside a form are aligned with each other.
[ ] I added Design label so the design team can review the changes.

[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

Thanks!

@dukenv0307 We have invalid checklist, could you update it with the latedt one?

The check was passing 😕

@dukenv0307 could you please update the checklist and comment the difference here. thanks!

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

🚀 Deployed to staging by https://github.com/MonilBhavsar in version: 1.4.20-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
cancelled 🔪

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/marcaaron in version: 1.4.20-3 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅