feat(ci): move to mc-modpack-kit

@Aninuscsalas You have to set the Modrinth ID and TOKEN in the settings
Also allow "Allow PR's to be managed with actions"

@Aninuscsalas Can't maybe yet merge cause https://github.com/jh-devv/mc-modpack-kit/issues/49

@Aninuscsalas This should be pretty much complete (still have to add some stuff) but I want to ask something:
Does the version of the pack need to be different for the Forge and Quilt version?
Because for that, we would need https://github.com/jh-devv/mc-modpack-kit/issues/49

Does the version of the pack need to be different for the Forge and Quilt version? Because for that, we would need jh-devv/mc-modpack-kit#49

I'm still not sure what to do. I think its better to wait because in my test repos modrinth publishing/builing often fails, or skips everything. Im going to some testing with other packs before this one gets merged

Hmm, weird? Have you read the README?

Does the version of the pack need to be different for the Forge and Quilt version? Because for that, we would need jh-devv/mc-modpack-kit#49

I'm still not sure what to do. I think its better to wait because in my test repos modrinth publishing/builing often fails, or skips everything. Im going to some testing with other packs before this one gets merged

Could you share a test repo of yours?

This theorically should be now working (the release please things just means you can bump one part of the monorepo)
Shoudl work!

This theorically should be now working (the release please things just means you can bump one part of the monorepo) Shoudl work!

Should we try merging it? I have added the secrets to the repo. I guess the versioning can restart from 0.1.0... Im still not sure how should i style commit names, chore(quilt):,  and feat(forge): can work fine but im not sure that listing all the updated mods separately or just saying "Updated mods" is a better idea.

Should we try merging it? I have added the secrets to the repo. I guess the versioning can restart from 0.1.0... Im still not sure how should i style commit names, chore(quilt):, and feat(forge): can work fine but im not sure that listing all the updated mods separately or just saying "Updated mods" is a better idea.

@Aninuscsalas Yea, but you could just try to run the version workflow right away and set it to just some value (e.g. fabric, it does not support currentry different versions for different components) and for the version set 0.1.0 if you want that!
And for the mod commits, I would use it like:
For updates:
chore(fabric): Update mods
For bigger mod changes (e.g. adding or removing)
feat(fabric): Added mods or feat(fabric): Added Fabric API
Its pretty much how'd you like it!
Hope this helps
jh-devv

@Aninuscsalas Now my project uses commits like

feat(modpack/<mod>): <description> for adding new features, configs or content.
chore(modpack/<mod>): <description> for routine maintenance tasks or cleanups.
update(modpack/<mod>): update <mod> for updating mods to newer versions.
mod(modpack/<mod>): add <mod> for introducing new mods to the modpack.

I'm gonna probably try to merge this this in the next few days 🙃

@Aninuscsalas now just run the set version workflow ;3

@Aninuscsalas now just run the set version workflow ;3

can i do that before merging? (im new to github)

@Aninuscsalas now just run the set version workflow ;3

can i do that before merging? (im new to github)

You can do right after or I can do it :3

https://github.com/orgs/community/discussions/25488 @Aninuscsalas


[Mod] Change Default Sort

This mod allows users to set their desired default sort option.
This can be done separately for

threads & All Content
microblogs
comments
on profiles
the list of magazines

When the user visits a page without a sort option specified in the url (like /m/kbinmeta instead of /m/kbinmeta/hot), they will be automatically redirected to the specified default sort.
This version of the mod works with kbin, but things seem to work differently on mbin at a glance, so there's still some work needed there. I'll do this as a draft for now until that's done.

Todo List:

[ ] Add support for mbin
[x] Change the link of the default option (usually hot) so people can actually switch manually to that sort option
[ ] Test if the KES settings work correctly (have only mocked them so far)

Right now I've successfully tested this on the following routes:

[x] /
[x] /all
[x] /microblog
[x] /*
[x] /magazines
[x] /sub
[x] /sub/microblog
[x] /*/sub
[x] /m/any
[x] /m/any/microblog
[x] /*/m/any
[x] /u/any/c/any
[x] /u/any/c/any/microblog
[x] /u/any/c/any/*
[x] /c/any
[x] /c/any/microblog
[x] /d/any
[x] /d/any/comments
[x] /tag/any
[x] /u/any
[x] /u/any/threads
[x] /u/any/comments
[x] /u/any/posts
[x] /u/any/boosts

I think that's all the pages with sorting options on kbin? mbin seems to have some more though.

Right, I forgot comments

Mbin looks like it behaves VERY differently. The URLs and everything is completely different.

Okay, I've assessed what needs to be done for mbin.

[ ] /
[ ] /all
[ ] /sub
[ ] /m/any
[ ] /m/any/t/any
[ ] /m/any/t/any/any
[ ] /m/any/t/any/any#comments
[ ] /magazines
[ ] /d/any
[ ] /d/any/comments

The profile and tag pages don't seem to have any sort options on mbin, so I'll have to add an explanation for that in the description. The current code should abort if no sort options are present, so no adjustment is needed there.
On mbin, sort options are in a dropdown. I'll have to adjust the CSS the mod uses to find them.
The Microblog link in the navbar is relative in mbin, so it always links to the same sort options as is chosen for the Threads portion. In fact, accessing just, for example, /sub/microblog will automatically redirect to the full url using /hot/ and other default options.
For now, I'll leave the microblogs alone. This means they'll stay relative / default to hot if accessed from a page without sort options.
A future improvement for the mod could be an optional functionality to replace the microblog link in the navbar with the desired sort option.

Maybe but the mbin disclaimer next to the relevant option labels?

Maybe put the mbin disclaimer next to the relevant option labels?

Right, that's better than putting it in the mod's description.

I think we could also use the path tokenization and page type enum logic you have here as a generic function other mods can call, because there are a lot of mods that need to check the page type and bail out accordingly (for example, Magazine Instance Names), and it would facilitate making mods (and make the checking logic less brittle) if mods could just call this function and get the page type back without having to reimplement this every time.

Hmm, I see your point. I'll keep things as they are for now for this mod, but it's a good idea to generalize that logic in the future.

It's not something you need to change here, I think I'll just borrow some of your logic and start making a utility function, although I'll probably need help identifying all of the page routes, since I'm not as familiar with the variety of page types as you.

@aclist I just wanted to use the getInstanceType() function and took a look at how it works.
const keyw = document.querySelector('meta[name="keywords"]').content.split(',')[0]
kbin.run, which is the instance I'm using, runs mbin and has these keywords in that element:
kbin, mbin, link aggregator, microblog, socialmedia, reddit, twitter, open source, fediverse, threadiverse
As you can see, the code should pick kbin there despite the site running mbin. So I don't think this is as reliable a solution as expected. There seems to be some customizable element to it.
Looking through the first page of mbin results on fedidb, besides kbin.run, there's also:

rimworld.gallery has "Rimworld Gallery" as its first keyword.
kbin.chat doesn't even include mbin in the list despite running it
same for thebrainbin.org
moist.catsweat.com has "public fediverse instance" and later "mbinorg" but no mbin itself
gehirneimer.de is the same as kbin.chat
kbin.life is the same too

This means the current function only works for 3 out of mbin's top 10 instances (and not for the second biggest instance).
Granted, those aren't officially supported by KES currently. But if that's all we cared about, we could also just decide kbin vs mbin hardcoded based on which instance the user is on.

There is the mbin footer:

There is the mbin footer:

It looks like a few instances opt to not include the "About Mbin" footer. But from what I checked so far, the majority include the "Create your own instance" link to https://github.com/MbinOrg/mbin.
Copy Mbin URL still seems pretty consistent here, since I can't see why an instance would customize this label beyond the default, but I may be wrong.

I'll write a script to poll the top ~100 instances and test whether these elements are present.

I can tell you that the Create your own instance element isn't on kbin.run.

Copy Mbin URL still seems pretty consistent here, since I can't see why an instance would customize this label beyond the default, but I may be wrong.

I think it's important to keep in mind though, if you end up using that one, that different languages will have it renamed. So the check should probably be if it contains mbin, not if it's literally that string.
Which also reminds me that one of the selectors I use for the sort options probably won't be compatible with other languages too, since I'm using the aria-label there and I assume that changes when the language changes.

I think the easiest and most consistent would be to just use ActivityPub.
When requesting the instance itself (kbin.social or fedia.io for example) with an Accept header of application/activity+json, the result will be a json object with information about the instance.
This json includes a field name which has a value of Mbin for mbin and kbin for kbin.

If performance is a concern, this could be done once by KES and then stored for when a mod needs the information.

Well, to my surprise, there weren't even 100 instances. Anyway, here are the results:
These three domains are unavailable:

teacup.social
kbin.dk
the.coolest.zone

This domain does not have the .about-mbin element:
kbin.life
All of the other domains have the .about-mbin element.
But what all of the domains do have, whether or not they have the .about-mbin element, is a link to the MbinOrg GitHub organization. That's located in either the create your own instance area, the about area, or both, but every domain at least had this URL once on the page. So whether or not some element is on the page, the string MbinOrg should be present.

I can tell you that the Create your own instance element isn't on kbin.run.

I didn't find this to be the case, it is right there on the page for me and in the source. Is KES hiding this element?

I think the easiest and most consistent would be to just use ActivityPub.
When requesting the instance itself (kbin.social or fedia.io for example) with an Accept header of application/activity+json, the result will be a json object with information about the instance.
This json includes a field name which has a value of Mbin for mbin and kbin for kbin.

Makes sense as well, the mod can just look up this variable. Although it seems a bit unfortunate that we can't easily get the response headers for the current page with JS, necessitating making a second query.

I didn't find this to be the case, it is right there on the page for me and in the source. Is KES hiding this element?

Yeah, looks like something is applying display: none; to it. And it's not my userstyle.

Yeah, looks like something is applying display: none; to it. And it's not my userstyle.

Presumably Explore the fediverse intro text?

Ah, it's the Hide sidebar elements mod. I forgot that's a thing.

Ah, it's the Hide sidebar elements mod. I forgot that's a thing.

Sorry, I meant to say the Create your own instance promo text. Brain is not working today.

Performance-wise, I think this is going to be faster than making an XML request to the page again, particularly given that some instances are slow to load:
function getInstance(){
    const links = document.getElementsByTagName("a");

    for (var i = 0, l = links.length; i < l; i++) {
      const link = links[i];
      if (link.href.indexOf("MbinOrg") !== -1) {
        console.log("mbin");
      }
    }
    console.log("kbin")
}

If this proves to be an issue in the future, we can rethink this. But I'm actually at the point where I want to reduce performance bottlenecks on KES, because I feel like certain setup and mod application steps are consuming unnecessary cycles. Particularly, for example, #273

@aclist Does KES currently intend to support other languages than english? I just realized the mod in its current state is all-around incompatible with other languages since I'm using interface strings, and I'm not sure if I should try fixing that now or in a future update to the mod.

It's a valid point that I don't think we've really considered before. Can you point me to a specific part of the code in the mod? Are you talking about aria labels?
Supporting languages at more than the kbin code level would also have to include localizing the KES interface, so it's not a small undertaking.
We definitely need to have an admonition that mods should parse underlying elements and path tokens, not interface strings, where possible.
Are languages configured in the kbin settings at the user's preferences, or are they defined by the instance owner and apply to the entire instance?

Can you point me to a specific part of the code in the mod? Are you talking about aria labels?

Basically the entirety of the makeOptionsExplicit function uses this repeatedly: option.textContent.toLowerCase().trim().

Are languages configured in the kbin settings at the user's preferences, or are they defined by the instance owner and apply to the entire instance?

The former. The footer (or corresponding element in mbin) has a language selector, the value is stored as a cookie. Regardless of kbin or mbin, the cookie is currently called kbin_lang and contains values like en or de.

If I understood the contents of that function correctly, kbin defaults to a certain sort order that doesn't actually reflect the currently active sort element, so, e.g., hot is selected but points to /sub, whereas the other ones will point to /sub/newest, correct? But can't there only be one non-explicit default sort order on a page at a given time, with all of the other sort hrefs actually mapping to valid paths? So wouldn't the odd one out of the five (the one with a simple pathname with no suffix) be the one with the non-explicit sort, regardless of what language its label is in? By process of elimination, it can only be the remaining string, which is always internally in English. Apologies if I'm missing something obvious here.

The former. The footer (or corresponding element in mbin) has a language selector, the value is stored as a cookie. Regardless of kbin or mbin, the cookie is currently called kbin_lang and contains values like en or de.

Thanks. Given that there are a finite number of sort elements and set languages, you could also poll the cookie and construct some kind of stringwise mapping, just hardcoding the sort label strings (5 * 17 languages), but it probably wouldn't be necessary if using the approach above.

But can't there only be one non-explicit default sort order on a page at a given time, with all of the other sort hrefs actually mapping to valid paths? So wouldn't the odd one out of the five (the one with a simple pathname with no suffix) be the one with the non-explicit sort, regardless of what language its label is in? By process of elimination, it can only be the remaining string, which is always internally in English. Apologies if I'm missing something obvious here.

That's true, but then I have to change the link so it points to the explicitly sorted url. For which I'm currently using the text of the option.

I guess I do have an idea for how to do it, based on what you suggested.

I think you could just use a simple array of strings or object mapping here to define the possible options upfront, so if, after processing the sort options with valid suffixes, the remaining link is none of the above, you set it to the remaining option. If the remaining option is "newest" but the label is "banana", it shouldn't matter.

@aclist I tried using the bash script you wrote to add the mod to the funcs.js file and it gave me a bunch of errors about the sponge command being missing. It seems it correctly added the mod to the file though. Can I ignore the errors then, or does sponge do something important?

I'm not sure if this mod is causing them, but trying to test the mod out with KES, I'm noticing random delays in getting redirected, caused by waiting for the bug report and collapsible comments mods which keep getting errors a bunch of times.
I didn't notice any issues like this in the past, so it's plausible it's because of this mod. But I can't think of why it would be.

There's a wall of these, the above are just two examples.

@aclist I tried using the bash script you wrote to add the mod to the funcs.js file and it gave me a bunch of errors about the sponge command being missing. It seems it correctly added the mod to the file though. Can I ignore the errors then, or does sponge do something important?

sponge is part of the moreutils package and is used to edit a file in place by writing the contents of the stream into the same file. Usually, you cannot write the contents of a pipeline into the selfsame file, because the redirection operator at the end of the pipeline will be read first, truncating the file before you can process the stream at the left-hand side. Effectively, sponge just creates a temporary file to soak up the data. It's just a convenience tool, but it slipped my mind that it wouldn't be available out of the box. I'll update the script to just write to temporary file and then move it back to the desired location. Without it, I don't think you're going to get the desired output.

~I'm not sure if this mod is causing them, but trying to test the mod out with KES, I'm noticing random delays in getting redirected, caused by waiting for the bug report and collapsible comments mods which keep getting errors a bunch of times.~
~I didn't notice any issues like this in the past, so it's plausible it's because of this mod. But I can't think of why it would be.~

~There's a wall of these, the above are just two examples.~
Never noticed this before, but apparently it's got nothing to do with this mod.

It's probably because the funcs.js file is malformed as a result of the script not behaving correctly.

I updated the concat_funcs script. It doesn't use sponge anymore, and takes one optional argument: -g. If this flag is enabled, it will also add the resulting files to the git index using git add. Otherwise, it will just update the funcs file and manifests without explicitly adding the changed files to the git index.

Incidentally, there is a piece in the documentation that describes how to use this in conjunction with the gist generator: https://aclist.github.io/kes/kes.html#_prototyping_local_code
This is working for me and saves time, but I'll build it up to be a bit more user-friendly.

I'm not sure if I can work on this this week.

I'm not sure if I can work on this this week.

Not a problem.

Well, seems like one week became three, probably four.
Work has gotten more busy and I've got some more momentarily important programming projects currently which are blocking me from working on KES.
I'll hopefully be able to return to this within the next two weeks.

@aclist
I'm trying to build the mod right now so I can test out the options. I've noticed that the current manifest generation script produces an empty file for me. Putting quotes around the *.json fixes that and produces the correct file. It's probably another issue from me using Windows.
Would you mind changing the script accordingly? Or I guess, would you mind if I committed my change to it.

Sure, is this what you wanted?
< for i in $(find $PWD/mods -name *.json); do
---
> for i in $(find $PWD/mods -name "*.json"); do

Yeah, that's exactly it.

OK, done.

The mod works for me now, tested on kbin.social and kbin.run.
Support for profile pages is out for now, because kbin.social didn't work when I implemented most of it, and kbin.social is the only kbin instance with sort options on profiles anyway. So it didn't feel worth it enough to go back and edit it back in. I'll add it back in the future though.
I'll make some more cosmetic changes to the code, like adding some more comments and reordering some stuff. But other than that I do consider it finished now.

Alright, thanks. I'll start taking a look through it tomorrow.

Okay, I've completed the changes I still wanted to make and did another quick test run to check that it didn't break anything.

Discovered a bug with this: the mod currently breaks when there's an url parameter (which is the case when trying to change the sort order on any except the first page)
I'll push a fix for this bug tomorrow.

Tested the fix, it works now.

There might actually still be another bug, for some reason I'm getting "/hotundefined" links now on kbin.social with this mod. I'll have to investigate tomorrow why that is.

To clarify: it was an oversight with my previous fix, where I had falsely assumed an undefined value would be stringified as an empty string rather than "undefined".

I think I found some bugs here, but my testing methodology might be flawed.

If I visit https://kbin.run/m/announcements and explicitly enable this mod and set the thread index sort method to default, then reload the page, it tries to navigate to https://kbin.run/m/announcements/hot, presumably because hot is the default sort method, but this URL does not actually exist.

If I go into a thread and explicitly set a sort method, such as newest, it works accordingly, and this is appended to the URL path. If I subsequently change the sort method, or change the sort method and then attempt to reload the page in place, the URL does not change to the new sort method, staying on newest. I have to manually go to the bare URL (with no sort method appended) for the regex replace to happen. So as a side effect of this, it seems that changing sort methods on the fly without manually scrubbing the URL is not working.

As a clerical matter, I found "Select default sort method for magazines" to be a bit confusing, as I didn't initially realize it referred to the magazines table. I thought it referred to the magazine index (the thread index) for a particular magazine. Somewhat similarly, I feel like "threads" and "comments" are liable to be confused here, so maybe there is slightly better wording? I get that the explanation is stating "what is being sorted", but it seems like "where is it being sorted" is the typical frame of reference someone uses. Of course, there might be standalone threads and/or comments in some other places not specified by the above, so I understand the need to state "what is being sorted", but it took me a bit of fumbling to find the right options, so maybe a parenthetical explanation is needed here:

Select default sort method for threads (top level posts on a magazine's thread index)
Select default method for comments (posts by users inside of a thread)
etc.

If I visit https://kbin.run/m/announcements and explicitly enable this mod and set the thread index sort method to default, then reload the page, it tries to navigate to https://kbin.run/m/announcements/hot, presumably because hot is the default sort method, but this URL does not actually exist.

Huh, the same exact scenario works on the frontpage, which also ends in /threads, so I think I just assumed it works the same in magazines. I'm sure I specifically tested magazines though, was that maybe only on kbin...
Well, good catch, I'll have to look into fixing that.

If I go into a thread and explicitly set a sort method, such as newest, it works accordingly, and this is appended to the URL path. If I subsequently change the sort method, or change the sort method and then attempt to reload the page in place, the URL does not change to the new sort method, staying on newest. I have to manually go to the bare URL (with no sort method appended) for the regex replace to happen. So as a side effect of this, it seems that changing sort methods on the fly without manually scrubbing the URL is not working.

I'm not sure I'm understanding this one correctly.
With "If I subsequently change the sort method", do you mean in the KES settings?
It's by design that that only applies when visiting the non-explicitly sorted page. Not only do I think it would be annoying to have it redirect you just from changing the settings, I also don't know if it's even possible without locking you out of any sort options but the default one.
Those settings are just meant to tell where to bring the user when no sort option is explicitly specified in the URL, which isn't the case on a /newest URL.

As a clerical matter, I found "Select default sort method for magazines" to be a bit confusing, as I didn't initially realize it referred to the magazines table. I thought it referred to the magazine index (the thread index) for a particular magazine. Somewhat similarly, I feel like "threads" and "comments" are liable to be confused here, so maybe there is slightly better wording? I get that the explanation is stating "what is being sorted", but it seems like "where is it being sorted" is the typical frame of reference someone uses. Of course, there might be standalone threads and/or comments in some other places not specified by the above, so I understand the need to state "what is being sorted", but it took me a bit of fumbling to find the right options, so maybe a parenthetical explanation is needed here

Hmm, I see your point with the magazines one, I should be more clear there. But the issue with threads and comments is that they're not just used in one place. Off the top of my head, domain pages have both threads and comments, and the threads option is also used on the frontpage. So your suggestions wouldn't really fully work. I do think the wording could be made a bit more specific to make sure people understand threads are for thread indexes/overviews, not individual threads, and the comments option refers to comments on threads, not microblogs. But I do think, besides those two points, that those two options are plenty clear already. The threads pages are clearly labeled in the UI, and everyone knows what a comment is.
I think I'll change them to something like (just a rough in the moment idea, going to think more about it until I return to work on this):

Choose by what to sort the list of magazines when no option is specified
Choose by what to sort lists of threads when no option is specified
Choose by what to sort comments of threads when no option is specified
Choose by what to sort microblogs when no option is specified

This doesn't feel right yet though, I'll need to think more about this. I don't like how long they are like this, so maybe I'll also move part of the explanation to the end of the description instead.
What are your thoughts on those?

With "If I subsequently change the sort method", do you mean in the KES settings?

Hmm, I think this one is on me. Using KES settings, not the sort on the page. I must have been tired when I experimented with it and for some reason expected changing the default sort would re-sort "in place," so to speak. My expectation was that it would take you to the non-explicitly sorted page, after which the new default would apply. But for this to work, the mod would have to also evaluate whether you are on a page that corresponds to the filter being changed, and there is probably a bad side effect to that.

It's by design that that only applies when visiting the non-explicitly sorted page. Not only do I think it would be annoying to have it redirect you just from changing the settings, I also don't know if it's even possible without locking you out of any sort options but the default one.

Right, I see your point.
It's been awhile since the initial PR, so I tried to jump into this mod as blindly as possible just to see what the initial user experience would be, so I admit I didn't read the fine print. I looked at the mod dsecription again and it seems sufficiently self-explanatory.

I do think the wording could be made a bit more specific to make sure people understand threads are for thread indexes/overviews, not individual threads, and the comments option refers to comments on threads, not microblogs. But I do think, besides those two points, that those two options are plenty clear already. The threads pages are clearly labeled in the UI, and everyone knows what a comment is.

Yeah, my quibble isn't with the terms "threads" and "comments" per se, more so that without additional context, "threads" alone could be read either as "stuff inside of threads gets sorted" or "threads themselves get sorted," but then you come across the "comments" option, which are the "stuff inside of threads," so there can't logically be two of those, so you go back and look at the threads option again and reason it must be threads themselves, but ideally you shouldn't have to go through this thought process, IMO. It's also because kbin hasn't done a good job of disambiguating between posts, threads, articles, etc., so I'm not sure if most users consider threads to be "posts," or whether they refer to them as "threads."

I think I'll change them to something like (just a rough in the moment idea, going to think more about it until I return to work on this):

Choose by what to sort the list of magazines when no option is specified
Choose by what to sort lists of threads when no option is specified
Choose by what to sort comments of threads when no option is specified
Choose by what to sort microblogs when no option is specified

This doesn't feel right yet though, I'll need to think more about this. I don't like how long they are like this, so maybe I'll also move part of the explanation to the end of the description instead.
What are your thoughts on those?

Seems like the same phrase is being reused on every option, so I would make that part of the description followed by a line break, then add the options below.
Choose the default sort order for the following contexts:

The global magazines list
The thread index in magazines
Comments inside of threads
Microblog posts

That's merely off the top of my head.
It might be kind of cool to have a link to the magazines list in option 1, but I don't think we support a link right in the option itself. It is possible for each option to have a label (if necessary) above it, though.

If I visit https://kbin.run/m/announcements and explicitly enable this mod and set the thread index sort method to default, then reload the page, it tries to navigate to https://kbin.run/m/announcements/hot, presumably because hot is the default sort method, but this URL does not actually exist.

In the newest commit I've changed the approach used to build the URL, so this should work correctly now. Haven't thoroughly tested the new code yet though, so I don't know if it breaks anything else.

I reworked the description and settings of the mod to hopefully be a bit clearer.
The 'default' option now behaves differently. Instead of going with the instance's default sort option, it now disables the mod for that page type. This should avoid unnecessary redirects.

It seems to be working well now.

One question, the description for the mod refers exclusively to Mbin now. Does this imply that the mod is not intended to work on Kbin? Or were you just using the term Mbin as a generic term since Kbin is kind of obsolete now?

One question, the description for the mod refers exclusively to Mbin now. Does this imply that the mod is not intended to work on Kbin? Or were you just using the term Mbin as a generic term since Kbin is kind of obsolete now?

The latter. While I'd love to see ernest return, kbin.social looks pretty dead and other instances have pretty much gone as well. Even kbin.cafe, which has held out for pretty long, seems to be offline now. There's not going to be any kbin users using this script, so no need to mention it imo.

Time to consider a name change for this tool? I also need to scrub the link to kbin.social in the footer of the KES modal.


mrb/cover data fields

!bench

!bench

!bench

!bench

!bench

I am closing this PR since it seems it has fulfilled its purpose. Feel free to reopen it.

Please don't delete others' branches.


Support OSX/Mono #14

Bundle native dependencies on all platforms to the nuget package.
Do not ilmerge LibSharp2Git so the native dependencies can be loaded correctly.
Do not run verpatch.exe on linux and mac

For https://github.com/Fody/Stamp/issues/14

Updating which native binaries get included in the package is good, but removing the ILMerge doesn't actually fix the issue I was talking about in #14, unfortunately.
If LibGit2Sharp.dll isn't ILMerged, then Fody ends up loading the assembly via its CurrentDomain_AssemblyResolve() fallback method, which uses File.ReadAllBytes() / Assembly.Load().
Doing that causes the same problem as before on mono: It doesn't have a file path to go looking for the dllmap config file.
Also, verpatch.exe is what is actually writing the version number into the output assembly, so not running it on linux/mac means Stamp doesn't actually do anything. To get this working on non-windows platforms, the functionality provided by verpatch.exe is going to need to be replaced by something that works cross-platform.

Yeah, removing ilmerge doesn't load the native binary. I happened to include the dylib in the project folder yesterday and thought it worked.
Without running verpatch.exe, I am still able to get the expected AssemblyInformationalVersionAttribute, that attribute contains all the git hash information and is what this project all about.
So at least we can to make it work on OSX for the majority who only care about AssemblyInformationalVersionAttribute and show a warning about the lack of ability to patch win32 version.

Hi,
I think we can bypass the Mono dllmap issue if we use Costura.Fody to load the native assembly instead. Would require patching Costura.Fody so that it loads the correct library (.dll/.so/.dylib) depending on the platform, and embedding the libgit libraries with a consistent name - e.g. always libgit.[dll/so/dylib].
I'll have a look & let you know how it goes

replaced by https://github.com/Fody/Stamp/pull/19

@qmfrederik would prefer not to use costura inside the msbuild context. messing with assembly loading in that context has cause me pain in the past

@SimonCropp In that case, the following should work:

Include the libgit libraries in Stamp.Fody (either as an embedded resource or just as a file that is included in the NuGet package, probably an embedded resource works best)
Use LoadLibrary (on Windows) or dlopen (on Linux) to load the .dll/.so file into the process
Once the native library is loaded, all the P/Invoke methods should just work

@bording I'm assuming that a calling dlopen explicitly would remove the need for dllmap on Mono, is this correct?

@qmfrederik Yes, using LoadLibrary/dlopen to load the native libraries would bypass the need for the dllmap file.
However, for that to work, you'd actually need to make upstream changes to LibGit2Sharp. The DllImport attribute and calling LoadLibrary/dlopen require completely different approaches to get a access to the native methods you want to call.
Alternatively, you could bypass LibGit2Sharp altogether, and just directly use the native libgit2 library yourself, going with the LoadLibrary/dlopen option. You'd end up reproducing a lot of what LibGit2Sharp already does, though.


Adding Continue with Guest Option

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Hey @notsoocool when someone visit your website and if he/she dont want to give any details, in that case the user can still visit your website using the continue with guest option.
Describe the solution you'd like
A clear and concise description of what you want to happen.
in you website we can add a continue with guest option [ Frontend + Backend ]
So that user can still visit your website without logging in,
It Will improve the User Experience
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

@notsoocool Could you please assign this task to me.

@notsoocool Could you please assign me this task?

Hey @iamsohelx, you can go ahead with the feature, but please keep the following things in mind:

The sign-in/sign-out should be triggered when trying to access a separate snippet page.
When clicking the "Add Snippet" button, the same trigger should be activated.
For guests, there should be a unique ID assigned to them, so they can be identified separately even without logging in.

Make sure these points are considered during development. Let me know if you have any questions!

Hey @menerucha, you can also go ahead with the issue, but please keep the points mentioned above in mind. Also, go through the code first to get a basic idea before starting.

Hii @notsoocool please assign the task to only one person at a time, I have raised the issue please assign it to me only 🙏🏻.

Hey @iamsohelx, you can go ahead with the feature, but please keep the following things in mind:

The sign-in/sign-out should be triggered when trying to access a separate snippet page.
When clicking the "Add Snippet" button, the same trigger should be activated.
For guests, there should be a unique ID assigned to them, so they can be identified separately even without logging in.

Make sure these points are considered during development. Let me know if you have any questions!

Thanks brother, i will make sure i didn't do any mistake

Hi @iamsohelx ,
It’s been over a week without any updates. I will be closing this issue by the end of the day. If you have any progress to share, please do so before then.
Thank you!

I am still working on this issue

@menerucha you are already working on another issue.


Cov

Current coverage is 88.90%

Merging #164 into dev will increase coverage by +0.06% as of 3a29891

@@              dev   #164   diff @@
====================================
  Files          70     70
  Stmts        6167   6167
  Branches        0      0
  Methods         0      0
====================================
+ Hit          5479   5483     +4
  Partial         0      0
+ Missed        688    684     -4

Review entire Coverage Diff as of 3a29891

Powered by Codecov. Updated on successful CI builds.


page containing form is requested twice when pressing the form button, looses the posted parameter the second time it is reloaded.

Hi,
I have a very simple form, with one field and one button, the field is a drop down. When I click the button I extract the posted field param from the req.posted map and regenerate the page based on the response. This used to work on rapidoid 5.0 but not so much on 5.3, the culprit seems to be that 2 requests are made when the button is pressed once. Am I doing something wrong? What is the rapidoid cannonical way to do this? Thanks a lot,
Cheers,
Cosmin

Hi, can you please provide a small example that reproduces this issue?

Hi @nmihajlovski, thanks for your question and sorry for the late reply, here is a minimalistic example:
class MyHandler {
   public Object execute(Req request) throws Exception {

       Map<String, String> myFields = ....;

       if (formData.field.isEmpty() && !myFields.isEmpty()) {
           formData.field = myFields.keySet().iterator().next();
       }

       Btn runQuery = GUI.btn("Go").primary();
       Form form = GUI.edit(formData).buttons(runQuery);
       Field myField = form.field(0);
       myField.content(GUI.div().class_("form-group").append(
               GUI.label("My Field: "),
               GUI.dropdown().options(myFields.keySet()).name("field").initial(formData.field)
       ));

       // now based on the value of field create the response
       Tag html = ...
       return html;
   }

   private class FormData {
       String field = "";
   }
}

the basic idea is to select a value from a dropdown and have the page render differently based on what is selected, I want this to be  form since in addition to the dropdown, there may be other knobs to play with. Thanks for you help,
Cheers!

the behavior that I am seeing is that on clicking the form button, I get the page rendered based on what is selected, but the page ends up reloaded (as a get) and since the form params get lost in the reload, the result of executing the form is not shown, this used to work on an older version of Rapidoid as I mentioned above

Thanks @cosminbasca for all this information. I will try to investigate this soon after the v5.4.2 release.

Thanks ! Looking forward to it :+1:

I investigated this today, and there is some bug in the data binding (at least for the dropdown component).
The double request was intentional, solving some specific update-then-refresh scenarios. The form values are sent 2 times, to this shouldn't be a problem. E.g. when using a text input the binding works fine:
 Var<?> v = GUI.var("nn");
 TextInput nn = GUI.txt().name("nn").var(v);
 Tag html = GUI.hardcoded("value is:" +v.get());

I will need a significant time to revise and rethink the whole GUI layer life-cycle... I will write here again when I have some news...


Fix #18 Implement The Form Validation In SignIn , SignUp Page

i made the validation for the Sign in and sign up page  and also add the navigation when user successfully signup then it will redirect to login page to login.
Description

changes 1 => \src\pages\SignIn\index.js
change like Implement The Validation on the Form Input field and if their an error then it will shows the appropriate message to the user
the sing in button is disable until user enter correct input as per requirement
changes 2 => \src\pages\SignUp\index.js
change like Implement The Validation on the Form Input field and if their an error then it will shows the appropriate message to the user
validation

email validation
Password Validation

validate password it Must be an the strong

the sing up button is disable until user enter correct input as per requirement  that handle the backend request of the multiple user creation if the any mistake from the user
changes 3

implement the Navigation functionality

Motivation and Context

When a user try to sign in or sign up if they enter invalid values or miscellaneous code to break the server  then it can be harmful to the website so the form validation handle this issue and try to make proper request send to backend
How Has This Been Tested?

set up project
got to sign in or signup page
enter the  input values
sign in or signup button not active until the enter values are  as per condition

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

@CoderSwarup Congratulation merging the PR

@CoderSwarup :star: Don't forget to give us a star! :star:

@CoderSwarup Congratulation merging the PR

@MAVRICK-1 Thanks


Increase cart display verbosity

The small cart should probably show prices and expected savings (from discounts) and final cost. This would just be for the items in the cart, so payments could be ignored. (Though it might be good to take them into account.)

This is related to #260.

This is not a thing we should do after all.


Easily identify changed files in an impactBuild scenario

Provide an easy way for users to understand the changes in a build. Even while pipeline orchestrators do this, zappbuild should document this in the build report.
As of today, the impact build scenario captures the current commit hash.

Idea
Store the link to the compare of the git provider, like:
https://github.com/ibm/dbb-zappbuild/compare/ac81e15900eef5eb87ef12397e2ecec29587e929...257c164ef5dbe2c87102000405be886f8db5d506

Merged per #114


Simplify ScrollSpy config

I tried to extract a basicJQueryInterface to be used by other components too

@rohit2sharma95 , @XhmikosR
any thoughts on this?

Your idea is to move the jQueryInterface's code to utils? There are few plugins that use their own interface within jQueryInterface :thinking:
https://github.com/twbs/bootstrap/blob/548be2ed6604ddfc8488cd4a793c6271c2caf485/js/src/carousel.js#L563-L567
There is also a function defineJQueryPlugin in the utils (if it can be extended instead of writing a new function):
https://github.com/twbs/bootstrap/blob/548be2ed6604ddfc8488cd4a793c6271c2caf485/js/src/util/index.js#L203-L204

Yeah, I'm not sure about this either. We shouldn't overdo it with unnecessary abstractions. So what's the plan here exactly?

I saw that most of them use the same functionality. So I think it could be moved as a separate function outside the component. At least for the 6 of them for the beginning.  Small size improvements as keeping one pattern. (now all have different pattern of usage)

Please finish with your suggestion so that we can see if it's worth doing it :)

Ok. I will try to give them, same shape for start, and in a second MR I will apply the next idea

I could start standardizing a bit the configs and the interfaces, and maybe then we can discus the 'one same function'.  Does this sound better?


[General]: using isValid with multiple required form fields makes typing "jump" to latest invalid field

Is there an existing issue for this?

[X] I have searched the existing issues

Package/Plugin version
9.0.0
Flutter doctor

Flutter doctor

[✓] Flutter (Channel stable, 3.10.0, on macOS 13.3.1 22E772610a darwin-arm64, locale en-DE)
    • Flutter version 3.10.0 on channel stable at /opt/homebrew/Caskroom/flutter/3.10.0/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 84a1e904f4 (8 days ago), 2023-05-09 07:41:44 -0700
    • Engine revision d44b5a94c9
    • Dart version 3.0.0
    • DevTools version 2.23.1

[!] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
    • Android SDK at /Users/manuelrauber/Library/Android/sdk
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for more details.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14E222b
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.2)
    • Android Studio at /Users/manuelrauber/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/222.4459.24.2221.9971841/Android
      Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)

[✓] Connected device (5 available)
<redacted>

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

Minimal code example

Code sample

import 'package:flutter/material.dart';
import 'package:flutter_form_builder/flutter_form_builder.dart';
import 'package:form_builder_validators/form_builder_validators.dart';

void main() {
  runApp(const FlutterExample());
}

class FlutterExample extends StatelessWidget {
  const FlutterExample({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: TheForm(),
    );
  }
}

class TheForm extends StatefulWidget {
  final formKey = GlobalKey<FormBuilderState>();

  TheForm({super.key});

  @override
  State<StatefulWidget> createState() => _TheFormState();
}

class _TheFormState extends State<TheForm> {
  bool _isValid = false;

  InputDecoration _defaultInputDecoration(String placeholder) =>
      InputDecoration(
          labelText: placeholder, border: const UnderlineInputBorder());

  @override
  Widget build(BuildContext context) => FormBuilder(
        key: widget.formKey,
        autovalidateMode: AutovalidateMode.onUserInteraction,
        onChanged: () {
          setState(() {
            _isValid = widget.formKey.currentState!.isValid;
          });
        },
        child: Scaffold(
          body: SafeArea(
            child: Column(
              children: [
                FormBuilderTextField(
                  name: 'name',
                  decoration: _defaultInputDecoration('Name'),
                  validator: FormBuilderValidators.required(),
                ),
                FormBuilderTextField(
                  name: 'email',
                  decoration: _defaultInputDecoration('E-Mail'),
                  validator: FormBuilderValidators.compose([
                    FormBuilderValidators.required(),
                    FormBuilderValidators.email()
                  ]),
                ),
                Visibility(
                  visible: true, // custom logic in my real code
                  child: FormBuilderTextField(
                    name: 'emailVerification',
                    decoration: _defaultInputDecoration('Repeat e-mail'),
                    validator: FormBuilderValidators.compose([
                      FormBuilderValidators.required(),
                      FormBuilderValidators.email()
                    ]),
                  ),
                ),
                Text(_isValid ? 'is valid' : 'is not valid'),
              ],
            ),
          ),
        ),
      );
}

Current Behavior
If I select the first text field (which is "Name") and I type one character the whole form shows being invalid and the focus jumps to the last field showing an error.
If you remove the validators from the last field, it will jump to the second one (which then is the last field showing an error) instead.
Instead of the Text I will have a button later than is either enabled/disabled depending on the state.
In addition (I can make a second issue for that, if you want): Using setState() shows all other form fields as error as well, even if there was no user input.
Expected Behavior

I expect that the focus stays within the same text field
I expect not all form fields showing an error without an user interaction

Steps To Reproduce
Run the example code and simply type something into the first text field.
Aditional information
I've used the idea of #1157 to check if the form is valid or not. I'm not sure if that is the correct approach because there is no documentation or example for isValid available.
Video of the issue:
https://github.com/flutter-form-builder-ecosystem/flutter_form_builder/assets/740791/2342681e-a793-49dd-81ae-e3a7b4b5a33c

In addition (I can make a second issue for that, if you want): Using setState() shows all other form fields as error as well, even if there was no user input.

I may solved this one by removing autovalidateMode: AutovalidateMode.onUserInteraction on the form and put it on the formFields instead.
It may also solve the "jumping" around.

This leads me to a question, why the validation is trying to focus last invalid input instead of first ?? I am having validation only on submit. But when there are more invalid fields, the latest is focused. In my example its DatePicker, and its very annoying when onsubmit opens DatePicker (if its empty). Is there some way to start focusing fields from top ??


Dependabot couldn't parse the go.mod found at /go.mod. (github.com/mholt/certmagic)

Hello,
I've started to use dependabot but get a weird issue now. Would anyone be able to point me to some documentation that could help me prevent this issue from happening? Does this mean my go.mod file is corrupted?
Dependabot couldn't parse the go.mod found at /go.mod.

The error Dependabot encountered was:

go<EMAIL_ADDRESS>parsing go.mod:
	module declares its path as: github.com/caddyserver/certmagic
	        but was required as: github.com/mholt/certmagic

It looks like this issue has been open for a while and we’ve made a bunch of improvements to Dependabot since, is this still happening, or has this problem been resolved and can we close this issue?


testing agains multiple builds of ST

I think this is possible now by modifying the existing scripts, but perhaps it's worth including such functionality by default? I could take a look at it, but some guidance would be appreciated.

Do you mean testing different versions of sublime text? Says, ST2 and ST3?

Nope. ST3 build 100 and 101; and ST2 build 100, 101 and 102, for example.

I think it should be quite possible on linux server, but it could be slight difficult on mac and window machines. Particularly, brew cask of mac does not allow simple version control and the ah hoc approach of appveyor is also hard to be extended.

I also discovered that ppa:webupd8team/sublime-text-3 does not keep the old versions.
vagrant@precise64:~$ apt-cache madison sublime-text-installer
sublime-text-installer | 3083-1~webupd8~0 | http://ppa.launchpad.net/webupd8team/sublime-text-3/ubuntu/ precise/main amd64 Packages
sublime-text-installer | 3083-1~webupd8~0 | http://ppa.launchpad.net/webupd8team/sublime-text-3/ubuntu/ precise/main Sources

Closing for now. It's been a long time.


net/http OR bufio: Scanner.Scan over ChunkedReader is blocked

What version of Go are you using (go version)?
go version go1.7.1 linux/amd64
What operating system and processor architecture are you using (go env)?
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/yauhen/ws"
GORACE=""
GOROOT="/home/yauhen/gosrc/go"
GOTOOLDIR="/home/yauhen/gosrc/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build478463408=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"

What did you do?
I've noticed that sometimes client(iOS, Android application) connected to my server sends chunks of chunked HTTP Transfer-Encoding in manner when end of current chunk is received in the next packet. E.g., client sends chunks every second: hello1\n, hello2\n, etc. Here is encoded result, where each line is sent with 1 second delay:
7\r\nhello1\n
\r\n7\r\nhello2\n
\r\n7\r\nhello3\n
...

Simulation on playground:
https://play.golang.org/p/Y9I7vYoGbx
What did you expect to see?
I expect to read chunk when it is ready in spite of how it is received: in one packet or in two.
What did you see instead?
I cannot read chunk until:
a) client closes connection
b) buffer of ChunkedReader is full
c) client sends line which ends with \r\n

Hello there @yauhen-l, I think the issue here is that you io.Pipe() is not being used properly, you forgot to close the pipe writer in your write goroutine so that means the buffer will instead get full before the program is done since you never explicitly closed it
To fix your problem, please don't forget to invoke defer pw.Close() in your write goroutine like this
https://play.golang.org/p/2eVg3OO2eo
and also the io.Pipe() docs mention that

IMO there is no bug here, just a forgotten pw.Close(). I'll let @bradfitz bless the bug with a close or a correction of my analysis.

@odeke-em, not quite.
More minimal example: https://play.golang.org/p/RuDNKvAQhT
Which says:
fatal error: all goroutines are asleep - deadlock!

goroutine 1 [semacquire]:
sync.runtime_notifyListWait(0x107406ac, 0x1)
	/usr/local/go/src/runtime/sema.go:267 +0x1e0
sync.(*Cond).Wait(0x107406a4, 0x3003bc)
	/usr/local/go/src/sync/cond.go:57 +0xe0
io.(*pipe).read(0x10740680, 0x10753000, 0x1000, 0x1000, 0x0, 0x0, 0x0, 0x1000)
	/usr/local/go/src/io/pipe.go:47 +0x3e0
io.(*PipeReader).Read(0x1070a4b8, 0x10753000, 0x1000, 0x1000, 0x1070a4b8, 0x0, 0x0, 0x1000)
	/usr/local/go/src/io/pipe.go:129 +0x60
bufio.(*Reader).fill(0x107363c0, 0x7881)
	/usr/local/go/src/bufio/bufio.go:97 +0x260
bufio.(*Reader).Read(0x107363c0, 0x10732b98, 0x2, 0x2, 0x7, 0x0, 0x0, 0x1000)
	/usr/local/go/src/bufio/bufio.go:209 +0x2c0
io.ReadAtLeast(0x3a07c0, 0x107363c0, 0x10732b98, 0x2, 0x2, 0x2, 0x0, 0x0, 0x0, 0xffd)
	/usr/local/go/src/io/io.go:307 +0xe0
io.ReadFull(0x3a07c0, 0x107363c0, 0x10732b98, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0)
	/usr/local/go/src/io/io.go:325 +0x60
net/http/internal.(*chunkedReader).Read(0x10732b80, 0x1077d730, 0x0, 0x0, 0x7, 0x0, 0x0, 0x7)
	/usr/local/go/src/net/http/internal/chunked.go:95 +0x2a0
main.main()
	/tmp/sandbox227319092/main.go:17 +0x3c0

The report is that an io.Reader is supposed to return as soon as it has anything, without blocking further, and net/http/internal.(*chunkedReader).Read doesn't do that.
See src/net/http/internal/chunked.go:95 in the backtrace? That line 95 is the "ReadFull" at:
func (cr *chunkedReader) Read(b []uint8) (n int, err error) {
        for cr.err == nil {
                if cr.n == 0 {
                        if n > 0 && !cr.chunkHeaderAvailable() {
                                // We've read enough. Don't potentially block
                                // reading a new chunk header.
                                break
                        }
                        cr.beginChunk()
                        continue
                }
                if len(b) == 0 {
                        break
                }
                rbuf := b
                if uint64(len(rbuf)) > cr.n {
                        rbuf = rbuf[:cr.n]
                }
                var n0 int
                n0, cr.err = cr.r.Read(rbuf)
                n += n0
                b = b[n0:]
                cr.n -= uint64(n0)
                // If we're at the end of a chunk, read the next two
                // bytes to verify they are "\r\n".
                if cr.n == 0 && cr.err == nil {
                        if _, cr.err = io.ReadFull(cr.r, cr.buf[:2]); cr.err == nil {
                                if cr.buf[0] != '\r' || cr.buf[1] != '\n' {
                                        cr.err = errors.New("malformed chunked encoding")
                                }
                        }
                }
        }
        return n, cr.err
}

So we it has data to return, but it's blocking further to make sure the next two bytes are valid. It could instead delay that check if it kept more state.

@bradfitz awesome, thank you for the analysis and correction.
Ah I see, my remedy of pw.Close() then just masked the problem and completed the writes.


add Explorer.DataFrame.to_rows_stream method

PR for #569

@mlineen thank you! :purple_heart:  We are trying to have tests for all the functions, so would you mind to add a test covering this new one?
And also, for what I understood, this is going to work only for eager dataframes, right? Maybe we could have a better error message in case a lazy frame is in use.

Sure, it wasn't clear how you wanted to test; I think to_rows is only tested via doctests right now which is what I patterned it off of. I'll take a look at the lazy frame issue too.


Don't autolink if authority is only "end" characters

See https://github.com/atlassian/commonmark-java/issues/99, the following examples should not result in any links:
http://.
http://"
http://<space>

Note that http:// and http://. are valid URLs according to RFC 3986, because authority can be zero or more unreserved characters. But we don't autolink http:// on its own or the trailing . of http://example.org.

Pushed a fix, but keeping this open until I've released it.

Released in 0.7.0: https://github.com/robinst/autolink-java/blob/master/CHANGELOG.md#070---2017-08-31


use of batchAck, and clearing out some messages while other still run?

Regarding the fixes for #24 - it looks like there is a wascally.batchAck() method available now. Is that the correct method to use when I want to force acknowledgements to process?
I'm currently running in to a scenario where I have a very very very long (20+ minute) job running, with 5 other jobs that have completed. The other 5 jobs are sitting in unacked mode in rabbitmq, in spite of the work having been completed already.
In my scenario, it looks like Wascally is not processing the ack on those 5 messages, due to the 1 message that remains unack'd. Is that correct?
Assuming that is correct, will a call to wascally.batchAck() force the ack of those 5 messages to process, while the last one still runs?
also - there's not any documentation for the batchAck method that I can see.

In my testing of batchAck this is not fixing the situation that I am running in to.
It looks like the fixes in #24 are allowing all messages to finish acking before closing the connection, which is definitely a good thing.
I was hoping that those fixes would also allow me to force ack back to the queues, as needed. However, it does not appear to be allowing this. Even when I call batchAck from my code, my messages are stuck in unacknowledged mode in the queue, until all outstanding messages are ack'd.
I need to be able to ack messages in my queues, even when there is an outstanding message that has not yet had msg.ack() called on it.

There is no doc for batchAck because it is not for external consumers. It's always been there and is what is getting called periodically to trigger the process. You can't ack messages out of order and batch so no amount of calling it will ack messages when your app is hanging on to one.
Is there a reason you are concerned about those messages? They will resolve once the earlier message completes. If you are working with a consumer limit and that's why this is a problem, let me know.

Ok, yeah. I'll take that batchAck call out. I was reading through the code and I see what you're saying about it now.
For my scenario and issues, yes this is due to queue limits.
The Setup
In my job scheduling system, I have the idea of job "sizes" ... small, medium, large, etc. Each of these sizes is a rough approximation of how much horse power is needed to run the job on the servers. It's not an exact science, but there are some things that we know should be limited to only 1 or 2 things running concurrently.
In the current setup, a "small" job can have up to 6 parallel processes, and the process limit is implemented using queue limits.
A situation that I eluded to above, is causing jobs to run sequentially at a certain point in our process, due to the batching of message ack.
The Scenario Detail
We have 6 jobs set up to run as "small" jobs. 5 of the 6 should complete within a few seconds. The last one takes 20 minutes. It's still considered a "small" job, because it is not resource intensive, it is only long running.
When the schedule kicks off, all 6 jobs are released for work. My worker agent picks up all 6 and begins running them immediately. The first 5 jobs complete within a few seconds, but the last job continues working and working and working for 20 minutes.
The last job is not ack'd until it actually finishes. Because of this, all 6 message sit in unacknowledged mode, waiting for this last job to finish.
Why This Is A Problem
We have about 10 more jobs that need to be run in this schedule, once that that last long-running job completes. If our short running steps were allowed to acknowledge in the queue, as they complete, then these remaining 10 jobs would run and very likely complete before that 20 minute job completes.
As it stands, the remainder of our jobs are stuck, waiting, not being processed, due to the batch acknowledgement of messages waiting for this long running job.
A Temporary Workaround
Currently, the workaround is to put this long running job in it's own "size" - but that is not a workaround we want to keep around. There will be too many instances of this happening as we continue to migrate schedules off our old mainframe, on to this new scheduling system.
What We Need
It is important for us to be able to acknowledge messages even when there are some that are not yet ack'd, so that our schedules can continue to run jobs in parallel, instead of the partially parallel, then serially, then parallel again way that is currently happening.
It would be good to either have the batch acknowlege ignore unack'd messages and go ahead and process the ones that are acked... or to provide an API that lets me force ack (again, ignoring the ones that are not yet acked).

after some discussion, we may be moving away from the current architecture that leaves messages unack'd.
our current workaround is to stand up multiple instances of my agent process, with the limit set to 1 on each instance. doing that allowed my code to work as needed, but at the cost of a lot of running processed.
personally, i still feel the need to process the ack batch, while ignoring the ones that are not yet ack'd, is important. if one handler hangs and never acks a message, the rest of them should not be affected by this.

Yeah, what you really need is the ability to turn off batch acknowledgement for specific queues and then have the ack/nack/reject calls take place immediately.
The reason wascally does not do this is that it defaults for the fastest approach. In your case, you're processing things so slowly, you're not going to know a difference. Wascally's batching approach results in a 400% perf improvement over resolving each individual message. The thing is you cannot batch ack out of order ever; trying to force it would just cause Rabbit to shut down your channel and return all unack'd messages back to the queue and you'd get back into the same state, try to force something, the channel would blow up again ...
I will take a look at adding this feature so that you can get back to doing things without having to run so many processes.

Wascally's batching approach results in a 400% perf improvement over resolving each individual message.

WOAH! I knew it would have an improvement, but that's just darn impressive!
If there's anything I can do to help look in to this solution, let me know. If you have an idea for a direction and can point me down the path, I would love to help more than just opening tickets. :)

@derickbailey - that would be awesome :smile:, I would definitely appreciate the help.
add a queue setting
First step would be to add a property to the queue settings to turn off batch behavior. I like noBatch myself.
don't allow the setting to get passed to amqplib/rabbit
Add the new option as an arg on this line to prevent it from being sent to amqplib as a queue arg: https://github.com/LeanKit-Labs/wascally/blob/master/src/amqp/queue.js#L26
add an operations factory specifically for noBatch
You'll need to create a 'version' of this function: https://github.com/LeanKit-Labs/wascally/blob/master/src/amqp/queue.js#L121-L134, call it something like getNoBatchOps and make sure that the ack function calls ack on the channel like on lines https://github.com/LeanKit-Labs/wascally/blob/master/src/amqp/queue.js#L121-L134 only pass false instead of inclusive! (failing this will make bad, bad things happen)
don't allow the queue to attach to the batch signal if noBatch is set
This condition currently only kicks in when noAck is set: https://github.com/LeanKit-Labs/wascally/blob/master/src/amqp/queue.js#L155-L157, you'll need to update it to include this setting as well.
pick the right set of resolution operations to attach to the message
Right now, this is a ternary but will need to be a little more sophisticated to support a new set of operations: https://github.com/LeanKit-Labs/wascally/blob/master/src/amqp/queue.js#L162. If noBatch is set, you'd call your getNoBatchOps function instead.
testing
There isn't a straight-forward way to write behavioral tests around the queue.js module since it is the one handling all the direct channel interaction on behalf of the Rabbit queue. You'd end up having to mock a lot of the underlying lib and that'd get kinda involved. That's why there aren't behavior/unit tests for anything under the amqp folder.
The integration tests are all under /spec/integration/integration.spec.js. Add a new describe that will test this behavior by adding a new exchange, queue and binding to https://github.com/LeanKit-Labs/wascally/blob/master/spec/integration/configuration.js to use in your test. My suggestion for testing this is to effectively recreate your use case:

set a consumer limit on the queue (say 5)
publish 11 messages with increasing ids
in the handler, only ack messages with ids > 1
when your setup has processed 11 messages, call done
assert that you received all 11 messages despite the queue limit and acking them manually out of sequence.

This will prove that in noBatch the handler is the master of the queue's fate and not the batching logic.
Let me know if I can help out in any other way. If you don't have time/change your mind, just let me know, I think explaining it was a good exercise for me anyway b/c now I think I could write the feature without too much additional work. #famousLastWords.

awesome! that's a far better technical spec than I've received from any business analyst in my career. thanks for the direction on this - off hand it all makes sense (having reviewed the code many times in recent weeks) :)
I'll likely work on this tomorrow afternoon... though, maybe tonight cause I drank too much caffeine and feel the need to code something.

pulling a note from #39 to get the tests up and running properly
rabbitmq-plugins enable rabbitmq_consistent_hash_exchange

i've got most of a test working at this point (learning a lot about your integration test suite in doing so).
question:
what would this assertion look like?
i have a handler set up to message.ack() on all messages except for the first one and I am keeping track of how many messages, total, that I receive in my handler.
does the assertion just look at messageCount.should.equal(numMessagesSent)?
just want to make sure i have the assertion correct

clearly my test is testing the right scenario... but my assertion is wrong because the test "passes" (false positive) even when the actual queue is stuck like this, forever:

@derickbailey try moving the limit to the queue from the exchange declaration, that should do it :)

#facepalm yeah, that would do it. :)
i got the spec correctly failing, so i'm on to putting in the fix!

regarding the "resolution operations" (noAck vs noBatch vs untracked):
if the noBatch setting is true, do I always call getNoBatchOps? what is noAck and noBatch are both true? wouldn't noAck override noBatch? If you have noAck set, then noBatch shouldn't do anything because you've said that you do no want to ack anything at all.

If noAck was chosen, then untracked ops are the ones you want. We still need to allow nack and reject, but ack should be a noOp. You can also choose to provide a boolean to the getNoBatchOps to indicate whether or not ack should actually be an ack or a noOp, your call :)

decided to go w/ the bool passed in to getBatchOps, to handle noAck and noBatch.
but at this point i'm having issues with this, and i'm not sure where. I've done my best to follow your suggested path, but i'm only seeing 1 message come through my handler in the spec, now. I'll try to keep digging. i may need some help spotting what i've got wrong, though. see next commit that i'm attaching

could the issue be here? https://github.com/derickbailey/wascally/blob/3cc9edc8e4f431743dafaeea972bbb07e64c30be/src/amqp/queue.js#L212
when I change this line to be if ( data.activated && !ops.noAck && !ops.noBatch ) { then I end up with a failure saying I got 5 out of 10 messages, instead of just 1 out of 10.
I'm not entirely sure what to do here, though. not sure if this really is the problem I'm seeing.

see previous commit ('prevent noBatch messages from going to unHandled'). this passes now, but I fear I'm doing something horrible.

I'd like to move this conversation over to PR #49 to start code reviewing and cleaning up anything I did wrong, handle any missing work (like documentation), etc. If that sounds good to you, @arobson, go ahead and close this ticket.

@derickbailey - thanks again for this. PR is merged and NPM is now at 0.2.3.


Received a selenium error

page title: Scrapbook
encountered error while scraping d065149ff38a4e7a9b908aeb262b0f4f
Traceback (most recent call last):
File "/home/vai/web/notion-on-firebase/spider.py", line 31, in notion_spider
html, new_pages = notion.scrape_notion_page(page, meta_json=meta_json)
File "/home/vai/web/notion-on-firebase/notion.py", line 130, in scrape_notion_page
login_element = driver.find_element_by_xpath('//a[@href="/login"]')
File "/home/vai/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 394, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "/home/vai/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 978, in find_element
'value': value})['value']
File "/home/vai/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/home/vai/.local/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//a[@href="/login"]"}
(Session info: chrome=79.0.3945.117)

Hey Vaibhav, I haven't kept this repo up to date but you can probably just remove the line which tries to remove the login element.


Localized molecular orbitals energy

Hi all,
There is a way to obtain the energy of each molecular orbitals after locating it with some method, like Pipek Mezey, Foster Boys or Edminston Ruedemberg ?
Best regards,
Daniel

Because localized molecular orbitals do not diagonalize the Fock/KS matrix,
they cannot be assigned an energy.
On Mon, Aug 30, 2021 at 9:31 AM DanielBajac @.***>
wrote:

Hi all,
There is a way to obtain the energy of each molecular orbitals after
locating it with some method, like Pipek Mezey, Foster Boys or Edminston
Ruedemberg ?
Best regards,
Daniel
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/pyscf/pyscf/issues/1049, or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADGAJC6S5Z7TNIYGX6O6JV3T7OB3RANCNFSM5DB4KYEA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Ok. Thank you!


Option usage

Hello, I'm using the boxplot in Vanilla JS with the following code:
<script src="https://unpkg.com/chart.js@4"></script>
<script src="https://unpkg.com/@sgratzl/chartjs-chart-boxplot@4"></script>
<script>

    const boxplotData = {
        // define label tree
        labels: ['January'],
        datasets: [{
            label: 'Dataset 1',
            backgroundColor: 'rgba(255,0,0,0.5)',
            borderColor: 'red',
            borderWidth: 1,
            outlierColor: '#999999',
            padding: 10,
            itemRadius: 0,
            data: [
                [...]
            ],
            legend: {
                position: 'bottom',
            },
        }]
    };
    window.onload = () => {
        const ctx = document.getElementById("canvas").getContext("2d");
        window.myBar = new Chart(ctx, {
            type: 'boxplot',
            data: boxplotData,
            options: {
                indexAxis: 'y',
                responsive: true,
                legend: {
                    display: false,
                    position: 'top',
                },
                title: {
                    display: false,
                    text: 'Chart.js Box Plot Chart'
                },
            }
        });

    };

</script>

This is how it looks on the website:

I would like to do the following things and tried the options inside the documentation, but it did not work:

Hide Dataset 1 and January
Set a custom height and width for the canvas (it currently looks stretched out...)

How can I do that? The only parameter from options that seems to work is the indexAxis which works as intended. The other parameters don't work. I did not find parameters to set a custom height and width of the canvas.

Same here, I am using violin and also box plot and options.legend.display: false seem not to work, legend is still showing.

this seems overall a chart.js question than a this plugin specific question. This plugin doesn't render the legend or title


Fix code example of for_each_prefix_of in comment

The example of for_each_prefix_of gave some wrong results, which can be confusing for users.
This PR fixed them.

Sorry for the delay.
Thank you, the change looks good, I missed that when reviewing the PR at the time.


Double the expected thumbnails showing on image pasting

Describe the bug
Whenever I paste an image on both SO and the demo editor, I get twice the expected number of thumbnails of it.
To Reproduce
Steps to reproduce the behavior:

Go to either SO or the demo editor
Paste a screenshot taken from your OS
See double the thumbnails

Expected behavior
There should be exactly half the number of current thumbnails
Screenshots

Desktop (please complete the following information):

OS: Windows 10
Browser: Chrome
Version: 104.0.5112.102

Hi @allejo. I've reported this recently in more detail: https://github.com/StackExchange/Stacks-Editor/issues/213. This also happens when dragging/dropping an image.

Closing as a duplicate of #213, thanks @Justin-MSE!


Remove column article in mailing-queue screens

 Delete the column "Article" in all mailing queues (ie mailing queue of each article and general mailing queue)


Support BinarySwitchCCSet, ThermostatModeCCSet

Is your feature request related to a problem? Please describe.
I've got a HRT4-ZW / SRT321 and the switch and mode set is not present one the values list :

This is this device : https://devices.zwave-js.io/?jumpTo=0x0059:0x0001:0x0003:0.0
Describe the solution you'd like
Add support for BinarySwitchCCSet, ThermostatModeCCSet
Additional context
Here is log file with the message : TODO: no handler for application command for BinarySwitchCCSet, ThermostatModeCCSet
zwavejs_2023-09-18.log
Exemple :
2023-09-18T20:09:45.235Z SERIAL « 0x01090004080203250100df                                            (11 bytes)
2023-09-18T20:09:45.238Z SERIAL » [ACK]                                                                   (0x06)
2023-09-18T20:09:45.241Z DRIVER « [Node 002] [REQ] [ApplicationCommand]
                                  │ type: multicast
                                  └─[BinarySwitchCCSet]
                                      target value: false
2023-09-18T20:09:45.242Z CNTRLR « [Node 002] TODO: no handler for application command

values : true of false
and
2023-09-18T20:09:45.147Z SERIAL « 0x01090004000203400100b2                                            (11 bytes)
2023-09-18T20:09:45.151Z SERIAL » [ACK]                                                                   (0x06)
2023-09-18T20:09:45.154Z DRIVER « [Node 002] [REQ] [ApplicationCommand]
                                  └─[ThermostatModeCCSet]
                                      mode: Off
2023-09-18T20:09:45.156Z CNTRLR « [Node 002] TODO: no handler for application command

values : Off or Heat
Thanks for all

The commands in your log are meant to control devices, but they are received by zwave-js.
I'm inclined to say that's not what you meant. Will look at the log tomorrow when I'm back at work.

Hello thank you. I understand what you said. Before I was using openzwave and I was able to retrieve the values of these commands (to know if the thermostat was requesting heating or not for example). Tell me if you need more information.

Hello thank you. I understand what you said. Before I was using openzwave and I was able to retrieve the values of these commands (to know if the thermostat was requesting heating or not for example). Tell me if you need more information.

I see, this is https://github.com/zwave-js/node-zwave-js/issues/5937 then. I'll add your use case to that issue.


[WebSocket] Need Test Cases for WebSocket Client

Closing as we have test cases now, and this issue is very broad.


chore: don't always comment for benchmarking

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

npm package (@latest dist-tag)
GitHub release
v4.22.0

Your semantic-release bot :package::rocket:


refactor: Make Chinese translation more readability.

Please check if the PR fulfills these requirements

[x] It's the right issue type on the title
[ ] When resolving a specific issue, it's referenced in the PR's title (e.g. fix #xxx[,#xxx], where "xxx" is the issue number)
[ ] The commit message follows our guidelines
[ ] Tests for the changes have been added (for bug fixes/features)
[ ] Docs have been added/updated (for bug fixes/features)
[ ] It does not introduce a breaking change or has a description of the breaking change

Description
Fix Chinese translate and makes it more readability.

Thank you for your contribution to TOAST UI product. 🎉 😘 ✨

Thank you for contribution @mu-yu 👍


Generic Update has problem

If the issue is to do with Azure CLI 2.0 in-particular, create an issue here at Azure/azure-cli

Extension name (the extension in question)
datafactory see https://github.com/Azure/azure-cli-extensions/pull/1321
Description of issue (in as much detail as possible)

if the generic_update_setter name is properties . it will become properties.properties in the request body

To repro:
az datafactory linked-service update --ids "/subscriptions/92f95d8f-3c67-4124-91c7-8cf07cdbf241/resourceGroups/qiaozhatest/providers/Microsoft.DataFactory/factories/testfactoryforazregression/linkedservices/testlinkedservice" --set properties.description="test description" --debug

if the  generic_update_setter name is pipeline. it will update the property I set but set the other part as null at the same time. Which is not expected.
Before:

After I run the update command
az datafactory pipeline update --ids "/subscriptions/92f95d8f-3c67-4124-91c7-8cf07cdbf241/resourceGroups/qiaozhatest/providers/Microsoft.DataFactory/factories/regfactory/pipelines/myPipeline" --description "test pipeline"
It becomes

the activities become null.

Generic Update

I have hidden the not working update now so that DF onboard will not be blocked by this. Please ping me when you start to work on this。 @jsntcy

Offline synced with @qiaozha,
The root cause of the issue is because the type of response from Get() is different from the type of "properities" for Create_Or_Update(). One solution for this issue is that we should return instance.Properities instead of instance from method datafactory_linked_service_update(). Another solution is making the type of "properities" for Create_Or_Update() the same as the type of response from Get() (not flattern)
So close this issue.


Lot numbers not sync'd with actual lot numbers

It says "Lot 1" instead of "Lot 3601" because we never expected lots to have numbers not starting at 1.
You can see a similar change in prediction here: https://github.com/artsy/prediction/pull/320/files#diff-d2f132171d82eaee180e19c2b57c7ad3R34

@katarinabatina probably needs some design around how to say "Lot 3601 / 155"

Closing as dupe of #1791


coreutils produces executable [

Issue description
For https://github.com/NixOS/nixpkgs/issues/29896 I had a look in /run/current-system/sw/bin/
and noticed it contains
lrwxrwxrwx 1 root root 64 Jan  1  1970 '[' -> '/nix/store/magv1gd9rrzlrmv7cgv2nsdpj7pqqd0f-coreutils-8.28/bin/['

This seems wrong to me...
Technical details

NixOS 17.09 at d9dabb0e66c651cf5ad2dd8b15f5811afea49a0e

Nevermind, this is really part of coreutils. Funny.

I heard there were times when [ aka test wasn't a shell builtin...


Fix/asset on mac os, add CI workflow for macOS

This PR is a response to #469 .
Changes:

added 2 GitHub actions runners with macOS 10.15 and macOS-latest
changed precision in asset to double

Hello @Moritz-Alexander-Kern! Thanks for opening this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file setup.py:

Line 67:93: E261 at least two spaces before inline comment


bpf: Ensure BPF host routing works with tunnel

Fixes: #35023
Fix an issue where pod-to-world traffic goes up stack when BPF host routing is enabled with tunnel.

/test

@jschwinger233 I'm thinking that https://github.com/cilium/cilium/actions/runs/11101570329/job/30849111216 is what Jarno wanted to fix in https://github.com/cilium/cilium/pull/33014. Now that we actually use BPF Host Routing, the to-ingress traffic no longer passes through the stack (where it magically gets routed), but just exits through the default external interface.

Was looking at this once more - uff, we even do it right for IPv6. That's probably the first time that IPv6 is correct but IPv4 is buggy ...

@jschwinger233 I'm thinking that https://github.com/cilium/cilium/actions/runs/11101570329/job/30849111216 is what Jarno wanted to fix in #33014. Now that we actually use BPF Host Routing, the to-ingress traffic no longer passes through the stack (where it magically gets routed), but just exits through the default external interface.

Probably worth re-testing on-top of https://github.com/cilium/cilium/pull/35143 :)

/test

Thanks a lot both, I can see that this change fixes the issue mentioned in https://github.com/cilium/cilium/issues/31653 tested in https://github.com/cilium/cilium/pull/35418

I think we'll need a backport of https://github.com/cilium/cilium/pull/35143 first, so let's set this to author for now.

/test

Thank you! That goto maze is getting a bit much, but let's clean it up afterwards.

https://github.com/cilium/cilium/pull/35691

Switching back to author backport, as a draft attempt in https://github.com/cilium/cilium/pull/35861 reliably fails in the Clustermesh CI workflow.

Switching back to author backport, as a draft attempt in #35861 reliably fails in the Clustermesh CI workflow.

False alarm, should be good now.


Consider open the Github Discussion

Consider open the discussion to track feedback to your on going work on Godot Digital Human Rendering

https://github.com/godotengine/godot-docs/issues/7398#issuecomment-2080359196


[Netty 5] DefaultPromise may throw checked exceptions that are not advertised

At the moment all sync* methods that are implemented by DefaultPromise may throw checked exceptions which are not adviced. This is bad for multiple reasons. We should just wrap the checked exceptions with a RuntimeException.

Let me work on this and throw CompletionException as CompletableFuture does.


Unsupported gnome 3.38

New version of Gnome 3.38, timepp is not supported.
Log from journalctl /usr/bin/gnome-shell
                                                     Fullscreen@/home/mathben/.local/share/gnome-shell/extensions/timepp@zagortenay333/lib/fullscreen.js:122:31
                                                     TimerFullscreen@/home/mathben/.local/share/gnome-shell/extensions/timepp@zagortenay333/sections/timer.js:1056:9
                                                     SectionMain@/home/mathben/.local/share/gnome-shell/extensions/timepp@zagortenay333/sections/timer.js:106:27
                                                     _sync_sections_with_settings@/home/mathben/.local/share/gnome-shell/extensions/timepp@zagortenay333/extension.js:271:35
                                                     _init@/home/mathben/.local/share/gnome-shell/extensions/timepp@zagortenay333/extension.js:235:14
                                                     enable@/home/mathben/.local/share/gnome-shell/extensions/timepp@zagortenay333/extension.js:630:14
                                                     _callExtensionEnable@resource:///org/gnome/shell/ui/extensionSystem.js:167:32
                                                     loadExtension@resource:///org/gnome/shell/ui/extensionSystem.js:348:26
                                                     _loadExtensions/<@resource:///org/gnome/shell/ui/extensionSystem.js:586:18
                                                     collectFromDatadirs@resource:///org/gnome/shell/misc/fileUtils.js:27:28
                                                     _loadExtensions@resource:///org/gnome/shell/ui/extensionSystem.js:565:19
                                                     _enableAllExtensions@resource:///org/gnome/shell/ui/extensionSystem.js:595:18
                                                     _sessionUpdated@resource:///org/gnome/shell/ui/extensionSystem.js:626:18
                                                     init@resource:///org/gnome/shell/ui/extensionSystem.js:56:14
                                                     _initializeUI@resource:///org/gnome/shell/ui/main.js:269:22
                                                     start@resource:///org/gnome/shell/ui/main.js:159:5
                                                     @<main>:1:47

Mind testing the latest version? It supports 3.36 but mabye it will work on 3.38 as well.

Thanks for the update on the extension, but it seems to keep failing on 3.38. Apparently, is hitting this same error https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3221.

Ah. Thanks for that info.

Alright. I changed that allocation-changed signal. Turns out the new 'notify::allocation' works on 3.36 as well. You mind testing the extension on 3.38 again?

Seems to get stuck in "Loading..." state

Ah shame. Do you mind typing this into a terminal: journalctl /usr/bin/gnome-shell -r Look for any errors with timepp.

It's hitting this same issue as here https://github.com/biji/simplenetspeed/issues/19. The workaround of using x_expand and y_expand instead of x_fill and y_fill seems to fix the kanban view.

Alright. We now support 3.38 as well.


Hotfix dependancies upgrades, apollo engine added & bug fixing

All dependencies are upgraded and set to fixed versions
ACL integrated so that authorized users can execute queries
Apollo Engine support is added
Issues fixed: #17 #21

Apollo Engine configuration
This plugin now accepts following Apollo configurations
"apollo" : {       "apiKey": "YOUR-KEY",       "debugLevel": "",       "graphqlPort": "GRAPHQL-PORT"     }

Available debug levels: DEBUG, INFO, WARN or ERROR default is DEBUG

@aatifhussain this PR seems to tackles a lot of issues at the same time. This is not acceptable as ideally there should be an individual PR for each issue. Please take care of this from next time.

@aatifhussain have the required changes been made?


How to use with julienschmidt/httprouter?

Is it possible to use this package with:
https://github.com/julienschmidt/httprouter#where-can-i-find-middleware-x
...for an Auth0 implementation?

It's pretty easy to use httprouter with negroni. See http://nicolasmerouze.com/guide-routers-golang/
You're biggest issue is probably going to be dealing with the different handler signature. One strategy is to use gorilla context lib and stuff the Param object in there so that your signature stays closer to http.HandlerFunc. The fine article has the details.

@leadinglocally I'm closing this out in the hope that you've found a suitable solution.  Please yell if you'd like the issue reopened!  😺

Check this out: https://github.com/laurentbel/go-auth0-jwt-validation-middleware-httprouter
Hope this will eventually help someone.


Migrate to API v4

This issue is here to let you know that we are commited to maintaining this project and I will make this migration soon. So you don't have to worry that gitlabform will stop working with subsequent GitLab versions. :) Also please note that API v3 did not go away in 9.5 (http://disq.us/p/1lky6q4) and will not go away soon, so there is no rush with this. See https://gitlab.com/gitlab-org/gitlab-ce/issues/36819 for details.

Now that the API v3 has been removed, I believe it would be time to tackle this issue?
We just migrated to Gitlab 11.0.1 and gitlabform is currently unusable.
Let me know if I can help.

Hi @born4new, thanks for letting me know. I start 2 weeks vacation without a computer in a week so if you need v4 support badly then creating a PR this week would help. If you could migrate at least part of the code it would be very helpful. Ping me on gitter if want to talk about it.

The way I see it we will can leave v3 behind, pointing to existing latest gitlabform for users of GitLab <11, and replace all v3 calls with v4 ones.

Hey there!
Bad timing I must say, as I'm also going on vaca starting tonight...
Personally, not a massive rush to get this one done :).
We'll see who's the first one to work on it then 😆

Any update on the migration?


Update What's new and amend link on checkboxes page

Description

Add team page and feedback survey links to What's new
Amend link wording and destination on checkboxes page

Related issue

Checklist

[ ] Tested against the NHS.UK frontend testing policy (Resolution, Browser & Accessibility)
[ ] Code follows the NHS.UK frontend coding standards
[ ] Version number has been increased in package.json (using SEMVER)
[ ] CHANGELOG entry - will do now
[x] Whats new page entry - this is it
[x] Page updated date - already done

@PeteKowalczykNHS for info, I've linked directly to our filter questions page.


$resource not set on models returned from GET methods

At the moment, initResultObject is used in ResourceAction code to get the model, while createModel is the one that sets $resource on this. That results in $resource only being set when calling createModel() directly, while I'm guessing it should be called on GET ResourceAction methods as well.

Hello.
By calling createModel() on GET ResourceAction will broke custom initResultObject function with can be provided in ResourceAction directive.
Did I answered on your question?

I didn't really understand what you're saying... I'll try to further explain this by example.
@Injectable()
@ResourceParams({
    url: apiUrl + "/foo"
})
export class FooResource extends Resource {

    initResultObject(): Foo {
        return new Foo();
    }

    @ResourceAction({
        path: "/bar"
    })
    getFooBar: ResourceMethod<any, Foo>;
}

And then, when you try const bar = fooService.getBar(), bar does not have $resource on it. It results in this - you're unable to call bar.$save() etc.

Hello.
That is strange. The resource is set on object on here

After further investigation, I realized that those properties were deleted in my code, because of a "converting circular structure to JSON error". In other words, $resource is set correctly.
Thanks for the fast replies.


rpcd-mod-luci: bump PKG_RELEASE for libiwinfo ABI change

Bump PKG_RELEASE for libiwinfo ABI change for rpcd-mod-luci.
Signed-off-by: Christian Marangi<EMAIL_ADDRESS>

There's also modules/luci-mod-status which uses libiwinfo

It's just a dependency but the module is just javascript files so it should not be affected

Agree with Ansuel.
To my knowledge ,  luci-mod-status (and bwc) do not link at build time, but seek and load the library at run time in a dynamic way

It's a bit hidden: https://github.com/openwrt/luci/blob/master/modules/luci-mod-status/src/luci-bwc.c#L260
Strictly speaking, we didn't change the ABI of the functions it's using, but I guess we still want to bump it so the dependencies are updated

Please go ahead

@jow- is it ok now?

@Ansuel - yes looks fine


Created and updated docs for 1.23-20

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/approve


Is there a way to make the scene data persisted to the server?

Is it possible to make the scene data persisted to the server and accessing it using the session link? This will ease the integration with other collaboration tools such as Jitsi Meet and Matrix.

This was being tracked in #1878 and there's a PR for it in #2188

Can we integrate Excalidraw into jitsimeet?

@ramalingamvarkala feel free yo make one, similar to the Jira plugin https://github.com/excalidraw/excalidraw/issues/1189
I'm gonna close this issue as resolved