Handle null

Hi, I'm trying to move my current cursor paging implementation to this library and I'm having some issues with null properties.
reading about that https://github.com/mrahhal/MR.EntityFrameworkCore.KeysetPagination/blob/main/docs/caveats.md#null it does not seems to be supported (we currently need computed column to get rid of the null)
It would be nice to handle null properties for ordering without having to add computed columns.
Wouldn't it be possible to put all the null either at the end or at the beginning by comparing with Null (is null or is not null) on all properties (sql allow to check null on non nullable column) so something like
where
property1 is null or property1 > cursor.property1
or
(property1 = cursor.property1 and (property2 is null or property2 > cursor.property2)
or
(property1 = cursor.property1
    and (property2 = cursor.property2 and  (property3 is null or property3 > cursor.property3)
)

 var whereExpression = Expression.GreaterThan(Expression.Convert(sortProperties[0], orderProperties[0].Type), orderProperties[0]);
        for (var i = 1; i < sortProperties.Count; i++)
        {
            var prop = ((PropertyInfo)orderProperties[i].Member);
            var filterBy = prop.GetValue(cursor);

            var paramIsNull =
                Expression.OrElse(
                    Expression.Constant(filterBy == null, typeof(bool)),
                    Expression.Equal(Expression.Convert(sortProperties[i - 1], orderProperties[i - 1].Type), orderProperties[i - 1])
                );

            whereExpression = Expression.OrElse(
                whereExpression,
                Expression.AndAlso(
                    paramIsNull,
                    Expression.GreaterThan(Expression.Convert(sortProperties[i], orderProperties[i].Type), orderProperties[i])
                )
            );
        }
      ```

Hi. There's a way to make this work now actually without a computed column, but first I want to explain why your suggestion doesn't work.
More details and a discussion in https://github.com/mrahhal/MR.EntityFrameworkCore.KeysetPagination/issues/24#issuecomment-1298675672, at the time I deemed this too complicated to handle on the library level, especially with needing to make some db related assumptions.
The solution you suggested doesn't give the expected result. Depending on the sorting behavior of the db the result will change, and no matter the behavior you won't be getting the right results anyway.
Here's what I mean. Trying to get the records after the following reference (data taken from the test project):
Id	CreatedNullable                 CreatedComputed
90	2022-05-14 13:26:38.9979962	2022-05-14 13:26:38.9979962

With a computed column that sets NULL dates to a min value:
SELECT * FROM [KeysetPaginationTest].[dbo].[MainModels]
WHERE (CreatedComputed > '2022-05-14 13:26:38.9979962')
   OR (CreatedComputed = '2022-05-14 13:26:38.9979962' AND Id > 90)
ORDER BY CreatedComputed ASC, Id ASC

Id	CreatedNullable                 CreatedComputed
92	2022-05-14 13:28:38.9979962	2022-05-14 13:28:38.9979962
94	2022-05-14 13:30:38.9979962	2022-05-14 13:30:38.9979962
96	2022-05-14 13:32:38.9979962	2022-05-14 13:32:38.9979962
98	2022-05-14 13:34:38.9979962	2022-05-14 13:34:38.9979962

This is the right result. It has reliable performance and consistent results not matter the db specific behavior.
With your suggested query:
SELECT Id, CreatedNullable, CreatedComputed FROM [KeysetPaginationTest].[dbo].[MainModels]
WHERE (CreatedNullable is NULL OR CreatedNullable > '2022-05-14 13:26:38.9979962')
   OR (CreatedNullable = '2022-05-14 13:26:38.9979962' AND Id > 90)
ORDER BY CreatedNullable ASC, Id ASC

Id	CreatedNullable                 CreatedComputed
1	NULL	1900-01-01 00:00:00.0000000
3	NULL	1900-01-01 00:00:00.0000000
5	NULL	1900-01-01 00:00:00.0000000
7	NULL	1900-01-01 00:00:00.0000000
9	NULL	1900-01-01 00:00:00.0000000
...
93	NULL	1900-01-01 00:00:00.0000000
95	NULL	1900-01-01 00:00:00.0000000
97	NULL	1900-01-01 00:00:00.0000000
99	NULL	1900-01-01 00:00:00.0000000
92	2022-05-14 13:28:38.9979962	2022-05-14 13:28:38.9979962
94	2022-05-14 13:30:38.9979962	2022-05-14 13:30:38.9979962
96	2022-05-14 13:32:38.9979962	2022-05-14 13:32:38.9979962
98	2022-05-14 13:34:38.9979962	2022-05-14 13:34:38.9979962

This is obviously not right as it also selects all records with CreatedNullable == null. And it gets even weirder with a reference that has CreatedNullable == null.
The reason one might think this might work is because they're still thinking in terms of offset pagination. This won't work in keyset.

That said, after https://github.com/mrahhal/MR.EntityFrameworkCore.KeysetPagination/issues/37 was done, you could now move this coalescing from a computed column to inside the keyset itself. An example:
b => b.Descending(x => x.Created ?? DateTime.MinValue).Descending(x => x.Id)

This was only released yesterday so make sure you have the latest version before trying it out.
I still haven't added this alternative to the caveat, but you'll need to be aware that this might not give you the best performance compared to a computed column. I'll need to benchmark this.

You mentioned your current cursor paging implementation, how do you handle the nulls there?

I guess the current paging implementation may seems to work but does not in some cases

Great! Closing this as it seems the issue is completely resolved with keyset coalescing.


27 P - Update links to security policy in Volunteer sign-up and/or Members' Area

Version for Transcribers: https://freeukgen.page.link/SecPab
E2, U10, S7, C8: P27

Added link in Members page on test3

@DeniseColbert to take a look.

Yes, let's include this within the volunteer sign-up process (tick box for 'read').

@PatReynolds to create new stories based on the above and to allow users to then access the policy after having signed up/ticked. We can then close this one.

Policies all  now accessible on 'Free UK Genealogy Policies' button, so no new story made.
Story already exists to add to sign up - #745
New story made on addition to user profile #788
Task complete, so now closing.


Status code not set in response

In case of 404 status_code is not getting set in response. Im are using api_v2 branch.
chargify = Chargify2::Client.new(api_id: <masked>, api_password: <masked>,  base_uri: 'https://api.chargify.com/api/v2')
chargify.customers.read(1)
<Chargify2::Response:0x007f8c1d878ec0 @resource=#<Chargify2::Customer>, @meta=#<Hashie::Mash errors=[#<Hashie::Mash attribute=nil kind="not_found" message="The requested Customer could not be found.">]>, @status_code=nil, @errors=[#<Hashie::Mash attribute=nil kind="not_found" message="The requested Customer could not be found.">]>
When I tried to hit the api directly, i could see status_code being sent in the chargify api response. So guessing the issue to be in the gem.
curl -v -u  <api_id>:x -H Accept:application/json -H Content-Type:application/json https://mavenhive-ghuk.chargify.com/customers/1
* Hostname was NOT found in DNS cache
*   Trying <IP_ADDRESS>...
* Connected to mavenhive-ghuk.chargify.com (<IP_ADDRESS>) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
* Server certificate: *.chargify.com
* Server certificate: COMODO RSA Organization Validation Secure Server CA
* Server certificate: COMODO RSA Certification Authority
* Server certificate: AddTrust External CA Root
* Server auth using Basic with user 'dvLih3EFHkpluaBrGP7A'
> GET /customers/1 HTTP/1.1
> Authorization: Basic ZHZMaWgzRUZIa3BsdWFCckdQN0E6eA==
> User-Agent: curl/7.37.1
> Host: mavenhive-ghuk.chargify.com
> Accept:application/json
> Content-Type:application/json
>
< HTTP/1.1 404 Not Found
< Cache-Control: no-cache, private
< Content-Type: application/json; charset=utf-8
< Date: Wed, 04 Mar 2015 11:27:09 GMT
< P3p: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
* Server nginx + Phusion Passenger is not blacklisted
< Server: nginx + Phusion Passenger
< Set-Cookie: _chargify_session=BAh7CEkiD3Nlc3Npb25faWQGOgZFVEkiJTRlMjNlMGVjZGYzOWRkZDAyYmVlZDViOGJmNGM2MzhjBjsAVEkiF3NlbGxlcl9jcmVkZW50aWFscwY7AEZJIgGAZTJlYjBjOTViOWRkZWY2NWYwYTNlZDk4NDYwYmNjN2FlYzFmNzJmNjgxNWRmOWYyMTI4MGJjODgzMmY2NzIyNTczMzlhMjA2NzI5YjU4Y2RiM2RlOWY3YjJhN2YwZTIwMDQ2NzE5YmY0YTM5M2IxYjVlMmY0MzY4MTE0YjU2YzAGOwBGSSIac2VsbGVyX2NyZWRlbnRpYWxzX2lkBjsARmkCsjw%3D--b0cc8c93ff92f3de8d3abf63671acb887fa8b82b; domain=.chargify.com; path=/; secure; HttpOnly
< Status: 404 Not Found
< X-Frame-Options: SAMEORIGIN
< X-Powered-By: Phusion Passenger
< X-Rack-Cache: miss
< X-Ratelimit-Limit: 1000000
< X-Ratelimit-Remaining: 999982
< X-Ratelimit-Reset:<PHONE_NUMBER>
< X-Request-Id: f2ab412e-9ab7-464a-88df-695e555b852a
< X-Runtime: 0.029060
< X-Ua-Compatible: IE=Edge,chrome=1
< Content-Length: 1
< Connection: keep-alive
<
* Connection #0 to host mavenhive-ghuk.chargify.com left intact

Hello Chargify team,
I am @MonikaMahanthappa's colleague and I ran into same issue (nil @status_code resulting in response.successful? to be false even though the API call was successful). This time, it was the POST /allocations API of V2.
When I switched our code to hit API V1 Allocations endpoint, it started working.
I suspect something has changed recently in API V2 which is causing this bug in this gem. I will try to report to Chargify support and see what I can find.
Meanwhile, we have stopped using this gem and fallen back to our custom Chargify api client.

Thanks for the report @bhavinjavia. We will look into the issue further. If you find any more information please let us know.


Some web servers respond with 200 (without OK)

So, more general regex would be without OK after 200

It's true that the reason-phrase (OK) is not a requirement of the HTTP spec, however, I'm going to leave it in there. Since it is just a default value, it is intended to be changed by the user if it doesn't match their target's response. I also think leaving the full default regex demonstrates more clearly to new users what the regex is doing.

Thank you for the pull request! Let me know if there are any other issues you stumble upon :)


Overall colors handling improvements

The commits from the branch "svelte-5" also appear, so if you review that, you can start at "refactor: remove unused package"

Great job!


Subscriptions wiped. Investigation leads to JSON-RPC

No the problem is not the JSONRPC on it's own but rather the fact that all subscriptions transmitted on each request.
Say you open 10 channels in tabs and then ctrl+tab to quickly subscribe to all of them. After clicking follow 10 times on 10 different tabs, how many additional subscriptions will that result in?
The answer is 1. The last page is the only subscription that stuck. My educated guess was that instead of "adding" it just "sets" the subscriptions.
So i did some tests in Postman.
request lifted from clicking "follow" a request POST is sent to https://api.lbry.tv/api/v1/proxy?m=preference_set
Original Payload:

{
	"jsonrpc": "2.0",
	"method": "preference_set",
	"params": {
		"key": "shared",
		"value": "{\"type\":\"object\",\"version\":\"0.1\",\"value\":{\"tags\":[],\"subscriptions\":[\"lbry://@beneater#6c412e4afc8258ab65d83900b46289d68abc3872\",\"lbry://@GameDevMadeEasy#af48990b81e53fe37d41db49577a11256e4bedc0\",\"lbry://@gamefromscratch#199eba05b6ecccab919e26a0cb7dacd544f25700\",\"lbry://@InconvenientTruths#c1d55ae7b8a67e7a26d1511a462203173122e61d\",\"lbry://@johnstossel#70e56234217f30317c0e67fd0eede6e82b74aea0\",\"lbry://@JordanBPeterson#c5724e280283cd985186af9a62494aae377daabd\",\"lbry://@TheQuartering#113515e893b8186595595e594ecc410bae50c026\",\"lbry://@Thoughty2#b6e207c5f8c58e7c8362cd05a1501bf2f5b694f2\",\"lbry://@TimcastIRL#8954add966e59c9cba98a143a3387f788a36d7be\",\"lbry://@UpperEchelonGamers#3772507e49303f6db071f6361494deaafcbbf4cb\",\"lbry://@veritasium#fb364ef587872515f545a5b4b3182b58073f230f\",\"lbry://@ZoomingIn#69b3c0cae5d30be16423b931c4552ed050a244b0\"],\"blocked\":[],\"settings\":{\"automatic_dark_mode_enabled\":false,\"autoplay\":true,\"dark_mode_times\":{\"from\":{\"formattedTime\":\"21:00\",\"hour\":\"21\",\"min\":\"00\"},\"to\":{\"formattedTime\":\"8:00\",\"hour\":\"8\",\"min\":\"00\"}},\"floating_player\":true,\"hide_balance\":false,\"hide_reposts\":true,\"hide_splash_animation\":false,\"instant_purchase_enabled\":false,\"instant_purchase_max\":{\"amount\":0.1,\"currency\":\"LBC\"},\"show_mature\":false,\"theme\":\"dark\"},\"app_welcome_version\":0,\"sharing_3P\":false}}"
	},
	"id":<PHONE_NUMBER>383
}

All my subscriptions remain intact. Nothing out of the ordinary.
Doctored Payload:

{
	"jsonrpc": "2.0",
	"method": "preference_set",
	"params": {
		"key": "shared",
		"value": "{\"type\":\"object\",\"version\":\"0.1\",\"value\":{\"tags\":[],\"subscriptions\":[],\"blocked\":[],\"settings\":{\"automatic_dark_mode_enabled\":false,\"autoplay\":true,\"dark_mode_times\":{\"from\":{\"formattedTime\":\"21:00\",\"hour\":\"21\",\"min\":\"00\"},\"to\":{\"formattedTime\":\"8:00\",\"hour\":\"8\",\"min\":\"00\"}},\"floating_player\":true,\"hide_balance\":false,\"hide_reposts\":true,\"hide_splash_animation\":false,\"instant_purchase_enabled\":false,\"instant_purchase_max\":{\"amount\":0.1,\"currency\":\"LBC\"},\"show_mature\":false,\"theme\":\"dark\"},\"app_welcome_version\":0,\"sharing_3P\":false}}"
	},
	"id":<PHONE_NUMBER>383
}

as expected, all my subscriptions disappeared.
Conclusion: You shouldn't send the entire state to the client and expect it to send it back flawlessly. You need to change to "adding" instead of "setting".
Note: This was tested on Odysee.

Thanks for opening the issue and sorry to hear about the subs getting lost! Shoot us an email at<EMAIL_ADDRESS>with your email and we'll see if we can get them looked up on our end.
This is a known limitation at this time if you open 10 separate tabs and subscribe separately on each of them. We plan to make a few improvements with https://github.com/lbryio/lbry-desktop/issues/4830 to handle more cases and will make sure to note this one as well

Done and done, thanks for the hard work!


Bugsnag native service status for JS part of application [React Native]

Description
After upgrade from the old deprecated version to the new one, we faced an issue when our app crashed on the splash screen without reasonable error.
Unfortunately, we weren't able fast to figure out what was the reason for that crushes. We found that we have an issue with our CI and in this particular case Bugsnag API key was not provided.
We also have a check for preventing service start with an empty key from the native side:
if(BuildConfig.BUGSNAG_API_KEY != null && !BuildConfig.BUGSNAG_API_KEY.isEmpty()) {
   Bugsnag.start(this);
}

In our case key was empty and the native service didn't start. But with the current implementation JS part of Bugsnag service basically don't know about the state of native service. And calling Bugsnag.start crashed the app on the splash screen.
It will be great to have from JS part method of the flag to verify the current status of native service for preventing such kind of errors.
Another possible option is suppressing error in the described case https://github.com/bugsnag/bugsnag-js/blob/next/packages/react-native/src/config.js#L93.
Thanks in advance

Hi @runewizard - just to check I am understanding you correctly. When the Bugsnag API key isn't properly configured, your app is crashing as a result of the error on this line. In cases where the API key is not configured in the native layer, you would prefer to see that Bugsnag.start from the JS layer does not cause a crash in your app?

Hey @luke-belton!
We didn't even run native service unless the API key has been provided.
In the case where native service is not running, it would be nice to have no failures when calling the JS layer. Or, alternatively, Bugsnag could provide an API to check the state of the native service from the JS layer.

Thanks! In that case, for your current setup we'd recommend conditionally starting your JS layer in the same way as your native layer based on availability of the API key in the current build environment. It is by design that the JS layer throws an error if the native layer is not running.
You could also consider using the enabledReleaseStages config option if you want to conditionally start Bugsnag based on your environment - this ensures that your app better emulates your production environment across all release stages. I would also reassure you that the Bugsnag API key can only be used to send error reports/source maps to Bugsnag so you could consider storing it directly in your Build Config, rather than (presumably) injecting it through your CI (see discussion e.g. at https://github.com/bugsnag/bugsnag-js/issues/595#issuecomment-514578712).


[#374] Avoid collectors interruption due to errors when possible

opentrials/opentrials#374

Good to go :+1:


Add Total Count Of Chapters To Search Bar Placeholder

Resolved the merge conflicts, hope this works

Resolved the merge conflicts, hope this works

I understand it's your first contribution here. Please consider these steps to make the following PRs better:

follow the issue description as it contains valuable details
use automated checks for the code (pre-commit)
test your code locally -- check that it looks/works as expected (the requested functionality didn't work as parts of logic hadn't been implemented at all or had been implemented incorrectly)

Thank you for the contribution @ShashaankS! I'm merging this in!

Resolved the merge conflicts, hope this works

I understand it's your first contribution here. Please consider these steps to make the following PRs better:

follow the issue description as it contains valuable details
use automated checks for the code (pre-commit)
test your code locally -- check that it looks/works as expected (the requested functionality didn't work as parts of logic hadn't been implemented at all or had been implemented incorrectly)

Thank you for the contribution @ShashaankS! I'm merging this in!

Thanks a lot @arkid15r for the first contribution experience, I'll keep the above pointer in mind for further contributions.


[Key Request] Table 5108 "Sales Line Archive" - Two new keys

For page sorting we need two new keys with Standard fields only. Currently it is not passible to use a table Extension to create new keys on existing tables.
The new keys are:
1. First key
Document Type,Sell-to Customer No.,Type,No.
2. Second key
Document Type,Bill-to Customer No.,Type,No.

We are going to deliver possibility for partners to add table keys soon. Closing this old request for now.


Write headless multiple provider auth manager

Currently we use the google auth lib's console auth for managing a localhost server to serve as a callback for it's web auth.
We would like to enable other auth providers or a simple ARENA account in the future through Python.
To do this, we need to replicate the JWT exchange mechanism Google uses for any auth provider ARENA could provide.

We have had requests for isolated systems, so this would accommodate that if used with a simple ARENA account.


Accessing the underlying socket.IO server

I'm trying to access the socket io server so I can create my own events to be called from client side
without having to bind it to some component.
I managed to get a reference to the server, but it's really ugly:
from fastapi import FastAPI
from seamless.middlewares import ASGIMiddleware as SeamlessMiddleware

app = FastAPI()

seamless_app = SeamlessMiddleware(app)

server = seamless_app.server

# using server here

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(seamless_app, host="localhost", port=8000)

This is not so straight forward and it's not ideal, since now the SeamlessMiddleware now wraps FastAPI instead
of FastAPI wrapping SeamlessMiddleware which is better (since FastAPI also handles errors nicely).

This is fixed with #33


Drag n drop stops working when using columnHelper

TanStack Table version
8.12.0
Framework/Library version
18.2.0
Describe the bug and the steps to reproduce it
Drag n drop (using dnd-kit) breaks when table columns are created using createColumnHelper.
I almost ripped my hair out wondering what I did wrong, but managed to work around the issue by passing the attributes and listeners from the useSortable hook in the cell context, then placing them directly on the drag handle button. If I just rendered the handle component (which calls useSortable with the correct id), it just refused to work in my case and in the react-table dnd example it stopped working after the first drag n drop.
I tried removing the useMemo thinking maybe it's the cause of the issue, but the result was the same.
In the end I ended up trying to create the columns the "traditional" way without using the helper, and it worked fine!
To reproduce:

Go to https://tanstack.com/table/latest/docs/framework/react/examples/row-dnd
Delete columns variable
Replace with:

const columnHelper = createColumnHelper<Person>();

const columns = [
  columnHelper.display({
    id: 'drag-handle',
    header: 'Move',
    cell: ({ row }) => <RowDragHandleCell rowId={row.id} />,
    size: 60
  }),
  columnHelper.accessor('firstName', {
    cell: (c) => c.getValue(),
    header: () => Last Name
  }),
  columnHelper.accessor('lastName', {
    id: 'lastName',
    cell: (c) => c.getValue(),
    header: () => Last Name
  }),
  columnHelper.accessor('age', {
    header: () => 'Age'
  }),
  columnHelper.accessor('visits', {
    header: () => Visits
  }),
  columnHelper.accessor('status', {
    header: 'Status'
  }),
  columnHelper.accessor('progress', {
    header: 'Profile Progress'
  })
];

Now after the first drag n drop, it stops working.
Am I doing something wrong? It looks like a bug to me :)
Your Minimal, Reproducible Example - (Sandbox Highly Recommended)
https://tanstack.com/table/latest/docs/framework/react/examples/row-dnd
Screenshots or Videos (Optional)

Do you intend to try to help solve this bug with your own PR?
No, because I do not have time to dig into it
Terms & Code of Conduct

[X] I agree to follow this project's Code of Conduct
[X] I understand that if my bug cannot be reliable reproduced in a debuggable environment, it will probably not be fixed and this issue may even be closed.

@sherman89  This appears to just be happening because you aren't memoizing the columns anymore. The columnHelper is not a replacement for memoization. It only exists to add more TValue type-safety. If you don't want to use useMemo, you can just define the columns outside of the component, and that will also work fine.

@KevinVandy Oh 😅 oops... Thanks!


ChatPrototype Activity: issue in UI

hey @llaske
In the chat prototype activity when we resize the textarea which it at the bottom then scrollbars appear and if we try to drag it more then the emoji buttons overlap the text that is written below the textarea container.
Suggested fix:
I think we should just allow vertical resizing for the textarea which would solve the horizontal scrollbar issue and it will also fix the overlapping issue for buttons. Pls give your thoughts on it.
Reference Video:

https://user-images.githubusercontent.com/96445392/225383652-4bfbc5a3-2be5-4907-adc9-0852d3ed7a17.mp4

Chat activity UI need to be rethink, I'm not in favor of doing minor style change.

@llaske I agree that a more better approach may be required to improve the user experience. I was wondering if you could provide more information on what areas you think I could focus on to improve the chat activity UI.

Hey! @llaske would you mind if I propose some designs for ChatPrototype Activity?
I will redesign it if we can reach a conclusion. I am anyways NOT working for GSOC this year, so was waiting for the submission period to end before making any contributions to SugarLabs, so that I don't snatch someone's contribution opportunity unknowingly.  But since this is too large of an Issue, I don't think that those aiming for GSOC wanted to continue with this in the short period left.

@Shreyas-SAS Yes you could suggest something.

Okay. I will share some figma/photoshop designs here for your approval.

Some proposals and discussions here https://discordapp.com/channels/1078051575580336249/1078053527269675039/1097268214263713942

Oh great @llaske, I will refer to them and try to come up with a final design. Got delayed a bit due to exams.
can you please assign me this issue so that 2 people don't end up investing time on the same?
Also, I will complete the task by 20, May. would it be alright?

@llaske Can you please add me to the discord channel, I am not able to view them from the link. Maybe it is a private server.

You can get the link to join the Discord on the Sugarizer web site

Expected UI is describe here https://github.com/llaske/sugarizer/issues/1356


cross compilation for elk audio os

I am trying to cross-compile a plugin with DISTROH DPF
When the LV2 assets are built the following error happens"
make[1]: Entering directory '/src/dpf/utils/lv2-ttl-generator'
aarch64-elk-linux-gcc  -mcpu=cortex-a72 -march=armv8-a+crc   -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security --sysroot=/opt/elk/1.0.0/sysroots/cortexa72-elk-linux lv2_ttl_generator.c -Wall -Wextra -pipe -MD -MP -fno-gnu-unique -fPIC -DPIC -DNDEBUG -O3 -ffast-math -fdata-sections -ffunction-sections -fvisibility=hidden -std=gnu99  -O2 -pipe -g -feliminate-unused-debug-types  -o ../lv2_ttl_generator -fdata-sections -ffunction-sections -Wl,-O1,--as-needed,--gc-sections -Wl,--strip-all -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed  -Wl,-z,relro,-z,now -Wl,--no-undefined -ldl
make[1]: Leaving directory '/src/dpf/utils/lv2-ttl-generator'
/src/dpf/utils/generate-ttl.sh: line 38: /src/dpf/utils/lv2_ttl_generator: No such file or directory
make: *** [Makefile:30: gen] Error 127

Steps to reproduce

build the https://github.com/elk-audio/elk-audio-os-builder (see README)
run the docker docker container docker run --name elk-cross-compiler -it elk-audio-os-builder
install the SDK https://github.com/elk-audio/elkpi-sdk

wget https://github.com/elk-audio/elkpi-sdk/releases/download/1.0.0/elk-glibc-x86_64-elkpi-audio-os-image-cortexa72-raspberrypi4-64-toolchain-1.0.0.sh
chmod +x elk-glibc-x86_64-elkpi-audio-os-image-cortexa72-raspberrypi4-64-toolchain-1.0.0.sh
./elk-glibc-x86_64-elkpi-audio-os-image-cortexa72-raspberrypi4-64-toolchain-1.0.0.sh -y

activate the cross-compiler: . /opt/elk/1.0.0/environment-setup-cortexa72-elk-linux
clone and build the plugin

git clone https://github.com/michaelwillis/dragonfly-reverb.git
cd dragonfly-reverb/
git submodule update --init --recursive
make

Potential problem
It looks like the the v2-ttl-generator is built with the cross compiler for the target platform and can then not be executed on the host platform.
file dpf/utils/lv2_ttl_generator
/src/dpf/utils/lv2_ttl_generator: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=b467bc5a455b4b9a5ca47dadf95a27d60efdbba8, for GNU/Linux 3.14.0, stripped

I am not experienced in cross-compilation, therefore I wanted to ask what would be best practice to resolve this. Maybe this issue has to be solved on the plugin which is uses DPF (dragonfly-reverb)?

you can use qemu-user-static package to run these binaries on any system, or setup binfmt-support to do it automatically.
both dpf makefile and cmake already have ways to specify this.
under make you can use make EXE_WRAPPER="qemu-aarch64}-static -L /path/to/toolchain/sysroot" and cmake uses CMAKE_CROSSCOMPILING_EMULATOR
just set those accordingly if not wanting to deal with the binfmt stuff, which tends to need support from the outer layer of docker (ie, the host) so it is not always as easy to set up

note that whatever using elk or Pi, or ubuntu core or something else it does not matter.
the procedure is always the same, and it is known to work everywhere I have tested so far.

thank you so much @falkTX
It worked like a charm when after installing qemu-user-static on the container with
sudo apt-get install qemu-user-static

and then building dragonfly-reverb  with
make EXE_WRAPPER="qemu-aarch64-static -L /opt/elk/1.0.0/sysroots/cortexa72-elk-linux"


State and JobParameter documents never get deleted

I'm using MongoStorageOptions default values. I'm running on azure and my app is always on. Not one document has been deleted after the default expiration time. Is this a known issue or is there something else I need to configure?

@asciutto990,
Looks like a bug to me. Do you know how the SqlStorage behaves?
Thanks,
Jonas

I haven't tested it out but as per it's documentation, successful jobs should be cleaned up upon expiration.

Fixed with #66

Great! How long until this is available on NuGet?

Not long.
Please note this is introduces breaking changes which will require you to drop your jobs db.
We do have some other breaking changes we would like to introduce now, so we don't spread that out on multiple releases.


manifest: set the clipped manifest URL correctly for storj

This is a bit of a workaround (hack) to correctly set storj URLs for the clipped manifest file. A follow-on PR will be used to set the output relative path in the request directly which will will simplify this logic.

Noticed this issue when I came online this morning and tested, had the same idea to fix in this way ha 👍


Do PDF files have to be local? Getting Error while updating 'path' with external absolute URL

On RN 0.26 and PDF Viewer 0.3.2, getting Error while updating 'path' of a view managed by: RCTPDFViewAndroid when using an external absolute URL https://...example.pdf etc.
Should that work as the documentation is not clear as to whether all PDF's have to be stored locally in the app to view.
Thanks,
Vince

In case this helps anyone there are examples included in this module which demonstrate how to load the file from a URL to local storage and then view, in our case we couldn't use this particular route as the file needed authentication headers adding, so we used this module as well as Fetch blob (v0.5.0) https://github.com/wkh237/react-native-fetch-blob to grab the file, hold it in cache and then display it using PDF View.
Thanks,
Vince

@vince-rowe this is exactly what I am trying to achieve.. could you share code?


IDAssigner: collectCallSiteDominators

Problem
I've started looking at pieces of code related to indirect calls, specifically those in the IDAssigner pass which is used to get static CFG information.
The function collectCallSiteDominators references indirect call sites and is used to populate the CallSiteDominatorsMap which maps call site IDs to CmpIds
https://github.com/dcasenove/parmesan/blob/b2ed19a19a1e7042355c8659642f0d37ed4b28fb/tools/llvm-diff-parmesan/id-assigner-pass/src/IDAssigner.cpp#L133
To test the functionality of this function I have adapted the code found in this thread into this small test

#include "stdlib.h"
#include "stdio.h"

void example_fun2(void)
{
    printf("Example Fun 2\n");
}

void example_fun(int param)
{
    printf("Example Fun\n:");

    if(param == 10){
        void (*fp) (void) = &example_fun2;
        (*fp)();
    }
}

int main(void)
{
    int i = 0;

    if(i == 0) {
     example_fun(10);
    }
}

Current result

{
"targets": [3],
"edges": [[0,0], [3,0], [3,3], [9,0], [9,9]],
"callsite_dominators":{}
}

In the current implementation no call site dominator is found and execution stops after the following code is executed
https://github.com/dcasenove/parmesan/blob/b2ed19a19a1e7042355c8659642f0d37ed4b28fb/tools/llvm-diff-parmesan/id-assigner-pass/src/IDAssigner.cpp#L117-L122
Based on these results  I am having trouble understanding what this function is supposed to do and what the intended results are.
On bigger testcases such as objdump it does indeed find call site dominators but I can't understand why it doesn't work on a test like this too.
Possible fix
Looking at the thread a possible solution could be to remove
https://github.com/dcasenove/parmesan/blob/b2ed19a19a1e7042355c8659642f0d37ed4b28fb/tools/llvm-diff-parmesan/id-assigner-pass/src/IDAssigner.cpp#L115-L120
and replace it with

 Instruction *Inst = dyn_cast<Instruction>(CI->getCalledValue());

Result

{
"targets": [3],
"edges": [[0,0], [3,0], [3,3], [9,0], [9,9]],
"callsite_dominators":{"327263": [3]}
}

In this case the CallSiteId 327263 is the following indirect call and 3 the cmpId assigned to the following conditional

if(param == 10){
    void (*fp) (void) = &example_fun2;
    (*fp)();
}

This implementation also finds call site dominators on objdump but the results are much different than the ones in the current implementation.
EDIT:
Example to assign multiple CmpId to a CallSiteId
#include "stdlib.h"
#include "stdio.h"

void example_fun3(void)
{
    printf("Example Fun 3\n");
}

void example_fun2(void)
{
    printf("Example Fun 2\n");
}

void example_fun(int param)
{
    printf("Example Fun\n:");

    void (*fp) (void);
    int param2 = 10;

    if(param == 10){
        fp = example_fun3;
    }

    if(param2 == 10){
        fp = example_fun2;
    }
    (*fp)();
}

int main(void)
{
    int i = 0;

    if(i == 0) {
     example_fun(10);
    }
}

Snippet example adapted from UAFuzz to showcase the insertion of indirect edges when fuzzing

//UAF example from UAFuzz
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# include <unistd.h>
# include <fcntl.h>

int *p, *p_alias;
char buf[10];

void good()
{
    if (buf[1] == 'F'){
        printf("You're safe\n");
    }
}

void bad_func()
{
    void (*fp) (void);
    if(buf[0]  == 'F') {
  	  abort();
	  fp = &good;
    }
    else {
	  fp = &good;
    }
	(*fp)();
}

int main (int argc, char *argv[])
{
    int f = open(argv[1], O_RDONLY);
    read(f, buf, 10);
    p = malloc(sizeof(int));
    void (*fp) (void);

    if (buf[0] == 'A') {
        p_alias = malloc(sizeof(int));
        p = p_alias;
	    fp = &good;
    }
    else if (buf[1] == 'F')
        fp = &bad_func;
    else if (buf[2] == 'U')
        fp = &good;
    else {
	    fp = &good;
    }
    (*fp)();
}


Is there anywhere we can post ideas for new features for the 'Agile Accelerator' (agf) package for future versions?

Hi Dallas, you can post ideas to Salesforce's Success Community at https://success.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9300000009MJVCA2


crypto/elliptic: IsOnCurve returns false

What version of Go are you using (go version)?

$ go version
1.18beta2

Does this issue reproduce with the latest release?
No
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
I'm not sure, whatever the playground uses

What did you do?
https://go.dev/play/p/xqk_POfNLOS?v=gotip
package main

import (
	"crypto/elliptic"
	"fmt"
	"math/big"
)

func main() {
	C := elliptic.P521()
	x, _ := new(big.Int).SetString("2737143173246958931206810462877117168076362833635660944391153871821844541609039224874181160979387481718586024475545267128963897341959205744927077947677747267", 10)
	y, _ := new(big.Int).SetString("-4462147686175933957488329012758410305312221082622057784173820750323982928915257404955462165095926112019622265253432971920064280282117429671186357325281355718", 10)
	fmt.Println(C.IsOnCurve(x, y))
	y.Mod(y, C.Params().P)
	fmt.Println(C.IsOnCurve(x, y))
}

What did you expect to see?
true
true

This is what I select "GO release".
What did you see instead?
false
true

This is likely the cause of this real world issue: https://github.com/schollz/pake/issues/7
Edit: fixed the output, I had copied it wrong.

Related: https://github.com/golang/go/issues/50974. Likely not directly caused by the fix for that issue (since it was resolved after beta2), but it sounds like this is the intended behavior going forward.

cc @golang/security

@tscholl2 I am curious though, how did this point get generated, and how is it used? P-256 on amd64/arm64 and P-224 on Go 1.17 will drop the sign when operating on it, so I'm surprised it worked.

That explains more! It came up debugging a failed test. I think P-256 was passing, so that lines up with what you said. The library used a negative number when computing the negative of a point in Weierstrass form: https://github.com/schollz/pake/blob/master/pake.go#L196
Seems like instead of using -y was a little too wishful, it should have used something like y == 0 ? y : p-y.

points in Go 1.18, like at the line you linked. (We decided to make it an explicit panic in Go 1.19 to avoid painful debugging sessions like the one we caused you, sorry, but it was too late for Go 1.18.) P-256 instead accepts it but ignores the sign so you were not actually operating on (x, -y) as you'd expect but on (x, y). What I am curious about is how that worked in the first place.

I only had to find where the API failed, you did a lot more work! That's a good question about how it was working. I am certain it was passing tests before, which I believe would be highly unlikely if any curve operations were incorrect. I'll have to try and dig up some of the tests on an old version of go (is that possible? did the patch get backported to older versions of go?).

Ah, I just realized why it's not dropping the sign: ScalarMult on amd64/arm64 will drop the sign, but Add falls back to the generic (slow, variable-time, big.Int based) implementation which will reduce the value modulo P.
So yeah, it looks like that code got lucky that it only used operations that reduce the input. Still, it's undefined behavior, and it will break intentionally in Go 1.18 and Go 1.19.

Ah, I just realized why it's not dropping the sign: ScalarMult on amd64/arm64 will drop the sign, but Add falls back to the generic (slow, variable-time, big.Int based) implementation which will reduce the value modulo P.
So yeah, it looks like that code got lucky that it only used operations that reduce the input. Still, it's undefined behavior, and it will break intentionally in Go 1.18 and Go 1.19.

Ha! Lucky indeed. The library I referenced is already aware and either has patched or is about to. Thanks for figuring all that out and letting everyone know!


MIME type changed for resources requested via reverse proxy

Describe the bug
I am trying to configure a reverse proxy using spring cloud gateway for an app called Grafana but seem to be having problems loading the dashboard through the reverse proxy url. I can see in the Grafana logs that the request for all front-end resources reaches the grafana server successfully via the reverser proxy url however when the resources are passed back the MIME type of certain files seems to be altered or changed resulting in errors in the console (see screenshot attached).
I can get Grafana working as expected when accessing it through the Grafana server directly it is only when accessing through reverse proxy using spring cloud gateway I am seeing these errors. Has anyone came across something like this before and if so is there any solutions to the issue?
First time posting so let me know if any other details are required.
Thanks.

Sample
Below shows the configuration in the spring cloud gateway application yml for the Grafana reverse proxy.
# Static routes
        routes:

        # Redirect to Grafana
        -   id: grafana
            uri: http://localhost:3000
            predicates:
            -   Path=/sgs-ui-client/history/**
            filters:
            -   StripPrefix=2

This was a red herring and was due to a different error. This can now be closed.

Hi@Mik20393 ， could you please tell me more about the root cause?

Did you solve the issue @Mik20393? Because I'm trying to expose swagger using spring cloud gateway and I'm getting the same error with the JS and the CSS files (Even they are accessible)

FYI, remove the HTTP response header X-Content-Type-Options.


Added the Eyesore of the Hot Dog theme

Does this have any relation to the Windows 3.1 theme? If so, give me it now

I think so, the only thing that i remember is that i based it from a computer software, but probably is windows 3.1 if not is a huge coincidence


Add ability to run AJAX handlers in partial components

Traditionally, as per our docs, components located within partials are unable to use the AJAX framework.
While the docs state this is because partials are rendered late in the render lifecycle of a page (which is technically correct), it is also the result of the fact that when an AJAX request is made, the render is skipped entirely and the CMS module's controller only has knowledge of the layout and page in use, and their components. This makes sense - there's no need to render the page for an AJAX response - but this means that the Controller does not know which partials are in use, or the components used within, so the AJAX handling functionality cannot find the component that an AJAX request is for in this case.
This PR is a potential way to support this capability. It works by tracking a component and handler for an AJAX request and simulating a render, which renders all partials and their components, and then attempts to find a component within the full suite of templating presented on a page.
The reason for this, in my experience, is that partials are a great way of abstracting usage of common elements across multiple pages and layouts. In my case, I wanted a search component in my main navigation that uses the new Search plugin, with this navigation being used in four different layouts as they all share the same navigation. However, it's not possible to use this component due to the fact that the AJAX request won't work. The only alternative is to have the entire navigation code and components in all layouts, which as you can imagine increases the maintenance burden if we wish to make a change to the navigation down the track.
A few notes on this PR for further consideration:

Components within the page or layout are prioritized first, if they share the same alias as a component inside a partial.
The last component that matches the alias requested is the one that will populate the result, unless we find a way to safely kill the render when it finds a valid component. This may not be the component instance the person used on the page. I would recommend if we do implement this that we document that aliases should be used for components within partials if this functionality is enabled.
This PR has no bearing on AJAX calls made inside a partial that attempt to use a handler in the partial's PHP code. I feel that's outside the scope of this change.
This does result in a performance decrease for AJAX calls if it reaches the stage where it has to simulate the render. If the page itself is slow to load normally, the AJAX call will be just as slow. During my testing, it meant my AJAX calls went from 30ms to 80ms to respond, but it'll be wildly different in other cases.
Because this is a change in behaviour, and may result in unintended side effects for sites already using Winter, I've opted to wrap this in a configuration value (cms.runAjaxInPartialComponents), disabled by default to maintain the current behaviour. So it's opt-in.

@bennothommo usually in the described situation I would add the component that requires AJAX calls to my layouts and then just render it from whatever partial I want.
How does that solution fail to meet your needs?

@LukeTowers I honestly haven't tried that setup. I would say however it could be a little misleading - a layout containing the component yet it doesn't use it directly, instead the templating is within one of the partials. To me, that sounds like a workaround of the limitation, whereas this resolves the limitation.

@LukeTowers I honestly haven't tried that setup. I would say however it could be a little misleading - a layout containing the component yet it doesn't use it directly, instead the templating is within one of the partials. To me, that sounds like a workaround of the limitation, whereas this resolves the limitation.

I do this all the time, makes perfect sense in my opinion.

It is sort of a workaround sure, but one that works well enough that I feel like the negatives of this PR aren't worth including in the core.
Personally I'd rather not encourage people putting components in partials, sometimes it can make sense (I.e. THe menu component in a header partial) but most times not in my opinion.
We could at very least document this approach next to the disclaimers about Ajax handlers not working in the partial.

Sounds good


step result is not correctly propagated

(module test-defpact G
  (defcap G () true)

  (defun test:integer (x:integer)
    x)

  (defpact test1:integer (x:integer)
   @model [ (property (> result 0)) ]
    (step (test x)))
  )

(verify 'test-defpact)

fails with:
interactive>:1:0: SBV.liftCV2: impossible, incompatible args received: (0 :: Integer,"INTERNAL: pact done" :: String) CallStack (from HasCallStack):   error, called at ./Data/SBV/Core/Concrete.hs:339:76 in sbv-9.0-94a6547ea58a85ef60b10bd07f29a45cbfd6221b3d46b9b49637788b159ddb69:Data.SBV.Core.Concrete

as the function result term is evaluated to INTERNAL: pact done here

Defpacts are designed around side-effects only atm as they used to be toplevel only, so they really can't be used rn for results.
For instance the API type for a defpact execution in CommandResult (PactExec) doesn't even have a field for the return value.
In pact code you can compute on the result (especially now with nested pacts) but that's more or less a misfeature.
For FV I would suggest making return illegal at the translation stage.

From a user's point of view, what I would expect from the stated model is that either every step returns a result upholding the property, or only the final step does. I understand if the current implementation doesn't let us implement it now, but what should the right semantics be? I'd prefer "every step adheres to the model", with enforce being needed if you want something to apply only at a given step.

@jwiegley I fully agree, also the repl evaluates and returns the first step, which makes sense but might not be obvious for new users. A way forward could be to prevent the result usage in pactdefs, see #1121

I agree with preventing the use of result in FV until we've determined what it should mean.

Fixed in #1121


Unlike Consumers, Rate Limits cannot be pulled out as definitive objects. If you want to find a rate limit, you need to do this:
"/apis/#{api}/plugins?name=rate-limiting&consumer_id=#{consumer_id}"
Because you're filtering, instead of getting a 404 when it's empty, you get an empty Data:[].  Now that's proper for when you're filtering for a list. However that's a weird experience when you're checking to see if a rate-limit has been created yet.
My understanding : Rate Limits Belong to consumers and APIs, and Consumers can only have one rate-limit per API.
Proposed Rate Limits Format:
"/consumers/#{consumer_id}/rate-limits/#{api name, id, or rate-limit ID}" (returning a single rate limit object, as you have a 1:1 relationship here)
"/consumers/#{consumer_id}/rate-limits" (returning all rate-limits enabled for that consumer)
"/apis/#{api}/rate-limits?consumer_id=#{consumer_id}&key=#{key}"  (returning the Data[""], as you're actually filtering here to see if a consumer and/or their key's rate limit)

That does make sense to me. This would be relatively simple to implement, one just needs to extend the Admin API with an api.lua file in the rate-limiting plugin, and implement those routes there. I will take a stab at it if I have some spare time...

Mind if I take a stab at it first? I'll ping you on Slack if I run into
issues...
On Dec 17, 2015 8:54 PM, "Thibault Charbonnier"<EMAIL_ADDRESS>wrote:

That does make sense to me. This would be relatively simple to implement,
one just needs to extend the Admin API with an api.lua file in the
rate-limiting plugin, and implement those routes there. I will take a stab
at it if I have some spare time...
—
Reply to this email directly or view it on GitHub
https://github.com/Mashape/kong/issues/792#issuecomment-165636736.

Sure! Just a few things then:

base your feature branch on next, and when ready you can propose a PR back to next.
take a look at the crud_helpers file to see how the DAO is used (the crud methods might be too generic for this)
this should probably consider #737, and be implemented in a slightly better way ^^

+1
Very interested in this. Any progress report?

+1


Can't create contributors file

Expected Behavior
It creates the svg file in the repo
Current Behavior
The creation of the contributors svg fails
Steps To Reproduce
https://github.com/ng-easy/platform/runs/7371097328?check_suite_focus=true
Error Message & Stack Trace
Error: HttpError: Could not create file: 4 of 4 required status checks are expected.

Additional Context

Your Environment
GitHub workflow

@samuelfernandez check the branch protection rules of your repository. I had almost the same issue, when I created a branch protection rule.

@jrson83 Thanks for the reply. Any example of the permissions configuration? Or would you know which one exactly is needed?

@samuelfernandez give me a minute, I just saw my workflow failed again. I will reply when I know how to fix it :grin:

hmm I don't know. This action just uses commit and has just one option noCommit to disable commit. Since there is no option to create a PR, I don't know if this is possible. I tried something like this, but I just get the error:
Error: HttpError: Could not update file: Changes must be made through a pull request.
name: Contributors List
on:
  schedule:
    - cron: "0 3 */2 * *"

jobs:
  contributors:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - name: Update Contributors
        uses: wow-actions/contributors-list@v1
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          svgPath: .github/assets/CONTRIBUTORS.svg
          round: true

      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v4
        with:
          commit-message: 'chore(): update contributors-list'
          title: Update Contributors
          body: Credit new contributors
          branch: update-contributors

The only rule I have set is Require a pull request before merging and I have enabled actions to create and approve pull requests.
@wow-actions, do you know a solution?

@samuelfernandez I got it working by setting the option noCommit: true and then run peter-evans/create-pull-request action. Here is the complete action:
name: Contributors List

on:
  workflow_dispatch:

  schedule:
    - cron: "0 3 */2 * *"

jobs:
  contributors:
    permissions:
      contents: write
      pull-requests: write

    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3.5.0
        with:
          fetch-depth: 0
          ref: ${{ github.event.repository.default_branch }}

      - name: Update contributors list
        uses: wow-actions/contributors-list@b9e91f91a51a55460fdcae64daad0cb8122cdd53 # v1.1.0
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          svgPath: .github/assets/CONTRIBUTORS.svg
          round: true
          includeBots: false
          excludeUsers: 'step-security-bot'
          noCommit: true

      - name: Commit & PR
        uses: peter-evans/create-pull-request@38e0b6e68b4c852a5500a94740f0e535e0d7ba54 # v4.2.4
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          add-paths: .github/assets/CONTRIBUTORS.svg
          commit-message: 'chore(): update contributors-list'
          committer: GitHub<EMAIL_ADDRESS>          author: ${{ github.actor }} <${{ github.actor<EMAIL_ADDRESS>          signoff: false
          branch: workflow/update-contributors-list
          base: main
          delete-branch: true
          title: 'chore(): update contributors-list'
          body: |
            Automated update to `.github/assets/CONTRIBUTORS.svg`


In case i want to record only Gov Name, Gov ID, and Gov Power, and skip KP (T1/T2/T3/T4/T5), dead, and resource gathered. which part of code that should i remove ?
Again, sorry if this questions bother you.

In the roktracker.py you would change
#Initialize Excel Sheet Header sheet1.write(0, 0, 'Governor Name', style) sheet1.write(0, 1, 'Governor ID', style) sheet1.write(0, 2, 'Power', style) sheet1.write(0, 3, 'Kill Points', style) sheet1.write(0, 4, 'Deads', style) sheet1.write(0, 5, 'Tier 1 Kills', style) sheet1.write(0, 6, 'Tier 2 Kills', style) sheet1.write(0, 7, 'Tier 3 Kills', style) sheet1.write(0, 8, 'Tier 4 Kills', style) sheet1.write(0, 9, 'Tier 5 Kills', style) sheet1.write(0, 10,'Rss Assistance', style) sheet1.write(0, 11,'Alliance', style)
#Initialize Excel Sheet Header
sheet1.write(0, 0, 'Governor Name', style)
sheet1.write(0, 1, 'Governor ID', style)
sheet1.write(0, 2, 'Power', style)
sheet1.write(0, 3, 'Kill Points', style)
sheet1.write(0, 4,'Alliance', style)

This may work.

Thank you,
I have edit some line, can you review it ? https://pastebin.com/bqYrH6rL

Hello there!
Your question seems to be about kingdom power calculation without considering any of the rest stats.
Here is a version that can make everything much faster...
Please download, extract, drag and drop into roktracker folder and rename the file to roktracker.py or just edit in .bat file roktracker.py to roktracker_id_name_power.py
roktracker_id_name_power.zip

Hello there!
Your question seems to be about kingdom power calculation without considering any of the rest stats. Here is a version that can make everything much faster...
Please download, extract, drag and drop into roktracker folder and rename the file to roktracker.py or just edit in .bat file roktracker.py to roktracker_id_name_power.py roktracker_id_name_power.zip

i tested your "fast" version. but it dont work for me. i drag and drop it to the roktracker folder and copy the .bat file and rename it to roktracker_id_name_power also in the .bat file (roktracker.py to roktracker_id_name_power.py).
When i start it, this will come up on the first player scan:

What did i wrong?

File updated. Thanks for mentioning...
roktracker_id_name_power.zip

Wow thank you very much, this tools really help me alot to tracking governor power (increase/decrease) mostly used for pre & after kvk.

anyway, as you know bluestack ADB port is randomly generated, and every open this APP i need to utilize .bat file to make it works..
Is it possible to add some GUI form for ADB Port ?

It will be added in future updates :)


New version: Microsoft.DevProxy version 0.23.0

Checklist for Pull Requests

[ ] Have you signed the Contributor License Agreement?
[ ] Is there a linked Issue?

Manifests

[ ] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] This PR only modifies one (1) manifest
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[ ] Does your manifest conform to the 1.9 schema?

Note: <path> is the directory's name containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

The manifest consistency is not a problem, when PR #197517 is merged it will bring the metadata inline with this release.


Re-implement placement-operator

Re-implement placement-operator based on current keystone-operator and lib-common
implementation using operator SDK v1.20

/retest

by the way just using the files changed tab kind of defates the reason for having multiple commits so we should try and have meaningful commit messages and fix issue in the commit that has the issue with a rebase rather then just stackign up many commits with fixup later
in some cases fix up commits make sense when refactoring but in general they should not be your go to.

by the way just using the files changed tab kind of defates the reason for having multiple commits so we should try and have meaningful commit messages and fix issue in the commit that has the issue with a rebase rather then just stackign up many commits with fixup later
in some cases fix up commits make sense when refactoring but in general they should not be your go to.

yes, agreed. For this one I could just squash everything to fix the issue in the PR, but that probably doesn't make it better . I'll keep that in mind for follow ups.


limit_not_correct

What is this value?
I should see a correct number there >0

fixed by commit f2d9bae0caff227a80c362bacb35952e7b3124fb


Repair Wikipedia document loader load_max_docs and improve test coverage.

Description:
Repair Wikipedia document loader load_max_docs and improve test coverage.
Issue:
The Wikipedia document loader was not respecting the load_max_docs paramater (not reported) and would always return a maximum of 10 documents. This is because the API wrapper (in utilities/wikipedia.py) wasn't passing top_k_results to the underlying Wikipedia library. By default this library returns 10 results.
The default number of results for the document loader has been reduced from 100 to 25. This is because loading 100 results takes a very long time and is an inconvenient default. It should possibly be 10.
In addition, the documentation for the loader reported that there was a hard limit (300) on the number of documents returned. In actuality 300 is the maximum Wikipedia query length set by the API wrapper.
Tests have been added for the document loader (previously missing) and to test the correct numbers of documents are being returned by each class, both by default, and when overridden. Also repaired is the assert_docs test which has been updated to correctly test for the default metadata (which has includes source in recent releases).
Dependencies:
nil
Tag maintainer:
@leo-gan
Twitter handle:
@queenvictoria

@queenvictoria Thanks for fixing this!