fix(test) : Added filter by label test

Filter by label from table view and quick preview added.

[test]

@divyanshiGupta Your image is available in the registry. Run docker pull registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2568 && docker run -it -p 5000:8080 registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2568 and visit http://localhost:5000 to access it.

@divyanshiGupta fabric8/fabric8-ui:SNAPSHOT-PR-2568-2 is deployed and available for testing at https://fabric8-ui-fabric8-ui-pr-2568-fabric8-planner.badger.fabric8.io

@divyanshiGupta Your image is available in the registry. Run docker pull registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2568 && docker run -it -p 5000:8080 registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2568 and visit http://localhost:5000 to access it.

@nimishamukherjee done

@divyanshiGupta fabric8/fabric8-ui:SNAPSHOT-PR-2568-5 is deployed and available for testing at https://fabric8-ui-fabric8-ui-pr-2568-fabric8-planner.badger.fabric8.io

@divyanshiGupta fabric8/fabric8-ui:SNAPSHOT-PR-2568-6 is deployed and available for testing at https://fabric8-ui-fabric8-ui-pr-2568-fabric8-planner.badger.fabric8.io

[test]

@divyanshiGupta fabric8/fabric8-ui:SNAPSHOT-PR-2568-7 is deployed and available for testing at https://fabric8-ui-fabric8-ui-pr-2568-fabric8-planner.badger.fabric8.io

Codecov Report

Merging #2568 into master will decrease coverage by <.01%.
The diff coverage is n/a.

@@            Coverage Diff            @@
##           master   #2568      +/-   ##
=========================================
- Coverage    9.55%   9.54%   -0.01%
=========================================
  Files         214     214
  Lines       13693   13704      +11
  Branches     1912    1912
=========================================
  Hits         1308    1308
- Misses      12314   12325      +11
  Partials       71      71

Impacted Files
Coverage Δ

...ponents/work-item-link/work-item-link.component.ts
1.05% <0%> (-0.03%)
:arrow_down:

src/app/services/work-item.service.ts
0.39% <0%> (-0.01%)
:arrow_down:

src/app/effects/link-type.effects.ts
5.88% <0%> (+0.61%)
:arrow_up:

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 5215759...998a019. Read the comment docs.

@divyanshiGupta fabric8/fabric8-ui:SNAPSHOT-PR-2568-8 is deployed and available for testing at https://fabric8-ui-fabric8-ui-pr-2568-fabric8-planner.badger.fabric8.io

@divyanshiGupta fabric8/fabric8-ui:SNAPSHOT-PR-2568-10 is deployed and available for testing at https://fabric8-ui-fabric8-ui-pr-2568-fabric8-planner.badger.fabric8.io

[test]

@divyanshiGupta fabric8/fabric8-ui:SNAPSHOT-PR-2568-11 is deployed and available for testing at https://fabric8-ui-fabric8-ui-pr-2568-fabric8-planner.badger.fabric8.io

@jarifibrahim Build failed. Pls retrigger.

[test]

@divyanshiGupta fabric8/fabric8-ui:SNAPSHOT-PR-2568-12 is deployed and available for testing at https://fabric8-ui-fabric8-ui-pr-2568-fabric8-planner.badger.fabric8.io

@divyanshiGupta more than one element found for locator By(css selector, .label-name) could you check some unique selector, otherwise first result will be used

@divyanshiGupta Your image is available in the registry. Run docker pull registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2568 && docker run -it -p 5000:8080 registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2568 and visit http://localhost:5000 to access it.

@divyanshiGupta Your image is available in the registry. Run docker pull registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2568 && docker run -it -p 5000:8080 registry.devshift.net/fabric8-ui/fabric8-planner:SNAPSHOT-PR-2568 and visit http://localhost:5000 to access it.


Future Proofing Provider

A lot has happened since the initial development of this provider, and the amount of users seems to have just increased. As it is a critical component for those who bootstrap Flux with Terraform I thought that it would be a good idea to discuss the most common issues that users are facing today and consider alternative solutions, if there are any. The current main issues that I see end users facing include the following.

The general configuration is complicated. A lot of people expect the provider to do the actual installation of the provider instead of just exposing the manifests. This means that the easy setup is a lot more difficult than I would like, and anything a bit more complicated can become very complicated quickly.
There has and still exists issues related to API Version upgrading which could cause existing deployments to break.
Customization of the bootstrapping is possible today but is not totally logical, so it requires us to document each use case. Additionally working with YAML in Terraform is not the greatest experience, adding more challenges to end users.

So I have spent the last two months during some free time attempted to implement some alternative solutions and wanted to share my thoughts before creating a PR. As I see it we have basically two options, either trying to improve the experience of the current solution and play into the strengths of public providers like kubectl, github, azure-devops, etc. The other option is to go the way of implementing all the logic inside of the provider, attempting to share code with the CLI installation.
New Bootstrap Resource
An option that some people may like is for the provider to take full responsibility to the provide, just like the CLI does. It would make configuration really easy for new users as the Terraform required could, in theory at least, be very simple.
provider "flux" {
  kuberentes {
    ...
  }
}

resource "flux_install" "this" {
  target_path = var.target_path
  url         =  var.clone_url
}

This resource would have to be responsible for adding manifests to the cluster and committing the files to the correct repositories. This means that the resource needs to implement both a git client and a Kubernetes client. It would have to track both state diffs in the cluster and the repository. In theory this is possible to build, but it includes challenges that the CLI does not have to solve.
The major challenge that I have found while attempting to just implement the Kubernetes component of this resource is the tracking of state drift between what is in the Kuberentes cluster and what is expected by the resource. Implementing this logic when there is a 1:1 relationship between Kubenerets resources and Terraform resources is logical as there are methods to tell Terraform that a resource needs to be created again. It is however a lot more complicated to do this for a Terraform resource that manages multiple Kubernetes resources. This is probably the reason why the kubectl Terraform provider does not implement support for multidoc YAML. Dealing with this type of state drift for git repositories also would make the problem even more challenging. I don't really see that an alternative could be increasing the amount of Flux Terraform resources used to configure the bootstrap as that would just replicate the issues that we are currently facing.
If we are going to go with this option we will first need to prove that it is possible to reliably get Terraform to detect resource state drift and re apply the required changes with multiple resources. This includes if one of many resources have been removed and needs to be re applied to the cluster.
Terraform Kubernets Provider
When this provider was initially developed the ability to create custom resources with the official Terraform Kuberentes provider was in early alpha stages. By now that option as been out for a while in the form of the kubernetes_manifest resource. One option could be to automatically convert YAML to HCL and publish a module which would do the bootstrapping. The benefit is that it would rely on an official provider and would make it easier for end users to customize their deployments. One option would be for a module to only publish the CRDs and Deployments while end users would have to be responsible for the bootstrapping of GitRepositories and Kustomizations.
There are however a couple downsides with this solution.

This resource relies on server side apply which means that the cluster creation and Flux bootstrapping has to be done in separate Terraform states.
It would require some custom solution to convert HCL back to YAML so that it can be committed to the bootstrap repository.

Continue With Datasource
Continuing with the current datasource configuration may be the simplest solution but will require us to solve all of the major issues that we are currently facing. The first of them being breaking existing deployments. One first step for this is to update all of the examples to set apply_only to true. This will cause the resources to not be removed when they are deleted from the state. This new option will resolve the immediate problems which may catching end users as they upgrade today and buy some time if some other solution is chosen. I dont see a problem with Terraform not removing Flux releated resources as the clean up process is still very shaky and for the most part will fail when deleting a cluster with Terraform due to the fact that the order resources are deleted matters. So it wont really remove features that users have today.
On top of this other issues with they key including the api version being included has to be resolved if this should be considered a long term solution. Either way we should consider adding the apply_only option now.

After a couple of discussions and some more research it seems like the best option would be to move forward with a new resource which manages the full installation process. It is now possible to diff multi doc manifests thanks to the new Terraform Framework and AttributeModifiers. I am going to start working on adding new resources which manage the full life cycle now. Hopefully it will simplify the installation process with Terraform.
There are still a couple of unknowns, specifically regarding the git component of the installation process. The lack of multi ack support in the git library which still needs to be figured out. The initial implementation may be limited to those git repositories which are compliant with the Flux CLI installation method.


Auto share on copy text

Requesting the ability to have an option in the settings for automatically sharing text when it's copied.
Right now part of my workflow consists of copying the text and then shaking my phone to open a fast sharing app (Fliktu) that replaces the default and opens almost immediately, but it's not only an extra step, it's also finicky. I figure people copy things for sharing (whether to have it get sent to Google translate or some other app), so I imagine a lot of people would value this. For me it would just cut out the work and uncertainty with sharing. For some reason if Fliktu doesn't work the first time on some copied text, I have to copy some other text (not the same text) before it'll start working again, almost as if it doesn't want to annoy users by working on the same text...even if you copy it again...which makes it unreliable on top of time consuming. This isn't a bug with Kaku, but anyway it'd be a really handy time-saving feature that makes a lot of sense and probably could be implemented in 20 minutes.

I don't think I'm going to take this currently or as is.
The current gesture system / UI will likely need a slight overhaul anyways once I start working on anki/similar support (maybe after the Sakura milestone?) so I'd rather not work on one-off's that'll need to be rewritten anyways.

Just so I know for more context though, what's the workflow here with Fliktu? Just Anki integration or something else?

Yeah, this is what I do. It's just Anki integration right now, although if I could copy individual words that'd be handy for looking up in my J-J dictionaries via Fliktu as well. The benefit of Fliktu is it's basically instant and configurable. The normal sharing function takes 5-10 seconds to load.
I find a word I want, I put the OCR box over it -> screenshot, crop the image, save -> double-tap the OCR window, correct errors, look at the English translation of the word if it's found (e.g. all kana conjugations won't be) -> long tap to copy -> quickly shake/flick my phone, which activates Fliktu if I do it properly (it only activates like that after copying something) -> select Anki from the share list (which directly goes into the make card interface) -> paste the OCR'd text into the sentence field, paste it into the expression field and cut off everything besides the word -> add an image to the image field, select the most recent picture from my phone's gallery (the one I just screenshotted/cropped -> save the card -> later on my pc I sync, run my addons to generates definitions/readings/pronunciation/audio, and I'm good to go


Rapids Shuffle - UcpListener

Use UcpListener to connect to peers instead of our own connection. This will enable us to exchange the socket address to communicate with UCX. UCX keeps the connection alive, which allows it detect peer disconnection, which should help with reliability of the rapids shuffle.
This also removes TCP code that was added to exchange UCX's WorkerAddress, so it should end up cleaning code required for this exchange.

@petro-rudenko has a PR for this already, we need to follow up with removal of management port.


overlay sys-apps/systemd: Add patches for ldconfig.service

This is in hope to either fix or pinpoint the cause of https://github.com/flatcar/Flatcar/issues/1493.

[ ] Changelog entries added in the respective changelog/ directory (user-facing change, bug fix, security fix, update)
[ ] Inspected CI output for image differences: /boot and /usr size, packages, list files for any missing binaries, kernel modules, config files, kernel modules, etc.

Had rerun the actions and there were other 2 seemingly transient errors, one of which was a a kernel oops, logging it here for future ref in case it happens again:
[   19.048585] Unable to handle kernel NULL pointer dereference at virtual address<PHONE_NUMBER>000000
[   19.050355] Mem abort info:
[   19.050763]   ESR = 0x0000000096000004
[   19.051229]   EC = 0x25: DABT (current EL), IL = 32 bits
[   19.051869]   SET = 0, FnV = 0
[   19.052233]   EA = 0, S1PTW = 0
[   19.052602]   FSC = 0x04: level 0 translation fault
[   19.053191] Data abort info:
[   19.053518]   ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
[   19.054165]   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
[   19.054757]   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
[   19.055407] user pgtable: 4k pages, 48-bit VAs, pgdp=0000000045bf9000
[   19.056189] [0000000000000000] pgd=0000000000000000, p4d=0000000000000000
[   19.057003] Internal error: Oops:<PHONE_NUMBER>000004 [#1] PREEMPT SMP
[   19.057750] Modules linked in: evdev squashfs sch_fq_codel drm loop fuse i2c_core configfs nfnetlink dmi_sysfs nls_ascii nls_cp437 vfat fat ext4 crc16 mbcache jbd2 raid0 md_mod dm_verity dm_bufio virtio_net net_failover virtio_blk failover btrfs blake2b_generic xor xor_neon lzo_compress zlib_deflate raid6_pq zstd_compress libcrc32c crc32c_generic dm_mirror dm_region_hash dm_log dm_mod qla4xxx iscsi_boot_sysfs iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi scsi_mod scsi_common br_netfilter bridge stp llc overlay qemu_fw_cfg
[   19.063441] CPU: 0 PID: 463 Comm: kworker/0:3 Not tainted 6.6.54-flatcar #1
[   19.064226] Hardware name: QEMU KVM Virtual Machine, BIOS edk2-20230524-3.fc38 05/24/2023
[   19.065148] Workqueue: md md_submit_flush_data [md_mod]
[   19.065734] pstate: 00400005 (nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[   19.066526] pc : percpu_ref_put_many.constprop.0+0xa0/0xe4 [md_mod]
[   19.067248] lr : percpu_ref_put_many.constprop.0+0x18/0xe4 [md_mod]
[   19.067961] sp : ffff800080723d60
[   19.068327] x29: ffff800080723d60 x28:<PHONE_NUMBER>000000 x27:<PHONE_NUMBER>000000
[   19.069109] x26:<PHONE_NUMBER>000000 x25: ffff0000017d9bc0 x24: ffff00000085a005
[   19.069899] x23: ffff000000860cb0 x22: ffff00002aa242a8 x21: ffff80008003bce0
[   19.070714] x20: ffff00002aa24000 x19: ffff00002aa24040 x18:<PHONE_NUMBER>000000
[   19.071528] x17:<PHONE_NUMBER>000000 x16: ffffd80c183f4034 x15:<PHONE_NUMBER>000000
[   19.072373] x14:<PHONE_NUMBER>000000 x13:<PHONE_NUMBER>0001bd x12: ffffd80c1bb78c28
[   19.073283] x11:<PHONE_NUMBER>000001 x10:<PHONE_NUMBER>001ad0 x9 : ffff800080723c10
[   19.074113] x8 : ffff0000015a59b0 x7 :<PHONE_NUMBER>000004 x6 :<PHONE_NUMBER>000190
[   19.074924] x5 :<PHONE_NUMBER>0fd0c0 x4 :<PHONE_NUMBER>300001 x3 :<PHONE_NUMBER>000001
[   19.075741] x2 :<PHONE_NUMBER>000000 x1 :<PHONE_NUMBER>000000 x0 : ffffffffffffffff
[   19.076540] Call trace:
[   19.076816]  percpu_ref_put_many.constprop.0+0xa0/0xe4 [md_mod]
[   19.077496]  md_submit_flush_data+0xb8/0xcc [md_mod]
[   19.078050]  process_one_work+0x164/0x3c0
[   19.078507]  worker_thread+0x324/0x43c
[   19.078932]  kthread+0x110/0x114
[   19.079297]  ret_from_fork+0x10/0x20
[   19.079727] Code: d65f03c0 f9400661 d503201f 92800000 (f8e00020)
[   19.080424] ---[ end trace<PHONE_NUMBER>000000 ]---
[   19.080955] Kernel panic - not syncing: Oops: Fatal exception
[   19.081641] SMP: stopping secondary CPUs
[   19.082149] Kernel Offset: 0x580b982c0000 from 0xffff800080000000
[   19.082851] PHYS_OFFSET: 0x40000000
[   19.083247] CPU features: 0x1,00000021,70020143,1040720b
[   19.083861] Memory Limit: none
[   19.084207] Rebooting in 60 seconds..

Besides the kernel oops, I also saw errors regarding the storage devices:   L17: "cluster.go:145: __sudo /check__ failed: output no /dev/sda device after reboot, status Process exited with status 1_"     L18: " "
I would suggest we run more tests to make sure.

Marked as on-hold as this clearly needs more testing and investigation. Trading some failure no one cares about for the kernel oops is not a good deal.


perf(flow): Map&Reduce Operator use batch to reduce alloc

I hereby agree to the terms of the GreptimeDB CLA.
Refer to a related PR or issue link (optional)
What's changed and what's your intention?

add render_*_batch functions for flow's render(See render/map/reduce/src_sink.rs and render.rs files)
A major change is impl of render_reduce_batch which simpilfy impl and should improve performance(See src/flow/src/compute/render/reduce.rs)
add evaluate_inner/into_batch for SafeMfpPlan to help with eval mfp with batch(See src/flow/src/expr/linear.rs file)
other changes are minor and can be ignore

The PR is already too large too add functionality to actually use it, will do that in next PR
Checklist

[ ] I have written the necessary rustdoc comments.
[ ] I have added the necessary unit tests and integration tests.
[ ] This PR requires documentation updates.

@coderabbitai review


Interruptible consumer loop

We currently run kafka consumers in a jobs framework, where the expectation is that jobs complete in a certain period of time (e.g. 60s).  As it is right now, the each_batch or each_message block will block indefinitely until there are messages on the topic.  We understand that is generally desirable in the common case, and that our use-case is slightly outside the norm, but that is what it is 🤷♂
@dasch what's your preference here:

encumber the each_message and each_batch methods with a timeout function described in https://github.com/zendesk/ruby-kafka/issues/578 (which, BTW we've been running as a fork for quite a long time successfully)
re-open https://github.com/zendesk/ruby-kafka/pull/369 and work to get that merged

Thanks and we appreciate your time and effort into supporting ruby-kafka ❤

I definitely think the poll approach would be best.


Distance offline - Can't delete red dot Error on the request preview in the expense report

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

Version Number: 1.4.52-0
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail: https://expensify.testrail.io/index.php?/tests/view/4424763&group_by=cases:section_id&group_order=asc&group_id=295814
Email or phone of affected tester (no customers<EMAIL_ADDRESS>Logs: https://stackoverflow.com/c/expensify/questions/4856
Issue reported by: Applause-Internal team
Action Performed:

Turn off the network
Crete distance request with way points kind of “hdhdfjfnfb”
Turn on the network
Wait for Reddot error
Open request details (now you have two reddot errors in the LHN)
Try to dismiss reports with reddot errors

Expected Result:
The user should be able to dismiss red dot errors because of invalid Distance expense
Actual Result:
There is no button to dismiss red dot error on the request preview in the expense report.
Workaround:
Unknown
Platforms:

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

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

Screenshots/Videos
https://github.com/Expensify/App/assets/115492554/f1241ebe-7dc4-401b-bd14-f52eaaa72045

View all open jobs on GitHub

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

We think that this bug might be related to #wave-collect - Release 1
CC @trjExpensify

It would be great if the steps were more specific about which chats etc have the red brick road and don't clear properly. Here's my understanding of the issue being reported:
>Action steps

Go offline
Crete a distance request with invalid waypoints (e.g "hdhdfjfnfb”)
Go back online
Observe the "unexpected error" message is added as the distance requests fails to create
Observe the red brick road (RBR) red dots added to both the workspace chat row and the expense report row in the LHN
Dismiss the error message ("X") beneath the report preview component in the workspace chat
Observe the expense report preview component disappears from the workspace chat and the RBR red dot is cleared from the workspace chat row in the LHN
Observe the expense report row in the LHN remains and with the RBR red dot
Click into the expense report
Click on the distance request preview
Observe the 404 "Hmm.. it's not there" full page blocking error

For the expected results. I think this is less about the RBR being dismissable on the expense report, but rather, why does it remain accessible at all? Recall you dismissed the error message and the report preview component disappeared, so it should have been deleted and thus removed from the LHN completely.

Expected Results
When the error message is dismissed, delete the distance request and expense report. (Of course, don't do that if there are other expenses on the report already!)

Let me know if I'm missing something! CC: @paultsimura @neil-marcellini @hayata-suenaga
https://github.com/Expensify/App/assets/16232057/05d89089-e0fc-4755-abd0-d65adaac870c

Ah, interesting.. why isn't the expense report showing up in the LHN when you give it a go? See mine from above:

It fails after coming back online
The expense report row appears in the LHN with a red dot (in addition to the workspace chat row).
Dismissing the error on the expense report preview component inside the workspace chat doesn't remove the expense report row from the LHN

This is reproducible only for 1:1 Distance Requests (which is still under Beta).

My repro was distance requests to a workspace, so not 100% sure on that.

I thought it might be a violations beta or something, but I don't have that beta enabled on my @trj.chat domain.

Just tried it again, same result:
https://github.com/Expensify/App/assets/16232057/51d5d655-3d5f-4f35-ad44-41302834baa7

I haven't investigated this much, but it should be noted that we never implemented the planned design for handling errors creating distance requests since it was deemed low priority.
Here is the issue for that [LOW] Distance: Handle errors with geocoding for offline distance requests. We keep having issues created about this. I think we should fix it and use a violations based approach.

Ah yeah, totally. If we're committed to doing that, then let's go for it. Minimally, it shouldn't get stuck like it is now though in the current imp.

@neil-marcellini and @trjExpensify - should we assign this one as External?

I didn't know that dismissing the error results in the deletion of the distance request. That's what I didn't expect...
But if the intended behavior is to delete the money request (expense report), then I agree it shouldn't be there after dismissing the error.

Yeah, I think ideally we would handle this in a way that still creates a partial transaction that the member can edit the waypoints to fix it - @neil-marcellini references an approach in the linked issue.
I didn't think that was happening though. So if the expense fails to get created (not even "partially"), then dismissing the error on the "failed" expense would delete the expense report its on if:

it's the only expense on the expense report
there aren't any comments to preserve

Anyhow.. @hayata-suenaga do you think we can take the other issue external to implement a better process for this, or does it need to be internal? If it can go external, perhaps @paultsimura you might be interested in helping with that given you have good context around the distance feature.

do you think we can take the other issue external to implement a better process for this, or does it need to be internal?

I feel like this needs backend changes as well as front end changes. I'll wait for @neil-marcellini's response though 😄

Alright, waiting for @neil-marcellini's feedback.

Neil has been traveling, so I sent a chat so the last bump didn't get lost in the mix.

Hi thanks for the DM Al!
I really think that we should take this internal and design a complete solution with a small design doc. As Tom mentioned, we need to have partial transactions created instead of the request completely failing. Currently the request is not created at all in the backend, so that's why dismissing the error deletes everything. It would also go away if you sign out and back in. To do this the right way, we need backend changes.
Most of the desired behavior in the linked issue still makes sense, but it's written from the perspective of failing to create the initial distance request, rather than creating a partial transaction and using violations.
Let's also confirm broadly in Slack that we want to invest in fixing this now. I don't have the capacity to take this on, but maybe others are interested?

Ok, thanks! I'll start a discussion on Monday.

I didn't get to the discussion today, I'll start one tomorrow.

I started a discussion here: https://expensify.slack.com/archives/C036QM0SLJK/p1711672068496949

Moving to Weekly, for now, I'll bump again next Tuesday when there is more team online.

We have more team online, I bumped the 🧵.

We are in agreement here:

There should be a request when offline should be consistent across all request types, so we should bring distance in-line with manual and scan.

We still need to develop a plan here on how to tackle it.

Ok, next week, I'll need to recruit for help here.

I've been dealing with other GHs and haven't been able to recruit for help.
Heads up, I will be offline until Tuesday, April 23, 2024, and will not actively watch over this GitHub during that period.
If anything urgent is needed here, please ask for help in the #expensify-open-source Slack Room-- thanks!

Still on my radar to get help here.

Weekly Update: No update

Weekly Update: No update, the team has been focused on the May 1 release.

Heads up, I will be offline until Tuesday, May 28, 2024, and will not actively watch over this GitHub during that period.
If anything urgent is needed here, please ask for help in the #expensify-open-source Slack Room-- thanks!

Since there are higher-priority GHs, I've moved this to Monthly and will regroup when I'm back online.

There is no update yet; other GHs and site needs have been a higher priority.

@paultsimura , plz comment so I can assign. Added to

https://github.com/Expensify/App/issues/44582

Hi @paultsimura - I've assigned you the GH. Thanks!

Thanks for the update! Just a heads up, @mallenexpensify will help move this GH forward when he returns from Holiday.

Checking on in #wave-collect

@paultsimura , I'm in the process of getting you added to  #wave-collect since there are offline distance conversations happening there.
This PR just hit production

https://github.com/Expensify/App/pull/43011#top

The above should (somewhat) help with minimizing the red dot error showing, if the user is traveling to/from the same places frequently.
For next steps specific to this issue, let's try to figure out why this distance expense that we couldn’t create isn’t being deleted when the RBR is dismissed. Do you have any idea why that might be happening @paultsimura ?

As I said in Slack, but repeating it here for @paultsimura, I think we don't clean up all the optimistic data for the distance request when it's deleted, so that's what we'll need to do.

I'm uncertain, it sounds right but I defer to @neil-marcellini

@neil-marcellini 👀 above plz

Pinging Neil in NewDot for 👀

Sorry for the delay, thanks for the ping Matt.

Hey @neil-marcellini @mallenexpensify – from the discussion here and in Slack, I understand the proper solution, for now, will be to remove the failed distance request when dismissing the error. Is that correct?
If so – we can make this External as the solution is quite straightforward from what I see.

Yeah that's the plan. I think it was already implemented in this issue though [HOLD for payment 2024-07-26] [$250] BUG: Failed distance request isn't cleaned up properly

added Weekly and retest-weekly

Issue not reproducible during KI retests. (First week)

Not able to reproduce either, so closing.


Product page changes with each request

When you scroll down to a certain page (page 5), open a product, then go back to the same product listing using the browser back button.
If you click on the URL bar (current page is 5) and then click ENTER making a new request, the URL will increment and will be on page6. The view will also change to match the page being requested. This will continue with each new request.
Preconditions (*)

PHP 7.2
Magento version: 2.3.4
Default theme
No custom modules are included that would effect the product listing

Steps to reproduce

Scroll to a page greater then 1
Open a product, then go back to the product listing using the browser back button.
Click on the URL bar and hit ENTER to submit a new request for the current page
The page should now increment by 1 for each new request.

Expected result (*)

The matching page from the URL should be loaded each time a request is made to that specific page

Thanks for reporting this with so much detail.
I'm a bit confused about when exactly the page number is incremented. If it is as you described then it would definitely be a bug, but it would mean the request is sent to the server for page 5 but the server responds with a 301 for page 6. It would be SO weird to me if that was actually happening, because this plugin doesn't intercept controllers or events, or anything like that..
Any chance you could make a screen-cast of this bug in action?

Essentially I'm trying to understand if there's a 301 causing the redirect to page 6, or if when going back the browser URL reflects page 6 incorrectly instead of page 5.

I will send you a screen cast via email, is that ok?

Sure!

Oh, I see what's happening: when going back, it send you back correctly to page 5. In your theme the products are not loaded immediately, or they're not shown immediately, which means that it takes a bit of time before they're rendered into the DOM correctly, causing the initial page load to have a smaller height than it will have after the full page load.
While the initial list of products is still about to be rendered and the page is "collapsed", the JS that listens to the window "scroll" event gets triggered (it starts after dom:ready I believe). It detects that you're at the bottom of the list of products, which for that script means "it's time to load the next page". So it changes the page number to 6 and triggers the ajax call for page 6 of products.
You can solve this issue in two ways:

A pull-request that improves the detection of exactly when the next page of products has been reached by scrolling. Maybe we could set a (configurable!) minimum page height required before the checks pass, as an example.
Fixing the structural "issue/quirk" (if you can call it that) of the page being "collapsed" when it's initially loaded. If the products are embed into the original HTML on page-load then this should be as simple as making sure their CSS gives them enough "volume" to occupy the space they will actually occupy anyways once everything renders properly. If they're loaded by AJAX then you could still "allocate" enough space for them ahead of their rendering by simply expanding their container DIV to the approximate proportions it will have once all products have been loaded into it. The actual fix will vary but these are just some ideas.

I hope this helps!

Closing due to inactivity.


A suggestion: command can run together to reduce image size

ref: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run
split long or complex RUN statements on multiple lines separated with backslashes.

@HackerWilson Thank you! I merged some of the related RUN blocks. More details in this thread https://github.com/waleedka/modern-deep-learning-docker/issues/4


Pressing back via AppBar or System gesture pops to root on Android

Expected Behavior

On /, push to /second
On /second, push to /third
On /third, pop goes to /second
On /second, pop goes to /

Actual Behavior

On /, push to /second
On /second, push to /third
On /third, pop goes to /

Notes
This doesn't happen if /third is relative to /second, like /second/third. Also, on the Web, going back via the Browser's back button has the expected behavior too. I have a feeling it has to do with https://github.com/tomgilder/routemaster/wiki/Routemaster-Flutter-scenarios#skipping-stacks But I couldn't see a way to disable that behavior.
Minimal reproduction code
import 'package:flutter/material.dart';
import 'package:routemaster/routemaster.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  MyApp({Key? key}) : super(key: key);

  final routes = RouteMap(routes: {
    '/': (_) => MaterialPage(child: FirstScreen()),
    '/second': (_) => MaterialPage(child: SecondScreen()),
    '/third': (_) => MaterialPage(child: ThirdScreen()),
  });

  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
      routeInformationParser: RoutemasterParser(),
      routerDelegate: RoutemasterDelegate(routesBuilder: (context) => routes),
    );
  }
}

class FirstScreen extends StatelessWidget {
  const FirstScreen({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('First Screen'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Routemaster.of(context).push('/second');
          },
          child: Text('Go to second'),
        ),
      ),
    );
  }
}

class SecondScreen extends StatelessWidget {
  const SecondScreen({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Second Screen'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Routemaster.of(context).push('/third');
          },
          child: Text('Go to third'),
        ),
      ),
    );
  }
}

class ThirdScreen extends StatelessWidget {
  const ThirdScreen({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Third Screen'),
      ),
      body: Center(
        child: Text('The third one'),
      ),
    );
  }
}

Thanks for the issue and reproduction!
And... welcome to the hell of Android back buttons. It's a world of confusion.
Just to clarify definitions:

The back button is the Android system back button, at the bottom of the screen
The up button is the other "back" button within your app, normally top-left in the App Bar

Routemaster's behaviour is, I believe, according to the Android docs, the "correct" behaviour on Android:

"Within your app's task, the Up and Back buttons behave identically."

According to Google, within your app, the back and up buttons should always do the same thing. This is different to a web browser - the back button always navigates backwards through the stack of URLs, ignoring the app structure.
So Routemaster's behaviour matches this, so the back button navigates upwards through the URL/page hierarchy, rather than what the user has actually seen (as on the web).
But Google's guidelines on this have changed; they used to say that the system back button should follow your expected behaviour, and do something different to the up button. And some apps follow the old behaviour. Even Google's own Android apps have inconsistent back button behaviour.
Soooooo yes... it's really confusing. I'm open to any suggestions to add options here, as long as they don't really overcomplicate the API.
There are, however, already several ways you could override this, such as using BackButtonDispatcher or overriding RoutemasterDelegate.popRoute.

Correct me if I'm wrong, but isn't that's exactly what @Maikuh is stating? That it is not following the behaviour according to the docs?

"Within your app's task, the Up and Back buttons behave identically."

Under the  "Actual Behavior"  he states that navigating to the third screen and having second one in the "back stack", still pops to root

Thanks for the great explanation. For me I think it makes sense for both iOS and Android to use up navigation by default.
And the option to customise per platform, or for all platforms would be great as I'm sure there will developers who require it.

This makes me sad, I've been loving Routemaster up to this point.
I always expect "back" on every platform to be reverse-chronological, mainly because its not like the user has a map of the routes in front of them - its an internal developer concept.
I agree with the OP, and I'm not sure how to implement the "expected" behaviour.

I'm on /feed, and after pushing /settings see in the data structures that the page stack has two entries, and it still does when Settings is built, but when the back button is tapped, the stack only has one entry, for the current page.

I too was suddently perplexed when I found that the app bar back button was skipping the entire history and going back to the app root path.
To quote OP:

Expected Behavior

On /, push to /second
On /second, push to /third
On /third, pop goes to /second
On /second, pop goes to /

Actual Behavior

On /, push to /second
On /second, push to /third
On /third, pop goes to /

I have only ever experienced the expected behavior (either when developing or as a consumer using apps) and I have never experienced what routemaster has implemented as actual behavior, where the stack is skipped. This includes flutter web on navigator 1.0, where the app bar back button works just like a browser back button.
To skip back further, I've always just used popUntil I hit the named route.
Question: Is there anyway to get the app bar back button to navigate in reverse chronological order, like the "expected behavior" op mentioned?
Otherwise, how do you recommend one implement that sort of functionality. For example, I navigate users to page /third, and it's a dead end purposefully, using the back button is intentionally the only option to immediately go back to the previous screen.

I want to follow up and provide a specific example, because I realize that what I want is possible... but it becomes a nightmare of origin management.
Example
My apps are cross platform for web, ios, and android. So when I say back, I expect the browser back button, the app bar back button, and the android back button to function the same way (like they do on the twitter app / twitter web)

I am on screen /business and I want to click a job item to view it's details.
I use Routemaster.of(context).push('/job/' + index.toString()); to push to the job screen to view it's details.
When I am done, I hit back. But instead of winding up back on the business page, I wind up on the app root.

In that situation, the job page's route looks as follows:
'/business': (_) => MaterialPage(child: BusinessDashboardScreen()),
'/job/:jobLogIndex': (route) =>
          MaterialPage(child: JobDetailScreen(jobLogIndex: route.pathParameters['jobLogIndex'])),

To fix this issue as routemaster currently works, I can change the job to a "relative" link.

I am on screen /business and I want to click a job item to view it's details.
I use Routemaster.of(context).push('job/' + index.toString()); to push to the job screen to view it's details.
When I am done, I hit back. Because it was a relative link, I am returned to the /business page

In this situation, the routes look at follows:
  '/business': (_) => MaterialPage(child: BusinessDashboardScreen()),
  '/business/job/:jobLogIndex': (route) =>
      MaterialPage(child: JobDetailScreen(jobLogIndex: route.pathParameters['jobLogIndex'])),

Foreseen Problem
The problem I have with this is that I need to be able to get to the job screen from several different pages. So if this style of navigation only seems to work if I create relative job paths for every potential screen that can link to the jobs page. So if I have 5 screens that link to the jobs page, I need to create additional relative jobs routes in the RouteMap.
If I want to get to the job screen from the "monitoring" screen, I have to create the route again with that prefix.
  '/monitoring': (_) => MaterialPage(child: MonitoringDashboardScreen()),
  '/monitoring/job/:jobLogIndex': (route) =>
      MaterialPage(child: JobDetailScreen(jobLogIndex: route.pathParameters['jobLogIndex'])),
  '/business': (_) => MaterialPage(child: BusinessDashboardScreen()),
  '/business/job/:jobLogIndex': (route) =>
      MaterialPage(child: JobDetailScreen(jobLogIndex: route.pathParameters['jobLogIndex'])),

As an app grows, this does not scale.
Am I missing another solution or way of using this?

on a tangent a bit but I have the same problem above with a detail screen being show from two different list screens. Additionally I am using TabPage but the detail screen should not show the tab bar, not sure thats possible currently but it's a very common pattern.
In my situation I don't mind to define the routing twice as we can provide urls in emails consistent across web and mobile (deep links). If I am going further down into a sub screen I will 'push' otherwise 'replace'. If I have deep linked in I would expect back to exit the app not go up.
If I navigate down a nested route then either push or replace would achieve the same thing, that feels weird too.

@buzzware nooo! Let's make you happy again! Do you have any comments/ideas on my questions from above?
@mdrideout thank you so much for the specific example, that's really useful.
I'm thinking about the API for this. I don't think the actual coding here is that difficult, we can solve this together - it's just designing the API, making it flexible enough for everyone's needs but not making it overly complicated is quite a big challenge.
I'll see if I can come up with a way you can work-around this until the functionality is in Routemaster.
I totally get why this is a big issue and want to address it ASAP.
Who would have thought something as simple as a back button is so complicated? 😁

What should the default app bar back button behaviour be?

reverse-chronological

What should the default Android system back button behaviour be?

reverse-chronological

Should any of the default behaviour differ between platforms?

No, I'm not of the opinion that platform conventions matter very much. Facebook seem to agree. Good design and consistency of your own app across platforms matters more.

Should either (or both) be customisable? If so, how?

Not for me

What should Routemaster.of(context).pop() do by default?

reverse-chronological

What other APIs should Routemaster provide to achieve upward or reverse-chronological navigation?

An API for upward navigation is a convenience. Mostly you want back or replace(parent_path).

Is it acceptable to make breaking changes to this behaviour?

Yes, for a major version increment

Also, if anyone has a good idea for a simpler term for "reverse-chronological", I'd love to know it 😁

"previous" ?

I once built a router for Xamarin, so spent a lot of time thinking about the issues. In my design, stacks and pages had names, and the url described the stack followed by the pages eg /Stack1/ConsolePage/SettingsPage
A pop() would remove SettingsPage and show ConsolePage. A push() would always be relative, putting a new page on the current stack.
Navigating to /Stack2/Login would build a new stack and page.
I didn't implement back() - to do so I would had a stack or list of routes.
I had a goto() method that would build and/or destroy the minimum stack and pages to achieve the given url.
Epiphany :
Perhaps what is causing confusion here is the page stack vs url stack vs route heirarchy.
Fundamentally, as a user, I think of an app as a stack, and sometimes a sequence of cards. When I'm on the main console page and I hit the Settings button, I think of the settings page as being laid on top of the console page, so going back returns to the console in its original state.
Alternatively, when I first login I might get an introduction sequence of cards that I think of as siblings, not a stack - not sure how to handle that.
As a user I don't care about the internal heirarchical naming convention of the pages, or some table of possible routes. As developer I should be able to "push" the settings page onto the stack wherever the user is, without defining a route for everywhere it could possibly appear, and so the URL is just a representation of the current state, not an entry in a predetermined table.

Okay, I've done some thinking! Current thoughts are below.
I'm prioritising this issue above anything else, I understand how important it is.
I would massively appreciate feedback. Designing APIs alone is really hard 😁
API

Add a Routemaster.of(context).back() method. This would do reverse-chronological navigation.
Routemaster.of(context).pop() would remain as it is. Having back and pop might be a bit confusing, but I can't think of better names.
Add an option to RoutemasterDelegate for the default back button behaviour

e.g. RoutemasterDelegate(backBehavior: BackBehavior.reverseChronological)
Really don't like that name currently. Suggestions warmly welcomed.
This would affect both the system back button and up buttons.

No breaking changes for now. Possibly make a breaking change in a future version, but with a lot of warning - it could horribly break existing apps.

Scenarios
Back button reverse-chronological, but up button pops
This would be achievable by using the global BackBehavior.reverseChronological but providing a custom back button to the app bar: BackButton(onPressed: () => Routemaster.of(context).pop())
Back button delegate
There should be a way to intercept the Android back button and make decisions based on app state. This could include going to some other route that isn't in the back stack at all.
Complications
Just Android
None of this would affect web. Web is totally driven by the current URL, nothing else. This makes APIs potentially very confusing. I was totally confused by this at first with Flutter's BackButtonDispatcher - I expected it to work on the web, but it's Android-only.
But... I really don't want to add parameters like androidBackBehavior. It's totally possible future platforms like Fuchsia will have back button support.
I think the only answer to this is clear documentation.
Tabs
Another thing - should reverse-chronological navigate back through tabs? For example:

You open the app, starts on tab one
Switch to tab two
Press back button

Should the app switch back to tab one, or close (because there's nothing in the back stack)? Different Android apps do different things. This also feels like something that should be configurable?
In summary... PLEASE HELP ME, BACK BUTTONS ARE MAKING ME CRAZY 😁😁😁

I think this sounds great.

API: I think that looks perfect. I would definitely use RoutemasterDelegate(backBehavior: BackBehavior.reverseChronological) myself.
Android Back Button: I have personally not experienced the Android back button working differently from a browser back button. But if there is an option to override the android back button for different behavior, I think that is good as there may be use cases.
Tabs: If it's possible, tabs have the option to support reverse chronological as well. I think this might be more important for users who are programmatically hijacking tabs UI (I have done this before to use a Listview to display tabs vertically). I think it will be common to want to not go reverseChronological through the tabs.

Couple Questions

Do you know how this will impact the RouteMap() from my comment above, making it easier for many screens to link to the same screen with reverseChronological back button behavior?
Do you have an option for something similar to popUntil in case the developer wants the back button to skip to the first tab or pop until a named route is reached? This was something I used quite a bit in navigator 1 with various stacks of niche UI screens and overlays.

Name Parameter
not sure if relevant but... I am making use of the "name" parameter because it's necessary for FirebaseAnalyticsObserver This is because my URL's may have path variables that I do not want in analytics (because then a screen would show up as a different screen every time the variable was different, so I need to be able to report to analytics a non-variable-specific name for the screen.

Tabs: If it's possible, tabs have the option to support reverse chronological as well. I think this might be more important for users who are programmatically hijacking tabs UI (I have done this before to use a Listview to display tabs vertically). I think it will be common to want to not go reverseChronological through the tabs.

Yep, think I'm going to need to provide both options for tabs. I asked on Twitter what people thought the behaviour should be, and after 71 votes it's almost 50/50 😁

Do you know how this will impact the RouteMap() from my comment above, making it easier for many screens to link to the same screen with reverseChronological back button behavior?

You'll be able to solve that wit this, by having /jobs/:id and always using .back() for app bar up buttons.

Do you have an option for something similar to popUntil in case the developer wants the back button to skip to the first tab or pop until a named route is reached? This was something I used quite a bit in navigator 1 with various stacks of niche UI screens and overlays.

Yes, this could be added, but I think I'll leave it just for the moment to get the core right.

Name Parameter
not sure if relevant but... I am making use of the "name" parameter because it's necessary for FirebaseAnalyticsObserver This is because my URL's may have path variables that I do not want in analytics (because then a screen would show up as a different screen every time the variable was different, so I need to be able to report to analytics a non-variable-specific name for the screen.

RouteData already has a property designed for this: pathTemplate. For instance, for path /jobs/123 it'll be /jobs/:id.

Working on this today. Everyone seems to have a different view on the "correct" Android back button behaviour:

Nightmare. So the only option here is, well, providing options. And possibly lots of them.
Tabs
I'm currently trying to come up with a good API for specifying Android back button behaviour with tabs. Initially I thought there were only two options:

On pressing another tab, an entry is added to the reverse-chronological back stack so pressing back goes to the previous tab.
No back stack entry is added, so the back button never navigates between tabs.

But then it turns out React Navigation has five (!) different options.
Which of these do you think it's useful to support? Would it make sense to add some sort of delegate handler to make decisions?

firstRoute - return to the first tab (default)
initialRoute - return to initial tab
order - return to previous tab (in the order they are shown in the tab bar)
history - return to last visited tab
none - do not handle back button

There are also so many different "situations" tabs are used that I think it should not be a global setting for all tabs, but specific to the instance of the tabs declared for a UI scenario.
I'm not sure we need all of these to start with, but I think the 1 & 2 you originally identified are more important than all the options that React Navigation handles, which could be incorporated in the future if the architecture is there to support adding more options.
Dev Scenarios

If you have your tabs as "steps" for something, you may back to handle reverse chronological stepping backward through the tab steps.

Main Screen -> Tab Screen Tab 1 -> Tab 2 -> Tab 3 -> Tab 4 -> Tab 5 -> Tab 6
If back button went Tab 6 -> Tab 5 -> Tab 4 -> Tab 3 -> Tab 2 -> Tab 1...

If you have two tabs that the user is clicking between for different views of something (potentially clicking between them several times for comparisons, or different chat windows, or different data update screens), having the back button reverse chronological through those two tabs would be ridiculous, and the dev would want to declare those tabs to just to back to the previous screen potentially.

User nav scenario: Main Screen -> Tab Screen Tab 1 -> Tab 2 -> Tab 1 -> Tab 2 -> Tab 1 -> Tab 2 -> Tab 1 -> Tab 2 -> Tab 1
If back button went Tab 2 -> Tab 1 -> Tab 2 -> Tab 1 -> Tab 2 -> Tab 1 -> Tab 2 -> Tab 1... that would be nuts. But this handling may be unique to only this tab group.

The unbearable Lightness of the Android Back Button
I started looking at what "big" (well some) apps do on Android on bottom nav or main nav pattern it uses, when using system back button or back swipe function. I had not though so much about it before, but gosh did I find a can of worms.
1. Always pops entire app, regardless of where you are on bottom destination

Philips Hue (made with Flutter)
DropBox, but persists destination so even fully terminated it starts on last one again
MS apps like Word, Excel, PowerPoint

2. If not on 1st destination, goes to 1st, then pops app.
When on 1st destination, these always pops the app, but only from 1st one.

Twitter
WhatsApp. It uses a top tab view, you can swipe between them, but a back swipe is different and that first takes to main chats tab if you are not on it, and after that pops the app.

I used this in an app, because I disliked 1 so much and this was a simple to add. Just a if not on 1, then move there if the app tries to pop it self, if on one, then fine go ahead pop app.
3. Keep unique visited destinations on a stack equal to nr of bottom destinations, pop back in last used unique order, when nothing left, if not on 1, then back to 1, then pop app

GMail
YouTube
IG
Reddit
Google Playstore

To mention a few. I rather like this one actually, but 2 is fine as well imo.
4. Keep N unique destinations, then pop the app.
Usually N is equal to nr of bottom destination. Pop them until nothing remains, then pop app. The app can thus be popped from other than 1st destination, depends on how you navigated on bottom navbar

Netflix - I think this is just a weird botched version of 3. Did not see anybody else doing this yet.

5. Keep entire bottom nav history.
Just keep them all on a stack and pop back in order until nothing remains, then pop app. Since you started on 1, you eventually end up popping the app from 1.

Spotify - Maybe it is not "infinite", but it is pretty deep.

Have you found any other patterns?
Why use back button/swipe on Android with bottom navbars?
Some claim they never navigate with the back button/swipe on Android in apps with bottom navbars.
I do it all the time. Why?
When I hold the phone with one handed grip with my right hand in the lower right corner, I can't reach the 1st destination with my thumb without using very uncomfortable and wobbly phone tilting action to reach it, so I just swipe back with my thumb to get there. I expect it to get to 1st destination at some point, like in cases 2, 3 and 5.
If the app then does pattern 1) it is really the worst UX of them all. Hue that I use a lot makes me wanna scream in frustration. Case 4 is just weird, but you might not notice its weirdness unless you really look for it and create back stack that shows it, but when it happens it is a bit of a WTF moment.

Thanks for including this feature, it's very useful! I tried out 0.10.0-dev5 and strangely it seems to work opposite to how you described above. The default back behaviour was to go back to root, and any times I had used pop it went back one

Not directly related to the ongoing discussion, but looking forward to get proper pop like back navigation.
Added Routemaster to a new project a few days ago and was quite surprised to observe the same behavior as the issue author described.

I'm years late to this discussion...  but still - Thank You!


Investigate adding<EMAIL_ADDRESS>for Redhat, Debian and Ubuntu families

https://github.com/saltstack/salt/blob/v2016.11.4/pkg/salt-proxy%40.service

Updated for Salt 2016.11.5 point release

Updated Debian and Ubuntu 16.04
Committed and pushed the branch up, waiting for 2016.11.5 tag and build before closing

Updated for nightly build too

Added fro next point release, closing


[4.0.3] | Upgrade "System.Drawing.Common" version

Addresses the remote code execution vulnerability that is reported in System.Drawing.Common by increasing the version of dependent packages. The following packages depend on this package:

System.Configuration.ConfigurationManager
System.Runtime.Caching
System.Security.Permissions

System.Security.Permissions is added indirectly with System.Configuration.ConfigurationManager.

This vulnerability exists when parsing certain types of graphics files on Linux or MacOS, which does not affect SqlClient. To avoid breaking the current consumers we decided not to include this change. To remediate it, applications should use System.Drawing.Common v5.0.3 and about.


Positive and negative numbers for ?math.

Proposal:
Proposal written by Maxi
Is it a proposal for the website or for the bot?: bot
What is the title of your proposal?: Positive and negative numbers for ?math.
Explain your proposal more accurately (It's best to give as much information as possible, so that we can implement the proposal better): Maybe we should add positive or negative numbers to the ?math command too. For example [-5 * -5 = +25] [-6 * +6 = -36]
Why should we add this feature?: This enhancement makes the function more complex.
ReportID: 160

➤ LenoxBot commented:
Approve:
Good Suggestion
🎃SaVaGeCrEePeR28 | Furkan🎃#3532

➤ LenoxBot commented:
Approve:
agree with Furkan
Profxy#5396

➤ LenoxBot commented:
Approve:
I agree with Furkan too
Denarioyt#3352


Type mismatch: inferred type is BinaryMessenger? but BinaryMessenger was expected in the line C:\AndroidStudio\flutter.pub-cache\hosted\pub.dartlang.org\file_saver-0.1.0\android\src\main\kotlin\com\one\file_saver\FileSaverPlugin.kt line(30,31)

It is causing build failure
I found the  error in the specified file
Error Line:
methodChannel = MethodChannel(messenger, "file_saver")
My Solution:
messenger?.let{
methodChannel = MethodChannel(messenger, "file_saver")
methodChannel?.setMethodCallHandler(this)
}

I started seeing this as well when i upgraded to Flutter 3

Facing same issue,  please upgrade the package to flutter 3

it's come when upgraded flutter to version 3. still waiting to update the package :)

hahaha, @yahu1031 I found you here man... tirelessly debuging why my at_app on flutter 3 is not compiling ...

You might have asked me then 🤣

Man ... they say a good programmers look for issues before filling one.. definitely you will be my one-stop shop

@incrediblezayed can we get a patch for this?

I tried this solution and it worked

@PedroMoreira87 it's a bit tricky to this on build servers which do refresh builds each time.

https://github.com/incrediblezayed/file_saver/issues/40#issuecomment-1148810119 this is current patch you can use for build @ollydixon @PedroMoreira87

@yahu1031 I see that but it's not safe to use "main" commits for building production apps.

@ollydixon Yes, But the main branch always doesn't go with unstable code. This branch generally referred to production. When they fix things, The stable code goes here. So, No worries to use it. Incase you still feel it may break, Then pick up the working reference hash/commit id and refer it in pubspec instead of main. So it will only take the code you referred to.

Fixes are coming to pub.dev tonight or tomorrow


[DO-NOT-MERGE] Correct metric names

Fix metric names in development doc. Thanks @alicejgibbons for spotting.

Holding off on merging, as although the metrics names outlined here do have _bucket added when querying the prom endpoint, the actual metric name used for other purposes does not have _bucket appended. I'm going to look into handling these special cases correctly in code.

@yaron2 was this planned for 1.10?


Original site hosting mnist data (chpt4) gives 403

For chapter 4 the mnist data is giving a 403 (from mnist_download).  This data is generally available on the internet though thankfully, i.e. here:
As of this writing, the necessary files are hosted here: https://github.com/golbin/TensorFlow-MNIST/blob/master/mnist/data/train-images-idx3-ubyte.gz
I know this repo is prob no longer maintained, but may be good to include the mnist.pkl, or at least the gzipped files that compromise it.

Thanks @djkramnik - that should be fixed here: https://github.com/SethHWeidman/DLFS_code/blob/master/lincoln/lincoln/utils/mnist.py now!


Case(2): Add a changed line

Adds a changed line

Successfully created backport PR #140 for case2-backport-target.


Division By 0

Sometimes changing the threshold level prevents this, but waiting 10+ min just for it to fail is getting annoying. It already takes forever, I don't want to run the program 2 or 3 times just for one video. If you could fix this, it would be much appreciated!
Traceback (most recent call last): 65536kB time=00:50:13.13 bitrate= 178.2kbits/s speed=7.55x
File "C:\Users\kylep\Documents\jumpcutter-master\Alt\video-remove-silence", line 288, in
out_wav.writeframes(compress_audio(args, wav, audio_start_frame, audio_end_frame, audio_result_frames))
File "C:\Users\kylep\Documents\jumpcutter-master\Alt\video-remove-silence", line 250, in compress_audio
r = i / (crossfade_length - 1)
ZeroDivisionError: division by zero

In case anyone else has this issue, I have a fixed version on my fork. Not sure if it's efficient or whatever, so I'm not going to submit a pull request.  Sound seems unaffected by my edit, so I think it's ok. It works at least.


feat(auth): local cdn

Using docker layer build will do better.


ReactInviewMonitor adds an extra div wrapper to my contents

   <ImpressionRecorder>

    </ImpressionRecorder/>

Renders:

    </>

It would be ideal if it didn't add that extra wrapper. I can make this work by changing my css a little, but it breaks my grid.

Hi,
Yeah extra wrappers can be quite annoying to handle when using grid, and sometimes flex as well. One workaround would be to use the newer display: contents CSS rule, but it's not that well supported yet, unfortunately.
The library needs a DOM element primarily for the in view detection, and the DOM element is also used for adding/removing classes. In theory both of these could be delegated to the children (react ref and className strings, respectively), but it would start to get quite messy.
Alternatively I think you'll have to do what you suggested yourself: extract out the styles relayed to your grid element layout and add them to a class that you pass to the InViewMonitor. Did you give this a try yet?


ZigZag Conversion

Problem Link : https://leetcode.com/problems/zigzag-conversion/
Adding Code with approach and problem in C++.
Please allow me .

@Piyush228 Assigned in C++


[NewPlugin]  CyShell ClassyPP 1.0

Please add my plugin to the repository.
Yes, I've read the instructions, especially the part about creating an actual release and creating the tag.
I either used the UI, or the hub command to create a real release.
Author: CyShell
Repo name: ClassyPP
Release: 1.0

Please update it after fixing the minimumbinaryninjaversion which is not currently a valid json value. It should just be 3233. You can verify your plugin.json is valid by:
python -m json.tool < plugin.json and verifying it parses.

Done

Done :)

Added, thanks!


CouchPotato takes a long time to load

The other modules load almost instantly, but CouchPotato takes a while. Not sure if it has to do with the fact there's a large library (doubtful because then Plex would also take a long time to load). Checked the logs and didn't find any messages.

The entire js is one large hack so I don't know if I can get it any better without rewriting the entire thing. That isn't likely. How long did it take?

All the js is just a hack job. I rewriting now and seeing significant speed and stability increases.

Using js or your static vars?

Static html. I'm also restructuring that. Just because js can create html on the fly doesn't make it the right way to do it.
I even remember @styxit mentioning it.

True, i wanted to use some js templating like handlebarsjs

Well I don't like your static vars I'll rather have slow or atleast use mako. Handlebars has similar syntax.
Imo the best solution would be to split monster js so you can get rid of the duck typing

@Hellowlol anywhere from 30 seconds to a minute and can sometimes crash the browser

How many movies? Is it difference between the browsers?

1000+
Tried in Chrome and Native browser on my Galaxy S5 - same response time
Also tried Chrome and Firefox from Mac OS X

Ok, seems strange. I'm gonna double check my movies number later. I'm not sure if all of them are in cp. btw can you check the devolopment checkbox inside cp and see if it gets better?

[ ] limit load

What do you mean @Hellowlol ?

I mean limit how many items are loaded. Like kodi and plex has.
The easiest way to speed up the cp module is not not have a manager folder setup in cp.
Say you have 50 wanted and 1000 in your library the co module will try to fetch 1050 images...

Okay, but to play devil's advocate here...why doesn't CouchPotato load items the same way Plex does in HTPC-Manager? I know if I go through CP directly, it looks a small chunk at a time so I don't wait for the 1300 some odd items to load all at once...

Well you have to ask the original author about that ;) that's why I want to limit it.
I prefer loading all items at once but as I hate the scrolling but it isn't a other way to really speed this up. Even if I rewrite the js, the images load time will be huge.

Just some numbers so i dont forget:
tested from remote location via nginx proxy
xhr done with 352 movies takes 3,5 sec
total requests is 946, total load time is 34 sec (all images etc)

Closing this as the js is fast enough.
On the same computer as htpc manager:
985 requests in 5,28 sec with a empty cache (chrome) including every image etc.


Validation tricked by non-nil-able value passed in

As discovered by @hbuckle in Azure/azure-sdk-for-go#2445, both types FactoryVSTSConfiguration and *FactoryVSTSConfiguration satisfy the interface BasicFactoryRepoConfiguration. (Source file can be found here).
Because Validation is implemented using reflection, the compiler isn't helping us distinguish between the two types, we have to wait until runtime. Furthermore, because Validation assumes that RepoConfiguration is always passed in as a pointer, when a struct is passed in it always fails.
There are two possible solutions:

Update code-gen to only dangle these off of the pointer type. (This could conceivably cause breaking changes)
Update the Validation code to ensure the value isn't a struct, before asserting that the object isn't a nil pointer.

We won't be fixing this for track 1.  Not applicable for track 2 as we won't be generating client-side validation.


Unclear "namespacing" and YQL in docs

I've spent the better part of today playing around with YQL and trying to work out what all the different forms of "namespacing" refer to. I think I've read everything in the docs that could possibly be related to this (multiple times) and I'm still not clear on a few things.
Take this URL
/search/?sources=VAR1&restrict=VAR2&yql=select+%2A+from+VAR3+where+name+contains+%22text%22%3B
/search/?sources=music&restrict=music&yql=select+%2A+from+music+where+name+contains+%22text%22%3B
I guess, for all the examples in your tutorials, all 3 VARs should be music. From playing around with the queries I was able to determine VAR3 could be the name of the document type. If it refers to a non-existent document type the query returns an error. VAR3 is the "sources" parameter in YQL. But then the cluster ID and the two first lines of the search definition are also "music", so I suppose it could come from either of those too.

FROM specifies which document sources to search, it is handled in a similar way to Vespa's "sources" parameter.

What exactly is a "source"? Is it the cluster ID set in services.xml? Your documentation says it's similar to the "sources" query parameter but does not say how it is different. I initially thought they were two ways of saying the same thing but when I change VAR1 it actually doesn't alter the result at all. By that I mean the correct document is still returned, but if VAR1 refers to an incorrect document type then there is also an extra errors field returned (along with the correct result). What is the point of having both of these?
More confusion:
Every single example I could find in your docs is of the form:
http://hostname:8080/document/v1/music/music/docid/Michael-Jackson-Bad
I'm referring specifically to the /music/music/ part. You don't give any example of them being different so I can't figure out what they actually refer to. I assume the second /music/ refers to the document type.
In the tutorial it mentions that in the search definition file the first two lines should contain the same name:
search music {

    document music {

...

Is it here that the first /music/ is chosen or do they always just need to be identical here?
In services.xml you have this:
<content id="music" version="1.0">
    <documents>
      <document type="music" mode="index"/>
    </documents>
    <nodes>
      ...
    </nodes>
</content>

Is it here where the first /music/ comes from? If I change the id of  to cluster then will the document URL become http://hostname:8080/document/v1/cluster/music/docid/Michael-Jackson-Bad?
It gets more confusing
Okay, so I could probably eventually figure that out through trial and error of changing the application (and I've already done heaps of that in trying to get my queries working), but I don't even see how that fits into search URLs. Is the first /music/ the same as the first sources in the search URL, the same as the second sources, the same as neither of them, or the same as both of them?
Application namespacing
So what if I have a second application running on the same nodes. How do I specify to search only documents from that application? I've read that the application name is derived from the directory name of the application's files, but haven't seen anywhere in your docs the actual use of that name.
Some of my experimenting gave confusing results
One of the experiments I ran to figure out some of this stuff is I did a POST request to insert a document into http://hostname:8080/document/v1/application/music/docid/Michael-Jackson-Bad. The confusing part of this is that it was accepted. Then I had two different documents, one at http://hostname:8080/document/v1/music/music/docid/Michael-Jackson-Bad and one at http://hostname:8080/document/v1/application/music/docid/Michael-Jackson-Bad. I have to say, I don't really understand what that first /music/ is doing.
I kinda feel stupid not being able to figure all this out, and surely I would eventually figure it all out with heaps more trial and error, but I suspect if this is not clear to me after hours of research and testing it will also not be clear to at least one other person.

Wow, this is great feedback! Thanks for taking the time.
I agree this is confusing, and examples should be better - it would help is not everything was music.
I will go through the doc and replace names. indicate namespace and document types to avoid confusion. The sources/restrict part is also vague, I will try to fix docs. Will take me a few days, but the next guy will thank us :-)

Yes, we shouldn't use the same name for different things in examples. (Another thing we should not do is use names which can be mistaken for built-in identifiers, such as "cluster". In some cases I tend to use e.g. "mycluster" instead.)
A few other clarifications:

You can have multiple content clusters, and multiple document types in those clusters. The "source" parameter can mean either a cluster or a document type. If it means a cluster, the restrict parameter is used to select only some document types of that/those cluster(s).
You probably do not want to deploy multiple applications to the same config server. That mode (multitenant config server) lets you create a Vespa PaaS, but there is a lot to doing that and we have not made any attempt to document it. If you think this is really something you should do let's discuss it further.

Thanks for the great feedback @jazoom 👍  @kkraune It's a lot of doc to go through and sample-apps/feed data etc.

The separate parameters "source" and "restrict" predates the YQL query language and we need this to work also for those who use those parameters and use a mixture of YQL, other query languages which don't support source internally, and programmatic query building. VAR1 and VAR3 mean the same thing and we take the superset if you use both. VAR2 means something else.

This is when I really tried to ponder what significance the cluster-id has and how it would play into query URLs.

I see. It does not, because another typical use case is to search multiple content cluster (sources) in the same query. If you want URL paths to designate different sources, you can deploy your own handlers and bind them to the paths you want: http://docs.vespa.ai/documentation/jdisc/developing-request-handlers.html (These could subclass or forward to the default handler, com.yahoo.search.handler.SearchHandler.)

Some projects just aren't large enough to warrant an entirely different Vespa cluster, which would increase operational complexity.

Yes, there's no low-effort middle ground here - sorry about that. We're in the process of opening up our own Vespa PaaS on AWS to external users, which would provide just that - let me know if you'd be interested in that.

@bratseth thank you for the clarification. I guess I'll just not use the sources URL query parameter and stick with the YQL FROM sources parameter.

I see. It does not, because another typical use case is to search multiple content cluster (sources) in the same query.

So what exactly is the first music in /music/music/. It looks like something that can be used for namespacing.
I guess I'll just carefully name things in services.xml to create pseudonamespaces. I like to keep things as simple as possible while still achieving the same outcome.

We're in the process of opening up our own Vespa PaaS on AWS to external users, which would provide just that - let me know if you'd be interested in that.

That actually sounds awesome but it might not be for me. I know your PaaS is a bit different, but I vowed several years ago to run my own databases.
Many years ago I was using a DBaaS (Stackmob). After a while PayPal bought them, then with little notice shut it down. I had to quickly find and migrate to another solution for a live app. I chose Parse. After a while Facebook bought Parse and eventually shut it down. They gave 12 months notice, though, so at least I had more time.
That is when I made the vow.
The next database I set up was RethinkDB. It was easy to administer and an excellent database. After a few years the company behind RethinkDB folded.
But you know what? It doesn't matter, because I'm running my own RethinkDB cluster on a private network. It's humming along perfectly probably for as long as I need it.
Like I said, your PaaS is a little different, but I don't think I'll ever go back on that vow.
I've also grown quite fond of doing my own sys admin and having databases co-located with apps (I don't actually use AWS for any of their VM products).
Anyway, this is just an interesting anecdote to explain why I'm not super keen on what sounds like will be an awesome PaaS.

So what exactly is the first music in /music/music/. It looks like something that can be used for namespacing.

Yes, indeed - that is a namespace for documents.
http://docs.vespa.ai/documentation/document-api.html
http://docs.vespa.ai/documentation/documents.html
PaaS: Ok, interesting story, and nothing I can say will make any difference here  :-)

Yes, indeed - that is a namespace for documents.

Based on the fact I was able to insert a document at /someslug/music/ and then insert the same document at /music/music/, despite me never specifying anything called someslug anywhere in the application, I guess I can just call it whatever I like, and have an unlimited number of namespaces?
From the link you shared:

Intended to be used to distinguish data from users who share the same Vespa cluster and/or distinguish between different document types in search. It is hence possible for various applications to use the same Vespa installation, ensuring they do not create document identifier collisions.

Well, distinguishing between document types is the role of the second part of that slug for REST, but where does it fit into YQL? And there is already a way in YQL to distinguish between document types as we were discussing earlier. Distinguishing between applications is exactly what I want, as we discussed before.
So is a possible solution just to handle namespacing at index time for each document? I can see how that would work for CRUD but where does this namespace fit into YQL?

I guess I can just call it whatever I like, and have an unlimited number of namespaces?

Yup.
Namespaces are for the case where you want to separate documents even though they use the same document type.
Separating applications on the query side

Either use different document types (and the restrict parameter), or
Different content clusters (and the search parameter/YQL argument), or
Add an "application" or "namespace" field which is index or attribute and add that as a filter to every query.

The first two can be done in config by setting the parameter in the default query profile.
The last can be done by a Searcher component.

@bratseth Thank you for the clarifications and for your patience.
I think I'll go with different content clusters for now since that seems to be the simplest and satisfies my current needs.
I think I've finally got clear in my head how query sources, restrict and YQL sources work. I'll just ignore query sources, always set restrict to the document type I am looking for and always set YQL sources to be the cluster-id assigned to the external application making the call. I experimented just now and indeed errors are returned by Vespa (and no search results) if either of those 2 variables reference a doctype/cluster that doesn't exist, unlike query sources, which still returns results along with the error. But that's okay, since I won't be using that one anyway.


previous_def does not work with top-level funs

The following snippet leads to an infinite recursion:
fun foo : Int32
  1
end

fun foo : Int32
  previous_def &+ 2
end

foo # Stack overflow (e.g., infinite or very deep recursion)

It would have worked with defs:
def foo : Int32
  1
end

def foo : Int32
  previous_def &+ 2
end

foo # => 3

In case we don't find an easy way to fix this, I think it would be acceptable to disallow previous_def in fun.


Getting "Attribute error:" while using "else_then" statement !

Hello, Follwing is the code that I am running for else_then statement :

It is giving an error like following :
image
Can you please help me in this and suggest some solution for this?

Ah... This is an interesting one. The Python error is certainly not very helpful.
The way the current library is implemented, the vsc.else_then requires parens ( vsc.else_then(): ). So, if you add parens on the vsc.else_then branch, your current code will work.
After looking at this, I'm not sure it's intuitive that else_then would require parens. So, I've updated the library to work whether or not parens are specified. Thanks for pointing this out!

hello, I tried this "else_then()" modification but it is giving an error like following :

So, how can I resolve this?

It is working. There was an issue at my end. Thanks for helping !


image view scale bar unit not switching to appropriate unit

Describe the bug
The scale bar label is not switching units when zooming. It seems to be stuck on whatever the initial unit was.
To Reproduce

Zoom into the image here: https://portal.hubmapconsortium.org/browse/dataset/d55e751748bd094ff5b0b55befb08d41

Expected behavior
The unit on the scale bar should switch to avoid the need for decimals.
Screenshots

Fixed by https://github.com/hms-dbmi/viv/pull/694


Curved LWPolyline producing flat edges

I'm working with a file that has a gear drawing. The teeth on the gear are supposed to have curved corners, as shown in AutoDesk's DXF viewer, but the NetDXF import is producing flat/sharp corners at these locations. I am debugging the import, and it looks like the entire file is loading as a single LWPolyline, so to my knowledge there is nothing I can do to improve the resolution.

Here is a link to the file.
https://1drv.ms/u/s!AlCaZVdHPW33hXnAkcAuOhkKyUGx
Here are a few code snippets on how I am loading the vertices:
foreach (var p in dxf.LwPolylines)
                    entities.Add(p);
...
List<LwPolylineVertex> vertices = null;

            cachedPoints = new List<Vector2>();

            if (entity.Type == EntityType.LightWeightPolyline)
            {
                LwPolyline lwpl = (LwPolyline)entity;

                vertices = lwpl.Vertexes;

                for (int i = 0; i < vertices.Count; i++)
                {
                    cachedPoints.Add(vertices[i].Position);
                }
            }

Stepping through I am seeing around 7672 vertices, but it is still producing flat edges. I also tried exporting the coordinates and plotting it in gnuplot, and it looks like my application is graphing it properly.
I am using NetDXF version 2.2.0
Please let me know.
-Michael

Thank you for the prompt response! Is there some example code or documentation you can point me to for how to compute the arc from the bulge? Or perhaps the definition of bulge?


Crash when compiling kernel from Geekbench 6 Horizon Detection

When compiling the attached source, with the following options:
clspv source.cl  -cl-fast-relaxed-math -cl-single-precision-constant  -cl-kernel-arg-info   -fp16=0  -rewrite-packed-structs  -std430-ubo-layout  -decorate-nonuniform    -arch=spir  --use-native-builtins=acos,acosh,acospi,asin,asinh,asinpi,atan,atan2,atan2pi,atanh,atanpi,ceil,copysign,fabs,fdim,floor,fma,fmax,fmin,frexp,half_rsqrt,half_sqrt,isequal,isfinite,isgreater,isgreaterequal,isinf,isless,islessequal,islessgreater,isnan,isnormal,isnotequal,isordered,isunordered,ldexp,mad,rint,round,rsqrt,signbit,sqrt,tanh,trunc,  -spv-version=1.6  -max-pushconstant-size=256  -max-ubo-size=65536  -global-offset  -long-vector  -module-constants-in-storage-buffer  -cl-arm-non-uniform-work-group-size     -o compiled.spv

clspv crashes as follows (don't know why the assert is not firing, assertions are enabled):
Program received signal SIGSEGV, Segmentation fault.
llvm::GetElementPtrInst::Create (PointeeType=0x55555ae79d98, Ptr=0x55500fa14be0, IdxList=..., NameStr=..., InsertBefore=0x55555b1e6450)
    at /path/to/clvk/external/clspv/third_party/llvm/llvm/include/llvm/IR/Instructions.h:972
972         assert(cast<PointerType>(Ptr->getType()->getScalarType())
(gdb) bt
#0  llvm::GetElementPtrInst::Create (PointeeType=0x55555ae79d98, Ptr=0x55500fa14be0, IdxList=..., NameStr=..., InsertBefore=0x55555b1e6450)
    at /path/to/clvk/external/clspv/third_party/llvm/llvm/include/llvm/IR/Instructions.h:972
#1  0x0000555555ba45e6 in clspv::SimplifyPointerBitcastPass::runOnGEPImplicitCasts (this=<optimized out>, M=...)
    at /path/to/clvk/external/clspv/lib/SimplifyPointerBitcastPass.cpp:490
#2  0x0000555555ba527a in clspv::SimplifyPointerBitcastPass::run (this=0x55555b1be238, M=...) at /path/to/clvk/external/clspv/lib/SimplifyPointerBitcastPass.cpp:52
#3  0x0000555555a89f91 in llvm::detail::PassModel<llvm::Module, clspv::SimplifyPointerBitcastPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (this=<optimized out>, IR=..., AM=...) at /path/to/clvk/external/clspv/third_party/llvm/llvm/include/llvm/IR/PassManagerInternal.h:89
#4  0x000055555906e5a1 in llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (this=<optimized out>, IR=...,
    AM=...) at /path/to/clvk/external/clspv/third_party/llvm/llvm/include/llvm/IR/PassManager.h:517
#5  0x0000555555aa5458 in (anonymous namespace)::RunPassPipeline (binaryStream=0x7fffffff8b40, M=...) at /path/to/clvk/external/clspv/lib/Compiler.cpp:740
#6  (anonymous namespace)::CompileModule (module=std::unique_ptr<llvm::Module> = {...}, output_buffer=output_buffer@entry=0x0, output_log=0x0, input_filename=...)
    at /path/to/clvk/external/clspv/lib/Compiler.cpp:1101
#7  0x0000555555aa678c in (anonymous namespace)::CompileProgram (input_filename=...,
    program="// Copyright (C) 2004-2020 Primate Labs Inc.  All Rights Reserved.\r\n\r\n// Matches struct Line in hough.h\r\nstruct Line {\r\n  int theta;\r\n  float rho;\r\n  int score;\r\n};\r\n\r\n// Linear interpolate between (0"..., output_buffer=output_buffer@entry=0x0, output_log=output_log@entry=0x0) at /path/to/clvk/external/clspv/lib/Compiler.cpp:1148
#8  0x0000555555aa7383 in clspv::Compile (argc=<optimized out>, argv=<optimized out>) at /path/to/clvk/external/clspv/lib/Compiler.cpp:1210
#9  0x00007ffff785168a in __libc_start_call_main (main=main@entry=0x5555559f75d0 <main(int, char const* const*)>, argc=argc@entry=20, argv=argv@entry=0x7fffffffca08)
    at ../sysdeps/nptl/libc_start_call_main.h:58
#10 0x00007ffff7851745 in __libc_start_main_impl (main=0x5555559f75d0 <main(int, char const* const*)>, argc=20, argv=0x7fffffffca08, init=<optimized out>, fini=<optimized out>,
    rtld_fini=<optimized out>, stack_end=0x7fffffffc9f8) at ../csu/libc-start.c:360
#11 0x0000555555a88a41 in _start ()

source.txt

The core of this problem is that clspv is trying to perform multiple transforms on the same instruction. It identifies a few implicit casts, deals with the first and erases the basis of the second.
Here is a minimal testcase:
target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
target triple = "spir-unknown-unknown"

%struct.Line = type { i32, float, i32 }

define void @test(ptr addrspace(1) %lines, i32 %n) {
entry:
  %gep1 = getelementptr inbounds %struct.Line, ptr addrspace(1) %lines, i32 %n
  %gep2 = getelementptr inbounds i8, ptr addrspace(1) %gep1, i32 4
  store float 0.000000e+00, ptr addrspace(1) %gep2, align 4
  ret void
}

Run that source as test.ll using the command:
clspv-opt test.ll --passes=simplify-pointer-bitcast

The transform is also iterating in a non-deterministic manner so I've seen a couple different failure modes on the original source. I plan to break up the implicit cast transform into a more pieces (with some redundancy) to avoid these issues.

Yes ImplicitCasts should not be a DenseMap.

The bad test seems to stem from the pointer being in the private address space. The same test gives expected results if the pointer is in addrspace 1 for example.

All tests are passing after the refactor, but the minimal case for the original bug (see https://github.com/google/clspv/issues/1113#issuecomment-1551543610) appears to be transformed incorrectly.
The current result is:
target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
target triple = "spir-unknown-unknown"

%struct.Line = type { i32, float, i32 }

define void @test(ptr addrspace(1) %lines, i32 %n) {
entry:
  %0 = getelementptr %struct.Line, ptr addrspace(1) %lines, i32 %n
  store float 0.000000e+00, ptr addrspace(1) %0, align 4
  ret void
}

The problem boils down to recalculating the GEP indices. The struct is 12 bytes, so the math used is to calculate the index is (1 / 12) which loses resolution.


Export/Import doesn't really seem to work once data goes through excel

Very important to work...

When saving an XML from Excel, the language elements were removed. This caused the import to fail.


More detailed failure message for host check

Needed to distinguish between "didn't provide hostname" and "hostname lookup failed"

Yeah, will get around to it...

You can use this code and extend it with other cases which needs to be tested
func TestHostAddrValidator(t *testing.T) {
        tests := []struct {
                name  string
                input string
                fail  bool
        }{
                {
                        name:  "valid ipv4 and port",
                        input: "<IP_ADDRESS>:8080",
                        fail:  false,
                },
                {
                        name:  "valid ipv4 and mo port",
                        input: "<IP_ADDRESS>",
                        fail:  true,
                },
                {
                        name:  "valid dns and port",
                        input: "localhost:8080",
                        fail:  false,
                },
                {
                        name:  "valid dns and no port",
                        input: "localhost",
                        fail:  true,
                },
        }
        for _, tt := range tests {
                t.Run(tt.name, func(t *testing.T) {
                        err := HostAddrValidator(tt.input)
                        if err != nil && !tt.fail {
                                t.Fatalf("supposed to succeed but fail with errorL %+v", err)
                        }
                        if err == nil && tt.fail {
                                t.Fatalf("supposed to fail but succeeded")
                        }
                })
        }
}

Serguei
From: Jeff Byzek @.>
Reply-To: sbezverk/tools @.>
Date: Wednesday, August 24, 2022 at 5:09 PM
To: sbezverk/tools @.>
Cc: sbezverk @.>, Comment @.***>
Subject: Re: [sbezverk/tools] More detailed failure message for host check (PR #1)
Yeah, will get around to it...
—
Reply to this email directly, view it on GitHubhttps://github.com/sbezverk/tools/pull/1#issuecomment-1225855970, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AD4E7UAODDGGAEVGE7DMNT3V2Y3INANCNFSM562OM3VA.
You are receiving this because you commented.Message ID: @.***>

Ok, added tests and cleaned up the URL validation, too.


tests: mock aiohttp responses and fix windows

fix: use WindowsSelectorEventLoopPolicy on windows
in addition, will use aioresponses for our test suite so no aiohttp sessions actually make real requests.

Fixing conflicts and then merging.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

47 of 57 (82.46%)  changed or added relevant lines in 4 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.2%) to 78.756%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

tests/test_fixtures.py
18
19
94.74%

modmail/bot.py
9
18
50.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.2%

Covered Lines:
1672

Relevant Lines:
2123

💛  - Coveralls


feat: export gio-form-json-schema component

Issue
https://gravitee.atlassian.net/browse/APIM-451
Description
A small description of what you did in that PR.
Additional context

📚  View the storybook of this branch here

🧪  Gravitee.io Automatic Prerelease
npm install<EMAIL_ADDRESS>
yarn add<EMAIL_ADDRESS>

:tada: This PR is included in version 5.4.0 :tada:
The release is available on:

npm package (@latest dist-tag)
npm package (@latest dist-tag)
npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Traing code

Hi, good job! When would you like to release the training code?

Thank you for your interest in our work. The training code are now released!


Chapter 2.1 example

Partially addresses #86
This adds a case study to chapter 2.1.  This demonstrates the fee-savings and privacy benefits of using segwit v1.
@bitschmidty - let me know what you think. If you like this, we can add similar case studies to chapters 2.2 - 2.4.

rebased on master. I haven't yet addressed @bitschmidty's feedback

Addressed all @bitschmidty comments. Thanks!

Addressed @bitschmidty 's comments (thanks, and sorry for pushing a broken branch). I've tested and think everything should work now.

tACK e975cdb27ad323641527913e18b42fe335299856

tACK e975cdb

:pray:


🐛 [Bug]: 没有办法自动引入vant任何组件

Which React Vant packages are impacted?

[X] react-vant (React Vant core)
[ ] react-vant-icons(React Vant Icon)

What version of React Vant are you using?
"react-vant": "^3.3.1"
Reproduce live demo(codesandebox or stackblitz)?
No response
Descripition

我确认我配置正常，使用别的框架是能够正常引用。
使用的是react 17

目前使用只能手动import 很难受

react 不都这样？😂


fix(query): Use span.start&end to find function_scope_flag ast node

This is because we can have two functions that hash to the exact same number,
but to my knowledge span's of functions are unique.

Current dependencies on/for this PR:

main

PR #1524

PR #1526

PR #1527   👈

This stack of pull requests is managed by Graphite.

Merge activity

Nov 26, 11:22 PM: @Boshen started a stack merge that includes this pull request via Graphite.


Using latest GOBL v0.56 with complements

Moving gobl.Document to schema.Object

My thoughts exactly @cavalle! I'll add a issue to reflect that. Ideally the GOBL::Envelope should be the main entry point with the insert and extract methods.


Documenting fix for git-lfs - quota reached

Solution to issue #13
Thanks @Zokhoi for the fix!

We are going to ditching git-lfs completely and switching over to Zenodo, with the relevant branch lbB_zenodo and pull request #12. The link I gave you is from there. I don't know if it's worth updating the documentation for git-lfs at this point.


Incorrect sample codes in Creating Consumers of Model Observer.

The sample code given for manually testing the output had declared const ws thrice. Hence it returned error as - Uncaught SyntaxError: Identifier 'ws' has already been declared.
Also the self.send_json() method takes argument of type dictionary and the message.data returns JSON.

@jeetpatel9  thank you for spotting this :)


envoy: Update envoy 1.29.x to v1.29.7

This is mainly to pick up the below CVE fix from the upstream.
Related CVE: https://github.com/envoyproxy/envoy/security/advisories/GHSA-fp35-g349-h66f
Relates: https://github.com/cilium/proxy/pull/817
Relates: https://github.com/envoyproxy/envoy/releases/tag/v1.29.7

/test

/test


add client test for optional mtls

[ ] Ambient
[ ] Configuration Infrastructure
[ ] Docs
[ ] Installation
[ ] Networking
[ ] Performance and Scalability
[ ] Policies and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure

@ramaraochavali: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

analyze-tests_istio
7875376f88e3bb113118220a2b6f0583971f0317
link
true
/test analyze-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@ramaraochavali: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

analyze-tests_istio
7875376f88e3bb113118220a2b6f0583971f0317
link
true
/test analyze-tests

integ-ambient_istio
7875376f88e3bb113118220a2b6f0583971f0317
link
true
/test integ-ambient

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@ramaraochavali: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-ambient_istio
b0d990707e46f34730d68ab03736d23ea4ce5940
link
true
/test integ-ambient

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest