Allow setting custom cipher strings in the openssl config file.

When the PROFILE=KEYWORD is specified as a cipher string, openssl will
expand the keyword to the defined cipher string in the configuration
file under section "cipher_profiles". That requires the default
(or any other) configuration file to be loaded.
An example entry in the configuration file:
[ cipher_profiles ]
PROFILE1 = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384
PROFILE2 = HIGH
Also in: http://rt.openssl.org/Ticket/Display.html?id=3299

+1

@richsalz Is there some time plan for that?
We would really like to enhance the ciphersuite strings of openssl for one to be able to specify signature algorithms, protocols and other parameters; and that patch is the first step to that. Is that also something you would be interested as well? What we would like to achieve is have a central location for default settings in an OS rather than every application setting its own.
Another issue we figured is that application that use chroot() may not benefit from this approach. Is that something you would be interested to addressing with a later patch? (my first impression is that config file load could move to a constructor).

No, there is no timetable ☹  I don’t see the point of breaking up the c iphersuite strings into finer level of detail as it’s more likely to be a way for users to get confused and have bad configurations (since TLS itself doesn’t let you do that), but maybe I’m wrong.
I agree with centralized settings, which is why I liked this.  Some folks on the team think there are “better” ways to do this.

I'm certainly for any better way, what are they? I didn't notice any at the previous discussions in the mailing list.

Nothing was offered beyond "we need a better way"


Unable to Display Timestamp Overlay in Go2RTC Streams

Summary:
I'm experiencing difficulties adding a timestamp overlay to the video streams in Go2RTC. The goal is to have the timestamp overlay displayed in the video streams generated by Go2RTC so that I can reuse the streams in Frigate and other applications.
I have reviewed: https://github.com/AlexxIT/go2rtc/issues/402, https://github.com/AlexxIT/go2rtc/issues/127, https://github.com/AlexxIT/go2rtc/issues/487
Configuration:

    go2rtc:
      streams:
        front: "ffmpeg:http://<IP_ADDRESS>:8080#video=h264"
        back: "ffmpeg:http://<IP_ADDRESS>:8080#video=h264"

What I have tried
List of the attempts made to add the timestamp overlay to the Go2RTC streams:
1. Directly within ffmpeg configuration block:
Added drawtext filter directly within the ffmpeg configuration block in Go2RTC, using timestamp_back and timestamp_front flags.

    ffmpeg:
      timestamp_back: -vf "drawtext=text='%{localtime}':x=w/25:y=(h-th)-h/25:fontsize=h/25:fontcolor=white:shadowx=2:shadowy=2"
      timestamp_front: -vf "drawtext=text='%{localtime}':x=w/25:y=(h-th)-h/25:fontsize=h/25:fontcolor=white:shadowx=2:shadowy=2"

2. Directly in stream configuration:
Attempted to add drawtext filter directly in the stream configuration for the front camera using extra_args or appending the filter directly to the ffmpeg command.
    go2rtc:
      streams:
        front:
          ffmpeg: "ffmpeg:http://<IP_ADDRESS>:8080#video=h264"
          extra_args: "-vf drawtext=text='DEBUG_TEXT':x=10:y=10:fontsize=24:fontcolor=white:shadowx=2:shadowy=2"

3. Using separate timestamp flags in stream configuration:
Attempted to add separate timestamp_back and timestamp_front flags directly in the stream configuration.
    go2rtc:
      streams:
        front: "ffmpeg:http://<IP_ADDRESS>:8080#video=h264#{timestamp_front}"
        back: "ffmpeg:http://<IP_ADDRESS>:8080#video=h264#{timestamp_back}"

4. Directly within stream configuration with drawtext filter:
Tried to directly include the drawtext filter within the stream configuration for the front camera.
        go2rtc:
          streams:
            front: "ffmpeg:http://<IP_ADDRESS>:8080#video=h264#-vf drawtext=text='DEBUG_TEXT':x=10:y=10:fontsize=24:fontcolor=white:shadowx=2:shadowy=2"
            back: "ffmpeg:http://<IP_ADDRESS>:8080#video=h264"

Despite these attempts, the timestamp overlay did not appear on the video streams generated by Go2RTC. The issue persists, and additional assistance or suggestions would be greatly appreciated.
Observe that the camera footage is displayed correctly, but attempts to add a timestamp overlay using ffmpeg flags or other methods have been unsuccessful.
Expected Behavior:
The timestamp overlay should be displayed on the video streams generated by Go2RTC, allowing for easy reuse of the streams in Frigate and other applications.
Actual Behavior:
Despite various attempts to add the timestamp overlay using different methods, including direct ffmpeg flags and additional configuration options, the timestamp overlay does not appear on the video streams.
Additional Information:
I've tried adding the drawtext filter directly in the ffmpeg command within the Go2RTC configuration, but it didn't work.
I've also attempted to apply the drawtext filter directly in the stream configuration for the front camera, but the issue persists.
The error logs from Go2RTC indicate "unknown error" when attempting to apply additional ffmpeg arguments or filters.

Environment:
Go2RTC version: 1.8.4

Logs:
2024-05-10 16:16:58.172208034  [INFO] Preparing new go2rtc config...
2024-05-10 16:16:58.576585406  [INFO] Starting go2rtc...
2024-05-10 16:16:58.670841556  16:16:58.670 INF go2rtc version 1.8.4 linux/arm64
2024-05-10 16:16:58.671604017  16:16:58.671 INF [api] listen addr=:1984
2024-05-10 16:16:58.671608498  16:16:58.671 INF [rtsp] listen addr=:8554
2024-05-10 16:16:58.671909312  16:16:58.671 INF [webrtc] listen addr=:8555
2024-05-10 16:17:08.021380886  [INFO] Starting go2rtc healthcheck service...

Note: Any assistance in resolving this issue and successfully displaying the timestamp overlay on the Go2RTC streams would be greatly appreciated.

Solved by this clear thread that I missed earlier: https://github.com/AlexxIT/go2rtc/issues/741


Testpage with DelayedInsert does not create records sometimes

Please include the following with each issue:
1. Describe the bug
In a testpage that has the DelayedInsert Property set the record is not created everytime. There's no error shown, it simple does not create the record which made it really hard to figure out the problem. Please have a look in the reproduction step as it's not easy to explain (as it's not that obvious)
2. To Reproduce
Steps to reproduce the behavior:

Execute the following Test method.

It's fine to just specify the document no.
It's fine to specify the document no. and change the Account Type to a different value then the default one.
It's fine to specify the document no. and change the Account Type back and forth
It's NOT fine to re-enter the current Account Type. Then the record is simply not inserted anymore even there's no error shown.

codeunit 50100 "My Codeunit"
{
    Subtype = Test;

    [Test]
    procedure TestLine()
    var
        GenJournalLine: Record "Gen. Journal Line";
        LibraryAssert: Codeunit "Library Assert";
        PaymentJournal: TestPage "Payment Journal";
    begin
        PaymentJournal.OpenEdit();

        // Just validating the document no. is fine.
        // Record is inserted when leaving the line with .New();
        // Notice that Account Type::Vendor is the default value.
        PaymentJournal."Document No.".SetValue('1234');
        PaymentJournal.New();

        GenJournalLine.SetRange("Document No.", '1234');
        LibraryAssert.IsTrue(GenJournalLine.FindFirst(), 'Gen. Journal Line record not found');
        LibraryAssert.AreEqual(GenJournalLine."Account Type"::Vendor, GenJournalLine."Account Type", 'Account Type not equal');

        // Changing the Account Type to a different value (=Customer) then default (=Vendor) is also fine.
        // Record is inserted when leaving the line with .New();
        PaymentJournal."Document No.".SetValue('2345');
        PaymentJournal."Account Type".SetValue(GenJournalLine."Account Type"::Customer);
        PaymentJournal.New();

        GenJournalLine.SetRange("Document No.", '2345');
        LibraryAssert.IsTrue(GenJournalLine.FindFirst(), 'Gen. Journal Line record not found when setting value to Customer');

        // Changing the Account Type to Vendor again after once changing it to a different value (=Customer) is also fine.
        // Record is inserted when leaving the line with .New();
        PaymentJournal."Document No.".SetValue('3456');
        PaymentJournal."Account Type".SetValue(GenJournalLine."Account Type"::Customer);
        PaymentJournal."Account Type".SetValue(GenJournalLine."Account Type"::Vendor);
        PaymentJournal.New();

        GenJournalLine.SetRange("Document No.", '3456');
        LibraryAssert.IsTrue(GenJournalLine.FindFirst(), 'Gen. Journal Line record not found when setting value to Customer, then Vendor');
        LibraryAssert.AreEqual(GenJournalLine."Account Type"::Vendor, GenJournalLine."Account Type", 'Account Type not equal');

        // !! Setting the Account Type to Vendor if it was already = Vendor is not fine.
        // Record is NOT inserted anymore after leaving the line with .New()
        PaymentJournal."Document No.".SetValue('4567');
        PaymentJournal."Account Type".SetValue(GenJournalLine."Account Type"::Vendor);
        PaymentJournal.New();

        GenJournalLine.SetRange("Document No.", '4567');
        LibraryAssert.IsTrue(GenJournalLine.FindFirst(), 'Gen. Journal Line record not found when setting value to Vendor only');
    end;
}

3. Expected behavior
The record has to be inserted still. And in case it's not, there has to be shown an error.
4. Actual behavior
Nothing happens. The General Journal Line is simply not created. If there wouldn't be the Library.IsTrue(GenJournalLine.FindFirst(), ..) statement, then the test method would simply succeed.
5. Versions:

AL Language: v12.5.914975
Visual Studio Code:
Version: 1.85.1 (user setup)
Commit: 0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2
Date: 2023-12-13T09:49:37.021Z
Electron: 25.9.7
ElectronBuildId: 25551756
Chromium: 114.0.5735.289
Node.js: 18.15.0
V8: <IP_ADDRESS>-electron.0
OS: Windows_NT x64 10.0.22631
Business Central: DE Business Central 23.2 (Platform 23.0.14532.0 + Application 23.2.14098.14562)
List of Visual Studio Code extensions that you have installed:

Sending to app teams to verify how this should work.


Inconsistency in number of classes in EC/GO downstream datasets

Dear all,
I believe to have found some major flaws in the EC/GO downstream datasets you linked on your google drive (https://drive.google.com/drive/folders/11dNGqPYfLE3M-Mbh4U7IQpuHxJpuRr4g).
In the SaProt codebase, in the SaProtAnnotationModel class you specify the number of classes in these datasets to be: label2num = {"EC": 585, "GO_BP": 1943, "GO_MF": 489, "GO_CC": 320}. However, when investigating the EC dataset for example, I only find 366 distinct classes in the training set, 263 in test and 287 in the validation. Similar issues arise in all the three GO datasets. This seems like an ill-posed classification problem to me and I would appreciate some clarification.
Thank you very much for taking the time to look into this.
PS: Here is the simple Pandas code I used for the analysis.
`
df_test = pd.read_csv(ec_test_path)
df_train = pd.read_csv(ec_train_path)
df_valid = pd.read_csv(ec_valid_path)
df_train['class'].nunique()=366
df_test['class'].nunique()=263
df_valid['class'].nunique()=287
Convert 'class' columns to sets
train_classes = set(df_train['class'])
valid_classes = set(df_valid['class'])
test_classes = set(df_test['class'])
Find the intersection of the two sets
intersection_train_val = train_classes.intersection(valid_classes)
intersection_train_test = train_classes.intersection(test_classes)
intersection_val_test = valid_classes.intersection(test_classes)
len(intersection_train_val)=287
len(intersection_train_test)=262
len(intersection_val_test)=207
`

Hi, Thank you for your interest in our work!
Could you explain more about how you define "distinct class"? The EC and GO tasks are multiple binary classification tasks, which means a protein is mapped to multiple labels for different functions, each being 0 or 1 to indicate whether the protein has a specific function. For instance, the number "585" for the EC task means a protein has 585 binary labels such as 0 1 0 ... 1 0 0. The 1 at specific position indicates the protein has that function.


224: validate PolymorphicModels

Fixes https://github.com/jrochkind/attr_json/issues/224

i didn't take the time to install PG on my machine, so I couldn't run the tests locally. I do, however, have a similar instance set up in another project, so hopefully I was able to write the specs up correctly.

Lovely thank you!
I will merge and release today or tomorrow!
I appreciate it, thanks!

OK, I actually installed PG to run the specs locally and figured out my bad reference in the new test. All's passing now! Thanks for the quick replies and all your effort on the gem!

ooh, you even added to the CHANGELOG, thank you!  I or you should add credit to @LyricL-Gitster  there -- I want to give you credit, plus it's good to show that people other than me are even occasionally contributing code!

oops, just remebered I forgot to come back to this after I left it with CI still running last week! Sorry! Merging and releasing today!

2.3.1 released with this fix! Thank you very much @LyricL-Gitster

Sure thing! Glad to help.


Revert "Update Game Instructions"

Reverts ganeshbchincholkar-eaton/reviewing-a-pull-request#2

not required


createdAt and updatedAt attributes currently not supported in Database Models

In the MongoDB database, the date-time tracking is relatively simpler. While in present case, adding date-time support will be a good feature as User would get more information about the actions on the app.

I wish to work on this. Can you assign this issue to me

Hey @supminn , thank you so much! Sure, it would be of great help


Phantomjs via brew not working

I installed phantomjs via brew on my local machine.
I verified it is working with
[jonathan]: phantomjs -v
2.0.0

I then ran webdriver and am getting this error:
iex(1)> config = %WebDriver.Config{name: :browser}
%WebDriver.Config{browser: :phantomjs, name: :browser, root_url: ""}
iex(2)> WebDriver.start_browser config
** (exit) exited in: :gen_server.call(:webdriver, {:start_child, {:browser, {WebDriver.BrowserSup, :start_link, [%WebDriver.Config{browser: :phantomjs, name: :browser, root_url: ""}]}, :permanent, 5000, :worker, [WebDriver.BrowserSup]}}, :infinity)
    ** (EXIT) no process
    (stdlib) gen_server.erl:190: :gen_server.call/3

Any intuition as to why this isn't working?
Thanks!

This is a PhantomJS/GhostDriver issue https://github.com/detro/ghostdriver/issues/394


subdomain takeover via ngrok service

Service name
ngrok
this already mentioned in https://github.com/EdOverflow/can-i-take-over-xyz/issues/85
but few steps are missing there. and that won't work.
when you run ./ngrok http 80 -subdomain cnameentry it will run ngrok on cname domain only , not subdomain, i set up ngrok on my own subdomain to test it.
Proof
if you visit vulnerable subdomain, error will be: Tunnel subdomain.example.com not found
check cname entry of subdomain, it will be something like http://xxxxxxxx.cname.us.ngrok.io/

set up account on https://ngrok.com/

subdomain service for ngrok is only available on paid version.
suggest you to purchase paid version: https://dashboard.ngrok.com/billing (15 days money return policy)

once your account is done, set up ngrok to your local machine , follow these steps: https://dashboard.ngrok.com/get-started

once you're done with set up locally. go to here: https://dashboard.ngrok.com/reserved
Where you can reserve vulnerable subdomain. enter subdomain and click on reserve.

now go to your local machine and run this command to takeover subdomain:
ngrok http -region=us -hostname=subdomain.example.com 80

Documentation
https://ngrok.com/docs
check Tunnels on custom domains (white label URLs)

@PareshParmar  @EdOverflow
i found  target with this error:   Tunnel   subdomain.example.com not found
i lookup for it's cname and found cname like : http://abc.cname.us.ngrok.io
when i tried to reserved the subdomain.example.com  it say's unavaliable
but when i tried to reserved the cname  i successfully reserved that
I don't have access to subdomain.example.com   but i have access of its Cname
What to do now ? Kindly help me out
Thanks

In My case for subomain.example.com:
victim has access to subomain.example.com
and i have access to its Cname:  http://example.cname.us.ngrok.io
But still the content of http://example.cname.us.ngrok.io   is not showing up on subomain.example.com

But still

Kindly can any one tell the Reason ?
@PareshParmar @EdOverflow @codingo @random-robbie

Hi,
You're doing steps wrong.
1 . Add vulnerable domain in your account's custom domain list not cname entry.
2. Once you add that run this command
ngrok http -region=us -hostname=vulnerable.subdomain.com 80
Let me know if you still face any issue.

Thanks for your reply, I still unable to takeover, Can you mention me the point on which i am wrong
1- I have also added custom domain  ( eg.  vulnerabledomain.com )  successfully owned
2-  when i tried to add  ( sudomain.vulnerabledomain.com )  it say's unavaliable
3-  then i tried to run these commands in windows
3 (a).: CMD:
ngrok.exe  http -region=us -hostname=sudomain.vulnerabledomain.com 1337
Result :
This domain is reserved for another account.
Failed to bind the domain '  cx***.*******.**m  ' for the account 'Tayyab Qadir'.
3 (b):  CMD:
ngrok.exe  http -region=us -hostname=vulnerabledomain.com 1337
Connection build Sucessfully

Can You send me message via Facebook to resolve this matter ?
https://www.facebook.com/tqMr.EditOr  Hope so problem will resolve quickly
Thanks
Best Wishes
Tayyab Qadir

Hi, As you mentioned in the second step it says unavailable  , which means subdomain is added in another account.
but feel free to dm me, Ill check:  https://twitter.com/Paresh_parmar1

I have a sundomain which is pointing to {{random-string}}.cname.{{zone}}.ngrok.io , the cname is showing the error - "Tunnel {{rngrok-cname}} not found" but the subdomain pointing to it is showing some else response which is - "No webpage was found {{domain name}}- (404)", so do you think this can be taken over? and how do you think I can takeover it, because there's a random string in the cname, how can I as an attacker control that and takeover if there's a random string on some other takeovers of ngrok?
Some help will be very much appreciated :)

Hi,
I don't think this is vulnerable, at least not anymore. I've got this instance: xyz.ngrok.io which shows:
Tunnel xyz.ngrok.io not found

I subscribed for a basic plan and tried to take it over but it was unavailable in US, only xyz.eu.ngrok.io, for example, would be up for grabs.

Not Vulnerable.

Another chiming in to same that ngrok no longer appears vulnerable.

@nin-ack Hi do you still have ngork paid account ?  If yes , I need some help with testing few subdomains to test.

Subdomain Takeover via ngrok service is not available anymore :

I have Tunnel qqqq.wwww.com not found error and CNAME xxxxxxxx.cname.eu.ngrok.io
If i try to claim qqqq.wwww.com it says that domain is unavailable. fixed?

Subdomain Takeover via Ngrok is not possible anymore !

~ Confirmed from Ngrok Team.

Takeover is impossible according to the following instruction from the official document

After adding your domain you should see instructions along with the CNAME value to be used when creating the CNAME record. Copy the value of your newly-added domain's CNAME target hostname, which will be something like random-string.random-string.ngrok-cname.com.


Issue 17905: Add source property to byCodeUnit

This makes it possible to extract the underlying string from the result of byCodeUnit so that it's possible to temporarily wrap a string to pass it to a function that would otherwise auto-decode it but still be able to have a string afterwards (assuming that the function that's called doesn't wrap the byCodeUnit range in its own range of course).
Without this, you're frequently stuck having to allocate a new string from the byCodeUnit range just so that you can have a string again, which is just plain wasteful.

OK, I see it's undocummented for now, probably a good idea to experiment with.


Feature/right to left support

This PR introduces RTL support and cleans up & modernizes the code by running it through Prettier.

Great work @bitcrumb 🎉
It will be in the next release!

@jeanregisser Has this already been released?


Code: BadRequest Message: The JSON provided in the request body is invalid. Property 'sizeWindow' value is not convertible to type 'System.Int32'.

azure-mgmt-streamanalytics:
Version: 1.0.0:
Window 10:
Python 3.11.8:

Describe the bug
A clear and concise description of what the bug is.
during creation of stream analytics jobs via sdk
To Reproduce
Steps to reproduce the behavior:

script is attached to reproduce issue.

Expected behavior
A clear and concise description of what you expected to happen.
new stream analytics jobs need to be created and run via script.
ASAJobCreation.txt
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
Add any other context about the problem here.

Hi @jp250739 This bug should has been fixed with azure-mgmt-streamanalytics==2.0.0b2, please use that version and try.

Hi @ChenxiJiang333  now i am getting below error.
raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)
azure.core.exceptions.HttpResponseError: (422) The required property 'timeWindow' is missing from the request.
Code: 422
Message: The required property 'timeWindow' is missing from the request

Hi @ChenxiJiang333 now i am getting below error. raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat) azure.core.exceptions.HttpResponseError: (422) The required property 'timeWindow' is missing from the request. Code: 422 Message: The required property 'timeWindow' is missing from the request

Hi, have you changed the request content after that? I used the script you gived and it worked well.

Hi @ChenxiJiang333  i noted this as well. this created job and configured input and output. checking further.

As far i have checked.  azure-mgmt-streamanalytics==2.0.0b2 worked for me. thanks


Fix nil pointer exception when nodegroupfornode is nil

This fix should prevent a segmentation fault when a NodeGroup comes back as nil from the cloudprovider. I've not been able to track down the root cause, but I figured this might be useful for others.
In case the following is relevant or helpful:
K8s version: 1.5.2
Cluster tool: kops 1.5.1
Cloud: AWS
cluster-autoscaler version: master

This change is

This has been fixed in https://github.com/kubernetes/contrib/pull/2471, closing the old PR.


twitter html changes broke scraping for likes

whee! haven't investigated yet, just seeing that the URLs we currently scrape to get likes/favorites, eg https://twitter.com/i/activity/favorited_popup?id=998777664868532224 , now 404. ARGH.

Ah, that's why none of my Twitter likes are coming through. Why can't they just leave things as they are?

more research, based on viewing https://twitter.com/schnarfed/status/627581493137637376 while logged out:
facepile in the html includes both retweets and likes, and doesn't distinguish between them:

...

when i click on "N retweets" or "M likes," it shows a "please log in" popup. it also fetches https://twitter.com/i/schnarfed/conversation/627581493137637376?include_available_features=1&include_entities=1&reset_error_state=false , which returns nothing:
{
  "has_more_items": false,
  "items_html": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n",
  "new_latent_count": 0
}

no requests to https://twitter.com/i/activity/favorited_popup?id=998777664868532224 or anything else similar.

looking at https://mobile.twitter.com/schnarfed/status/627581493137637376 , it's JS;DR, nothing in the html.
there's a bunch of data from the tweet and reply(ies) in this fetch, but nothing about likes: https://api.twitter.com/2/timeline/conversation/627581493137637376.json?include_profile_interstitial_type=1&include_blocking=1&include_blocked_by=1&include_followed_by=1&include_want_retweets=1&include_mute_edge=1&include_can_dm=1&skip_status=1&cards_platform=Web-12&include_cards=1&include_ext_alt_text=true&include_reply_count=1&tweet_mode=extended&include_entities=true&include_user_entities=true&include_ext_media_color=true&send_error_codes=true&count=20&ext=mediaStats
clicking on "N likes" gives the same "please log in" popup. it also posts to https://api.twitter.com/1.1/jot/client_event.json with this body, and gets an empty response.
[
  {
    "_category_": "client_event",
    "format_version": 2,
    "triggered_on":<PHONE_NUMBER>236,
    "items": [],
    "event_namespace": {
      "page": "permalink",
      "section": "permalink",
      "component": "login_signup_sheet",
      "action": "impression",
      "client": "m5"
    },
    "client_app_id": "3033300"
  }
]

under the JS, the mobile page HTML says We've detected that JavaScript is disabled in your browser. Would you like to proceed to legacy Twitter?, with a form that POSTs to https://mobile.twitter.com/i/nojs_router?path=%2Fschnarfed%2Fstatus%2F627581493137637376 .
that POST 302 redirects back to https://mobile.twitter.com/schnarfed/status/627581493137637376 , but sets something persistent in the backend session, probably identified by the _mobile_sess or _twitter_sess cookie, so that legacy twitter loads instead of JS mobile twitter.
the legacy tweet HTML doesn't show any retweets or likes at all, and makes no AJAX fetches for anything else.

https://bsidesoftware.uservoice.com/forums/222301-general/suggestions/6209460-add-a-way-to-view-who-rt-d-and-favorited-tweets led me to https://twitter.com/i/tweet/html?id=998777664868532224&modal=favorited_activity , which returns json with html in a tweet_html field...which simialrly only shows counts of retweets and likes, not individual users.

found a fix! i have to spoof a browser by sending an appropriate User-Agent, eg Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0. whee.
huge thanks to https://reext.ru/blog/?p=214 (google translate), who discovered this.

It's my pleasure to know that my explanation was helpful. But based on my experience I think it will be better to send full header instead of User-Agent only.

it's working again, without the User-Agent header! oh Twitter, never change. guess we'll see how long it lasts.

example log: https://brid.gy/log?start_time=1527132332&key=aglzfmJyaWQtZ3lyFAsSB1R3aXR0ZXIiB2Fhcm9ucGsM


What about Zoom G2-Four pedals and their effects?

Are they also ZD2?
They have some new multi layered IR cabinets and stuff.

You mean the G2 FOUR, not the older G2. Do you have one and willing to explore?

I have B1 Four only.
My understanding is that G1 Four acoustic modelling is using some short IRs already. At least this is that Zooms tells.
Can be cool to find arrays containing IR data and write simple utility to replace them with user IRs, it don't require any code changes.

@maximka1812 The decode_bdl.py script I pushed at the weekend can also be (ab)used to replace any symbol in the ZD2/BDL code segment.... so if you wanted to (say) replace an IR, in theory that would be possible. Although I recommend it's used with care....
At present it is set up to decode/encode TBLs as float32, but trivial to change to some other format.
The '--list' option will dump a list of all the symbols that exist, if one is called 'COOL_IR_TBL' that would be a suspicious target :-)
$ python3 decode_bdl.py --help
usage: decode_bdl [-h] [-o OUTPUT] [-l] FILE

positional arguments:
  FILE                  File to process

options:
  -h, --help            show this help message and exit
  -o OUTPUT, --output OUTPUT
                        output adjusted BDL to FILE
  -l, --list            list available symbols

I have B2 four.
I'm interested in this project because I only have Android smartphones that doesn't support zoom pedals except G1/G1X.

Do you have a PC (preferably with Linux on it) or such to try out MIDI connectivity? At least to see if the pedal presents itself as a MIDI port.

@Licarde Hi, I don't know how familiar you are with Midi so please excuse if I'm too simple...
Basically the Pedals are controlled via midi packets, normally a PC would send a series of SysEx packets to query/control the device settings. Midi is normally 7-bit data, SysEx is one of the exceptions where the packets starts with 0xF0 and ends 0xF7. The first 3 bytes of the packet are an 'address', the reset are vendor specific. We see that the 4th byte seems to be a 'command' with following bytes being data
We have figured out that all the pedals (we've tested so far) respond on the same 'address' and thus can be queried/controlled.
For example @nomadbyte had me run the following commands on my GCE-3, whilst it was pretended to be a number of pedals....
https://github.com/shooking/ZoomPedalFun/issues/7#issuecomment-1853222327
ie. 'cmd_44'
$ amidi -p hw:2,0,0 -S 'F0 52 00 6e 44 00 00 00 00 F7' -r temp.bin -t 2; hexdump -C -v temp.bin

30 bytes read
00000000  f0 52 00 6e 43 16 01 78  05 16 01 03 00 02 00 00  |.R.nC..x........|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 f7        |..............|
0000001e

I don't know off the top of my head how to send SysEx midi from an Android phone, but it must be possible.... I guess the first thing is to work that out, and then have you try the same on your B3-Four pedal to see if it responds the same.

I'm a very beginner at both MIDI and Python. Please excuse.
I have Windows only.
Can you dump these too?
Here's a bash script to list the files on the pedal's internal flash:
#!/bin/bash

sig_int() {
  exit 2
}

port=hw:2,0,0  # your B2 FOUR port

sysex_find_first="f0 52 00 6e 60 25 00 00 2a 2e 2a 00 f7"  # *.*
sysex_find_next="f0 52 00 6e 60 26 00 00 2a 2e 2a 00 f7"
sysex_find_end="f0 52 00 6e 60 27 f7"

sysex=$sysex_find_first

while
  amidi -p $port -S "$sysex" -t 1 -r temp.bin > /dev/null || exit 1
  trap sig_int INT TERM EXIT

  [ -s temp.bin ] && ( tail -c +16 temp.bin | head -c 12 | cut -d '' -f1 > temp1.bin )
  [ -s temp1.bin ] && cat temp1.bin
  sysex=$sysex_find_next

  [ -s temp1.bin ]
do true ; done

amidi -p $port -S "$sysex_find_end" -t 1 -r temp.bin > /dev/null

Copy the script's text into a file, then make it executable chmod +x thefile, then run ./thefile
It lists the file names, one per line.

$ ./b2four_list
DUMMY.WAV
INFBKUP.BIN
IR000.ZIR
IR001.ZIR
IR_INFO.BIN
B_OUT_EQ.BDL
LP-MONO.ZIC
LP-ST.ZIC
OUT_VP.ZIC
RHYTHM.ZIC
SOLID1.BDL
MINIMARK.ZD2
SOLID2.BDL
MNTONEAU.ZD2
SOLID3.BDL
SOLID1.ZIC
TUBE1.BDL
SOLID2.ZIC
TUBE2.BDL
SOLID3.ZIC
TUBE3.BDL
TUBE1.ZIC
Clap.raw
ClapAmb.raw
Click.raw
HHC.raw
HHCAmb.raw
HHF.raw
HHO.raw
HHOAmb.raw
Kik1.raw
Kik2.raw
KikAmb.raw
Ride.raw
Rim.raw
RimAmb.raw
Snr1.raw
Snr2.raw
Snr3.raw
Snr4.raw
SnrAmb.raw
Tamb.raw
TomF.raw
TomFAmb.raw
TomH.raw
TomL.raw
160_COMP.ZD2
160_COMP.ZIC
AC370_1U.ZD2
AC370_1U.ZIC
AC370_1U.ZIR
AG750_1U.ZD2
AG750_1U.ZIC
AG750_1U.ZIR
AIR5G.ZD2
AIR5G.ZIC
ANDLY_M.ZD2
ANDLY_M.ZIC
A_FILTER.ZD2
A_FILTER.ZIC
B15N_1U.ZD2
B15N_1U.ZIC
B15N_1U.ZIR
BASSWAH.ZD2
BASSWAH.ZIC
BASS_BB.ZD2
BASS_BB.ZIC
BASS_PHA.ZD2
BASS_PHA.ZIC
BA_CRY.ZD2
BA_CRY.ZIC
BA_DRV1U.ZD2
BA_DRV1U.ZIC
BA_FZSML.ZD2
BA_FZSML.ZIC
BA_GEQ1U.ZD2
BA_GEQ1U.ZIC
BA_METAL.ZD2
BA_METAL.ZIC
BA_OCTFZ.ZD2
BA_OCTFZ.ZIC
BA_PEQ.ZD2
BA_PEQ.ZIC
BA_PRE.ZD2
BA_PRE.ZIC
BA_TSDRV.ZD2
BA_TSDRV.ZIC
BBB_OD.ZD2
BBB_OD.ZIC
BLACKOPT.ZD2
BLACKOPT.ZIC
BMN1001U.ZD2
BMN1001U.ZIC
BMN1001U.ZIR
BOMBER.ZD2
BOMBER.ZIC
BPLSHFT.ZD2
BPLSHFT.ZIC
BRGTHALL.ZD2
BRGTHALL.ZIC
BRGTROOM.ZD2
BRGTROOM.ZIC
BSTDSYN.ZD2
BSTDSYN.ZIC
BSYNTLK.ZD2
BSYNTLK.ZIC
B_ATWAH.ZD2
B_ATWAH.ZIC
B_DETUNE.ZD2
B_DETUNE.ZIC
B_MOCT.ZD2
B_MOCT.ZIC
B_OCTAVE.ZD2
B_OCTAVE.ZIC
B_OD.ZD2
B_OD.ZIC
B_PDLMNP.ZD2
B_PDLMNP.ZIC
B_PDLPIT.ZD2
B_PDLPIT.ZIC
B_PITCH.ZD2
B_PITCH.ZIC
B_ST_CHO.ZD2
B_ST_CHO.ZIC
B_VFLNG.ZD2
B_VFLNG.ZIC
CLONECHO.ZD2
CLONECHO.ZIC
CRNTRI5G.ZD2
CRNTRI5G.ZIC
DARK_OD.ZD2
DARK_OD.ZIC
DCOMP.ZD2
DCOMP.ZIC
DEFRET.ZD2
DEFRET.ZIC
DELAY_M.ZD2
DELAY_M.ZIC
DI5.ZD2
DI5.ZIC
DIPLUS1U.ZD2
DIPLUS1U.ZIC
DI_OFF.ZIC
DJNTPR.ZIC
DRKPRE1U.ZD2
DRKPRE1U.ZIC
DUADLY_M.ZD2
DUADLY_M.ZIC
DUAL_CMP.ZD2
DUAL_CMP.ZIC
DJNTPR.ZD2
EBH3601U.ZIC
EBH3601U.ZIR
EGFLTR1U.ZD2
EGFLTR1U.ZIC
ENV_FLTR.ZD2
ENV_FLTR.ZIC
EPSTMP5G.ZD2
EPSTMP5G.ZIC
EXCITER.ZD2
EXCITER.ZIC
GLAMCOMP.ZD2
GLAMCOMP.ZIC
HALL5G.ZD2
HALL5G.ZIC
HDHALL5G.ZD2
HDHALL5G.ZIC
HIGH_EQ.ZD2
HIGH_EQ.ZIC
HLDDLY1U.ZD2
HLDDLY1U.ZIC
HLDDLY88.ZIC
EBH3601U.ZD2
HPS.ZIC
KKFLNG1U.ZD2
KKFLNG1U.ZIC
LINPRE.ZD2
LINPRE.ZIC
LMT1176.ZD2
LMT1176.ZIC
LOOPROLL.ZD2
LOOPROLL.ZIC
LOW_EQ.ZD2
LOW_EQ.ZIC
MB_COMP.ZD2
MB_COMP.ZIC
TUBE2.ZIC
MINIMARK.ZIC
MINIMARK.ZIR
TUBE3.ZIC
MNTONEAU.ZIC
MNTONEAU.ZIR
MODDLY_M.ZD2
MODDLY_M.ZIC
NYC_MUFF.ZD2
NYC_MUFF.ZIC
OPTCOMP.ZD2
OPTCOMP.ZIC
PDLVOL5G.ZD2
PDLVOL5G.ZIC
PDL_RESO.ZD2
PDL_RESO.ZIC
PHASER.ZD2
PHASER.ZIC
PH_DIST.ZD2
PH_DIST.ZIC
PITCHSHF.ZD2
PITCHSHF.ZIC
PLTREV5G.ZD2
PLTREV5G.ZIC
PRE73.ZD2
PRE73.ZIC
RCBST5G.ZD2
RCBST5G.ZIC
ROOM5G.ZD2
ROOM5G.ZIC
RVRSDL_M.ZD2
RVRSDL_M.ZIC
SEQFLTR.ZD2
SEQFLTR.ZIC
SLWATK.ZD2
SLWATK.ZIC
HPS.ZD2
SOLPRE.ZIC
SPLITTER.ZD2
SPLITTER.ZIC
SPLOPR.ZD2
SPLOPR.ZIC
SPRING5G.ZD2
SPRING5G.ZIC
SQUEAK5G.ZD2
SQUEAK5G.ZIC
STBGEQ1U.ZD2
STBGEQ1U.ZIC
SUNN_AU.ZD2
SUNN_AU.ZIC
SUNN_AU.ZIR
SUPERCHO.ZD2
SUPERCHO.ZIC
SVT_1U.ZD2
SVT_1U.ZIC
SVT_1U.ZIR
SWR4001U.ZD2
SWR4001U.ZIC
SWR4001U.ZIR
TAPECH_M.ZD2
TAPECH_M.ZIC
TE400_1U.ZD2
TE400_1U.ZIC
TE400_1U.ZIR
THEVIBE.ZD2
THEVIBE.ZIC
TREMOLO.ZD2
TREMOLO.ZIC
TS_BST1U.ZD2
TS_BST1U.ZIC
VOODOO_B.ZD2
VOODOO_B.ZIC
ZNR.ZD2
ZNR.ZIC
Z_SYN_1U.ZD2
Z_SYN_1U.ZIC
Z_TRON.ZD2
Z_TRON.ZIC
FLST_SEQ.ZT2
SOLPRE.ZD2

Wow! Thanks for the list, at least we now know what's in the box, so to speak.

extension
description

.ZIC
effect icon (Zoom ICon format)

.BDL
built-in effect module

.ZD2
effect module

.ZT2
effect module sequence list (FLST_SEQ.ZT2)

.raw
rhythm drum-kit sample (raw format)

.ZIR
IR data (Zoom format)

.WAV
IR sample (??? DUMMY.WAV)

.BIN
some binary data (??? maybe the IR db and its backup)

Some notes:

ZD2 files for B2 FOUR  are likely different from what was made for older models, like B1 FOUR; though many have similar names;
B2 FOUR loads special built-in modules SOLID1.BDL and TUBE1.BDL (1,2,3) -- that's for that DI model switch;
B_OUT_EQ.BDL is the output EQ, similar to how it was handled for B1 FOUR

B2 FOUR has 300 user patches, 10 patches per bank (30 banks).
Here's how to dump a selected patch and the current edit buffer. For the test, you need to select some of preset patch, say, "001: DamnTime2022" and then dump the data, so we could compare the patch/buffer size.
## Enable Editor Mode
amidi -p hw:2,0,0 -S 'F0 52 00 6e 50 F7' -r temp.bin -t 2; hexdump -C -v temp.bin

## Show current Bank and Program (Bank-MSB, Bank-LSB, Prog)
amidi -p hw:2,0,0 -S 'F0 52 00 6e 33 F7' -r temp.bin -t 2; hexdump -C -v temp.bin

## Dump current edit buffer
amidi -p hw:2,0,0 -S 'F0 52 00 6e 64 13 F7' -r temp.bin -t 2; hexdump -C -v temp.bin

## Dump selected patch (Bank-MSB:[00 00], Bank-LSB:[00 00], Prog:[00 00])
amidi -p hw:2,0,0 -S 'F0 52 00 6e 46 00 00 00 00 00 00 F7' -r temp.bin -t 2; hexdump -C -v temp.bin

## Disable Editor Mode
amidi -p hw:2,0,0 -S 'F0 52 00 6e 51 F7' -r temp.bin -t 2; hexdump -C -v temp.bin

If you want to select a patch directly, just pass it's Bank (MSB, LSB) and Prog MIDI codes. It's just common MIDI (not SysEx), so should work even without Editor Mode, well, it used to.
## Select the third patch in the second bank (2*10 + 3 = 23, "023"); indexes are 0-based

amidi -p hw:2,0,0 -S 'B0 00 00 00 B0 20 01 00 C0 02' -r temp.bin -t 2; hexdump -C -v temp.bin

WOW! Here I am on MST, and when I wake up it's like Santa's Elves have been super busy :-)
@Licarde Thank you so much for this testing and the information you have provided is super helpful.
It would seem that the B2-Four pedal is a very close relative of the B1-Four, and the fact that it is responding to these commands suggests that it would work OK with the Python scripts as they are. The scripts also run with Python on Windows, I used the py2exe method to include a 'pre-built' binary in the zip under the Releases sections
https://github.com/mungewell/zoom-zt2/releases
The scripts need the Construct module, and use WX-Windows for their GUI display. You mention that your college's lab run Ubuntu, do you have scope for installing additional Python modules?
BTW what are your interests/hopes with/for this project? Are you studying programming??

ZD2 files for B2 FOUR  are likely different from what was made for older models

Although we can't (for copyright reasons) share these files, I did upload a 'master list' of all the effects that are referenced in Guitar-Lab and this includes the MD5 sums of the ZD2 file.
https://github.com/mungewell/zoom-zt2/blob/master/zoom_fx_AllZDL7/master.txt
The GUI script contains has a 'download' button on the 'files' tab, if one or two ZD2 could be manually downloaded and checksum'ed that would answer that question.

... it is responding to these commands suggests that it would work OK with the Python scripts as they are.

Well, it's still a new device. So, it'd be more prudent to keep the initial analysis in read-only mode until we figure out what's the same, what's different.
It's tempting to use the zoom-zt2 tool, yet maybe it would be better to use the amidi to dump out data, then safely figure out the differences and chart the next stage.

@mungewell
Thanks to you too!!
I'm in guitar band club and my motivation is to use the B2 four for both guitar and bass.
@nomadbyte
I agree that we should be careful. If the dumped data is completely different from other models, I should not use the tool.

@Licarde: So far B2 FOUR protocol appears very much similar to that of G1/B1 FOUR model family, but we still need to figure out some details, such as:

patch size and format, including the size and format of the edit buffer (dump the data mentioned in the comment above)

size and contents of the effect sequence file: FLST_SEQ.ZT2:

for the size, dump the data:
$ amidi -p hw:2,0,0 -S 'f0 52 00 6e 60 25 00 00 46 4c 53 54 5f 53 45 51 2e 5a 54 32 00 f7' -r temp.bin -t 2; hexdump -C -v temp.bin

for the contents, we'll script the dumps also using amidi

internal flash size, dump the data:
$ amidi -p hw:2,0,0 -S 'f0 52 00 6e 60 29 f7' -r temp.bin -t 2; hexdump -C -v temp.bin

patch edit commands;

details on the effect files; we have some head start on that already, but some questions remain.

Eventually, we may gather enough details to come up with some alternative editor for this model.

Ok, done with the patch info for now. Thanks to @Licarde  we're learning bit-by-bit about the multi-effect platform evolution!
Once you've the access to amidi, let's continue to the FLST_SEQ.ZT2 info and the internal flash size.

@Licarde Again, many thanks for helping us out.
Don't forget that the midi data is 7bit, and needs to be converted to 8bit to interpret. It's simple to make temp changes to the scripting to decode this patch format. Specifically here:
https://github.com/mungewell/zoom-zt2/blob/master/decode_preset.py#L76
The 0x20 and 0x10 after these new markets likely signify the data segment length. The Construct language supports parsing for optional blocks, so we can have a unified decoder, either just with the presence of the PPRM or PRM2 blocks - or keyed from version number/etc.
I will admit the parsing of the parameter data  block is horrible, this is the only way I could make 'normal' Construct work with the bit-ordering... this should be rewritten - perhaps using an 'adapter'.

@nomadbyte I started adding ability to automatically de-pack from SysEx dumps, and noticed that my code uses different 'cmds' to read patch data.

None

Pushed changes to decode_preset.py that allow the handling of raw SysEx (rather than already unpacked) patches, use the -m flag.
Didn't yet decode the new segments, so you will get an error...
3 ../decode_preset.py -m patch_64.sysex

Traceback (most recent call last):
  File "/home/simon/zoom-zt2-sdw-github/b2_four/../decode_preset.py", line 336, in <module>
    main()
  File "/home/simon/zoom-zt2-sdw-github/b2_four/../decode_preset.py", line 264, in main
    config = ZPTC.parse(data)
             ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/dist-packages/construct-2.10.68-py3.11.egg/construct/core.py", line 381, in parse
  File "/usr/local/lib/python3.11/dist-packages/construct-2.10.68-py3.11.egg/construct/core.py", line 393, in parse_stream
  File "/usr/local/lib/python3.11/dist-packages/construct-2.10.68-py3.11.egg/construct/core.py", line 405, in _parsereport
  File "/usr/local/lib/python3.11/dist-packages/construct-2.10.68-py3.11.egg/construct/core.py", line 2205, in _parse
  File "/usr/local/lib/python3.11/dist-packages/construct-2.10.68-py3.11.egg/construct/core.py", line 405, in _parsereport
  File "/usr/local/lib/python3.11/dist-packages/construct-2.10.68-py3.11.egg/construct/core.py", line 2738, in _parse
  File "/usr/local/lib/python3.11/dist-packages/construct-2.10.68-py3.11.egg/construct/core.py", line 405, in _parsereport
  File "/usr/local/lib/python3.11/dist-packages/construct-2.10.68-py3.11.egg/construct/core.py", line 2205, in _parse
  File "/usr/local/lib/python3.11/dist-packages/construct-2.10.68-py3.11.egg/construct/core.py", line 405, in _parsereport
  File "/usr/local/lib/python3.11/dist-packages/construct-2.10.68-py3.11.egg/construct/core.py", line 2813, in _parse
construct.core.ConstError: Error in path (parsing) -> PPRM
parsing expected b'PPRM' but parsed b'PRM2'

Just changing Const(b"PPRM") to Const(b"PRM2") allows decode to complete.... but may be incorrect data.
$ python3 ../decode_preset.py -d -m patch_64.sysex  > patch_64.dump.txt

patch_64.dump.txt
Don't know how badly the PPRM/PRM2 section is misunderstood. Volume of '0' is probably wrong. ;-)
    PPRM = Container:
        length = 32
        autorev = b'B\x0c\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00' (total 12)
        reversed = Container:
            control = Container:
                punknown = 2164288
                editslot = 0
                volume = 0
                pad = 0
            unknown = b'\x00\x00\x00\x00\x00\x00\x00' (total 7)

@mungewell : I guess, the GetPatch SysEx:[0x09] is for the older generation of the pedals, like G3/G5; this only allows three 7bit parameters (bankMSB, bankLSB, progID) to specify the patch number. The G5n platform uses SysEx:[0x46] which allots two-7bit values for each of the patch address parameters, thus supporting more patches (more and larger banks).
Note that the output patch data from these commands actually differ, they also show different checksums.
Also the old GetEditBuffer SysEx:[0x29], when used on G5n platform returns some garbage from previous patch and has no checksum; while the new SysEx:[0x64 0x13] correctly 0-pads the trailing data, and shows checksum. The SysEx:[0x29] needs EditorMode:On, unlike SysEx:[0x64 0x13].

@mungewell: Maybe we should create a separate issue for analysis of the B2 FOUR details? That is to keep this issue more focused on gathering the output from the device.This would make it simpler for @Licarde to keep track of the amidi etc. dumps.
Or better yet, split this off into 2 new issues: one for gathering the details and dumps, the other (or more) -- for the analysis; not sure if GitHub allows such restruct.

Happy New Year! Hope it started well for all of you here.
@Licarde: Any progress with continuing the B2 FOUR exploration dumps?

@nomadbyte
Happy New Year!
I am very busy this month.
So I'm not able to contribute to the project.
Sorry.

@Licarde : Understood, no problem. Life priorities require attention. Join back in, when you'll have a chance!

I'm currently trying to get B2 FOUR output from the following SysEx commands. All deal with patch details. Say, select the first preset '001 - DamnTime2022' and then:
amidi -p hw:2,0,0 -S "f0 52 00 6e 64 02 00 07 00 f7" -r temp.bin -t 2; hexdump -C -v temp.bin

amidi -p hw:2,0,0 -S "f0 52 00 6e 64 47 f7" -r temp.bin -t 2; hexdump -C -v temp.bin

Neary, I am able to help with this project again.
But I am unable to run the code because I do not have a ubuntu machine at the moment. Sorry.
Other, I tried thammer's sym.bios.is and was able to save and load the patch!

@Licarde If you are on windows you can run the scripts there too.... need to install a few modules (construct, python-midi, etc). GUI also runs with WxPython. Should also work on Mac, but don't have confirmation on that...
If you want to try sending SysEx data you can use MidiOx on Windows.
I think that we are getting close to pushing a new release, as we've got confirmation that we can work with the MS+ pedals.

OK. I tried to sent the data via MidiOx.

For the most part it's clear that B2 FOUR is also using the ZD2 format and somewhat modified yet similar PTCF format for the patches. Same likely goes for the SysEx File IO, so it should be possible to adapt @mungewell tool to download files off the pedal. However I would not rush with installing/removing effect files yet, until we can figure out the contents of the FLST_SEQ.ZT2. Also, the details of the IR management are mostly unknown, so I would not try to disturb AMP effects for now.
Here's another SysEx to dump to figure out the internal flash size:
f0 52 00 6e 60 29 f7

Send
f0 52 00 6e 60 29 f7

Recieve
F0 52 00 6E 60 04 29 02 00 08 00 54 7B 6B 02 00 34 2F 58 00 00 00 00 00 00 00 F7

SysEx:<60 29> ==> F0 52 00 6E 60 04 29 02 00 08 00 54 7B 6B 02 00 34 2F 58 00 00 00 00 00 00 00 F7
DiskSize:[54 7B 6B 02 00]:5963220 bytes
DiskFree:[34 2F 58 00 00]:1447860 bytes
DiskUsage:(5963220-1447860)/5963220. *100% = 75.7%


Update README and helm to use kubev2v instead of konveyor

Update README and helm to use kubev2v instead of konveyor
Signed-off-by: yzamir<EMAIL_ADDRESS>

Do quay image URLs need to be swapped as well? git grep 'quay.io/konveyor'

yes and no, there is no kubev2v org in quay yet, so images are still built on konveyor [1]
once the images move, we will need to swapp this ones as well
so, currently it stay konveyor, once images start building in kubev2v org, we will do a new update and swap them.
[1] https://quay.io/organization/konveyor


[BUG] Logging flood on search rejections

Describe the bug
Search rejection for every shard is being logged even when the debug logging is not enabled. Logging an exception is very expensive as the resulting message can be big wreaking havoc on memory, CPU (due to GC) and disk throughput. Regression commit came from ES 7.10 here.
Search rejection is a mechanism for ensuring resiliency and preventing the cluster from getting overwhelmed. Because of this issue, the cluster degrades further once we see search thread pool rejections
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
The logging should only happen when the debug log is enabled
Plugins
Please list all plugins currently enabled.
Screenshots
If applicable, add screenshots to help explain your problem.
Host/Environment (please complete the following information):

OS: [e.g. iOS]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

Closing this issue as PR was merged!


Miss CSS in Qwik example at build time

UnoCSS version
O.52.4
Describe the bug
Hello,
the example doesn't seem to work on preview. Only CSS variables are found in the html page.
After qwick build, there are 2 CSS files. One in /dist/build with the CSS variables and the other in /server/build with the full style.
Reproduction
The qwik example in the Uno-monorepo
System Info
Windows
Chrome Brave Firefox
Validations

[X] Read the Contributing Guidelines.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

The CSS inline comes from /server/build/entry.preview.mjs

fix it with an include.
if that's the way to do it, i'm willing to make a PR
export default defineConfig(() => {
  return {
    plugins: [
      unocss({
        include: ["./src/**/*.{ts,tsx,js}"],
      }),
      qwikCity(),
      qwikVite(),
      tsconfigPaths(),
    ],
    preview: {
      headers: {
        'Cache-Control': 'public, max-age=600',
      },
    },
  };
});

Very cool!


various fixes & enhancements to the spec

was trying out your spec (great work btw!) and get the weather info failed due to a unmarshaling error:  the percentage in PercentageDataPoint was defined as an int, but it's actually a float.

Added two more enhancements:  the first one introduces types to facilitate coding against the generated code (especially in a static typed language like Go).  the second adds DeletePresenceLock (i.e. calling /homes/{homeId}/presenceLock, with DELETE method).

Thanks for the PR! Will try and process it this weekend.

Thanks for the PR! Will try and process it this weekend.

no worries.  I'm going to work on OpenWindow in ZoneState next.  Have this from my own custom implementation of the API.   So feel free to hold off for a couple of days.

done.  :)
while working on this I noticed that 422 errors don't unmarshal: the body doesn't match the spec.  will investigate, but put that in a separate PR.

Merging to dev branch first, so I can run the test harness on the changes before pushing to the main branch.

This commit has now been pushed to the main branch. Thanks for your contribution!


Initial commit of reinforcement learning module.

@piotrmilos this sounds very exciting but would you mind writing a few lines in docs on how to use / train with this ? Cheers.


Create events as delegates or actions

Is there any special reason behind the events having to implement an interface? Doesnt this even makes it weirder if you want to listen for 2 events of the same type in a single class?

shouldn't be that much of a problem.
I've implemented it in my fork: https://github.com/soraphis/unity-atoms/commit/20ac23efc094d967939e4092535815dab9fc3b5d
using C# events. The important part is to ensure that events are unregistered. this could be a problem within the editor, but I think my usage of 'OnAfterDeserialize' should fix this

First of all, the IGameEvent interface is totally unnecessary. It's a left over from when I started the project. Will remove it in a future commit.
Regarding the IGameEventListener, that is a different issue. I have actually tried the same approach as @soraphis is doing in this fork. However, this did hurt performance way too much and it's unfortunately not a viable option (even though it is much more elegant code-wise). Maybe I did something wrong and it's worth a second try? Or maybe there are any other approaches to this problem (can't think of any now though)? I agree with you @mutmedia that it is really awkward when using 2 events of the same type in the same class.

Removed IGameEvent in 16ab226

However, this did hurt performance way too much and it's unfortunately not a viable option

oO thats interesting.
i just looked a bit around and found this article: https://jacksondunstan.com/articles/3043
first: I would not have thought that events would get worse with repeaded use within a short timespan, but I think the conclusion of this article is pretty fitting.

Now that we’ve established which is faster—interfaces—the question becomes: should you bother? Interfaces are definitely more work to set up, harder to read, more error-prone, and more difficult to integrate into your code.
Say your game had a thousand callbacks per frame. That’d be a lot of callbacks, but still 100,000 times less than this article’s test results show. Even in the slowest case—events with multiple callback functions—you’d only be using 0.00749 milliseconds to call all the callbacks.

@soraphis Will read the article when I get time this weekend!
I could definitely try doing the move again and then try it in my current game project. If the performance / framerate is not hurt then great, but if it is noticeable it's unfortunately a no go.

GameEvents are now using C# events since commit d551947c13728ab9a754ced28a92e7d3e8a24b62 (branch canary). Seems like no noticeable performance hit when implementing it.
Thanks for the input everyone! Closing the issue.


how can establish() and io() preserve more of lifetime and type for io argument?

I am trying to connect MbedTls to the ureq's newest TLSConnector.
My WIP (does not compile) is at:
https://github.com/AnimaGUS-minerva/ureq/tree/mbedtls-2/examples/mbedtls-req
I pass the desired tcp_stream into establish(), and return a Box that has the dyn ReadWrite trait:
impl TlsConnector for MbedTlsConnector {
    fn connect(
        &self,
        dns_name: &str,
        tcp_stream: TcpStream,
    ) -> Result<Box<dyn ReadWrite>, Error> {

        let ctx = self.context.lock().unwrap();

        match ctx.establish(tcp_stream, None) {

I need to implement a socket routine for this, returning the same tcp_stream as before, but the obvious method of calling context.io() isn't going to work, because it return dyn Any, and I think that I need a dyn ReadWrite.
impl ReadWrite for MbedTlsConnector {
    fn socket(&self) -> Option<&TcpStream> {
        let ctx = self.context.lock().unwrap();
        Some(&(ctx.io() as TcpStream))
    }
}

Looking for advice here.   Maybe the wrapper establish()/io() should change?
Or what?

My question remains... I don't know how to get the socket back out, and I think that maybe it is impossible.
ureq would like it so that it can do connection caching.  For now, I am just turning that off.
See: https://github.com/algesten/ureq/pull/469

This may be fixed in #182?


Decrease characters speed movement

Try to decrease movement speed from 4 to 3 or 2.
https://github.com/Annoraaq/phaser-grid-movement-plugin/wiki/Methods

Not valid anymore.


🌱 bump gosec to 2.17.0, and fix gosec for submodules

Gosec does not handle submodules well. Ignore them and run them separately so they run against correct dependencies.
Bump gosec to 2.17.0, and fix new errors it has discovered.
Manual cherry pick of #1213, #1214, and #1181, #1127, #1137, #1134 that bump golangci-lint workflow dependencies.
After this has been merged, PR in project-infra is needed to deactivate gosec in release-1.5, add "test" for release-1.5, and then gosec.sh needs to be removed in release-1.5 via another PR in this repo.
Release 1.4 and release 1.3 will not be bumped.

/override test-ubuntu-e2e-integration-release-1-5
Integration will not test any of this.


[Feature] improve ldap user management

Search before asking

[X] I had searched in the feature and found no similar feature requirement.

Description
Streampark support Sign in with LDAP or Sign in with password.

Suppose there is a LDAP user {name:user_a，password:123}, when this user login for the first time, Streampark will create a user {name:user_a，password:123}(here we ignore the encryption) in user system. This will lead two security problems:

user_a are able to Sign in with password no matter what the status of LDAP service
if user_a's password is changed in LDAP, before Sign in with LDAP again, user_a can still sign in with the old password.

So I propose to forbid LDAP user Sign in with password. Besides, the LDAP user is usually managed by some LDAP client, reset the password of a LDAP user in Streampark is unreasonable, we should hide the reset button for LDAP user in Streampark webui.
Usage Scenario
No response
Related issues
No response
Are you willing to submit a PR?

[X] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Hi @wolfboys , what's your opinion?

Hi @wolfboys , what's your opinion?

great, I agree with you


Tried to use it with blender 3.6.1 but it errs

Here is the log:
Traceback (most recent call last):
  File "/home/r2d2/.config/blender/3.6/scripts/addons/sprytile-addon-master/sprytile_modal.py", line 608, in modal
    self.exit_modal(event, context)
  File "/home/r2d2/.config/blender/3.6/scripts/addons/sprytile-addon-master/sprytile_modal.py", line 924, in exit_modal
    self.call_tool(event, False, context)
  File "/home/r2d2/.config/blender/3.6/scripts/addons/sprytile-addon-master/sprytile_modal.py", line 712, in call_tool
    build_preview=self.draw_preview,
  File "/home/r2d2/MyApps/blender-3.6.1-linux-x64/3.6/scripts/modules/bpy_types.py", line 855, in __getattribute__
    return super().__getattribute__(attr)
AttributeError: 'VIEW3D_OP_SprytileModalTool' object has no attribute 'draw_preview'
Error: Python: Traceback (most recent call last):
  File "/home/r2d2/.config/blender/3.6/scripts/addons/sprytile-addon-master/sprytile_modal.py", line 608, in modal
    self.exit_modal(event, context)
  File "/home/r2d2/.config/blender/3.6/scripts/addons/sprytile-addon-master/sprytile_modal.py", line 924, in exit_modal
    self.call_tool(event, False, context)
  File "/home/r2d2/.config/blender/3.6/scripts/addons/sprytile-addon-master/sprytile_modal.py", line 712, in call_tool
    build_preview=self.draw_preview,
  File "/home/r2d2/MyApps/blender-3.6.1-linux-x64/3.6/scripts/modules/bpy_types.py", line 855, in __getattribute__
    return super().__getattribute__(attr)
AttributeError: 'VIEW3D_OP_SprytileModalTool' object has no attribute 'draw_preview'

I get the exact same error in 3.41 too.

I found the first issue: ```           if VIEW3D_OP_SprytileGui.is_selecting:
sel_min = Vector((
min(grid_pos.x, VIEW3D_OP_SprytileGui.sel_start.x),
min(grid_pos.y, VIEW3D_OP_SprytileGui.sel_start.y)
))
sel_max = Vector((
max(grid_pos.x, VIEW3D_OP_SprytileGui.sel_start.x),
max(grid_pos.y, VIEW3D_OP_SprytileGui.sel_start.y)
))
            tilegrid.tile_selection[0] = sel_min.x
            tilegrid.tile_selection[1] = sel_min.y
            tilegrid.tile_selection[2] = (sel_max.x - sel_min.x) + 1
            tilegrid.tile_selection[3] = (sel_max.y - sel_min.y) + 1
            ```
            sel_min and sell_max have float values for some reason like: <Vector (25.0000, 16.0000)>

So I just changed it to:
                tilegrid.tile_selection[1] = int(sel_min.y)
                tilegrid.tile_selection[2] = (int(sel_max.x) - int(sel_min.x)) + 1
                tilegrid.tile_selection[3] = (int(sel_max.y) - int(sel_min.y)) + 1
``` That seems to work for the 2nd error. But the first `object has no attribute 'draw_preview'` is still there.

Wow I did not expect to be able to fix the issue but since the zoom on the spritesheet preview also had a flat issue I did:
        context.scene.sprytile_ui.palette_pos[0] = int(display_offset.x)
        context.scene.sprytile_ui.palette_pos[1] = int(display_offset.y)

in the sprytile_gui.py and that seems to have fixed the 'draw_preview' issue too.

There are some issues with the preview vanishing when using the middle mouse button to rotate the view tho.

@BrahRah, great job hunting down that bug 👍.  This is an inactive fork, sorry, but you can open an issue with https://github.com/ionthedev/ReSprytile and you'll likely get some help there.


Use standard-version to generate changelogs

Automate versioning and CHANGELOG generation with semver.org and conventionalcommits.org.

Your are right, at them moment it is done manually. Thanks for pointing out, we will have a look at it 😊 ...


Facebook example

Description:
I have problem with Facebook login using OAuthSwift.
I've found this "Handle a specific URL into delegate":
https://github.com/OAuthSwift/OAuthSwift/wiki/API-with-only-HTTP-scheme-into-callback-URL
I don't know how to setup internal webview, can someone give me step by step, or some example, thank you.
OAuth Provider
Facebook
OAuth Version:
Version 2
OS (Please fill the version) :
iOS :
Installation method:
CocoaPods
Library version:
v1.1.0
Xcode version:
8.3.3 (Swift 3.1)

You can extends OAuthWebViewController
and set oauthswift.authorizeURLHandler=...
in demo there is an example of web view controller
https://github.com/OAuthSwift/OAuthSwift/blob/master/Demo/Common/WebViewController.swift

@phimage Thank you for fast respond.
Please if you can tell me what modifications in WebViewController I need make ?
My URL_scheme name is autoworld.
Also what should be my callback url in authorize method ?

@phimage Thank you for help.
I have another problems.
Here is my code:
func doOAuthFacebook() {
let oauthswift = OAuth2Swift(
consumerKey:    "XXXXX",
consumerSecret: "XXXXX",
authorizeUrl:   "https://www.facebook.com/dialog/oauth",
accessTokenUrl: "https://graph.facebook.com/oauth/access_token",
responseType:   "code"
)
let webVC = OAuthFBWebViewController()
oauthswift.authorizeURLHandler = webVC
let state = generateState(withLength: 20)
let _ = oauthswift.authorize(
  withCallbackURL: URL(string: "https://autoworld.org/callback")!, scope: "public_profile", state: state,
  success: { credential, response, parameters in
    print("credential \(credential)")
    print("credential \(String(describing: response))")
    print("credential \(parameters)")
}, failure: { error in
  print(error.localizedDescription, terminator: "")
}
)

}
I got this message in webview:
Can't Load ULR: The domain of this URL isn't included in the app's domains. To be able to load this URL, add all domains and subdomains of your app to the App Domains field in your app settings.
I tried add autoworld.org domain in the Apps domain field on Facebook panel, but I got this error:
App domains must match the domain of the Facebook Web Games URL (https), Mobile Site URL, Unity Binary URL, Site URL or Secure Page Tab URL. Please correct these domains: autoworld.org
What should I do ? Thank you for your time.

add https://autoworld.org

Then do not do that
func doOAuthFacebook() {
let oauthswift = OAuth2Swift(

oauthswift object will be released from memory, put the object into class variable
func doOAuthFacebook() {
self.oauthswift = OAuth2Swift(

@phimage
I tried to add https://autoworld.org but still Facebook give me same error:
App domains must match the domain of the Facebook Web Games URL (https), Mobile Site URL, Unity Binary URL, Site URL or Secure Page Tab URL. Please correct these domains: autoworld.org

please make screenshot
and give facebook documentation link about configuring the http callback url

@phimage
It'l looks like I had to add website platform. After that I am allowed to set App Domains.
Now that is ok.
I get this screen in mobile app:

There is Cookies header on top, and there is no Done button.
Should it be like this ?
Do I need to add manually navigation bar so User can cancel this process?

@phimage
This is now working.
This is my viewDidLoad of my OAuthFBWebViewController which extends OAuthWebViewController:
override func viewDidLoad() {
super.viewDidLoad()
let navigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: view.bounds.width, height: 50))
let navigationItem = UINavigationItem(title: "")
let cancelBtn = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(cancelClicked))

navigationItem.leftBarButtonItem = cancelBtn
navigationBar.setItems([navigationItem], animated: false)
self.view.addSubview(navigationBar)

self.webView.frame = CGRect(x: 0, y: navigationBar.bounds.maxY, width: view.bounds.width, height: view.bounds.height - navigationBar.bounds.maxY)
self.webView.scalesPageToFit = true
self.webView.delegate = self
self.view.addSubview(self.webView)
loadAddressURL()

}
func cancelClicked() {
self.dismissWebViewController()
}
Also I added this, so cookie header is not visible:
func webViewDidFinishLoad(_ webView: UIWebView) {
webView.stringByEvaluatingJavaScript(from: "document.getElementById('header-notices').style.display = 'none';")
}
Just one more question.
Is drawback of this Library that It can't recognise if user is already logged in Facebook with some of this methods (I mean with this Lib user will have to always input credentials):
-with native Facebook app,
-through Settings app,

with Safari.

You can store the credential for next run
https://github.com/OAuthSwift/OAuthSwift/wiki/Store-credential
You cannot access info from settings or facebook app
for facebook app you must use facebook sdk or do some stuff with x-callbackurl

@phimage
Ok, Thank you for your help.


Make it work on Python 3

:+1:
Confirmed changes work with Python 3.4.
Remember to update the version setup.py.

:+1:, and I'm going to push the big green button.


sim brakes event

Background
sim brakes event
What's new

✅  sim brakes event
✅❌ New feature is accompanied by new test: [name and description of new test].

Tests

✅ Tested on simulated robot: Tested in sim
✅❌ Tested on physical robot: [Describe the tests/commands used.]

Quality

✅ New code is written in pure C++17 to the best of my knowledge.
✅ New code follows established C++17 best practices (C++ Core Guidelines).
✅ New code passed clang-format and cpplint at least, if not all of our static code analysers.
✅❌ I have included Doxygen-style documentation in the new C++ code.

Note to reviewers
Please verify that all sections are accurately filled out and that all 6 numbered entries above are present and ticked/checked off, with their requirements met, if applicable.

[4/77] Building CXX object CMakeFiles/franka_driver.dir/src/driver/constraint_solver.cc.o
FAILED: CMakeFiles/franka_driver.dir/src/driver/constraint_solver.cc.o
/usr/bin/c++ -DFMT_HEADER_ONLY=1 -DHAVE_SPDLOG -DROS_BUILD_SHARED_LIBS=1 -DSPDLOG_COMPILED_LIB -I/root/project/src -I/root/catkin_ws/devel/include -I/root/catkin_ws/src/robot_msgs/include/lcmtypes -I/root/project/include -isystem /root/project/externals/libfranka/include -isystem /opt/drake/include/lcm -isystem /opt/drake/include -isystem /opt/drake/include/drake_lcmtypes -isystem /usr/local/include/eigen3 -Wall -Wextra -Werror -Wshadow=local -O3 -DNDEBUG -std=c++17 -MD -MT CMakeFiles/franka_driver.dir/src/driver/constraint_solver.cc.o -MF CMakeFiles/franka_driver.dir/src/driver/constraint_solver.cc.o.d -o CMakeFiles/franka_driver.dir/src/driver/constraint_solver.cc.o -c /root/project/src/driver/constraint_solver.cc
/root/project/src/driver/constraint_solver.cc: In constructor ‘franka_driver::ConstraintSolver::ConstraintSolver(const franka_driver::RobotParameters*)’:
/root/project/src/driver/constraint_solver.cc:86:29: error: ‘class drake::multibody::Parser’ has no member named ‘AddModelFromFile’; did you mean ‘AddModelsFromUrl’?
   86 |                            .AddModelFromFile(urdf_path_, "robot_arm");
      |                             ^~~~~~~~~~~~~~~~
      |                             AddModelsFromUrl

unrelated to my change.... very confused

need sadra's branch merged in to update drake before i can merge this
https://github.com/DexaiRobotics/drake-franka-driver/pull/142


Add functionality to specify param specific middleware

Example from Express:
router.param('user', function(req, res, next, id) {
console.Log(':user is present in route path');
next();
});

I have started implementing this feature and it seems to be working without any problems on Mac, but Linux tests are failing at this moment.
https://github.com/naithar/Kitura/blob/develop/Sources/Kitura/Router.swift#L610-622
https://github.com/naithar/Kitura/blob/develop/Sources/Kitura/RouterParameter.swift
https://github.com/naithar/Kitura/blob/develop/Sources/Kitura/RouterMiddlewareWalker.swift

We will review and hopefully merge the above PR early next week in our next sprint

@shmuelk I tried to reimplement parameter method again with express.js in mind, but currently I'm not sure it is alright to make a PR.
The problem is actually that I'm not sure that parameter handlers should be stored in separate list and be passed down to element looper and element's process method as i currently did. If there is no problem with such implementation, I'll clean the code and make a PR for review.
https://github.com/naithar/Kitura/blob/develop/Sources/Kitura/Router.swift#L717-721
https://github.com/naithar/Kitura/blob/develop/Sources/Kitura/RouterElementWalker.swift#L55-58
https://github.com/naithar/Kitura/blob/develop/Sources/Kitura/RouterElement.swift#L134-139


List of  applications not reloaded correctly

Skin version: 1.2.0
Issue: only a subset of all  the applications listed in the standard LMS Web interface are showing in  the "Applkications" list in Material Skin
For example in my case "Tidal" Application is not showing.
How to "force" a reload of the lists?

List of apps comes from LMS - its fetched each time you enter 'Apps'. Any errors logged into your browser's console tab?

And, version 1.2.0??? Why so old? That was released last year - there have been MANY updates since.

I upgraded to 1.5.3 but I have the same issue....

[20:40:35] JSON RESP: {"id":24,"params":["00:e0:04:78:d1:47",["myapps","items","0",25000,"menu:1"]],"method":"slim.request","result":{"base":{"actions":{"more":{"player":0,"cmd":["myapps","items"],"itemsParams":"params","params":{"menu":"myapps"},"window":{"isContextMenu":1}},"go":{"params":{"menu":"myapps"},"itemsParams":"params","cmd":["myapps","items"]},"playControl":{"cmd":["myapps","items"],"player":0,"itemsParams":"playControlParams","window":{"isContextMenu":1},"params":{"_index":"0","_quantity":"25000","menu":"1"}},"add":{"itemsParams":"params","params":{"menu":"myapps"},"cmd":["myapps","playlist","add"],"player":0},"play":{"params":{"menu":"myapps"},"itemsParams":"params","player":0,"nextWindow":"nowPlaying","cmd":["myapps","playlist","play"]},"add-hold":{"player":0,"cmd":["myapps","playlist","insert"],"itemsParams":"params","params":{"menu":"myapps"}}}},"window":{"windowStyle":"home_menu"},"offset":0,"item_loop":[{"text":"Band's Campout","icon-id":"plugins/Bandcamp/html/images/logo.png","actions":{"go":{"params":{"menu":"bandcamp"},"cmd":["bandcamp","items"]}},"addAction":"go","type":"redirect"},{"type":"redirect","text":"Qobuz","icon-id":"plugins/Qobuz/html/images/qobuz.png","actions":{"go":{"params":{"menu":"qobuz"},"cmd":["qobuz","items"]}},"addAction":"go"},{"type":"redirect","icon-id":"plugins/RadioParadise/html/icon.png","text":"Radio Paradise","actions":{"go":{"cmd":["radioparadise","items"],"params":{"menu":"radioparadise"}}},"addAction":"go"},{"addAction":"go","actions":{"go":{"cmd":["spotty","items"],"params":{"menu":"spotty"}}},"icon-id":"plugins/Spotty/html/images/93aac68fb06348598c1e67734dfaceee.png","text":"Spotty","type":"redirect"}],"title":"Applicazioni","count":4}}
No errors, but not all apps I'm expecting are showing, for example Tidal is missing

Actually a couple of CSS errors, odd, but apparently unrelated...
.....
GET http://<IP_ADDRESS>:9000/material/customcss/mobile 404 (Not Found)
......
material.min.js?r=1.5.3:97 GET http://<IP_ADDRESS>:9000/material/customcss/desktop 404 (Not Found)

Sorry, but this is an issue with your system. Material asks LMS for the list of services, and can ony shown what it is told to.
Whilst I have no Tidal account, I installed the Plugin and it appeared in Material's (and the default web UI's) 'My Apps' list.


No zoom scale level being returned in the RadChart Zoom Event

Is your feature request related to a problem? Please describe.
Yes, Currently using the radCartesianChart with DateTimeContinousAxis that has a majorStep value of Day, Week, Month and Year. Client wants to implement a zoom feature with the chart that will base on the zoom level depth that it will also change the majorStep value of the DateTimeContinousAxis.
(Ex. Zoomlevel=3, then with that value I would want to dynamically change the value of majorStep value to Day).
I have tried accessing the event data being returned from the chartZoomed event in the RadCartesianChart but it only returns data that will tell us that the chart has been zoomed with no data being returned of what is now the zoom level depth, or even telling us that zoom performed is Zoom-out or Zoom-in.

Describe the solution you'd like
The solution that most likely will solve this, is for the event data to also return a zoom level depth or return something that will tell us that the zoom is IN or OUT or best to have both, but the zoom scale level will most likely solve this problem, but also having to know what zoom is being performed will be great for another use case.

Describe alternatives you've considered
I could have use the individual gestures available in nativescript but the problem is the chart already overrides these gestures if we interact with the chart.

Issue moved to NativeScript/nativescript-ui-feedback #1147 via ZenHub


android example

please I know we have vab, https://github.com/vlang/vab/pull/235 is old and would need finish, but probably it would be good create similar example like https://github.com/gen2brain/raylib-go/blob/master/examples/others/android/example/

I do not have an android device and have no way of testing this, so I am unable to add an android example myself. Somebody else will have to add it, sorry


Add coverage data from integration tests when generating Codecov report

Jacoco XML report  being sent to Codecov does not contain coverage data taken by running integration tests.
The log module currently creates a new process to run the unit tests using the os:exec function.
os:Process|error execResult = os:exec(bal_exec_path, {}, (), "run", LOG_LEVEL_TEST_FILE);

Since the os:exec function is expected to undergo changes, a method to capture the coverage data from integration tests is not implemented in the log module. Once the exec function changes are finalized, introduce a method to capture integration test coverage in the log module.

Log module coverage is improved and os:Process feature is removed from the os module. Hense closing this issue


Implement Create React App's eslint setup

Please consider implementing Eslint which does a much better job of explaining JS errors than browsers do which is helpful for everyone but especially beginners.

Have you tried the built-in eslint configuration?

@tannerlinsley I have not yet but I've used CRA's eslint and it's incredibly useful. I'm considering porting an app built with CRA over and I'm not sure what the implications would be.

React-Static doesn't prescribe a linter during the build stages, but does ship with an .eslintrc configuration that works with Prettier and eslint. Closing this for now :)

I've been missing this a lot as well. Found the package that includes the shareable ESLint configuration used by Create React App: eslint-config-react-app, and it should be possible to integrate:
"If you want to use this ESLint configuration in a project not built with Create React App, you can install it with following steps..."
Unfortunately though, despite the easy 2-step path to implement those configs, I couldn't get it to work :/

Please don't embed eslint-config-react-app.
@hundsim You can install in as devDependency and globaly, extend from it in
.eslintrc Right now I can say that this config is not required for
development at all, since we have fresh react-tools config.
2018-03-27 4:56 GMT+08:00 hundsim<EMAIL_ADDRESS>
I've been missing this a lot as well. Found the package that includes the
shareable ESLint configuration used by Create React App:
eslint-config-react-app
https://www.npmjs.com/package/eslint-config-react-app, and it should be
possible to integrate:
"If you want to use this ESLint configuration in a project not built with
Create React App, you can install it with following steps..."
Unfortunately though, despite the easy 2-step path to implement those
configs, I couldn't get it to work :/
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/nozzle/react-static/issues/19#issuecomment-376308817,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACJsee19_Go8MU7UQbgJ5n9WdEqPMZnHks5tiVXrgaJpZM4Pzrhh
.


There should be a configuration property to ensure every API call is logged

This may be local security policy.

Implemented


Allow getting version info for a specified command

These commits add support for getting version info for a specified command. Along the way, functions are changed to return an error instead of panicking, making them more flexible for downstream users.

The failure is from bumping semver to include https://github.com/steveklabnik/semver/commit/0faefa8679575951df6b5f049151d0c75d0bd534, which changes how pre-release tags are handled with requirements. I'll take a closer look tomorrow.

Seems like the https://github.com/steveklabnik/semver/pull/54 change makes it no longer possible to use semver version requirements to sort rustc versions while ignoring prerelease tags, that is it appears that 1.4.0-nightly <= 1.5.0 no longer holds.
Which is kinda annoying because that kind of usage was the main motivation for exposing semver in this crate. :)
I wonder if I should add rustc-release-train-specific functions that ignore the prelrease tags, or specify this crate as doing this automatically... (the latter is probably a bad idea though)

it appears that 1.4.0-nightly <= 1.5.0 no longer holds.

I think it's the other way around: 1.4.0 <= 1.5.0-nightly no longer holds. From my reading of the NPM spec, this is to prevent very alpha prereleases being used in place of an earlier stable release. It makes sense in terms of package management, but not here.

I wonder if I should add rustc-release-train-specific functions that ignore the prelrease tags, or specify this crate as doing this automatically... (the latter is probably a bad idea though)

Former makes more sense to me. Arguably, the new behavior is fixing a bug. To get the behavior that makes sense for release trains, we could just use the Ord impl on Version. Eg, this works:
let v1 = Version::parse("1.4.0").unwrap();
let v2 = Version::parse("1.7.0-beta.3").unwrap();

assert!(v1 <= v2);

even though this does not:
let req = VersionReq::parse(">= 1.4.0").unwrap();
let ver = Version::parse("1.7.0-beta.3").unwrap();

assert!(req.matches(&ver));

Ah, interesting. I had assumed that the Ord impl on Version follows the same scheme as version requirments, but if it doesn't then thats a fine replacement, yeah.
Still have to change the example code and maybe deprecate version_matches though, hm...

Still have to change the example code and maybe deprecate version_matches though, hm...

Here are a couple of approaches:

mark it as deprecated, and if version_matches() returns false and there is a prerelease identifier in the version but not the req, panic with a message explaining the replacement of using the Ord impl
remove it entirely, and clearly state in the release notes what the replacement is

I kind of lean towards 2. Changing panics to Result is already a breaking change and people will likely need to revisit things a little. The changes that result are all very minor.

Yeah, will probably just remove it.

I just opened #5  for that change and rebased this PR on top of that one.

@Kimundi ping for your thoughts on on this and #5 :-)


Tidy up rarely used fcl files

We have a few fcl files that are not regularly used (e.g. TrkAnaReco_wTrkQualFilter.fcl). These either need deleting or tidying up.
Examples of the kind of tidying that might be needed:

updating to TrkAna v5 configuration (e.g. no candidate parameter)
have a trigger_paths and end_paths defined (see #169)

I think deleting makes most sense, if these are rarely used. We could add something in our documentation about specific things we might want to do and how to do them from the nominal examples. I have done something similar in REve.

Thanks, Sophie. Yeh, I think most can be deleted but there are some rarely-used ones (e.g. TrkAnaReco_ceSimReco.fcl) that we should keep around. Here's a list of what I think we want to do. I'm open to other points of view:
Keep

TrkAnaDeMFromDigis.fcl
TrkAnaExtracted.fcl
TrkAnaLineFromDigis.fcl
TrkAnaReco.fcl
TrkAnaRecoEnsemble-Data.fcl
TrkAnaRecoEnsemble-MC.fcl
TrkAnaReco_ceSimReco.fcl
TrkAnaReco_mergedKalSeeds.fcl
TrkAnaTriggerMC.fcl

More discussion needed:

TrkAnaReco_MultipleTrkQual.fcl

will this be how we add different ML algorithm outputs to EvtNtuple?

TrkAnaReco_addMCUpstream.fcl

if we move to a single trk branch, then we won't need this

TrkAnaReco_addStopTgtVDs.fcl

I think we will likely want to keep this and maybe add them to the general EvtNtuple

TrkAnaReco_multipleBestCrv.fcl and TrkAnaReco_multipleBestCrv_differentThresholds.fcl

I think we have turned away from the idea that we determine the single best CRV before the ntuple is made, however we may want something for having different thresholds

Delete

CrvExpert.fcl
TrkAnaReco_wTrkQualFilter.fcl

Yes, this list seems reasonable, if things are useful they should be kept and updated

Done in #217


fix: central scene notification argument list changed in Zwave-JS 6.0

Resolves https://github.com/zwave-js/zwavejs2mqtt/issues/210
The correct fix is to change to a stateless event notification, rather than tracking a stateful value, but this should work as a workaround.

Pull Request Test Coverage Report for Build 479381835

0 of 4 (0.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.01%) to 24.747%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

lib/ZwaveClient.js
0
4
0.0%

Totals

Change from base Build 478099928:
-0.01%

Covered Lines:
1938

Relevant Lines:
8000

💛  - Coveralls

Pull Request Test Coverage Report for Build 479381835

0 of 4 (0.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.01%) to 24.747%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

lib/ZwaveClient.js
0
4
0.0%

Totals

Change from base Build 478099928:
-0.01%

Covered Lines:
1938

Relevant Lines:
8000

💛  - Coveralls


docs: How to color whole join group red if form field has an error

On which page do you see this issue?
No response
Describe the issue
A focused input field inside a join group that has input-error actually looks really good:

Unfocused it doesn't:

I wonder if I am doing something wrong. Here's my simplified html:

    <input
      type="text"
      class="input input-bordered w-full join-item"
      [required]="required"
      [ngClass]="{ 'input-error': hasErrors }"
    />

How can I achieve that the whole join has a red border?
What browsers are you seeing the problem on?
All browsers

Unfocused it doesn't

You can fix this by adding isolate class to the <input>
The reason:
join class puts all the items next to each other and also merges their border using margin-left: -1px this allows us to have a 1px border between items when both have a border.
Here's an example of merging borders and not merging borders.
An isolate class can prevent the input to go under the sibling element.

How can I achieve that the whole join has a red border?

I wouldn't recommend that. If there's a drop down and an input, the dropdown doesn't have an invalid value. The input does so it makes more sense to set red color for the invalid input only.
However if you really want to have borders on the join, you can use border border-error class names to the join (instead of using input-error on the <input>)
Let me know if you have any questions.

The point about not all join'ed inputs being invalid is absolutely true, I did not think about that. Thank you for the hint with isolate, I will play around a bit towards this solution.
Many thanks for your time, highly appreciated!


updated index file to fix DAG errors for operations

resolves #4578
Description
Checklist

[ ] I have signed the CLA
[ ] I have run this code in development and it appears to resolve the stated issue
[ ] This PR includes tests, or tests are not required/relevant for this PR
[ ] I have updated the CHANGELOG.md and added information about my change

PRs in dbt-docs

dbt-docs/247 - Search results not filtering correctly
dbt-docs/248 - Operations causing DAG to not render


'developmental process involved in reproduction'  & 'reproductive structure development'

These two terms sound very similar. Should they be merged?
label "reproductive structure development"^^string
definition "The reproductive developmental process whose specific outcome is the progression of structures that will be used in the process of creating new individuals from one or more parents, from their formation to the mature structures."^^string
EquivalentTo: 'anatomical structure development' and ('results in development of' some 'reproductive structure')
label "developmental process involved in reproduction"^^string
definition "A developmental process in which a progressive change in the state of some part of an organism specifically contributes to its ability to form offspring."^^string
EquivalentTo: 'developmental process' and ('part of' some reproduction)
For the second one, the EC def doesn't match the textual def. This needs to be fixed whether or not the terms are merged.

One of the synonyms of the latter term is puberty. If this is valid, it encompasses more than just the development of a reproductive structure.

Should we treat puberty as a phase?
Or as a coordinated sum of parts of reproductive structure developments?
On Tuesday, March 8, 2016, ukemi<EMAIL_ADDRESS>wrote:

One of the synonyms of the latter term is puberty. If this is valid, it
encompasses more than just the development of a reproductive structure.
—
Reply to this email directly or view it on GitHub
https://github.com/geneontology/go-ontology/issues/12332#issuecomment-193866262
.

What about something like sex determination?

One of the synonyms of the latter term is puberty. If this is valid, it encompasses more than just the development of a reproductive structure.

OK. Makes sense in that it encompasses 'development of secondary sexual characteristics' (!= 'reproductive structure').
Also noticed that 'developmental process involved in reproduction' covers plant strucs, whereas 'reproductive structure development' is defined using an Uberon term for parts of a reproductive system and so doesn't cover plants.
BUT 'developmental process involved in reproduction' feels like a misleading name for this.  Following normal GO naming conventions, this sounds like developmental processes that are part of reproduction, but it may be more accurate to say that this covers development of structures which are (capable of being) used in reproduction (in a broad sense - secondary sexual characteristics being important for mating which is part of GO:reproduction).
Perhaps - 'development of structures involved in reproduction'.  This would be a parent class to 'reproductive structure development'.  I can't see a straighforward way to formalise, do I think classification under it would have to be done manually - at least for now.
Not sure we can

BTW - just realised that if I delete the logical def, the number of ETINES will increase.  Maybe best to wait until after we switch to fully automated pipeline.

Any objection to the merge of 'developmental process involved in reproduction' into 'reproductive structure development'?
https://docs.google.com/spreadsheets/d/1g4P58qVelvKRZOi9eNqJmrJBYzLB2rNQC08ozE5QAXM/edit#gid=0
Number of annotations:
Contributor   | (Assigned by)
AgBase | 1
BHF-UCL | 2
RGD | 6
MGI | 3
TAIR | 7
UniProt | 1

sounds good to me

Yes, that's fine.  Our annotations will transfer to the replacement term when the change is implemented.  I will mark the annotations in the spreadsheet as 'changed' even though that won't happen until the ontology change is made and trickles through.

@pgaudet execute merge?

I had a few questions about that branch.

I would propose merging into 'reproductive structure development' since this is probably more commonly used than 'developmental process involved in reproduction.

The merge ends up putting some terms under 'reproductive structure development' that don't seem to belong, for example:

acquisition of desiccation tolerance in seed -> this currently is indirectly part_of  'reproductive structure development', it would become is_a

anterior/posterior axis specification, follicular epithelium, right now is_a developmental process involved in reproduction

etc. so, all the terms's parentage would need to be reviewed.

Also, I think there is an issue with 'GO:0022414 reproductive process' , defined as "A biological process that directly contributes to the process of producing new individuals by one or two organisms. The new individuals inherit some proportion of their genetic material from the parent or parents."
Many of the children of 'reproductive structure development' end up with the 'GO:0022414 reproductive process' ; however I would think any developmental process is indirectly involved in reproduction (or perhaps, required for reproduciton to take place) , not directly - for eg

seed dormancy process is_a 'multicellular organismal reproductive process'
eggshell chorion assembly is_a 'cellular process involved in reproduction in multicellular organism' - this may be required to form the egg, but is it part_of reproduction?
menstrual cycle
longitudinal axis specification
etc

So, I thought all children should be checked.
Other easier points:

I propose we remove the 'puberty' NARROW synonym.
The definition of 'reproductive structure development' might need tweaking, currently it is "The reproductive developmental process whose specific outcome is the progression of structures that will be used in the process of creating new individuals from one or more parents, from their formation to the mature structures. "; We could perhaps simplify to "The (A?) developmental process whose specific outcome is the progression of structures that will be used in reproduction, from their formation to the mature structures. " (If needed we can add another sentence with the definition of 'reproduction', "the process of creating new individuals from one or more parents", although I would prefer not, because if the other term's definition is updated we dont always remember to update all definitions to match)

How do you want to proceed? I'm happy to help.
I am committing my branch where I actually did the merge, so you can have a look.
Thanks, Pascale

It appears that the merge is creating more problems than what it solves 8-(
Before merge, "reproductive structure development" is_a "developmental process involved in reproduction", and by its logical definition, "reproductive structure development" only covers the development of Uberon 'reproductive structure' which does not include any plant parts or germ cell line, whereas "developmental process involved in reproduction" does, and other stuff. Not merging makes more sense to me.
We may want to define "developmental process involved in reproduction" more clearly, perhaps "A developmental process in which a progressive change in the state of some part, germline or somatic, of an organism specifically contributes to its ability to form offspring." And "reproductive structure development" definition "The reproductive developmental process whose specific outcome is the progression of somatic structures that will be used in the process of creating new individuals from one or more parents, from their formation to the mature structures."
There are other issues brought up but I think perhaps they are of different scopes and deserve their own tickets. e.g. should we (how to) separate "reproductive process" from "developmental process involved in reproduction"?

Thanks Raymond - do you want to go ahead and 1) implement your new proposed definition for  reproductive structure development, and open any necessary tickets?
Thanks, Pascale

Is there a way that we can logically define "reproductive structure development" that includes plant (somatic) reproductive structures? Don't we want to?

i suggest making a general ticket for what to do about terms like tissue,
anatomical structure, organ, reproductive structure that span kingdoms and
are fuzzy in nature and of debatable value in grouping
On Mon, Jun 7, 2021 at 11:11 AM Raymond Lee @.***>
wrote:

Is there a way that we can logically define "reproductive structure
development" that includes plant (somatic) reproductive structures? Don't
we want to?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/geneontology/go-ontology/issues/12332#issuecomment-856152830,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAMMOMXWELIWJRPFWXTTLDTRUDWRANCNFSM4B5PVV4A
.

OK. I take back my question. Reproduction is probably the most thorny issue of biology, as biology is reproduction.


Require Lapack

cc @wolfv

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.


Hide lane arrow

I've realised I can hide lane arrows, but only if there's no custom lane connections at the node. Also, if I'm not mistaken, hiding the arrow also means no connections from that lane at the junction/node?
For detailing and general beautification of roads (particularly at transitions between ground, elevated, bridge, etc.) it would be really useful if I could simply "hide" individual lane arrows without affecting connections. And (nice to have) a keyboard modifier (Alt+Click?) on the "hide" button to toggle visibility of all lane arrows for selected segment(s).
There could perhaps be an extra button to toggle visibility of the lane arrow, which would work even if there are custom lane connections for that lane?
Possible icon for button: eye

Yes, I am aware of these mods that remove all arrows.
For example, if I want to close a single lane of a motorway between two junctions (exit and entry), I only want the single arrow removing. I don't want to remove all arrows across all roads and then spend ages manually recreating them just to remove the arrows from that single lane of motorway between the two junctions.
And even with things such as ploppable asphalt, which afford a more granular approach, I am often not able to remove the existing arrows without creating floating patches of tarmac.
So far, the only mod I've seen that allows me to remove individual lane arrows is TM:PE. And it's just a single "hide button" away from being able to scratch that arrow itch.

There are mods that purpose:
https://steamcommunity.com/workshop/browse/?appid=255710&searchtext=remove+arrow&childpublishedfileid=0&browsesort=textsearch&section=home
(Yes those will remove all lines/arrows)

I believe it's technically impossible to prevent individual lane arrows from being rendered at specific road segments.

On the lane arrow changer tool in TM:PE, you get three buttons for each arrow. If I "unselect" each button the associated arrow is removed from the lane. I was just wondering if it was possible to have a "hide" button that has the same effect, but while leaving the lane connections in place?

Ok, that's possible of course. I would have to create a new data structure that holds the lane arrows and decouple routing decisions from the base game's arrows

This is one of the things we'll be covering in lane routing/arrows overhaul: #41


How to use this schema?

I can see here schema xsd file and generated sample files but could not found that how to use this schema? Can you please update the documentation?

I found this white paper helpful.
http://www.sharepoint-reference.com/Blog/Code Samples/Introducing the PnP Provisioning Engine.pdf

The PnP Provisioning Schema can be used with the PnP Provisioning Engine. Yes, the referenced paper/blog should clarify the goal.
I will close it. Thanks for your interest.


feat: Add Serverless replication task support

Description
Add support for DMS Serverless Replication tasks using aws_dms_replication_config.

Add optional creation of a replication instance, default is true to maintain current behaviour
Allow setting serverless_config parameters on replication_tasks to make the task a Serverless configuration instead of a replication task

Motivation and Context
resolves #53
Breaking Changes
No breaking changes, default behaviour remains the same.

How Has This Been Tested?

[x] I have updated at least one of the examples/* to demonstrate and validate my change(s)
[x] I have tested and validated these changes using one or more of the provided examples/* projects

Tested using existing and new examples.

[x] I have executed pre-commit run -a on my pull request

Hi @antonbabenko @bryantbiggs any thoughts on this one? :pray:

Thanks for the review @antonbabenko have made the amendments :+1:

Thank you @gpdenny !

This PR is included in version 2.2.0 :tada:


Compatibility with Baidu IME on ubuntu 18/20/22

Does this issue occur when all extensions are disabled?: Yes

VS Code Version: 1.77.3
OS Version: ubuntu 22.04
Baidu IME

Steps to Reproduce:

install Baidu IME.
open vscode integrated terminal with any dir.
when I input git in bash, it should change to giit or gitt, and If I input slowly, there will be no problem

I consulted Baidu about this issue, but there was no response.

Upstream: https://github.com/xtermjs/xterm.js/issues/4537

Let's track this upstream


Only apply the padding top/bottom changes for v-text-field to outlined variant

Description
More precise CSS selector for text fields
Related Issue(s)
Closes #773

Approved however the e2e error is not the usual ui-control error.

ui-form
blurring a required field runs validation

Happy to merge as is (error may have slipped in another PR as this seems unrelated)

Approved however the e2e error is not the usual ui-control error.

It's always one of those two that fails - 🤷


Selectively connect to peer ?

I think with socket.io it should be rather simple to do this by allowing a peer to connect to remote peers selectively.Maybe In a discovery based method ? This would give more control to the developer, additionally authentication of peers can than be handled serverside (allows enforcing rules).
sio.on('peer-discovered', function(peer){
   peer.connect();
});

and on the other hand (or maybe filter this in server)
sio.on('peer-request', async function(user, response){
   const shouldAnswer = await getConfirmationAsync();
   if( shouldAnswer ) return response.answer();
   response.reject();
});

You can achieve this by letting the peers you want to connect together join in a room and then exchange signalling data by calling p2pserver() on the server:
const server = require('http').createServer()
const p2pServer = require('socket.io-p2p-server').Server
const io = require('socket.io')(server)

server.listen(3030)

io.on('connection', socket => {
  socket.join(room) /* Join the room */

  p2pServer(socket, null, room) /* All sockets in the specified room will attempt to establish a WebRTC connection. */
})