Question about concurrency and centralized token store

[x] I have checked that the SDK documentation doesn't solve my issue.
[x] I have checked that the API documentation doesn't solve my issue.
[x] I have searched the Box Developer Forums and my issue isn't already reported (or if it has been reported, I have attached a link to it, for reference).
[x] I have searched Issues in this repo and my issue isn't already reported.

Description of the Issue
This is just a simple question, so I will leave the other sections empty. We have multiple processes using a centralized token store (so the users can use one app to do their OAuth flow). I'm trying to avoid the race conditions where 2 processes start an upload process at the exact same time, get the same expired token from the DB, and at the same time decide to refresh the token and store it back using the setToken of the TokenStorage (which calls the centralized store to store in our DB). This will lead to the process coming second to override the token of the first process in the DB, the first process won't be aware of that and will try to use its token in the following calls (coming in a few ms), as follow
[P1] initiate a call and call getToken on the token storage
[P2] initiate a call and call getToken on the token storage
[P1] gets token from getToken and start a call
[P2] gets token from getToken and start a call
[P1] gets 401 and decides to refresh
[P2] gets 401 and decides to refresh
[P1] asks the API for a new token
[P2] asks the API for a new token
[P1] gets a new token and call setToken on the TokenStorage
[P2] gets a new token and call setToken on the TokenStorage <== This override the AccessToken that P1 has

My questions are:

Will the first token, already overwritten by the second, work? Meaning even if I guess the refresh token is already superseded by the one from the second process, will the access token still work and call will work?
If the access token does work (question 1), in case the process takes more than one hour, when the 1st process will try to refresh, will it use the getToken of the TokenStorage first to get the latest refresh token stored by the 2nd process, or it will use the one it has (which should fail since superseded)?
If answer to 1 or 2 is no it doesn't 😄 and we need to handle this manually (meaning test the token first in a mutex function that only one process can go through at a time), is there a way to know if a token is expired without making any call? The new SDK token seems to have lost the acquiredAtMS and accessTokenTTLMS in favor of expiresIn, which obviously doesn't change once stored in the DB, so I feel like there is no way to know without making a request. I didn't find any fonction like that in the code, I just see that it know it expired because it gets 401 when making a call. If we do have to make a call to validate the token in our mutex, what would be the fastest/smallest call just to make sure the token is refreshed if needed, so we can then leave the mutex? Is there some type of ping function doing nothing more that answer OK?
And writing 3, I actually realized that it doesn't solve the problem when the token will expire exactly at the same time on both processes if they upload for more than one hour, since the mutex check would be done only after creating the client. So do you think it would be an option to overwrite the refreshToken function (which I see is called here in case of 401) to call itself, but in a mutex (we use a global lock in redis). Again, if 1 and 2 are working, then I think it's not an issue, the 2nd process will also overwrite the token of the first process, but if the access token still works, and it will request the latest refresh token from the token store one hour later when it needs to refresh, everything should work 😄

Steps to Reproduce

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

Expected Behavior

Error Message, Including Stack Trace

Screenshots

Versions Used
Typescript SDK:
Platform:
Node.js (if applicabe):

I'll try to answer my own question a bit. I see in the code that refreshToken does first retrieve the latest AccessToken from the TokenStorage (in our case the DB), so I think the refresh for the first process is not an issue, even if its token was overwritten a few ms after being acquired.
So I guess that if the access token is still working even if another AccessToken was generated for process 2, then I can answer that 1 and 2 do work, so there is no need for mutex. The whole flow will be the following:
[P1] initiate a call and call getToken on the token storage
[P2] initiate a call and call getToken on the token storage
[P1] gets token from getToken and start a call
[P2] gets token from getToken and start a call
[P1] gets 401 and decides to refresh
[P2] gets 401 and decides to refresh
[P1] asks the API for a new token
[P2] asks the API for a new token
[P1] gets a new token (T1) and call setToken on the TokenStorage
[P2] gets a new token (T2) and call setToken on the TokenStorage <== This override the AccessToken that P1 has
[P1] accesses content using T1.accessToken for one hour long (at this point T1.refreshToken is already invalid, but T1.accessToken still works???
[P2] accesses content using T2.accessToken for one hour long
[P1] gets 401 and decides to refresh
[P2] gets 401 and decides to refresh (this happens at the same ms than the previous line)
[P1] gets a new token (T3) and call setToken on the TokenStorage
[P2] gets a new token (T4) and call setToken on the TokenStorage <== This override the AccessToken that P1 has
[P1] accesses content using T3.accessToken for one hour long (at this point T3.refreshToken is already invalid, but T3.accessToken still works???
[P2] accesses content using T4.accessToken for one hour long
Repeat...

So assuming the assumption at this point T1.refreshToken is already invalid, but T1.accessToken still works??? is true, I think everything should work fine, even if it's 1000 processes instead of 2.
Of course P2 could be first sometimes, this is just to understand the concept.

Hello @gdelory and thank you for this interesting question!
The old AccessToken object, when refreshed using the refreshToken, stops working, and from that point on, you need to use a new token.
However, the situation is interesting when it comes to the refresh token. If we refreshed the AccessToken object using the refreshToken but haven't made any API requests yet using the new access token, then we can reuse the old refreshToken for refreshing, and it will return the same new AccessToken object as in the previous refresh.
So, if two processes simultaneously request and refresh the token, and there are no other API calls between them, everything will work fine because in both cases, upon refresh, you will receive the same new AccessToken object.
However, there may be a situation where P2 receives a 401 error and starts to refresh the token, but just before that, the same action is taken by process P1 and it has already updated the tokenStorage. In this case, P2 will overwrite the tokenStorage, and then P1 will once again receive a 401 error and refresh the token.
In summary, it seems that the current token problem will occur in the case of concurrency and centralized token storage. May I ask how you addressed this issue in the legacy box-node-sdk?
Regards,
Artur

Hey @arjankowski , thanks so much for you answer. I have a few more questions following this, and I'll try to answer yours.

The old AccessToken object, when refreshed using the refreshToken, stops working, and from that point on, you need to use a new token.

Can you be a bit more specific. I use AccessToken as the JSON object which contains both the access token and the refresh token. I understand that sometimes although the refresh token is now invalid, the access token still works. So here, when you say it stops working, are both stop working, or only the refresh token. This makes a huge difference, because if the access token still works until it is supposed to expire, then we have to race condition like I show in my flow, one hour later it will use the getToken function from the TokenStorage and will get the latest one stored by the other process. But if the access token is also invalid, then all subsequent calls from P1 will fail.
Although, maybe then it will try to refresh again, which will trigger a call to getToken, and it would get the latest token stored by P2 and be able to refresh?
I think I will have to force the race condition here with some pause between every step to see what really happens 😄

However, the situation is interesting when it comes to the refresh token. If we refreshed the AccessToken object using the refreshToken but haven't made any API requests yet using the new access token, then we can reuse the old refreshToken for refreshing, and it will return the same new AccessToken object as in the previous refresh.

That's interesting to know indeed that the old refresh token will still work and return the same new refresh token P2 got as well. However that would require the perfect race condition, and this I can't enforce, maybe some calls will have been done already 😉

However, there may be a situation where P2 receives a 401 error and starts to refresh the token, but just before that, the same action is taken by process P1 and it has already updated the tokenStorage. In this case, P2 will overwrite the tokenStorage, and then P1 will once again receive a 401 error and refresh the token.

Well to be honest if P1 knows to refresh again, that's fine for us. What we are trying to avoid is the situation where one of the process just throw an exception and doesn't do the upload, that's a problem for us because then we have unstable processes. But if it just need to go through an extra refresh and uploads fine, I'm perfectly fine with that.

May I ask how you addressed this issue in the legacy box-node-sdk?

Sure, but TBH I'm not sure we fixed it 100% either there. What we did is that we first retrieved the token from the centralized token with a special endpoint (not box related, but basically the same as used in the getToken of the store), then because of the acquire and TTL properties we could check if it was expired, then we could a server side endpoint, which was using a mutex to make sure two processes couldn't call it at the same time (well they could but the other processes would wait to get an answer). Then we were refreshing the token on the server side and storing it in the mutexed function, then we could create a persistent client with:
sdk.getPersistentClient(existingToken, this.getTokenStore(userId))

You can see it solved the first initialization race condition, but I don't think it solved the auto refresh that could happen one hour later.
Anyway, I will play a bit with it, but again, if you say it just triggers one more refresh but nothing really fails, this is perfect.

hi @gdelory,
Referring to the AccessToken, I meant the returned object containing fields such as accessToken and refreshToken. Generally, at any given moment, when making an API call, only one AccessToken.accessToken is valid. If you have an AccessToken object (old), whose AccessToken.accessToken will soon expire, and you decide to refresh it, receiving a new AccessToken object (new), then the old AccessToken.accessToken becomes invalid, and using it for a request from now will result in a 401 error.
However, if process P1 uses the old AccessToken.accessToken for a long-running operation, and during the execution of this operation, process P2 refreshes the AccessToken object because its validity has expired, then process P1, from my observation, will continue to execute for some time, and during that time, P2 should already save the new AccessToken to storage.
I think that a possible solution to your problem might be using separate Box applications, where each of them will have independent token storage.
Summarizing this discussion, so far, we haven't focused on concurrency and centralized token store in this SDK, so it might be challenging for us to propose something in this case. Rather, we have been concentrating within our SDK on a single process without sharing storage.
But please do let us know your conclusions
Regards,
Artur

I guess I just want to share my (naive) approach to prevent two clients attempting to refresh a token at the same time was to use a cache (redis/nats/in-memory) to "lock" the client when there are multiple clients attempting to connect for the same user (in my use-case a workspace). Here's my static method that initiates a class.
The getBoxAccessToken and storeAccessToken are the same methods I use for the get and store methods that I use in my TokenStorage implementation
Please let me know if anyone else has better implementations. I was receiving a lot of bad refresh_token errors since I had multiple clients trying to create a new access token. After implementing, I havent seen this come through
static async initialize(workspaceId?: number) {
        if (!!workspaceId) {
            const accessToken = await getBoxAccessToken(workspaceId);

            if (accessToken?.refreshToken) {
                const cacheKey = JSON.stringify({
                    type: "box-api-lock",
                    workspaceId,
                });

                let isLocked: boolean = cache.get<boolean>(cacheKey) ?? false;

                if (isLocked) {
                    let attempts = 1;
                    const maxAttempts = 20;

                    do {

                        attempts++;

                        await sleep(500);

                        isLocked = cache.get<boolean>(cacheKey) ?? false;
                    } while (isLocked && attempts < maxAttempts);
                } else {
                    try {
                        cache.set(cacheKey, true);

                        const response = await fetch("https://api.box.com/oauth2/token", {
                            method: "POST",
                            headers: {
                                "Content-Type": "application/x-www-form-urlencoded",
                            },
                            body: new URLSearchParams({
                                client_id: env.BOX_CLIENT_ID,
                                client_secret: env.BOX_CLIENT_SECRET,
                                refresh_token: accessToken.refreshToken,
                                grant_type: "refresh_token",
                            }),
                        });

                        const body = (await response.json()) as RawRefreshTokenResponse;

                        await storeAccessToken(workspaceId, {
                            accessToken: body.access_token,
                            expiresIn: body.expires_in,
                            issuedTokenType: body.issued_token_type,
                            refreshToken: body.refresh_token,
                            restrictedTo: body.restricted_to,
                            tokenType: body.token_type,
                        });
                    } catch (error) {
                        if (error instanceof Error) {
                            console.log(error.message);
                        }
                    } finally {
                        cache.del(cacheKey);
                    }
                }
            }

            const auth = new BoxOAuth({
                config: new OAuthConfig({
                    clientId: env.BOX_CLIENT_ID,
                    clientSecret: env.BOX_CLIENT_SECRET,
                    tokenStorage: new CustomStorage(workspaceId),
                }),
            });

            const client = new BoxClient({
                auth,
            });

            return new BoxUserAPI(auth, client);
        } else {
            const auth = new BoxOAuth({
                config: new OAuthConfig({
                    clientId: env.BOX_CLIENT_ID,
                    clientSecret: env.BOX_CLIENT_SECRET,
                }),
            });

            const client = new BoxClient({
                auth,
            });

            return new BoxServerAPI(auth, client);
        }
    }


Serving App_Offline.htm returns HTTP Status Code 200

Support to App_Offline.html was added via aspnet/IISIntegration#81
I'm using it with RC2 and it works fine. Files are unlocked and I'm able to redeploy the app.
On .NET 2.0, dropping App_Offline.htm would be served with a status code 404.
That was changed (Fixed?) to 503 on .NET 4.0, but now (on my unmanaged app pool) running AspNetCoreModule, the file is served with a status code 200.
I've tried, without success, defining it on Web.config:
<httpErrors errorMode="Custom" existingResponse="Replace">
    <clear />
    <error statusCode="503" path="App_Offline.htm" responseMode="File" />
</httpErrors>

Is there a work around? Or perhaps I'm missing something?

This has already been changed to 503. https://github.com/aspnet/IISIntegration/issues/204. There isn't a workaround available, you'll have to wait for the RTM release.


Adds support for MySQL java driver 8.x

resolves #4970

Codecov Report

Merging #4972 into master will increase coverage by 0.02%.
The diff coverage is 0%.

@@            Coverage Diff             @@
##           master    #4972      +/-   ##
==========================================
+ Coverage   40.86%   40.89%   +0.02%
==========================================
  Files        2642     2642
  Lines       79227    79231       +4
  Branches    10709    10710       +1
==========================================
+ Hits        32379    32400      +21
+ Misses      43921    43902      -19
- Partials     2927     2929       +2

Impacted Files
Coverage Δ

...ercorp/pinpoint/plugin/jdbc/mysql/MySqlPlugin.java
0% <0%> (ø)
:arrow_up:

...vercorp/pinpoint/web/vo/ApplicationAgentsList.java
70.14% <0%> (-2.99%)
:arrow_down:

...corp/pinpoint/rpc/stream/StreamChannelManager.java
69.54% <0%> (-2.88%)
:arrow_down:

...pinpoint/profiler/monitor/DeadlockMonitorTask.java
18.6% <0%> (-1.17%)
:arrow_down:

...rc/main/java/com/navercorp/pinpoint/test/Item.java
68.96% <0%> (ø)
:arrow_up:

...point/rpc/client/DefaultPinpointClientHandler.java
72.61% <0%> (+0.31%)
:arrow_up:

...rver/cluster/zookeeper/CuratorZookeeperClient.java
86.91% <0%> (+0.93%)
:arrow_up:

...orp/pinpoint/rpc/server/DefaultPinpointServer.java
79.86% <0%> (+1.04%)
:arrow_up:

...ercorp/pinpoint/profiler/util/ThreadDumpUtils.java
63.33% <0%> (+1.11%)
:arrow_up:

...m/navercorp/pinpoint/web/util/ThreadDumpUtils.java
35.23% <0%> (+1.9%)
:arrow_up:

... and 9 more

Continue to review full report at Codecov.

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


https://github.com/users/Perfumiste777/projects/1

[Should be a better commitment with the payment method/Pre Prepaid cards are as safe as the Deposit card ,both have a Governmental trust.I do work about it will you.?There is an official acceptance in E.U about the way our personal Details are used.
What is this make your Company violate the rules against E.U Citizens Rights to rule their money or a part of their Right ,is the one my Source focus at.https://github.com/Perfumiste777].

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 1841e4cc-3b80-03b9-cb4b-b8ba941e545a
Version Independent ID: bd4fb194-d6af-e442-5ced-793e09c3fa83
Content: Install Azure PowerShell with PowerShellGet
Content Source: docs-conceptual/azps-0.10.0/install-az-ps.md
Service: azure-powershell
GitHub Login: @mikefrobbins
Microsoft Alias: mirobb

@Perfumiste777 For billing related issues you'll want to refer to the Cost Management and Billing documentation, contact billing support (Portal > Help + support > New support request > Billing, then complete the wizard), or you'll want to leave feedback for the product teams to review.
Pay by invoice may be an option that you would like to learn more about that allows customers to pay by check or wire transfer:
https://docs.microsoft.com/en-us/azure/cost-management-billing/manage/pay-by-invoice
There's nothing we can do here in the Azure PowerShell section of our documentation so we are going to close this issue as resolved.  If you have any questions about Azure PowerShell, please open another issue and we'd be happy to help!


Scrollbutton changes

Fixes Issue

Changes proposed

Check List (Check all the applicable boxes)

[x] My code follows the code style of this project.
[ ] My change requires changes to the documentation.
[ ] I have updated the documentation accordingly.
[x] All new and existing tests passed.

made the required changes


Tests showing as skipped

Some parameterized tests in ActualBuildTest use Assume to filter out the enum parameter values appropriate to the test.
This is an inappropriate use of Assume and causes the tests to show as skipped. An alternative filtering strategy should be found.

Fixed on 0.1 development branch.


feat: io-ts-bignumber package

Adding base-10 BigNumber codecs using the "bignumber.js" package.

Hi @SHaTRO, thank you for this PR! I can see you've put a high degree of thought and detail into this implementation. I think this is a useful package.
My only concern is the placement of io-ts-bignumber inside numbers-ts. Now that I think harder about the scope of this repository, I quite like that it includes only JavaScript-native number types (bigint, number).
My concern with including a third-party number type that I'm not personally familiar with is I suspect I would flounder when it comes to maintenance. I'm not familiar with the release cycle of bignumber.js, or how well it adheres to semantic versioning. I have the strong impression that I would not be the best maintainer of io-ts-bignumber in terms of stability provided to its users.


[BUG] - Application crashes when Auto-tunnel is on since 3.6.2

Describe the bug
Since 3.6.2, when turning on auto-tunnel, the application crashes immediately. It also crashes on start when updating from 3.6.1 if auto-tunnel is on.
Smartphone (please complete the following information):

Device: Pixel 8 Pro
Android Version: Android 15
App Version: 3.6.2 and 3.6.3

To Reproduce
Steps to reproduce the behavior:

Install 3.6.2 or 3.6.3
Add a VPN
Toggle on Auto-Tunnel

Expected behavior
The application doesn't crash

Hello, this crash was fixed in 3.6.3. Are you sure it is still happening on this version?
Basically, I accidentally made a typo where auto-tunnel service was creating the wrong notification channel. If you try to launch a notification when a channel has not been created then it can cause a crash.

It happened to me after F-droid updated to 3.6.3.
I'll have access to my computer tomorrow and I'll check with ADB what the root cause of this crash is.

FYI the crash happened to me and disappeared after uninstall, reinstall and reconfiguring from scratch.

I have got version 3.6.3, Pixel 8 Pro as well. It seems that it crashes after some time (no connection with tunnelled app, restarted WG Tunnel and it worked again, all app energy options OFF). AutoTunnel for mobile data and App tunneling are on. I think old Version worked better. Turned on logging and waiting for next Crash ;-)...by the way GREAT JOB, THANKS! :-)

I have just installed version 3.6.3 from the GitHub releases page (updating from 3.6.1) and it didn't crash.
Could it be possible that F-Droid installed 3.6.2 thinking it was 3.6.3?
I'll close this ticket as I cannot reproduce it with the release from this GitHub.


Module not callable

Working through the Automate the Boring stuff book and came across Send2Trash.  Tried following the tutorial but found that the module was not callable.
my code is

I am doing this in VSCode and pylint keeps giving the error that the module is not callable:
I have tried reinstalling send2trash and restarting the computer.

@TeddySledge, you should use:
from send2trash import send2trash
send2trash("myfile.txt")

or
import send2trash
send2trash.send2trash("myfile.txt")

but you are importing and calling the whole module:
import send2trash
send2trash("myfile.txt")  # Exception


Trying to get the "Scene, Music, DIY Modes" but no logs see

Hello!
I'm trying to get the "Scene, Music, DIY Modes" to work, but at the step where I need to check the logs to see the [BLE] or [AWS] code, I don't have any logs that resemble the example provided:
[Govee] [Desk Lamp] [Sunrise Scene] [AWS] owABCwcJAGQAAAAIDIsA/0hJSvg=,owFLTE1OT1BRUlMMABKbG1ub34=,owJwcXJzdHV2dwz/GfRgYWJjZNs=,owNlZmdoaWprDN400lRVVldYWfE=,owRaW1xdXl8Y/wAAAAECAwQFBkY=,owUHCAkKCwwNDg8QERITFBUWF6E=,owYY/38AGBkaGxwdHh8gISIjJBk=,owclJicoKSorLC0uLxj//wAwMZk=,owgyMzQ1Njc4OTo7PD0+P0BBQuk=,owlDREVGRwwAAP94eXp7fH1+fxo=,o/+AgYKDAAAAAAAAAAAAAAAAAFw=,MwUELAEAAAAAAAAAAAAAAAAAAB8=
[Govee] [Desk Lamp] [Sunrise Scene] [BLE] MwUELAEAAAAAAAAAAAAAAAAAAB8=

The only lines that appear are:
[Govee] [LAN] client enabled and found 0 device(s).
[Govee] [HTTP] client enabled and found 2 device(s).
[Govee] [AWS] client enabled.
[Govee] [BLE] client enabled.
[Govee] [lit] initializing with options {"adaptiveLightingShift":0,"aws":"unsupported","ble":"enabled","brightnessStep":1,"colourSafeMode":false,"lan":"unsupported"}.
[Govee] [lit] initialized with id [-] [H6147].
[Govee] [Bathroom] initializing with options {"adaptiveLightingShift":0,"aws":"enabled","ble":"enabled","brightnessStep":1,"colourSafeMode":false,"lan":"unsupported"}.
[Govee] [Bathroom] initialized with id [-] [H6110].
[Govee] ✓ Setup complete. This plugin has been made with ♥ by bwp91, please consider a ☆ on GitHub if you are finding it useful!

If anyone has any ideas, thank you so much! :)
Homebridge UI-X
Homebridge v1.6.1
Raspberry Pi
homebridge-govee v9.1.0
LED GOVEE: [H6110] [H6147]

I have the same issue with H6199
I had the codes before in my old config, before V9, but even after removing them and reconfiguring, it's still not working.

@RaduMC did you try to use the same codes as before? or follow the guide in the wiki?

@Miivda sorry missed your original message. did you manage to or do you still want to configure this?

@bwp91 Thanks for the reply.
I did try but I discovered my Gove light doesn't respond at all from the Home app. I will get back after I solve that issue.

Is it possible that scene codes have changed?
The beta version shows more logging messages, including the scene commands below that were issued with the Govee app.
It seems to me that Hex string contain binary data for every possible setting related to scenes. For example Brightness, Saturation, Softness, etc.
Using those Hex values as scene codes doesn't work though, so I guess there's more to it.
Maybe it helps:
//Music scene, Energic mode, Sensitivity min
[7/31/2023, 8:41:30 PM] [Govee] [AWS] message event [{"proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825290111902","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUMAAAAAAAAAAAAAAAAAAAAADo="]}}].
[7/31/2023, 8:41:30 PM] [Govee] [H6199_3C23] [AWS] receiving update {"source":"AWS","proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825290111902","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUMAAAAAAAAAAAAAAAAAAAAADo="]}}.

//Music scene, Energic mode, Sensitivity max
[7/31/2023, 8:41:48 PM] [Govee] [AWS] message event [{"proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825307933206","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUMAGMAAAAAAAAAAAAAAAAAAFk="]}}].
[7/31/2023, 8:41:48 PM] [Govee] [H6199_3C23] [AWS] receiving update {"source":"AWS","proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825307933206","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUMAGMAAAAAAAAAAAAAAAAAAFk="]}}.

//Music scene, Energic mode, Sensitivity med
[7/31/2023, 8:42:04 PM] [Govee] [AWS] message event [{"proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825323363737","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUMACgAAAAAAAAAAAAAAAAAABI="]}}].
[7/31/2023, 8:42:04 PM] [Govee] [H6199_3C23] [AWS] receiving update {"source":"AWS","proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825323363737","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUMACgAAAAAAAAAAAAAAAAAABI="]}}.

//Music scene, Spectrum mode, Sensitivity med
[7/31/2023, 8:42:24 PM] [Govee] [AWS] message event [{"proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825343691460","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUMAygAAAAAAAAAAAAAAAAAABE="]}}].
[7/31/2023, 8:42:24 PM] [Govee] [H6199_3C23] [AWS] receiving update {"source":"AWS","proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825343691460","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUMAygAAAAAAAAAAAAAAAAAABE="]}}.

//Video scene, Movie mode, Relative Brightness 20%, Saturation 20%, Partial scan, Sound effects on, Softneess med
[7/31/2023, 8:42:47 PM] [Govee] [AWS] message event [{"proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825366168057","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUAAAAUATAUAAAAAAAAAAAAAAc="]}}].
[7/31/2023, 8:42:47 PM] [Govee] [H6199_3C23] [AWS] receiving update {"source":"AWS","proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825366168057","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUAAAAUATAUAAAAAAAAAAAAAAc="]}}.

//Video scene, Movie mode, Relative Brightness 20%, Saturation 20%, Partial scan, Sound effects on, Softneess min
[7/31/2023, 8:43:42 PM] [Govee] [AWS] message event [{"proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825421479455","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUAAAAUAQAUAAAAAAAAAAAAADc="]}}].
[7/31/2023, 8:43:42 PM] [Govee] [H6199_3C23] [AWS] receiving update {"source":"AWS","proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825421479455","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUAAAAUAQAUAAAAAAAAAAAAADc="]}}.

//Video scene, Movie mode, Relative Brightness 40%, Saturation 20%, Partial scan, Sound effects on, Softneess min
[7/31/2023, 8:44:06 PM] [Govee] [AWS] message event [{"proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825445661164","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUAAAAUAQAoAAAAAAAAAAAAAAs="]}}].
[7/31/2023, 8:44:06 PM] [Govee] [H6199_3C23] [AWS] receiving update {"source":"AWS","proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825445661164","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUAAAAUAQAoAAAAAAAAAAAAAAs="]}}.

//Video scene, Movie mode, Relative Brightness 40%, Saturation 40%, Partial scan, Sound effects on, Softneess min
[7/31/2023, 8:44:59 PM] [Govee] [AWS] message event [{"proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"status","type":0,"transaction":"1234567890","cmdVersion":0,"state":{"connected":"true","onOff":1,"wifiSoftVersion":"1.00.29","wifiHardVersion":"1.00.01","brightness":104,"colorTemInKelvin":0,"color":{"r":255,"g":0,"b":0},"mode":0},"op":{"opcode":"all","modeValue":["qgUAAAAoAQAoAAAAAAAAAAAAAK4="],"sleepValue":["qhEAHg8PAAAAAAAAAAAAAAAAAKU="],"wakeupValue":["qhL/ZAAAgA8AAAAAAAAAAAAAAKw="],"timerValue":["qgr/AAAAgAAAAIAAAACAAAAAgF8="]}}].
[7/31/2023, 8:44:59 PM] [Govee] [H6199_3C23] [AWS] receiving update {"source":"AWS","proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"status","type":0,"transaction":"1234567890","cmdVersion":0,"state":{"connected":"true","onOff":1,"wifiSoftVersion":"1.00.29","wifiHardVersion":"1.00.01","brightness":104,"colorTemInKelvin":0,"color":{"r":255,"g":0,"b":0},"mode":0},"op":{"opcode":"all","modeValue":["qgUAAAAoAQAoAAAAAAAAAAAAAK4="],"sleepValue":["qhEAHg8PAAAAAAAAAAAAAAAAAKU="],"wakeupValue":["qhL/ZAAAgA8AAAAAAAAAAAAAAKw="],"timerValue":["qgr/AAAAgAAAAIAAAACAAAAAgF8="]}}.

//Video scene, Movie mode, Relative Brightness 40%, Saturation 40%, All scan, Sound effects on, Softneess min
[7/31/2023, 8:45:40 PM] [Govee] [AWS] message event [{"proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825540510849","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUAAQAoAQAoAAAAAAAAAAAAADY="]}}].
[7/31/2023, 8:45:40 PM] [Govee] [H6199_3C23] [AWS] receiving update {"source":"AWS","proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825540510849","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUAAQAoAQAoAAAAAAAAAAAAADY="]}}.

//Video scene, Game mode, Relative Brightness 40%, Saturation 40%, All scan, Sound effects on, Softneess min
[7/31/2023, 8:46:06 PM] [Govee] [AWS] message event [{"proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825566057765","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUAAQEoAQAoAAAAAAAAAAAAADc="]}}].
[7/31/2023, 8:46:06 PM] [Govee] [H6199_3C23] [AWS] receiving update {"source":"AWS","proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825566057765","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUAAQEoAQAoAAAAAAAAAAAAADc="]}}.

//Video scene, Game mode, Relative Brightness 40%, Saturation 40%, All scan, Sound effects off, Softneess min
[7/31/2023, 8:46:29 PM] [Govee] [AWS] message event [{"proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825588435845","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUAAQEoAAAoAAAAAAAAAAAAADY="]}}].
[7/31/2023, 8:46:29 PM] [Govee] [H6199_3C23] [AWS] receiving update {"source":"AWS","proType":2,"pactType":1,"pactCode":1,"sku":"H6199","device":"XX:XX:XX:XX:XX:XX:XX:XX","softVersion":"1.07.02","hardVersion":"1.00.01","cmd":"pt","type":0,"transaction":"v_1690825588435845","cmdVersion":0,"state":{"connected":"true"},"op":{"opcode":"mode","modeValue":["MwUAAQEoAAAoAAAAAAAAAAAAADY="]}}.


feat(Angular 8): dependencies upgraded

We are using this lib on production and we migrated most of the content to version 8:

dependencies upgrade
minor changes after version upgrade
minor configuration changes

Thanks!

Is this pull request still active, and is there a possibility that this is merged anytime soon?
This is a big deal for many projects relying on ng update using angular 8.
Thanks you!

This is a big deal for many projects relying on ng update using angular 8.

Also Angular 9 being just about to land 😉. Tbh we upgraded our app to ng 8 a while back and we're using ngx translate. Didn't see any issues.


On screen keyboard covers the webchat and sendbox on Android and IOS devices when suggested actions are shown.

Load mock bot in chrome/safari browser of an android/ios device.
Type help and select "Show all activities related to accessibility test" to get suggested actions showup ("IM back as string", "Post back as string", "Post back as JSON", "Message back as JSON with display text", "Message back as JSON without display text", "Message back as string with display text") at the bottom of chat window and just above send box.
Click to get focus on the webchat section above the suggested actions and now click on send box. This brings up the onscreen keyboard to type but it hides the webchat and sendbox behind it. The webchat  and sendbox need to resize accordingly when on screen keyboard shows up.

After some intensive investigations, this is a bug on iOS/iPadOS Safari side.
I have built a repo outside of Web Chat and show how "scroll form control into view" could be interfered when placeholder text is styled. The repo is https://github.com/compulim/experiment-safari-auto-scroll-keyboard.
Looks like there is a race condition on Safari side.


Adaptation to dark mode of creation wizard

Here is the Figma file with the designs:
https://www.figma.com/file/T0xI9YXz3MRJVyWGpT5mIs/🌚-Dark-mode-Gardens?node-id=219%3A568
And here folder with the assets (including the new json files):
https://app.zenhub.com/files/353881841/6c59c80a-ec18-4897-80c4-d0d05f5a9117/download


CustomTargetingService performCustomTargetingValueAction

I'm trying to use this action, but I can't find a way to handle the abstract customTargetingValueAction.
There I must set the xsi:type to DeleteCustomTargetingValues somehow.
Can someone help me with this or is it not possible to handle abstract elements?

This just means that your JSON should be something like this;
customTargetingValueAction : { 'xsi:type': 'DeleteCustomTargetingValues' }

It worked. Thanks for the help.

Second one. thanks!


Refactor src/Tools

Issue: Trying to instantiate a SubQuestionQueryEngine resulted in lots of type gymnastics.
Motivation: We can simplify LITS more. I feel like the Tool type should be inherited from, not wrapped around existing objects. The python side makes a bunch of extra types for mostly field names, which is repetitive. And intuitively, QueryEngine/Retriever objects should already have metadata attached.
Possible solution:

Making tools (retriever, queryEngine) inherit from a Tool interface

Super(no pun intended) rough example:
export interface Tool {
    name: str,
    description?: str
    // getters/setters
}

export interface BaseQueryEngine extends Tool {
    query(...);
}

export class RetrieverQueryEngine implements BaseQueryEngine {
    constructor(name, ...){}
}

export class SubQuestionQueryEngine implements BaseQueryEngine {
    constructor(..., queryEngineTools: BaseQueryEngine[], ...){}

nevermind


Mod breaking some replays

So basicly:
On some maps, it seems like the replay gets comepletly broken, just the "camera" stuck to the ground, but i'm not completly sure if it's an Camera2 Bug, or more a Scoresaber Bug for replays. I also tried it with FPFC (Headset plugged in, and out individually) and without FPFC.
I can provide if needed a video of the issue.
(Uploading the config file, in case i did something funny)
Camera2.zip

Have you confirmed that the replays in question work fine without Cam2?

They're fine when i replayed the map without cam2 installed.

Do the sabers still playback the movement when the bug occurs? If not, can you attach the latest.txt log file after the bug has happened?

Nope, nothing at all.
_latest.log

I rather meant the entire game log, not just the cam2 one

_latest.log
Whoops, totally forgot about it, there we go.

Could you (re)start the game, (try to) play a replay that is broken, and then (before) exiting the song upload that log file?

_latest.log
There we go, basicly whilst running the song.

Ok, a couple of things:
Why do you have bs plus as well as enhancedstreamchat (Which doesnt even work on 1.14?) and SRM? Why do you have NoBuzz (Buzz isnt a thing any more on 1.14)
I would advise you to completely remove all your plugins and try to setup your BS with just mods from modassistant to test this. I see many error messages in your log from various mods.

Any Update on this?


tea.yaml

https://tea.xyz/what-is-this-file

version: 1.0.0
codeOwners:

'0x01baC8Df95294cE5970F8FBffEa7D670Ec3f459e'
quorum: 1

This is a crypto scam and the PR author is trying to steal potential tokens from you.
More context:
https://connortumbleson.com/2024/02/26/the-disappointing-tea-xyz/
https://github.com/aredridel/node-bin-gen/pull/241


AWS_CONFIG_FILE option with aws-sync-all-profiles leads to botocore.exceptions.NoRegionError: You must specify a region

When more than a single "default" profile and creds are defined in ~/.aws/ the following command will throw an exception when it attempts to change AWS Region.
AWS_CONFIG_FILE=~/.aws/config cartography --neo4j-uri bolt://localhost:7687 --neo4j-user neo4j --neo4j-password-env-var NEO4J_PASSWORD_ENV_VAR --aws-sync-all-profiles
So far the only way I've successfully run cartography is a single default account.  Specifying a profile name, a config file always ends in this exception.
The config file looks like this:
[default]
region=us-east-1
output=json
[production]
region=us-east-2
output=json
[testing]
region=us-east-1
output=json
There is a corresponding credentials file for each profile.
Attached is the exception trace back on cartography 0.30 on ubuntu 20.04
boto3-exception-cartography-aws-config.txt

As a workaround, try setting AWS_DEFAULT_REGION env var to any default

That worked! Thanks for the fast response.  Perhaps a side-note in the setup README would help others while this is a workaround.


Possibility of using this API in an objective-c environment

Currently I have an objective-c based project and i'd like use it in my project. I know I can't work with swift structs and enums (unless it's strictly of type int). So i'm wondering how would I go about using this API in my objective-c project?

Hi @unuigbee,
sorry for the late reply.
At this moment we do not plan on making this project objective-c compatible.
What you could do is create a single swift file in your project and import GraphQLicious in that file. This file can then be used as a wrapper that makes only the needed parts visible to the rest of your code and does the rest inside itself.
I hope I could help you.
Cheers


Bakterientoeter Todo

[x] Create start screen with option to start and end game
[x] Upper line on screen is reserved for info and not part of the game screen
[x] Initial spawn is always randomly created in ml, just as random spawn is implemented in ml
[x] ml is poked into basic ram initially, only the routine is called with sys later
[x] There is a time limit of 20s for every level

done


All data cleared after upgrade to 2.3.5 (Electron build)

Describe the bug
After upgrading to 2.3.5 all data was cleared. My collections, open tabs and settings are lost.
That's a quite serious issue since I now have to manually restore everything which will cost me probably a full day of work.

Can you downgrade back to 2.3.4 and see if the data is restored? Also is this the first time this happened?

There was a change in 2.3.5 that caused this to happen. Would fix in 2.3.6 but for now downgrading should work

@imolorhe Yep. This is the first time this is happening. I'll try downgrading.

Downgrading worked 🎉

Good to hear. Gives me more confidence on what the problem is.

I've also encountered this. I've downgraded but every time I start altair just downloads and installs the new version. This is a bit frustrating.
This update feature might be nice but personally I don't like it because of issues like the one in this issue. I believe such auto update should happen with user consent.
The fact that an app downloads stuff of off the internet and installs it is trouble waiting to happen IMO.
My 2 cents, anyway.

@ieugen you can create that as a separate issues if you want

v2.3.6 has been released and it fixes the changes in 2.3.5.

@imolorhe All data is still lost, even on 2.3.7

@levrik You can get the binary without installing it. Does it still forcefully update? The binaries for 2.3.4 can be found here: https://github.com/imolorhe/altair/releases/tag/v2.3.4

@levrik First, I'm sorry for the issues with your data. If the data isn't restored in v2.3.7, can you try what was suggested here if it works for you: https://github.com/imolorhe/altair/issues/968#issuecomment-541898903 if it's related. You can check the stored data in /Users/<your_username>/Library/Application Support and check for the directories related to Altair. There is a possibility that the directory used in some version of Altair is different from the directory used in the other version. If that's the case, renaming the directory here should fix the issue for you. Please let me know if this works for you

@imolorhe

There are three folders in total.
I think the altair one is the one from v2.3.7. Couldn't altair check for these folders at startup and migrate data over if they exist? That's a really bad user experience to don't migrate data if the storage is getting changed.

I'll consider that. Just need to understand the changes first but did this work for you?

@imolorhe
$ mv ~/Library/Application\ Support/altair ~/Library/Application\ Support/altair-bkp
$ mv ~/Library/Application\ Support/Altair\ GraphQL\ Client ~/Library/Application\ Support/altair

worked for me.

@imolorhe Probably you didn't use a static name for creating the binary and name is used for storing data. I think normally the folder name of the project is used and since you moved the code of the Electron version a bit around, it got a different name each time.

@levrik There was a missing productName field which caused the change in storage location. I've now fixed that but that would mean the data would be "lost" again. However, I've also added functionality to help migrate the lost data easily so it shouldn't really break your flow. 🙂 Just an FYI.


Document bone list for SkeletonProfileHumanoid

Closes https://github.com/godotengine/godot-docs/issues/7214
This PR adds a big list of bones to SkeletonProfileHumanoid's documentation (courtesy of @fire).
Unlike the provided list, the raw transform is not mentioned. If this is necessary, do say, and let's make them look a little nicer than that.

Fixed right away.

@TokageItLab if you wish you can comment

I recommend that we move the joint rule changes into another pr as documentation changes for missing information isn't compatibility breaking and so this isn't blocked for merging.

To be honest I "held up" this one because I wasn't exactly sure what to define for each joint, still. It's a topic beyond my expertise and I should not be the one writing it.

Okay I will take over the joint rule later also for XRHand.

Thanks!


WOW - also - classes? conda?

Never thought I'd see a shiny-for-python. I was a pretty early adopter of shiny for R and still love it. However, I'm really looking forward to learning about shiny-for-python. Very exciting. I assume this is what @jcheng5 presented at Rstudioconf? Can't wait to see the video.
Question 1: Will there be an option to create classes of inputs with inheritance? In shiny-for-R I often have large UIs that are similar across different tools but with subtle differences. Classes seem like a great way to reuse large chunks of code for UIs.
Question 2: Any plans to make shiny-for-python available on conda-forge?

About conda-forge: please see the following issue.

#280

Question 1: Will there be an option to create classes of inputs with inheritance?

In short, yes, just provide a tagify() method on your class and {shiny} (via {htmltools}) will use that method to serialize an instance of that class to HTML. A basic example:
from htmltools import div, HTMLDocument

class MyUI:
    def __init__(self, *args, **kwargs):
        self._args = args
        self._kwargs = kwargs

    def tagify(self):
        return div(*self._args, **self._kwargs)

doc = HTMLDocument(MyUI("Hello World", style="color: red"))

doc.save_html("hello.html")


cluster fails to start when running with systemd >= v240

When trying to test kube-spawn with systemd v240 or newer, it does not start the whole cluster.
Only one of the nodes becomes active, and only the node gets registered to systemd-machined. Actually all of the nodes should be active. Which node becomes active seems to be pretty random. Sometimes the master is active, sometimes one of the workers is active. In some cases, every node becomes inactive.
On the other hand, when running with systemd v239, everything works fine.
I have not managed to track down its reason. Probably git-bisect between v239 and v240 is needed.

https://github.com/systemd/systemd/blob/401faa3533280b05fee972e0c64885caf4b31e4c/units/var-lib-machines.mount#L10 this might be the reason why it's not spawning.
When I try to spawn it on Ubuntu 19.04 with systemd version 240.
I get this error:
    ubuntu: Download of https://alpha.release.flatcar-linux.net/amd64-usr/current/flatcar_developer_container.bin.bz2 complete.
    ubuntu: Failed to set file attributes on /var/lib/machines/.#flatcar.raw43b38c6ebee86770: Operation not supported
    ubuntu: Created new local image 'flatcar'.
    ubuntu: Operation completed successfully.
    ubuntu: Exiting.
    ubuntu: + sudo GOPATH=/home/vagrant/go ./kube-spawn create --cni-plugin-dir=/home/vagrant/go/bin
    ubuntu: Downloading kubectl
    ubuntu: Downloading 10-kubeadm.conf
    ubuntu: Downloading kubelet.service
    ubuntu: Downloading kubelet
    ubuntu: Downloading kubeadm
    ubuntu: downloading socat
    ubuntu: Copying files for cluster ...
    ubuntu: Generating configuration files from templates ...
    ubuntu: Cluster default created
    ubuntu: + sudo GOPATH=/home/vagrant/go ./kube-spawn start --cni-plugin-dir=/home/vagrant/go/bin --nodes=2
    ubuntu: Warning: kube-proxy could crash due to insufficient nf_conntrack hashsize.
    ubuntu: setting nf_conntrack hashsize to 131072...
    ubuntu: making iptables FORWARD chain defaults to ACCEPT...
    ubuntu: Failed to start cluster: stat /var/lib/machines.raw: no such file or directory

I'm testing current workaround now:
diff --git a/pkg/bootstrap/node.go b/pkg/bootstrap/node.go
index 890e974..9272b7e 100644
--- a/pkg/bootstrap/node.go
+++ b/pkg/bootstrap/node.go
@@ -39,7 +39,7 @@ const (
        ctHashsizeValue        string = "131072"
        ctMaxSysctl            string = "/proc/sys/net/nf_conntrack_max"
        machinesDir            string = "/var/lib/machines"
-       machinesImage          string = "/var/lib/machines.raw"
+       machinesImage          string = "/var/lib/machines/flatcar.raw"
        baseImageStableVersion string = "1478.0.0"
 )


Docs: Introduce project roadmap

Have you considered using another platform for this kind of information? Roadmap is actually more like (epic) issues rather than documentation that needs to be part of repository. Are you sure that Projects or Wiki up here are not a more convenient choice?

E.g. like MUI Public Roadmap.

Have you considered using another platform for this kind of information? Roadmap is actually more like (epic) issues rather than documentation that needs to be part of repository. Are you sure that Projects or Wiki up here are not a more convenient choice?

Well, markdown file was a first simple choice to put my thoughts on paper. But maybe GitHub Project and Issues are far more better for this use case than simple MD file. I'll give it a try and I could return to MD anytime :-)


fix sol2-config.cmake.in

It looks like there was a typo error, set a variable to SOL_INCLUDE_DIRS but use SOL2_INCLUDE_DIRS. And it is also possible that the installer of the library does not use sol2_single and if you do not activate the option SINGLE, you can not use it so you have to check that the target exists before.
This pull request will allow external c++ package manager to use sol2 properly with CMake.

see Microsoft/vcpkg#3766


Revive receipt chain system (needs an RFC)

Many folks are asking about how they can verify transactions as there is no history. The best way to do this is the receipt chain system, but, unfortunately, this has bitrot when we ripped the RocksDB database here out of the daemon.
We can always redirect people to look at a block explorer or run an archive node themselves, but it's better and simpler to take advantage of the receipt chain.

Expose the transactional chain hash function as an MVP


0127 recording ui

For #127

Codecov Report

Merging #142 into 0127-improve-distance-estimation will not change coverage.
The diff coverage is n/a.

@@                        Coverage Diff                         @@
##             0127-improve-distance-estimation    #142   +/-   ##
==================================================================
  Coverage                                38.2%   38.2%
  Complexity                                239     239
==================================================================
  Files                                      45      45
  Lines                                    1424    1424
  Branches                                  133     133
==================================================================
  Hits                                      544     544
  Misses                                    828     828
  Partials                                   52      52

Continue to review full report at Codecov.

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

Codecov Report

Merging #142 into 0127-improve-distance-estimation will decrease coverage by 0.08%.
The diff coverage is 0%.

@@                          Coverage Diff                           @@
##             0127-improve-distance-estimation     #142      +/-   ##
======================================================================
- Coverage                                38.2%   38.12%   -0.09%
  Complexity                                239      239
======================================================================
  Files                                      45       45
  Lines                                    1424     1427       +3
  Branches                                  133      133
======================================================================
  Hits                                      544      544
- Misses                                    828      831       +3
  Partials                                   52       52

Impacted Files
Coverage Δ
Complexity Δ

...doorpositioning/testutil/benchmark/DeviceInfo.java
0% <0%> (ø)
0 <0> (ø)
:arrow_down:

...doorpositioning/testutil/benchmark/BeaconInfo.java
0% <0%> (ø)
0 <0> (ø)
:arrow_down:

...sitioning/testutil/benchmark/RssiMeasurements.java
0% <0%> (ø)
0 <0> (ø)
:arrow_down:

Continue to review full report at Codecov.

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


A11y Contrast Issue with Links

Describe the bug
Currently a tags do not have a large enough contrast ratio to meet WCAG AA requirements.
To Reproduce
I used Accessibility Insights for the Web and WAVE extensions for Chrome to check the contrast.
Expected behavior
Links should have a large enough contrast that they are easy for all users to read.
Screenshots
Current Ratio:

Example color to improve ratio:

Thanks @12vanblart for pointing this out. This has been fixed in c53d3cf. Although Lighthouse is green for now, I'll work on creating a pipeline to do this check every time.


Gilroy dependency

It looks like this library is using a custom font. This should probably not be done under the hood, but rather with a style or theme option.
fontFamily "Gilroy-Medium" is not a system font and has not been loaded through Font.loadAsync.

- If you intended to use a system font, make sure you typed the name correctly and that it is supported by your device operating system.

@nandorojo Agree. I tested on Android and it uses default font if custom doesn't exist. Looks like not the case for iOS.


Support Origin: null in preflight requests

To be consistent with actual requests (fixed in #31), preflight requests should also accept Origin: null.

Released in v0.3.2
@jonfox FYI


MP-8786: Added the following nox types to AllNoxType entity:

CurrencyCode3Field
CurrencyNumberField
DateField
DateTimeField
DateTimeDurationField
DateTimeScheduleField

@originalethanhunt please update with main, re run migration and you can merge it
thks


Crafting Table Loop

Steps to Reproduce
Wait until the bot creates a crafting table, and if you are "lucky", the bot will not craft anything and just add and remove the materials from the crafting table constantly.
Expected Behavior
Bot should not loop and craft without delay.
Actual Behavior
Bot alternates between two states: Mine Cobblestone and Doing stuff in furnace.

What do you mean when you say "if you are lucky?" It will get stuck.
Also, I re-worked some of the ways the bot does crafting. After we merge pull request 233, let me know if you still have issues with this as I have not seen this issue occur in the crafting fixes PR.

Possibly a duplicate

Closing because lack of information.


Connections are not released on pool dispose

Bug Report

Versions

Driver: R2DBC-POSTGRES 0.9.0-M2
Database: PostgreSQL
Java: Java11
OS: Linux

Current Behavior

I expect no connection to stay open after ConnectionPool.dispose() exits.
However idle connections remains in pg_stat_activity and never released.

ConnectionPool.dispose() unexpected behaviour

Steps to reproduce

Input Code
        final LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
        context.getLogger(Logger.ROOT_LOGGER_NAME).setLevel(Level.INFO);
        context.getLogger("io.r2dbc.postgresql.QUERY").setLevel(Level.DEBUG);
        context.getLogger(ConnectionPool.class).setLevel(Level.DEBUG);

        // create pooled connection to postgres
        final ConnectionFactory connectionFactory = ConnectionFactories.get("r2dbc:pool:postgresql://test:test@localhost:5432/postgres");

        // run query
        for(int i = 0; i < 10; i++) {
            DatabaseClient.create(connectionFactory)
                .sql("SELECT 1")
                .then()
                .block();
        }
        // dispose pool
        if (connectionFactory instanceof Disposable) {
            ((Disposable) connectionFactory).dispose();
            System.out.println("POOL DISPOSED");
        }

        // check number of connections in db.
        final ConnectionFactory noPoolCf = ConnectionFactories.get("r2dbc:postgresql://test:test@localhost:5432/postgres");
        DatabaseClient.create(noPoolCf).sql("select application_name, state, query " +
                "from postgres.pg_catalog.pg_stat_activity " +
                "where application_name=$1")
            .bind(0, "r2dbc-postgresql")
            .fetch()
            .all()
            .collectList()
            .doOnNext(connections -> {
                System.out.printf("CONNECTIONS (%d):\n", connections.size());
                connections.forEach(System.out::println);
            })
            .block();

Console Output (0.9.0-M2)

18:30:45.667 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:30:45.829 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.835 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.843 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
18:30:45.853 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:30:45.863 [reactor-tcp-epoll-2] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.863 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.863 [reactor-tcp-epoll-2] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.864 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.864 [reactor-tcp-epoll-2] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
18:30:45.865 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.865 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:30:45.866 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.867 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.868 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.869 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.870 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.871 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.871 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.872 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.873 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.873 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.873 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.874 [reactor-tcp-epoll-3] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.874 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.874 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.874 [reactor-tcp-epoll-3] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.875 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.875 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.875 [reactor-tcp-epoll-3] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
18:30:45.876 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:30:45.891 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.892 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.892 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
18:30:45.895 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:30:45.902 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.902 [reactor-tcp-epoll-5] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.902 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.902 [reactor-tcp-epoll-5] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.903 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.903 [reactor-tcp-epoll-5] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
18:30:45.903 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.904 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:30:45.904 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.905 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.905 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.906 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.906 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.907 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.907 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.908 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.908 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.908 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.909 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.909 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.909 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.910 [reactor-tcp-epoll-4] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.911 [reactor-tcp-epoll-6] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.911 [reactor-tcp-epoll-6] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.912 [reactor-tcp-epoll-6] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
18:30:45.912 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:30:45.921 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.922 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.923 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
18:30:45.925 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:30:45.930 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.931 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.931 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.931 [reactor-tcp-epoll-8] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.931 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.932 [reactor-tcp-epoll-8] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.932 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.932 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.932 [reactor-tcp-epoll-8] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
18:30:45.933 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.933 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:30:45.933 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.934 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.934 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.934 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.935 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.935 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.935 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.935 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.936 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.936 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.936 [reactor-tcp-epoll-7] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.939 [reactor-tcp-epoll-9] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.939 [reactor-tcp-epoll-9] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.940 [reactor-tcp-epoll-9] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
18:30:45.940 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:30:45.950 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.950 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.951 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
POOL DISPOSED
18:30:45.959 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.960 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.960 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.961 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.961 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.962 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.962 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.963 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.963 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.963 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.964 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.964 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.964 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.965 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.965 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.965 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.965 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.966 [reactor-tcp-epoll-10] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.966 [reactor-tcp-epoll-11] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:30:45.967 [reactor-tcp-epoll-11] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:30:45.977 [reactor-tcp-epoll-11] DEBUG io.r2dbc.postgresql.QUERY - Executing query: select application_name, state, query from postgres.pg_catalog.pg_stat_activity where application_name=$1
CONNECTIONS (10):
{application_name=r2dbc-postgresql, state=idle, query=SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')}
{application_name=r2dbc-postgresql, state=idle, query=SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')}
{application_name=r2dbc-postgresql, state=idle, query=SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')}
{application_name=r2dbc-postgresql, state=idle, query=SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')}
{application_name=r2dbc-postgresql, state=idle, query=SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')}
{application_name=r2dbc-postgresql, state=idle, query=SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')}
{application_name=r2dbc-postgresql, state=idle, query=SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')}
{application_name=r2dbc-postgresql, state=idle, query=SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')}
{application_name=r2dbc-postgresql, state=idle, query=SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')}
{application_name=r2dbc-postgresql, state=active, query=select application_name, state, query from postgres.pg_catalog.pg_stat_activity where application_name=$1}

Process finished with exit code 0

Console Output (0.8.7-RELEASE)

18:36:29.499 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:36:29.661 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:36:29.666 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:36:29.675 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
18:36:29.681 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:36:29.683 [main] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
18:36:29.691 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:36:29.692 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:36:29.693 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:36:29.693 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:36:29.694 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:36:29.695 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:36:29.696 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:36:29.696 [main] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
18:36:29.696 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:36:29.697 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:36:29.698 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:36:29.698 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:36:29.699 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:36:29.699 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:36:29.699 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:36:29.700 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:36:29.700 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:36:29.701 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:36:29.701 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:36:29.701 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:36:29.702 [main] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
18:36:29.702 [reactor-tcp-epoll-1] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:36:29.704 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:36:29.704 [main] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
18:36:29.706 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:36:29.706 [main] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
18:36:29.707 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:36:29.707 [main] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
18:36:29.708 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:36:29.708 [main] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
18:36:29.708 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:36:29.709 [main] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
18:36:29.709 [main] DEBUG io.r2dbc.pool.ConnectionPool - Obtaining new connection from the driver
18:36:29.710 [main] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT 1
POOL DISPOSED
18:36:29.728 [reactor-tcp-epoll-2] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SHOW TRANSACTION ISOLATION LEVEL
18:36:29.728 [reactor-tcp-epoll-2] DEBUG io.r2dbc.postgresql.QUERY - Executing query: SELECT oid, typname FROM pg_catalog.pg_type WHERE typname IN ('hstore')
18:36:29.739 [reactor-tcp-epoll-2] DEBUG io.r2dbc.postgresql.QUERY - Executing query: select application_name, state, query from postgres.pg_catalog.pg_stat_activity where application_name=$1
CONNECTIONS (1):
{application_name=r2dbc-postgresql, state=active, query=select application_name, state, query from postgres.pg_catalog.pg_stat_activity where application_name=$1}

Comments
The problem is that after pool.dispose(), new connections are still acquired, probably on another reactor sequence. Also it looks suspicious that 0.9.0-M2 version acquires new connection on each "select 1" query and all 10 pool connections are created every time for every query.
It also looks like dispose may also fail on 0.8.7-RELEASE, but not every time.
I didn't manage to fix this issue. I suspect there are actually two issues:

new pool connections created for every query (this only happens in 0.9.9-M2)
and pool.dispose does not wait for all pool connection to be created in case it is called at the moment new pool connections are created, neither it cancels new connections creation (this might be correct for both 0.8.7 and 0.9.0).

Seems to be a duplicate of #155


Add price rate providers

Add's priceRateProvider field to tokens that then returns a priceRateProviders property on each pool that is the same format as the subgraph - an array of {address, token: {address}}.
The priceRateProvider address is stored in each token rather than in the main pool, but is added to the main pool data when requesting so it looks the same as requesting from the subgraph.

I've added a mutation to sync price rate providers for existing tokens and it appears to work when testing locally. Can run with:
mutation init {
  poolSyncPriceRateProviders
}

I'm waiting for the subgraph to have priceRateProviders also for the gyro pools and yieldFeeExemption as well.


Duplicate Symbols

Hiya, this might be a dumb question, but I want to include tsf.h in a header file, then include that header in main, and its giving me 40 duplicate symbols when I do (I see you said to include it in one file, I've tried pragma onceing it etc etc and its still showing duplicates, any ways around this?

Hi there
Feel free to just include tsf.h in many places, but in one single C/C++ file you need to have
#define TSF_IMPLEMENTATION
#include "tsf.h"

in there. Placement doesn't really matter but it should be after all other #include directives.
Make sure to remove the #pragma once because if you have it in a global header and then the TSF_IMPLEMENTATION define followed by a re-include it needs to allow multiple include'ing of the same file.

cheers for your speedy reply, it's probably my xcode settings thanks for clarifying it isnt a one time include thing ahaha, will edit this if i get it sorted, thanks again!

Yeah so super weird, no idea why this wouldnt work, here's the error, the include in my header and then that header being included in main (Also just realised that is just not how you spell creator)

Can't you try moving the #define TSF_IMPLEMENTATION and #include "tsf.h" below the line #include "SouncfontCreater.hpp"? Not sure if that solves linker errors though. And there is no #define TSF_IMPLEMENTATION anywhere else in all other c/h/cpp/hpp files?
If it's still not working, can you paste the whole build output and not just a screenshot?
#define TSF_STATIC might remove the errors for you but it's not really a great solution because you end up with multiple copies of the same function in the build output which would be avoided if it's resolved correctly.


Register plugins except for records

Describe the feature
The saltax context will register plugins except for records.
Expected behavior
Make an imaginary example of how the feature would work.
st._plugin_class_registry
>>> {'aqmon_hits': straxen.plugins.aqmon_hits.aqmon_hits.AqmonHits,
...
'records': saltax.plugins.s_records.PulseProcessing,
...
'peak_classification_bayes': straxen.plugins.peaks.peak_classification_bayes.BayesPeakClassification,

Proposed implementation
Any rough idea how would you implement this feature?
Not yet...
Potential risk
Will there be any risk after adding this feature?
Not yet...

Done in #21.
st = saltax.contexts.sxenonnt('salt')

st._plugin_class_registry['raw_records']
straxen.plugins.raw_records.daqreader.DAQReader

st._plugin_class_registry['raw_records_simu']
saltax.plugins.s_raw_records.SRawRecordsFromFaxNT

st._plugin_class_registry['records']
saltax.plugins.s_records.SPulseProcessing


Test/secular grail

Could we please name this test something more descriptive of what it does, as opposed to a joke/reference to the existing Holy Grail test?


Expose a way to access base websys element

Hey, is there a way to turn an HtmlElement into a https://rustwasm.github.io/wasm-bindgen/api/web_sys/struct.Element.html?
I need this to call https://rustwasm.github.io/wasm-bindgen/api/web_sys/struct.Element.html#method.get_bounding_client_rect .
It works if I manually add websys as a dependency with the correct flags and do:
let container = container_ref.get().expect("container to already exist");
let dom_rect = web_sys::Element::from(container.deref().clone()).get_bounding_client_rect();

but it would be better to have leptos expose it to avoid compiling websys twice.

What you are doing is correct -- using wasm-bindgen::JsCast also works.
Adding a web-sys dependency with the needed flags is the correct way to handle this. We enable the subset of features required for Leptos itself to compile. If you need additional features you add them in your Cargo.toml and they are unified, not compiled twice.

Oh, good to know, thank you for the quick response!


Small fixes/tweaks.

Just read through the tutorial and it's great! Was my first experience with Rust + wasm and the tutorial w/ wasm-pack made it seem all very easy. I made a few fixes and tweaks along the way.

lol


added numba versions of lumi tools

Speed up the luminosity tool operations using numba. Relies on the numba dictionary type for hash maps, which landed in numba 0.43
LumiData
runs = arrs[b"run"]
lumis = arrs[b"luminosityBlock"]

runslumis = np.zeros((len(runs), 2), dtype=np.uint32)
runslumis[:, 0] = runs[:]
runslumis[:, 1] = lumis[:]

ld = LumiDataOrig("../data/lumi2017.csv")
%timeit ld.get_lumi(runslumis)

1.56 s ± 6.25 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
ld2 = LumiData("../data/lumi2017.csv")
%timeit ld2.get_lumi(runslumis)

10.3 ms ± 48 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
ld.get_lumi(runslumis), ld2.get_lumi(runslumis)

(116.541978639,<PHONE_NUMBER>3899992)
LumiMask
m = LumiMaskOrig("../data/Cert_294927-306462_13TeV_EOY2017ReReco_Collisions17_JSON.txt")
m2 = LumiMask("../data/Cert_294927-306462_13TeV_EOY2017ReReco_Collisions17_JSON.txt")

mask = m(runs, lumis)
mask2 = m2(runs, lumis)
np.all(mask==mask2)

True
%timeit m(runs, lumis)

940 ms ± 3.17 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
%timeit m2(runs, lumis)

212 ms ± 3.52 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

@jpata This looks nice, and keeps the rest of the array-like syntax we're used to at least on the user facing side. So long as that's preserved I'm happy, we can do anything behind the scenes so long as the data received are still columnar and that columnar structure is exposed to the compiler (as it is when doing SoA / offsets operations).

Thanks for the tests!  Too bad windows numba is handicapped.  One pain point we've seen is that recent numba (>0.37) relies on LLVM 7, which can be challenging in some deployments.

Had to introduce a few more things for windows (explicit casting, disable parallel loops), now tests pass. Let me know if there is anything else you would like to see!


Log more info on AWS Exception

On AWS Exception add exception / request / response "var_dump" to log context.
Either add try catch into QueueService or handle it in https://github.com/keboola/syrup/blob/master/src/Keboola/Syrup/Listener/SyrupExceptionListener.php

obsolete


Scrutinizer Auto-Fixes

@jeremykenedy requested this pull request.
It consists of patches automatically generated for this project on Scrutinizer:
https://scrutinizer-ci.com/g/jeremykenedy/laravel-users/

The codes sniffers are fighting one another....


Fix quantized minmax for for some attributes.

The minmax values for TANGENT, JOINTS_0, and WEIGHTS_0, could have been off.

Thanks @FrankGalligan!


Revert "Add SafeWebhook concept"

Reverts codeclimate/codeclimate-services#118
This approach does not work because rewriting the request to be for the IP address fails SSL host verification (which does not use the Host header).

Oops. LGTM.
Is the fix going to be to verify the IP but not re-write the request?

I think that's a non-starter. If you don't re-write the request you can't be sure the resolve you just did is the same answer as the one that ultimately leads to the connection -- the blog post that outlined this mitigation was pretty adamant about that.
Then again, maybe that's better than nothing? /cc @brynary

Yeah, there's a race where a malicious DNS server could change its answer.
It might be possible to do this with Net::HTTP directly: open the connect, inspect the connection object or use #trace to get the server IP, validate that, and then do the post request within the same connection scope. I think that would prevent the malicious DNS issue?

On Sep 27, 2016, at 18:01, Pat Brisbin<EMAIL_ADDRESS>wrote:
I think that's a non-starter. If you don't re-write the request you can't be sure the resolve you just did is the same answer as the one that ultimately leads to the connection -- the blog post that outlined this mitigation was pretty adamant about that.
Then again, maybe that's better than nothing? /cc @brynary
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.


turtlebot3: 2.1.2-1 in 'galactic/distribution.yaml' [bloom]

Increasing version of package(s) in repository turtlebot3 to 2.1.2-1:

upstream repository: https://github.com/ROBOTIS-GIT/turtlebot3.git
release repository: https://github.com/robotis-ros2-release/turtlebot3-release.git
distro file: galactic/distribution.yaml
bloom version: 0.10.7
previous version for package: null

turtlebot3
* use static param types for Galactic
* fix SensorState msg
* rename and update nav2 params
* modify robot_state_publisher
* fix odometry bug
* Contributors: jhbirdchoi, David Park, Ashe Kim, Will Son

turtlebot3_bringup
* rename and update nav2 params
* modify robot_state_publisher
* Contributors: David Park, Ashe Kim, Will Son

turtlebot3_cartographer
* rename and update nav2 params
* Contributors: Ashe Kim, Will Son

turtlebot3_description
* None

turtlebot3_example
* None

turtlebot3_navigation2
* rename and update nav2 params
* Contributors: Ashe Kim, Will Son

turtlebot3_node
* use static param types for Galactic
* fix SensorState msg
* fix odometry bug
* Contributors: jhbirdchoi, Ashe Kim, Will Son

turtlebot3_teleop
* None

@ROBOTIS-Will this release failed on the build farm because Ubuntu release information was not created, when running the release locally I noticed these rosdep errors
Could not resolve rosdep key 'dynamixel_sdk'
Failed to resolve dynamixel_sdk on ubuntu:focal with: Error running generator: Failed to resolve rosdep key 'dynamixel_sdk', aborting.
dynamixel_sdk is depended on by these packages: ['turtlebot3_node']
<== Failed
Could not resolve rosdep key 'hls_lfcd_lds_driver'
Failed to resolve hls_lfcd_lds_driver on ubuntu:focal with: Error running generator: Failed to resolve rosdep key 'hls_lfcd_lds_driver', aborting.
hls_lfcd_lds_driver is depended on by these packages: ['turtlebot3_bringup']
<== Failed

The default behavior after these errors is to abort the bloom release however you overrode the default and continued. Because Ubuntu is the only release platform this means that no binaries are actually generated for this release.

@nuclearsandwich Thanks a lot for checking the error. I thought that once those dependent packages are released in binary, it would fix the dependency issue. I'll PR again after fixing them.


Links to events do not update on date change

Links to events created and managed by a Full Note local calendar do not update in other files when the event date (and therefore the file name of the event) is changed via Full Calendar.
To Reproduce
Steps to reproduce the behavior:

Create a link to a Full Calendar full note event from other .md file in the vault
In the Full Calendar, drag and drop the event to another day
The link in the .md file will not update and will become blank

Expected behavior
Links to events get updated when date changes are performed in Full Calendar.
When I change the date by renaming the event note manually, the links in other files get updated and the date changes in the Full Calendar as well. I suspect that when the date is changed by drag and drop the old event note gets deleted a new event note is created rather than simply renamed?

This is in fact a bug -- vault.rename() does not update backlinks. Thanks for submitting!

This is a duplicate of #64. A fix is on the way!


Add --dotenv flag to load .env file

Fixes #230. I'm wondering if we should move require('dotenv') into the if statement. Since all imports are added to the top of the file in the whole project I kept that standard.

🙏


Extend Device Model to include name, earnings and formatted bandwidth

This is a small PR to extend the Device model to include a few missing properties from the EarnApp dashboard API. I've also added some nice formatted properties for display purposes.

Hey. Thanks for the PR.


Use an array instead of an uninitialized wild pointer.

Using wild pointers is a dangerous practice, although you may not
encounter errors now.

@garenchan you are dedicated to this wow. If u know C, you could maybe make more lessons and continue this! 😃:DDDDD I bet people would like that!

I don't think knowing C is enough. You also need to know enough about the operating system. Unfortunately, I know very little about either.

@garenchan Oh. Yeah I agree with that. I assume you at least know a little, because you made the commit to kernel.c
Also can you check out my project that I based off of this, and I am now re-writing a lot of?
https://github.com/Menotdan/DripOS

OK ! I will check out your project later and I am also interested in your changes.

@garenchan Pre thanks for the visit! I am tidying up the README right now. (I hope the markdown works)

I don't think knowing C is enough. You also need to know enough about the operating system. Unfortunately, I know very little about either.

Quick edit to that: I don't think knowing C is enough. You also need to know enough about how the computer works, and also assembly
The operating system is what you are coding.

I mean if I want to add more lessons and continue this, I need to know enough about the operating system.
Otherwise I might not know about memory management, file system, process management, and so on.

@garenchan Oh I see. You still should also probably know assembly. Especially if you wanted 64bit mode

Yes, I agree with you!


vscode 1.63.0 broke runTests of @vscode/test-web with extensionPaths

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

VS Code Version: 1.63.0
OS Version: Darwin x64 20.6.0

Steps to Reproduce:

git clone https://github.com/VSpaceCode/VSpaceCode.git
cd VSpaceCode && npm install && npm run compile && npm run test-web

ACTUAL: The output indicated the additional extension (dependent extension) provided failed to load which caused the extension being tested failed to activate.
Ignoring following additional builtin extensions as there is an error while fetching them from gallery [ null ] Cannot read properties of undefined (reading 'toLowerCase')

EXPECTED:
The additional extensions provided loads correctly.

Verified that this behavior doesn't exist in vscode 1.62.3.
Steps:

git clone https://github.com/VSpaceCode/VSpaceCode.git
Change version: 'stable', to version: 'sources',/ of runTest-web.ts
git clone https://github.com/microsoft/vscode.git
cd vscode && git checkout 1.62.3 && yarn && yarn compile && yarn web
cd ../VSpaceCode && npm install && npm run compile && npm run test-web

@sandy081 The problem is with the isUri test:


Can't Give all permissions to owner/op

Hi, I made a post here a while back asking about adding the * perm to my server. It doesn't seem to work and I've tried all of the main options, I've tried * and then the following ones too: . '*'.  and none of them seem to work. I'm running a 1.8.9 server which your plugin page says is supported, but me and the other owners are trying to do things after switching over from essentials, but we're constantly being blocked by LP saying we dont have permission, how do I fix this?

What happens if you specifically include the permissions for essentials as: essentials.* as additional line?
I am running the latest MC server and it works fine for me setting: * with value: true

When I do it for specific plugins, it works, but the wildcard * doesnt work on 1.8.9 which is the version of one of our prominent servers. It seems to work on newer version but not on 1.8

Paste your LuckPerms config in https://bytebin.lucko.me/ and send the link over.
What LuckPerms version? ("latest" is not a version).
Any errors on console?
What server software are you running?
Basic debugging information 👏

Please consider using the issue template next time...