Invoice sub-types disscussion

Hey @wes4m,
Just want to discuss few things. So, in this repo are we doing only simplified tax invoice? If yes, please suggest me on how we can post below transactions.
● For Tax Invoice, code is 380 and subtype is 01. ex. <cbc:InvoiceTypeCode name=”010000”>380</cbc:InvoiceTypeCode>
● For Simplified Tax Invoice, code is 380 and subtype is 02. ex. <cbc:InvoiceTypeCode name=”020000”>380</cbc:InvoiceTypeCode>
● For tax invoice debit note, code is 383 and subtype is 01. ex. <cbc:InvoiceTypeCode name=”010000”>383</cbc:InvoiceTypeCode>
● For simplified debit note, code is 383 and subtype is 02. ex. <cbc:InvoiceTypeCode name=”020000”>383</cbc:InvoiceTypeCode>
● For tax invoice credit note, code is 381 and subtype is 01. ex. <cbc:InvoiceTypeCode name=”010000”>381</cbc:InvoiceTypeCode>
● For simplified credit note, code is 381 and subtype is 02. ex. <cbc:InvoiceTypeCode name=”020000”>381</cbc:InvoiceTypeCode>
● For self-billed invoice, code is 389 and subtype is 01. ex. <cbc:InvoiceTypeCode name=”010000”>389</cbc:InvoiceTypeCode>

I have also a question, do you know if Zatca has published the Production URL?

No, not yet! They are like not ready with the sandbox and there is a news from sources that this might extend upto 3-4 months.

@asim009 I did not implement support for all those different types. I hardcoded invoiceTypeCode name to equal 0211010. While the actual code is set based on this enum
export enum ZATCAInvoiceTypes{
    INVOICE="388",
    DEBIT_NOTE="383",
    CREDIT_NOTE="381"
}

For normal invoice I used 388.
For a canceled, or refund invoice you set it to either a DEBIT_NOTE, or CREDIT_NOTE through the cancelation prop.
e.g:
// Sample Invoice
const invoice = new ZATCASimplifiedTaxInvoice({
    props: {
        egs_info: egsunit,
        invoice_counter_number: 2,
        invoice_serial_number: "EGS1-886431145-1",
        issue_date: "2022-03-13",
        issue_time: "14:40:40",
        previous_invoice_hash: "NWZlY2ViNjZmZmM4NmYzOGQ5NTI3ODZjNmQ2OTZjNzljMmRiYzIzOWRkNGU5MWI0NjcyOWQ3M2EyN2ZiNTdlOQ==",
        line_items: [
            line_item,
            line_item,
            line_item
        ],
        cancelation: {
            canceled_invoice_number: 1,
            cancelation_type: ZATCAInvoiceTypes.CREDIT_NOTE,
            payment_method: ZATCAPaymentMethods.CASH,
            reason: "canceled"
        }
    }
});

Isn't there any validation which checks the invoice number before accepting the credit note
cancelation: {
           canceled_invoice_number: 1,
           cancelation_type: '381',
           payment_method: ""10"",
           reason: "canceled"
       }

I have passed the above object, the  value of key canceled_invoice_number which used, I have never created invoice of that. Still Zatca says it is reported!
Response: for the credit note from zatca for which canceled_invoice_number is wrong and never created invoice.
 {
                "validationResults": {
                    "infoMessages": [
                        {
                            "type": "INFO",
                            "code": "XSD_ZATCA_VALID",
                            "category": "XSD validation",
                            "message": "Complied with UBL 2.1 standards in line with ZATCA specifications",
                            "status": "PASS"
                        }
                    ],
                    "warningMessages": [],
                    "errorMessages": [],
                    "status": "PASS"
                },
                "reportingStatus": "REPORTED",
                "clearanceStatus": null,
                "qrSellertStatus": null,
                "qrBuyertStatus": null
            }

@wes4m @adriantoro26
Concern about the validations!!

@asim009 ZATCA backend does not validate canceled invoice number. For now at least.

@wes4m
I am facing unique error while reporting the invoice

{
        "infoMessages": [
            {
                "type": "INFO",
                "code": "XSD_ZATCA_VALID",
                "category": "XSD validation",
                "message": "Complied with UBL 2.1 standards in line with ZATCA specifications",
                "status": "PASS"
            }
        ],
        "warningMessages": [],
        "errorMessages": [
            {
                "type": "ERROR",
                "code": "certificate-permissions",
                "category": "CERTIFICATE_ERRORS",
                "message": "Production CSID does not cover Simplified documents",
                "status": "ERROR"
            },
            {
                "type": "ERROR",
                "code": "certificate-permissions",
                "category": "CERTIFICATE_ERRORS",
                "message": "User only allowed to use the vat number that exists in the authentication certificate",
                "status": "ERROR"
            }
        ],
        "status": "ERROR"
    }

is this because of  ZATCA sandbox returns a constant fake production certificate??

@wes4m I am facing unique error while reporting the invoice

{
        "infoMessages": [
            {
                "type": "INFO",
                "code": "XSD_ZATCA_VALID",
                "category": "XSD validation",
                "message": "Complied with UBL 2.1 standards in line with ZATCA specifications",
                "status": "PASS"
            }
        ],
        "warningMessages": [],
        "errorMessages": [
            {
                "type": "ERROR",
                "code": "certificate-permissions",
                "category": "CERTIFICATE_ERRORS",
                "message": "Production CSID does not cover Simplified documents",
                "status": "ERROR"
            },
            {
                "type": "ERROR",
                "code": "certificate-permissions",
                "category": "CERTIFICATE_ERRORS",
                "message": "User only allowed to use the vat number that exists in the authentication certificate",
                "status": "ERROR"
            }
        ],
        "status": "ERROR"
    }

is this because of ZATCA sandbox returns a constant fake production certificate??

Yes the first error when reporting an invoice is because of the expired certificated provided by them, but the second error I've had it too, but not sure why I'm getting it. I'm even using real VAT number and taxpayer data, the only thing that is random/fake is the OTP

I tried with both real and sample VAT number. Still can't able to trace out where is the problem.
OTP(123345) is standard for sandbox as per my understanding may be I am wrong.
@adriantoro26 how about Tax Invoice(Standard) like are you done with it ? I am failing to understand why there is different API'S for B2B and B2C.

0211010

what does the  above code indicates

@asim009
I just copied that value from their simplified tax invoice sample.
Here is the explanation.
The invoice transaction code (KSA-2) must exist and respect the following structure:
NN (positions 1 and 2) = invoice
NNPNESB
where
subtype:
- 01 for tax invoice
- 02 for simplified tax invoice
P (position 3) = 3rd Party invoice transaction, 0 for false, 1 for true
N (position 4) = Nominal invoice transaction, 0 for false, 1 for true
E (position 5) = Exports invoice transaction, 0 for false, 1 for true
S (position 6) = Summary invoice transaction, 0 for false, 1 for true
B (position 7) = Self billed invoice

For 0211010:
02 = Simplified
1 = Tax invoice
1 = Nominal (I should change this to 0)
0 = Not Export
1 = Is summary
0 = Not Self billed


Select Subdomains and Alias

At the moment its only possible to add www and all Subdomains to the Cert. Please make this option selectable!
Its important to define which DNS Entrys used in the cert.

Currently only domain, its aliases and thier 'www.' counterparts and 'webmail.' could be added to certificate SAN. Addon domains and subdomains are secured by their own separtate certificates. New feature suggestions are appreciated at https://plesk.uservoice.com/forums/184549-feature-suggestions/category/82701-security


Create new collection when implying all scopes if none requested

Fixes #1026. When using the provided in-memory client store, or enabling
in-memory client store cache, this prevents the offline_access scope
from being continually added to the Client.AllowedScopes collection when
AllowOfflineAccess = true and no scopes were requested for resource
owner, client credentials, and extension grant types.

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
.NET Foundation Pull Request Bot

Yeah, yeah, I noticed. Already on it. ;-)

Yes, excellent catch. Thanks!


Support edit model registry after it's created

Closes: RHOAIENG-15879
Description
This PR aims to support edit model registry after it's created.

Loading state:

Error, when password fails to load:

How Has This Been Tested?

Go to model registry settings.
Click on kebab action to see Edit model registry.

Test Impact
Added cypress test
Request review criteria:

Self checklist (all need to be checked):

[x] The developer has manually tested the changes and verified that the changes work
[x] Testing instructions have been added in the PR body (for PRs involving changes that are not immediately obvious).
[x] The developer has added tests or explained why testing cannot be added (unit or cypress tests for related changes)

If you have UI changes:

[x] Included any necessary screenshots or gifs if it was a UI change.
[x] Included tags to the UX team if it was a UI/UX change.

After the PR is posted & before it merges:

[ ] The developer has tested their solution on a cluster by using the image produced by the PR to main

@yih-wang could you please take a look at the screenshots?

@ppadti there's a merge conflict here now that https://github.com/opendatahub-io/odh-dashboard/pull/3555 is merged. For now we can ignore those new secure DB fields for prefilling/editing since the submit logic for them isn't implemented yet.

Oops sorry, I forgot to involve content review for the error message above...
@kaedward can you help take a look at the error message in this screen? This message will show up when the password is failed to be pulled from the OpenShift console because the source file in OpenShift is missing (been directly deleted in OpenShift, for example)

Hey Pushpa, the screenshots look good, thank you! Can you add a screenshot to show how the first two fields look like?

Hey @ppadti , the screenshots look good, thank you! Can you add a screenshot to show how the first two fields look like?

@yih-wang sorry, I missed that. Updated the screen shoots.

Thank you @ppadti, looks good to me!


Bugfix time inputs versus time transaction

Tx inputs should NOT be younger than the inputs for the transactions itself.
No value-added, just V4 compatibility. :)

@justinvforvendetta miners gave their thumbs up towards this fix, could you please make your due diligence, thanks <3


Resizing your window on the "Steady State Output" page

Resizing your window on the "Steady State Output" page causes all the graphs to disappear, never to return. I have only tried this in edge and chrome but it breaks in both of them.

Fixed by #24


Editing pass for grammar, spelling, punctuation, and usage.

Also added some links and xrefs.

Thx, looks good to me

Docs deploy is still broken so we don't yet see these changes on a site.


Release 1.0.2 on NuGet

I noticed the latest commit bumped the version to 1.0.2 and added compatibility with netstandard & co, however the latest version on NuGet is still 1.0.1.
Could you push 1.0.2 to NuGet? In the meantime I've compiled and packaged 1.0.2 myself and checked it into my project, but having it come from NuGet directly would be much nicer 🙂

Just pushed the latest to NuGet and the package is currently being validated. Newest version should be available in a day or so.
Thanks for catching this!


Replication stopped working on iOS WiFi mode

I've played a lot with WiFi mode on iOS devices and it worked pretty fine. After some time after uninstalling and installing the same app (Stanton) again I am not able to run the Thali replication.
Here are the logs from 2 iOS devices:
https://gist.github.com/czyzm/a966377f15ae6e956ac3d21290dc3d54
Message from Thali54 sent at about 11:25:10 - not delivered to Thali56.

we assume that the issue has the same root as thaliproject/Thali_CordovaPlugin#1356

@czyzm The link above only appears to have the logs from one device. Where are the logs from the other device? In the log you gave us the messages at 11:25:10 came from the OTHER device. Messages from thaliManager prefixed with 'connected pskIdentity' are incoming, not outgoing messages. The log you shared shows that replication ended. But without seeing more of the log I can't see if replication started again.
Please update Stanton with the thaliPeerPoolOneAtATime.js file from master_1274_trivial and try to re-run the tests. That pool policy will both stop some of the worst behavior and it will provide some better logging on what actions are starting and stopping.
So please update, re-run and provide us with all the device logs and please let the logs run a few minutes past where the bad behavior occurred.

@yaronyg There are logs from 2 devices (Thali54 and Thali56) and I am pretty sure that the message at 11:25:10 was sent from Thali54. I will repeat the test with new peer pool on Monday.

I am not observing the issue any more right now.
I am using Thali_CordovaPlugin from master_1274_trivial (4962c39d13238748d4946fe04e1e2d90cffadc45) with merged installer fix from master_fix-install.
Closing issue.


 I am going to make another change to check not only with startsWith, but some more detailed check. This is a preparation for the change.

Thanks!


{AKS} Fix test test_aks_create_and_update_with_http_proxy_config

This checklist is used to make sure that common guidelines for a pull request are followed.
Fix test test_aks_create_and_update_with_http_proxy_config, the default API version of network/virtualNetworks has been updated from 2022-01-01 to 2024-03-01.
Related command

General Guidelines

[x] Have you run azdev style <YOUR_EXT> locally? (pip install azdev required)
[x] Have you run python scripts/ci/test_index.py -q locally? (pip install wheel==0.30.0 required)
[x] My extension version conforms to the Extension version schema

For new extensions:

[ ] My extension description/summary conforms to the Extension Summary Guidelines.

About Extension Publish
There is a pipeline to automatically build, upload and publish extension wheels.
Once your pull request is merged into main branch, a new pull request will be created to update src/index.json automatically.
You only need to update the version information in file setup.py and historical information in file HISTORY.rst in your PR but do not modify src/index.json.

Thank you for your contribution! We will review the pull request and get back to you soon.

Queued live test, live test passed, failed on replay. So, I manually modified the recording file to avoid blocking the merge of other PRs. I will investigate why the new recording file cannot be replayed when I have time.


feat: thorchain lending utils

Description

Pull Request Type

[ ] :bug: Bug fix (Non-breaking Change: Fixes an issue)
[ ] :hammer_and_wrench: Chore (Non-breaking Change: Doc updates, pkg upgrades, typos, etc..)
[ ] :nail_care: New Feature (Breaking/Non-breaking Change)

Issue (if applicable)

closes #
Risk

Testing

Engineering

Operations

Screenshots (if applicable)

Current dependencies on/for this PR:

develop

PR #5544   👈

This comment was auto-generated by Graphite.


Windows, getting started, running both the server and client on localhost, without Docker

Hi, this is a great project, but I'm having some problems getting started on Windows.
I have downloaded Sish for Windows and I want to try it on my development machine as simply as possible.
For testing I want to forward HTTP port 80 => HTTP port 5000.
I have tried disabling my firewall and also tried many other command line arguments other than those shown below, but always the same error message.
sish --authentication=false
2022/06/24 - 05:32:41 | Starting SSH service on address: localhost:2222
2022/06/24 - 05:32:41 | Loading ssh_key as ssh-ed25519 host key

ssh -p 2222 -R 80:localhost:5000 kurti@localhost
Then the output from the ssh client is:
Press Ctrl-C to close the session.

Warning: remote port forwarding failed for listen port 80

I can see that port 80 has been opened by sish and is listening to localhost/<IP_ADDRESS>/<IP_ADDRESS>.
Does this have something to do with a missing entry for localhost:80 or localhost:5000 in known_hosts?
Here is the debug output from sish:
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:   export GIN_MODE=release
 - using code:  gin.SetMode(gin.ReleaseMode)

2022/06/24 - 05:44:06 | Starting SSH service on address: localhost:2222
[GIN-debug] Loaded HTML Templates (9):
        - console
        - footer
        - header
        - routes.tmpl
        -
        - footer.tmpl
        - header.tmpl
        - routes
        - console.tmpl

2022/06/24 - 05:44:06 | =======Start=========
2022/06/24 - 05:44:06 | ===Goroutines=====
2022/06/24 - 05:44:06 | 12
2022/06/24 - 05:44:06 | ===Listeners======
2022/06/24 - 05:44:06 | ===Clients========
2022/06/24 - 05:44:06 | ===HTTP Clients===
2022/06/24 - 05:44:06 | ===TCP Aliases====
2022/06/24 - 05:44:06 | ===Web Console Routes====
2022/06/24 - 05:44:06 | ===Web Console Tokens====
2022/06/24 - 05:44:06 | ========End==========
2022/06/24 - 05:44:06 | Loading ssh_key as ssh-ed25519 host key
2022/06/24 - 05:44:08 | =======Start=========
2022/06/24 - 05:44:08 | ===Goroutines=====
2022/06/24 - 05:44:08 | 11
2022/06/24 - 05:44:08 | ===Listeners======
2022/06/24 - 05:44:08 | localhost:2222 &{0xc000394780 {<nil> 0}}
2022/06/24 - 05:44:08 | ===Clients========
2022/06/24 - 05:44:08 | ===HTTP Clients===
2022/06/24 - 05:44:08 | ===TCP Aliases====
2022/06/24 - 05:44:08 | ===Web Console Routes====
2022/06/24 - 05:44:08 | ===Web Console Tokens====
2022/06/24 - 05:44:08 | ========End==========
2022/06/24 - 05:44:10 | =======Start=========
2022/06/24 - 05:44:10 | ===Goroutines=====
2022/06/24 - 05:44:10 | 11
2022/06/24 - 05:44:10 | ===Listeners======
2022/06/24 - 05:44:10 | localhost:2222 &{0xc000394780 {<nil> 0}}
2022/06/24 - 05:44:10 | ===Clients========
2022/06/24 - 05:44:10 | ===HTTP Clients===
2022/06/24 - 05:44:10 | ===TCP Aliases====
2022/06/24 - 05:44:10 | ===Web Console Routes====
2022/06/24 - 05:44:10 | ===Web Console Tokens====
2022/06/24 - 05:44:10 | ========End==========
2022/06/24 - 05:44:12 | =======Start=========
2022/06/24 - 05:44:12 | ===Goroutines=====
2022/06/24 - 05:44:12 | 11
2022/06/24 - 05:44:12 | ===Listeners======
2022/06/24 - 05:44:12 | localhost:2222 &{0xc000394780 {<nil> 0}}
2022/06/24 - 05:44:12 | ===Clients========
2022/06/24 - 05:44:12 | ===HTTP Clients===
2022/06/24 - 05:44:12 | ===TCP Aliases====
2022/06/24 - 05:44:12 | ===Web Console Routes====
2022/06/24 - 05:44:12 | ===Web Console Tokens====
2022/06/24 - 05:44:12 | ========End==========
2022/06/24 - 05:44:12 | Accepted SSH connection for: <IP_ADDRESS>:61187
2022/06/24 - 05:44:13 | Main Request Info tcpip-forward true            localhost   P
2022/06/24 - 05:44:13 | Main Channel Info session
2022/06/24 - 05:44:13 | Handling session for connection: &{session [] 0 0 32768 16384 0xc0004157a0 true 0 0xc0004804e0 {0 0} 0xc000480480 false {0xc00041e340 1048576 0 false} 0xc00059a080 0xc00059a100 {0 0} 2097152 {0 0} false map[]}
2022/06/24 - 05:44:13 | Sub Channel Type pty-req true    ♫xterm-256color   �   C  ☻�  ☺�   ♂�  %��  %�
2022/06/24 - 05:44:14 | =======Start=========
2022/06/24 - 05:44:14 | ===Goroutines=====
2022/06/24 - 05:44:14 | 23
2022/06/24 - 05:44:14 | ===Listeners======
2022/06/24 - 05:44:14 | localhost:2222 &{0xc000394780 {<nil> 0}}
2022/06/24 - 05:44:14 | ===Clients========
2022/06/24 - 05:44:14 | <IP_ADDRESS>:61187 &{0xc000004cd8 0xc000488110 0xc0003f93e0 0xc0005450e0 0xc000545140 0xc0005451a0 0  true false  false false false 0xc000545200 true 0xc0003f93d8}
2022/06/24 - 05:44:14 | ===HTTP Clients===
2022/06/24 - 05:44:14 | ===TCP Aliases====
2022/06/24 - 05:44:14 | ===Web Console Routes====
2022/06/24 - 05:44:14 | ===Web Console Tokens====
2022/06/24 - 05:44:14 | ========End==========
2022/06/24 - 05:44:15 | Aborting with error cannot find connection for host: localhost
2022/06/24 - 05:44:15 | localhost |←[90;43m 404 ←[0m|         515µs |       <IP_ADDRESS> |←[97;44m GET     ←[0m /
Error #01: cannot find connection for host: localhost
2022/06/24 - 05:44:16 | =======Start=========
2022/06/24 - 05:44:16 | ===Goroutines=====
2022/06/24 - 05:44:16 | 25
2022/06/24 - 05:44:16 | ===Listeners======
2022/06/24 - 05:44:16 | localhost:2222 &{0xc000394780 {<nil> 0}}
2022/06/24 - 05:44:16 | ===Clients========
2022/06/24 - 05:44:16 | <IP_ADDRESS>:61187 &{0xc000004cd8 0xc000488110 0xc0003f93e0 0xc0005450e0 0xc000545140 0xc0005451a0 0  true false  false false false 0xc000545200 true 0xc0003f93d8}
2022/06/24 - 05:44:16 | ===HTTP Clients===
2022/06/24 - 05:44:16 | ===TCP Aliases====
2022/06/24 - 05:44:16 | ===Web Console Routes====
2022/06/24 - 05:44:16 | ===Web Console Tokens====
2022/06/24 - 05:44:16 | ========End==========

Hey @kurtcodemander!
Looks like you're most of the way there!
sish operates (mainly) in two modes, HTTP(S) vhosting mode and TCP proxying mode. This allows you to deploy hosta.example.com alongside hostb.example.com and sish will know which ssh client to send the traffic to.
TCP proxying means port 80 on the sish server will be forwarded to a specific ssh client, meaning you can't have multiple websites operate on port 80 or 443. Which of the two are you trying to do?
If doing the first option (HTTP(S) vhosting), sish also goes a bit further to reserve some domains to prevent a user from binding them. Mainly localhost as that has a few meanings in ssh tunnels, and is sent when no host is provided. You can set sish to randomly generate a hostname as well. Just note that your hosts entry will need to include this domain so sish knows the hostname for the request. Otherwise, you can allow any domain to be bound and access it over localhost.
There was an issue with listeners being setup on windows though. That's fixed now with v2.4.0, so give that a try and let me know!

Thanks, I'm now using 2.4.0 and I've got a better grasp of how sish works so it's working for me now.


Enabling JS minification breaks the checkout

Enabling JS minification stops the checkout working by changing the request URL to the WorldPay CDN. Normally, the file requested by requirejs is https://cdn.worldpay.com/v1/worldpay.js but if you enable minification it requests https://cdn.worldpay.com/v1/worldpay.min.js which responds with a 403 error.

Having more or less the same problem, when JS minification is enabled the Worldpay payment options disappear from the checkout.

Yes we also have this issue. Someone else raised the same issue in January. Why aren't Worldpay maintaining this module?


Setup new structure of the github repo

We will work on 4 projects in 4 branches:

Verifier
Operator
Commons
Smart contract

Common brach will we be included in other branches as the orphan branch.
All of them will be merged into the branch

After using an orphan branches for a while we decided to use go package references instead


Delete failed payments

Fixes #6318
Failed payments are deleted from channel.db, unless the keep-failed-payments flag is specified in configuration.

Thanks for the PR @tvolk131 :+1:
Please fix the commit messages (reference: https://github.com/lightningnetwork/lnd/blob/master/docs/code_contribution_guidelines.md#ideal-git-commit-structure)
Quick example for one line messages:
"My commit" => "package: my commit"
Also please make sure that checks don't fail (at least one itest should also succeed).

Dang, I thanks for the speedy turnaround on this @bhandras! Looks like the only non-trivial issue is of deleting the payment while some payment shards are still in-flight. I'm hoping to add a test case for this and turn it back to you late tonight, but it might end up being more like tomorrow afternoon.
Also, I apologize for the number of style violations I made... I'm a new contributor and am still getting used to the codebase and style guide. Appreciate you bearing with me :)

Dang, I thanks for the speedy turnaround on this @bhandras! Looks like the only non-trivial issue is of deleting the payment while some payment shards are still in-flight. I'm hoping to add a test case for this and turn it back to you late tonight, but it might end up being more like tomorrow afternoon.

Yeah, the payment lifecycle is really non-trivial and takes some time to fully understand. No need to rush, take your time :)

Also, I apologize for the number of style violations I made... I'm a new contributor and am still getting used to the codebase and style guide. Appreciate you bearing with me :)

No worries. These are just some light rules to make the code look roughly the same readability wise.

@bhandras I addressed all of your comments - however, I don't know how to retroactively change the messages for previous git commits. I didn't see anything in the contribution guide on how to do that, and everything I saw on Google looked like wizard-level git trickery. Is there any resource on how to do this?

Bump! Anything else that needs to be done on my end?

@bhandras I addressed all of your comments - however, I don't know how to retroactively change the messages for previous git commits. I didn't see anything in the contribution guide on how to do that, and everything I saw on Google looked like wizard-level git trickery. Is there any resource on how to do this?

You can try interactive rebase to change history. In this case something like git rebase -i HEAD~5. Then r means reword, s means squash a commit to a prev one, e to edit that commit, p simply to pick as is etc. Once  commit is ready you can git rebase --continue. Maybe if you're not familiar try it on another test branch to get the hang of it.

gg

Bump! Anything else that needs to be done on my end?

Please re-request (in the reviewers list above) when ready for re-review. This notifies reviewers that the PR is ready for another round.

Please re-request (in the reviewers list above) when ready for re-review. This notifies reviewers that the PR is ready for another round.

Gotcha, sorry about that! Will do.

Thank you for the PR! I like that a great amount of effort has been taken into writing the tests! And I've also noticed you've been very active in this repo and want you to know it's very welcomed!

Thanks! It's awesome to be able to contribute to such a meaningful project.

However, there are a few basic aspects before we'd spend time to take a serious look into the PR, specifically for this PR,

the git message doesn't summarize the changes made inside that commit
the git message doesn't have the required format
code is not formatted as required.

Sorry, I should have paid closer attention to the contribution guide! I'll be giving that a very thorough read, and I appreciate y'all bearing with me.

Besides, the original issue is to delete failed attempts when possible, which means it's not only for failed payments as we may have lots of failed attempts but the payment still succeeds.

Ahh I see that now. I can have a PR for that out by tomorrow (implementation was quick, I just need to add some tests). Is this current PR of any value, or should I just scrap it?

Ahh I see that now. I can have a PR for that out by tomorrow (implementation was quick, I just need to add some tests). Is this current PR of any value, or should I just scrap it?

I'd suggest keeping this PR and revising/polishing it as needed since @bhandras and I have already started the review process(maybe also a good opportunity for you to practice git rebase🤓).  It is expected to have multiple review rounds before a PR can be accepted, so please be mentally prepared!
And a few thoughts re deleting failed attempts, with the new flag,

we should delete them for payments that are in the terminal state - failed/settled.
we may need to have a db migration for the old payments created prior to this new flag?

Also the build needs to pass except for the itests as there are known issues in them.

Apologies for the delay on this! Implementation is done, as mentioned previously, I just want to shore up some more test coverage before sending back for review.

@yyforyongyu just want to get some clarification on what you mentioned a few days ago...

What about these two?

And a few thoughts re deleting failed attempts, with the new flag,

we should delete them for payments that are in the terminal state - failed/settled.
we may need to have a db migration for the old payments created prior to this new flag?

Are you suggesting that:

Rather than immediately deleting failed attempts, we should write them to disk. And later, when the payment settles, we iterate through all attempts within the payment and delete the ones that failed.
We want to delete failed attempts from disk right when they fail, but in addition, we want a DB migration that sifts through old payments and cleans up failed attempts.

Maybe a bit confusing, but "failed payments" and "failed payment attempts" are two different things.

I fully understand the conceptual difference between a payment and a payment attempt. I just got a little tripped up while getting familiar with the codebase and accidentally implemented deletion of failed payments rather than failed attempts. Currently this PR does both - that is, it deletes failed payment attempts and failed payments. Should I remove the code that deletes failed payments? Or is that something we want as well?

@yyforyongyu just requested re-review! I have one question about migration. I added migration code that removes all failed payment attempts for previous payments. However, I wasn't quite sure what the most idiomatic way is to read from the config when performing the migration to potentially skip the deletion of these attempts if keepFailedPayments is set. My first thought would be to have syncVersions, which has access to DB.keepFailedPayments, call a new optional parameter on each version in the versions argument which allows the potential to skip that migration. That's kinda a one-off solution thoug, feels a little bit hacky since migrations almost always introduce breaking changes, and therefore should never be skipped.
Another note about the new migration code - I didn't bother adding the ability for this migration to remove failed payments, only payment attempts, since I'm still not certain on whether we even want to remove failed payments. If we do, I will update the migration code to match that behavior.

Yeah we only want to delete failed attempts, not the payments as the users may want them for accounting purposes.

Not trying to push back on this point, but I'm curious what the accounting purpose would be for failed payments. Is it because a MPP can still have shards that individually succeed? In that case, we could delete AMPs that have failed, or MPPs that have failed and have no successful shards, right? Not that we need to address that in this PR, I'm just trying to wrap my head around it.

Not trying to push back on this point, but I'm curious what the accounting purpose would be for failed payments.

Still need to catch up with the above thread, and this PR, but was wondering this myself. The only case I can think of is service wanting to keep track of what % of payments are failed entirely as a sort of health/success metric. In that case, I think that lines up with the proposed keep-failed-payments flag, since those that need that information can opt into retaining it.

Not trying to push back on this point, but I'm curious what the accounting purpose would be for failed payments. Is it because a MPP can still have shards that individually succeed?

If any of the shards succeeds then the payment won't be failed. If the payment is failed then all its shards must have failed.
Imo it's the same reason to keep the settled payments. You make a payment, and you want to later query it to get some info. It's like the history of your transactions I think? Maybe I'm overthinking here, but I think people tend to pay attention when things go wrong. That's why I think we'd better keep the failed attempts for failed payments so it'd be easier to investigate, and they can be deleted via rpc later on. The keep-failed-payments can then take effect on settled payments to save space. Plus I assume most of the payments will be settled so keeping the failed payments won't grow the disk too much.
We could also delete failed attempts for failed payments too, then not that much info is left and the failed payments are more or less empty shells. In that case, we might as well delete the payments themselves too. Maybe this could be accomplished using a different config flag so the operators can easily distinguish and have finer control.

What about a keep-failed-payment-attempts flag to explicitly keep failed attempts, and a delete-failed-payments flag to explicitly delete failed payments?
Also, I want to get feedback on my design approach before I move forward now that I realize that we don't want to wipe failed payment attempts from disk until after the payment settles, rather than immediately upon attempt failure. If I understand correctly, an HTLC could still return as failed after another HTLC for the same payment has settled. If that's the case, then whenever any HTLC attempt is marked as settled or failed, we should delete all failed HTLCs if there are no more in-flight HTLCs for that payment, and at least one of the HTLCs was settled. Here's some quick pseudocode to help clarify:
func (p *PaymentControl) SettleAttempt(hash lntypes.Hash,
	attemptID uint64, settleInfo *HTLCSettleInfo) (*MPPayment, error) {

        // Marks as settled in db.
        // ...

        if containsNoInflightPaymentAttempts(hash) {
                deleteFailedPaymentAttempts(hash)
        }

        // ...
}

func (p *PaymentControl) FailAttempt(hash lntypes.Hash,
	attemptID uint64, failInfo *HTLCFailInfo) (*MPPayment, error) {

        // Marks as settled in db.
        // ...

        if containsNoInflightPaymentAttempts(hash) && containsSettledHTLC(hash) {
                deleteFailedPaymentAttempts(hash)
        }

        // ...
}

@bhandras: review reminder
@tvolk131, remember to re-request review from reviewers when ready

@bhandras: review reminder
@tvolk131, remember to re-request review from reviewers when ready

@bhandras: review reminder
@tvolk131, remember to re-request review from reviewers when ready

@bhandras: review reminder
@tvolk131, remember to re-request review from reviewers when ready

@yyforyongyu sorry for ghosting on this! With travel and family stuff, I let this fall by the wayside... But I'm back!

When deciding on payment state, I think it's better to work on payment level, not attempt level. So the deletion needs to happen inside the lifecycle, after we know the payment is terminated, such as currentState.terminated().

That makes sense to work on the higher-level abstraction of payments instead of payment attempts, since we want to delete the failed attempts when the payment is finished, not when an attempt succeeds. However I would still argue that PaymentControl.SettleAttempt is a better place to delete payment attempts. The current description for the paymentLifecycle struct (which is what calls currentState.terminated()) is:
paymentLifecycle holds all information about the current state of a payment needed to resume if from any point
Deleting failed payment attempts doesn't really relate to the state of a payment - it's more of a persistence detail. Whereas the description for the PaymentControl struct is:
PaymentControl implements persistence for payments and payment attempts
I would argue that deleting failed payment attempts falls much more closely into this definition.
Just my 2 cents - I'm happy to hear any pushback on this point!

@yyforyongyu I radically simplified this PR from what it was originally. And after digging into the code more, I understand what you were talking about with the reference to currentState.terminated(). In the interest of holding each struct to their single responsibility, I added a new method (CleanupPayment) to the ControlTower interface which is called at the payment level and allows the control tower to perform any final persistence-level cleanup actions after the payment lifecycle decides that a payment is in a terminal state.
I also moved the migration code over to another branch, which I'll open a PR for once this PR is merged.

I'm working on a PR to radically change how we manage the payment state

maybe you could help us review that PR🤪

Absolutely! Could you link it here for reference, or shoot a link to me on Slack whenever it's ready?

Just did a fresh rebase! I believe this is ready to submit.

Looks like a syntax error was introduced during the latest rebase:

Error: routing/payment_lifecycle.go:195:25: syntax error: unexpected newline, expecting comma or )

Fixed!

Summarizing part of the discussion below:

Thanks for this summary! I fell off of this PR for a bit, but this helped me go back and trace the evolution of the PR. Sometimes we set out with an initial target, but then later realize either that target isn't really feasible, or may violate some existing invariants in the system.


Cannot import 'EntityId' from partially initialized module

Hi,
I've just imported the tb-rest-client on a fresh virtual environment and attempted to run it.
import logging
from tb_rest_client.rest_client_pe import *
I get the following error:
ImportError: cannot import name 'EntityId' from partially initialized module 'tb_rest_client.models.models_ce' (most likely due to a circular import)
from the file
\env\lib\site-packages\tb_rest_client\models\models_ce\__init__.py
Are there additional prerequisite steps that I need to take for this to work?
Cheers

I've drilled into the error more and found it originates from this line in admin_settings.py
from . import EntityId
If I change this to
from .entity_id import EntityId
I can get past the origional issue.
I then get the following error:
Traceback (most recent call last):
File "c:/Users/path_to_file", line 2, in <module>     from tb_rest_client.rest_client_pe import *
File "C:\Users\path_to_file\env\lib\site-packages\tb_rest_client\rest_client_pe.py", line 26, in <module>     class RestClientPE(RestClientBase):
File "C:\Users\path_to_file\env\lib\site-packages\tb_rest_client\rest_client_pe.py", line 331, in RestClientPE     def load_user_group_permission_infos(self, body: list[GroupPermission]):
TypeError: 'type' object is not subscriptable

I solved my issue. It was annoying.
Steps to solve:

In file: admin_settings_id.py line 17 change from . import EntityId to from .entity_id import EntityId
In file: rest_client_pe.py change all instances of list[str] to "list[str]"
In file: rest_client_ce.py do the same as Step 2.

Going to leave this open for a few days for visability. If possible can some feedback be added here when possible.
Cheers

Hi @JacksonBowe ,
Thank you for your participating, we were used the new generator for REST client and it is really new, so it may produce some issues. We will fix this issue in the client as soon as possible. Thanks.


Support for dynamic width and height

Any plans for support both width and height. Since now it only support if you make vertical it's only height and horizontal is only width

I don't think so, but you can try to do it by yourself, all sources are available


Document heading level adjustment

Document ways to adjust heading levels to different sizes

Where were you thinking of putting this? Adding it to the existing Text Types table?


Can't install VSIX in codespace

Have a GitHub codespace
Have a VSIX in the codespace
Have the VSIX also installed locally
Right click on the VSIX from the explorer to install it
Get notified to reload the codespace to apply the update
:bug: no amount of reloading gets the extension out of this state

Is this extension running when installed locally? Also is this extension running after you right click and installed? After right clicking and installed, is that extension shown installed in codespaces?

It's shown installed in codespaces but it doesn't seem active. It does run when it's installed locally

Yes, https://github.com/jrieken/vscode-tree-sitter-query/blob/main/package.json

package.json seems good. Can you please share the VSIX for me to repro?

Hmm, this worked today... :/ here's the VSIX anyway https://github.com/jrieken/vscode-tree-sitter-query/suites/18020602776/artifacts/1037091221

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!


Added loguru dependency

Ciphey needs Python loguru dependency for working.

Project ceased in favour of https://github.com/bee-san/Ares


[TASK] Integrate Wallet Connection & Account Creation Flow with Dashboard

Description
This task involves integrating the account creation flow with the dashboard to ensure a seamless user experience. The account dashboard will be accessible only to users who have connected their wallet and created an account. When a user selects the 'account' from side nav, they will be prompted to connect their wallet. If they haven't created an account yet, they will be guided through the account creation process.
Note:

The wallet connection and note account creation flow on the bridge dAPP remains consistent. This task is required for accessing dashboard directly via side nav or link.
Should user disconnect wallet whilst in dashboard, we can either redirect to ecosystem page or bridge dapp.

Figma Link
Screenshot

Closed in https://github.com/webb-tools/webb-dapp/pull/1811.


MM-38370-show start trial modal  to admins when 10 users

Summary
This PR adds the logic to automatically show the start trial modal to admins when the defined limit of 10 users is reached. The modal will be shown on-load or if the session is active, the webhook update of the statistics will cause the function to rerender and show the modal.
Ticket Link
https://mattermost.atlassian.net/browse/MM-38370
Related Pull Requests
Screenshots
https://user-images.githubusercontent.com/10082627/137385740-f5ab2517-58b5-4e8f-b3d1-1fdeb3200081.mp4
https://user-images.githubusercontent.com/10082627/137385978-d99f1de0-0b80-4ddc-af28-c7ef867bad62.mp4
Release Note
NONE

Hey @pablovelezvidal I added enough users on the Spinwick to push it past 10 users but nothing happened.
I then deactivated a few (I had 12) to bring it under 10 then reactivated them one by one to see if that would trigger it but it didn't work.
Also, I'm not sure if this is related or not but the user count at the top of the user list still read 12 no matter how many were active or not.

/cherry-pick cloud

Cherry pick is scheduled.


Add redaction profile that modifies dates

Fix #231
Breaking Change
The --strict flag is no longer supported. It has been replaced by --profile strict.
Changes
This PR continues work done to ship more default redaction profiles with Image DePHI. Specifically, a new base set of rules has been created to specially handle all known Date/Time attributes for tiff and DICOM files. These metadata tags are swapped out with semantically meaningful date (e.g. a tag holding a date will still hold a date post redaction), but are made "fuzzy" in the following ways:

Dates: preserve the year, but set the month and day to January 1
Times: set to midnight
UTC Offsets: set to +0000

This redaction operation can be used in user-defined rule sets by specifying "modify_date" as the action for a given tag. If the value for that tag cannot be parsed as the expected type, it will be replaced by None.
Tests have been added for DICOM, Aperio, and tiff files. The tiff file used for testing had to be modified to include the DateTime tag, so the image has been reuploaded to our store, and the hash has been updated in conftest.py.

We need to add tag 323 PlanarConfig to the tags kept in strict mode.

See #244

Should we add a third enum to --profile (probably called standard or default)?

I added "default" as an option in 6d0e056. I think it adds some cohesion by giving the "no profile" mode a name. I made it the default value of --profile as well.


Duplicate identifier for 'field'

If a field is a db relation, and you defined a getAttribute method for it to modify it's result, it gets added to the interface twice.
export interface User {
        id: number;
        first_name: string;
        last_name: string;
        email: string;
        last_session_id: string | null;
        password: string;
        remember_token: string | null;
        created_at: string | null;
        updated_at: string | null;
        active: boolean;
        roles?: Array<App.Role> | null;
        contact?: App.Contact | null;
        employee?: App.Employee | null;
        api_keys?: Array<App.OauthClient> | null;
        hidden_widgets?: Array<App.Widget> | null;
        seen_release_notes?: Array<App.ReleaseNote> | null;
        roles_count?: number | null;
        api_keys_count?: number | null;
        hidden_widgets_count?: number | null;
        seen_release_notes_count?: number | null;
        readonly roles?: any;
        readonly nice_name?: any;
        readonly agreed_to?: any;
        readonly widgets?: any;
        readonly tech_roles?: any;
        readonly metas?: any;
    }

I use getRolesAttribute and now have two roles keys there.

Made a PR with a fix ;)


Use Gradle Wrapper instead of system Gradle for Java

Most Java project use the Gradle Wrapper in order to perform builds. The wrapper is a small downloader provided by gradle, and helps ensure that the same gradle version is used for all builds. In addition, it makes it so gradle doesn't need to be installed on the target system. It is their recommendation to use it to make builds easier and more repeatable.
Would you be willing to accept a PR that moves to that? It's just 3 small files, and would help make the Java portion of the build much easier.

Hi @ThadHouse, thanks for submitting a PR, we are now working on our next release, but we'll review it as soon as we can.


Fix Error in frontend

2_app-4234d03d69ccda9a.js:1 invalid sdk options object passed, falling back to default options ZodError: [
  {
    "code": "invalid_type",
    "expected": "string",
    "received": "undefined",
    "path": [
      "readonlySettings",
      "rpcUrl"
    ],
    "message": "Required"
  }
]
    at V (_app-4234d03d69ccda9a.js:1:1481393)
    at Ie.safeParse (_app-4234d03d69ccda9a.js:1:1483729)
    at Ie.parse (_app-4234d03d69ccda9a.js:1:1483326)
    at new RPCConnectionHandler (_app-4234d03d69ccda9a.js:1:1902744)
    at new UserWallet (_app-4234d03d69ccda9a.js:1:2133069)
    at _app-4234d03d69ccda9a.js:1:2262434
    at Object.Go [as useMemo] (framework-49f1e091cbf6b261.js:1:67605)
    at n.useMemo (framework-49f1e091cbf6b261.js:1:136649)
    at useBalance (_app-4234d03d69ccda9a.js:1:2262415)
    at I (344-1c0f556cb62d1008.js:1:3065)

This happens when connecting to metamask

It seems like this is happing in thirdweb library.
since we are using wagmi wrapped in thirdweb, so try to replace thirdweb by wagmi

wagmi not supporting react 18 well now.
https://github.com/tmm/wagmi/issues/307
Need to make state wrapper for wagmi

it takes to long to investigate, I stop at
https://github.com/kaguraswap/monorepo/pull/163

this is fixed by wagmi replacement


feat: add initialize and shutdown behavior

Add initialize and shutdown behavior
This PR adds the behavior of the feature provider mutator of the OpenFeatureAPI class to call initialize() and shutdown() of the set/replaced feature provider. It provides the implementation for the requirements <IP_ADDRESS> and <IP_ADDRESS>.
Related Issues
Fixes #449
Notes
I chose option 3 as described in #449, the asynchronous option to be implemented. This makes sure, there are no nasty delays in the application startup.
I also chose to provider empty default implementations for initialize() and shutdown() in the FeatureProvider interface, to be as backward compatible as possible.
Follow-up Tasks
This PR doesn't implement the client events as described in #440. Depending on the implementation, the tests might need be changed. Hence, I created a helper class FeatureProviderTestUtils which encapsulates the new async nature of the provider mutator.
How to test
Unit and spec tests are provided.

I think we need a API shutdown method: as specified in 1.6.1. This method would basically just call shutdown on all providers to cleanly exit for a graceful shutdown.

This looks good to me. I think this needs to be added. Though it could be done in a separate PR, it's related-enough to be worth implementing here. The testing looks good.
I'd like your insight on this. The same thing came up in the JS-SDK implementation and I'm wondering if we don't need to slightly tighten the spec requirement here. Not a blocker for this PR but very interested in your opinion.

@open-feature/sdk-java-approvers @open-feature/sdk-java-maintainers

@toddbaert , how can i retrigger the build. it failed, as it didn't find the api key for codecov for whatever reason... 🤔

@toddbaert , how can i retrigger the build. it failed, as it didn't find the api key for codecov for whatever reason... 🤔

Retriggered and seems a GH glitch

Had an initial look and implementation and especially the tests are inspiring to review :)
Left one remark to follow-up

@toddbaert , how can i retrigger the build. it failed, as it didn't find the api key for codecov for whatever reason... thinking

Retriggered and seems a GH glitch

Ya it's very annoying but sometimes when codecov gets busy it throws this error, which is a total red herring.

I think this is good to merge after this.

@toddbaert, @Kavindu-Dodan i addressed the comments, pls re-review


Release to hackage

What is the status of https://github.com/tomjaguarpaw/product-profunctors/commits/fieldnames? It would be really handy to release opaleye-gen to Hackage :)
cc @folsen

For countable-inflections see https://github.com/folsen/opaleye-gen/pull/9

I personally have no strong feeling either way about publishing to hackage. On one hand, I don't really see the point because it's not really a library that you depend on in a cabal file, and most likely you'll need to tweak the code a little bit to your specific purpose and desires (unless you're in the exact same case as me when I wrote this of migrating a Rails DB to opaleye).
But on the other hand, having it on hackage makes it more visible and you can cabal install the binary, so ¯_(ツ)_/¯
If you really want it there I can push it up.

I think it can't do harm. For NixOS we'll have the binary for the opaleye-gen, so that's one positive side of it.

@folsen before we do that we still need a release of product-profunctors with https://github.com/tomjaguarpaw/product-profunctors/commits/fieldnames

Here we go: https://github.com/tomjaguarpaw/product-profunctors/pull/25

All dependencies are ready for opaleye-gen to be released on hackage :)

Having a busy week, but I'll push it up some time soon! I haven't forgotten about this :P


invoke peek commands using command palette (not keybindings)

I need to invoke the following using command palette (not keybindings).
peek definition
peek implementation
peek declaration
peek reference
peek type definition

To give some context, I can not remember all these keybindings. So, It will be great to have one keybinding to invoke them all. So, I am trying to use:
 {
     "key": "ctrl+b",
     "command": "workbench.action.quickOpen",
     "args": "Peek"
 }

But it seems like Peek does not yield relevant commands in the command pallet.

If you use the following it will work. (need to enter command mode by using >)
 {
     "key": "ctrl+b",
     "command": "workbench.action.quickOpen",
     "args": "> Peek"
 }


No support for setBroadcast

Hi,
It appears 'setBroadcast' is in the API documents but not in the actual API itself.  Do you know when this will be available?
https://developer.chrome.com/apps/sockets_udp#method-setBroadcast

Those docs are for the "real" chrome apps platform for desktop/chromeos.
This plugin is an attempted port of that api, so some of those docs apply, but often they are out of sync.
setBroadcast is indeed not implemented in this plugin (I think it was added after this plugin was written), and there is no longer any active support for this plugin.  (See this project status update)

Okay, thanks for the update.  Can you add a note to the readme that notes the plugin is no longer supported?

Hi,@digitalcatnip . I  have the same  trouble, that no support for setBroadcast . Do you resolve the question? Thanks a lot .

@ivan3619 I ended up forking a different project, adding the iOS support, and using that in my project.

i've added setBroadcast for both iOS and Android in my fork...i'm hoping this will be merged with the main repo soon.
In the meantime, you could add my fork instead of the main:
cordova plugin add https://github.com/gregvis/cordova-plugin-chrome-apps-sockets-udp.git

I've merged in @gregvis's fix and published the plugin as v1.3.0


Support scoped modules

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


WFLY-14061 Replace Java EE references in java doc with corresponding Jakarta EE ones (overall check)

Issue: https://issues.redhat.com/browse/WFLY-14061
Link with: https://github.com/wildfly/wildfly/pull/13808

Sorry for this PR! Closing it.


Start observing called earlier than scanSensors?

Seems so that start observers is called at the very start when ScienceJournal starts and then only later the scan Sensors.
The way I do it that ScanSensors first checks if the bluetooth dev is paired, then populates behaviour etc.
The in startObserving I use the bluetooth dev which I've found in ScanSensors. That fails because scanSensors hasn't been called.
When I press "retry" then that works because then the ScanSensors has been executed.
I can avoid this by moving the bluetooth detection also in the observer and do it at least once but that feels not right. What's the best approach of doing it? I'm pretty sure that before the update last week that order was the other way around.
From line 210:
https://github.com/glasgowneuro/AttysPlot/blob/master/app/src/main/java/tech/glasgowneuro/www/attysplot/Attys2ScienceJournal.java
Log (starting program, then fails, then I press retry and then it works):
`10-18 00:42:10.008 565-841/tech.glasgowneuro.www.attysplot D/Attys2ScienceJournal: Start observing on sensorID:7
10-18 00:42:10.008 565-841/tech.glasgowneuro.www.attysplot D/Attys2ScienceJournal: Finding paired attys
10-18 00:42:10.010 565-613/tech.glasgowneuro.www.attysplot D/Attys2ScienceJournal: Start observing on sensorID:6
10-18 00:42:10.010 565-613/tech.glasgowneuro.www.attysplot D/Attys2ScienceJournal: Finding paired attys
10-18 00:42:10.012 565-841/tech.glasgowneuro.www.attysplot D/Attys2ScienceJournal: Found an Attys as a paired device
10-18 00:42:10.013 565-613/tech.glasgowneuro.www.attysplot D/Attys2ScienceJournal: Found an Attys as a paired device
10-18 00:42:10.015 565-4265/tech.glasgowneuro.www.attysplot V/AttysComm: Got rfComm socket!
10-18 00:42:10.114 565-4264/tech.glasgowneuro.www.attysplot W/BluetoothAdapter: getBluetoothService() called with no BluetoothManagerCallback
10-18 00:42:10.115 565-4265/tech.glasgowneuro.www.attysplot W/BluetoothAdapter: getBluetoothService() called with no BluetoothManagerCallback
10-18 00:42:10.387 565-4264/tech.glasgowneuro.www.attysplot W/BluetoothAdapter: getBluetoothService() called with no BluetoothManagerCallback
10-18 00:42:10.455 565-4265/tech.glasgowneuro.www.attysplot D/Attys2ScienceJournal: Retrying to connect
10-18 00:42:10.555 565-4265/tech.glasgowneuro.www.attysplot W/BluetoothAdapter: getBluetoothService() called with no BluetoothManagerCallback
10-18 00:42:10.828 565-4264/tech.glasgowneuro.www.attysplot W/BluetoothAdapter: getBluetoothService() called with no BluetoothManagerCallback
10-18 00:42:10.830 565-4264/tech.glasgowneuro.www.attysplot D/AttysComm: Could not establish connection to Attys: read failed, socket might closed or timeout, read ret: -1
10-18 00:42:10.833 565-4264/tech.glasgowneuro.www.attysplot E/AttysComm: Could not get streams
                                                                         java.io.IOException: java.io.IOException: read failed, socket might closed or timeout, read ret: -1
                                                                             at tech.glasgowneuro.www.attysplot.AttysComm.connectToAttys(AttysComm.java:577)
                                                                             at tech.glasgowneuro.www.attysplot.AttysComm.run(AttysComm.java:803)
                                                                          Caused by: java.io.IOException: read failed, socket might closed or timeout, read ret: -1
                                                                             at android.bluetooth.BluetoothSocket.readAll(BluetoothSocket.java:684)
                                                                             at android.bluetooth.BluetoothSocket.waitSocketSignal(BluetoothSocket.java:643)
                                                                             at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:377)
                                                                             at tech.glasgowneuro.www.attysplot.AttysComm.connectToAttys(AttysComm.java:559)
                                                                             at tech.glasgowneuro.www.attysplot.AttysComm.run(AttysComm.java:803)
10-18 00:42:10.889 565-4265/tech.glasgowneuro.www.attysplot D/AttysComm: Last resort: we try the hidden API
10-18 00:42:10.990 565-4265/tech.glasgowneuro.www.attysplot W/BluetoothAdapter: getBluetoothService() called with no BluetoothManagerCallback
10-18 00:42:10.993 565-4265/tech.glasgowneuro.www.attysplot D/AttysComm: Could not establish connection to Attys: read failed, socket might closed or timeout, read ret: -1
10-18 00:42:10.993 565-4265/tech.glasgowneuro.www.attysplot E/AttysComm: Could not get streams
                                                                         java.io.IOException: java.io.IOException: read failed, socket might closed or timeout, read ret: -1
                                                                             at tech.glasgowneuro.www.attysplot.AttysComm.connectToAttys(AttysComm.java:577)
                                                                             at tech.glasgowneuro.www.attysplot.AttysComm.run(AttysComm.java:803)
                                                                          Caused by: java.io.IOException: read failed, socket might closed or timeout, read ret: -1
                                                                             at android.bluetooth.BluetoothSocket.readAll(BluetoothSocket.java:684)
                                                                             at android.bluetooth.BluetoothSocket.waitSocketSignal(BluetoothSocket.java:643)
                                                                             at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:377)
                                                                             at tech.glasgowneuro.www.attysplot.AttysComm.connectToAttys(AttysComm.java:559)
                                                                             at tech.glasgowneuro.www.attysplot.AttysComm.run(AttysComm.java:803)
10-18 00:42:17.564 565-612/tech.glasgowneuro.www.attysplot D/Attys2ScienceJournal: Keep connection alive.
10-18 00:42:17.584 565-841/tech.glasgowneuro.www.attysplot D/Attys2ScienceJournal: Start observing on sensorID:6
10-18 00:42:19.569 565-613/tech.glasgowneuro.www.attysplot D/Attys2ScienceJournal: shutting down sensor 7.
10-18 00:42:19.569 565-613/tech.glasgowneuro.www.attysplot D/Attys2ScienceJournal: Keep connection alive.
10-18 00:42:19.590 565-661/tech.glasgowneuro.www.attysplot D/Attys2ScienceJournal: Start observing on sensorID:7
`

You shouldn't rely on the scan to be happening before start observing. If you have the Bluetooth address, then call BluetoothAdapter#getRemoteDevice(String) to get the BluetoothDevice, then you can set up your behavior from there.

You mean everything relating to establishing an active bluetooth connection should happen basically within startObserving? That's the way I've coded it just now. Start observing is called per sensor whereas scanSensors is essentially called per (bluetooth-)device (?). Would make more sense to get the bluetooth device there and then use it in startObserving?
If the scan where only run after calling the settings menu then I'd understand that everything had to be in startObserving but since it's also called every time I start scienceJournal it could host the call to get the bluetooth device?
Either way happy to have everything in startObserving. Just trying to understand what the idea is behind it to get it right.

It's not a big deal. I've sorted it. Just made the bluetoothDevice a local variable in both methods so they can work independently. thanks for your reply!


Fix gemma 1 and 2 support

Summary

Right now for gemma:

Gemma1 and 1.1 can be fully supported (FLCE included). Gemma 1, though using hidden_act="gelu" in their config, is actually gonna use tanh approximation because this is ignored in model code
Gemma2 can be supported without FLCE. That's because Gemma2 has a soft capping after lm_head. Thanks a lot @DocShotgun for pointing this out! We have a TODO item for doing it properly.

Testing Done

Hardware Type:
[x] run make test to ensure correctness
[x] run make checkstyle to ensure code style
[x] run make test-convergence to ensure convergence

yeah eventually we can just keep gemma2 🤔


Add various GDScript, core, GUI and physics benchmarks

Make idle and physics time measurements somewhat functional, given what the engine exposes. To improve upon this, we need to add an Engine method that returns the time actually spent processing in the last idle/physics frame.

Results JSON:
{"benchmarks":[{"category":"Core > Callable","name":"Function Callable","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":259.7}},{"category":"Core > Callable","name":"Lambda Inline Callable","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":182.9}},{"category":"Core > Callable","name":"Lambda Variable Callable","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":59.78}},{"category":"Core > Crypto","name":"Generate 10 Random Bytes","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":16.35}},{"category":"Core > Crypto","name":"Generate 1g Random Bytes","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":501.5}},{"category":"Core > Crypto","name":"Generate 1k Random Bytes","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":94.5}},{"category":"Core > Crypto","name":"Generate 1m Random Bytes","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":8.502}},{"category":"Core > Crypto","name":"Generate Rsa 2048","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":141.1}},{"category":"Core > Crypto","name":"Generate Rsa 4096","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":1259}},{"category":"Core > Random Number Generator","name":"Global Scope Randf","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":72.95}},{"category":"Core > Random Number Generator","name":"Global Scope Randf Range","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":153.9}},{"category":"Core > Random Number Generator","name":"Global Scope Randfn","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":375.4}},{"category":"Core > Random Number Generator","name":"Global Scope Randi","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":70.69}},{"category":"Core > Random Number Generator","name":"Global Scope Randi Range","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":110.3}},{"category":"Core > Random Number Generator","name":"Global Scope Randomize","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":345.4}},{"category":"Core > Random Number Generator","name":"Randf","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":146.5}},{"category":"Core > Random Number Generator","name":"Randf Range","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":172.9}},{"category":"Core > Random Number Generator","name":"Randfn","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":365.3}},{"category":"Core > Random Number Generator","name":"Randi","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":118.2}},{"category":"Core > Random Number Generator","name":"Randi Range","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":149.3}},{"category":"Core > Random Number Generator","name":"Randomize","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":411.3}},{"category":"Core > Signal","name":"Emission Params 0","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":190.6}},{"category":"Core > Signal","name":"Emission Params 1","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":191.8}},{"category":"Core > Signal","name":"Emission Params 10","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":213}},{"category":"Gdscript > Alloc","name":"Deep Tree","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":141.1}},{"category":"Gdscript > Alloc","name":"Duplicate","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":830.2}},{"category":"Gdscript > Alloc","name":"Fragmentation","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":1719}},{"category":"Gdscript > Alloc","name":"Wide Tree","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":98.75}},{"category":"Gdscript > Array","name":"Fill Loop","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":196.9}},{"category":"Gdscript > Array","name":"Fill Method","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":81.83}},{"category":"Gdscript > Array","name":"Packed Color Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":223.7}},{"category":"Gdscript > Array","name":"Packed Float 32 Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":55.6}},{"category":"Gdscript > Array","name":"Packed Float 64 Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":111.6}},{"category":"Gdscript > Array","name":"Packed Int 32 Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":55.19}},{"category":"Gdscript > Array","name":"Packed Int 64 Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":111.3}},{"category":"Gdscript > Array","name":"Packed String Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":254.6}},{"category":"Gdscript > Array","name":"Packed Vector 2 Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":112}},{"category":"Gdscript > Array","name":"Packed Vector 3 Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":167.9}},{"category":"Gdscript > Array","name":"Typed Color Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":1022}},{"category":"Gdscript > Array","name":"Typed Float Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":1020}},{"category":"Gdscript > Array","name":"Typed Int Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":943.5}},{"category":"Gdscript > Array","name":"Typed String Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":1384}},{"category":"Gdscript > Array","name":"Typed Vector 2 Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":934.1}},{"category":"Gdscript > Array","name":"Typed Vector 3 Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":1115}},{"category":"Gdscript > Array","name":"Untyped Color Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":1029}},{"category":"Gdscript > Array","name":"Untyped Float Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":1025}},{"category":"Gdscript > Array","name":"Untyped Int Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":945.9}},{"category":"Gdscript > Array","name":"Untyped String Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":1388}},{"category":"Gdscript > Array","name":"Untyped Vector 2 Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":938.4}},{"category":"Gdscript > Array","name":"Untyped Vector 3 Array","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":1129}},{"category":"Gdscript > String Checksum","name":"Md 5 Buffer Empty","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":144.7}},{"category":"Gdscript > String Checksum","name":"Md 5 Buffer Non Empty","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":506}},{"category":"Gdscript > String Checksum","name":"Md 5 Text Empty","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":516.4}},{"category":"Gdscript > String Checksum","name":"Md 5 Text Non Empty","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":874.1}},{"category":"Gdscript > String Checksum","name":"Sha 1 Buffer Empty","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":134.1}},{"category":"Gdscript > String Checksum","name":"Sha 1 Buffer Non Empty","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":447}},{"category":"Gdscript > String Checksum","name":"Sha 1 Text Empty","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":566}},{"category":"Gdscript > String Checksum","name":"Sha 1 Text Non Empty","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":899.2}},{"category":"Gdscript > String Checksum","name":"Sha 256 Buffer Empty","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":224.5}},{"category":"Gdscript > String Checksum","name":"Sha 256 Buffer Non Empty","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":773.6}},{"category":"Gdscript > String Checksum","name":"Sha 256 Text Empty","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":903.8}},{"category":"Gdscript > String Checksum","name":"Sha 256 Text Non Empty","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":1470}},{"category":"Gdscript > String Format","name":"Complex Variable Concatenate","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":1304}},{"category":"Gdscript > String Format","name":"Complex Variable Method","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":2743}},{"category":"Gdscript > String Format","name":"Complex Variable Percent","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":2543}},{"category":"Gdscript > String Format","name":"Simple Constant Concatenate","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":3.214}},{"category":"Gdscript > String Format","name":"Simple Constant Method","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":675.6}},{"category":"Gdscript > String Format","name":"Simple Constant Percent","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":3.189}},{"category":"Gdscript > String Format","name":"Simple Variable Concatenate","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":148.5}},{"category":"Gdscript > String Format","name":"Simple Variable Method","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":671.5}},{"category":"Gdscript > String Format","name":"Simple Variable Percent","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":446.4}},{"category":"Gdscript > String Manipulation","name":"Begins With","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":9.738}},{"category":"Gdscript > String Manipulation","name":"Bigrams","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":676.3}},{"category":"Gdscript > String Manipulation","name":"Capitalize","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":686.2}},{"category":"Gdscript > String Manipulation","name":"Casecmp To","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":9.466}},{"category":"Gdscript > String Manipulation","name":"Contains","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":9.508}},{"category":"Gdscript > String Manipulation","name":"Contains Gdscript In","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":3.189}},{"category":"Gdscript > String Manipulation","name":"Count","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":157.4}},{"category":"Gdscript > String Manipulation","name":"Countn","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":245}},{"category":"Gdscript > String Manipulation","name":"Ends With","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":9.072}},{"category":"Gdscript > String Manipulation","name":"Find","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":25.05}},{"category":"Gdscript > String Manipulation","name":"Findn","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":41.6}},{"category":"Gdscript > String Manipulation","name":"Get Slice","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":65.1}},{"category":"Gdscript > String Manipulation","name":"Get Slice Count","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":23.17}},{"category":"Gdscript > String Manipulation","name":"Humanize Size","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":1835}},{"category":"Gdscript > String Manipulation","name":"Insert","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":204.5}},{"category":"Gdscript > String Manipulation","name":"Is Valid Filename","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":793.5}},{"category":"Gdscript > String Manipulation","name":"Lpad","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":158.9}},{"category":"Gdscript > String Manipulation","name":"Naturalnocasecmp To","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":8.733}},{"category":"Gdscript > String Manipulation","name":"Nocasecmp To","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":23.88}},{"category":"Gdscript > String Manipulation","name":"Pad Decimals","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":375}},{"category":"Gdscript > String Manipulation","name":"Pad Decimals Pre Constructed","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":79.82}},{"category":"Gdscript > String Manipulation","name":"Pad Zeros","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":369.6}},{"category":"Gdscript > String Manipulation","name":"Pad Zeros Pre Constructed","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":276.3}},{"category":"Gdscript > String Manipulation","name":"Rfind","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":34.78}},{"category":"Gdscript > String Manipulation","name":"Rfindn","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":99.55}},{"category":"Gdscript > String Manipulation","name":"Rpad","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":115.6}},{"category":"Gdscript > String Manipulation","name":"Rsplit","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":317.5}},{"category":"Gdscript > String Manipulation","name":"Similarity","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":615.6}},{"category":"Gdscript > String Manipulation","name":"Simplify Path","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":1007}},{"category":"Gdscript > String Manipulation","name":"Split","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":293.7}},{"category":"Gdscript > String Manipulation","name":"Split Floats","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":156.9}},{"category":"Gdscript > String Manipulation","name":"Substr","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":49.25}},{"category":"Gdscript > String Manipulation","name":"To Camel Case","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":163.4}},{"category":"Gdscript > String Manipulation","name":"To Lower","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":139.4}},{"category":"Gdscript > String Manipulation","name":"To Pascal Case","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":844.8}},{"category":"Gdscript > String Manipulation","name":"To Snake Case","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":461.8}},{"category":"Gdscript > String Manipulation","name":"To Utf 16 Buffer","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":112.1}},{"category":"Gdscript > String Manipulation","name":"To Utf 32 Buffer","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":76.21}},{"category":"Gdscript > String Manipulation","name":"To Utf 8 Buffer","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":110.2}},{"category":"Gdscript > String Manipulation","name":"To Wchar Buffer","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":74.94}},{"category":"Gdscript > String Manipulation","name":"Uri Decode","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":546}},{"category":"Gdscript > String Manipulation","name":"Uri Encode","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":257.2}},{"category":"Gdscript > String Manipulation","name":"Validate Filename","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":1345}},{"category":"Gdscript > String Manipulation","name":"Validate Node Name","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":69.1}},{"category":"Gdscript > String Manipulation","name":"Xml Escape","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":420.2}},{"category":"Gdscript > String Manipulation","name":"Xml Unescape","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":69.04}},{"category":"Gui > Label","name":"Label","results":{"idle":0,"physics":0,"render_cpu":1.343,"render_gpu":1.944,"time":0.067}},{"category":"Gui > Label","name":"Label Autowrap Arbitrary","results":{"idle":0,"physics":0,"render_cpu":1.317,"render_gpu":1.784,"time":0.085}},{"category":"Gui > Label","name":"Label Autowrap Smart","results":{"idle":0,"physics":0,"render_cpu":1.317,"render_gpu":1.793,"time":0.065}},{"category":"Gui > Label","name":"Label Autowrap Word","results":{"idle":0,"physics":0,"render_cpu":1.315,"render_gpu":1.815,"time":0.064}},{"category":"Physics > Rigid Body 3d","name":"7500 Rigid Body 3d Shared Box Shape","results":{"idle":48.62,"physics":56.74,"render_cpu":0,"render_gpu":0,"time":23.58}},{"category":"Physics > Rigid Body 3d","name":"7500 Rigid Body 3d Shared Sphere Shape","results":{"idle":45.96,"physics":52.42,"render_cpu":0,"render_gpu":0,"time":24.05}},{"category":"Physics > Rigid Body 3d","name":"7500 Rigid Body 3d Unique Box Shape","results":{"idle":47.33,"physics":42.87,"render_cpu":0,"render_gpu":0,"time":25.58}},{"category":"Physics > Rigid Body 3d","name":"7500 Rigid Body 3d Unique Sphere Shape","results":{"idle":47.69,"physics":28.33,"render_cpu":0,"render_gpu":0,"time":25.65}},{"category":"Rendering > Culling","name":"Basic Cull","results":{"idle":0,"physics":0,"render_cpu":0.7463,"render_gpu":1.521,"time":0.159}},{"category":"Rendering > Culling","name":"Directional Light Cull","results":{"idle":0,"physics":0,"render_cpu":2.064,"render_gpu":2.094,"time":0.039}},{"category":"Rendering > Culling","name":"Dynamic Cull","results":{"idle":0,"physics":0,"render_cpu":4.1,"render_gpu":1.522,"time":0.018}},{"category":"Rendering > Culling","name":"Dynamic Light Cull","results":{"idle":0,"physics":0,"render_cpu":1.901,"render_gpu":1.687,"time":0.017}},{"category":"Rendering > Culling","name":"Dynamic Light Cull With Shadows","results":{"idle":0,"physics":0,"render_cpu":7.857,"render_gpu":2.556,"time":0.017}},{"category":"Rendering > Culling","name":"Static Light Cull","results":{"idle":0,"physics":0,"render_cpu":1.83,"render_gpu":1.637,"time":0.017}},{"category":"Rendering > Hlod","name":"Aaa Setup","results":{"idle":0,"physics":0,"render_cpu":0,"render_gpu":0,"time":1955}},{"category":"Rendering > Hlod","name":"Cull Deep","results":{"idle":0,"physics":0,"render_cpu":0.5718,"render_gpu":0.6491,"time":244.6}},{"category":"Rendering > Hlod","name":"Cull Fast","results":{"idle":0,"physics":0,"render_cpu":0.4472,"render_gpu":0.644,"time":54.87}},{"category":"Rendering > Hlod","name":"Cull Slow","results":{"idle":0,"physics":0,"render_cpu":0.435,"render_gpu":0.6434,"time":55.43}},{"category":"Rendering > Hlod","name":"Flat Deep","results":{"idle":0,"physics":0,"render_cpu":0.5743,"render_gpu":0.791,"time":214.4}},{"category":"Rendering > Hlod","name":"Flat Fast","results":{"idle":0,"physics":0,"render_cpu":0.4859,"render_gpu":0.7943,"time":54.01}},{"category":"Rendering > Hlod","name":"Flat Slow","results":{"idle":0,"physics":0,"render_cpu":0.4751,"render_gpu":0.787,"time":54.93}},{"category":"Rendering > Lights And Meshes","name":"Box 100","results":{"idle":0,"physics":0,"render_cpu":0.9782,"render_gpu":1.666,"time":0.529}},{"category":"Rendering > Lights And Meshes","name":"Box 1000","results":{"idle":0,"physics":0,"render_cpu":0.6741,"render_gpu":1.578,"time":4.096}},{"category":"Rendering > Lights And Meshes","name":"Box 10000","results":{"idle":0,"physics":0,"render_cpu":2.985,"render_gpu":1.4,"time":36.32}},{"category":"Rendering > Lights And Meshes","name":"Omni 10","results":{"idle":0,"physics":0,"render_cpu":0.6392,"render_gpu":1.499,"time":4.23}},{"category":"Rendering > Lights And Meshes","name":"Omni 100","results":{"idle":0,"physics":0,"render_cpu":0.8711,"render_gpu":1.491,"time":4.321}},{"category":"Rendering > Lights And Meshes","name":"Speed Fast","results":{"idle":0,"physics":0,"render_cpu":0.6909,"render_gpu":1.44,"time":3.841}},{"category":"Rendering > Lights And Meshes","name":"Speed Slow","results":{"idle":0,"physics":0,"render_cpu":0.667,"render_gpu":1.657,"time":3.842}},{"category":"Rendering > Lights And Meshes","name":"Sphere 100","results":{"idle":0,"physics":0,"render_cpu":0.3748,"render_gpu":1.253,"time":1.339}},{"category":"Rendering > Lights And Meshes","name":"Sphere 1000","results":{"idle":0,"physics":0,"render_cpu":0.6702,"render_gpu":1.517,"time":4.365}},{"category":"Rendering > Lights And Meshes","name":"Sphere 10000","results":{"idle":0,"physics":0,"render_cpu":2.912,"render_gpu":3.038,"time":37.17}},{"category":"Rendering > Lights And Meshes","name":"Spot 10","results":{"idle":0,"physics":0,"render_cpu":0.6692,"render_gpu":0.9828,"time":3.951}},{"category":"Rendering > Lights And Meshes","name":"Spot 100","results":{"idle":0,"physics":0,"render_cpu":1.028,"render_gpu":1.309,"time":4.326}},{"category":"Rendering > Lights And Meshes","name":"Stress","results":{"idle":0,"physics":0,"render_cpu":6.433,"render_gpu":3.102,"time":37.06}},{"category":"Rendering > Polygon Sprite 2d","name":"1000 Polygon 2d","results":{"idle":0,"physics":0,"render_cpu":0.2081,"render_gpu":0.09743,"time":0.175}},{"category":"Rendering > Polygon Sprite 2d","name":"100 Polygon 2d","results":{"idle":0,"physics":0,"render_cpu":0.02598,"render_gpu":0.03176,"time":0.071}},{"category":"Rendering > Polygon Sprite 2d","name":"10 Polygon 2d","results":{"idle":0,"physics":0,"render_cpu":0.009766,"render_gpu":0.1266,"time":0.085}},{"category":"Rendering > Polygon Sprite 2d","name":"5000 Sprite 2d","results":{"idle":0,"physics":0,"render_cpu":0.6547,"render_gpu":3.264,"time":0.019}},{"category":"Rendering > Polygon Sprite 2d","name":"500 Sprite 2d","results":{"idle":0,"physics":0,"render_cpu":0.06718,"render_gpu":0.3009,"time":0.016}},{"category":"Rendering > Polygon Sprite 2d","name":"50 Sprite 2d","results":{"idle":0,"physics":0,"render_cpu":0.01262,"render_gpu":0.05521,"time":0.011}}],"engine":{"binary_size":1638863168,"build_type":"editor","version":"v4.1.dev.custom_build","version_hash":"8c729f0f34a92b92a1a8204e1d56b6ad05cfd27b"},"system":{"cpu_architecture":"x86_64","cpu_count":32,"cpu_name":"13th Gen Intel(R) Core(TM) i9-13900K","gpu_name":"NVIDIA GeForce RTX 4090","gpu_vendor":"NVIDIA","os":"Linux"}}

@myaaaaaaaaa Could you review this PR when you have time? Thanks in advance :slightly_smiling_face:

Since 4.2.dev2 (and in latest master), I get the following error when using --run-benchmarks:
Running benchmark 1 of 159: core/callable/function_callable
ERROR: Parent node is busy adding/removing children, `remove_child()` can't be called at this time. Consider using `remove_child.call_deferred(child)` instead.
   at: remove_child (scene/main/node.cpp:1417)
Running benchmark 2 of 159: core/callable/lambda_inline_callable
SCRIPT ERROR: Cannot call method 'get_child_count' on a null value.
          at: run_test (res://manager.gd:117)
Running benchmark 3 of 159: core/callable/lambda_variable_callable
SCRIPT ERROR: Cannot call method 'get_child_count' on a null value.
          at: run_test (res://manager.gd:117)

This is consistently reproducible with any benchmark. If I use the GUI, the first error doesn't appear but subsequent script errors do.

Tested on 4.2.dev c495eb510 following the merge of https://github.com/godotengine/godot-benchmarks/pull/35, all benchmarks run correctly.


Use a lookup table to calculate the number of days in a month

Fixes https://github.com/flutter/flutter/issues/10541

@Hixie

Needs tests, then LGTM.

done - PTAL


Feature automate generation

Summary
This PR introduces a GitHub Action that automates the generation of coded connectors 💯
Every Monday at 00:00 this action should generate the typescript files using the latest data found in Slack.

If there are no changes the action will do nothing
If there are  changes the action will commit them and open a PR similar to this example

Here is an example of this GitHub Action successfully opening a PR under the Github Action App created for the repo
Testing

Fork this repo and the feature-automation-generation branch
In .github/workflows/generate.yml changeon:
    schedule:
        # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule
        # Runs every Monday at 00:00
        - cron:  '0 0 * * 1'

To something likeon:
    push:
        branches: [ main ]

Push the changes to your forked repos main branch
Monitor the Actions section of your forked repo

Requirements

[x] I've read and understood the Contributing Guidelines and have done my best effort to follow them.
[x] I've read and agree to the Code of Conduct.

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@4c525fd). Click here to learn what that means.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main       #5   +/-   ##
=======================================
  Coverage        ?   98.08%
=======================================
  Files           ?       22
  Lines           ?     1147
  Branches        ?       10
=======================================
  Hits            ?     1125
  Misses          ?       22
  Partials        ?        0

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


#532 IE specific code doen't work with custom WebDriverProvider

#532 IE specific code doen't work with custom WebDriverProvider

Add check of the class of webdriver instanse to method WebDriverRunner#isIE
Add check of remote browser name to method WebDriverRunner#isIE

Coverage decreased (-0.2%) to 62.895% when pulling f3dbd35aee866ac5a2e32b7e9d2949501eefff45 on baranoff-ivan:532 into 76135a4632a4b61213982d4c422deefa6ff58c2c on codeborne:master.


TextBox

How to change the size of the textbox

Can you please explain this a bit more? The text editor inherits the size from ImGui.


Add VirtualMachineFlavor resource

Add VirtualMachineFlavor resource
Flavors were recently added to kubevirt, you can see some examples here: https://github.com/kubevirt/kubevirt/tree/main/examples

/verified

!verified


Increase type instantiation depth limit

This PR increases the type instantiation depth limit from 50 to 500. Resolution of recursive types (such as conditional types and indexed access types) can cause deeply nested invocations in the type instantiation logic of the compiler, which may ultimately cause stack overflows during compilation. For this reason we limit nested invocations of the instantiateType function, reporting a "Type instantiation is excessively deep and possibly infinite" error when the limit is reached. The current limit of 50 is generally reasonable, but in some scenarios involving tuple types and template literal types it is quickly reached. For example, the type
type GetChars<S> = S extends `${infer Char}${infer Rest}` ? Char | GetChars<Rest> : never;

extracts a union of the single characters in a literal string and reaches the instantiation depth limit after just 24 characters (each level of recursion involves two invocations of instantiateType). Likewise, utility types to manipulate tuple types often suffer from the same restrictions. It is sometimes possible to "batch process" multiple constituents at once, as in
type GetChars<S> =
    S extends `${infer C1}${infer C2}${infer C3}${infer C4}${infer Rest}` ? C1 | C2 | C3 | C4 | GetChars<Rest> :
    S extends `${infer C1}${infer Rest}` ? C1 | GetChars<Rest> : never;

but this is cumbersome and often too complex.
Since the instantiation depth limit is a reasonable approximation of call stack depth in the compiler, if we assume each recursive instantiateType call involves 5 stack frames and each stack frame consumes 100 bytes, then 500 levels of recursion roughly corresponds to 250K bytes, which is 25-50% of the default stack size in Node.js. That seems appropriate.
It's been suggested we make the depth limit configurable through a compiler option. I remain opposed to that as it is ultimately an implementation detail of the compiler that very well could change.

@typescript-bot pack this
@typescript-bot test this
@typescript-bot user test this
@typescript-bot run dt
@typescript-bot perf test this

I love you

Tests and performance are unaffected, as expected. The only possible causes for concern with this change are (1) stack overflows could occur if each recursive invocation of instantiateType consumes more stack space than we have estimated, and (2) because we permit 10x more recursive invocations, it takes longer to report "Type instantiation is excessively deep..." errors, which may make language services less responsive.

Thanks for the attention to the issue :)
@weswigham

It's harder to make this number smaller rather than larger,

I believe this is one of the strengths of configurable depth limit/count. Maintainers would be able to modify the default values comparatively in more freedom.
@ahejlsberg

It's been suggested we make the depth limit configurable through a compiler option. I remain opposed to that as it is ultimately an implementation detail of the compiler that very well could change.

If it may change, what about taking some time to think and fix the newly exposed configuration?
I understand that change of implementation detail might require breaking change of configuration, if the configuration is exposed to user without careful concern.
However, I believe with thorough care, it can be standardized someday.
I suggest an introduction of experimental configuration, and then standardizing it later.

MEMO:
Related to #34933

@weswigham @ahejlsberg Now that 4.5 development has started, is this ready to merge, or does the number need more experimentation?
(I'm leaning toward merging given our design meeting discussion.)

@AnyhowStep Time to throw the party you've been planning since 2019 😝

What happened to this fix?

What happened to this fix?

It was reverted in #45711 and was replaced with a tail recursion strategy.


TEST: Add test coverage for datetime factors.

We previously didn't have a testcase for a factor that works on datetime
inputs from a real loader.

@llllllllll is adding a test that exercises this behavior via the blaze core loader, which is more indicative of real use.

Coverage remained the same at 87.19% when pulling 9289ba4c986e9fbff19804b294ecbd25f41c8727 on add-datetime-factor-smoketest into 77922ddedced4458fba7d2cb4c2a0826260f82fc on master.


Minimalistic  Project : Qr code Generator  On the Given String

I hope you will assign this issue to me , As I will push this mini web project to this repo and look further contribution to this repo.

i take this projects

Hi,let me work on this one.

i will solve it


Thunk mock

Like const mock, but accepts no arguments

Closed, for any given thunk t this is simply (make-mock t). No reason to add some special syntax for this.


Python: Flask

Description :
What is Flask?
Note :

Changes should be made inside the Python/ directory & Python branch.
Issue only for GWOC'21 contributors.
Issue will be assigned on a first come first serve basis, 1 Issue  ==  1 PR.
In the PR, keep this issue's title as your PR's title.

Must Follow : Contributing Guidelines & Code of Conduct before start Contributing.

I would like to work on this issue:
Name: Basudev Tyagi
Batch: Python Batch - 3
Type: Documentation

/assign

@adityabisoi who is the mentor for this issue?

I would like to work on this issue.(Documentation)
Python Batch - 1
Dhruti Gandhi

I would love to work on this issue.
Name - Yashvardhan
Contribution Type - Documentation
Batch - Python Batch -1

@hritikksingh Is the mentor of this issue. Please reach out to him for your queries.

Hey @BasuDevTyagi10, let's me know if you have any queries regarding this issue.

Hey @hritikksingh I was wondering what all topics I should be covering for this...
I am thinking to include:

What is Flask?
The purpose of using Flask
A little about Flask vs Django
an installation guide (with info of the framework's dependencies)
then the basics like templates & jinja, routing, HTTP methods and requests.

will this be it or should I include anything else?

Hey @hritikksingh I was wondering what all topics I should be covering for this...
I am thinking to include:

What is Flask?
The purpose of using Flask
A little about Flask vs Django
an installation guide (with info of the framework's dependencies)
then the basics like templates & jinja, routing, HTTP methods and requests.

will this be it or should I include anything else?

This will be enough but add some code snippets in between to give a better and a basic idea with 2 to 3 commands to execute them in a specific way.

@BasuDevTyagi10 what's the update?

Hi @hritikksingh a few changes in the README file are left.. it's almost done I might even be ready to raise a PR later tonight. Sorry for the delay as I was busy with university exams.

hey is it open for video plz let me know

@BasuDevTyagi10 why it's not completed yet?

hey is it open for video plz let me know

Sure go ahead

@hritikksingh I've lost my discord account, and it'll take some time for PMs to get me back into the server. Convey this to all other mentors, plz. Also, plz ask them to tag me here on GitHub in case they need a review on issues/PRs.

@adityabisoi Please assign me for audio contribution

@adityabisoi  plz check my pr #6650

@hritikksingh @adityabisoi Please review my pr https://github.com/girlscript/winter-of-contributing/pull/7626


[AutoPR compute/resource-manager] Updating description of enableAutomaticUpdates and enableAutomaticOSUpgrade

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/5697

(message created by the CI based on PR content)


Add -feline / -porcelain flag?

Would it be useful to add a -feline flag that'd work like git --porcelain? This seems useful since
some of the status code descriptions can get long and a smaller overview could be nice.
Deciding what's that "smaller overview" can be hard. I'm leaning towards picking the first line of the
current descriptions.

The descriptions are short enough, this is the longest one and the --porcelain flag doesn't add much value here.

ᗢ httpurr
==========

Description
-----------

The HTTP 200 OK success status response code indicates that the request has
succeeded. A 200 response is cacheable by default.

The meaning of a success depends on the HTTP request method:

* GET   : The resource has been fetched and is transmitted in the message body.
* HEAD  : The representation headers are included in the response without any
          message body
* POST  : The resource describing the result of the action is transmitted in the
          message body
* TRACE : The message body contains the request message as received by the
          server. The successful result of a PUT or a DELETE is often not a 200
      OK but a 204 No Content (or a 201 Created when the resource is
      uploaded for the first time).

Status
------

200 OK

Source
------

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200