Select component options styled

[X] I have searched the Issues to see if this bug has already been reported
[X] I have tested the latest version

Summary
The component Select is using the browser style to show the select options:
          <Select id="country" defaultValue="empty">
            <option value="empty">Choose your country</option>
            <option value="USA">USA</option>
            <option value="UK">United Kingdom</option>
            <option value="CA">Canada</option>
            <option value="FR">France</option>
            <option value="DE">Germany</option>
            <option value="ES">Spain</option>
            <option value="JP">Japan</option>
            <option value="AUS">Australia</option>
          </Select>

Context
I would like to have a consistent style similar to the one used in the Dropdown menu:

As additional context, I cannot use dropdown instead of Select due to several constraints such as:

className="w-full" is not working for me (the component keeps "w-fit" in the button but the dropdown menu uses "w-full").
color="gray" or color="light" seem not to be consistent with the TextInput or Select styles.

See an example here:

I think that it should still have the browser Select component (other libraries do the same) but have then an additional component called Combobox, which could have the custom styles for the items and also some additional features like searching

If you finally decide to add a Combobox component with search capabilities as @nigellima suggests, it would be very nice to consider the search function as a callback to allow developers develop custom filters being done in backend instead of frontend.

The Select should not be customizable, and it should look like the navigator. Standard flowbite does it, and we are just reproducing it. Unless they change it, we will not change.
It seems that we have a bug related to w-full and color... Right? So, probably this should be handled on this issue.
And finally, I think that the Combobox component with search capabilities is pretty awesome... You folks have my +1 to add to the library. But, it will need @zoltanszogyenyi interaction here, maybe? I don't remember if Flowbite has it on the standard library.

@rluders should I open a new issue with the Dropdown issues? I haven't gone in deep detail as I have my own Combobox component and I will use it for this case, but if you consider it can be useful for you, I can do it.

I think that you can edit this one for the Select, and we should create another one for Combobox. I would like to see how how the Combobox would look from the Figma perspective, but... I think that we have all the pieces to implement it.

@rluders
I think a good set of features would be:

simple selection without search
single selection with search
multiple selection/remove (tags added over the input with removable button icon) with search

@nigellima sounds good. Can you create an issue for this one?

BTW, now that I had a good night of sleep and had a nice cup of coffee I understood what it is all about. So, basically Dropdown isn't a form component, and it can't be used like that, it doesn't store form values, and it doesn't allow any validation functionality. So, first, the use-case for the dropdown first described in the issue is wrong, and it isn't recommended. So, for this reason, the proposed implementation of a Combobox component as part of the Form elements is the best solution.
I'm going to change the issue description completely to match the requirements for the new component.

@zoltanszogyenyi looking at flowbite docs, I didn't find the Combobox component. I'm trying to find something similar, the closest one that we have is the Dropdown, but it isn't a Combobox, since Combobox are form elements, meanwhile Dropdown isn't a Form component.
I think that we should consider introducing the component to the standard flowbite library first, if desirable, and then implement it in the react library. Does it make sense? Am I missing something?

Hey @rluders,
We definitely have that on our plans! Until then, I think that you can take the design from here:
https://www.figma.com/file/qnussKyYVlx3LZvwVSCz8M/Flowbite-Design-System-Pro-v2.8.0?type=design&node-id=547-163288&mode=design
It's a dropdown component with a form inside where you can filter the search items below. I believe it's a component that can be used for the Combobox element.
Cheers,
Zoltan


Remove update_hash and insert_string implementations from functable

Remove SSE4.2 and ACLE versions of update_hash, insert_string and quick_insert_string
Remove update_hash, insert_string, quick_insert_string from functable
Remove deflate_state parameter from update_hash functions (based on parts of #1653)
Remove unused 's' parameter from HASH_CALC macro

This removes more than 100 lines from the codebase.
Calling the functions directly rather than through functable leads to significant compression speed improvements in my tests.

X86-64 i9-9900K
Develop ca0e4634e1914ecfe67e40261bbf54676f0d1c8f Feb 21
 Tool: minigzip   Levels: 1-9
 Runs: 70         Trim worst: 40

 Level   Comp   Comptime min/avg/max/stddev  Decomptime min/avg/max/stddev  Compressed size
 1     54.166%      0.150/0.154/0.156/0.001        0.034/0.036/0.038/0.001        8,523,732
 2     43.871%      0.244/0.249/0.250/0.001        0.032/0.036/0.038/0.002        6,903,609
 3     42.387%      0.295/0.297/0.299/0.001        0.031/0.034/0.036/0.001        6,670,099
 4     41.647%      0.317/0.324/0.326/0.002        0.030/0.034/0.035/0.001        6,553,723
 5     41.216%      0.344/0.352/0.354/0.002        0.032/0.034/0.035/0.001        6,485,938
 6     41.037%      0.390/0.397/0.400/0.003        0.030/0.033/0.035/0.001        6,457,776
 7     40.778%      0.493/0.498/0.503/0.003        0.030/0.034/0.035/0.001        6,416,919
 8     40.704%      0.605/0.613/0.618/0.004        0.029/0.033/0.034/0.001        6,405,244
 9     40.409%      0.912/0.919/0.925/0.004        0.029/0.033/0.035/0.002        6,358,951

 avg1  42.913%                        0.423                          0.034
 tot                                114.095                          9.195       60,775,991

   text    data     bss     dec     hex filename
 138190    1352       8  139550   2211e libz-ng.so.2

PR Remove update-hash/insert-string from functable
 Level   Comp   Comptime min/avg/max/stddev  Decomptime min/avg/max/stddev  Compressed size
 1     54.185%      0.105/0.109/0.111/0.002        0.032/0.035/0.038/0.002        8,526,745
 2     43.871%      0.198/0.200/0.202/0.001        0.034/0.036/0.038/0.001        6,903,702
 3     42.388%      0.243/0.248/0.250/0.002        0.032/0.035/0.036/0.001        6,670,239
 4     41.647%      0.276/0.280/0.282/0.002        0.031/0.034/0.035/0.001        6,553,746
 5     41.216%      0.304/0.310/0.312/0.002        0.031/0.034/0.035/0.001        6,485,936
 6     41.038%      0.350/0.357/0.361/0.003        0.030/0.033/0.035/0.001        6,457,827
 7     40.778%      0.498/0.504/0.508/0.003        0.030/0.033/0.035/0.001        6,416,941
 8     40.704%      0.610/0.620/0.625/0.004        0.029/0.033/0.035/0.001        6,405,249
 9     40.409%      0.902/0.907/0.912/0.003        0.030/0.034/0.035/0.001        6,358,951

 avg1  42.915%                        0.393                          0.034
 tot                                106.069                          9.209       60,779,336

   text    data     bss     dec     hex filename
 137222    1312       8  138542   21d2e libz-ng.so.2

Compression speedup:

Level 1: 29% faster
Level 3: 16% faster
Level 6: 10% faster
Level 9: 1% faster

~1KiB smaller library
Slight change to compressed output/size due to change of hashtable algorithm.

Obviously compression speed improves if compression ratio goes down... This is pretty much because it misses some matches, and doesn't need to verify them.
I'm not surprised that level 9 doesn't improve much as that is supposed to do aggressive scanning of matches which relies on effective hashing algorithm.
This all comes to if we prefer faster compression speed, or better compression ratio and what weight we give to each. I wouldn't put much weight on library size as most systems really don't care if library is few hundred bytes bigger or not.

@mtl1979 The compression ratio does not change if we change it to use the SSE4.2 variant instead, and it is then nearly as fast as this is. But SSE4.2 is not a good baseline to use, so that is a non-starter.
~98% of the speedup is because we remove the functable indirection.
The hash algorithm selection has always been a hard choice, because on some data it will be better, while on other data it will be worse. IE: the SSE4.2 gives worse compression on some data, so for that data this will actually improve compression ratio.
The benefit now is that compression is more predictable and will not vary between cpu instruction sets (AFAIK, there might be some other differences some places).

@mtl1979 The compression ratio does not change if we change it to use the SSE4.2 variant instead, and it is then nearly as fast as this is. But SSE4.2 is not a good baseline to use, so that is a non-starter. ~98% of the speedup is because we remove the functable indirection.
The hash algorithm selection has always been a hard choice, because on some data it will be better, while on other data it will be worse. IE: the SSE4.2 gives worse compression on some data, so for that data this will actually improve compression ratio.
The benefit now is that compression is more predictable and will not vary between cpu instruction sets (AFAIK, there might be some other differences some places).

I'm not saying we should use SSE4.2 or ACLE hashing function always, I'm just saying that the unoptimized hashing function isn't the best version available. As I said on #1682 and elsewhere, we need to improve it, so even level 1 gets a little better at least on our own benchmarks. I also said earlier that the current unoptimized version still relies on system being little-endian, which isn't always true. I know big-endian systems are slowly getting phased out, but there is still bi-endian systems.

I also said earlier that the current unoptimized version still relies on system being little-endian, which isn't always true. I know big-endian systems are slowly getting phased out, but there is still bi-endian systems.

That should not be a regression in this PR, since it only removes the SSE4.2 and ACLE functions, so all cpus not supporting either of those will have had to use the generic hashing function anyways.
SSE4.2 is only little-endian, so nothing lost there. ACLE I don't know, but it doesn't look like it does any big-endian handling to me.
Of course feel free to improve the hashing algo, it should even be easier now that there are only 2 different implementations.

I also said earlier that the current unoptimized version still relies on system being little-endian, which isn't always true. I know big-endian systems are slowly getting phased out, but there is still bi-endian systems.

It should be possible to improve the generic version for big endian architectures by using ZSWAP32 when unaligned access is available, and by loading one byte and combining it with the last word when unaligned access is available. The second option should help on little endian as well.
Proof of concept in Compiler Explorer (untested)


Fundraiser Application

Application Description
Sway smart contract similar to an escrow, also has a user interface.
Users can deposit a specified asset to the contract within a specified time range.

If the total sum pledged meets the goal then the author can claim the funds and automatically close the contract
Otherwise everyone can withdraw their pledge

Motivation
It has a similar application to an Escrow and it is a viable real world use case via decentralized conditional funding.
A sway application should be created to demonstrate its usage.
Features

[x] #65
[ ] #66

Additional context
Tuturu

Closing in favor of https://github.com/FuelLabs/sway-applications/issues/66


Register remote image

This lets you register an image that is hosted somewhere else. This way
you can include an image from another service and you don't have to
store it locally.
I'm fairly new to Go and was just wondering what the best way to run the test was? At the moment I made a package in my go folder github.com/jung-kurt and added a symlink to my local repository to run the tests from there.

This is a worthwhile enhancement -- thanks. I had thought previously that registering a remote image on the net wasn't worth linking the http package and that it made more sense for the application to do this. But there is enough opportunity for things to go wrong that I believe it makes sense to include it.
Two things. I would like to see the error returned from http.Get examined. It is quite reasonable to expect a failure at this point. Also, a url like http://example.com/foo.jpg?bar=baz will cause problems with the current method of obtaining the file extension. It would be better to break up the url with url.Parse and then process the Path member.

@jelmersnoeck
Thanks for the proposal. Please don't ignore the errors with underscores as in:
resp, _ := http.Get(urlStr)
body, _ := ioutil.ReadAll(resp.Body)

Handle them appropriately: setting them to f.err and return immediately.
I can recommend this blog post for a nice workflow for contributing to open source git repositories in go: https://splice.com/blog/contributing-open-source-git-repositories-go/ If you follow this you can just run:
go test -cover

Valuable link on contributing to Go projects -- thanks!

Thank you both for the feedback. I'll have a look at refactoring.
@jung-kurt I was also thinking on making a PR for parsing an image from a string (base64). We are currently looking at separating our PDF Generation into it's own service and we'd need to send over some local files/temporary images (like Barcodes). I'm wondering if this is something you'd like to see in this package?
Besides that I'm also looking into optimising this (coming out of necessity of our implementation, we need around 72 images in one PDF, which we need to create on demand). Currently, all the images would get fetched synchronously. If this was implemented with a goroutine all the images could be downloaded simultaneously and then put on the PDF at the end (as happens now). A simple example of this is here.

@jung-kurt
Good point about the extra dependency. Now I think about it, you are right.  As otherwise someone else also wants to add ftp and gofpdf ends up being bloated with many dependencies. I see that there is already a better example for image urls: http://godoc.org/github.com/jung-kurt/gofpdf#ex-Fpdf-RegisterImageReader
@jelmersnoeck
It is great you want to contribute something to this project. However having a closer look to your code, I notice you make a beginner mistake with ioutil.ReadAll. There is no need to read first the resp.Body and turn it back into a reader, as resp.Body is a reader already. See also: https://www.datadoghq.com/blog/crossing-streams-love-letter-gos-io-reader/

@stanim
Good catch with the ioutil.ReadAll mistake -- I missed that.
@jelmersnoeck
The concurrent image loader example is creative, but I wonder if it, like the HTTP image retrieval, is best done by the application. Am I right in assuming the advantage of using goroutines here would be to simply get the resources from one or more remote servers to the local host as quickly as possible? Embedding them into the PDF will still need to wait for all images to be retrieved. Your thoughts, @stanim?

@stanim thanks for all the information! I've updated it accordingly. I've used the RegisterImageReader example as a base instead of url.Parse to get the file extension as @jung-kurt mentioned.
I do understand the concerns about the http library and with the provided example (that I seem to have missed), this seems very easy to do. So this could indeed live on the application level, integrated with optimisations to speed up the download.
Regarding concurrent image loading, you would indeed still have to wait for all the images to be retrieved, but the time it takes to do this would equal(roughly) your slowest download instead of the overall time of your downloads.

The current code waits for all images to be downloaded before they can embedded in the pdf. This gives you the speed advantage of concurrent downloading, but postpones the pdf generation unnecessarily. A way to further optimize this is to do the pdf generation in a single goroutine to which the images are sent through a channel. (Writing from different goroutines to the same pdf is not safe.)

If the order is not important, the images could be pushed in that channel after being downloaded and be embedded immediately in the pdf.
If the order is important, the channel element should consist of the image with the index. The pdf generating goroutine can than wait (with a select statement) for previous images if they take longer. This avoids to wait for all images to be downloaded before they can be embedded.

Of course this should be an implementation for the application, not for this library.
That said ... an idea for welcoming contributions, which don't belong in the core library, is to have a github.com/jung-kurt/gofpdf/contrib package with various contributed subpackages. This allows us  to have useful functions which take fpdf as an argument, instead of adding them as extra methods and dependencies to gopdf. People can than cherry pick the contrib subpackages they want. If after a while a certain contributed function proves to be very useful, it can be migrate as a method to gofpdf core.
This is analogous to django contrib (see http://www.djangobook.com/en/2.0/chapter16.html ).
So instead of adding this method to github.com/jung-kurt/gofpdf:
func (f *Fpdf) RegisterRemoteImage(urlStr, tp string) (info *ImageInfoType)

This could be implemented as a function in github.com/jung-kurt/gofpdf/contrib/httpfpdf:
func RegisterRemoteImage(f *gofpdf.Fpdf, urlStr, tp string) (info *gofpdf.ImageInfoType)

@jelmersnoeck
Please change this code:
resp, err := http.Get(urlStr)
defer resp.Body.Close()

if err != nil {
    f.SetError(err)
}

into:
resp, err := http.Get(urlStr)

if err != nil {
    f.SetError(err)
}

defer resp.Body.Close()

The reason is if http.Get fails, resp might be nil. Calling Close on resp.Body will cause a panic.
See: http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/index.html#close_http_resp_body

@stanim

an idea for welcoming contributions, which don't belong in the core library, is to have a github.com/jung-kurt/gofpdf/contrib package with various contributed subpackages

I really like this idea. We may have to expose a little more of the gofpdf internals in order for independent, importable packages to accomplish some tasks, but I think this can be done in a reasonable way.
We should require that all contributions like this contain their own example tests. To make things uniform, it would be desirable to factor the test helper routines and constants into their own package so they could be shared among the gofpdf examples as well as the contribution examples.

That looks like a neat solution indeed. I'll have a look at refactoring it to follow that pattern.

@stanim Thanks again for that article, it's very interesting! Am I correct to assume that my function should've included a return as well? (At the moment, there is no return in there when there's an error). I was also wondering, if an error takes place, should it still be added to the Images map?
As suggested, I've also made the adjustment of moving this to a contrib package (I've named it httpfpdf as @stanim suggested so other people could add more http related functionality in there). @jung-kurt I'm not sure if you want me to pull those changes into this PR or if you want me to open a new one? The diff can be seen here so far: https://github.com/jung-kurt/gofpdf/compare/master...jelmersnoeck:contrib-package?expand=1
(I'm not entirely sure what to do with the common functions in gofpdf_test and httpfpdf_test though)

@jelmersnoeck

Am I correct to assume that my function should've included a return as well?

Does this regard error handling? If so, yes, you should return after setting an error. The idea is that once an unrecoverable error occurs, no further document generation should take place.
The contrib directory looks good. Let me mull over the idea of exporting the images array, however. Instead of exporting it, we may want to want to hide it behind some methods. As more packages are developed in the contrib directory, more currently internal fields will need to be accessed, so I would like to arrive at a solution that doesn't simply export everything.
Also, I will think about the best way to handle the common test functions. No need to change your pull request -- I will make any changes in this regard before pushing back to the repository.
Many thanks for your changes.

@jung-kurt
I think the images array code:

info, ok := f.Images[urlStr]
if ok {

  return

}

I think the images code:
info, ok := f.Images[urlStr]
if ok {
    return
}

can be dropped. This is for the corner case when some erroneous code tries to register the same image twice. Moreover RegisterImageReader does this check. We should be only expose internals for main behaviour, not for corner cases.
@jelmersnoeck
In case of an error a return is indeed needed. In idiomatic go functions that can invoke an error, always have an error return parameter. Unfortunately gofpdf follows a different pattern with Fpdf.SetError. This is one of few things I regret in gofpdf.
I think when everything looks ok and is ready to be merged, I would prefer if you do a new pull request with a clean commit history. So that you only cause a single commit to gofpdf, as otherwise the commit history gets bloated with unnecessary steps and code. However @jung-kurt might disagree and I will respect his decision.

Unfortunately gofpdf follows a different pattern with Fpdf.SetError. This is one of few things I regret in gofpdf.

I do not regret this. I believe it keeps simple cases simple, and more complex cases possible. I think it captures the spirit of Rob Pike's article about error handling. For one thing, a programmer is still able to use the following idiom
if err = pdf.Something(); err != nil {
    // process error
}

by using the construct
if pdf.Something(); pdf.Err() {
    // process pdf.Error()
}

Semantically, this isn't exactly the same because pdf.Error() may indicate an error that occurred before pdf.Something() was called. However, the result would be the same if every opportunity for an error was checked.
For more complex cases, like
for _, fileStr := range []string{"a.png", "b.png", "c.png"} {
    if err = pdf.Image(fileStr, 10, 6, 30, 0, false, "", 0, ""); err == nil {
        break;
    }
}

the following, admittedly more cumbersome, construct can be used:
if pdf.Ok() {
    for _, fileStr := range []string{"a.png", "b.png", "c.png"} {
        if pdf.Image(fileStr, 10, 6, 30, 0, false, "", 0, ""); pdf.Ok() {
            break;
        } else {
            pdf.ClearError(); // Mistakenly omitted until recently
        }
    }
}

I would prefer if you do a new pull request with a clean commit history

I agree.

Building a PDF page can consist of a lot of small actions. Having an error accumulator, the way gofpdf does it, allows you to check for an error at the end of a bunch of these actions rather than after each individual one.

@jung-kurt cool, I'll make a new PR with a single commit. Would you like to see it without the f.Images block (as @stanim suggested, it could be dropped) or do you want me to wait until you've thought about how to handle the internals?
Out of personal usage experience I'm not entirely convinced to drop it. We currently generate PDFs with 72 remote images on demand. These could all be different, but could also be the same, there is no way to know this(in our case). Having that check in place drops the need to re-download the image and assign it. This might be optimising out of the scope for this PDF generator though.

@jelmersnoeck
Why not wrap the RegisterRemoteImage with a function which checks if it has been downloaded already. This would give the same result and prevents us from exposing unnecessary internals. To keep track of urls it is common in Go to use a map of empty structs, as this consumes the least memory:
images:= make(map[string]struct{})

func RegisterRemoteImage(f *gofpdf.Fpdf, urlStr, tp string) {
    _, ok:= images[urlString]
    if ok {
        return
    }
    fhttp.RegisterRemoteImage(f, urlStr, tp)
}

(I propose here also to use fhttp instead of httpfpdf to keep it shorter. So the pattern for contributed packages could be fxxx.)
If you need the image infos, you can use a map of ImageInfoType instead of empty structs. I think this should be solved at application level, not inside the PDF generator. Anyway I think f.images should never be exposed, as a last resort you could add a new method:
var NoImageInfo ImageInfoType
func (f *Fpdf) GetImageInfo(urlStr string) (info ImageInfoType) {
    info, ok:= f.images[urlStr]
    if !ok {
        return NoImageInfo
    }
    return info
}

Each of these recommendations sound good to me.

Perfect. I'll change it to use it's own image map so it doesn't have to touch the internals and open a new PR.
I'll close this PR and link it to the other one once it's in for future references.

After a night sleep, maybe GetImageInfo is maybe the best option as it has two advantages:

no external bookkeeping of the image map for other applications
universal access to image width and height independent whether it comes from a file/url/...

@stanim Good points.
I am inclined to use the following signature rather than return a special variable.
func (f *Fpdf) GetImageInfo(urlStr string) (info ImageInfoType, ok bool) {
        var infoPtr *ImageInfoType
        infoPtr, ok = f.images[urlStr]
        if ok {
                info = *infoPtr
        }
        return
}

If this looks good, I'll check it in.

Fine for me!
Op 19 aug. 2015 12:52 schreef "Kurt Jung"<EMAIL_ADDRESS>
@stanim https://github.com/stanim Good points.
I am inclined to use the following signature rather than return a special
variable.
func (f *Fpdf) GetImageInfo(urlStr string) (info ImageInfoType, ok bool) {
var infoPtr *ImageInfoType
infoPtr, ok = f.images[urlStr]
if ok {
info = *infoPtr
}
return
}
If this looks good, I'll check it in.
—
Reply to this email directly or view it on GitHub
https://github.com/jung-kurt/gofpdf/pull/35#issuecomment-132538570.

Done


nasc: Add SVCLOC and nzchk documentation

NASC behaves similarly to the NAS/NASWII servers, so some information has been extracted from existing docs of those servers.
Special thanks to:

https://github.com/WiiLink24/wfc-server/blob/main/nas/auth.go
https://wiki.tockdom.com/wiki/Network_Protocol/Server#naswii.nintendowifi.net

NASC behaves similarly to the NAS/NASWII servers

IIRC it's the exact same server (not the same physical server, but the same codebase). NASC stands for NAS-CTR

Yeah that makes sense. Should I change this phrasing then?

This is the authentication server of the 3DS. It is the succesor of the NAS and NASWII servers on the Nintendo DS(i) and the Wii.

Yeah that makes sense. Should I change this phrasing then?

This is the authentication server of the 3DS. It is the succesor of the NAS and NASWII servers on the Nintendo DS(i) and the Wii.

I would, yeah. It's also worth noting that this section:

A single endpoint (ac) is used for all requests. Other requests are redirected to http://www.nintendo.com.

Is also wrong. While games may officially only use /ac, other endpoints used by the Wii/DS do still exist and still work (at least partially)
For example the /pr endpoint, which checks for profanity, gives a proper response in NASC, and can be interacted with by making a custom request in NintendoClients

For example the /pr endpoint, which checks for profanity, gives a proper response in NASC

oh! I had only tested the /download endpoint which didn't work, so I didn't try others

oh! I had only tested the /download endpoint which didn't work, so I didn't try others

I can't actually get it to give me a response that makes sense, but it at least gives a response. Base on WiiLink it seems like there should be a 0 for every word, delimited by \t. But when I try sending multiple words I always just get back a single 0, even if it contains profanity

I can't actually get it to give me a response that makes sense, but it at least gives a response. Base on WiiLink it seems like there should be a 0 for every word, delimited by \t. But when I try sending multiple words I always just get back a single 0, even if it contains profanity

I tested with the NAS and NASWII domains and it gives the same results. I sent a message on the WiiLink discord server to see if I can get an answer about this

I think this should be good now then

lgtm


Issue with colors in iOS app when using GlobalUseMetal := True

Hi. Thank you for the update for last version of Sydney. I have an issue with the rendering of an alrectangle with Bitmap fill (Png, Jpg) when I use GlobalUseMetal := True; in my project as it greatly increases speed in iOS. The problem is a Hue shift in colors of the image such as red to blue, cyan to yellow and so on.
Edit...    Just added GlobalUseMetal := True; to the ALFmxControls project and it shows there too in every control, plus alvideoplayer also I think is the source of the app crashes.

hi @enri690 yes actually GlobalUseMetal := True is not yet supported. I don't think their will be much to do to migrate to Metal (except maybe in ALVideoPlayer), but I prefere to reclassify this issue as new feature

Hello, everything has been fixed in the latest committed version.


Cant connect to the AIM self hosted server on a VM

Thanks for reporting. It looks like there might be a networking issue.
I don't have much to go with here. Would you please post more details, including:

your server config file
screenshot of your aim client server config window
server logs

What's your virtualbox network setting mode? Bridged?

Closing this issue since it's been a week with no follow-up. Feel free to reopen if need be.


HDDS-7354. SchemaV3 blockData not deleted in table

What changes were proposed in this pull request?
If using SchemaV3, the blocks are deleted on disk but the blockData is not deleted accordingly due to the misuse of the key in deleteViaTransactionStore.
Keep using the unified key format as V2 and V3 both delete blocks via TXN.
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-7354
How was this patch tested?
UT

@captainzmc Please cherry-pick this to 1.3.0 release branch when it's merged.


Blog with Keyconf 24 invitation

@ahus1 @tnorimat @francis-pouatcha Thanks everyone for the review!


Erlang error on assets watcher

For feature requests, please be as descriptive as possible, providing a
real use case and context of how you imagine the feature to work.
For bug reports please fill the following info:
Environment

Kitto version: 0.8.0
Elixir / Hex version (mix hex.info):
Hex:    0.17.7
Elixir: 1.6.6
OTP:    20.2

Built with: Elixir 1.6.4 and OTP 19.3

Node / NPM version (node -v) (npm -v): 6.14.3 / 6.1.0
Operating system: Windows

Current behavior
Setting up my Kitto dashboard, already ran mix devs.get, npm install, etc. Problem happens in 'mix kitto.server'. The server starts, but then the asset watcher hits the following error:
$ mix kitto.server

12:44:02.409 [info]  Starting assets watcher at: <IP_ADDRESS>:8080

12:44:02.427 [error] Process #PID<0.87.0> raised an exception
** (ErlangError) Erlang error: :eacces
    erlang.erl:2118: :erlang.open_port({:spawn_executable, 'c:/Projects/reactApps/kittodashable/node_modules/.bin/webpack-dev-server'}, [{:env, [{'KITTO_ASSETS_HOST', '<IP_ADDRESS>'}, {'KITTO_ASSETS_PORT', '8080'}]}, :use_stdio, :exit_status, :binary, :hide, {:args, ["--stdin", "--progress"]}])
    (elixir) lib/system.ex:629: System.cmd/3
Compiling 1 file (.ex)
warning: redefining module Mix.Tasks.Kitto.Server (current version loaded from c:/Users/Missa/.mix/archives/kitto-0.8.0/kitto-0.8.0/ebin/Elixir.Mix.Tasks.Kitto.Server.beam)
  lib/mix/tasks/kitto.server.ex:1

12:44:02.838 [info]  Starting Kitto server, listening on <IP_ADDRESS>:4000

Expected behavior:
Want the dashboard assets to loader in the DOM

@melissable Thanks for reporting this. I'll need help to debug this fast, as I don't happen to have a windows machine around.
Are you able to start c:/Projects/reactApps/kittodashable/node_modules/.bin/webpack-dev-server from your cmd without problems?

Hi @Zorbash ,
I was not to start that command. I got the following error:
Error: Cannot find module 'webpack/bin/config-yargs'
    at Function.Module._resolveFilename (module.js:476:15)
    at Function.Module._load (module.js:424:25)
    at Module.require (module.js:504:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (c:\Projects\reactApps\kittodashable\node_modules\webpack-dev-server\bin\webpack-dev-server.js:48:1)
    at Module._compile (module.js:577:32)
    at Object.Module._extensions..js (module.js:586:10)
    at Module.load (module.js:494:32)
    at tryModuleLoad (module.js:453:12)
    at Function.Module._load (module.js:445:3)

Thank you for your quick response!!

Also, fyi, I ran that command from within this project directory.

Can you also please try the following:

Run npm run start from the root of the project
Or try bumping the webpack-dev-server dependency version in package.json, start with version 2.11.1.

Opt 1: didn't work - got these errors
$ npm run start
npm ERR! Windows_NT 10.0.17134
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\**********\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "run" "start"
npm ERR! node v8.11.3
npm ERR! npm  v3.10.10

npm ERR! missing script: start
npm ERR!
npm ERR! If you need help, you may report this error at:
error at:                                      >
npm ERR!     <https://github.com/npm/npm/issues>                                               any support requ
npm ERR! Please include the following file withe\npm-debug.log any support request:
npm ERR!     C:\Projects\reactApps\*******/kittodashable\npm-debug.log

Opt 2 - I already had dependency version of 2.11.1 on webpack-dev-server in my package.json
Any other thoughts? I've scoured the webs trying to find a solution.
Thanks,
Melissa

Hello, again-
I read somewhere that this issue might be related to Windows permissions. So I have tried running this repository on my Linux computer and seem to have gotten further, as a page is rendering (see first image) and I was able to populate the 404 page.
Here is the record of the command prompt, up the point where I attempted and received back the 404 page:
$ mix kitto.server

23:47:58.787 [info]  Starting assets watcher at: <IP_ADDRESS>:8080
23:47:58.901 [info] Starting Kitto server, listening on <IP_ADDRESS>:4000
23:47:59.023 [error] backend port not found: :inotifywait

 70% 2/2 build modulesevents.js:160
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE <IP_ADDRESS>:8080
    at Object.exports._errnoException (util.js:1020:11)
    at exports._exceptionWithHostPort (util.js:1043:20)
    at Server._listen2 (net.js:1271:14)
    at listen (net.js:1307:10)
    at net.js:1417:9
    at _combinedTickCallback (internal/process/next_tick.js:83:11)
    at process._tickCallback (internal/process/next_tick.js:104:9)
    at Module.runMain (module.js:613:11)
    at run (bootstrap_node.js:394:7)
    at startup (bootstrap_node.js:160:9)
23:48:22.889 [info] GET /dashboards/sample
23:48:22.929 [info] Sent 200 in 39ms
23:48:23.162 [info] GET /assets/application.js
23:48:23.171 [info] Sent 301 in 8ms
23:48:23.176 [info] GET /assets/widgets.js
23:48:23.177 [info] Sent 301 in 304µs
23:48:29.174 [info] GET /dashboards
23:48:29.174 [info] Sent 301 in 60µs
23:48:29.211 [info] GET /dashboards/sample
23:48:29.215 [info] Sent 200 in 4ms
23:48:29.339 [info] GET /assets/application.js
23:48:29.339 [info] Sent 301 in 261µs
23:48:29.341 [info] GET /assets/widgets.js
23:48:29.342 [info] Sent 301 in 1ms
23:48:33.658 [info] GET /dashboars
23:48:33.660 [info] Sent 404 in 1ms

Your continued help with this is greatly appreciated.
Thank you,
Melissa

It's such a relief that you have a Linux computer! The screenshots you provided are actually quite useful as I can identify 2 problems:

There's some other server running on you machine, listening on 8080 (use lsof -i tcp:8080 to find the process id and if possible stop it)
I looks like you attempted to access dashboars instead of dashboards, hence the 404.

To customise the port of the asset server see: https://github.com/kittoframework/kitto/wiki/Customizing-the-Asset-Watcher

So, when I made that screenshot, it was showing the 404 url I tested, aka dashboars because I was trying to see if a 404 page would render which it did. I've attached that screenshot. The solo dot page that I sent the screenshot yesterday is what renders on the default url localhost:4000/dashboard/sample
I've reattached the two screenshots just as clarification. Right out of the gate I get the following dashboard sample and 404 page renders.

So, I was able to manipulate error.html.eex to play with the css. Attached example.

I tried option 1 of your suggestions and I am new at this, but it didn't look like anything else was running on port 8080.
lsof -i tcp:8080
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
node    9028 melissac   15u  IPv4 223913      0t0  TCP localhost:http-alt (LISTEN)

I ran mix kitto.server again and reran lsof -i tcp:8080 and got this:
mix kitto.server

12:09:33.510 [info]  Starting assets watcher at: <IP_ADDRESS>:8080
12:09:33.607 [info] Starting Kitto server, listening on <IP_ADDRESS>:4000
12:09:33.712 [error] backend port not found: :inotifywait

 70% 2/2 build modulesevents.js:160
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE <IP_ADDRESS>:8080
    at Object.exports._errnoException (util.js:1020:11)
    at exports._exceptionWithHostPort (util.js:1043:20)
    at Server._listen2 (net.js:1271:14)
    at listen (net.js:1307:10)
    at net.js:1417:9
    at _combinedTickCallback (internal/process/next_tick.js:83:11)
    at process._tickCallback (internal/process/next_tick.js:104:9)
    at Module.runMain (module.js:613:11)
    at run (bootstrap_node.js:394:7)
    at startup (bootstrap_node.js:160:9)

12:09:47.625 [info] GET /dashboards/sample
12:09:47.662 [info] Sent 200 in 37ms
12:09:47.762 [info] GET /assets/application.js
12:09:47.764 [info] GET /assets/widgets.js
12:09:47.768 [info] Sent 301 in 6ms
12:09:47.768 [info] Sent 301 in 4ms

301 - moved permanently on application.js and widget.js ?? Sure enough, neither of those is in the assets folder. On further inspection, it looks like the new kitto installer does not provide any of the items in the priv folder, including kitto.js and helpers.js, which I know are needed to render the dashboard.
I'm pushing to a repository, if that might be helpful for you to see. But it does feel that the mix kitto.new did not install everything needed to render the sample dashboard.
Repo link to follow.

https://github.com/melissable/kittable.git
Thank you for all your help, @Zorbash !
Melissa

@melissable Please review https://github.com/melissable/kittable/pull/1/files and let me know.


Enchance Profile Page

Layout change. Need to distribute components/content in a more visually pleasing way, especially for desktop view.

Upload profile photo/avatar by clicking '+' icon on Avatar
Layout adjustment to just show account details, order history, and alerts

Pending changes to buyer side 'Orders and Reviews' tab


Missing wrapper for listening to unix domain socket

The signature was added in uWebSockets#1486, but as far as I can tell it has not been wrapped yet. I know that this is a niche feature with very little use, but it would reduce the mental burden of having to pick a port number when running different applications behind a proxy.

Is there currently any way to manually access this with the .js lib or does it need to be wrapped first?


json: unsupported type: map[interface {}]interface{}

Hi!
I've got error "json: unsupported type: map[interface {}]interface{}".
Applied monitor template:
- name: 'Critical vulnerabilities detected'
  enabled: true
  schedule:
      period:
          interval: 8
          unit: HOURS
      cron: null
  inputs:
    - search:
          indices:
            - wazuh-alerts-3.x-*
          query:
              aggregations: {}
              query:
                  bool:
                      adjust_pure_negative: true
                      boost: 1
                      filter:
                        - range:
                              '@timestamp':
                                  boost: 1
                                  format: epoch_millis
                                  from: '{{period_end}}||-1d'
                                  include_lower: true
                                  include_upper: true
                                  to: '{{period_end}}'
                        - term:
                              data.vulnerability.severity:
                                  boost: 1
                                  value: Critical
              size: 0
  triggers:
    - name: Above 10 Critical vurnerabilities detected per 1 hour
      severity: "4"
      condition: ctx.results[0].hits.total.value > 10
      actions:
	- name: Send notification to Opsgenie (Vulnerability issues)
          destinationId: opsgenie_integration:_secops_group
          subject: ""
          message: "{\n \"message\": \"{{ctx.monitor.name}}. Trigger: {{ctx.trigger.name}}.\",
              \n \"description\": \"{{ctx.monitor.name}}. Trigger: {{ctx.trigger.name}}.
              Period start: {{ctx.periodStart}}. Period end: {{ctx.periodEnd}}.\",
              \n \"entity \":\"rtrx_security\",\n \"priority\": \"P{{ctx.trigger.severity}}\",\n
              \"alias\": \"{{ctx.trigger.name}}\"\n}"

Similar problem described here: https://github.com/mattn/anko/issues/264
Could we fix? Might migrate from encoding\json to github.com/json-iterator/go ?
Thanks!
BR, Eugene Fateev

This also happens when using the sample monitor... is this software in a working state at all?

Same exact problem, I even copy pasted existing ymls into the working dir and it throws the same error:
DEBU[0000] Running monitor: simplemon
FATA[0000] Unable to parse monitor correctly: json: unsupported type: map[interface {}]interface {}
Line 59 on https://github.com/mihirsoni/odfe-monitor-cli/blob/master/commands/push.go is where the fatal is being thrown.

@mentalburden Could you provide sample YAML monitor ? You can redact the other details. Believe must be missing some new fields from alerting.

@mihirsoni The sample monitor in the README does not work.

Hello,
The same problem occurred to me when I used this by the Releases section, but when I cloned the repo to my local and runned it, it was perfectly fine.
I realized Releases is 5 commits behind the master, I forked it and released a new package up until the latest commit.
Working fine on my end:
https://github.com/emretanriverdi/odfe-monitor-cli
I hope it works for you too!


Benchmarks and performance enhancements

THIS BRANCH IS NOT CLEAN.
I am sharing this with you guys to share with you two main things:

How I started to implement our benchmarks versus other pools ( some more details on our chat )
How I improved our performance ( Here I need help with types, you know I am not so familiar with TS )

Hopefully both of you can help to clean up and improve this stuff so that we release a new beta version, now we could potentially also deprecate the maxTasks and avoid to setMaxListeners.
I guess this branch also have some conflicts with the master.
If you want ( please do lol ) run the benchmarks you will need to install https://github.com/sharkdp/hyperfine and run our bench.sh script ;)
Have fun with this and please help to clean up and prepare all of this for a beta release

I will look into this tomorrow
Good night :wave:

I will look into this tomorrow
Good night 👋

Yes please bro if you can feel free to improve and clean up directly

I was also thinking the internalExecute changes on the Abstract Pool since that could be beneficial also for cluster pools.
I did it only for thread for my own simplicity

I think you should:

Remove other pool packages dev dependencies in the main package.json;
Make hyperfine a dev dependencies with scripts to use it;
Merge and remove the previous pool benchmarking code.

I think you should:

Remove other pool packages dev dependencies in the main package.json;
Merge and remove the previous pool benchmarking code.

We could remove the other packages and run an npm install --save-dev OTHER_TOOL when we need?
Yes other benchmarking code will be almost removed :)

I think you should:

Remove other pool packages dev dependencies in the main package.json;
Merge and remove the previous pool benchmarking code.

We could remove the other packages and run an npm install --save-dev OTHER_TOOL when we need?

The main package.json does not need at all other pools package. Event the previous pools benchmarking code works once you do a npm install in benchmarks directory and run node myBench.js in it.

I think you should:

Remove other pool packages dev dependencies in the main package.json;
Merge and remove the previous pool benchmarking code.

We could remove the other packages and run an npm install --save-dev OTHER_TOOL when we need?

The main package.json does not need at all other pools package. Event the previous pools benchmarking code works once you do a npm install in the benchmarks directory and run node myBench.js in it.

I am not sure I go it, in the main package.json we don't have other tools.
We have other tools only in the benchmarks package.json

I think you should:

Remove other pool packages dev dependencies in the main package.json;
Merge and remove the previous pool benchmarking code.

We could remove the other packages and run an npm install --save-dev OTHER_TOOL when we need?

The main package.json does not need at all other pools package. Event the previous pools benchmarking code works once you do a npm install in the benchmarks directory and run node myBench.js in it.

I am not sure I go it, in the main package.json we don't have other tools.

Open and read the file and you see two of them ;)

package.json

OMG you are right

Next thing that I will do is clean up the bencharmks vs other tools to pass the npm run lint.
Need your help with the promiseMap field that should not be any on the declaration @jerome-benoit  @Shinigami92

@pioardi I think I can help but cannot split myself into several pieces to work in parallel
Trust me I'm human :wink:
Yes I'm fast, but currently I'm working on the strategies branch

@pioardi I think I can help but cannot split myself into several pieces to work in parallel
Trust me I'm human 😉
Yes I'm fast, but currently I'm working on the strategies branch

Ahah that's fine take your time, in the meanwhile I am going to clean up a little more where I am able to :)

@jerome-benoit  @Shinigami92  this PR is now more clean, just as summary:

we need to remove the any and rename the JustTempValue type
Decide if the new internalExecute can be now "promoted" to the AbstractPool ( I guess yes since it remove a lot of overhead having more and more listeners ). If yes we then can remove the maxTasks option.

@pioardi so having a first look into this PR...
IMO we should split the PR into two:

reorganizing and building up the benchmark folder
add performance improvements

The first one should not contain changes within src folder
I think you will be happy some day when looking up into a clean PR instead of looking up for the one PR that does contain performance improvements but it was a benchmark PR and you didn't know anymore that it was in the benchmark PR... :shrug: that's just chaotic

Beside that, we could create a sub-project in the benchmarks folder and it has it's own package.json
A bit like a monorepo, but sadly I have zero knowledge how to set it up in a way to be controlled from the root project
So maybe it's just okay to when to benchmark, then you need to cd benchmarks && npm run benchmark

@pioardi so having a first look into this PR...
IMO we should split the PR into two:

reorganizing and building up the benchmark folder
add performance improvements

The first one should not contain changes within src folder
I think you will be happy some day when looking up into a clean PR instead of looking up for the one PR that does contain performance improvements but it was a benchmark PR and you didn't know anymore that it was in the benchmark PR... 🤷 that's just chaotic
Beside that, we could create a sub-project in the benchmarks folder and it has it's own package.json
A bit like a monorepo, but sadly I have zero knowledge how to set it up in a way to be controlled from the root project
So maybe it's just okay to when to benchmark, then you need to cd benchmarks && npm run benchmark

So about the last point, we exactly did that, we created a sub-project with a package.json ( external-pools is a sub-project ).
To have 2 Pull request well, in general I would agree with you but you know changes are almost done now into this branch another couple of strokes and we have done

I mean, performance enhancement is really into 1 file so is true that are 2 different things into one PR, but one is little

I mean, performance enhancement is really into 1 file so is true that are 2 different things into one PR, but one is little

This is just laziness but you are the boss
I need to understand what you added here with this performance improvement...

I mean, performance enhancement is really into 1 file so is true that are 2 different things into one PR, but one is little

This is just laziness but you are the boss
I need to understand what you added here with this performance improvement...

Yeah Sunday laziness lol
Anyway I mean I agree with your feedback but since we have already everything here why split things just for one file

Yeah Sunday laziness lol
Anyway I mean I agree with your feedback but since we have already everything here why split things just for one file

Because it's hard for me, your team-worker, to get into the benchmark vs source-code files in the review tab and check 28 different files at once

Okay so if I understand it correctly the benchmarks/internal folder contains benchmarks for our internal testing and playing with e.g. algos
And the benchmarks/versus-external-pools is the poolifier against the world folder that is for demoing and :mechanical_arm:

Yeah Sunday laziness lol
Anyway I mean I agree with your feedback but since we have already everything here why split things just for one file

Because it's hard for me, your team-worker, to get into the benchmark vs source-code files in the review tab and check 28 different files at once

Oh ok mmmmmm I amo Sorry for that, yiu can also Mark the files as viewed so should be more Easy...
Mmmm anyway you are right please let me know of you feel Is too hard for you

Oh ok mmmmmm I amo Sorry for that, yiu can also Mark the files as viewed so should be more Easy...
Mmmm anyway you are right please let me know of you feel Is too hard for you

It's fine for now, but keep this is mind for later PRs

Okay I think I'm out for today
I need some rest and play games and chill a bit
See ya tomorrow :wave:

Ok so guys, @Shinigami92  ( thank you thank you bro ) fixed the any type on the promiseMap and improved the general shape.
I added the performance enhancement to the abstract pool so that also the cluster pool will inherit this enhancement.
We just need to increase the coverage and I guess we have almost done

Now this PR is almost ready to go guys, I will hold on to have your final review

@pioardi

I also removed the unregisterWorkerMessageListener since is no more needed now.

Why isn't it needed anymore? Could you explain?
I don't really know if this could have bad side effects and even if the worker was removed from our pool, it never gets garbage collected because it has a listener attached :thinking:

My working day begins, so I'm out for a while :wave:

Could you please update the PR description before the merge?

I am going to, thanks jerome and shini

I am going to increase our coverage as fast as I need and then we will release another beta ( or maybe an alpha at this point ? )

I am going to increase our coverage as fast as I need and then we will release another beta ( or maybe an alpha at this point ? )

The github action workflow is currently written in a way so it only supports beta or not beta
https://github.com/pioardi/poolifier/blob/be0676b3936d75f22ce55b0f71a1fb03d008a01c/.github/workflows/npmpublish.yml#L57-L67

I am going to increase our coverage as fast as I need and then we will release another beta ( or maybe an alpha at this point ? )

The github action workflow is currently written in a way so it only supports beta or not beta
https://github.com/pioardi/poolifier/blob/be0676b3936d75f22ce55b0f71a1fb03d008a01c/.github/workflows/npmpublish.yml#L57-L67

Ok then we will go with another beta, not an issue bro


Unknown next node when use Guzzleplugin

[env]
laravel: 8
[step]

Call remote with guzzle

[result]
Next node is unknown, callstack is correct.

Fixed!


Northeast region

Now that the conditions data is bilingual and pulling from the CER, the database is missing an entry for Northeast/BC. There are two Northeast regions. One in BC and one in Ontario.
Ask Curtis to fix this.

Fixed with c2262c4
Still need to tell Curtis


Need to set max limit to fields in the playground

Hi,
It seems you need to set that limit, because CSS don't have unlimited values feature.

And it could brake that CSS property.

or just setting a max value on the input


adding grumphp, fixing style, narrowing autoload namespace

Codecov Report

Merging #1 into master will not change coverage.
The diff coverage is 0%.

@@            Coverage Diff            @@
##             master       #1   +/-   ##
=========================================
  Coverage     15.73%   15.73%
  Complexity       56       56
=========================================
  Files             1        1
  Lines           178      178
=========================================
  Hits             28       28
  Misses          150      150

Impacted Files
Coverage Δ
Complexity Δ

src/Zend/Auth/Adapter/Ldap.php
15.73% <0%> (ø)
56 <0> (ø)
:arrow_down:

Continue to review full report at Codecov.

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


replace sys.exit with exceptions

using sys.exit is not very nice way how to handle exceptions - use Exceptions instead

This cleans out the code quite well and makes it NOT "exit" :)
I agree that was bad practice for sure!
Thanks again Yed!


Mount workspace from s3 if no gcs access

see https://github.com/BLSQ/openhexa-app/pull/617

How do you authenticate to S3/Minio to mount the bucket ?


cannot use Adafruit_RGBMatrixQT with adafruit_led_animation

I wanted to use Adafruit_RGBMatrixQT to display some animations
adafruit_led_animation various animations expect a pixels object.
I wanted to use IS31FL3741_PixelBuf but it was missing the "write" method.
Please find below an adapter I wrote that allows to create a pixels object.
I would like to know:

is being able to create an adafruit_pixelbuf.PixelBuf from Adafruit_RGBMatrixQT is a valid need?
is an adapter such as the one below a relevant way to address this issue?

Thank you in advance for your feedback.
WIDTH = 13
HEIGHT = 9
LEDS_MAP = tuple(
    (
        address
        for x in range(WIDTH)
        for y in range(HEIGHT)
        for address in Adafruit_RGBMatrixQT.pixel_addrs(x, y)
    )
)

class RGBMatrixQTToPixelBufAdapter(Adafruit_RGBMatrixQT):
    """Additional properties so that Adafruit_RGBMatrixQT can be used with IS31FL3741_PixelBuf."""

    def __init__(
        self,
        i2c,
        allocate,
    ):
        super().__init__(i2c, allocate=allocate)

    def write(self, mapping, buffer):
        temp_buffer = FrameBuffer(
            buffer,
            WIDTH,
            HEIGHT,
            adafruit_framebuf.RGB888,
        )
        self.image(temp_buffer)
        self.show()

i2c = board.STEMMA_I2C()
is31 = RGBMatrixQTToPixelBufAdapter(i2c, allocate=adafruit_is31fl3741.PREFER_BUFFER)
# is31.set_led_scaling(0xFF)
is31.set_led_scaling(1)
is31.global_current = 0xFF
is31.enable = True
pixels = IS31FL3741_PixelBuf(is31, LEDS_MAP, init=False, auto_write=False)

with the gist of the full led_animation demo
https://gist.github.com/mraveloarinjaka/69ad585d1f0af06754366f465c548e96

resolved by #22

Thank you


remark-prism causes deploy fail on Netlify

Errors deploying to Netlify:
3:46:56 PM: $ yarn next build
3:46:56 PM: yarn run v1.22.4
3:46:56 PM: $ /opt/build/repo/node_modules/.bin/next build
3:46:57 PM: info  - Using webpack 5. Reason: no custom webpack configuration in next.config.js https://nextjs.org/docs/messages/webpack5
3:46:57 PM: warn  - No build cache found. Please configure build caching for faster rebuilds. Read more: https://nextjs.org/docs/messages/no-cache
3:46:57 PM: info  - Checking validity of types...
3:47:01 PM: info  - Creating an optimized production build...
3:47:26 PM: Failed to compile.
3:47:26 PM:
3:47:26 PM: ModuleNotFoundError: Module not found: Error: Can't resolve 'canvas' in '/opt/build/repo/node_modules/jsdom/lib/jsdom'
3:47:26 PM: > Build error occurred
3:47:26 PM: Error: > Build failed because of webpack errors
3:47:27 PM:     at /opt/build/repo/node_modules/next/dist/build/index.js:17:924
3:47:27 PM:     at async Span.traceAsyncFn (/opt/build/repo/node_modules/next/dist/telemetry/trace/trace.js:6:584)
3:47:27 PM: error Command failed with exit code 1.

tried yarn add canvas (also needed brew install pkg-config pixman cairo pango), then another error:
4:13:52 PM: $ yarn build
4:13:52 PM: yarn run v1.22.4
4:13:52 PM: $ next build
4:13:53 PM: info  - Using webpack 5. Reason: no custom webpack configuration in next.config.js https://nextjs.org/docs/messages/webpack5
4:13:53 PM: warn  - No build cache found. Please configure build caching for faster rebuilds. Read more: https://nextjs.org/docs/messages/no-cache
4:13:53 PM: info  - Checking validity of types...
4:13:58 PM: info  - Creating an optimized production build...
4:14:26 PM: Failed to compile.
4:14:26 PM:
4:14:26 PM: ModuleNotFoundError: Module not found: Error: Can't resolve 'bufferutil' in '/opt/build/repo/node_modules/ws/lib'
4:14:26 PM: > Build error occurred
4:14:26 PM: Error: > Build failed because of webpack errors
4:14:26 PM:     at /opt/build/repo/node_modules/next/dist/build/index.js:17:924
4:14:26 PM:     at async Span.traceAsyncFn (/opt/build/repo/node_modules/next/dist/telemetry/trace/trace.js:6:584)
4:14:26 PM: error Command failed with exit code 1.

tried yarn add bufferutil, then another error:
4:16:48 PM: $ yarn build
4:16:48 PM: yarn run v1.22.4
4:16:49 PM: $ next build
4:16:49 PM: info  - Using webpack 5. Reason: no custom webpack configuration in next.config.js https://nextjs.org/docs/messages/webpack5
4:16:49 PM: warn  - No build cache found. Please configure build caching for faster rebuilds. Read more: https://nextjs.org/docs/messages/no-cache
4:16:49 PM: info  - Checking validity of types...
4:16:53 PM: info  - Creating an optimized production build...
4:17:18 PM: Failed to compile.
4:17:18 PM:
4:17:18 PM: ModuleNotFoundError: Module not found: Error: Can't resolve 'utf-8-validate' in '/opt/build/repo/node_modules/ws/lib'
4:17:18 PM: > Build error occurred
4:17:18 PM: Error: > Build failed because of webpack errors
4:17:18 PM:     at /opt/build/repo/node_modules/next/dist/build/index.js:17:924
4:17:18 PM:     at async Span.traceAsyncFn (/opt/build/repo/node_modules/next/dist/telemetry/trace/trace.js:6:584)
4:17:18 PM: error Command failed with exit code 1.

tried yarn add utf-8-validate, then another error:
4:19:34 PM: $ yarn build
4:19:34 PM: yarn run v1.22.4
4:19:34 PM: $ next build
4:19:35 PM: info  - Using webpack 5. Reason: no custom webpack configuration in next.config.js https://nextjs.org/docs/messages/webpack5
4:19:35 PM: warn  - No build cache found. Please configure build caching for faster rebuilds. Read more: https://nextjs.org/docs/messages/no-cache
4:19:35 PM: info  - Checking validity of types...
4:19:40 PM: info  - Creating an optimized production build...
4:20:08 PM: (node:1503) [DEP_WEBPACK_CHUNK_HAS_ENTRY_MODULE] DeprecationWarning: Chunk.hasEntryModule: Use new ChunkGraph API
4:20:22 PM: Failed to compile.
4:20:22 PM:
4:20:22 PM: ./node_modules/canvas/build/Release/canvas.node
4:20:22 PM: Module parse failed: Unexpected character '' (1:0)
4:20:22 PM: You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
4:20:22 PM: (Source code omitted for this binary file)
4:20:22 PM: > Build error occurred
4:20:22 PM: Error: > Build failed because of webpack errors
4:20:22 PM:     at /opt/build/repo/node_modules/next/dist/build/index.js:17:924
4:20:22 PM:     at async Span.traceAsyncFn (/opt/build/repo/node_modules/next/dist/telemetry/trace/trace.js:6:584)
4:20:22 PM: error Command failed with exit code 1.

set externals.canvas = {}; in webpack config, then another error:
4:28:19 PM: $ yarn build
4:28:20 PM: yarn run v1.22.4
4:28:20 PM: $ next build
4:28:21 PM: info  - Using webpack 4. Reason: custom webpack configuration in next.config.js https://nextjs.org/docs/messages/webpack5
4:28:21 PM: warn  - No build cache found. Please configure build caching for faster rebuilds. Read more: https://nextjs.org/docs/messages/no-cache
4:28:21 PM: info  - Checking validity of types...
4:28:27 PM: info  - Creating an optimized production build...
4:28:50 PM: info  - Compiled successfully
4:28:50 PM: info  - Collecting page data...
4:28:57 PM: info  - Generating static pages (0/28)
4:29:00 PM: Error occurred prerendering page "/articles/tags/javascript". Read more: https://nextjs.org/docs/messages/prerender-error
4:29:00 PM: Error: Module did not self-register: '/opt/build/repo/node_modules/canvas/build/Release/canvas.node'.
4:29:00 PM:     at Object.Module._extensions..node (internal/modules/cjs/loader.js:1188:18)
4:29:00 PM:     at Module.load (internal/modules/cjs/loader.js:986:32)
4:29:00 PM:     at Function.Module._load (internal/modules/cjs/loader.js:879:14)
4:29:00 PM:     at Module.require (internal/modules/cjs/loader.js:1026:19)
4:29:00 PM:     at require (internal/modules/cjs/helpers.js:72:18)
4:29:00 PM:     at Object.<anonymous> (/opt/build/repo/node_modules/canvas/lib/bindings.js:3:18)
4:29:00 PM:     at Module._compile (internal/modules/cjs/loader.js:1138:30)
4:29:00 PM:     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
4:29:00 PM:     at Module.load (internal/modules/cjs/loader.js:986:32)
4:29:00 PM:     at Function.Module._load (internal/modules/cjs/loader.js:879:14)
4:29:00 PM: Error occurred prerendering page "/articles". Read more: https://nextjs.org/docs/messages/prerender-error
4:29:00 PM: Error: Module did not self-register: '/opt/build/repo/node_modules/canvas/build/Release/canvas.node'.
4:29:00 PM:     at Object.Module._extensions..node (internal/modules/cjs/loader.js:1188:18)
4:29:00 PM:     at Module.load (internal/modules/cjs/loader.js:986:32)
4:29:00 PM:     at Function.Module._load (internal/modules/cjs/loader.js:879:14)
4:29:00 PM:     at Module.require (internal/modules/cjs/loader.js:1026:19)
4:29:00 PM:     at require (internal/modules/cjs/helpers.js:72:18)
4:29:00 PM:     at Object.<anonymous> (/opt/build/repo/node_modules/canvas/lib/bindings.js:3:18)
4:29:00 PM:     at Module._compile (internal/modules/cjs/loader.js:1138:30)
4:29:00 PM:     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
4:29:00 PM:     at Module.load (internal/modules/cjs/loader.js:986:32)
4:29:00 PM:     at Function.Module._load (internal/modules/cjs/loader.js:879:14)
4:29:00 PM: Error occurred prerendering page "/works". Read more: https://nextjs.org/docs/messages/prerender-error
4:29:00 PM: Error: Module did not self-register: '/opt/build/repo/node_modules/canvas/build/Release/canvas.node'.
4:29:00 PM:     at Object.Module._extensions..node (internal/modules/cjs/loader.js:1188:18)
4:29:00 PM:     at Module.load (internal/modules/cjs/loader.js:986:32)
4:29:00 PM:     at Function.Module._load (internal/modules/cjs/loader.js:879:14)
4:29:00 PM:     at Module.require (internal/modules/cjs/loader.js:1026:19)
4:29:00 PM:     at require (internal/modules/cjs/helpers.js:72:18)
4:29:00 PM:     at Object.<anonymous> (/opt/build/repo/node_modules/canvas/lib/bindings.js:3:18)
4:29:00 PM:     at Module._compile (internal/modules/cjs/loader.js:1138:30)
4:29:00 PM:     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
4:29:00 PM:     at Module.load (internal/modules/cjs/loader.js:986:32)
4:29:00 PM:     at Function.Module._load (internal/modules/cjs/loader.js:879:14)
4:29:00 PM: Error occurred prerendering page "/". Read more: https://nextjs.org/docs/messages/prerender-error
4:29:00 PM: Error: Module did not self-register: '/opt/build/repo/node_modules/canvas/build/Release/canvas.node'.
4:29:00 PM:     at Object.Module._extensions..node (internal/modules/cjs/loader.js:1188:18)
4:29:00 PM:     at Module.load (internal/modules/cjs/loader.js:986:32)
4:29:00 PM:     at Function.Module._load (internal/modules/cjs/loader.js:879:14)
4:29:00 PM:     at Module.require (internal/modules/cjs/loader.js:1026:19)
4:29:00 PM:     at require (internal/modules/cjs/helpers.js:72:18)
4:29:00 PM:     at Object.<anonymous> (/opt/build/repo/node_modules/canvas/lib/bindings.js:3:18)
4:29:00 PM:     at Module._compile (internal/modules/cjs/loader.js:1138:30)
4:29:00 PM:     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
4:29:00 PM:     at Module.load (internal/modules/cjs/loader.js:986:32)
4:29:00 PM:     at Function.Module._load (internal/modules/cjs/loader.js:879:14)

Eventually figured out that it has to do with remark-prism, removed in this commit: https://github.com/steiningerjakob/portfolio/commit/7de99dd649b2a8cd69fe5ec23f67812b3d771861#diff-ab4a47f482def4256edce1db3cb5d05baa017b8fcc2299b281057da8560d0bd6R111

@Josehower you can investigate the problem with jsdom and the other dependencies of remark-prism first quickly, and if you can't figure out a good solution fast, check out these alternatives for syntax highlighting:

remark-highlight.js
@stefanprobst/remark-shiki

One solution to this error that worked for me was changing remark-prism for remark-highlight
I created a PR to solve this
https://github.com/vickOnRails/next-starter-peacock/pull/9

Closing this issue after fixin the problem replacing problematic dependency:
Commit link


How to get email Headers?

Hi,
is it possible get email headers?
Thanks

gmail.get.email_source() is the solution


Add detection of Xiao boards

A simple addition to allow a different package variant to be used.
Needed for https://github.com/platformio/platform-nordicnrf52/pull/151

Updated.


MAINT: Replace scipy.take with numpy.take in FFT function docstrings.

Use numpy.take in the docstrings instead of the deprecated scipy.take.

Thanks @WarrenWeckesser, merged.

Thanks @WarrenWeckesser, merged.


Implement react-query for the stake page

PR for converting all the redux queries and mutations to react-query for the /stake page.
Current conversion progress

[x] Staking metrics
[x] Rebase timer
[x] Staking yield info
[x] External stake pool queries
[x] Staking token balances
[x] Staking mutations
[x] Test for correct balances, formatting, mutations, etc.

Hi @sam-potter , this looks very promising!
Do you have any benchmarks that you can share? e.g. a lighthouse score and/or performance report to demonstrate a quantifiable difference.

Great idea @0xJem, i'll do a couple benchmarks once all the queries have been converted over.

Latest merge includes changes in #1409 and #1407

@0xJem There is a slight improvement to the largest contentful paint and the time to interactive metrics. There should also be an improvement in the speed index, except because the version on develop takes so long to load the external stake pool data, Lighthouse incorrectly assumes the loading state as the final state.
Imo, I think these metrics undervalue the perceivable improvement in speed though.

I ran a side-by-side test and this branch was MUCH quicker. This is amazing work!
https://user-images.githubusercontent.com/91760036/152936588-761adb6c-109e-44e6-8a2b-911ac0f1430d.mp4

Just finished converting the mutations.
Realised I had accidentally made a UX change: in this branch, when you are unstaking from gohm the amount you enter into the input box is denominated in gohm. As opposed to in prod, where you denominate how much gohm you want to unstake in ohm.
I haven't immediately fixed it because I wanted to get some thoughts on this. Imo, inputting the gohm amount is more intuitive because that's the amount of gohm a user is unstaking, and if they wanted to unstake all their gohm they only need to do copy and paste the balance in their wallet, rather than working out the conversion rate to precise decimal places.
Would love to hear any elses thoughts on whether a user should input gohm or ohm in that situation.

Also for testing, unfortunately covalent doesn't support rinkeby :(( So you'll have to comment out the line in useStakeMutation that prevents staking/unstaking an amount greater than users balance.

Fixes #1302

Fixes #1302

Can you elaborate? I had also addressed this in #1414 (along with a race condition) and refactored the staking page to be much more easy to maintain.

Fixes #1302

Can you elaborate? I had also addressed this in #1414 (along with a race condition) and refactored the staking page to be much more easy to maintain.

I noticed your fix yesterday (as well as the work @alexleventer had done) and thank you both for that! Since all of those improvements you had done were for the staking queries/mutations with redux, it was annoying timing with this conversion to react-query stuff happening simultaneously.
I ended taking huge inspiration from #1414 (especially the comments) to convert everything over, and basically now this PR fully fixes the issue in #1302.
Except I'm not sure about this race condition, so I'll pm you to learn more about that.

I haven't immediately fixed it because I wanted to get some thoughts on this. Imo, inputting the gohm amount is more intuitive because that's the amount of gohm a user is unstaking, and if they wanted to unstake all their gohm they only need to copy and paste the balance in their wallet, rather than working out the conversion rate to precise decimal places.
Would love to hear any elses thoughts on whether a user should input gohm or ohm in that situation.

I agree with the gohm change as input. I have heard multiple complaints about this as well so I think it's safe to say we are not alone.

I'm unable to get stuff loading. Is there specific configuration for .env for this to work?

@mrunbanked yep you'll need all the provider keys setup in your .env. I'll pm that to you asap.

I noticed your fix yesterday (as well as the work @alexleventer had done) and thank you both for that! Since all of those improvements you had done were for the staking queries/mutations with redux, it was annoying timing with this conversion to react-query stuff happening simultaneously.
I ended taking huge inspiration from #1414 (especially the comments) to convert everything over, and basically now this PR fully fixes the issue in #1302.
Except I'm not sure about this race condition, so I'll pm you to learn more about that.

1414 has a few changes:

Cleans up/simplifies the JSX code so there are fewer inline conditionals

I think you've achieved this with splitting into components

Fixes the approval status not being retained (#1302)

This seems to be fixed in the current Fleek deployment

Fixes the CTA button showing "approve" after the approval transaction is finished (#1451)

This issue still exists (I just tested it)
You can fix it by porting over my changes to StakeThunk: https://github.com/OlympusDAO/olympus-frontend/blob/60c321615241f8478485239cabfff0ae6a54255d/src/slices/StakeThunk.ts#L145

I can close the 1414 PR after that!

This issue still exists (I just tested it)

Just implemented a fix for #1451, let me know if that's good.

This issue still exists (I just tested it)

Just implemented a fix for #1451, let me know if that's good.

Tested this on the Fleek build and the issue is fixed. 👍🏻

There are some conflicts with develop too

Looks good to me. If you can remove v1-stake and any redux Stake related stuff and it works, we can definitely merge this! @appleseed-iii can you confirm that we are ok to remove v1-stake page? There seems to be no UI access to it or a use-case at this point with no OHMv1 liquidity

I'm not sure that we can remove v1-stake don't we still have some unmigrated wallets?

Looks good to me. If you can remove v1-stake and any redux Stake related stuff and it works, we can definitely merge this! @appleseed-iii can you confirm that we are ok to remove v1-stake page? There seems to be no UI access to it or a use-case at this point with no OHMv1 liquidity

I'm not sure that we can remove v1-stake don't we still have some unmigrated wallets?

v1-stake page is not reachable through the UI. We will still keep the migration UI

my current hang up is not being able to get testnet balances to load

Fixed now @appleseed-iii
And watching them update in realtime, seriously satisfying
https://user-images.githubusercontent.com/15123145/154666468-0d66d89d-105e-44d2-b84a-eebf466ea060.mov


[cxx-interop] Flip the default value of SWIFT_ENABLE_EXPERIMENTAL_CXX_INTEROP

This changes the default value of the CMake flag SWIFT_ENABLE_EXPERIMENTAL_CXX_INTEROP from FALSE to TRUE.
C++ interop is an important part of the compiler. If necessary, it's still possible to disable it explicitly.

@swift-ci please build toolchain Windows

@swift-ci please test macOS

@swift-ci please smoke test macOS

@swift-ci please smoke test macOS

@swift-ci please smoke test macOS

The macOS test failure is unrelated, I'm merging this.


[UI] No option for 'Floating Point' as a watch display type

I'll preface this by saying that this program is terrific - actually being able to view memory in realtime is a godsend, after dealing with debug dolphin's obnoxious UI which only updates when you scroll over or click it.
The only thing that I feel is missing is the ability to set any watched memory address to display as a floating point.
Keep up the great work!!

Scratch that.  Awesome program!!!


想问一下，为什么不能直接将Z和D用来调制bakcbone，而是要分别添加扩散和去噪过程？

我觉得如果不用diffusion和danoise，而是使用您的KDSR中的KD约束或者更简单的linear+l1约束，是否也能起到差不都的效果。DiffIR中的diffusion究竟起到了多大的作用？谢谢！
I think if you don't use diffusion and denoise, but use the KD constraint in your KDSR or the simpler linear+l1 constraint, will it have similar effects? What role does diffusion in DiffIR play? Thanks!

Take a look at Figure 4 of the paper, DiffIRS2-V1 and DiffIRS2-V3. Using diffusion can further bring a gain of 0.5 FID. The noise modeling of Diffusion brings strong generation ability, which can further improve visual quality while ensuring that low-frequency information is not damaged


Allow customization of JSON schema $defs key and $ref

Suppose you have the following code:
class Person; end

class PersonMapper < Shale::Mapper
  model Person
end

require 'shale/schema'

puts Shale::Schema.to_json(
  PersonMapper,
  pretty: true
)

You get
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$ref": "#/$defs/Person",
  "$defs": {
    "Person": {
      "type": "object",
      "properties": {}
    }
  }
}

But, what if you want a $defs key and $ref calculated differently from the current logic? This is the cleanest way I've figured out so far:
def schema_with_custom_defs_key_and_ref(mapper, defs_key:)
  schema = Shale::Schema::JSONGenerator.new.as_schema(mapper)
  old_defs_key = mapper.model.name
  old_ref = schema['$ref']
  new_defs_key = defs_key
  new_ref = "#/defs/#{new_defs_key}"

  schema['$ref'] = new_ref
  schema['$defs'][new_defs_key] = schema['$defs'].delete(old_defs_key)

  schema
end

puts JSON.pretty_generate(schema_with_custom_defs_key_and_ref(PersonMapper, defs_key: 'User'))

Which gives
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$ref": "#/defs/User",
  "$defs": {
    "User": {
      "type": "object",
      "properties": {}
    }
  }
}

But it's quite cumbersome. What about something like
class PersonMapper < Shale::Mapper
  model Person

  json do
    defs_key 'User'
  end
end

Another option I guess would be to pass defs_key to as_schema, e.g.:
Shale::Schema::JSONGenerator.new.as_schema(PersonMapper, defs_key: 'User')

But I'm new to JSON schemas, I don't know which one makes more sense

What you're doing is probably the best way to change refs at the moment.
I'm curious, what is the use case for doing that?

I'm curious, what is the use case for doing that?

Basically these are my mappers:
module ShaleMappers
  class Model < Shale::Mapper
    model ::Model
    ...

Which would make the def key to be ShaleMappers_Model but I'd like to have just Model. Also, in case of a model namespace, I'm not enthusiast of having _ as separator, I'd like to use something else (I was even thinking of /, but I'm new to JSON schemas so I'm unsure it makes sense), so yeah stuff like this

(btw thanks for this library, I love that it doesn't have any open issues nor pull requests so much that opening one made me sad :joy: )

Thanks. Like I said, for now I would stick to what you're doing currently. I might implement it in the future, but for now I don't have much free time.


calibration viewer not labeling years on X axis

calibration-viewer.py is not showing the years label on the x axis. Joy noticed this problem working on the lab computer, which is running the following versions:
dvmdostem: v0.5.0 + about 6 commits
python: 3.8.0, installed manually and using virtual environment
matplotlib: 3.3.0
On my laptop, I have the following and the year (x) axis label is working fine:
dvmdostem: v0.5.0 + about 6 commits
python: 3.7.0, provided by pyenv and anaconda3-5.3.1
matplotlib: 2.2.3
Putting an embed in various places indicates that something about the newer matplotlib version simply makes it so that the x axis major tick labels are never set.

Original method for showing ticks only on lowest axis was to set visibility=False on all x axis tick labels, and then set visibility=True on the last (lowest) axis. For some reason in newer Matplotlib, this doesn't work, so I just changed the range of iteration over the axes list so that the visibility is not altered on the last axis.


Implement geolocation using ipinfo.io and the browser API & coordination of Location and Issue/Contact lookups

Geolocation needs to be implemented using ipinfo.io and the browser geolocation API. Part of this implementation will involve adding logic for the coordination of location and issue/contact lookups.

I'm breaking down the implementation of this issue into 2 PRs. The first will focus on the coordination of browser geolocation and ipinfo.io location lookup. The second will focus on the coordination of location and issue/contact lookups.

Attached is an example screen shot showing the message that is displayed when the user navigates to a call page with a house member that is in a district that shares a zip code with another district. This is called a 'split district'. This message is shown in bold on the lower right.

Fixed in PRs #28 and #33


Disable the clang errors on 'this' lambda captures.

I kinda feel like we should remove the unnecessary captures...

I kinda feel like we should remove the unnecessary captures...

Are you volunteering? :stuck_out_tongue:

Eventually.

Well I am just going to merge it now so we can use the CI.


Add support for task headers as symbols

Easily toggle through task headers (projects) using [cmd+r]

This is a duplicate of #75, which mentions the same functionality!


Refactor - break ag grid theme into smaller files

No change, only moving files

/release-pr

/release-pr


Register version 0.3.4

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/61707
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.3.4 -m "<description of version>" ab9ed00651497d0a80cd131d710f39a53311e6e9
git push origin v0.3.4


[Subtask] Add test create doris catalog to the web e2e test

Describe the subtask
Test create a catalog using provider as doris.
Parent issue
#2436

Should this be backported to 0.5.0 ? @yuqi1129 @LauraXia123

@LauraXia123 please do this.


Implement background upload support

The sdk should process all CafeRequests on behalf of the underlying Textile node.

Closing in favor of https://github.com/textileio/android-textile/issues/7


[Flutter Library] Flamingo

Link to project (GitHub):
https://github.com/hukusuke1007/flamingo
Describe the project in 2-3 sentences:
This is Firebase Firestore Model Framework Library for Flutter.
Can be manage document reference and collection reference. And provide Firestore and Cloud Storage wrap interface.
Why would Firebase developers be interested in this project?
Can be created safely Firestore Model like a Ballcap-iOS.
Can be used field data key of enum and accessed to Firestore data.
Can be managed safely Firestore references(collection reference and document reference).
etc...
Have you added a .opensource/project.json file to your site: Yes
https://github.com/hukusuke1007/flamingo/blob/master/.opensource/project.json

Love the project and the name, added!
https://github.com/firebase/firebaseopensource.com/commit/13ed5c09f0da26149badbfb16e3a97f881908e58

@hukusuke1007 we're making a new site similar to firebaseopensource.com but for all of Google. So it would be one place with projects like yours plus projects from Flutter, Angular, Android, etc.
Would it be ok if I included this project on that site? We're hoping to launch in around 2 months so if you're ok with it I'll add your project and send you a link when it's live.

@hukusuke1007 we're making a new site similar to firebaseopensource.com but for all of Google. So it would be one place with projects like yours plus projects from Flutter, Angular, Android, etc.
Would it be ok if I included this project on that site? We're hoping to launch in around 2 months so if you're ok with it I'll add your project and send you a link when it's live.

@samtstern OK.  Please added a Flamingo in your site. Thank you.

@samtstern OK.  Please added a Flamingo in your site. Thank you.


refactor: remove airflow1 support

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.04%) to 72.758%

Totals

Change from base Build<PHONE_NUMBER>:
0.04%

Covered Lines:
5005

Relevant Lines:
6879

💛  - Coveralls

This will be a major breaking change, any reason we are doing this? Maybe we can stop releasing new features or fixes for airflow1 for now and slowly remove it?

It has been 2 years since airflow 2 is released, until & unless it is being used by anyone there is no need to keep supporting it. If we stop releasing new features or fixes for airflow1 soon latest optimus will become outdated. Let's hear from people, if anyone wants it, yes we can consider providing the support for the same.


2.0: API - DO - Cluster provisioning fails on creation

Summary of Issue:
DO cluster creation fails when spinning up multiple masters and nodes
Steps to Reproduce:

Create a DO cluster that has (3)4gb masters and (3)4gb nodes

Expected Results:
We should be able to create a Digital Ocean cluster without issue.
Actual Results:
The masters and nodes create in Digital ocean just fine, however, the cluster task fails.
Dev Info: (fill out and add links to log files)

go version: 1.10
SG latest commit hash or release tag: d277a40a0a4441158b1011e14bb8e37aada16b74
Number of Masters and Nodes: 3 and 3
cloud provider: DO
sg.log

a9857ab9-ac7c-4d9a-bc8c-5419eeccf061.log
This may be related to #809
You get the restart button on the cluster task when it fails, after clicking it nothing looks to happen.

Enabling RBAC looks to solve this issue.


[AI AGENT] Create QuantumQuill.md

📝 Description
QuantumQuill is a cutting-edge AI agent with expertise in quantum computing and cryptography. It can assist researchers in solving complex quantum algorithms and help organizations secure their data using quantum-resistant encryption techniques.
pr for issue: #3034
💣 Is this a breaking change (Yes/No):

[ ] Yes
[x] No

🚧 How to migrate?
Don't need.
📝 Additional Information
lol

@donqu1xotechina I've submitted a pr for this issue.


[WIP] Deleted messages are properly gone from the UI without re-appearing briefly

cc chiragsalian kavimuru luacmartins
Details
The delete comment refactor P.R. introduced a bug where in some cases (usually if the api took some time to delete the message) if you successfully deleted a message it would re-appear for a second and then disappear again.
Now, if a message is successfully deleted it should not re-appear for a brief time.
Fixed Issues
$ https://github.com/Expensify/App/issues/10799
$ https://github.com/Expensify/App/issues/10753
Tests
For all the tests (not QA) do the following:

Add the following line to this line of ReportAPI.php in Web-Expensify so the API takes a little while to delete messages:+            sleep(2);
             self::editComment($authToken, $reportID, $reportActionID, '', $sequenceNumber);

Delete a comment online

Create a new message in any chat and then delete that message
The message should not re-appear 2 seconds after you deleted it and should be gone forever

Delete a comment offline

Create a new message in any chat
Turn off the internet connect so the global offline indicator appears

Delete the previously created message and go back online
The message should not re-appear after 2 seconds and should be gone forever

Delete an attachment online

Create a new attachment in any chat and then delete that attachment
The attachment should not re-appear 2 seconds after you deleted it and should be gone forever

Delete a attachment offline

Create a new attachment in any chat
Turn off the internet connect so the global offline indicator appears

Delete the previously created attachment and go back online
The attachment should not re-appear after 2 seconds and should be gone forever

[ ] Verify that no errors appear in the JS console

PR Review Checklist
Contributor (PR Author) Checklist

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

[x] I added steps for local testing in the Tests section
[ ] 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)

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

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

[ ] 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)
[ ] I followed proper code patterns (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product was added in all src/languages/* files
[ ] I verified any copy / text that was added to the app is correct English and approved by marketing by tagging the marketing team 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 followed the guidelines as stated in the Review Guidelines
[ ] 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)
[ ] 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 */
[ ] Any functional components have the displayName property
[ ] 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 a new CSS style is added I verified that:

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

[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

PR Reviewer Checklist
The Contributor+ will copy/paste it into a new comment and complete it after the author checklist is completed

[ ] 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 verified tests pass on all platforms & I tested again on:

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

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

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product was added in all src/languages/* files
[ ] I verified any copy / text that was added to the app is correct English and approved by marketing by tagging the marketing team 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 */
[ ] Any functional components have the displayName property
[ ] 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 a new CSS style is added I verified that:

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

[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

QA Steps

[ ] Verify that no errors appear in the JS console

Screenshots
Web
https://user-images.githubusercontent.com/6564265/189101275-308269ee-fa1d-4429-9a4a-1ad8ae53bb4e.mov
Mobile Web

Desktop

iOS

Android

Testing deletion of attachments and finishing with screenshots/videos. Once that's done the P.R. will be ready for reviews

@cristipaval @marcaaron I cannot add the remaining evidences here because my local dev environment is not working correctly, messages are duplicating and other strange pusher related behaviors are happening.
Removing WIP from this, can you please review despite that?

because my local dev environment is not working correctly, messages are duplicating and other strange pusher related behaviors are happening

Sure thing. That sounds really frustrating. We should get to the bottom of this one. It seems like it will be very hard to work on app without a reliable dev environment and you will not be the only one to have issues.


Prepare for new release of Jira

Workflow links: https://github.com/atlassian-labs/atlassian-slack-integration-server/actions/runs/1787647373, https://github.com/atlassian-labs/atlassian-slack-integration-server/actions/runs/1787648230.

This issue will be addressed in #169.