[BUG]

What is the bug?
[23:00:40 ERROR]: Something went wrong while executing the command, please report this https://github.com/booksaw/BetterTeams/issues/new/choose
[23:00:40 WARN]: java.lang.NullPointerException: Cannot invoke "org.bukkit.World.getName()" because the return value of "org.bukkit.Location.getWorld()" is null
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.team.LocationListComponent.getString(LocationListComponent.java:31)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.Warp.toString(Warp.java:47)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.team.WarpListComponent.toString(WarpListComponent.java:34)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.team.WarpListComponent.toString(WarpListComponent.java:9)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.team.ListTeamComponent.getConvertedList(ListTeamComponent.java:62)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.team.WarpListComponent.save(WarpListComponent.java:18)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.Team.saveWarps(Team.java:1322)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.Team.addWarp(Team.java:1337)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.commands.team.SetWarpCommand.onCommand(SetWarpCommand.java:36)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.commands.presets.TeamSubCommand.onCommand(TeamSubCommand.java:46)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.commands.ParentCommand.onCommand(ParentCommand.java:135)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.BooksawCommand.runExecution(BooksawCommand.java:72)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.BooksawCommand.lambda$execute$0(BooksawCommand.java:59)
[23:00:40 WARN]:        at org.bukkit.craftbukkit.v1_20_R1.scheduler.CraftTask.run(CraftTask.java:101)
[23:00:40 WARN]:        at org.bukkit.craftbukkit.v1_20_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57)
[23:00:40 WARN]:        at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
[23:00:40 WARN]:        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[23:00:40 WARN]:        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[23:00:40 WARN]:        at java.base/java.lang.Thread.run(Thread.java:840)
Expected Behaviour
create a warp
How to Reproduce

happens when someone uses /team setwarp

Error message
[23:00:40 ERROR]: Something went wrong while executing the command, please report this https://github.com/booksaw/BetterTeams/issues/new/choose
[23:00:40 WARN]: java.lang.NullPointerException: Cannot invoke "org.bukkit.World.getName()" because the return value of "org.bukkit.Location.getWorld()" is null
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.team.LocationListComponent.getString(LocationListComponent.java:31)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.Warp.toString(Warp.java:47)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.team.WarpListComponent.toString(WarpListComponent.java:34)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.team.WarpListComponent.toString(WarpListComponent.java:9)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.team.ListTeamComponent.getConvertedList(ListTeamComponent.java:62)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.team.WarpListComponent.save(WarpListComponent.java:18)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.Team.saveWarps(Team.java:1322)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.Team.addWarp(Team.java:1337)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.commands.team.SetWarpCommand.onCommand(SetWarpCommand.java:36)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.commands.presets.TeamSubCommand.onCommand(TeamSubCommand.java:46)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.commands.ParentCommand.onCommand(ParentCommand.java:135)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.BooksawCommand.runExecution(BooksawCommand.java:72)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.BooksawCommand.lambda$execute$0(BooksawCommand.java:59)
[23:00:40 WARN]:        at org.bukkit.craftbukkit.v1_20_R1.scheduler.CraftTask.run(CraftTask.java:101)
[23:00:40 WARN]:        at org.bukkit.craftbukkit.v1_20_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57)
[23:00:40 WARN]:        at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
[23:00:40 WARN]:        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[23:00:40 WARN]:        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[23:00:40 WARN]:        at java.base/java.lang.Thread.run(Thread.java:840)
Output of /teama version
[23:06:35 INFO]: [BetterTeams] Storage Method: com.booksaw.betterTeams.team.storage.storageManager.SeparatedYamlStorageManager
[23:06:35 INFO]: [BetterTeams] Minecraft Version: git-Paper-196 (MC: 1.20.1)
[23:06:35 INFO]: [BetterTeams] Language Selected: messages
[23:06:35 INFO]: [BetterTeams] Current plugin version: 4.8.3
Additional Information
[23:00:40 ERROR]: Something went wrong while executing the command, please report this https://github.com/booksaw/BetterTeams/issues/new/choose
[23:00:40 WARN]: java.lang.NullPointerException: Cannot invoke "org.bukkit.World.getName()" because the return value of "org.bukkit.Location.getWorld()" is null
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.team.LocationListComponent.getString(LocationListComponent.java:31)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.Warp.toString(Warp.java:47)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.team.WarpListComponent.toString(WarpListComponent.java:34)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.team.WarpListComponent.toString(WarpListComponent.java:9)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.team.ListTeamComponent.getConvertedList(ListTeamComponent.java:62)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.team.WarpListComponent.save(WarpListComponent.java:18)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.Team.saveWarps(Team.java:1322)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.Team.addWarp(Team.java:1337)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.commands.team.SetWarpCommand.onCommand(SetWarpCommand.java:36)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.commands.presets.TeamSubCommand.onCommand(TeamSubCommand.java:46)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.commands.ParentCommand.onCommand(ParentCommand.java:135)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.BooksawCommand.runExecution(BooksawCommand.java:72)
[23:00:40 WARN]:        at BetterTeams.jar//com.booksaw.betterTeams.BooksawCommand.lambda$execute$0(BooksawCommand.java:59)
[23:00:40 WARN]:        at org.bukkit.craftbukkit.v1_20_R1.scheduler.CraftTask.run(CraftTask.java:101)
[23:00:40 WARN]:        at org.bukkit.craftbukkit.v1_20_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57)
[23:00:40 WARN]:        at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22)
[23:00:40 WARN]:        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[23:00:40 WARN]:        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[23:00:40 WARN]:        at java.base/java.lang.Thread.run(Thread.java:840)

This issue is being closed for inactivity. If you are still having problems feel free to open a new issue linking this one, make sure you answer any questions asked in the new issue.


Assert in ReedsSheppPath

The following assert does not pass
https://github.com/humanoid-path-planner/hpp-core/blob/f367db05e4cf9c3fb1ca80fd4603ce2b11b30f04/src/reeds-shepp-path.cc#L591
when building a ReedsSheppPath with the following parameters:

init: 0, -1, 1, 0, 0, 0, 0.14999999999999999, 0.20000000000000001, -1.3400000000000001, -0.20000000000000001, 1.9399999999999999, -1.5700000000000001, 1.3700000000000001, 0, 0.029999999999999999, 0, 0
goal: 5.7362982238346234, 9.4465579648718965, 0.98636702396464049, 0.16456030516238818, 0, 0, 0.1931115704789346, 2.4512899638467114, 0.64483866454209959, -2.5676909543696151, 2.238067950490557, -1.0640813964560949, -0.80595092889081654, -1.8540772172091715, 0.019575152211624737, -0.017281600618040516, 0.62502857597837558
robot: tiago

rho: 0.20219999999999999
no wheels
xyId, rzId: 0, 2

constraints: locked joint on the two wheels (dof 4 and 5).

The extra length is 2.7715421813461121

In the assert line:

extraLength_: 2.7715421813461121
currentLength_: 11.981989169651751
paramRange (): { first = 0,  second = 25.688923795498006 }


Demo/next translate

@timlrx  @rsipakov It should be finished now. I just added the sitemap.
The branch doesn't seem to be able to merge automatically. Maybe you can fetch it directly from my repo ?  Branch is up-to-date with timlrx/master.
I'm not sure about three different things:

I translated some sr-only tags with the t hook from next-translate. I'm not sure if they need to be purely statics (i.e. text) to work with screen readers ?

For tags, because tags are placed in the same directory, I had to localize them with the same system as articles ( feed.xml for default language and feed.locale.xml for others). I did not how to link them from the pages.

I would also be grateful if you could check the sitemap script. It seems to be working. I did a little of overthinking, though.  😅
I basically tried to put a system in place that detect automatically page presents in multiple language. The only caveat is that, for pages with multiples translation to work, they need to be at least the default language (which seems fine by me).

Otherwise, I'm  happy with the result. I'm also happy to contribute to this awesome template, and I hope my contribution will prove useful.
Please let me know if you see things to change / things to improve !
(The branch might need some squash and merge though. 😅 )

I think that it's really great, definitely far beyond my initial intent with a demo and a much more comprehensive example 😄.
Sitemap.xml seems to have some errors though. I get the following error on the deployed page:

@timlrx Indeed ! There were some tags missing in the sitemap declaration.
See https://stackoverflow.com/questions/36193346/validation-of-xml-sitemap-urlset-with-xhtmllink-inside-url-element.
It should work normally now. 😃

I don't think so? Here's what I am seeing for the sitemap.xml

@timlrx All problems should be fixed now.
(I've been thinking, maybe instead of using that branch as a demo, we could try to maintain it, in order for people to be able to start their blog with i18n and next-translate ? They'll just need to config i18n.json in root and change locales folder accordingly). 🙂

Sorry, should have asked you to resolve the merge conflict. I thought it would just change on my branch, but in any case, everything looks good now and I will proceed to merge it!
I definitely see the benefits of doing so, but I have to weigh it against maintaining a third branch (there's currently master and typescript) and that the code is quite different. Getting everyone to use the version with next-translate also seems less than ideal, as modifying the code is quite a bit more opaque. I might try to incorporate the markdown locale sourcing part in the main codebase, then that leaves implementing the next-translate layer to the user - which is quite doable but tedious. I acknowledge sitemap is a pain though haha.

No worries ! They were very minor merge conflcts. Thank you for the merge !
I totally understand your point of view.  (Yeah sitemap, was a totally a pain. I guess you can tell by how the sitemap is totally overthinked now...  😅 )
What I might do is, trying to maintain a branch (next-translate or demo/next-translate ?) on my fork of your repo with master of this repo.
I'm using that branch for my blog and would like to keep it up to date with your repo. If that can benefits other users, that's a win in my book.
I might have to think a little bit more about it though (because it might implies that my blog, with custom ressources, and the next-translate branch might need to be in the same repo).
Also, I deeply apologize, but while you were doing the merge, I was checking the sources, and I'm not sure about two differents things. I might have forgot things for the SEO. Could you tell me what you think ?

I generate a feed.{locale}.xml for each locale that is not the defaultLocale.  But the other locale are not present in _document.js.

Shall we do a <link rel="alternate" type="application/rss+xml" href="/feed.xml" /> (l24 of _document.js) for every non-default locale(s) ?

Kind of the same question for SEO.js component.
Shall we change  <link rel="canonical" href={${siteMetadata.siteUrl}${router.asPath}} />  (l104) ?
Thing is, to change it ""correctly"", we might to assume that every articles is present in every locales (BlogSEO is loaded from two layouts). And I'm not super comfortable with that assumption.

Sorry again for these two questions after the merge.

Sure, I have already linked your fork on the readme!
Not the most knowledgeable on the i18n front, but it seems that the standard is to have a site/{locale}/.../feed.xml and specify the element channel language as part of the feed. Here's an example of UBS media feed
I don't see any clear guidelines on the RSS auto discovery (<link rel="alternate".../>), but it seems that multiple alternative feeds is fine.
For SEO, i18n nuxtjs provides a good set of guidelines. Yes, it seems that the canonical link should point to the main page but it is an issue that it might not exist if for example the article for the default language is missing... One possibility (quite a different change in approach) would be to scan through all the files at the start and build some kind of dictionary that can populate the SEO and maybe also the sitemap later. Also, it seems that we should add a og:locale and og:locale:alternate meta tag.
Don't worry about the questions. I foresee a bit more struggle until we converge to a nice solution 😄

I do agree on the site/{locale}/.../feed.xml idea. Problem is that Next-js seems to consider  site/{locale} as site, with just the locale props that change.
Example: english feed on french local; french feed on english local (fr/feed.xml and /feed.fr.xml).
If we create a fr directory, for exemple, in statics, the new route of the xml would be site/fr/fr/feed.xml, for example...
I've been wrestling for two hours to try to get the {locale) working inside the _document.js, in order to add the auto-discovery of rss feed depending on the local... I wasn't able to get the local inside the render() function, which prevented me to change the auto-discovery.
I do agree on the SEO. I'm not familiar enough with next-js, how can you execute a script once before the build ? Modifying the build command in package.json like you did ?
I think we should take particular precaution to execute it only once.
Or maybe we can the three ssg pages ([page].js, [...slug].js && [tag].js to check it while doing their SSG ? They would have to do other call to getAllFiles...(), which might be costly in terms of performance, but it might be way cleaner in my humble opinion (since it would just be another condition on an empty (or not) array in SEO.js).
(Thanks for the Readme ! Gautier is without an h though 😅).

Will get back on feed.xml.
_document.js is rendered in the server so I don't think it would support the auto-discovery depending on locale. In fact, all feed.xml are listed regardless of locale.
To execute a script before build you should be able to just run node ./script.js && next build. Yup, modify the npm build script. Yes, if we are to do it that way then it makes sense to refer to this parsed file instead of having to call getAllFiles repeatedly. But, it is a big refactor 😬
Fixed the typo, my bad!

I think for a statically generated sitemap, your current approach seems like the best we can do. The other alternative is to generate the sitemap server side like this tutorial but this would also mean that that the template will no longer be 100% static.
Also, I take back my suggestion to run a prep script before running build. The main downside is that this will break a the hot reloading and affect user experience while developing, since to sync every change, the prep script would have to run first.

I think I just finished. Let me know what you think. Suggested RSS feed and SEO should work. 😁
Live preview & Github branch.
Let me know what you think !
Also, I think you should look into this commit. Rss suggestion on tags were not working.
I opened a PR on main repo ( #182 ).

I think I just finished. Let me know what you think. Suggested RSS feed and SEO should work. 😁
Live preview & Github branch.
Let me know what you think !
Also, I think you should look into this commit. Rss suggestion on tags were not working.
I opened a PR on main repo ( #182 ).

@GautierArcin I seem to be way behind on this topic. Do I understand correctly, now we have feed.xml and feed.fr.xml?
Also, for sitemap.xml I have like this:
https://tailwind-nextjs-starter-blog.vercel.app/about https://tailwind-nextjs-starter-blog.vercel.app/blog https://tailwind-nextjs-starter-blog.vercel.app/index https://tailwind-nextjs-starter-blog.vercel.app/projects https://tailwind-nextjs-starter-blog.vercel.app/tags https://tailwind-nextjs-starter-blog.vercel.app/blog/introducing-tailwind-nextjs-starter-blog https://tailwind-nextjs-starter-blog.vercel.app/blog/new-features-in-v1 https://tailwind-nextjs-starter-blog.vercel.app/blog/new-features-in-v2 https://tailwind-nextjs-starter-blog.vercel.app/tags/common-tag https://tailwind-nextjs-starter-blog.vercel.app/tags/guide https://tailwind-nextjs-starter-blog.vercel.app/tags/next-js https://tailwind-nextjs-starter-blog.vercel.app/fr/tags/tag-francais https://tailwind-nextjs-starter-blog.vercel.app/tags/tailwind

Is it correct or is this issue on my side? Thank you!

@GautierArcin I think it works well. Nice job generating the SEO permutations 👍
@rsipakov not sure why the feed displays like that on the browser. I use chrome and see the same thing, but it parses as a valid sitemap from the validators that I checked.

@GautierArcin I think it works well. Nice job generating the SEO permutations 👍
@rsipakov not sure why the feed displays like that on the browser. I use chrome and see the same thing, but it parses as a valid sitemap from the validators that I checked.

@GautierArcin It is really nice job!
@timlrx Thank you for this notice about the sitemap. But, some validators show errors with this sitemap. For example inspyder.com.

@timlrx  @rsipakov  Thanks you a lot ! I think it's ready to merge. At least, I don't see anything to change right now.
@rsipakov  I think it shows like that because of <loc> and url tag. Every "" canonical"" url is shown.
For the package, it could be interesting. Is the package only necessary at development (To not make the bundle size larger) ?
Also, problem is that, you can't "" check "" if url exist in local or not with this package.
What I mean is that /script/generate-sitemap.js is now quite complicated because we try to check if the current page is available in multiple locale. If so, we can precise in the sitemap that both link are the same content, but different langage (to not be doxxed by Google SEO). I fear it would be difficult to do so with this package. 😅

That's awesome! good job!
this is how I managed to translate the Disqus comments, although it's not my favorite system and I'm in search for a simple one.
import { useRouter } from 'next/router'
...
  const { t } = useTranslation()
  const { locale } = useRouter()
  const Language = locale === 'en' ? 'en' : 'fr'
...
    window.disqus_config = function () {
      this.language = `${Language}`
    }

@GautierArcin sure, we can merge the latest one. Kindly create a new pull request, thanks!

I don't understand your question. Can you reformulate ?

Sure, if we create a js file in "Pages" folder, for example "music" , we can access that js page as mywebsite.com/music , with our js content, like putting a music playlist, etc. This URL will be accessible for both locales, and we need to translate the values with next-translate package. My question is, what if we want to have that page (js file) only in a specific language?

Sure, if we create a js file in "Pages" folder, for example "music.js" , we can access that js page as mywebsite.com/music , with our js content, like putting a music playlist, etc. This URL will be accessible for both locales, and we need to translate the values with next-translate package. My question is, what if we want to have that page (js file) only in a specific language?

@vahidtakro as I understood your question and main concept for "next-translate" on firs step you need to study how is it work. Quick answer on your question: for long content you can use only md/mdx translation concept, for short content you can use hook, like (t).

If I understand the question correctly, @vahidtakro is asking whether it is possible to make a certain page only for one particular language and not the other. Should be possible by specifying the routes you want in getStaticPaths. The pseudocode below should generate the page only for the fr route:
export const getStaticPaths = ({ locales }) => {
  return {
    paths: [
      { params: { }, locale: 'fr' },
    ],
  }
}

If I understand the question correctly, @vahidtakro is asking whether it is possible to make a certain page only for one particular language and not the other. Should be possible by specifying the routes you want in getStaticPaths. The pseudocode below should generate the page only for the fr route:

export const getStaticPaths = ({ locales }) => {

  return {

    paths: [

      { params: { }, locale: 'fr' },

    ],

  }

}

Very useful tip.

@vahidtakro  I do apologize to not having respond earlier. Timothy gave you the right way of doing it.
@timlrx I just merged update from master of this main repo into demo/next-translate branch. It's now again up to date.
Also, I included a succinct Readme on the repo, if someone is interested to do a blog with multiple locales.

Thanks @GautierArcin and @timlrx, I just don't know where to add it,
and also a question got my mind so busy, how can I use this localized template with domain routing?

Thanks @GautierArcin and @timlrx, I just don't know where to add it,
and also a question got my mind so busy, how can I use this localized template with domain routing?
having this would will redirect both domains to the main default domain, which is English.
i18n.json
{
  "locales": ["en", "fr"],
  "defaultLocale": "en",
  "domains": [
    {
      "domain": "mydomain.com",
      "defaultLocale": "en"
    },
    {
      "domain": "myanotherdomain.fr",
      "defaultLocale": "fr"
    }
  ],
  "pages": {
    "*": ["common", "headerNavLinks", "404"],
    "/projects": ["projects"],
  }
}

You would need to add it to your 'music.js' page, in your example.
I honestly don't know for sub domain routing. My guess is that you'll have to set up the dns for both domains (that's why I used sub-path routing instead of dns routing). Otherwhise, I don't know.
In order for it to work effectively with the i18n template, you'll have to modify a lot of route (from example.com/{locale}/article to example.{locale}/article), especially for SEO component. I think that would prouve tedious and time consuming.

Thanks @GautierArcin and @timlrx, I just don't know where to add it,
and also a question got my mind so busy, how can I use this localized template with domain routing?
having this would will redirect both domains to the main default domain, which is English.
i18n.json
{
  "locales": ["en", "fr"],
  "defaultLocale": "en",
  "domains": [
    {
      "domain": "mydomain.com",
      "defaultLocale": "en"
    },
    {
      "domain": "myanotherdomain.fr",
      "defaultLocale": "fr"
    }
  ],
  "pages": {
    "*": ["common", "headerNavLinks", "404"],
    "/projects": ["projects"],
  }
}

You would need to add it to your 'music.js' page, in your example.
I honestly don't know for sub domain routing. My guess is that you'll have to set up the dns for both domains (that's why I used sub-path routing instead of dns routing). Otherwhise, I don't know.
In order for it to work effectively with the i18n template, you'll have to modify a lot of route (from example.com/{locale}/article to example.{locale}/article), especially for SEO component. I think that would prouve tedious and time consuming.

thanks, I am still trying for two days, no result yet. I don't know what the problem is , it's about the template, or about the changes for internationalizing, or vercel or a nextjs bug,
I expected to switch to my locales like this:
domain.com for English,
domain.fr for French,
but I'm experiencing this:
domain.com for English
domain.fr for English
domain.com/fr for French
domain.fr/fr for French

Let me preface this by saying that I might be wrong. I did not try domain routing and don't intend to.
According to the documentation I read, you have to setup the locales and  defaultLocale when setting up domain routing. Thing is, when you setup both these values, you setup sub-path routing.
Judging by your problem, it seems that Vercel (or next) recognize both domains as part of your site, but still use sub-path routing on both domains.
Therefore, I would advise you to look at your domains array in your i18n config. I would also advise you to look at your DNS/domains settings in your deployments.
Sorry to not help more.

No worries, glad I could help !

No worries, glad I could help !

Hello, today I figured out something new, I just posted something in my second language, so only made .fr.md file for it, and now I saw that when I go in that post (in deployed app) I see an error which the app is still looking for the en version but it's missing.
so this is the file which responds 404:
https://www.mywebsite.com/_next/data/7i3RTEobxVMq6P_OeBv92/en/diary/site-has-changed.json

I was not able to replicate the bug on the starter. Once again, please provide a branch on the i18n starter if you want me to look into it.


Cannot find in scope error

I followed the tutorial to setup Earlgrey in Xcode, things seems to be fine until I pasted the Earlgrey.swift and tried to run the sample code, Xcode threw the error of Cannot find in scope error for all the lines of code in the Earlgrey.swift ascwell for the sample code I tried running.
Please, what's the way forward. Thanks.
Swift Compiler Error Group
Cannot find 'grey_keyWindow' in scope
Cannot find 'grey_tap' in scope
Cannot find 'grey_sufficientlyVisible' in scope

The simple test code
func testExample() throws {
        // UI tests must launch the application that they test.
        let app = XCUIApplication()
        app.launch()
        EarlGrey.selectElement(with: grey_keyWindow()).perform(grey_tap())
            .assert(grey_sufficientlyVisible())

        // Use recording to get started writing UI tests.
        // Use XCTAssert and related functions to verify your tests produce the correct results.
    }

I am facing the same issue. Can someone please advise on how to proceed?

I followed the Cocopods setup,
Added the EarlGreySwiftBridgingHeader.h and Earlgrey.swift wrapper
Also added the User Header Search Paths: ${PODS_ROOT}/EarlGreyTest & ${PODS_ROOT}/eDistantObject as recursive

The app target builds successfully but I still see those errors in the EarlGrey.swift (and anywhere where I tried to use the EarlGrey API):


[docs] fix broken link in CREATE TABLE.md

What type of PR is this：

[ ] bugfix
[ ] feature
[ ] enhancement
[ ] refactor
[ ] others

Which issues of this PR fixes ：

Fixes #
Problem Summary(Required) ：

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] I have added user document for my new feature or new function

run starrocks_admit_test

@mergify backport branch-2.4

@mergify backport branch-2.3


Stratux 1090ES & UAT drivers

Stratux version:

Stratux config:
SDR

[ ] single
[ ] dual

GPS

[ ] yes
[x ] no
type:

AHRS

[ ] yes
[ ] no

power source:
usb cable:

EFB app and version: (e.g., WingX Pro7 8.6.2)
EFB platform: (e.g., iOS 9.2)
EFB hardware: (e.g., iPad Mini 2)

Description of your issue:

I just ended up buying the Stratux 1090ES & UAT themselves. I was hoping to use them for WIFI purposes. Where would i be able to get the drivers to manually install them?
If possible, enable "Replay Logs", reproduce the problem, and provide a copy of the logs in http://<IP_ADDRESS>/logs/stratux/ and http://<IP_ADDRESS>/logs/stratux.log.

These are software defined radios. They are receivers that can be tuned from ~100 MHz to 1.5 ghz.
They are not associated with wifi in any way. If you want to use them to listen to radio signals on a desktop computer you should look up SDR#.

@assasen11 - might have the wrong product.


[Question] Why use Adadelta in wav2vec 2.0 optimizer?

Thank you so much for sharing a good repo!
I have a question about wav2vec 2.0 optimizer.
recipes/LibriSpeech/ASR/CTC/hparams/train_with_wav2vec.yaml#L124-L142
As far as I know, this part seems different from the paper.  Is there a reason for using Adadelta?
Thanks in advance.

Hi! Well, the paper does not investigate optimizers as well, and we decided not to follow the paper and instead go for the best performing solution. We tried a couple of alternatives with SGD /Adam but this one was the best. Of course, you can just change it if you prefer using Adam or SGD :_)

I was just curious 😄  Thank you for answer.


Not an Issue but a thing I want to be added in the future

A way to become any monster anywhere

If I add this, I'm going to deactivate this feature when StarlancerAIFix isn't installed.
Keep in mind that you AND your friends need it to make enemies work properly

That sounds absolutely great


Cannot compute math on result of two subqueries

Bug report
System info: Influxdb 1.5.2
Steps to reproduce:
If I run this query:
SELECT * FROM (SELECT SUM(lastval) as bytes FROM (SELECT LAST("value") AS lastval FROM "filecount" WHERE ("host" =~ /hostname/ AND "type" = 'bytes' AND "instance" =~ /db1 mysql/)  GROUP BY instance)),(SELECT SUM(lastval) as entries FROM (SELECT LAST("entries") AS lastval FROM "db" WHERE ("host" =~ /hostname/ AND "type" = 'dbtype') GROUP BY instance)) GROUP BY instance
then I get this as output:
name: filecount
tags: instance=db1 mysql
time bytes        entries
---- -----        -------
0<PHONE_NUMBER>45

name: db
tags: instance=db1
time bytes entries
---- ----- -------
0          466577

If I run this query:
SELECT bytes/entries FROM (SELECT SUM(lastval) as bytes FROM (SELECT LAST("value") AS lastval FROM "filecount" WHERE ("host" =~ /hostname/ AND "type" = 'bytes' AND "instance" =~ /db1 mysql/)  GROUP BY instance)),(SELECT SUM(lastval) as entries FROM (SELECT LAST("entries") AS lastval FROM "db" WHERE ("host" =~ /hostname/ AND "type" = 'dbtype') GROUP BY instance)) GROUP BY instance
I get this:
name: filecount
time bytes_entries
---- -------------
0

name: db
time bytes_entries
---- -------------
0

Removing the "GROUP BY" does not change the behaviour.
Adding "GROUP BY time(0s)" does not change the behaviour.
If I run this query:
SELECT filecount.bytes/db.entries FROM (SELECT SUM(lastval) as bytes FROM (SELECT LAST("value") AS lastval FROM "filecount" WHERE ("host" =~ /hostname/ AND "type" = 'bytes' AND "instance" =~ /db1 mysql/)  GROUP BY instance)),(SELECT SUM(lastval) as entries FROM (SELECT LAST("entries") AS lastval FROM "db" WHERE ("host" =~ /hostname/ AND "type" = 'dbtype') GROUP BY instance)) GROUP BY instance
then there is no output
Expected behavior:
To get this as output:
time bytes_entries
---- --------------
0<PHONE_NUMBER>6765335625202271

Actual behavior:
the math on the two fields from subqueries was not performed.
Additional info:

This is close to what I want:
> SELECT * INTO j FROM (SELECT SUM(lastval) as bytes FROM (SELECT LAST("value") AS lastval FROM "filecount" WHERE ("host" =~ /hostname/ AND "type" = 'bytes' AND "instance" =~ /db1 mysql/))),(SELECT SUM(lastval) as entries FROM (SELECT LAST("entries") AS lastval FROM "db" WHERE ("host" =~ /hostname/ AND "type" = 'dbtype'))); select bytes/entries from j;
name: result
time written
---- -------
0    2

name: j
time bytes_entries
---- -------------
0<PHONE_NUMBER>676534
>

Which could be done with a continuous query... but I'd like to do it without that. If only I could make the first SELECT produce no output!

Another attempt that does not work:
SELECT j.bytes/j.entries FROM j,(SELECT * INTO j FROM (SELECT SUM(lastval) as bytes FROM (SELECT LAST("value") AS lastval FROM "filecount" WHERE ("host" =~ /hostname/ AND "type" = 'bytes' AND "instance" =~ /db1 mysql/))),(SELECT SUM(lastval) as entries FROM (SELECT LAST("entries") AS lastval FROM "db" WHERE ("host" =~ /hostname/ AND "type" = 'dbtype'))))

This is something that's not possible at the moment. We are planning to support this as part of ifql which will have proper support for joining two different streams.
The reason this doesn't work is because using two subqueries is a concatenation operation rather than a join operation so it's not doing what you want it to do.


Project layout change request

The current project layout does not make a clear separation between custom_components/vantage and the rest of the project.
E.g. copying the project requires hass-vantage to be renamed to vantage as that is what is used to reference the objects in HA.
E.g. the test files, readme, etc., now live in the HA folder.
I suggest you follow the pattern used by other custom components where the project contains a custom_components/vantage directory where only the HA goodies go, and the remainder of the project can be dedicated to boilerplate, graphics, readme, test code, etc.
e.g. see Purple Air and Flair.

Is your concern resolved by https://github.com/gjbadros/hass-vantage/pull/16 -- I just merged that.

Yes, thank you

Does this allow use in HassOS as in https://github.com/gjbadros/hass-vantage/issues/19 ? If so, I am excited to give it a go. Are there new install instructions?  Thanks

I don't know, give it a try and report back.
On Wed, May 10, 2023, 10:30 AM Steve Spaw @.***> wrote:

Does this allow use in HassOS as in #19
https://github.com/gjbadros/hass-vantage/issues/19 ? If so, I am
excited to give it a go. Are there new install instructions? Thanks
—
Reply to this email directly, view it on GitHub
https://github.com/gjbadros/hass-vantage/issues/20#issuecomment-1542566754,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AALOHTKJ3ZCXRM7K7BSWPBTXFPGEDANCNFSM6AAAAAAXKBUXD4
.
You are receiving this because you commented.Message ID:
@.***>

I have just looked at, and installed the HACS system in HA. https://hacs.xyz/ This is cool. I was able to integrate my Wyze devices with it. When this Vantage Integration is done, it will be great. I assume it is not there yet, since it is not in the repository. I will keep looking for this, Thanks


Create GitHub Pages based on the main branch

After successful creation, the link should lead to the live page of the current version of the main branch.

Current live page link based on the main branch - https://arestus.github.io/homepage/


Apollo Server GraphQL Subscription Documentation Missing

there is no documentation on how to implement apollo server graphql subscription using the bun websockets or any websockets

there is no documentation on how to implement apollo server graphql subscription using the bun websockets or any websockets

I just checked https://github.com/elysiajs/awesome-elysia but didn't see anything there for this. Seems like a non-common implementation so you might not have too may docs out here on this!


How to set up gradients mode in UE5.3?

For me, if it can be set up as a gradient, the node titles can be read better.

Dit you tried to enable "Use Gradient" in Editor settings > Plugins > Flat Nodes and restart the engine ?


Bug with Bootstrap Collapse in combination with Bootstrap Toast - ReactJS

Hi,
I think I may have found a bug between the Bootstrap v5.1.3 collapse feature and Toast-Messages in ReactJS
Setup to replicate the error:
Create a default react project with:

npx create-react-app collapse-toast-test
Import boostrap with npm i bootstrap or yarn i bootstrap
In index.js import bootstrap:

import 'bootstrap/dist/css/bootstrap.css';
import 'bootstrap/dist/js/bootstrap.bundle.js';

Use buttons from example: https://getbootstrap.com/docs/5.1/components/collapse/ and paste the code into app.js
In app.js import Toast (and make use of it if you want)

import { Toast } from "bootstrap";

Result:
Pressing the buttons only shows the hidden elements. Hide afterwards is not working. So the toggle-feature is bugged.
Used versions:
React-Version: 18.0.0
Bootstrap-Version: 5.1.3

Perhaps duplicate of #35665?

Maybe. But this problem is a little bit different. The collapse is working fine without importing Toast. Just the combination of both is causing the issue.

Any help of React devs, would be handy here

Would you be interested in using react-bootstrap?  You still use the Bootstrap stylesheet, but the components have been re-written and optimized for React.  As mentioned in #35665 there are compatibility issues that you have to be mindful of when using vanilla JS from Bootstrap.

The bug you are seeing has nothing to do with React, and almost nothing to do with bootstrap either. Rather, it's your improper import of bootstraps javascript. You are explicitly importing bootstrap's umd file (bundled with popper... but that irrelevant here),  then importing the Toast class from bootstraps default path... which in the case of the bundler in create-react-app is going to be the module path, ie bootstraps esm file. This effectively loads certain parts of bootstraps code base twice and you are seeing the effects of this.
So instead of
import 'bootstrap/dist/css/bootstrap.css';
import 'bootstrap/dist/js/bootstrap.bundle.js';

// and later

import { Toast } from "bootstrap";

You'll want
import 'bootstrap/dist/css/bootstrap.css';
import 'bootstrap';

// and later

import { Toast } from "bootstrap";

The import 'bootstrap'; is equivalent to import 'bootstrap/dist/js/bootstrap.esm'; in this case - though I would not recommend the long hand import. Use the default and let your bundler decide what kind of files it wants.
Note: You will need to make sure popper is installed as well - as you would no longer be loading the "bootstrap bundle" file that included everything in 1 file.

Hello there!

First, notice you imported the compiled bundle of Bootstrap. Then, you want to use the ESM version of bootstrap in the same project. This confuses the module bundle of Create React App which is Webpack.
Read about using Bootstrap with Webpack module bundler (included in Create React App) here
I got the same issue with collapse (in the navbar component) and tooltips using React. I solved in the following way:

3.1 Importing only the CSS file in the index.js file or the App.js file and not importing the bundle JS file.
// ...
import "bootstrap/dist/css/bootstrap.min.css";
// ...

3.2 I am using the collapse feature in my navbar component. I am not importing bootstrap in this file (Navbar.jsx) only configuring the HTML attributes, like the following code:

<button
  className="navbar-toggler"
  type="button"
  data-bs-toggle="collapse"
  data-bs-target="#navbarMenuContent"
  aria-expanded="false"
  aria-controls="navbarMenuContent"
  aria-label="Toggle navigation"
>

</button>

3.3 Then, I am using the Tooltip feature like this (here I am importing bootstrap ESM and the Webpack module bundler bundles correctly):
// ...
import { Tooltip } from "bootstrap";

// ...
const enableTooltip = (someHtmlElement) => {
  new Tooltip(someHtmlElement);
};

// ...

I used this to make the Collapse feature and the tooltip component work correctly together in the same project.
You can try this way to use Bootstrap + React.
Additional Notes:

Bootstrap v5.2.0
React v18.2.0
React Scripts: v5.0.1
Notice in your "node_modules" folder that PopperJS (Bootstrap's peer dependency) is installed when you install bootstrap.

Another workaround is to import Toast directly from toast.js
import Toast from 'bootstrap/js/dist/toast.js';


Implement PLIMIT and POFFSET

LIMIT and OFFSET currently set the limit and the offset on the series that are returned. We need another layer of limiting, which is the number of data points in each of those series. I'm proposing we add new tokens to the query language PLIMIT and POFFSET.
Short for point limit and point offset. Feedback welcome. Feels a little ugly, but we need something like this.

If this is all about paging through points in a series with a lot of data, and narrower time ranges are still not sufficient, seems like we do need it. No other command comes to mind.

+1 on the functionality. It is very much needed indeed, but I would suggest to switch the names as I'd expect limiting on the database to be the more frequently used case (at least from the way that I use the database).

Also I think using the LIMIT for the datapoint limit instead of the series is more compatible with sql tradition and previous versions of influxdb. Maybe use SLIMIT for a series limit instead?

+1 for SLIMIT
I agree with Ynguibjoerg. To me, LIMIT should control the number of rows
returned. Also, I thought LIMIT was used this way in 0.8, so changing
meaning is confusing.
On Mar 2, 2015 4:44 AM, "Ynguibjoerg"<EMAIL_ADDRESS>wrote:

Also I think using the LIMIT for the datapoint limit instead of the series
is more compatible with sql tradition and previous versions of influxdb.
Maybe use SLIMIT for a series limit instead?
—
Reply to this email directly or view it on GitHub
https://github.com/influxdb/influxdb/issues/1709#issuecomment-76690805.

I think I'm sold on that. LIMIT and SLIMIT. Besides, it's easier to say "slimit" than "plimit", no?

+1 Awesome!

:+1: for LIMIT and SLIMIT


Add Ability to Test and Reconnect to Data Store

I've been using this library as part of a service and I've seen it lose the Redis connection, so I added a simple method on the store (and the related interfaces) to query and reset the connection as needed.
This could apply to any other data store over the network, but could also just be a nil function for stores that don't need a connection reset.

Thanks for the PR. Wouldn't it be better though to let shield automatically redirect instead of exposing a TestConnection to the user?

Yup, I had a similar thought...but I ended up not going that route as we would have to have a new setting to tweak how often it should check/reset and would add a thread to check for the reset timer even for applications that were just running in a one off and didn't need it. In the end, I figured I would just offload that logic to the apps that decided they wanted it, but it could certainly go the other way.


Datepicker: Value must be either a date object recognized by the DateAdapter or an ISO 8601 string

ERROR Error: Uncaught (in promise): Error: Datepicker: Value must be either a date object recognized by the DateAdapter or an ISO 8601 string. Instead got:
The date an error occurred at the time of displaying it, that is, I'm bringing the information from the bank and returning in the input, but the above error occurs.

What does you initial value look like? Is it an object? A string?

The input is returning in your NgModel a Object of type Date. And my search through of Back End, return Type Date.

I have the problem... whats is the fix?

@MaurilioDeveloper do you have a custom date adapter? This is where that error is thrown, maybe it'll help you identify,
https://github.com/angular/material2/blob/9fadf12c2941b739aa87e6d741b79dabc919dc61/src/lib/datepicker/coerce-date-property.ts#L12-L35

Yes, I have. Follow below my code (Custom Date Adapter):

/** Adapts the native JS Date for use with cdk-based components that work with dates. */
export class CustomDateAdapter extends NativeDateAdapter {

  parse(value: any): Date | null {
    if ((typeof value === 'string') && (value.indexOf('/') > -1)) {
      const str = value.split('/');

      const year = Number(str[2]);
      const month = Number(str[1]) - 1;
      const date = Number(str[0]);

      return new Date(year, month, date);
    }

    const timestamp = typeof value === 'number' ? value : Date.parse(value);
    return isNaN(timestamp) ? null : new Date(timestamp);
  }

  // retirar quando for feito o merge da data por mmalerba
  format(date: Date, displayFormat: Object): string {
    date = new Date(Date.UTC(
      date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(),
      date.getMinutes(), date.getSeconds(), date.getMilliseconds()));
    displayFormat = Object.assign({}, displayFormat, { timeZone: 'utc' });

    const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);
    return dtf.format(date).replace(/[\u200e\u200f]/g, '');
  }

}

`

I import my CustomDateAdapter on the module :
{ provide: LOCALE_ID, useValue: 'pt-BR' },
{ provide: DateAdapter, useClass: CustomDateAdapter },

I solved this problem. Thanks for your help @willshowell. I only convert the Date Json (That was returning) to Date, and it worked.

 this.date = new Date(<your_date_string>); should help.

But, i don't understand. If i need the datepicker show a date in format 'DD/MM/YYYY', what i have to pass in ngModel to get this format? Or i have to call some of this funcions parse()  format() ?
And, what is the second parameter of 'format' funcion?

The same problem, do you have guys any solutions how to fix that?

@mcanelo That's a bug with the [value] binding that will be fixed by #7831 you can workaround by using [fromControl] or [ngModel]. Also the NativeDateAdapter doesn't support DD/MM/YYYY so you'll need to use the MomentDateAdapter or a custom one

@mmalerba yeah, solved! thanks so much :)

@mcanelo how did you solve it. Am getting the following error
Error: Datepicker: Value must be either a date object recognized by the DateAdapter or an ISO 8601 string. Instead got: 2017-10-31T08:37:07.000Z
Am using reactive form where i have a service that is returning data from backend.
snippet of the component
<mat-form-field  class="form-group label-floating">                         <input matInput [matDatepicker]="picker2" placeholder="Date After Distribution" formControlName="dateAfterDistribution">                         <mat-datepicker-toggle matSuffix [for]="picker2"></mat-datepicker-toggle>                         <mat-datepicker #picker2 ></mat-datepicker>                     </mat-form-field>
snippet of ts file
 this.beneficiaryList.dateAfterDistribution;//interface is of type date this.stoveForm.patchValue({                     'dateAfterDistribution': this.dateAfterDistribution                 })

You can use amazing time picker (amazing-time-picker) for this purpose, and it is fully compatible with Angular 2-7 and Material design:
https://github.com/owsolutions/amazing-time-picker
Live demo:
https://owsolutions.github.io/amazing-time-picker
Thanks.


Service statistics DB query optimazation

We noticed a huge performance degradation on Opencast service start caused by the named query ServiceRegistration.statistics (see ServiceRegistrationJpaImpl). The response of this query took 30-40 minutes (…yes, minutes!!!). The JPA driver creates an implicit join on oc_job.processor_service and oc_service_registration.id like that:
SELECT t0.id, t1.status, COUNT(t1.status), AVG(t1.queue_time), AVG(t1.run_time) FROM oc_service_registration t0, oc_job t1 WHERE (((t1.date_created >= '2023-03-15 11:37:34.499') AND (t1.date_created <= '2023-03-30 11:37:34.499')) AND (t0.id = t1.processor_service)) GROUP BY t0.id, t1.status;

This heavy query and the unneeded implicit join can be dissolved like that:
SELECT processor_service, status, COUNT(status), AVG(queue_time), AVG(run_time) FROM oc_job WHERE ((date_created >= '2023-03-15 11:37:34.499') AND (date_created <= '2023-03-30 11:37:34.499')) GROUP BY processor_service, status

This query took 2-3 seconds on the same database. To dissolve this query we need to reference the oc_job.processor_service column in the java code as a read only variable to make usage of it within the query. But we can leave this variable private and do not expose it to other modules.
Your pull request should…

[ ] have a concise title
[ ] close an accompanying issue if one exists
[ ] be against the correct branch
[ ] include migration scripts and documentation, if appropriate
[ ] pass automated tests
[ ] have a clean commit history
[ ] have proper commit messages (title and body) for all commits

This, unfortunately, needs to go into develop since it's modifying the database structure.
Very happy to see a simple, low-impact solution to this though!

This, unfortunately, needs to go into develop since it's modifying the database structure.
Very happy to see a simple, low-impact solution to this though!

The database modification is only dropping index, that is currently not in use and also with this patch. You are right, I will put the DROP INDEX ___ to the upgrade scripts for OC 14. But this patch will also work with leaving the index in place in OC 12 (and may be OC < 12).

@wsmirnow did you already prepare a migration for 14? The cut is approaching.

Thank you @mtneug for the reminder. The PR is out. Do you want to review it?


feat(cli): extend search command functionality

What type of PR is this?

Which issue does this PR fix:
Close #1561
What does this PR do / Why do we need it:
If an issue # is not available please add repro steps and logs showing the issue:
Testing done on this change:

Automation added to e2e:

Will this break upgrades or downgrades?
Does this PR introduce any user-facing change?:

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Superseded by https://github.com/project-zot/zot/pull/1674


Read config file from a directory

Feature motivation
For now, this plugin will read config file from root directory automatically, but some people like place config file to some directory, but this plugin wouldn't load config file automatically.
Feature description
provide a config option to specify the path of config file.
Feature implementation
just a config option

Hi! :) Do you mean cosmiconfig file?

That's it.

Like 'postcss-loader', it provide 'config' option to specify config-file path.

Would you like to implement this? ;)


Add possibility to configure generation of termcache

We would like to be able to getCacheableGenerableTerms from the rewriter factories.

Hi, thanks for the merge. Would be great if you could also generate a new release. Thanks!


intendedAt not working on heroku

Say I have two servers running the same code base, and I have a SyncedCron job set up to run every 2 hours. Will it run on both servers at the same time? Or will only one server execute the job?
Ideally, I would like the job to be only executed once (twice would be redundant). Whichever server "gets to it first" would run it and the other one wouldn't need to.

2 dynos on Heroku runs every job 2 times. Using same database. Any suggestions how to avoid that?

Every dyno registers different intendedAt times, e.g. 2015-05-18 13:40:00.501Z and 2015-05-18 13:40:00.958Z and that's why uniq index fails. Probably a hook to set precision of the time would be a good enough solution?

Interesting, thanks for reporting that @andrejsm . I wonder why later.js behaves differently on heroku. We'll look into this.

The problem is caused by later.parse.cron. Switching to later.parse.text fixed the problem.
See reproduction here http://jsbin.com/xuwuhoyobo/1/watch?js,console

This should also be fixed in 6b19524adf4368ef9272ca36a5377835c1720198


Fix eslint import resolver remaining url

Before this pull request commonjs resolution would return { found: true, path: null }.
This is because require.resolve() returns a file system path. So later the check for url.startsWith("file:") fails to properly handle specifier as a file url.
The commit fixing it is cb43e76e81dd9bfb6ca17ef6a4a55e78b5ab8aea.
This pull request fixes #379

<EMAIL_ADDRESS>published on NPM


FacebookShareButton not populating quote data

Hey Bunlong,
Thanks for this awesome package first and foremost!
I am running to the issue same as with 'react-share', it seems like the 'quote' prop is not populating the string on Facebook's side. Twitter works fine no issue, but for some reason, the 'quote' prop does not. Can you give me any hints as to why or what's a workaround?

Apparently Facebook ripped out the quote parameter intentionally and have provided no alternative:
https://developers.facebook.com/support/bugs/734680371318112/


Fix Sidebar Recipe Documentation

Why?
After Updating the Sidebar in #160 , The Recipe Documentation showing how to customize it was left out of date and broken.
What Changed

[X] Update the custom sidebar examples to match the current sidebar implementation.
[X] Change 2

Sanity Check

Have you updated any usage of changed tokens?
[X] Have you updated the docs with any component changes?
Have you updated the dependency graph with any component changes?

[X] Have you tried building the css?
[X] Have you tried building storybook?
Do you need to update the package version?

Screenshots

 Recipe Documentation


Support for camunda extension "Escape variable names"?

Is your feature request related to a problem? Please describe
Hi,
thanks for maintaining this great grammar for feel.
I'm wondering if it should also support escaped variables via backticks as defined in the feel guides: https://docs.camunda.io/docs/components/modeler/feel/language-guide/feel-variables/#escape-variable-names
I know it's marked as camunda extension but should the tokenizer also detect these as VariableName?
Right now it just errors. This also happens in the camunda modeler.
Describe the solution you'd like
`first name`

`tracking-id`

order.`total price`

should output VariableName tokens without errors.
Describe alternatives you've considered
Fork this library and add support for the camunda extension which might not be intended to be included in the base grammar.
Additional context

Thanks for the issue. This repository is not the right place for such an extension. But we actively discuss a @camunda fork, allowing us to implement Camunda-specific quirks there.

What we could do, of course, is to implement this as a grammar dialect, i.e. camunda.


strict-export-declare-modifiers and export as namespace

I have an index.d.ts file similar to the following:
export as namespace Foo;

export class Person {
    name: string;
}

dtslint fails the strict-export-declare-modifiers rule on the line: export as namespace Foo;. Is this behavior correct? If so, what is the correct way to both export for module loaders and provide a global namespace (UMD style)? dtsgen generates an example index.d.ts that follows this syntax, so if the dtslint behavior is correct it appears there's a disconnect between the two tools.
I apologize for asking the question in an issue, but I don't know of a better place to ask.

Closing as this appears to have been only happening locally when testing a new DefinitelyTyped package.
The unexpected error went away when I installed typescript@latest (2.9.0-dev.20180506) into DefinitelyTyped. I also created a new strict-export-declare-modifiers test in dtslint and could not duplicate the issue.

I've been working on a few DT packages myself and it seems like something breaks at every turn -- would you mind explaining in a little more detail what you did to fix it?

@thw0rted Have you tried rm -r node_modules; rm package-lock.json; npm install? If so, what's a simple file you're seeing the error on?

Yes, cleaning my node_modules fixed it -- I'm vaguely curious as to how exactly my install was corrupted but probably not enough to take the time to track it down.  I'll keep this in mind next time I see weird behavior cropping up when testing DT.  Thanks!


Dapr Init panic: runtime error: invalid memory address or nil pointer dereference

I have been using Dapr for a while without a problem on my M1 Mac. A coworker of mine tried installing and running dapr init, he got the error. I uninstalled Dapr and reinstalled (Homebrew) and am now receiving the same error. We are stuck, and are in the middle of some critical development!
Expected Behavior
Dapr init should install components and docker containers
Actual Behavior
~  % dapr init
⌛  Making the jump to hyperspace...
ℹ  Container images will be pulled from Docker Hub
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x28 pc=0x101d75b14]
goroutine 1 [running]:
github.com/hashicorp/go-version.(*Version).String(0x0)
/Users/runner/Library/Caches/Homebrew/go_mod_cache/pkg/mod/github.com/hashicorp/go-version@v1.6.0/version.go:369 +0x34
github.com/hashicorp/go-version.(*Version).Compare(0x0, 0x140006ae000)
/Users/runner/Library/Caches/Homebrew/go_mod_cache/pkg/mod/github.com/hashicorp/go-version@v1.6.0/version.go:116 +0x24
github.com/hashicorp/go-version.(*Version).GreaterThan(...)
/Users/runner/Library/Caches/Homebrew/go_mod_cache/pkg/mod/github.com/hashicorp/go-version@v1.6.0/version.go:298
github.com/dapr/cli/pkg/version.GetLatestReleaseGithub.func1({0x140010fa000, 0x35bebd, 0x41e000})
/private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/version/version.go:124 +0x1c8
github.com/dapr/cli/pkg/version.GetVersionFromURL({0x14000722120, 0x2f}, 0x102b81b28)
/private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/version/version.go:102 +0x350
github.com/dapr/cli/pkg/version.GetLatestReleaseGithub({0x14000722120?, 0x2b?})
/private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/version/version.go:107 +0x28
github.com/dapr/cli/pkg/version.GetDaprVersion()
/private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/version/version.go:63 +0x60
github.com/dapr/cli/pkg/standalone.Init({0x10219fc59, 0x6}, {0x10219fc59, 0x6}, {0x0, 0x0}, 0x0, {0x0, 0x0}, {0x0, ...}, ...)
/private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/standalone/standalone.go:215 +0x1b8
github.com/dapr/cli/cmd.init.func23(0x103ed13e0, {0x10219cde4?, 0x4?, 0x10219ceac?})
/private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/cmd/init.go:174 +0x2e8
github.com/spf13/cobra.(*Command).execute(0x103ed13e0, {0x103f2dc00, 0x0, 0x0})
/Users/runner/Library/Caches/Homebrew/go_mod_cache/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:987 +0x81c
github.com/spf13/cobra.(*Command).ExecuteC(0x103ecee80)
/Users/runner/Library/Caches/Homebrew/go_mod_cache/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:1115 +0x344
github.com/spf13/cobra.(*Command).Execute(...)
/Users/runner/Library/Caches/Homebrew/go_mod_cache/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:1039
github.com/dapr/cli/cmd.Execute({0x10251df40?, 0x10091443c?}, {0x10251df3c?, 0x140000021c0?})
/private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/cmd/dapr.go:78 +0x150
main.main()
/private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/main.go:27 +0x3c
~  %
Steps to Reproduce the Problem
dapr init
Environment
Mac M1 Pro
Dapr version
~  % dapr version
CLI version: 1.14.1
Runtime version: n/a
~  %

Received the same panic executing dapr init -k to a local KIND cluster in Docker Desktop.
Installed the latest DAPR CLI using the following:
curl -fsSL https://raw.githubusercontent.com/dapr/cli/master/install/install.sh | /bin/bash

CLI version: 1.14.1
Runtime version: 1.14.4
go version go1.23.2 darwin/arm64

dapr init -k
⌛  Making the jump to hyperspace...
ℹ  Note: To install Dapr using Helm, see here: https://docs.dapr.io/getting-started/install-dapr-kubernetes/#install-with-helm-advanced

ℹ  Container images will be pulled from Docker Hub
❌  Deploying the Dapr control plane with latest version to your cluster...
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x28 pc=0x10226db14]

goroutine 1 [running]:
github.com/hashicorp/go-version.(*Version).String(0x0)
	/Users/runner/Library/Caches/Homebrew/go_mod_cache/pkg/mod/github.com/hashicorp/go-version@v1.6.0/version.go:369 +0x34
github.com/hashicorp/go-version.(*Version).Compare(0x0, 0x1400049c000)
	/Users/runner/Library/Caches/Homebrew/go_mod_cache/pkg/mod/github.com/hashicorp/go-version@v1.6.0/version.go:116 +0x24
github.com/hashicorp/go-version.(*Version).GreaterThan(...)
	/Users/runner/Library/Caches/Homebrew/go_mod_cache/pkg/mod/github.com/hashicorp/go-version@v1.6.0/version.go:298
github.com/dapr/cli/pkg/version.GetLatestReleaseGithub.func1({0x14000d8e000, 0x35bebd, 0x41e000})
	/private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/version/version.go:124 +0x1c8
github.com/dapr/cli/pkg/version.GetVersionFromURL({0x1400073dd70, 0x2f}, 0x103079b28)
	/private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/version/version.go:102 +0x350
github.com/dapr/cli/pkg/version.GetLatestReleaseGithub({0x1400073dd70?, 0x2b?})
	/private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/version/version.go:107 +0x28
github.com/dapr/cli/pkg/version.GetDaprVersion()
	/private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/version/version.go:63 +0x60
github.com/dapr/cli/pkg/kubernetes.getVersion({0x102694dc0?, 0x6?}, {0x102697c59?, 0x4?})
	/private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/kubernetes/kubernetes.go:181 +0x6c
github.com/dapr/cli/pkg/kubernetes.install({0x102694dc0, 0x4}, {0x102697c59, 0x6}, {0x1026d6573, 0x22}, {{0x102697c59, 0x6}, {0x102697c59, 0x6}, ...})
	/private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/kubernetes/kubernetes.go:298 +0xa0
github.com/dapr/cli/pkg/kubernetes.installWithConsole({0x102694dc0, 0x4}, {0x102697c59, 0x6}, {0x1026d6573, 0x22}, {0x1026af4c6?, 0x10268b14c?}, {{0x102697c59, 0x6}, ...})
	/private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/kubernetes/kubernetes.go:142 +0x110
github.com/dapr/cli/pkg/kubernetes.Init({{0x102697c59, 0x6}, {0x102697c59, 0x6}, {0x1026a1443, 0xb}, 0x1, 0x0, 0x0, {0x104425c00, ...}, ...})
	/private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/kubernetes/kubernetes.go:80 +0x9c
github.com/dapr/cli/cmd.init.func23(0x1043c93e0, {0x102694de4?, 0x4?, 0x102694eac?})
	/private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/cmd/init.go:145 +0x648
github.com/spf13/cobra.(*Command).execute(0x1043c93e0, {0x140007385c0, 0x1, 0x1})
	/Users/runner/Library/Caches/Homebrew/go_mod_cache/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:987 +0x81c
github.com/spf13/cobra.(*Command).ExecuteC(0x1043c6e80)
	/Users/runner/Library/Caches/Homebrew/go_mod_cache/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:1115 +0x344
github.com/spf13/cobra.(*Command).Execute(...)
	/Users/runner/Library/Caches/Homebrew/go_mod_cache/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:1039
github.com/dapr/cli/cmd.Execute({0x102a15f40?, 0x100e0c43c?}, {0x102a15f3c?, 0x140000021c0?})
	/private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/cmd/dapr.go:78 +0x150
main.main()
	/private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/main.go:27 +0x3c
make[1]: *** [deploy-dapr] Error 2
make: *** [dev-up-sabre] Error 2

Received the same error running dapr init -k on a local KIND cluster.
CLI version: 1.14.1
Runtime version: 1.14.4

Installed DAPR CLI using for Mac M2 Ultra
curl -fsSL https://raw.githubusercontent.com/dapr/cli/master/install/install.sh | /bin/bash

⌛  Making the jump to hyperspace...
ℹ  Note: To install Dapr using Helm, see here: https://docs.dapr.io/getting-started/install-dapr-kubernetes/#install-with-helm-advanced

ℹ  Container images will be pulled from Docker Hub
❌  Deploying the Dapr control plane with latest version to your cluster...
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x28 pc=0x106091b14]

goroutine 1 [running]:
github.com/hashicorp/go-version.(*Version).String(0x0)
 /Users/runner/Library/Caches/Homebrew/go_mod_cache/pkg/mod/github.com/hashicorp/go-version@v1.6.0/version.go:369 +0x34
github.com/hashicorp/go-version.(*Version).Compare(0x0, 0x140006ca190)
 /Users/runner/Library/Caches/Homebrew/go_mod_cache/pkg/mod/github.com/hashicorp/go-version@v1.6.0/version.go:116 +0x24
github.com/hashicorp/go-version.(*Version).GreaterThan(...)
 /Users/runner/Library/Caches/Homebrew/go_mod_cache/pkg/mod/github.com/hashicorp/go-version@v1.6.0/version.go:298
github.com/dapr/cli/pkg/version.GetLatestReleaseGithub.func1({0x140019a2000, 0x35bebd, 0x41e000})
 /private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/version/version.go:124 +0x1c8
github.com/dapr/cli/pkg/version.GetVersionFromURL({0x140009b61b0, 0x2f}, 0x106e9db28)
 /private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/version/version.go:102 +0x350
github.com/dapr/cli/pkg/version.GetLatestReleaseGithub({0x140009b61b0?, 0x2b?})
 /private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/version/version.go:107 +0x28
github.com/dapr/cli/pkg/version.GetDaprVersion()
 /private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/version/version.go:63 +0x60
github.com/dapr/cli/pkg/kubernetes.getVersion({0x1064b8dc0?, 0x6?}, {0x1064bbc59?, 0x4?})
 /private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/kubernetes/kubernetes.go:181 +0x6c
github.com/dapr/cli/pkg/kubernetes.install({0x1064b8dc0, 0x4}, {0x1064bbc59, 0x6}, {0x1064fa573, 0x22}, {{0x1064bbc59, 0x6}, {0x1064bbc59, 0x6}, ...})
 /private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/kubernetes/kubernetes.go:298 +0xa0
github.com/dapr/cli/pkg/kubernetes.installWithConsole({0x1064b8dc0, 0x4}, {0x1064bbc59, 0x6}, {0x1064fa573, 0x22}, {0x1064d34c6?, 0x1064af14c?}, {{0x1064bbc59, 0x6}, ...})
 /private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/kubernetes/kubernetes.go:142 +0x110
github.com/dapr/cli/pkg/kubernetes.Init({{0x1064bbc59, 0x6}, {0x1064bbc59, 0x6}, {0x1064c5443, 0xb}, 0x1, 0x0, 0x0, {0x108249c00, ...}, ...})
 /private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/pkg/kubernetes/kubernetes.go:80 +0x9c
github.com/dapr/cli/cmd.init.func23(0x1081ed3e0, {0x1064b8de4?, 0x4?, 0x1064b8eac?})
 /private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/cmd/init.go:145 +0x648
github.com/spf13/cobra.(*Command).execute(0x1081ed3e0, {0x140005f9e70, 0x1, 0x1})
 /Users/runner/Library/Caches/Homebrew/go_mod_cache/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:987 +0x81c
github.com/spf13/cobra.(*Command).ExecuteC(0x1081eae80)
 /Users/runner/Library/Caches/Homebrew/go_mod_cache/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:1115 +0x344
github.com/spf13/cobra.(*Command).Execute(...)
 /Users/runner/Library/Caches/Homebrew/go_mod_cache/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:1039
github.com/dapr/cli/cmd.Execute({0x106839f40?, 0x104c3043c?}, {0x106839f3c?, 0x140000021c0?})
 /private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/cmd/dapr.go:78 +0x150
main.main()
 /private/tmp/dapr-cli-20240819-5654-e4cfq9/cli-1.14.1/main.go:27 +0x3c

Don't have time to dive into it tonight, will try to track down the nil pointer deference somewhere in the call stack below.
https://github.com/dapr/cli/blob/master/pkg/version/version.go#L106
// GetLatestReleaseGithub return the latest release version of dapr from GitHub API.
func GetLatestReleaseGithub(githubURL string) (string, error) {
	return GetVersionFromURL(githubURL, func(body []byte) (string, error) {
		var githubRepoReleases []githubRepoReleaseItem
		err := json.Unmarshal(body, &githubRepoReleases)
		if err != nil {
			return "", err
		}

		if len(githubRepoReleases) == 0 {
			return "", fmt.Errorf("no releases")
		}

		defaultVersion, _ := version.NewVersion("0.0.0")
		latestVersion := defaultVersion

		for _, release := range githubRepoReleases {
			if !strings.Contains(release.TagName, "-rc") {
				cur, _ := version.NewVersion(strings.TrimPrefix(release.TagName, "v"))
				if cur.GreaterThan(latestVersion) {
					latestVersion = cur
				}
			}
		}

https://github.com/hashicorp/go-version/blob/v1.6.0/version.go
// GreaterThan tests if this version is greater than another version.
func (v *Version) GreaterThan(o *Version) bool {
	return v.Compare(o) > 0
}

https://github.com/hashicorp/go-version/blob/v1.6.0/version.go#L114
// Compare compares this version to another version. This
// returns -1, 0, or 1 if this version is smaller, equal,
// or larger than the other version, respectively.
//
// If you want boolean results, use the LessThan, Equal,
// GreaterThan, GreaterThanOrEqual or LessThanOrEqual methods.
func (v *Version) Compare(other *Version) int {
	// A quick, efficient equality check
	if v.String() == other.String() {
		return 0
	}

// String returns the full version string included pre-release
// and metadata information.
//
// This value is rebuilt according to the parsed segments and other
// information. Therefore, ambiguities in the version string such as
// prefixed zeroes (1.04.0 => 1.4.0), `v` prefix (v1.0.0 => 1.0.0), and
// missing parts (1.0 => 1.0.0) will be made into a canonicalized form
// as shown in the parenthesized examples.
func (v *Version) String() string {
	var buf bytes.Buffer
	fmtParts := make([]string, len(v.segments))
	for i, s := range v.segments {
		// We can ignore err here since we've pre-parsed the values in segments
		str := strconv.FormatInt(s, 10)
		fmtParts[i] = str
	}
	fmt.Fprintf(&buf, strings.Join(fmtParts, "."))
	if v.pre != "" {
		fmt.Fprintf(&buf, "-%s", v.pre)
	}
	if v.metadata != "" {
		fmt.Fprintf(&buf, "+%s", v.metadata)
	}

	return buf.String()
}

@edwardfward I just ran into this tonight and dug into it. The short of it is that one of the releases returned in the JSON for https://api.github.com/repos/dapr/dapr/releases is vedge which causes version.NewVersion on line 122 of version.go to return (nil, err). (Not that it matters, but err.Error() is "Malformed version: edge", created here.) Unfortunately, the error returned from version.NewVersion is ignored, so cur is nil in the next line's expression cur.GreaterThan(latestVersion), where the receiver is eventually dereferenced and causes the panic.
Details
The stack trace contains a call to version.GetDaprVersion(), so let's start there, on line 62 of pkg/version/version.go. The version.GetDaprVersion() function calls
version.GetLatestReleaseGithub(fmt.Sprintf("https://api.github.com/repos/%s/%s/releases", DaprGitHubOrg, DaprGitHubRepo))

The constants DaprGitHubOrg and DaprGitHubRepo are both the dapr, so the URL resolves to https://api.github.com/repos/dapr/dapr/releases.
Running curl https://api.github.com/repos/dapr/dapr/releases | head -40 returns:
[
  {
    "url": "https://api.github.com/repos/dapr/dapr/releases/186741665",
    "assets_url": "https://api.github.com/repos/dapr/dapr/releases/186741665/assets",
    "upload_url": "https://uploads.github.com/repos/dapr/dapr/releases/186741665/assets{?name,label}",
    "html_url": "https://github.com/dapr/dapr/releases/tag/vedge",
    "id": 186741665,
    "author": {
      "login": "dapr-bot",
      "id": 56698301,
      "node_id": "MDQ6VXNlcjU2Njk4MzAx",
      "avatar_url": "https://avatars.githubusercontent.com/u/56698301?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/dapr-bot",
      "html_url": "https://github.com/dapr-bot",
      "followers_url": "https://api.github.com/users/dapr-bot/followers",
      "following_url": "https://api.github.com/users/dapr-bot/following{/other_user}",
      "gists_url": "https://api.github.com/users/dapr-bot/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/dapr-bot/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/dapr-bot/subscriptions",
      "organizations_url": "https://api.github.com/users/dapr-bot/orgs",
      "repos_url": "https://api.github.com/users/dapr-bot/repos",
      "events_url": "https://api.github.com/users/dapr-bot/events{/privacy}",
      "received_events_url": "https://api.github.com/users/dapr-bot/received_events",
      "type": "User",
      "user_view_type": "public",
      "site_admin": false
    },
    "node_id": "RE_kwDOC3tUwM4LIXOh",
    "tag_name": "vedge",
    "target_commitish": "master",
    "name": "Dapr Runtime vedge",
    "draft": false,
    "prerelease": true,
    "created_at": "2024-11-21T20:25:34Z",
    "published_at": "2024-11-21T21:07:51Z",
    "assets": [
      {
        "url": "https://api.github.com/repos/dapr/dapr/releases/assets/208173642",
        "id": 208173642,

Note that the tag_name of the first release is the string vedge.
Reading through the logic for the loop starting at line 118 of pkg/version/version.go:
defaultVersion, _ := version.NewVersion("0.0.0")
latestVersion := defaultVersion

for _, release := range githubRepoReleases {
    if !strings.Contains(release.TagName, "-rc") {
        cur, _ := version.NewVersion(strings.TrimPrefix(release.TagName, "v"))
        if cur.GreaterThan(latestVersion) {
            latestVersion = cur
        }
    }
}

During the first loop, latestVersion is 0.0.0 and release.TagName is vedge. Since vedge does not contain -rc, the if statement's condition on line 122 evaluates to true. Line 123 calls into hashicorp/go-version:
cur, _ := version.NewVersion(strings.TrimPrefix(release.TagName, "v"))

The expression strings.TrimPrefix(release.TagName, "v") resolves to the string edge. Calling version.NewVersion("edge") returns (nil, err), so cur is set to nil and the error is ignored. Therefore, when evaluating the  expression cur.GreaterThan(latestVersion) on the following line, the receiver is nil. Since Go allows function calls on nil receivers, we need to dig into the GreaterThan function:
func (v *Version) GreaterThan(o *Version) bool {
    return v.Compare(o) > 0
}

During this function, v is nil and Go allows function calls on nil receivers, so the call v.Compare is processed.
The Compare function function starts:
func (v *Version) Compare(other *Version) int {
    // A quick, efficient equality check
    if v.String() == other.String() {
        return 0
    }

The expression v.String() is calling String on a nil receiver. The String function starts:
func (v *Version) String() string {
    var buf bytes.Buffer
    fmtParts := make([]string, len(v.segments))

The expression v.segments forces v to be dereferenced and since v is nil, the Go runtime panics.

The solutions that leap to my mind are either of the following:

Remove the edge release from GitHub. Every call to dapr init for version 1.14.1 or earlier of the CLI (I haven't traced back how far) will panic due to the presence of the edge release, so removing the edge release immediately fixes dapr init for everybody.

Release a new version of the CLI that updates the for loop to check the error returned by version.NewVersion and skips the release when there is an error:
for _, release := range githubRepoReleases {
    if strings.Contains(release.TagName, "-rc") {
        continue
    }

    cur, vErr := version.NewVersion(strings.TrimPrefix(release.TagName, "v"))
    if vErr != nil {
        continue
    }

    if cur.GreaterThan(latestVersion) {
        latestVersion = cur
    }
}

Or checks for cur being nil:
for _, release := range githubRepoReleases {
    if strings.Contains(release.TagName, "-rc") {
        continue
    }

    cur, _ := version.NewVersion(strings.TrimPrefix(release.TagName, "v"))
    if cur == nil {
        continue
    }

    if cur.GreaterThan(latestVersion) {
        latestVersion = cur
    }
}

Whichever is more in line with the project's preferred style.

I hope this helps!

same problem with version 1.14.1

@dlkinney proposed solution works. thanks for your effort on this

Same problem here
Making the jump to hyperspace...
Container images will be pulled from Docker Hub
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x28 pc=0x2513ab3]
goroutine 1 [running]:
github.com/hashicorp/go-version.(*Version).String(0x0)
C:/Users/runneradmin/go/pkg/mod/github.com/hashicorp/go-version@v1.6.0/version.go:369 +0x33
github.com/hashicorp/go-version.(*Version).Compare(0x0, 0xc000982000)
C:/Users/runneradmin/go/pkg/mod/github.com/hashicorp/go-version@v1.6.0/version.go:116 +0x25
github.com/hashicorp/go-version.(*Version).GreaterThan(...)
C:/Users/runneradmin/go/pkg/mod/github.com/hashicorp/go-version@v1.6.0/version.go:298
github.com/dapr/cli/pkg/version.GetLatestReleaseGithub.func1({0xc00101a000, 0x35bebe, 0x41e000})
D:/a/cli/cli/pkg/version/version.go:124 +0x1d4
github.com/dapr/cli/pkg/version.GetVersionFromURL({0xc00080a690, 0x2f}, 0x30d9ea0)
D:/a/cli/cli/pkg/version/version.go:102 +0x2b5
github.com/dapr/cli/pkg/version.GetLatestReleaseGithub({0xc00080a690?, 0x2b?})
D:/a/cli/cli/pkg/version/version.go:107 +0x1f
github.com/dapr/cli/pkg/version.GetDaprVersion()
D:/a/cli/cli/pkg/version/version.go:63 +0x6a
github.com/dapr/cli/pkg/standalone.Init({0x2f99f75, 0x6}, {0x2f99f75, 0x6}, {0x0, 0x0}, 0x0, {0x0, 0x0}, {0x0, ...}, ...)
D:/a/cli/cli/pkg/standalone/standalone.go:215 +0x21c
github.com/dapr/cli/cmd.glob..func11(0xc000a10d00?, {0x2f97156?, 0x4?, 0x2f9721a?})
D:/a/cli/cli/cmd/init.go:174 +0x2f0
github.com/spf13/cobra.(*Command).execute(0x466a4a0, {0x46f2a80, 0x0, 0x0})
C:/Users/runneradmin/go/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:987 +0xaa3
github.com/spf13/cobra.(*Command).ExecuteC(0x4667f40)
C:/Users/runneradmin/go/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:1115 +0x3ff
github.com/spf13/cobra.(*Command).Execute(...)
C:/Users/runneradmin/go/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:1039
github.com/dapr/cli/cmd.Execute({0x33178a0?, 0x456ab60?}, {0x331789c?, 0xc0000ba000?})
D:/a/cli/cli/cmd/dapr.go:78 +0x159
main.main()
D:/a/cli/cli/main.go:27 +0x2f
CLI version: 1.14.1
Runtime version: n/a

@dlkinney Thanks for digging into this. I completely blanked on the fact Go allows nil receivers. I think both of your solutions are in order.
I forked the master branch, added the error handling you recommended, added print.WarningStatusEvent(os.Stdout, "Failed to parse version: '%s'", curErr) before the continue, compiled, replaced the dapr binary (/usr/local/bin/dapr) with the new binary in the dist` folder and everything worked as advertised.
// GetLatestReleaseGithub return the latest release version of dapr from GitHub API.
func GetLatestReleaseGithub(githubURL string) (string, error) {
	return GetVersionFromURL(githubURL, func(body []byte) (string, error) {
		var githubRepoReleases []githubRepoReleaseItem
		err := json.Unmarshal(body, &githubRepoReleases)
		if err != nil {
			return "", err
		}

		if len(githubRepoReleases) == 0 {
			return "", fmt.Errorf("no releases")
		}

		defaultVersion, _ := version.NewVersion("0.0.0")
		latestVersion := defaultVersion

		for _, release := range githubRepoReleases {
			if !strings.Contains(release.TagName, "-rc") {
				cur, curErr := version.NewVersion(strings.TrimPrefix(release.TagName, "v"))
				if curErr != nil {
					print.WarningStatusEvent(os.Stdout, "Failed to parse version: '%s'", curErr)
					continue
				}
				if cur.GreaterThan(latestVersion) {
					latestVersion = cur
				}
			}
		}

		if latestVersion.Equal(defaultVersion) {
			return "", fmt.Errorf("no releases")
		}

		return latestVersion.String(), nil
	})
}

⌛  Making the jump to hyperspace...
ℹ  Note: To install Dapr using Helm, see here: https://docs.dapr.io/getting-started/install-dapr-kubernetes/#install-with-helm-advanced

ℹ  Container images will be pulled from Docker Hub
↙  Deploying the Dapr control plane with latest version to your cluster...⚠  Failed to parse version: 'Malformed version: edge'
✅  Deploying the Dapr control plane with latest version to your cluster...
✅  Deploying the Dapr dashboard with latest version to your cluster...
✅  Success! Dapr has been installed to namespace dapr-system. To verify, run `dapr status -k' in your terminal. To get started, go here: https://docs.dapr.io/getting-started

NAMESPACE            NAME                                                  READY   STATUS    RESTARTS   AGE
dapr-system          dapr-dashboard-6d7744b449-dkvrh                       1/1     Running   0          4m40s
dapr-system          dapr-operator-5bb4bbcbc-n24qf                         1/1     Running   0          4m41s
dapr-system          dapr-placement-server-0                               1/1     Running   0          4m41s
dapr-system          dapr-scheduler-server-0                               1/1     Running   0          4m41s
dapr-system          dapr-sentry-759fffd946-5whw9                          1/1     Running   0          4m41s
dapr-system          dapr-sidecar-injector-74579cbcbb-cdbnt                1/1     Running   0          4m41s

@dlkinney @tgermain-impirica @lidalve @santypr
Looks like the errant tag causing the issue has been changed/removed. Recommend another dapr init -k attempt.
New binary with no errors...should work with the existing binary.
⌛  Making the jump to hyperspace...
ℹ  Note: To install Dapr using Helm, see here: https://docs.dapr.io/getting-started/install-dapr-kubernetes/#install-with-helm-advanced

ℹ  Container images will be pulled from Docker Hub
✅  Deploying the Dapr control plane with latest version to your cluster...
✅  Deploying the Dapr dashboard with latest version to your cluster...
✅  Success! Dapr has been installed to namespace dapr-system. To verify, run `dapr status -k' in your terminal. To get started, go here: https://docs.dapr.io/getting-started

Good morning all. My environment is now working. I suspect some form of server side outage that caused an intermittent crash when downloading files.
Thank you all for the speedy and thorough engagement!

Thank you, everyone!

@tgermain-impirica I am not sure it is completely resolved, may be an issue with brew install dapr/tap/dapr-cli
I am still seeing the vedge error when I install dapr via Homebrew.
==> Auto-updating Homebrew...
Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with
HOMEBREW_NO_AUTO_UPDATE. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
==> Fetching dapr/tap/dapr-cli
==> Downloading https://github.com/dapr/homebrew-tap/releases/download/v1.14.1/dapr-cli-1.14.1.arm64_sonoma.bottle.tar.gz
Already downloaded: /Users/edward/Library/Caches/Homebrew/downloads/d2d34814cf13853c3c39725e7da6a2ed6d0a6093cba709d983a7c9a910b90c33--dapr-cli-1.14.1.arm64_sonoma.bottle.tar.gz
==> Installing dapr-cli from dapr/tap
==> Pouring dapr-cli-1.14.1.arm64_sonoma.bottle.tar.gz
🍺  /opt/homebrew/Cellar/dapr-cli/1.14.1: 6 files, 79.8MB
==> Running `brew cleanup dapr-cli`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
(base) edward@Mac sabre-api-go % dapr --version
CLI version: edge
Runtime version: n/a

No issue when I install dapr via:
curl -fsSL https://raw.githubusercontent.com/dapr/cli/master/install/install.sh | /bin/bash

Getting the latest Dapr CLI...

Dapr CLI is detected:
CLI version: edge
Runtime version: n/a
Reinstalling Dapr CLI - /usr/local/bin/dapr...

Installing v1.14.1 Dapr CLI...
Downloading https://github.com/dapr/cli/releases/download/v1.14.1/dapr_darwin_arm64.tar.gz ...
Password:
dapr installed into /usr/local/bin successfully.
CLI version: 1.14.1
Runtime version: n/a

@edwardfward Hi, thanks for checking the brew install as well.
I've just run through checking both brew and curl installation methods.
Both worked ok and no vedge version was encountered. The release tag was removed.
One thing I've noticed, after using brew install, dapr alias keeps pointing to brew location even after using curl install again.
To solve it, had to run brew uninstall dapr-cli and the path pointed to curl install location.
Would also recommend reloading the terminal session after the installation.
Here's the output:
➜  ~ dapr version
CLI version: 1.14.1
Runtime version: n/a
➜  ~ which dapr
/usr/local/bin/dapr
➜  ~ brew install dapr/tap/dapr-cli
==> Auto-updating Homebrew...
Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with
HOMEBREW_NO_AUTO_UPDATE. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
==> Fetching dapr/tap/dapr-cli
==> Downloading https://github.com/dapr/homebrew-tap/releases/download/v1.14.1/dapr-cli-1.14.1.arm64_sonoma.bottle.tar.gz
Already downloaded: /Users/anton/Library/Caches/Homebrew/downloads/d2d34814cf13853c3c39725e7da6a2ed6d0a6093cba709d983a7c9a910b90c33--dapr-cli-1.14.1.arm64_sonoma.bottle.tar.gz
==> Installing dapr-cli from dapr/tap
==> Pouring dapr-cli-1.14.1.arm64_sonoma.bottle.tar.gz
🍺  /opt/homebrew/Cellar/dapr-cli/1.14.1: 6 files, 79.8MB
==> Running `brew cleanup dapr-cli`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
➜  ~ which dapr
/usr/local/bin/dapr
➜  ~ source ~/.zshrc
➜  ~ which dapr
/opt/homebrew/bin/dapr
➜  ~ curl -fsSL https://raw.githubusercontent.com/dapr/cli/master/install/install.sh | /bin/bash
Getting the latest Dapr CLI...

Dapr CLI is detected:
CLI version: 1.14.1
Runtime version: n/a
Reinstalling Dapr CLI - /usr/local/bin/dapr...

Installing v1.14.1 Dapr CLI...
Downloading https://github.com/dapr/cli/releases/download/v1.14.1/dapr_darwin_arm64.tar.gz ...
Password:
dapr installed into /usr/local/bin successfully.
CLI version: 1.14.1
Runtime version: n/a

To get started with Dapr, please visit https://docs.dapr.io/getting-started/
➜  ~ which dapr
/opt/homebrew/bin/dapr
➜  ~ source ~/.zshrc
➜  ~ which dapr
/opt/homebrew/bin/dapr
➜  ~ brew uninstall dapr-cli
Uninstalling /opt/homebrew/Cellar/dapr-cli/1.14.1... (6 files, 79.8MB)
➜  ~ which dapr
/usr/local/bin/dapr
➜  ~ source ~/.zshrc
➜  ~ which dapr
/usr/local/bin/dapr
➜  ~ dapr version
CLI version: 1.14.1
Runtime version: n/a

Thank you, @antontroshin. We appreciate the quick turn on this.

Hello. I am still getting this error... I have tried:

brew uninstall dapr-cli
brew install dapr/tap/dapr-cli
curl installation script

All methods appear to result in:
➜  ~ dapr init
⌛  Making the jump to hyperspace...
ℹ  Container images will be pulled from Docker Hub
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x256b993]

goroutine 1 [running]:
github.com/hashicorp/go-version.(*Version).String(0x0)
	/Users/runner/go/pkg/mod/github.com/hashicorp/go-version@v1.6.0/version.go:369 +0x33
github.com/hashicorp/go-version.(*Version).Compare(0x0, 0xc0007400a0)
	/Users/runner/go/pkg/mod/github.com/hashicorp/go-version@v1.6.0/version.go:116 +0x25
github.com/hashicorp/go-version.(*Version).GreaterThan(...)
	/Users/runner/go/pkg/mod/github.com/hashicorp/go-version@v1.6.0/version.go:298
github.com/dapr/cli/pkg/version.GetLatestReleaseGithub.func1({0xc0016a8000, 0x35bec3, 0x41e000})
	/Users/runner/work/cli/cli/pkg/version/version.go:124 +0x1d4
github.com/dapr/cli/pkg/version.GetVersionFromURL({0xc000480de0, 0x2f}, 0x312b9f0)
	/Users/runner/work/cli/cli/pkg/version/version.go:102 +0x2b5
github.com/dapr/cli/pkg/version.GetLatestReleaseGithub({0xc000480de0?, 0x2b?})
	/Users/runner/work/cli/cli/pkg/version/version.go:107 +0x1f
github.com/dapr/cli/pkg/version.GetDaprVersion()
	/Users/runner/work/cli/cli/pkg/version/version.go:63 +0x6a
github.com/dapr/cli/pkg/standalone.Init({0x2fee8a7, 0x6}, {0x2fee8a7, 0x6}, {0x0, 0x0}, 0x0, {0x0, 0x0}, {0x0, ...}, ...)
	/Users/runner/work/cli/cli/pkg/standalone/standalone.go:215 +0x21c
github.com/dapr/cli/cmd.glob..func11(0xc0006cd600?, {0x2feba68?, 0x4?, 0x2febb34?})
	/Users/runner/work/cli/cli/cmd/init.go:174 +0x2f0
github.com/spf13/cobra.(*Command).execute(0x469d5a0, {0x46fe780, 0x0, 0x0})
	/Users/runner/go/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:987 +0xaa3
github.com/spf13/cobra.(*Command).ExecuteC(0x469b040)
	/Users/runner/go/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:1115 +0x3ff
github.com/spf13/cobra.(*Command).Execute(...)
	/Users/runner/go/pkg/mod/github.com/spf13/cobra@v1.8.0/command.go:1039
github.com/dapr/cli/cmd.Execute({0x3366004?, 0x45abb00?}, {0x3366000?, 0xc0000061a0?})
	/Users/runner/work/cli/cli/cmd/dapr.go:78 +0x159
main.main()
	/Users/runner/work/cli/cli/main.go:27 +0x2f

Would appreciate any help. Before each installation method I removed dapr entirely as well to ensure a clean start. Reloading terminal session did not help either.

I think the following might be an effective workaround until you have a dapr cli that includes https://github.com/dapr/cli/pull/1469 or until vedge is not a release version.
My theory is that by specifying the runtime version, the cli won't try to execute the "what is the latest release" code.
So one of the following, depending on the kind of init you want:
dapr init --runtime-version 1.13.6
dapr init --slim --runtime-version 1.13.6
dapr init --kubernetes --runtime-version 1.13.6

The above all work for me (i.e. init completes successfully)
P.S. You will of course need to determine the version to use on your own. :|

I think the following might be an effective workaround until you have a dapr cli that includes #1469 or until vedge is not a release version.
My theory is that by specifying the runtime version, the cli won't try to execute the "what is the latest release" code.
So one of the following, depending on the kind of init you want:
dapr init --runtime-version 1.13.6
dapr init --slim --runtime-version 1.13.6
dapr init --kubernetes --runtime-version 1.13.6

The above all work for me (i.e. init completes successfully)
P.S. You will of course need to determine the version to use on your own. :|

That works for me! Thanks!

I think the following might be an effective workaround until you have a dapr cli that includes #1469 or until vedge is not a release version.
My theory is that by specifying the runtime version, the cli won't try to execute the "what is the latest release" code.
So one of the following, depending on the kind of init you want:
dapr init --runtime-version 1.13.6
dapr init --slim --runtime-version 1.13.6
dapr init --kubernetes --runtime-version 1.13.6

The above all work for me (i.e. init completes successfully)
P.S. You will of course need to determine the version to use on your own. :|

That works for me! Thanks!

Can confirm, this also works for me!

vedge is no longer a release version, so dapr init should now work as expected. I cannot repro this locally using Dapr CLI 1.14.4

I am no longer seeing this issue or able to replicate it. Recommend closing this issue. I believe the PR submitted @antontroshin will prevent any future panics as a result of tagging issues.
@jbmcfarlin31 Recommend following the steps @antontroshin outlined in this comment

Recommend closing this issue.


Extract vault plugin into a module

Extract the vault plugin into a module that ships with bolt.

closed with https://github.com/puppetlabs/bolt/pull/1339


I hope to provide a variety of sizes.

like bootstrap，xs , sm , lg ...

Hi @imsheng ,
there is no need for that,
in this library the size is related to font size so you can change it really easy and you're not limited to use like 5 or 6 sizes which are predefined for you like bootstrap

There is no good align after scaling.


get_tokens not working

Morning Venomous, i have issue with get_tokens not working for me while normal get works.
I cannot get CF tokens get using get_tokens().
Below is the test code:
import cloudscraper
url = 'https://www.uniqlo.com/jp/store/feature/uq/jacketcoat/women/'

test 1
cookie_value, user_agent = cloudscraper.get_tokens(url)
return ==> {'__cfduid': '', 'cf_clearance': ''} Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Falkon/3.0.1 Chrome/65.0.3325.230 Safari/537.36
test 2
cloudscraper_ = cloudscraper.create_scraper()
res = cloudscraper_.get(url)

return ==> <Response [200]>
System Information
Cloudscraper version = 1.2.40
Python = 3.5.2
OS = macOs Mojave & Ubuntu 16.04.4 LTS

There is no IUAM on https://www.uniqlo.com/jp/store/feature/uq/jacketcoat/women/


Empty "restriction_reason" for some restricted channels

Older TDLib used to report "restricted_reason" in supergroup info with suffixes such as "-ios", "-all" etc.  However TDLib 1.6.8 reports empty "restricted_reason" for channels restricted on iOS (can't view them in official iOS client)
Is that because restriction now is client-type specific and reported differently for different clients?  Is it possible somehow to determine that channel is restricted on iOS using TDLib?
Thanks

No, this is not possible. TDLib will return restriction reason, only if the chat/message must be restricted by the current client.


[Comments] Small DX improvements

Hi! Thanks for your help in https://github.com/CQLabs/dcm-action/issues/150. Opening a new issue here for some requests on improvements to the comments system:

[ ] Deleting failure comments upon success: I noticed that currently if a LOC fails and a comment is made, and then succeeds in a subsequent run, that comment is never deleted, which leaves the PR in a funky state. Note: When I tested this, the "fix" of that LOC made it so that file was no longer modified in the PR, i.e it removed that file from the overall diff. This might be why?
[ ] Annotations: It would be awesome to have inline annotations on PRs which makes reviewing the full suite of errors easier.
[ ] Improvements to comments themselves: Right now, comments link out to the full report which is nice but it would be nicer to have that information readily available within the comment if possible. This could become unwieldy for large diffs with many errors, and at that point it may make sense to link out to a full report but if there are less than some threshold of issues it would be great to just have that be the comment itself.

Happy to discuss any of these in more details. Thank you for the product and this action!

It should update the existing comment to "success". Was this not the case?
Are your talking about this:

It should be working out of the box.
We can add more info to the comments, but the large number of issues is the main problem. Also, do you happen to see any good examples from other tool? I don't think the UX of that will be good. Also note that the comments have a character limit.

It should update the existing comment to "success". Was this not the case?

Correct, this did not occur on the PR I had tested. In the past I've seen this when the file with a previous failure was removed from the diff, but that may not be the case here... just a thought. Another thought, only failure comments were enabled. Could this have prevented the success message from overriding the previous failure?

Are your talking about this? It should be working out of the box.

Yes, that's what I'm looking for! This didn't occur on the PR I had tested on (but we did get the comments). Note that I only had the failure comments set to true.

We can add more info to the comments, but the large number of issues is the main problem. Also, do you happen to see any good examples from other tool? I don't think the UX of that will be good. Also note that the comments have a character limit.

Not sure if it's a good comparison, but in the past I've found codecov's comments to be pretty helpful. That said, I don't think this needs to be too complicated... I would imagine that a good percentage of PRs will only have a handful of issues, which I suspect would fall within the comment character limit. Is it a known limit? If so you could just check to see if a "detailed version" of the comment would fit, and otherwise just post a summary with a link to the report. FWIW, it would be awesome if this could all be contained in one comment (that summarizes all packages) instead of one-per-package.

Yes, that's what I'm looking for! This didn't occur on the PR I had tested on (but we did get the comments). Note that I only had the failure comments set to true.

@btrautmann have you figured that out?

Is it a known limit?

I think it's something like 65536. So probably 95% unreachable, but showing all issues is still probably undesirable. Maybe a small summary of the first 10-20 is enough.

FWIW, it would be awesome if this could all be contained in one comment (that summarizes all packages) instead of one-per-package.

Can you please elaborate on that? In which case do you get multiple comments?

Deleting failure comments upon success: I noticed that currently if a LOC fails and a comment is made, and then succeeds in a subsequent run, that comment is never deleted, which leaves the PR in a funky state. Note: When I tested this, the "fix" of that LOC made it so that file was no longer modified in the PR, i.e it removed that file from the overall diff. This might be why?

I double checked this and it should delete comments if pull_request_comment_on_fail is set to true and there are 0 issues. Although if you are getting multiple comments from multiple packages, that can be the reason.

Actually no, even if there are multiple packages, the check should still try to delete a comment.

Alright, I've added more logs for both 1 and 2 to see where the problem is. For the number 2 I suspect annotations getting an incorrect relative path.
Can you please check it with the enabled debug logs for actions?