cmd/internal: AVX2 instruction VPSHUFD failed to compile

What version of Go are you using (go version)?
1.7-beta2, 1.7-beta3

What operating system and processor architecture are you using (go env)?

GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GORACE=""
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"

What did you do?
The AVX2 instruction  VPSHUFD $0x39, Y1, Y1 and VPSHUFD $0x78, Y1, Y1
compile, but VPSHUFD $0x93, Y0, Y0 e.g. fails with:

asm: invalid instruction: 03087 VPSHUFD	$147, Y1, Y1

If I use the plain byte representation,
in my case BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xC9; BYTE $0x93
everything is fine...
For reproducing:
TEXT ·foo(SB),4,$0-8
         VPSHUFD $0x39, Y1, Y1
         VPSHUFD $0x93, Y1, Y1
         RET

VPSHUFD seems to accept only a 7 bit constant:
VPSHUFD $127, Y1, Y1 compiles, but VPSHUFD $128, Y1, Y1 does not....

Okay, VPSHUFD accepts either a positive or negative 7 bit shuffle constant...
Semantically these two lines are equal:
VPSHUFD $147, Y1, Y1 and VPSHUFD $-109, Y1, Y1
but only the second one compile without an error

@TocarIP

CL25383 makes VPSHUFD consistent with PSHUFD and only allows non-negative arguments.
Gnu as allows both (e. g. -6 and 0xFA). It may make sense to add signed form, but that should be done for all instructions at once.


CNAME flattening

What does this PR do?
Allow handling host rule with different names than the HOST header that comes in.
Motivation
I am working in a project that allow user masking their domain/subdomain to our domain. Previously, only able to serve request that have same host rule and host header that came.
Fixes #141
More

[x] Added dependency(https://github.com/patrickmn/go-cache)
[x] Add new set of config
[x] Added/updated unit test
[x] Add new integration test
[x] Add new documentation

Additional Notes

To allow generate/serving the request SSL, must use httpChallenge with active onDemand rule, dnsChallenge is only possible if the request host dns is also managed by ours own.
ACME onDemand config, should not be deprecated, if it being deprecated and removed, then this feature will lost the ability to generate the requested SSL cert. Resulting to a breaking response because SSL protocol error, Invalid CA/CN, etc.
Current additional config example

[hostResolver] #currently using resolver label
cnameFlattening = true #default is false, if this not set true, following config is useless
resolvConfig = "/etc/resolv.conf" # default is /etc/resolv.conf, if changed, the following file must follow resolv.conf standard
resolvDepth = 5 # maximum CNAME lookup depth before finishing
cacheDuration = "30m" # default cache expiration 30 minute

Hello @gamalan .
Many thanks for this PR. :+1:
We talked about it with the team and, even if we understand the need, we are not sure that it's a best practice to check the CNAME flattening by default.
Indeed, only Cloudflare implements this (useful) feature and, I guess, only a part of Clouflare users use it.
That's why, I guess it should be great if the CNAME flattening was enable thanks to a flag. Thus only users who really need it will activate it.
WDYT?

AFAIK Openstack Swift is using CNAME flattening, as a precaution they have a limit (lookup_depth) of dns resolves which are allowed for each request.
https://docs.openstack.org/newton/config-reference/object-storage/features.html
"CNAME lookup"
https://github.com/openstack/swift/blob/master/swift/common/middleware/cname_lookup.py

@nmengin agreed, not all people need this. My take is setup an additional set of global config, inside entrypoint, called entryPoints.resolver. With set of value for :

CNAMEFlattening = true/false if false, any other option is useless, default is false
resolverDepth = 0-XX, how deep it should lookup a dns record, 0 means unlimited. default is 0
cache = 0-XX, cache time, in a minutes format, default is 30 minutes.

An example :
[entryPoints.resolver]
CNAMEFlattening = true
resolverDepth = 10
cache = 30

Happy to accept some opinion.

@gamalan if you set resolverDepth by default to 0 (unlimited), then what would happen if the CNAME resolve chain has a circular reference ? Maybe setting it by default to 3 or 5 would be a better option ?
Would you also consider a case where dns servers for CNAMEFlattening resolving can be specified in config file ? The /etc/resolv.conf can be pointing to internal dns servers which might not be (in some cases) best choice to use as a resolving dns servers for CNAMEFlattening process.

@gregorybrzeski ah, forgot about that case, you are right, I think 5 should suffice for default. Also for the resolver config, good idea, but it should follow the resolv.conf standard(not sure gonna work in windows though).

Already make a new set of config, haven't been pushed yet. Currently, the CNAME flattening process is separated as a new package, the unit test has been added, the integration test and documentation is WIP. Not sure where to put for the documentation.
The additional config is set to global, as example
[resolver] #currently using resolver
cnameFlattening = true #default is false, if this not set true, following config is useless
resolvConfig = "/etc/resolv.conf" # default is /etc/resolv.conf, if changed, the following file must follow resolv.conf standard
resolvDepth = 5 # maximum CNAME lookup depth before finishing
cacheDuration = "30m" # default cache expiration 30 minute

Hello @gamalan ,
Many thanks for the modifications you made.
We think the resolver block is a good idea but we prefer keep the resolvdepth and the cacheduration hardcoded.
The flag should look like this :
[resolver] #currently using resolver label
cnameFlattening = true #default is false, if this not set true, following config is useless
resolvConfig = "/etc/resolv.conf" # default is /etc/resolv.conf, if changed, the following file must follow resolv.conf standard

Moreover, we would like to give the possibility to the users to enable resolver and customizeresolver.resolvconfig even if the resolver.cnameflattening is set to false.
It can be useful for others Use Cases.
WDYT?

@nmengin well, actually, resolvConfig still can be set if cnameFlattening is not true, but it will not be used for the process. But I like to be able to set resolvDepth and cacheDuration, because some people might have their own setting preference. The default is hardcoded and some might not need to change it anyway. Also, I change the block from resolver to hostResolver, to align it with the added package.

Hello @gamalan .
We are agree with you about the customization of resolvDepth but we are not sure for the cacheDuration.
Indeed, users can need more or less depth levels and if we do not allow the resolvDepth customization, these users can have a real problem.
But the cache duration is a just a timeout, it can be nice to customize it but users can manage correctly their own Træfik without modifying it.
Even if, it's just an optional tag, we try to keep Træfik configuration as simpler as we can, that's why we prefer to not introduce  options which seem to not be very useful.
WDYT?
I have another question about your Pull Request description:

must use httpChallenge with active onDemand rule,

Can explain why only onDemand works and not onHostRule and acme.domains please?
Thanks in advance

Hello @nmengin
The cacheDuration exists to limit CNAME flattening process. This is not for the DNS resolving timeout, it's for how long the result stays in cache. If the cache stays longer, then it will decrease the DNS resolving process count. It can be removed, but then the user won't be able to change it and stuck with the default. Another scenario is removing the cache altogether, but then it would cost a lot of processes.
Regarding this part

must use httpChallenge with active onDemand rule
Although it can use onHostRule or [acme.domains], it means the CNAME record(host) must be added in the firsthand, which defeat the purpose. Also change in the config, when running as docker container, is not refreshed unless restarted(CMIIW). So, to generate the request SSL cert it must use onDemand process, despite its slow process and Let's Encrypt rate limit. This is a tradeoff that one must understand when using this feature, especially when serving https request.

Thank you.

I second the ability to allow users to set their own resolvDepth however I believe that it should be set to a low number by default. At the same time I have a mixed feelings if there should be a hardcoded maximum value or allow unlimited (0). Numerous application which I have seen have a hardcoded maximum value to prevent circular references, on the other hand I like the ability for a knowledgable user to have the flexibility to set it to any number which particular use case requires.
Regarding cacheDuration what would you say to set it to TTL value ? There is no additional overhead as the dns responses should already contain this information. This approach is simple (doesn't require additional configuration settings) and at the same time allows user flexibility in managing the cache duration.

@gamalan

Also change in the config, when running as docker container, is not refreshed unless restarted(CMIIW)

Are you talking about restarting the container (it's true) or restarting Træfik (it's false) ?
I understand your need about the onDemand option and, even if I guess the use case can be solved by using the DNS challenge (if the NS entry exists before starting Træfik), we will take this use case in account for the onDemand option.
Design LGTM.

@nmengin
The container one. I think using DNS Challenge is not possible, well not
entirely. If the incoming request DNS also internally managed, then it
would be possible. But, if it not, then it would be impossible, because we
can't change the DNS record.
So far, haven't got any idea, unless using HTTP Challenge.
On Fri, Jun 1, 2018, 9:54 PM NicoMen<EMAIL_ADDRESS>wrote:

@gamalan https://github.com/gamalan
Also change in the config, when running as docker container, is not
refreshed unless restarted(CMIIW)
Are you talking about restarting the container (it's true) or restarting
Træfik (it's false) ?
I understand your need about the onDemand option and, even if I guess the
use case can be solved by using the DNS challenge (if the NS entry exists
before starting Træfik), we will take this use case in account for the
onDemand option.
Design LGTM.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/containous/traefik/pull/3403#issuecomment-393905639,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABGCk3MEtGWEgaqh2t5U0Yf9Diz_af1wks5t4VWUgaJpZM4UQk17
.

@gamalan I just foud this Pull Request.
Do you think it can help for the CNAME flattening?

@nmengin thanks for the feedback, I'll check it out and update it next week after Eid Al-fitr day. Currently, I'm unable to fully check it.

@nmengin looking at the pull request. I don't think it's solve the problem. Because traefik only able to change the dns that it's managed right? CMIIW.

@nmengin there is a failed build on Semaphore, but it got weird output. This build the integration test is successful but the unit test is failed when generating cross-binary. But, in this build the unit test is successful, yet the integration is failed. Both builds are using same commit points.


Add setting to disable renaming the Chat window in the editor

When you open the Chat window in the editor, it renames the tab with a summary of the discussion, which is usually long and takes too much space.
It would be nice to have a setting to control this behaviour and keep it always something short like "Chat".

I have opened multiple Copilot chat tabs to handle different tasks.
However, I am not satisfied with the automatically generated names and would like to customize these tab names myself.

You can now rename chat sessions manually by running the command "Show Chats" or clicking it in the chat panel, and clicking the pencil icon by the chat session.


Extended help

Proposed Semver Increment Bump: [MAJOR/MINOR/PATCH]
Patch
Changes Proposed in this Pull Request (List new items in CHANGELOG.MD)

Added ability to use ExtendedHelp now via exports.help.extendedHelp
Usage typos fixed
Inhibitors now await properly.

 extendedHelp


fix: add support for albums and tracks

This PR adds support for the albums tag, album 9 media type, and track 10 media type.

Summary by CodeRabbit

New Features

Expanded media type options with new enumerations: 9, 10, ALBUM, and TRACK.
Added a new filtering option for the get-library-items API to allow users to filter by albums.

Documentation

Updated API descriptions to include new filtering options for enhanced user understanding.

Thank you very much!


miniscript: doc: fix Older/After interchange in doccomments

Double checked, this time I hope there is no more occurrence! :)
fixes #111

Thanks. utACK 5e5b0b63e724106c446021bfd98f9af2cc09d3c7


Use dynamically-sized response queue to prevent full queues

Scope & Purpose
(Please describe the changes in this PR for reviewers)

[x] :hankey: Bugfix
[ ] :pizza: New feature
[ ] :hammer: Refactoring
[ ] :book: CHANGELOG entry made
[ ] :muscle: The behavior in this PR was manually tested
[ ] :computer: The behavior change can be verified via automatic tests

Backports:

[ ] No backports required
[x] Backports required for: Forward, devel

Testing & Verification
(Please pick either of the following options)

[ ] This change is a trivial rework / code cleanup without any test coverage.
[x] This change is already covered by existing tests, such as java driver concurrent transaction tests
[ ] This PR adds tests that were used to verify all changes:

[ ] Added Regression Tests
[ ] Added new C++ Unit Tests
[ ] Added new integration tests (i.e. in shell_server / shell_server_aql)
[ ] Added new resilience tests (only if the feature is impacted by failovers)

Jenkins: https://jenkins.arangodb.biz/view/PR/job/arangodb-matrix-pr/12028/

Hey are you changing the H2CommTask, there is a limit of active streams enforced in the protocol

Why are you changing the H2CommTask, there is a limit of active streams enforced in the protocol

https://jenkins.arangodb.biz/view/PR/job/arangodb-matrix-pr/12030/

@graetzer So if there's a limit of n streams, it's not allowed to send the (n+1)th request on the connection before getting at least one response back?

@graetzer : I guess you are referring to this code in H2CommTask.cpp?
249 void submitConnectionPreface(nghttp2_session* session) {
250   std::array<nghttp2_settings_entry, 4> iv;
251   // 32 streams matches the queue capacity
252   iv[0] = {NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 32};
253   // typically client is just a *sink* and just process data as
254   // much as possible.  Use large window size by default.
255   iv[1] = {NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE, window_size};
256   iv[2] = {NGHTTP2_SETTINGS_MAX_FRAME_SIZE, (1 << 14)};  // 16k
257   iv[3] = {NGHTTP2_SETTINGS_ENABLE_PUSH, 0};
258
259   nghttp2_submit_settings(session, NGHTTP2_FLAG_NONE, iv.data(), iv.size());
```
So it looks like it is guaranteed that the number of concurrent streams will not exceed 32.
We should however turn the 32 into a constexpr, so it can be used from here and in the queue size declaration.

@graetzer : can you re-check this PR after my latest push? I hope it addresses your concern about the maximum number of concurrent streams.

http://<IP_ADDRESS>:8080/view/PR/job/arangodb-matrix-pr/12049/

http://jenkins01.arangodb.biz:8080/job/arangodb-ANY-java-driver-matrix/1171/

Test blue.


executablePath in PuppeteerCrawler

There is no way to select to use my existing chrome installation with a specific profile
f.ex:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --profile-directory="Profile 2"
new Apify.PuppeteerCrawler({         requestQueue,         launchPuppeteerOptions: {             useChrome: true,             stealth: true,             headless: false,         }, })

You can use all the options of puppeteer.launch() in LaunchPuppeteerOptions. Instead of useChrome: true, use executablePath: your path

Yes, it still doesnt open my profile though, the chrome instance that gets opened has no profiles connected. I copied and pasted the command that my personal chrome instance shortcut has.
executablePath: 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe',
args: ['--profile-directory=Default']

Basicly I would like apify to use my personal chrome browser with all my extensions, sessions and where i'm still logged into google.
This doesnt work.
I've come across a site that uses recaptcha 3, and after a while it starts blocking all request from my scraper, it starts working again after a few hours, but not nearly long enough for me to finish scraping.
This site doesnt seem to work for me at all from incognito mode, i've probably already screwed up my ip, so google doesnt trust it when browsing anonymously. Everything works fine when using my regular browser profile and i can spam click the site how long i want without it blocking me.
Yes i've tried stealth mode, and i dont use headless.
Do you know if its possible to use apify with firefox instead of chrome ?

ReCaptcha allows only a limited amount of requests from a single IP. I'd advise against using your personal profile for scraping, because it can get flagged and after a while, you'll be doing ReCaptcha challenges yourself while browsing the web.
Have you tried your approach with plain puppeteer? apify supports everything puppeteer supports and we don't do any magic with executablePath or args, so the fact that it doesn't work may have nothing to do with apify. I did a quick google search of adding a profile directory and there doesn't seem to be a definitive guide for all environments.
And yes, you can use apify with Firefox using the puppeteer product option. Make sure to install Firefox with puppeteer using PUPPETEER_PRODUCT=firefox npm install first.

Thank you ill try that.
This probably isnt an apify issue, so i'll close this. Thanks for all the help.

Hi, If someone else would find themselves here, here is how to set it in PlaywrightCrawler object
let browser = "/usr/bin/chromium";
if (os.type() === 'Linux' && os.version().includes('NixOS')) {
  browser = "/run/current-system/sw/bin/chromium";
}

const crawler = new PlaywrightCrawler({
  launchContext: {
    launchOptions: {
      executablePath: browser,
    }
  },
})


Custom styling to Codepen iframe

Is it possible to add styles like: width and height to a Codepen Embed?

I found the class in the iframe afterall! 😅

Great news, any and all issues makes me happy because it means my plugin is in use and that makes me happy :D

This will actually be possible after pull request #38 is merged as long as the provider supports it.
It seems Codepen only has support for height: https://blog.codepen.io/documentation/api/oembed/#height-adjusting-5

Well, you can set the desired width and height on the iframe in your CSS.


Proper glib bindings for font types

FontOptions commit would need some careful reviewing. I changed the ffi signatures based on documentation found FontOptions, cairo_set_font_options and cairo_scaled_font_create.

@johncf Big thanks for this.
IMHO only last is to confirm that this crate still working (FontOption clone, etc. ). Can you do it?

Forgot say about removed get_ptr/get_ptr_mut.
I proposed leave it but add deprecated attribute to it.
But as this crate still not 1.0.0 this not big problem for me.
@GuillaumeGomez It need be restored?

only last is to confirm that this crate still working (FontOption clone, etc. ).

By writing automatic test cases to check whether they work? I'm not very sure how to check their validity, though. Are there any test cases already in the repo that I can use as a template?

I proposed leave it but add deprecated attribute to it.

This is actually an excellent idea!

But as this crate still not 1.0.0 this not big problem for me.

Well, it is for me. ;) If we have "stable" code enough, it'll only be easier for us to finally release a 1.0 version.

@GuillaumeGomez It need be restored?

What do you mean?

By writing automatic test cases to check whether they work? I'm not very sure how to check their validity, though. Are there any test cases already in the repo that I can use as a template?

I think the "easiest" way to confirm this is adding an example to the examples repo. Or maybe oyu had something else in mind @EPashkin?

I proposed leave it but add deprecated attribute to it.

Well this is a breaking change anyway. So, if you're following semantic versioning, next release after this is merged should be 0.2.0 (you're welcome :smile: ). So I don't think deprecating an already undocumented function would make sense.

I think the "easiest" way to confirm this is adding an example to the examples repo.

This would take me some time. I wouldn't be confident "using" this API yet. The only examples I have created using gtk-rs were by referring to examples in C code. If I could find any (or if you could point me to one), I'll add them.

Never used it myself. Looks like it'll be fun haha.

As I don't use cairo at all, so for me is good even if @johncf say that it works :wink:
Updated example\cairotest.rs is better

@EPashkin: It's good for me as is, do I merge?

@GuillaumeGomez  Yes if you agree with completely removed get_ptr/get_ptr_mut

As I don't use cairo at all, so for me is good even if @johncf say that it works :wink:

It works!! :crossed_fingers:
Well, one simple example I could think of is to get_font_options from a cairo context, change antialias or something, and set_font_options. May be do a clone too while at it!! ScaledFont API looks scary! I'll see what I can do after a few days.

@EPashkin: I'm just a bit worried about performance issues. If you don't think it'll be too much, then let's merge.

👍 for merge.

@GuillaumeGomez Could you specify the change you suspect to have introduced a performance regression.

@johncf: It's quite small, but repeated, it could be big. get_ptr* was shorter than to_glib_* functions. And GUI performance is "simple" to check: as long as it's fluid, it's ok. :)
Thanks to both of you!

get_ptr* was shorter than to_glib_* functions.

Those will most likely get optimized out by LLVM gods!

And GUI performance is "simple" to check: as long as it's fluid, it's ok. :)

No, seriously, in an automated test-like manner. Is there some way to attach a number to the current performance? For instance, it would be FPS for games.

For GTK it's very complicated. I had a few discussions about this recently and it seems there isn't any tool "usable" enough for that unfortunately. :-/

The closest thing I could find was LDTP from this mailing list. Just for testing, not benchmarking.


TOA5 to CSV

16_Jan_14 to 5_Feb_14.txt
Sunil,
The 2013-2014 data is in card converted TOA5 format. Therefore, it is not showing up when I try to card convert again. Can you determine a way to convert the TOA5 format to CSV so we can upload it to the query. Thanks!

Hey Melissa,
Sorry for the late reply. Every file has to be a valid .csv file without headings and has to be exactly 113 columns for the app to work. If you have a non-converted file for this date range, please use the procedures that I mentioned on the paper to convert it into csv. That is the only format the app would take right now. If this is the only file you have, we might have to tweak this file to convert it into csv. I might be able to come to the lab some day to show you how it can be done.


Improvements

Update dependencies and github actions
Update postpone action to not leave task instances in the past
Add support for creating tasks via the calendar
Add support for markdown in task descriptions
Add support for selecting calendar dot color
Add basic timeline view to summary

Codecov Report

Merging #12 (e9e79ef) into master (5e6cc0f) will increase coverage by 1.46%.
The diff coverage is 100.00%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@             Coverage Diff              @@
##             master      #12      +/-   ##
============================================
+ Coverage     94.48%   95.95%   +1.46%
- Complexity       73       80       +7
============================================
  Files             6        6
  Lines           308      321      +13
  Branches         45       49       +4
============================================
+ Hits            291      308      +17
+ Misses            3        1       -2
+ Partials         14       12       -2

Flag
Coverage Δ

kotlin
95.95% <100.00%> (+1.46%)
:arrow_up:

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

Impacted Files
Coverage Δ

core/src/main/kotlin/eventually/core/model/Task.kt
95.71% <100.00%> (+6.32%)
:arrow_up:

.../main/kotlin/eventually/core/model/TaskInstance.kt
100.00% <100.00%> (ø)

.../main/kotlin/eventually/core/model/TaskSchedule.kt
90.54% <100.00%> (+0.12%)
:arrow_up:

.../kotlin/eventually/core/model/TaskSummaryConfig.kt
100.00% <0.00%> (ø)

.../kotlin/eventually/core/scheduling/SchedulerOps.kt
97.65% <0.00%> (+0.03%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Unable to Show Preview Contents of a inside-article Link

Issue 1
Other skins do not have the same problem.
The preview frame is empty, cannot see the contents.

Issue 2
The sidebar could not be fully displayed.

I guess it is because the version is not updated.
Thank you for your contribution even though you cannot solve these problems right now.
Really lovely skins, appreciated it if these small bugs could be solved.

Thanks for notifying about the issues.

I had a hunch and found that this is happening because I have disabled animations with css. It's blank because Obsidian didn't load anything in that preview box at all. I posted a message about it on discord channel with no response :/
This one I had a quick look some time ago. This is happening after the live preview update. Needs some work.


[TC-535] url sig - tenancy checks

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/incubator-trafficcontrol-PR-trafficops-test/53/

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/incubator-trafficcontrol-traffic_ops-test-PR/55/

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/incubator-trafficcontrol-PR/93/

I'm getting a failure when i run your tests. I think it has to do with your set_param_value subroutine...I think...
$ prove -qrp t/api/1.1/deliveryservice/keys_url_sig.t
t/api/1.1/deliveryservice/keys_url_sig.t .. 1/? DBI bind_columns: invalid number of arguments: got handle + 0, expected handle + between 1 and -1
Usage: $h->bind_columns($var1 [, $var2, ...]) at /code/src/github.com/apache/incubator-trafficcontrol/traffic_ops/app/local/lib/perl5/darwin-thread-multi-2level/DBI.pm line 2074.
Tests were run but no plan was declared and done_testing() was not seen.
Looks like your test exited with 255 just after 6.
Test Summary Report
t/api/1.1/deliveryservice/keys_url_sig.t (Wstat: 65280 Tests: 6 Failed: 0)
Non-zero exit status: 255
Parse errors: No plan found in TAP output
Files=1, Tests=6,  2 wallclock secs ( 0.02 usr  0.01 sys +  1.76 cusr  0.53 csys =  2.32 CPU)
Result: FAIL

This test had no issues on my VM.
It can be removed, but I do not understand what is the cause of the failure.
Any additional inputs in the log from the failure?
10x,
Nir

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/incubator-trafficcontrol-PR-trafficops-test/81/

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/incubator-trafficcontrol-PR/121/


A slight typo when running the application on Big Sur

When enforcing the update in Big Sur, the version is labelled twice.

 The script is pulling the name and version of the update from the output of softwareupdate --list, and I'm guessing the name of the update is "macOS Big Sur 11.6", so it gets doubled up with the version column. Not sure if there's a good fix there, but if you could send over the full output of softwareupdate --list on a Mac with that update pending, I can reexamine the current text format and try to come up with a cleaner name/version capture.

Sure thing. Here you go!
`Software Update Tool
Finding available software
Software Update found the following new or updated software:

Label: Safari15.0BigSurAuto-15.0
Title: Safari, Version: 15.0, Size: 119059K, Recommended: YES,
Label: macOS Big Sur 11.6-20G165
Title: macOS Big Sur 11.6, Version: 11.6, Size: 2575888K, Recommended: YES, Action: restart, `

Could do that, or maybe omit version if the Title column contains "macOS"?


Quick fix for not detecting F/A-18C unit.

This is a very dirty fix for a very specific purpose, I think the name matching itself should be overhauled, but I am using this since a lot of liveries do not contain the "Hornet" tag.

This is resolved with the latest release.


Affliction Warlock, Drain Soul.

Describe the bug
When simming as an affliction warlock and looking at the damage breakdown, I'm seeing it getting in more ticks of "drain soul" on the timeline than are being accounted for on the damage breakdown.
To Reproduce
Steps to reproduce the behavior:

Sim as an affliction warlock (sample pool was 240s)
Click on "results" and look at Drain soul
Hits vs Cast were exactly the same, so I went to the timeline and checked it out.

Expected behavior
There should be more ticks being accounted for, and I think the damage being shown as the "dps" for the breakdown is incorrect.
Sim Links and Screenshots
(https://wowsims.github.io/wotlk/warlock/#eJzjUuRgEmAyYLJg9GCMYCxgamBkXMD4hXkDI9MBRsYLjIwvGBmdBDkYJRgVGA0YHUBKGFcwMgoxSC1jbWJkC8hJrEwt4mAX4JDayMjFL/B0N5PEG1kltqOHmD7vYOLiFPh6h0mJ+RaQySPw7hGTxCNZJeZ9YN7T60wSXbIQOX6B50B9P4D6gHIgaV6BF0DpOUJKLEAeA5D7Gqh3igyUyynwcQ8TxBx2gQ97mCTaZYGMd0DGNBkuFoHzu5mAZP8+EPkBzN6/C6TyDNCOX7JA7rVtIMGmLUxKPBxAT1kwBrBEsCYwLWI6y8Q1g4lhFGAFQgak6qji4mAUYJJgAqWZLCkuPiCPBZiOmDRAgc4ETEJsEJEuRnUjY1MDAwMjA2MgYWxqaGBkChIwNjY0NDXU1TUFSRoYmBo+YpTgmNvOLHDzKZPE5adMCk2XmTT+XWIyaLzM9IKR5QMj9yxGhk5oDFo63GJkmMXEoPSViRMs4FDgIAiREnGQnDUTBE7aW0JELtgrpoHBNXujo0wFc2qreAISS5IzylOLshWMTBWCJTi0aJw0PjQ6UMOYhpNHKDHHwEKrwJFUTeBAbJj2yAGq84V9ByNjENbcVC2yzv1hVYs9LPwfVoEEbtlDZD/Yw9Qd/qoR03/orf2SAluu64sfQOkX9ujmDVVAem4CAGEKnzc=)

Desktop (please complete the following information):

OS: Windows 10
Browser: Chrome
Version 108.0.5359.125 (Official Build) (64-bit)

This was fixed in #2777.


Enable trivy scan as part of nightly build

As described in https://github.com/vmware-tanzu/carvel-kapp/issues/315, it might be helpful for us to consider adding a security scan as part of a nightly build process. This would help us monitor and triage security alerts better for kapp-controller. In particular, conducting a scan of the kapp-controller image could be helpful.

related: https://github.com/vmware-tanzu/carvel-kapp/issues/315

Related work for kapp with their trivy implementation is in the following pr: https://github.com/vmware-tanzu/carvel-kapp/pull/346

If noone else is looking, I will spend an hour or so today trying to modify kapp's usage of trivy for kapp-controller 👍

I started looking at this, implemented the scanning for kapp-controller filesystem only. The docker images are not scanned yet. Will come back to this when priority shifts 👍.
https://github.com/vmware-tanzu/carvel-kapp-controller/tree/enable-trivy-scan


Allow multiple namespaces

Hi Markus,
If we have date() and sleep() calls in several namespaces, then current SleepEnvironmentBuilder implementation is limited: my need is to be able to increment A\date() after a call to B\sleep().
Here is a possibility of evolution of SleepEnvironmentBuilder class.
An example of use:
$builder = new SleepEnvironmentBuilder();
$builder
    ->addNamespace('A\\B')
    ->addNamespace('A\\B\\C')
    ->setTimestamp(strtotime('2030-01-01 00:00:00'));

Regards,
Geoffroy

Hi, that's a good point. Once I had that thought as well, but couldn't figure out on which level this requirement would fit best. I didn't decide yet if Mock would be a better place. OTOH it would introduce a lot of complexity and I would love to keep Mock simple. So maybe your approach might be feasable. I'll let that thought brew a little bit and would come back with a decision.


Not working with changed Naver UI

After update of Naver UI on April 28, it doesn't work on Naver.
I noticed this Issue, and it'll be fixed on next release.

Resolved on https://github.com/04SeoHyun/switchAccounts/commit/ae16bb9ca9c946230511044d9cd7b888184b77d4


Admin main panel design required.

Alex please design your own admin main panel for your own use and for easy access. like example number of participants, number of the checked-in and so.

Alex said it's okay as it is.

Hahaha okay then every thing is under control.


feat: twitter account for web3task, logo, background, configurations and etc

Don't forget to use new email and stuff, because the account cannot be attached to someone other than the DAO

I am interested

Thank you @andressa-cabral , will assign this task for you!


[Feature Request] Do not include TODOs that are crossed out

I'm not sure about this but I'd like to put this up for discussion:
I'm often crossing out Todos, that are not done but obsolete. To differentiate them from done Todos I leave them unchecked.
Current behavior
As these todos are unchecked, they are still included in the todo summary note
Expected behavior
I'd like for them to be left out if they are crossed out completely (start and end with ~~)
This behavior might be toggleable via a setting.
How
Maybe via REGEX:
^~~.*~~$

Aktually, even more awesome would be the implementation of the [x]it! syntax mention in the readme under ideas: https://github.com/CalebJohn/joplin-inline-todo?tab=readme-ov-file#ideas
This would include extending the markdown renderer though, I guess, as currently only - [ ] and - [x] is recognized as being a todo.


Astro + solid-devtools: "Uncaught (in promise) TypeError: document.body is null"

Good morning!
I'm attempting to use solid-devtools on a solid website, built with Solid on Vite 5, however I'm receiving this TypeError when trying to load the site using solid-devtools in Firefox-
Uncaught (in promise) TypeError: document.body is null
    detectSolid moz-extension://8dc0b69e-78b0-4727-aa28-7857a8a920ee/assets/detector.ts-ca0eb97c.js:12
    <anonymous> moz-extension://8dc0b69e-78b0-4727-aa28-7857a8a920ee/assets/detector.ts-ca0eb97c.js:66

Should be already fixed in https://github.com/thetarnav/solid-devtools/commit/358a15e43d73084ba68d3fd57af7e894d467de03


Sending messages to autopilot

Hello, my name is Pavel, I'm new to C#, I'm working on a module for sending a Mavlink message rc_channels_override to autopilot. Do you have an example of sending messages to autopilot?

Hello Pavel! You can send a Mavlink message using an example below:
`public class MavlinkConnectionTest
{
public MavlinkConnectionTest()
{
// Create a link between your app and autopilot. Check connection string on autopilot and adjust accordingly,
// this is just an example
    // for TCP client connection:               tcp://<IP_ADDRESS>:9002
    // for TCP server(listen) connection:       tcp://<IP_ADDRESS>:9002?srv=true
    // for UDP connection:                      udp://<IP_ADDRESS>:1234?rhost=<IP_ADDRESS>&rport=1235
    // for COM\serial port connection Linux:    serial:/dev/ttyACM0?br=115200
    // for COM\serial port connection Windows:  serial:COM4?br=115200
    var connection = MavlinkV2Connection.Create("tcp://<IP_ADDRESS>:9002?srv=true");

    // create a packet to send over your connection
    var packet = new RcChannelsOverridePacket()
    {
        SystemId = 1, // this is message sender SystemId
        ComponentId = 1, // this is message sender ComponentId
        Payload =
        {
            TargetComponent = 1, // this is your target autopilot component Id
            TargetSystem = 1, // this is your target autopilot system Id
            // below are payload params that need to be filled out according to what you want your message to do
            // see Mavlink documentation on the matter https://mavlink.io/en/messages/common.html look for RC_CHANNELS_OVERRIDE
            Chan1Raw = 0,
            Chan2Raw = 0,
            Chan3Raw = 0,
            Chan5Raw = 0,
            Chan6Raw = 0,
            Chan7Raw = 0,
            Chan8Raw = 0,
            Chan9Raw = 0,
            Chan10Raw = 0,
            Chan11Raw = 0,
            Chan12Raw = 0,
            Chan13Raw = 0,
            Chan14Raw = 0,
            Chan15Raw = 0,
            Chan16Raw = 0,
            Chan17Raw = 0,
            Chan18Raw = 0,
        }
    };

    // send packet with your message
    connection.Send(packet, CancellationToken.None);
}`

If you still have questions on the matter i will be happy to help!

Thank you very much, it works great!

Happy to help!)


Add coalesce function

Adds coalesce function to GREL as specified in #1496 .

should we also support purity of our GREL null string ?
coalesce(null)  ->  <blank cell>

but then that might be more of an expansion of string handling for GREL, and I think David avoided that previously, but this seems logical if not useful ... since the purpose of this function was to provide an easy GREL way to replace nulls with blanks ? Thoughts ?

Discussion on #1496 highlighted that coalesce should have at least 2 arguments - I will update this PR to make the function require at least 2 arguments

Now updated as per #1496 discussion


The transition cargo-vcpkg build

@mcgoo had started transitioning cargo-vcpkg sourtces out of this repo, and into mcgoo/cargo-vcpkg, so that the underlying rustc version dependency can be decoupled. This is because vcpkg would like to remain compatible with as far back a version of Rust as possible, yet cargo-vcpkg wants to take on newer dependencies so that it can look at newer cargo metadata.
Completing this transition has become desirable considering the Fedora issues filed today, which motivate re-organizing this repo a bit. #33 and #35 both occur because the vcpkg crate is not published with these files, and moving vcpkg sources to the top-level should easily fix that problem. This seems like a natural cleanup next step after cargo-vcpkg gets moved out to the new repo.
If no-one complains, I'll take a stab at the above in the next day or so.

cargo-vcpkg published from it's own repo as 0.1.6.  vcpkg-rs was refactored a bit and published for the first time without cargo-vcpkg in the repo as 0.2.14.


i18n(es): update env vars

What kind of changes does this PR include?

New or updated content
Translated content

Description

Update environment-variables.md in Spanish #1178

Good to merge 🎉

Amazing work, thank you @kevinzunigacuellar, @agustinmulet :purple_heart:


fix(dgraph): refactor, simplify, fix tests

Continues on #206.
@arnaudDerbey,@lveillard, @bmartel please have a look, feel free to comment!
Firstly, I removed unnecessary fields. createdAt, updatedAt isn't necessary as I mentioned earlier https://github.com/nextauthjs/adapters/pull/206#pullrequestreview-811935525
VerificationRequest is a remainder of the old database schemas, and should be called VerificationToken now. The adapter is merely a broker between the core and the database, it does not perform any other requests (it was the case before, that the adapter sent the email as well)
I removed the queries and mutations files. They are completely unnecessary. Most adapters fit into a single file, even with their verbose query language. I think it is much easier to understand what the adapter does, than jumping between files to get the context. Feel free to disagree on this one.
I expanded on the Fragments. In general, we should not limit any of the models, so all 4 models should be extendable.
Removed the class for the dgraph client. It really can be just an object of the configuration for the client, similar to the TypeORM Adapter.
The actual client should not care about the fragments either, it is just the client that makes the requests as expected. fragments config moved into the adapter, check its new signature.
One less import, and hopefully easier to understand.
The tests were unfortunately giving false positives. The tests used the adapter methods to test against, while that's exactly what we are trying to test. They should be raw queries to the database. I could not find some of these in the queries file I removed, so I started this PR by removing the false tests and I will add them back later on.
Furthermore, we should not query against a database over the network. It is slow, and unreliable. I also found a secret in the test file, this should be invalidated immediately! :warning:
We need a way to run against a database locally for the tests to be more reliable.
Did some general cleanup as well, removed self-explanatory comments, console.logs, etc.
All of this will have to be updated in the docs as well. https://github.com/nextauthjs/docs/pull/120 is not merged yet, so feel free to update that.

User and Session tests should be fixed, working on the Account one...
I really don't like when backends take and transform data without a word:

We send in a number, and Dgraph just decides to save it as a Date anyway... I will now have to find a way to prevent this. :confused:

Until we find a way to run tests locally, how do I fix the schema @arnaudDerbey,@lveillard, @bmartel?
Getting these type of errors:
 Cannot query field "addVerificationToken" on type "Mutation". Did you mean "addVerificationRequest", "updateVerificationRequest", or "deleteVerificationRequest"?
    Unknown type "AddVerificationTokenInput"

I'll see if we can use this https://hub.docker.com/r/dgraph/dgraph to create a local server to test against, similar to the other adapters

So this https://github.com/nextauthjs/adapters/pull/317#issuecomment-975947064 happened because the schema defined expires_at as DateTime, which is wrong. It is supposed to be a number, so I fixed it in the schema

Fixed all the tests, and using Docker, I created a local instance to run the tests against. I think it is ready for review.

Documentation should be updated accordingly

Awesome work @balazsorban44 !!

I feel confident, but feel free to comment on it if you think I made a mistake or something unusual for the dgraph world.

@balazsorban44 regarding your question about getUserByEmail that return an array. It's a mistake I've made because my knowledge was limited.
The User type inside the schema  should define the email field as an id. (with the @id directive) This would define the uniqueness of that field and allow us to queryUser by email without filtering like we do today and get a unique user.
I think there are more fields that should be redefined with the @id directive.
I think we shouldn't push the PR before we improve the schema.

@bmartel could you update the corresponding docs PR once you are satisfied with how these changes look?
@balazsorban44 Things look really good, I have a couple questions I posed about the Dgraph cloud usage, and security. Beyond that I think this is good to go. Upon getting some clarity on those two questions I posed, I will be updating the docs to reflect everything here.

I think I'll refactor this code:
https://github.com/nextauthjs/adapters/blob/4c9b4376189e4aa60869537b10208506ab166d4f/packages/dgraph/src/client.ts#L4-L10
From my understanding, the authHeader option is unnecessary, as it can be Authorization https://dgraph.io/docs/cloud/cloud-api/overview/#understanding-headers-used-across-the-apis
Then if you set the jwtSecret, then we append that header to the requests.

I had some problems working out how to use RS256 locally. I will try to get it working, as it seems to be a more secure alternative than HS256
https://community.auth0.com/t/rs256-vs-hs256-jwt-signing-algorithms/58609

I had some problems working out how to use RS256 locally. I will try to get it working, as it seems to be a more secure alternative than HS256
https://community.auth0.com/t/rs256-vs-hs256-jwt-signing-algorithms/58609

Definitely is a better default for sure. What end of things were causing issues when switching to RS256?

just setting it up locally. I'll have to try later, but feel free to check out the branch and try yourself, it's appreciated!

just setting it up locally. I'll have to try later, but feel free to check out the branch and try yourself, it's appreciated!

I have a PR against this one that outlines the changes required, I used the basis tests to verify this. #320

@bmartel thank you so much, it helped a lot! I know refactored the tests to only run with RSA256. I don't think we want to advocate for anything else anyway, so it should be fine.


Ray Casting for Primitive Shapes

Objective
Add ray casting support for Bevy's primitive 2D and 3D shapes.
The scope here is to support the following:

Test if a local ray intersects a given shape.
Compute the distance to the closest point of intersection along a local ray.
Compute the distance and normal at the point of intersection.
World-space versions of the above, taking an isometry to transform the shape.

These should be supported for all of Bevy's primitive shapes, except where unreasonable, such as for 3D lines, which are infinitely thin.
The following are not in scope here:

Cast a ray into the world to query all shapes for intersections.
Speed up ray queries for a set of shapes using an acceleration structure such as a Bounding Volume Hierarchy (BVH).
Get the feature ID of the hit facet (vertex, edge, or face). This could be added later for some polyhedral shapes if desired.

The goal is purely to provide the core tools and implementations for performing efficient ray casts on individual shapes. Abstractions can be built on top by users and third party crates, and eventually Bevy itself once it has first-party colliders and physics.
Solution
Add PrimitiveRayCast2d and PrimitiveRayCast3d traits with the following methods:
impl PrimitiveRayCast2d {
    fn intersects_local_ray(&self, ray: Ray2d) -> bool;
    fn intersects_ray(&self, iso: Isometry2d, ray: Ray2d) -> bool;
    fn local_ray_distance(&self, ray: Ray2d, max_distance: f32, solid: bool) -> Option<f32>;
    fn ray_distance(&self, iso: Isometry2d, ray: Ray2d, max_distance: f32, solid: bool) -> Option<f32>;
    fn local_ray_cast(&self, ray: Ray2d, max_distance: f32, solid: bool) -> Option<RayHit2d>;
    fn ray_cast(&self, iso: Isometry2d, ray: Ray2d, max_distance: f32, solid: bool) -> Option<RayHit2d>;
}
// ...and similarly for `PrimitiveRayCast3d`

where RayHit2d looks like this:
// Note: We could store the point of intersection too,
//       but it is easily computed as `ray.get_point(distance)`.
pub struct RayHit2d {
    pub distance: f32,
    pub normal: Dir2,
}
// ...and similarly for `RayHit3d`

Usage then looks like this:
let ray = Ray3d::new(Vec3::new(-1.0, 0.0, 0.0), Vec3::X);
let sphere = Sphere::new(1.0);
let iso = Isometry3d::from_translation(Vec3::new(1.0, 0.0, 0.0));

let max_distance = f32::MAX;
let solid = true;

if let Some(hit) = sphere.ray_cast(iso, ray, max_distance, solid) {
    assert_eq!(hit.distance, 1.0);
    assert_eq!(hit.normal, Dir3::NEG_X);
    assert_eq!(ray.get_point(hit.distance), Vec3::ZERO);
}

Names are open for bikeshedding. I chose PrimitiveRayCastNd because we already have RayCastNd structs, and these traits are intended to return only the most minimal data required to represent an intersection and its geometry efficiently. Other APIs could be built on top to return more data if desired.
Let's go over a few relevant features and implementation details.
Solid and Hollow Shapes
The ray casting methods (excluding intersection tests) have a solid boolean argument. It controls how rays cast from the interior of a shape behave. If true, the ray cast will terminate with a distance of zero as soon as the ray origin is detected to be inside of the shape. Otherwise, the ray will travel until it hits the boundary.
This feature has somewhat unclear utility. One valid use case is determining how far a shape extends in some given direction, which could be used to figure out e.g. how far away an object picked up by the player should be held. Or maybe you have a circular room, and want to cast rays against its walls from the inside without discretizing the circle to be formed out of multiple separate shapes.
Some hollow shapes can actually be handled in most cases without this built-in support, by simply performing another ray cast in the opposite direction from outside the shape if the ray origin is detected to be inside of the shape. However, for shapes like annuli and tori, the amount by which to offset the ray origin isn't obvious, and doing two ray casts is also more expensive than just having built-in support.
For prior art, Parry has the same boolean argument, and Box2D also supports hollow shapes, although in Box2D's case these are just handled by using chain (i.e. polyline) shapes.
Local and World Space Ray Casts
Each method has a local and world space variant. Practically all ray casts should be performed in local space, since it makes the algorithms significantly more straightforward.
The world-space versions are primarily a user-facing abstraction, which actually just transforms the ray into local space and then transform the results back to world space.
Discussion
Do we want this yet?
Bevy doesn't have built-in physics or collision detection yet. Should we have something like ray casting?
I believe having ray casting support for Bevy's primitive shapes could be amazing for users, even without first-party colliders. So far, the answer to "how do I do ray casts?" has basically been "try to use Parry, or just use Avian or bevy_rapier for nicer ergonomics and to avoid having to deal with Nalgebra". While this PR doesn't add APIs or tools to cast rays into the world like physics engines do, it does provide a foundation on top of which both users and crates could build their own lightweight APIs. We could even extend this to perform ray casts on meshes in the future (and as part of a mesh picking backend).
I don't think we should necessarily build an entire collision detection and geometry library in the background and upstream it all at once, but rather build it out incrementally in logical chunks. I think ray casting is a perfect candidate for this. This could be released in a third party crate too, but I think it's something that could have immediate upstream value to users.
Does it make sense to have this in bevy_math?
We don't have a better place yet. I expect us to add more similar queries (like point queries) over time. I think we should add this in bevy_math for now, and split things out as we reach critical mass for geometry functionality.
Naming
One potentially contentious part is the naming. Should we go for RayCast or Raycast?
If we do a little statistical research on popular physics and game engines for prior art (only ones I found clearly):

Box2D uses RayCast
Parry (and Avian and Rapier) uses RayCast
Jolt uses RayCast
Bepu uses RayCast
Godot uses RayCast
Unity uses Raycast
Bullet uses Raycast
PhysX uses Raycast

There is no clear consensus, but in my experience, I've seen RayCast a lot more. That may be because I've seen Box2D, Rapier, and Godot more however. Many other people may be more familiar with Raycast because of Unity and its popularity.
Personally, I prefer RayCast especially in the context of other types of casts existing. In my opinion, shape casts look more strange when combined as one word, Shapecast, as opposed to ShapeCast. Bevy will eventually have shape casts as well, and I think we should be consistent in naming there.
It is also worth noting that the usage of "ray cast" vs. "raycast" vs. "ray-cast" is wildly inconsistent in many engines and literature, even if code uses one form consistently. Godot's docs have all three forms on one page, and so does Wikipedia. I would personally prefer if we followed Box2D's example here: code uses RayCast and ShapeCast, and documentation also uses this naming consistently as "ray cast" and "shape cast".
Split into smaller PRs
This is a very large PR with quite a lot of math-heavy code. I could split this up into several smaller PRs if it would help reviewers.
Maybe something like:

Add core traits
Implement for Circle, Sphere, Ellipse, and Annulus
Implement for Arc2d, CircularSector, and CircularSegment
Implement for Rectangle and Cuboid
Implement for Capsule2d and Capsule3d
Implement for Line2d and Segment2d
Implement for Triangle2d, Rhombus, polygons, and polylines
Implement for Triangle3d
Implement for Tetrahedron
Implement for Cone, ConicalFrustum, and Cylinder
Implement for Torus

That would be 11 PRs 😬
Or, I can just have this one mega PR. I'm fine with whatever reviewers would prefer.
Testing
Every primitive shape that supports ray casting has basic tests for various different cases like outside hits, inside hits, and missed hits. The shared world-space versions of the methods also have basic tests.
There are also new ray_cast_2d and ray_cast_3d examples to showcase ray casting for the various primitive shapes. These function as good hands-on tests. You can see videos of these in the "Showcase" section.
Performance
Below are mean times for 100,000 ray casts, with randomized shape definitions (within specified ranges) and rays. I am using the Parry collision detection library for comparison, as it is currently the most popular and feature-complete option in the Rust ecosystem. Pay attention to whether units are microseconds or milliseconds!
Shapes marked as "-"  don't have a built-in ray casting implementation in Parry, and would require using e.g. convex hulls or compound shapes.
2D:

Shape
Our implementation
Parry

Circle
535.88 μs
585.60 μs

Circular arc
708.05 μs
-

Circular sector
3.5025 ms
-

Circular segment
3.3423 ms
-

Ellipse
487.78 μs
-

Annulus
631.67 μs
-

Capsule
1.8968 ms
10.729 ms

Rectangle
566.97 μs
1.7967 ms

Rhombus
2.8950 ms
-

Line
605.50 μs
-

Line segment
721.86 μs
1.7208 ms

Regular polygon
6.1786 ms
-

Triangle
3.4512 ms
4.6280 ms

3D:

Shape
Our implementation
Parry

Sphere
521.23 μs
534.39 μs

Cuboid
496.98 μs
1.1455 ms

Cylinder
1.5770 ms
6.8190 ms

Cone
1.9658 ms
6.4109 ms

Conical frustum
2.1117 ms
-

Capsule
721.44 μs
9.8425 ms

Triangle
1.0066 ms
1.7841 ms

Tetrahedron
3.3739 ms
-

Torus
506.93 μs
-

As you can see, all of our implementations outperform those found in Parry, and we also have many more supported shapes. Of course Parry also has its own shapes that we don't have yet, like triangle meshes, heightfields, and half-spaces.
Why so much faster? For shapes like capsules, cylinders, and cones, Parry actually doesn't have custom analytic solutions. Instead, it uses a form of GJK-based ray casting. This works for arbitrary shapes with support maps, but is less efficient and robust than the analytic solutions I implemented. Sometimes Parry's approach even completely misses ray hits for shapes like capsules because of the algorithm failing to converge with the way it's configured in Parry.
 It could also just be that Glam is simply faster in some cases here.

Showcase
Below are the new ray_cast_2d and ray_cast_3d examples. Keep in mind that this does not involve mesh picking of any kind: each object here stores a component that stores the underlying primitive shape, and then a system performs ray casts.
https://github.com/user-attachments/assets/c871a501-54a5-4e5e-93b3-7c868a5267a6
https://github.com/user-attachments/assets/6a667c25-e40a-4a55-9e15-4bdd041f15c1
Acknowledgments
Thank you @Olle-Lukowski for creating initial versions of a lot of the 2D ray casting implementations in bevy_contrib_raycast! They worked wonderfully as a base to build on top of.

Related: #13618

This is my favorite PR for 0.16 :) thanks for implementing this, this is great!


Expose historical account modification fees via RPC

Is your feature request related to a problem? Please describe.
i am attempting to calculate historical fees spent while managing my pool account. For each action (init, deposit, withdraw, renew, close), I can see an entry in the response of lnrpc.Lightning.GetTransactions with a label prefixed with "poold --". Unfortunately, the total_fees field of the txns are set to 0 for all except init.
When I query a block explorer using one of the txids, I can see the fee that was paid. It looks like the fees are just being deducted from the account utxo instead of coming from the LND wallet, which makes sense. But this makes it challenging to capture the fees.
Describe the solution you'd like
I'd like to be able to obtain the historical fees via RPC for all account modifications. It would be great if there was just a single RPC that returned the timestamped txid w/ fee for all account modifications on my node, similar to how poolrpc.Trader.Leases returns the premium/execution/chain fees for each channel opened in a batch.
Describe alternatives you've considered
It would be possible to use a third-party web API or bitcoin node to query the transactions by id in order to obtain the fee from the chain. Ideally, it would be better to have this come directly from poold which already manages the account UTXOs and transactions.
Additional context
I spoke to @Roasbeef  on chat and he threw out some ideas:

the reason the wallet shows zero fees here is that: it doesn't know about those inputs that don't belong to it, so it can't compute the total fee -- we can fix this at the wallet level by doing another query, but only really for a full node backend since it has that index
ideally we start to explicitly store this fee in the pool client db
I think we can expose this info tho, given we store all batches we've ever been a part of, then can use the label we use for account modifications to get all our account txns
ideally we do a sort of migration to scan everything, compute+store, then we can just return the output later

Here's an example account modification transaction where the total_fees field is set to zero:
    {
      "tx_hash": "7a631596c39e4a4265d15cc148f6129a8a5458ee6f275a9d1b8ce886d125f808",
      "amount": "-102210",
      "num_confirmations": 0,
      "block_hash": "",
      "block_height": 0,
      "time_stamp": "1665584311",
      "total_fees": "0",
      "dest_addresses": [
        "bcrt1p2agvu57xt3p6wut5xql59qpazhx2j02dswlprm2tv0ts2xp4xpvsed8wg8",
        "bcrt1q6az29wpyc6mnfhykzxhq3lu4kt4wyc0266f7an"
      ],
      "output_details": [
        {
          "output_type": "SCRIPT_TYPE_PUBKEY_HASH",
          "address": "bcrt1p2agvu57xt3p6wut5xql59qpazhx2j02dswlprm2tv0ts2xp4xpvsed8wg8",
          "pk_script": "51205750ce53c65c43a77174303f42803d15cca93d4d83be11ed4b63d70518353059",
          "output_index": "0",
          "amount": "200000",
          "is_our_address": false
        },
        {
          "output_type": "SCRIPT_TYPE_WITNESS_V0_PUBKEY_HASH",
          "address": "bcrt1q6az29wpyc6mnfhykzxhq3lu4kt4wyc0266f7an",
          "pk_script": "0014d744a2b824c6b734dc9611ae08ff95b2eae261ea",
          "output_index": "1",
          "amount": "469780688",
          "is_our_address": true
        }
      ],
      "raw_tx_hex": "020000000001024c6496d8fc89e1fd0a4ec060d037d0555c2935dd80a81d753cc6fef27da5e7530000000000000000004c6496d8fc89e1fd0a4ec060d037d0555c2935dd80a81d753cc6fef27da5e75301000000000000000002400d0300000000002251205750ce53c65c43a77174303f42803d15cca93d4d83be11ed4b63d70518353059d048001c00000000160014d744a2b824c6b734dc9611ae08ff95b2eae261ea0140b2f1f73f47b63ca963ace29d9caf704845d744dcd945addc582eb163e68d6de63203eeff6791536d1dca8f8d1d501f141316f89a54d54c1eac496c8a3900fe79024730440220201fe6e3a19864ad46b407c4eceffafb1cbbbc7d2d9d9b8895988ebc046ac1c6022077dab219f8acc7b7e7fba2a17e7a0f30c455f14ee94b90d9d3c894301d31cad30121030717b8f30d889d2d09f35a124df9f01f495172b7e57e23d88f51483f62cdeb2500000000",
      "label": " poold -- AccountModification(acct_key=0226333ad7d53a862ea6f6daae81997b62e4075c5d2b2db6b2676f32c827c736f2, expiry=false, deposit=true, is_close=false)",
      "previous_outpoints": [
        {
          "outpoint": "53e7a57df2fec63c751da880dd35295c55d037d060c04e0afde189fcd896644c:0",
          "is_our_output": false
        },
        {
          "outpoint": "53e7a57df2fec63c751da880dd35295c55d037d060c04e0afde189fcd896644c:1",
          "is_our_output": true
        }
      ]
    }

I took a quick look at how we store/publish the transactions in Pool. Unfortunately I think we can only solve this in a very hacky way without first starting to store each account modification.

calculate the fee by looking up the previous onchain outpoint values.

The thing is, we cannot easily look up any transaction on chain, as that requires the transaction index being enabled in bitcoind or btcd (and does not work at all with Neutrino). We can only look up transactions the wallet thinks belong to it (account creation, deposit, withdrawal). If the account is involved in a batch, lnd doesn't think the batch transaction itself belongs to the wallet (as there are no non-script outputs in there). BUT we have a list of all batches we were involved in, including the full batch TX.
So I think we can attempt to calculate the fee like this:

Look at each account modification TX in the wallet
For each modification TX, look up its previous outpoints, first try wallet transactions, if that fails, try batches. If TX not found, we cannot calculate the fee.

In addition to doing it that way, I think we should also start storing an account diff for each modification to make this easier in the future.

Thank you for your input @guggero !
I've started work on this bit:

For each modification TX, look up its previous outpoints, first try wallet transactions

And then I'll add on to that the batches lookup after sharing my work.

In addition to doing it that way, I think we should also start storing an account diff for each modification to make this easier in the future.

That ^ makes sense.

Where batches are concerned, I need to look at the output of this command: https://github.com/lightninglabs/pool/blob/da88f020c51e57a56051b39e82c82f1aac60c2fa/cmd/pool/auction.go#L221

The output of the pool client auction leases command looks like this:
user@lightninglabs:~/pool$ pool_alice auction leases
{
        "leases": [
                {
                        "channel_point": "f5d38a1df450eb419fafe803b4b3c2f43b29cada46fd4beee0754ec493f249f5:0",
                        "channel_amt_sat": 100000,
                        "channel_duration_blocks": 2016,
                        "channel_lease_expiry": 0,
                        "channel_node_key": "03c9d4c7d4f67f76e41379d2da893505827148b6fa5b483149872fe0a2bc4117fc",
                        "channel_node_tier": "TIER_0",
                        "premium_sat": 499,
                        "clearing_rate_price": 2480,
                        "order_fixed_rate": 496,
                        "execution_fee_sat": 101,
                        "chain_fee_sat": 8162,
                        "order_nonce": "817eec11fb4d0887bfe9c435fc0f75e93d9d3db89c512559e82dabb836a9ef0d",
                        "matched_order_nonce": "1dceec3c0e3b0ea7b4ca1e456bb0b851bfe3e413b392605a34e2a2399fcdd8ba",
                        "purchased": false,
                        "self_chan_balance": 0,
                        "sidecar_channel": false
                }
        ],
        "total_amt_earned_sat": 499,
        "total_amt_paid_sat": 8263
}

I notice that there are two fee fields chain_fee_sat and execution_fee_sat. Are both of these account modification fees?

No, the execution fees are what the market participant pays to the auctioneer (service fees). So only the chain fees should be counted IMO.

Below you'll find an example lnd wallet transaction for a pool account withdraw action. In this example I attempted to withdraw 50000 sats. The preceding balance was 400k sats.
Every output in the transaction is flagged as "is_our_address": false. I think I need to calculate the sum of all "is_our_address": false outputs in the current and preceding transaction before I can calculate the fee.
{
            "tx_hash": "d558756ccb7c79f5694bf8018c95273865ed806accaad5e33b40a26ee8d6203a",
            "amount": "0",
            "num_confirmations": 0,
            "block_hash": "",
            "block_height": 0,
            "time_stamp": "1666275668",
            "total_fees": "0",
            "dest_addresses": [
                "bcrt1p2agvu57xt3p6wut5xql59qpazhx2j02dswlprm2tv0ts2xp4xpvsed8wg8",
                "bcrt1ptkstdfj04m89sl8u7a95pwffhkzqm0x8t4cnfqlxl3ygud0rzdvsan9nqs"
            ],
            "output_details": [
                {
                    "output_type": "SCRIPT_TYPE_PUBKEY_HASH",
                    "address": "bcrt1p2agvu57xt3p6wut5xql59qpazhx2j02dswlprm2tv0ts2xp4xpvsed8wg8",
                    "pk_script": "51205750ce53c65c43a77174303f42803d15cca93d4d83be11ed4b63d70518353059",
                    "output_index": "0",
                    "amount": "50000",
                    "is_our_address": false
                },
                {
                    "output_type": "SCRIPT_TYPE_PUBKEY_HASH",
                    "address": "bcrt1ptkstdfj04m89sl8u7a95pwffhkzqm0x8t4cnfqlxl3ygud0rzdvsan9nqs",
                    "pk_script": "51205da0b6a64faece587cfcf74b40b929bd840dbcc75d713483e6fc488e35e31359",
                    "output_index": "1",
                    "amount": "342505",
                    "is_our_address": false
                }
            ],
            "raw_tx_hex": "02000000000101f549f293c44e75e0ee4bfd46daca293bf4c2b3b403e8af9f41eb50f41d8ad3f50200000000000000000250c30000000000002251205750ce53c65c43a77174303f42803d15cca93d4d83be11ed4b63d70518353059e9390500000000002251205da0b6a64faece587cfcf74b40b929bd840dbcc75d713483e6fc488e35e3135901401fde2b3f75bb54befb8440e33d0fa87ac66080fb94d3ce141bff693f9db681a576f270dbb3100fe1bd3ac2169b7abc3fcb0581a0531ba929f6d384dd67b851cf00000000",
            "label": " poold -- AccountModification(acct_key=024d5df438109bd3133ee388dc4f302b1035d5dfd4e9cafcf9cdc983b651e1b515, expiry=false, deposit=false, is_close=false)",
            "previous_outpoints": [
                {
                    "outpoint": "f5d38a1df450eb419fafe803b4b3c2f43b29cada46fd4beee0754ec493f249f5:2",
                    "is_our_output": false
                }
            ]
        },

Can we keep track of the output we are tracking in order to observe the fee? If we can't track this, then the delta wouldn't be able to be calculate.
the transaction should have a label
is there a label for renewal?
checking the logs to see if everything is properly labeled

I'm still stuck with a strange withdraw transaction. I would expect at least one is_our_address to be true. And I thought at least one output_type should be taproot.
Command:
pool_alice accounts withdraw --trader_key $TRADER_KEY --amt 50000 --sat_per_vbyte 5 --addr bcrt1p2agvu57xt3p6wut5xql59qpazhx2j02dswlprm2tv0ts2xp4xpvsed8wg8

addr is set to a random address.
{
            "tx_hash": "755b00c399d3bf8eec0fe68156af9b90d443436bbb9f282078aeae855a2a0205",
            "amount": "0",
            "num_confirmations": 0,
            "block_hash": "",
            "block_height": 0,
            "time_stamp": "1666710175",
            "total_fees": "0",
            "dest_addresses": [
                "bcrt1p2agvu57xt3p6wut5xql59qpazhx2j02dswlprm2tv0ts2xp4xpvsed8wg8",
                "bcrt1pr9tnxkd5txungm4tl4vjcl0mad3mu8cskyw96axnzla4j0qrwevsq5t4sg"
            ],
            "output_details": [
                {
                    "output_type": "SCRIPT_TYPE_PUBKEY_HASH",
                    "address": "bcrt1p2agvu57xt3p6wut5xql59qpazhx2j02dswlprm2tv0ts2xp4xpvsed8wg8",
                    "pk_script": "51205750ce53c65c43a77174303f42803d15cca93d4d83be11ed4b63d70518353059",
                    "output_index": "0",
                    "amount": "50000",
                    "is_our_address": false
                },
                {
                    "output_type": "SCRIPT_TYPE_PUBKEY_HASH",
                    "address": "bcrt1pr9tnxkd5txungm4tl4vjcl0mad3mu8cskyw96axnzla4j0qrwevsq5t4sg",
                    "pk_script": "512019573359b459b9346eabfd592c7dfbeb63be1f10b11c5d74d317fb593c037659",
                    "output_index": "1",
                    "amount": "142300",
                    "is_our_address": false
                }
            ],
            "raw_tx_hex": "0200000000010158b13fd365bee3ce6673efaae79bafdd59f7dba31df42b1353503c44a1b672ec0000000000000000000250c30000000000002251205750ce53c65c43a77174303f42803d15cca93d4d83be11ed4b63d70518353059dc2b02000000000022512019573359b459b9346eabfd592c7dfbeb63be1f10b11c5d74d317fb593c037659014047a40ba6132b9ab6da159aa7fd7bb814ee9f58751d5e50db07d92f8b3a7929f853c49f8488d0518a8404bd62ec164b7f724e554fa9c030839e1d8a4e7570da0100000000",
            "label": " poold -- AccountModification(acct_key=038709293544c27d37c632f15bc5a2a2d0ab6d0fc46e6fbc28ec899015d26c3f9c, expiry=false, deposit=false, is_close=false)",
            "previous_outpoints": [
                {
                    "outpoint": "ec72b6a1443c5053132bf41da3dbf759ddaf9be7aaef7366cee3be65d33fb158:0",
                    "is_our_output": false
                }
            ]
        },

lnd/lncli versions seems to be correct:
user@lightninglabs:~/pool$ reg_alice version
{
    "lncli": {
        "commit": "v0.15.3-beta",
        "commit_hash": "b4e7131bdb47531ad2f00ce345ddcdb58935bba5",
        "version": "0.15.3-beta",
        "app_major": 0,
        "app_minor": 15,
        "app_patch": 3,
        "app_pre_release": "beta",
        "build_tags": [
            "autopilotrpc",
            "signrpc",
            "walletrpc",
            "chainrpc",
            "invoicesrpc",
            "watchtowerrpc",
            "neutrinorpc",
            "monitoring",
            "peersrpc",
            "kvdb_postgres",
            "kvdb_etcd"
        ],
        "go_version": "go1.18.2"
    },
    "lnd": {
        "commit": "v0.15.3-beta",
        "commit_hash": "b4e7131bdb47531ad2f00ce345ddcdb58935bba5",
        "version": "0.15.3-beta",
        "app_major": 0,
        "app_minor": 15,
        "app_patch": 3,
        "app_pre_release": "beta",
        "build_tags": [
            "autopilotrpc",
            "signrpc",
            "walletrpc",
            "chainrpc",
            "invoicesrpc",
            "watchtowerrpc",
            "neutrinorpc",
            "monitoring",
            "peersrpc",
            "kvdb_postgres",
            "kvdb_etcd"
        ],
        "go_version": "go1.18.2"
    }
}

And I'm using the latest commit (+ my changes) for pool and subasta.
Oli answered with the following via chat:

it's kind of expected that the wallet doesn't recognize the withdrawn account. and it also doesn't recognize the remaining account balance because the account output is a script output unknown to the wallet
so basically is_our_address is always false for a Pool account output.

it's a script created outside of lnd (only Pool knows how to spend it)
so I guess we can only recognize withdrawals if they actually go back to the wallet, then is_our_address will be true for the withdrawn amount at least

I think this basically means that if a user withdraws to an address that lnd does not recognize then all fees for subsequent account actions will be incalculable. Because if at any point we end up with both outputs where is_our_address is false, then we won't know the account value for the next action.

i was thinking about this issue and had an idea but feels like a completely different approach. Instead of retroactively trying to parse account actions from the transactions, what if we just added a new history field to the accounts which is an array of account modifications going forward. It could store the action (create, withdraw, deposit, renew, close), txid, timestamp, chain_fee, and balance. Obviously this wouldn't provide historical data, but I've already found a workaround for that for the time being. Just figured I'd throw this out there to see if it help at all with implementing a better solution.

Added RPC to solve this issue: https://github.com/lightninglabs/pool/pull/395


Buttons should be able to define formmethod and formaction

Describe Problem
Currently, buttons require specific data-method and data-url 's. @seanpdoyle pointed out that there is an opportunity here to build upon browser fundamentals. Theres no reason a <button> cant submit an ajax request if it provides a formmethod and formaction.
Mrujs uses actual fetch under the hood, so it does not need to worry about the CSRF token generation Sean referred to. More info can be found here:
https://github.com/hotwired/turbo-rails/pull/257#issuecomment-942493184

(This is specific to buttons not within a  tag)
I think the behavior is fine as is. Buttons should have the proper associated forms anyways.


Fix the issue where long client name was getting into the note column on the time entry report table

Notion card
https://www.notion.so/saeloun/Client-name-is-getting-into-the-note-column-on-the-time-entry-report-59fe57e3fdc74e43a896355b17f683e5
Summary

Fixed the issue where a long client name was getting into the note column on the time entry report table

Preview

Type of change
Please delete options that are not relevant.

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Refactor (non-breaking and retains same functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to
not work as expected)
[ ] This change requires a documentation update

How Has This Been Tested?

Checklist:

[x] I have manually tested all workflows
[x] I have performed a self-review of my own code
[x] I have annotated changes in the PR that are relevant to the reviewer
[ ] I have added automated tests for my code

@sanjibroy360 can you please confirm whether we have implemented the same in mobile view? also can you please check this with responsive screens? ranging from 1028px to max.

@sanjibroy360 Please check the why the build is failing on this PR .


Find and make test data available

#10 indicates that there was some test data available for download. I'm not certain which data or where it was on the google code repo. I'll dig it out when I get a chance.

There's now some basic test data in the repo; this is done.


test: merge blocks when prepare

Signed-off-by: Wish<EMAIL_ADDRESS>What problem does this PR solve?
Issue Number: ref #5237
Problem Summary:
What is changed and how it works?
Always produce a single sorted block, instead of a list of blocks, when we need to fill rows in tests. In this way, we can produce a correct DMFile from these rows.
Check List
Tests

[x] Unit test
[ ] Integration test
[ ] Manual test (add detailed scripts or steps below)
[ ] No code

Side effects

[ ] Performance regression: Consumes more CPU
[ ] Performance regression: Consumes more Memory
[ ] Breaking backward compatibility

Documentation

[ ] Affects user behaviors
[ ] Contains syntax changes
[ ] Contains variable changes
[ ] Contains experimental features
[ ] Changes MySQL compatibility

Release note

None

/run-all-tests

/merge


Few delete user data tasks steps

TODO integration tests I believe.

TODO integration tests I believe.

Yes.
Will do tomorrow.

ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:3.1.2:check (check-style) on project james-server-guice-cassandra: You have 1 Checkstyle violation. -> [Help 1]


chore: Don't publish the docs module

I merged the update for mdoc, which uses Java 11, but that is needed to publish the website. It seems the normal release tries to publish docs and that breaks because of the mdoc JVM requirement.
This should fix the release.

Let's check if that helps

Ok, looks that we're good


No \tmp dir on windows, seeds.go can't download products and slideshow images

open file ("http://qor3.s3.amazonaws.com/01-tee-c.20160316044516567824937.png") failure, got err open \tmp\01-tee-c.20160316044516567824937.png: The system cannot find the path specified.
open file ("banner") failure, got err open \tmp\google_banner.jpg: The system cannot find the path specified.
open file ("qor_logo") failure, got err open \tmp\qor_logo.png: The system cannot find the path specified.
open file ("banner") failure, got err open \tmp\slide1.jpg: The system cannot find the path specified.

if I change method openFileByURL in db\seeds\main.go to:
filepath.Join("", fileName)

it will pollute qor-example folder (from wich I've run go run db/seeds/main.go db/seeds/seeds.go), but put all of downloaded images inside public/system folder and example works fine
When I'am trying to use filepath.Join(os.TempDir(), fileName), products works just fine, but slideshow images doesn't, they even doesn't copied in folder public/system and url in html is:
/system/qor_widget_settings/TopBanner/image/C:%5cUsers%5cMIRONO~1%5cAppData%5cLocal%5cTemp%5cslide1.20170206133517827284700.jpg

I've managed to how to fix this issue on windows: problem with using path.Base in media_library package. And it's fixes with filepath.Base


feat: support for customized binary

Description

Message from the maintainers:
Love this enhancement proposal? Give it a 👍. We prioritise the proposals with the most 👍.

Can you give me more details about this issue?

When users need to install some bindings such as tensorrt or thridparty resource. We need a interface such as :
install.binary("/lib/xxxx.so", from="local path", type="library")


keep the style consistent

Make sure that:

[ ] You have read the contribution guidelines.
[ ] You submit test cases (unit or integration tests) that back your changes.
[ ] Your local test passed ./mvnw clean install -Dmaven.javadoc.skip=true.

Codecov Report

Merging #4279 (d559d5f) into master (b248e8d) will decrease coverage by 0.02%.
The diff coverage is 100.00%.

:exclamation: Current head d559d5f differs from pull request most recent head 4a17297. Consider uploading reports for the commit 4a17297 to get more accurate results

@@             Coverage Diff              @@
##             master    #4279      +/-   ##
============================================
- Coverage     68.99%   68.97%   -0.03%
- Complexity     7333     7338       +5
============================================
  Files           994      994
  Lines         28013    28013
  Branches       2483     2481       -2
============================================
- Hits          19327    19321       -6
- Misses         7207     7211       +4
- Partials       1479     1481       +2

Impacted Files
Coverage Δ

...henyu/loadbalancer/cache/UpstreamCacheManager.java
95.65% <100.00%> (ø)

...a/org/apache/shenyu/common/utils/VersionUtils.java
21.27% <0.00%> (-6.39%)
:arrow_down:

...rg/apache/shenyu/plugin/rewrite/RewritePlugin.java
66.66% <0.00%> (-5.56%)
:arrow_down:

...henyu/plugin/grpc/resolver/ShenyuNameResolver.java
55.31% <0.00%> (-5.32%)
:arrow_down:

...in/response/strategy/NettyClientMessageWriter.java
71.42% <0.00%> (-3.58%)
:arrow_down:

.../client/server/consul/ShenyuConsulConfigWatch.java
83.33% <0.00%> (-2.09%)
:arrow_down:

...yu/admin/service/impl/PluginHandleServiceImpl.java
74.07% <0.00%> (-1.86%)
:arrow_down:

...client/brpc/BrpcContextRefreshedEventListener.java
80.32% <0.00%> (-1.64%)
:arrow_down:

...he/shenyu/plugin/grpc/client/ShenyuGrpcClient.java
12.00% <0.00%> (+4.00%)
:arrow_up:

...ache/shenyu/plugin/grpc/cache/GrpcClientCache.java
100.00% <0.00%> (+31.25%)
:arrow_up:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


[Feature Request]: Bump API versions for DataCollectionEndpoint/Rule

Check for previous/existing GitHub issues

[X] I have checked for previous/existing GitHub issues

Issue Type?
I'm not sure
Module Name
avm/res/insights/data-collection-endpoint
(Optional) Module Version
Description
Can you please bump the API version for the insights modules datacollectionendpoint and datacollectionrule modules. These are currently using a preview API.  (latest version is 2022-06-01).

Hey @matebarabas, please note I ran a test by updating this issue's description and migrating it to AVM, yet the module owner was suprinsingly not set. Would you know if we have any documentation somewhere what the conditions are for the bot to pick it up, or do we need to reverse engineer? 😄

@krbar please take a look when you have the chance :) Also, if there are any new features coming with the API version(s), please add them.

Hey @matebarabas, please note I ran a test by updating this issue's description and migrating it to AVM, yet the module owner was suprinsingly not set. Would you know if we have any documentation somewhere what the conditions are for the bot to pick it up, or do we need to reverse engineer? 😄

@AlexanderSehr, the module owner's assignment is done by the solution @rahalan implemented.
@rahalan, can you please look into this? This issue was migrated from CARML, but from the BRM repo's perspective, this should be perceived as a newly created one. CC: @ChrisSidebotham

Hey @krbar please take a look when you have a moment.


Client image docs

https://api3dao.atlassian.net/browse/AN-268

Ok then. I will just go ahead and merge this. That is something we can work out latter. I will make a GitHub issue for it and move it to JIRA if there is a decision one way or another.


remove occupancy, as it is not available at this level in the iRail api

Description:
Related issue (if applicable): References #20744
Checklist:

[x] The code change is tested and works locally.
[x] Local tests pass with tox. Your PR cannot be merged unless tests pass
[x] There is no commented out code in this PR.

If user exposed functionality or configuration variables are added/changed:

[x] Documentation added/updated in home-assistant.io

If the code communicates with devices, web services, or third-party tools:

[x] New dependencies have been added to the REQUIREMENTS variable (example).
[x] New dependencies are only imported inside functions that use them (example).
[x] New or updated dependencies have been added to requirements_all.txt by running script/gen_requirements_all.py.
[x] New files were added to .coveragerc.

If the code does not interact with devices:

[x] Tests have been added to verify that the new code works.

This solves https://github.com/home-assistant/home-assistant/issues/20744#issuecomment-470443329 , as the data is simply not present in the upstream API provider. (iRail)

Wow! Thanks! I was going to pick this up this weekend @nudded but I'm glad to see you did that already!
Seems like iRail has removed this in their API, it was def. available before.


testpoints/DFT/DFM

Let's just scope this to testpoints, which we still need for alpha

From #30 - need a testpt at the power rails, esp 3.3V since the 150mA LDO on the Nucleo may not provide enough oomph for everything.

Ha, and the Pi's is even weaker.  I'll add the TP and we'll have a beefier supply on beta

TPs on SPI bus to microSD card? Your call.

I got a Nucleo board today and missed the obvious - they have double sided male headers on every pin. So test points on any of the CNx pins are pointless - we have them already.


Update README.md

footer shoulbe changed

commit is not correct explained: "Footer should be changed"


WS - SyntaxError: Unexpected end of JSON input

First reported here:
https://community.coinbase.com/t/unexpected-end-of-json-input-error-with-gdax-library-for-node-js/12382
undefined:1
{"type":"done","order_type":"limit","side":"sell","sequence":1411617737,"order_id":"7741a72e-0635-4fd9-a8ca-d9d3afd65fa6","reason":"canceled","product_id":"BTC-USD","time":"2016-08-23T00:24:17.125397Z","price":"585.26","remaining_size":"0.97"

SyntaxError: Unexpected end of JSON input
    at Object.parse (native)
    at prototype.onMessage (myproject/node_modules/gdax/lib/clients/websocket.js:68:31)
    at emitTwo (events.js:106:13)
    at WebSocket.emit (events.js:191:7)
    at Receiver.ontext (myproject/node_modules/ws/lib/WebSocket.js:798:10)

This seems to be an issue with node 6.4. It does not seem to happen with node 4.4.

I had the same problem after updating from Node 6.2.2 to 6.3.0, which seemed to be resolved by updating ws to the latest version, 1.1.1

Duplicate of https://github.com/coinbase/gdax-node/issues/3

We had a temporary issue with our server side feed. This has been resolved.


[Lwjgl3 backend] Window crashes when resizing via window corner drag

Issue details
When resizing the window via mouse and drag on a corner (any corner, but not single edges) the application crashes in the natives layer.
Reproduction steps/code
Open the Lwjgl3TestStarter, grab a corner (CORNER, does not happen if only an edge is being resized) of the window and start resizing.
Tested on Windows 10 64bit
Video card: GTX 980ti
Nvidia drivers 375.70
Version of LibGDX and/or relevant dependencies
Snapshot from the current master (commit b68e50bb4ef06e679e86d5eb14fb751b59b0da91)
Stacktrace
None given, it crashes in the natives. Traced it back to the Lwjgl3Graphics class, in the resize callback handler:
private GLFWFramebufferSizeCallback resizeCallback = new GLFWFramebufferSizeCallback() {
		@Override
		public void invoke(long windowHandle, final int width, final int height) {
			updateFramebufferInfo();
			if (!window.isListenerInitialized()) {
				return;
			}
			window.makeCurrent();
			gl20.glViewport(0, 0, width, height);
			window.getListener().resize(getWidth(), getHeight());
			window.getListener().render();
			GLFW.glfwSwapBuffers(windowHandle); //<--- Commenting this buffer swap avoids the crash
		}
	};

Please select the affected platforms

[ ] Android
[ ] iOS (robovm)
[ ] iOS (MOE)
[ ] HTML/GWT
[x] Windows (Only tested on windows)
[ ] Linux
[ ] MacOS

This does not occur for me on Windows 10 or macOS Sierra. Are you working from the gradle snapshot or from source? The Lwjgl3 backend was updated recently with new natives to fetch, so if you're working from source you might need to update them (gradlew fetch or ant -f fetch.xml).

Yep, fresh ant and git pull! I wouldn't be surprised at all if it's a driver issue. I'm pretty sure it's not a libgdx bug, but I lack the knowledge to dig further and report it to either lwjgl or glfw. Hope someone more knowledgeable than me ca reproduce it.
Will test on linux + intel igpu later today.

Tested on linux with an i5 3570k integrated GPU. It does not crash, but it seriously cripples the application, it takes a minute for it to recover. Behaves regularly with that buffer swap commented out though.

I can reproduce this even with the Lwjgl3 demos, I guess we can close this one, it's definitely something on their end. I'll open the issue on their tracker.


Weird: MockRequest is not UnparsedRequest.

Believe it or not, I am not able to run unittest since the last upgrade because of this
MockRequest req = new MockRequest (...);
print (req is app.UnparsedRequest) //false;

now dispatch wont work. I checked the type and MockRequest does implement the UnparsedRequest interface. But somehow it not working!

Forget about this. I was importing like this
import 'packages/redstone/server.dart';
import 'packages/redstone/mocks.dart';

because I was trying to put the tests inside a subfolder of /bin on windows. Gave up on that, so they are now on bin and I can use package: as always.


Added Dynamic error message

feat #10

Also done changes in server.js accordingly

This PR fixes the issue #10 i have created a common file for handling error msg as we change their it reflect everywhere

Thoroughly test your changes before submitting a pull request.

@jinx-vi-0 i have check it is it creating some issues?
please tell me


Potential Implementation error on Webshop

Hi, I'm trying to reproduce your ReAct results on Webshop using some LLM APIs. However, I sometimes encountered the following errors.
Basically, sometimes, after you select some specific options and then click[Buy Now], it's going to show the error below:
Traceback
(most recent call last)
File
"/home/user/anaconda3/envs/webshop/lib/python3.8/site-packages/flask/app.py"
,
      line
2095
,
      in
__call__
def __call__(self, environ: dict, start_response: t.Callable) -> t.Any:
"""The WSGI server calls the Flask application object as the
WSGI application. This calls :meth:`wsgi_app`, which can be
wrapped to apply middleware.
"""
return self.wsgi_app(environ, start_response)
File
"/home/user/anaconda3/envs/webshop/lib/python3.8/site-packages/flask/app.py"
,
      line
2080
,
      in
wsgi_app
try:
ctx.push()
response = self.full_dispatch_request()
except Exception as e:
error = e
response = self.handle_exception(e)
except:  # noqa: B001
error = sys.exc_info()[1]
raise
return response(environ, start_response)
finally:
File
"/home/user/anaconda3/envs/webshop/lib/python3.8/site-packages/flask/app.py"
,
      line
2077
,
      in
wsgi_app
ctx = self.request_context(environ)
error: t.Optional[BaseException] = None
try:
try:
ctx.push()
response = self.full_dispatch_request()
except Exception as e:
error = e
response = self.handle_exception(e)
except:  # noqa: B001
error = sys.exc_info()[1]
File
"/home/user/anaconda3/envs/webshop/lib/python3.8/site-packages/flask/app.py"
,
      line
1525
,
      in
full_dispatch_request
request_started.send(self)
rv = self.preprocess_request()
if rv is None:
rv = self.dispatch_request()
except Exception as e:
rv = self.handle_user_exception(e)
return self.finalize_request(rv)
def finalize_request(
self,
rv: t.Union[ResponseReturnValue, HTTPException],
File
"/home/user/anaconda3/envs/webshop/lib/python3.8/site-packages/flask/app.py"
,
      line
1523
,
      in
full_dispatch_request
self.try_trigger_before_first_request_functions()
try:
request_started.send(self)
rv = self.preprocess_request()
if rv is None:
rv = self.dispatch_request()
except Exception as e:
rv = self.handle_user_exception(e)
return self.finalize_request(rv)
def finalize_request(
File
"/home/user/anaconda3/envs/webshop/lib/python3.8/site-packages/flask/app.py"
,
      line
1509
,
      in
dispatch_request
getattr(rule, "provide_automatic_options", False)
and req.method == "OPTIONS"
):
return self.make_default_options_response()
# otherwise dispatch to the handler for that endpoint
return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
def full_dispatch_request(self) -> Response:
"""Dispatches the request and on top of that performs request
pre and postprocessing as well as HTTP exception catching and
error handling.
File
"/home/user/webshop/web_agent_site/app.py"
,
      line
221
,
      in
done
return html
@app.route('/done/<session_id>/<asin>/<options>', methods=['GET', 'POST'])
def done(session_id, asin, options):
options = literal_eval(options)
goal = user_sessions[session_id]['goal']
purchased_product = product_item_dict[asin]
price = product_prices[asin]
reward, reward_info = get_reward(
File
"/home/user/anaconda3/envs/webshop/lib/python3.8/ast.py"
,
      line
59
,
      in
literal_eval
expression.  The string or node provided may only consist of the following
Python literal structures: strings, bytes, numbers, tuples, lists, dicts,
sets, booleans, and None.
"""
if isinstance(node_or_string, str):
node_or_string = parse(node_or_string, mode='eval')
if isinstance(node_or_string, Expression):
node_or_string = node_or_string.body
def _raise_malformed_node(node):
raise ValueError(f'malformed node or string: {node!r}')
def _convert_num(node):
File
"/home/user/anaconda3/envs/webshop/lib/python3.8/ast.py"
,
      line
47
,
      in
parse
assert major == 3
feature_version = minor
elif feature_version is None:
feature_version = -1
# Else it should be an int giving the minor version for 3.x.
return compile(source, filename, mode, flags,
_feature_version=feature_version)
def literal_eval(node_or_string):
"""
  File "<unknown>", line 1
    {'color': '2
               ^
SyntaxError: EOL while scanning string literal

      This is the Copy/Paste friendly version of the traceback.

Traceback (most recent call last):
  File "/home/user/anaconda3/envs/webshop/lib/python3.8/site-packages/flask/app.py", line 2095, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/user/anaconda3/envs/webshop/lib/python3.8/site-packages/flask/app.py", line 2080, in wsgi_app
    response = self.handle_exception(e)
  File "/home/user/anaconda3/envs/webshop/lib/python3.8/site-packages/flask/app.py", line 2077, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/user/anaconda3/envs/webshop/lib/python3.8/site-packages/flask/app.py", line 1525, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/user/anaconda3/envs/webshop/lib/python3.8/site-packages/flask/app.py", line 1523, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/user/anaconda3/envs/webshop/lib/python3.8/site-packages/flask/app.py", line 1509, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "/home/user/webshop/web_agent_site/app.py", line 221, in done
    options = literal_eval(options)
  File "/home/user/anaconda3/envs/webshop/lib/python3.8/ast.py", line 59, in literal_eval
    node_or_string = parse(node_or_string, mode='eval')
  File "/home/user/anaconda3/envs/webshop/lib/python3.8/ast.py", line 47, in parse
    return compile(source, filename, mode, flags,
  File "<unknown>", line 1
    {'color': '2
               ^
SyntaxError: EOL while scanning string literal

  The debugger caught an exception in your WSGI application.  You can now
  look at the traceback which led to the error.

  If you enable JavaScript you can also use additional features such as code
  execution (if the evalex feature is enabled), automatic pasting of the
  exceptions and much more.

Console Locked

          The console is locked and needs to be unlocked by entering the PIN.
          You can find the PIN printed out on the standard output of your
          shell that runs the server.

PIN:

To reproduce the error, you can try this:
In the ipython file of ReAct webshop, select the task id 83: i need a slim fit gray colored coat that has long sleeves. it should be in x-large size, and price lower than 40.00 dollars. Then do the following actions:

search[slim fit gray coat long sleeves x-large]
click[B09FF97YGV]
click[2#gray]
click[x-large]
click[Buy Now]

Then the error occurs. When doing these actions directly on the website, there is no such error. Therefore there may be something wrong when passing the argument to the environment.
(The errors I notice all come when an option that has '#' inside it is selected, maybe that's useful. )
Could you please help check that? Thank you so much!

fixed


Simplify and fully specify xscratchcsw[l]

I think the specification for xscratchcsw[l] could be significantly simplified and tightened up to avoid implementation defined behaviour by changing it to be something like this:

xscratchcsw and xscratchcswl have behaviour that depends on a condition, respectively:

the current privilege is not equal to the previous privilege
the current interrupt level ....

If the condition is true, then csr* rd, xscratchcsw[l], rs1/imm behaves the same as csr* rd, xscratch, rs1/imm. Otherwise it behaves the same as mv rd, rs1/imm.

This is way simpler to understand, and avoids all of the ambiguity around csrs and csrc. It's the most obvious thing to do, and it is also what we have implemented in the Sail model (not upstreamed yet) and in our designs.
Potentially something similar could be done for xnxti but I haven't fully understood that bit of the spec yet.

That's Sail code; I think it's ok to use that. It doesn't really match how we actually implemented it, so it would maybe be worth updating when/if the code below is merged into the upstream Sail repo.
This code implements my suggested specification.
It's also quite annoying that all of the Sail samples are for machine mode, because it leaves open questions about how things should behave when the CSR privilege doesn't match the current privilege (see the TODO for example; there's no way of telling the answer from the spec).
function currentPrivilegeMatchesPrevious() -> bool =
  match cur_privilege() {
    Machine => mstatus[MPP] == 0b11,
    Supervisor => mstatus[SPP] == 0b1,
    User => true,
  }

...

function clause read_CSR(0x348, write_val) = if not(currentPrivilegeMatchesPrevious()) then get_mscratch() else write_val // mscratchcsw
function clause read_CSR(0x349, write_val) = if (mcause[Xpil] == zeros()) != (mil == zeros()) then get_mscratch() else write_val // mscratchcswl
function clause read_CSR(0x148, write_val) = if not(currentPrivilegeMatchesPrevious()) then get_sscratch() else write_val // sscratchcsw
function clause read_CSR(0x149, write_val) = if (scause[Xpil] == zeros()) != (sil == zeros()) then get_sscratch() else write_val // sscratchcswl

// The return value from the write functions is not used except for logging
// so it doesn't really need to makes sense.

// mscratchcsw
function clause write_CSR(0x348, value) = {
  if not(currentPrivilegeMatchesPrevious()) then set_mscratch(value);
  value
}

// mscratchcswl
function clause write_CSR(0x349, value) = {
  if (mcause[Xpil] == zeros()) != (mil == zeros()) then set_mscratch(value);
  value
}

// sscratchcsw
function clause write_CSR(0x148, value) = {
  if not(currentPrivilegeMatchesPrevious()) then set_sscratch(value);
  value
}

// sscratchcswl
function clause write_CSR(0x149, value) = {
  // TODO (CLIC): Should this always use s[p]il, or should it use x[p]il based
  // on the current privilege mode.
  if (scause[Xpil] == zeros()) != (sil == zeros()) then set_sscratch(value);
  value
}