Feature: Deploying multiple applications using application groups gets successful for few and fails for rest

🔖 Feature description
This is a feature request to handle failed deployment triggers that happens in application groups. The deployment trigger fails if we deploy more than a certain number of applications via application groups. Although we give an option to retry failed but than there is another problem that the modal vanishes if page is refreshed. We should be able to handle this scenario as well that I should be able to retry failed even if the page is refreshed.
🎤 Pitch / Usecases
There are multiple scenarios where I use bulk deployment of all applications using application groups. Now we successfully trigger deployment for few apps only and fails for rest. Then I keep on doing retry failed until deployment is successfully triggered for all apps.
This scenario is specifically tested for gitOps.
🔄 Alternative
NA
👀 Have you spent some time to check if this issue has been raised before?

[x] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

AB#7717

https://github.com/devtron-labs/devtron/issues/4731


test(routes): DELETE /accounts/123?include=foobar

starts hoodiehq/camp#78

closing in favor of #197


Make compatible with ansible 2.10.3 in windows target/adoptopenjdk-fallback combination

Updates to accomodate change in the returned api page and to better deal with the result of win_tempfile.
This makes is possible for me to use the role on macos 11, provisioning a win2019 VM, using ansible 2.10.3

Hi, any chance of getting these merged? Thanks :)


#2012: Charts: Reduce bundle size

Consider using https://echarts.apache.org/en/builder.html to load only needed components and reduce bundle size.

This issue has been mirrored in Jira: https://reddata.atlassian.net/browse/GROK-14870

This issue has been mirrored in Jira: https://reddata.atlassian.net/browse/GROK-16123


PROBLEM inferring type of a bitset derived from an enum

test :: proc () {
Foo :: enum {
A,
B,
C,
}
derived_bit_set := bit_set[Foo]{}
}

Fixed.


[Migration] Update to snapshot 7094152

Let's move it to alpha11 directly, with AGP and gradle bumps

Let's move it to alpha11 directly, with AGP and gradle bumps

Done, thank you

Done, thank you


Don't fetch unneeded pages

While looking through some logs, I've stumbled across the following request to Cloud Controller:
/v3/packages?app_guids=<some_guid>&order_by=-created_at&page=900&per_page=1

This request was sent by the cf cli, so I searched for its origin. Inside the GetUnstagedNewestPackageGUID function, all packages for an app are fetched (with page size 1), but only two things are done with the result: (a) there is a check if the returned list of packages is empty, (b) the first item from the list is taken.
The underlying problem is that many of the CloudControllerClient functions (like GetPackages in this case) use the MakeListRequest function which automatically does pagination until no further page exists.
This behavior is fine as long as the returned list is needed, but there seem to be several cases where actually only the first item in a list (i.e. the newest one) is used.
So I decided to start working on a change that makes use of the page parameter. Until now I did not open a PR, but just pushed the changes to a fork. My idea is to introduce the Page QueryKey and (besides forwarding it to the Cloud Controller), use it to stop the automatic pagination in the cli code.
This means that the call to GetPackages can simply be changed to include this QueryKey.
I then started to look through the code to identify more places where (a) a list endpoint is called and (b) only the first list item is used (or no item at all, but only a check if the list was empty is done). My idea is to use PerPage and Page consistently in all these cases even if the query ensures that only a single item matches.
I also found the GetEvents function that wasn't using the MakeListRequest function internally as the only caller just wanted the first page to be returned. I've corrected this and simply added the Page QueryKey to the caller.
Before continuing my work (there are still other places where the Page QueryKey can be added) and opening a PR, I would like to get some feedback if I'm heading in the right direction with this change.

@philippthun Thanks for this contribution. Overall, this seems like a good optimization idea. We would appreciate if you make a PR with the changes in your fork for us to review.

@ccjaimes - I've created a PR (#2617) with my changes.

@philippthun Thanks! looking to merge this, could you please create a PR for v8 as well to merge both at the same time?

... could you please create a PR for v8 as well ...

@ccjaimes - Sure, here it is: #2723


bump the timeout to match the jenkins PRB

What changes were proposed in this pull request?
bump the timeout to match what's set in jenkins
Why are the changes needed?
tests be timing out!
Does this PR introduce any user-facing change?
no
How was this patch tested?
via jenkins

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/27866/
Test PASSed.

i'm going to go ahead and merge this now, as it's blocking maven PRs.
@srowen @HyukjinKwon @sarutak

Test build #123243 has finished for PR 28666 at commit 3a4b29c.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/123243/
Test PASSed.

also going to backport this to 3.0 and 2.4

done!

@shaneknapp Thanks!

+1, late LGTM. Thank you, @shaneknapp .

+1 LGTM!


connect to existing unifi cloud key

hi this is my config file:
$controlleruser     = 'xx'; // the user name for access to the UniFi Controller
$controllerpassword = 'xx'; // the password for access to the UniFi Controller
$controllerurl      = 'unifi.ubnt.com'; // full url to the UniFi Controller, eg. 'https://<IP_ADDRESS>:8443'
$controllerversion  = '5.2.9'; // the version of the Controller software, eg. '4.6.6' (must be at least 4.0.0)
but i cannot select a site in the browser api

Connecting to a Cloud Key through unifi.ubnt.com will not work, it will only work if the system on which you installed the API Browser tool has direct IP connectivity with the Cloud Key. The site unifi.ubnt.com uses WebRTC as very neat trick which the API client (and cURL) does not leverage.

thank you. so i go dns

if you have dynamic IP, yes.


Documentation includes cmdlets that are not in PnP PS

Reporting an Issue or Missing Feature
Googling and finding on the documentation site a cmdlet that no longer exists e.g.
New-PnPUnifiedGroup

I didnt want to just raise a PR without some awareness... should this be removed?
What is the version of the Cmdlet module you are running?
Latest (v.1.6)
Which operating system/environment are you running PnP PowerShell on?

[X] Windows
[ ] Linux
[ ] MacOS
[ ] Azure Cloud Shell
[ ] Azure Functions
[ ] Other : please specify

@pkbullock - Documentation is currently a topic we're discussing, so let's park that for now 🙂


Adds wiki link to item's image

This adds a wiki link to items' image/icon in 'Recent items' sections (home page and user page).
Items in the collection log search already have this link so this only adds the link to 'Recent items' sections (On the home page and user page).
Also converted wrapperClassName to const and assign via ternary operator.
This is a feature I've wanted to see added.

Good catch, I didn't notice.
I have applied the fix for this so the icons look identical now.

Is there anything else needed for this PR? @evansloan


slot render error with a v-if/v-else

Version
3.2.0-beta.3
Reproduction link
SFC PLAYGROUND
Steps to reproduce

in App.vue, slot content span's condition is falsy, but template's condition is truthy
span use the default slot, template use the a slot
in Comp.vue, provide both default slot and a slot with fallback value

What is expected?
111 is rendered without warning
What is actually happening?
text 'slot a' is rendered with a error
(4:18) v-else/v-else-if has no adjacent v-if.

It can run in runtime compile, but it seems that can't run in the playground
ps: if we delete v-else it can run correctly

Not sure if it makes sense to pass component slots that are supposed to render at different places and use a v-if/v-else which expects them to be together.
As a workaround, you can use a v-if instead of the v-else

The following seem like a sensible use case
<template>
 <comp>
  {{value}}
  <template #error v-else>
   missing value
  </template>
  this will show in default slot regardless of condition
 </comp>
</template>

which works using explicit default named template:
  <comp>

    <template #default v-if=value >
  	the value {{value}}
    </template>

    <template #error v-else>
    	missing value
    </template>

  </comp>

This is wrong usage. You can't mix default slot and named slot container in the same v-if/v-else branch... this should throw a compiler error.
Use explicit <template #default v-if="..."> as shown by @lidlanca's 2nd snippet.

There already is a compiler error for this.


PHPDoc improvements for Hierarchy and Versioned

Added missing @param and @method documentation
Fixed incorrect PHPDoc @params and @returns
Fixed wrapping width on many docblocks
Added and/or improved method documentation when missing or confusing
General tweaks and fixes to match latest standards and IDE capabilities
Fixed typos as found
Removed references to 'Page' in Versioned documentation

For the CMS counterpart see https://github.com/silverstripe/silverstripe-cms/pull/1140

Hey @nikrolls sorry for letting this one drop. My main thought on this that we'd want to ensure that the documentation updates comply with PSR-5. I know that @assertchris has been doing some work on this, maybe he could confirm whether this change is PSR-5 compliant?

In general, I think it's a huge improvement. Other than the changes I have suggested, I think you've done a great job. :)

Thanks! In summary, anything I haven't responded to needs no discussion and I'll fix. The rest I can fix after discussion/decision/clarification.

Ok, now that https://github.com/silverstripe/silverstripe-cms/pull/1140 is completed I have applied the decisions from there to this branch. I've actioned all the feedback except those that were decided against in https://github.com/silverstripe/silverstripe-cms/pull/1140 and anything I've not had a response to here. Happy to re-open the conversation if you feel it still needs it, otherwise it's ready for merge consideration.

These changes look good but I think we'd want to do them against the 3 branch.

Yes, I'm sorry too... we would like to avoid doing non-functional fixes to branches older than 3 (or even master ideally), as it makes merging up too problematic.

Bump

Rebased in #5539.

I left a comment on https://github.com/silverstripe/silverstripe-framework/pull/5539#issuecomment-219935032
This didn't merge into master properly, so someone will have to re-create this.


Options for a progress bar location

It is a feature request to consider. I would like to have the progress bar be directly below the slide title. If you look at the Metropolis theme for Beamer, they have options to place it at the top of a slide (like it is now), at the bottom, or under the title.
I don't know JS but I could probably take a stab at it if you could perhaps provide me with some pointers...

I got the idea for progress bars from that Beamer theme! Having them below headings would be neat, but fraught with potential issues:

Not every slide might have a heading, but I think the progress bar should appear on every slide for visual consistency. Call it opinionated software. 😉
A slide might contain multiple headings – showing the progress bar twice would look awkward, showing it only below the first heading might clash with the heading hierarchy.
Which levels of headings should the progress bar be displayed below? Level 1, level 2, both, or more? (Sure, this could be configurable, but that'd add complexity.)
Themes may style headings however they want, which can make a progress bar below them look awkward in some cases – see the included serif theme for an example.
It's trickier to implement – I'd have to write code to traverse the document, looking for headings and modifying them. Currently, the progress bar is simply added to each slide during the process of splitting the document into slides.

So this is something I sadly won't be working on – in my mind, it's too much added complexity for too little benefit. Sorry about that!

If you'd prefer the progress bar at the bottom, that's easy (this snippet is adapted from the included deepsea theme):
.slide-progress {
    --progress-height: 0.2rem;
    margin-top: calc(var(--slide-height) - var(--progress-height)) !important;
    height: var(--progress-height);
}

Thanks @doersino. Actually, I already relied on the ability of not even having a slide title in my presentation so your points are well taken. But I do appreciate the code snippet for the bottom placement!


Paths matching * are replaced again when resolve-tspaths is run more than once

require("../..") becomes require("../../../../..")
Try to rerun resolve-tspaths multiple times on the same files.

Hi @wintercounter, could you please provide clear steps to reproduce the issue?

First I couldn't repro, then I figured out. In tsconfig I have a * key under paths, that's causing the problem. I needed that because in my projects I have multiple node_modules folders, don't ask why :)
I created a repro here, please open it in Gitpod: https://github.com/wintercounter/replace-tspaths-repro
Steps:

Run npm i
Run npm run build
Check dist/processes/ecosystem/root/index.js, it should have require('@/processes')
Run npm run replace
Check dist/processes/ecosystem/root/index.js again, you should see require('../..')
Run npm run replace again,  WITHOUT new build.
The same require statement will become require("../../../../..").

Hi @wintercounter, I took a look at your issue. Thanks for providing the reproduction repo.

You're definitely right in that it's the * key in your tsconfig that's causing the behaviour that you're seeing.
Unfortunately though, resolve-tspaths cannot promise to be idempotent when you use *.
When resolve-tspaths scans your output directory, there's no way it can tell whether a * path has been replaced since it matches everything, unlike a path with a prefix.
I might have some solutions for you though, which I'll detail further below.

I'm going to close this issue as there isn't any fix required. Would love to hear your feedback though and if you're facing issues, please feel free to re-open. I'm also going to rename the issue to make it a little clearer so others can find this if they come across this same problem.
Potential solutions
1.  So my recommendation would be to make your build script look something like below so that it's run automatically after a fresh build only.
swc src --out-dir dist --ignore dist,node_modules && resolve-tspaths -o dist -s src

I haven't come across a use case where you would need to run resolve-tspaths more than once after a build. If this is happens to be your use case though, please let me know.
2. Create an additional tsconfig file for use with resolve-tspaths without *
I'm making the assumption here that you don't actually need paths that match * to be replaced by resolve-tspaths since you mention they're for imports pointing to node_modules folders. If this is the case, you could make a new tsconfig.build.json file that extends tsconfig.json, but override the paths block to only have your other aliases and not the one with *:
// tsconfig.build.json
{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    // ...
    "paths": {
        // path for * is removed
        "@": ["/workspace/replace-tspaths-repro/src/index"],
        "@/*": ["/workspace/replace-tspaths-repro/src/*"]
    }
  }
}

And pass this file to resolve-tspaths explicitly so that it won't try to replace paths that match *:
resolve-tspaths -o dist -s src -p tsconfig.build.json

The cost of this solution is that you need to make sure that the other paths in tsconfig.json and tsconfig.build.json are in sync.

I didn't have this problem with tscpaths. The issue is that I'm running this as part of a build tool with an swc watcher. So basically after each swc change resolve-tspaths will be invoked. I cannot ask my users to not have * in their tsconfig in order to use my build tool...
As I saw, this is only an issue with non-named paths, can't it be just tested like ^[\\/\.]*$ and skip?

I see, that makes more sense! I'll look into your suggestion and get back to you.

This issue should be resolved in the 0.7.1 release.
Relative paths ./* and ../* will not be replaced by resolve-tspaths. A consequence of this is that you won't be able to use them as aliases, but that's a terrible idea anyway.
Also, I was curious as to why you didn't run into this problem with tscpaths, and turns out that it totally ignores the * alias - see here, where the * alias would have been filtered out by line 88. I guess that's one way to do it haha, but definitely feels a little "wrong".


try using expected to force backtrack

Try using the expected function to cause a match to fail, forcing a backtrack.

meh.


Remove Point operator()

This addresses the Point portion of issue #337. The corresponding Rectangle changes were done in PR #340.
It's recommended to merge the downstream OPHD changes first:  (Edit: Done).
ldicker83/OPHD#141

Heh. For reference, I usually go commit by commit. Occasionally I'll start commenting on something that was changed later. It doesn't happen too often though, and I like the breakdown of being able to see things by individual commits.
Interesting comment about most vexing parse. It does look quite similar. Perhaps another reason to avoid that syntax here. Though since that was the call operator (operator()) on a pre-existing object, and not the constructor for a new object, I think it was safe. In particular, there is no type name to the left. At any rate, I compiled and ran unit tests at each step, and it didn't catch any problems. Your comment does get me thinking about it a bit deeper though.

Ever since reading Scott Meyers' books and watching nearly all of his videos I've nearly universally switched to uniform initialization syntax (curly braces) unless absolutely necessary (I'm looking at you std::vector!), due in part to the MVP.
I realize now that yes, the code wouldn't have been affected because it wasn't an attempt to declare a variable; it just looked really close to a variable declaration.


Streamed signing and archiving

[ ] crypto.sign apparently accepts ReadableStream
[ ] generatePackage could return a stream instead of a Buffer object

The entire archive must have been fully read to generate a valid signature, and read again (?) to emit a signed stream.
new Crx(…).load('./dir').then(function(crx){
  crx.generatePackage().pipe(fs.createWriteStream('./dist/package.crx'));
});

@oncletom maybe something like i did here: https://github.com/ahwayakchih/crx3/blob/master/lib/crx3stream.js
In short: implement WriteStream, that simply updates sign and passes data to file, but at the end it finishes creating CRX header and writes it at the beginning of file.


PR: Complete Text Proposal form Flow

The Proposal List Card UI either we need to put words / height validation for description field or completely remove it as showing the complete html string which can very length to length hurt the UX.
The Html Parse is not rendering the some tags like h1 and h2 correctly so to make it work we can use text-editor component for just viewing purpose only or can make a new TextDisplay component using TextEditor from React Quill.


120 test docs dvf

Description
Refactor code of ddf dvf to remove redundant code and add some necessary comments
Type of change

[x] New feature (non-breaking change which adds functionality)

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] My changes generate no new warnings
[x] New and existing unit tests pass locally with my changes

@NMontanaBrown i added a test for ddf_dvf_forward in deepreg/model/network/ddf_dvf.py to check the shapes, which makes sense to me.
But for the functions like add_image_loss in deepreg/model/network/util.py, im not sure how can i properly test it without copying a bunch of code. bcz it requires a already built model, but when we build model, we add the losses as well.
I would say, let's return to these functions later once I added conditional network, as some extraction of the code might happen later.


delete memento

no used
create an issue

it is used when we press edit button to change memento from '....::view:id' to '.....::edit::id', isn't it?

@olhabn Can you please review this?

it is used when we press edit button to change memento from '....::view:id' to '.....::edit::id'.
please create a ticket if it creates a bug and I will implement "on edit memento" if a different way. thanks


Does not support large files

Animated QR Codes can potentially be used to accomplish this.
More info:

https://github.com/divan/txqr
https://github.com/divan/txqr-reader
https://divan.dev/posts/animatedqr/
https://divan.dev/posts/fountaincodes/

https://www.youtube.com/watch?v=8SDnc2tffZk

https://franpapers.com/en/algorithmic/2018-introduction-to-fountain-codes-lt-codes-with-python/


Account Page : Voucher TAB : Additional filter required like SEARCH BY DATE etc.

Following Filter Required

Search by DATE
Search by Voucher Amount
Search by Voucher Type
Search by Voucher Sub-Type
Search by Voucher entered by Staff

Following filter not required

Search by Staff..

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

Voucher Sub-type COLUMN required in list of voucher.

I think for accounts and voucher queries we need to hear what sirvi has to say

Search by date should be like this..


Can team chat messages be included in notifications?

Note that many teams might mean a lot of messages. Maybe a notification that when clicked gets you to the first team you have messages in since last read? Or maybe the teams page itself, filtered by what teams have unread chat messages.
Must investigate how team chat works.

Messages in the chat are loaded at page load, page doesn't have a JSON endpoint, there is no API to query team messages and the team message subscribe either doesn't work, or it only applies to the team mass messaging system.
Added a feature request to Lichess: https://github.com/lichess-org/lila/issues/15439

Implemented in v2.3.129


2020-02-21 GUARD-415 Include-Receipt-Number-In-Order-Id

Summary
Added receipt Id to order.

Now that it's been tested & approved, merging so that can combine with GUARD-324


Seed the database with dummy modules

Currently, when the seed script is executed, it doesn't seed the database with dummy modules.
Update the seedData.ts and seed.ts

We can do this after there are some actual modules in prod. Similar to how it's done with the challenges.


legosurface misses voxels

I'm using Volume and legosurface hoping to get a lego-style visualization of a voxel grid with only 0 and 1 values (drawing the voxels with value 1). I'm attaching a pic when I show the lego surface, and a pic when I just show the volume itself.

Clearly, the lego surface version is missing a LOT of voxels, even though the transparent visualization seems to show them. The voxels that are missing seem to be around where there is a 1-voxel-thick wall. Any idea what happened here?
(for lego surface I used vmin=0.5 and vmax=1.5 since I only want to show voxels with value 1.)

Hi, thanks for reporting.. that is a bit strange can you share some code and/or dataset?

Yep. Here's a json and the code to visualize it.
voxels.zip
import json
import vedo

with open('voxels.json') as fin:
    voxels = json.load(fin)
volume = vedo.Volume(voxels)
lego = volume.legosurface(vmin=0.5, vmax=1.5)
vedo.show(lego)

Should now work:
pip install -U git+https://github.com/marcomusy/vedo.git
lego = volume.legosurface(vmin=0.5, vmax=1.5, boundary=True)

Looks good, thanks! That was super quick. It seems like the colors are wrong though? The value is 1 so shouldn't it be orange?


Minor typo in test-and-docs.md

Signed-off-by: John Howard<EMAIL_ADDRESS>@thaJeztah Very minor typo to correct a valid IP address

:heart:
LGTM, bye bye IPv4¾


position move

https://janraasch.github.io/hugo-bearblog/blog/
After clicking "post": Markdown Syntax Guide
The entire page shifts slightly to the left (or towards both sides).
It appears as though the page experienced a brief flash.

interesting. there seems to be a 15px width difference on the  tag between the blog page and internal post pages.
On the internal post pages (which are 15px slimmer), deleting the  tag inside the body seems to resolve the problem (it grows the missing 15px).
Also the <content> tag is not really defined in the html5 spec is it? I couldn't find any references.

interesting. there seems to be a 15px width difference on the <html> tag between the blog page and internal post pages.
On the internal post pages (which are 15px slimmer), deleting the <content> tag inside the body seems to resolve the problem (it grows the missing 15px).
Also the <content> tag is not really defined in the html5 spec is it? I couldn't find any references.
edit: removing the <content> tag doesnt actually solves the problem
ohshit it seems to be the scrollbar. i'm that stupid.

thanks !
so , what should i do now?

so , what should i do now?

Well I supposed there isn't anything that can be done, as different browsers will have scrollbars of different widths.
If you check the original bearblog, the same thing is happening:
https://herman.bearblog.dev/ => click on a post or on "Blog"
Since the content remains centered, I think the css is already adequate for these situations.

Hi there 👋,
here is an existing issue on the Original Bear Blog-repo: https://github.com/HermanMartinus/bearblog/issues/26
@toyo2333: You could chime in over there ⬆.
Then, we can pull in a solution into this repo later on.


UseCookieAuthentication bug after upgrading to 1.1

I've upgraded to the latest ASP.NET Core 1.1. Logging in with cookie auth doesn't work properly.
I'm using attribute routing, so my config doesn't define routes.MapAreaRoute and routes.MapRoute:
  app.UseMvc();

If the user navigates to a secured action, it redirects to the login action, because of this:
app.UseCookieAuthentication(new CookieAuthenticationOptions() {
    LoginPath = new PathString("/clients/login"),
    AutomaticChallenge = true,
    AutomaticAuthenticate = true
});

And my Account controller's login action looks like this:
[HttpGet]
[AllowAnonymous]
[Route("/clients/login")]
public IActionResult Login(string returnUrl = null) { /* ... */ }

So, I expect a request to the secure /bar action to redirect to:
/clients/login?returnUrl=%2Fbar

But it actually redirects to:
/Account/Login?ReturnUrl=%2Fbar

...which doesn't exist, and so returns a 404.
If I manually navigate to /clients/login then it works, but it's supposed to be automatic. And besides, my users don't know to do that.
There is a bug somewhere in the new bits, or, there is a breaking change I don't know about. Any guidance please?

Sounds like you have multiple cookie auth middleware instances in your app. E.g. are you using Identity? That comes with at least two instances of cookie auth.

@Tratcher Yes I am using Identity. This problem started immediately after the upgrade.
What do you think I should do?

Share your Startup code.

@Tratcher Had to sanitise some of our stuff, so I hope there aren't any typos!
public void ConfigureServices(IServiceCollection services) {

  services.AddOptions();

  services.AddDbContext<EfContext>(
    options => options.UseSqlite(_configuration.GetConnectionString("DefaultConnection")),
    ServiceLifetime.Scoped);

  services
    .AddIdentity<User, IdentityRole>()
    .AddEntityFrameworkStores<EfContext>()
    .AddDefaultTokenProviders();

  services.AddMvc(options => {
    options.Filters.Add(new AuthorizeFilter(new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build()));
    });

  services.AddRouting(options => options.LowercaseUrls = true);
  }

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) {

  if (env.IsDevelopment()) {
    loggerFactory.AddConsole(Configuration.GetSection("Logging")).AddDebug(LogLevel.Warning);
    app.UseBrowserLink();
    app.UseDatabaseErrorPage();
    app.UseDeveloperExceptionPage();
    }
  else {
    app.UseExceptionHandler("/error");
    }

  app.UseStatusCodePagesWithReExecute("/error/{0}");
  app.UseStaticFiles();
  app.UseIdentity();

  app.UseCookieAuthentication(new CookieAuthenticationOptions() {
    LoginPath = new PathString("/clients/login"),
    AutomaticChallenge = true,
    AutomaticAuthenticate = true
    });

  app.UseMvc();
}

Yeah, you shouldn't need that extra CookieAuth at all, use the one already built into UseIdentity. You can configure its Login path via IdentityOptions.Cookies.ApplicationCookie.LoginPath
https://github.com/aspnet/Templates/blob/dev/src/Rules/StarterWeb/IndividualAuth/Startup.cs

@Tratcher Sorry I'm a little confused, the app.UseIdentity() method doesn't have any overloads that take an IdentityOptions argument?

https://github.com/aspnet/Identity/blob/dev/samples/IdentitySample.Mvc/Startup.cs#L50

@Tratcher Okay I see now. I followed the old docs, I guess it changed.
So actually, this is not a bug, but rather a tightening down of something that I shouldn't have been able to do!
Thanks! The 1.1 release looks awesome by the way. Well done to you guys.


PoC Demand propagation based on max flow problems

The PoC code in https://github.com/Deltares/Ribasim/pull/627 attempts to propagate demands from users to the source. The approach there is flawed, because it does not account for multiple demand sharing paths from users to the source. Therefore here is a new setup for this demand propagation.
For now we assume a single source from which each user gets its demand.
Formulate a max flow problem per priority
A max flow problem consists of a directed graph with capacities associated with the edges, and a single source and target node between which one wants to find the maximum flow as restricted by the capacities of the edges. The Ribasim model graph (which I will call the model graph) can be converted into a graph for the maximum flow problem (which I will call the MFP graph) as follows:

These are the nodes in the MFP graph:

The source node given by the source in the model graph;
Nodes in the model graph that form junctions (e.g. nodes 2 and 6 in the model and the end of this comment);
A single (sink) node that represents all users of a given priority (see here for multi-sink maximum flow problems);

Each edge is given by a path that connects 2 nodes mentioned above in the model graph. The capacity of an edge is given by the smallest max_flow_rate of the pumps and outlets on this path. If there are no such nodes on the path, either the capacity is considered infinite, or if this cannot be supported, merge the MFP graph nodes on either side of this edge into one MFP graph node. Other node types that restrict flow (e.g. TabulatedRatingCurve) are not taken into consideration at this stage, as discussed with @gijsber.

There are a few capacity constraints that are not included into the above, which are;

The sum total demand of the users of a given priority;
The flow rate of the source.

To include these constraints into the MFP graph, an extra edge (and phantom node) can be added directly after the source node whose capacity is the minimum of the capacity constraints above.
Solve max flow problems
Obtaining the demand propagation from the users to the source then goes as follows:

Solve the priority 1 max flow problem with an appropriate solver;
For lower priority users the capacity taken up by higher priority users has to be taken into account. Therefore, there where the current MFP graph and MFP graphs of higher priority have overlap, subtract the capacity used by the solution of the MFP of higher priorities from the capacity of the current MFP graph before solving.

Looks good! I was playing around a bit with max flow and plotting, look at this:

This show a max flow solution from node 1 to node 8 on top of the capacities. The flow and capacity is written in the edge labels and indicated in the edge thickness.
#=
https://github.com/MakieOrg/GraphMakie.jl
https://github.com/JuliaGraphs/GraphsFlows.jl
=#

#=
https://github.com/MakieOrg/GraphMakie.jl
https://github.com/JuliaGraphs/GraphsFlows.jl
=#

using GLMakie, GraphMakie, Graphs, GraphsFlows
using SparseArrays

flow_edges = [
    (1, 2, 10),
    (1, 3, 5),
    (1, 4, 15),
    (2, 3, 4),
    (2, 5, 9),
    (2, 6, 15),
    (3, 4, 4),
    (3, 6, 8),
    (4, 7, 16),
    (5, 6, 15),
    (5, 8, 10),
    (6, 7, 15),
    (6, 8, 10),
    (7, 3, 6),
    (7, 8, 10),
]
nv = reduce(max, max(e[1], e[2]) for e in flow_edges)
g = DiGraph(nv)

capacity_matrix = spzeros(Int, nv, nv)  # Create a capacity matrix

for (u, v, f) in flow_edges
    add_edge!(g, u, v)
    capacity_matrix[u, v] = f
end

from = 1
to = 8
f, F = maximum_flow(g, from, to, capacity_matrix)

begin
    ilabels = string.(1:nv)
    node_color = fill(:gray80, nv)
    node_color[from] = :lightgreen
    node_color[to] = :tomato
    elabels =
        [string(F[src(e), dst(e)], " / ", capacity_matrix[src(e), dst(e)]) for e in edges(g)]

    edge_width = 10.0 * [capacity_matrix[src(e), dst(e)] for e in edges(g)] / maximum(capacity_matrix)
    arrow_size = 4 * edge_width

    # draw the edge capacity in grey
    fig = graphplot(
        g;
        edge_width,
        edge_color = :gray80,
        arrow_size,
        arrow_shift=:end,
    )
    # draw the maxflow over the capacity in blue
    edge_width = 10.0 * [F[src(e), dst(e)] for e in edges(g)] / maximum(capacity_matrix)
    graphplot!(
        g;
        ilabels,
        elabels,
        node_marker = Circle,
        node_strokewidth = 1,
        node_color,
        elabels_distance = 15,
        edge_width,
        edge_color = :blue,
        arrow_show=false,
    )
    display(fig)
end

Some additional notes on the above proposal:
Combining all user nodes into a single sink in the MFP graph does not directly work, because we care about how the flow is distributed over the different paths that lead to this sink, corresponding to the paths to the different user nodes in the model graph. The way this can be fixed is by keeping the extra edge after the source but only posing the source flow as its capacity, and adding extra edges at the ends of the paths to the sink with a capacity equal to the demand of the corresponding user.
The above can in fact be used to have only a single MFP graph topology covering all MFP problems for each priority. The capacity of these extra user edges can be adapted to the demand of the user of a given priority. This also makes supporting having demands for different priorities from a single user trivial.
I'll add a figure of how I imagine the MFP graph to look for our subnetwork test model.

@visr that looks nice. What does the begin ... end scope in your code example do?

The additional notes make sense to me. The begin end block doesn't do anything and can be removed. It also doesn't change the scope. I just use it sometimes to group lines that I want to always run together in VSCode. Cell delimiters, special comments like ## also work.

I thought of another edge case to keep in mind: if the junction itself is a pump/outlet, then a node and edge should be added before it in the MFP graph to account for its capacity restriction.

When the flows on the user demand edges in the in the MFP solution are maximal, all demand to the users (of the considered priority) can be provided. If not, the solution already has made a choice about how the available flow is distributed over the users. Not in the ways we have talked about to make it fair, but in a way that takes the capacities in the MFP graph into account. We have to make a decision about how we handle this.

This issue starts to look like an epic, the method here does the full allocation instead of only demand propagation from users to the source. Maybe sub-issues are required.

I think it is not needed to add the source flow explicitly in the max flow graph. It suffices to add the user demands for a given priority just before the sink. Then iterating over the priorities looks like this:

Compute the total source capacity (e.g. flow boundary flow rate at current time in simulation);
Set the initial edge capacities of the max flow graph; all are $\infty$ apart from those that have a pump/outlet in the model graph;
Assign the priority 1 user demands to the edges in the max flow graph between the users and the sink;
Solve the priority 1 max flow problem;
Compute the source capacity taken up by priority 1 as the sum of the flows between the users and the sink in the max flow solution;
Subtract the source capacity taken up by priority 1 from the total source capacity;
Subtract the flows used by the priority 1 max flow solution from the max flow graph edge capacities (edges with infinity capacity will keep their infinity capacity);
Repeat steps 3-7 with successive priorities until at step 6 it is detected that the demand that can still reach the users at some priority is larger than the total source capacity that is left.

Note that it can happen that there is not even enough source capacity for the Demands of priority 1. This is not a problem for this approach.
Below is a formal description of the problem of distributing the source capacity that is left over the users.
We are given:

$P$: the priority at which the sum of flows between the users and the sink in the max flow solution is larger than the source capacity that is left;
$q_i \geq 0, \quad \text{for }1\le i\le n$: The flows between the users and the sink in the max flow solution of priority $P$, with $n$ the number of users. $q_i$ is  bounded above by the demand of user $i$ at priority $P$, but it can be smaller than that because of constraints in the max flow graph;
$Q_\text{left}$: the source capacity that is left after allocating source capacity to the users for priorities $1,\ldots,P-1$.

We know by definition:
$$
\sum_{i=1}^n q_i > Q_\text{left}.
$$
We want to find:
$0 \le x_i \le q_i, \quad \text{for }1\le i\le n$ (the allocations to the users at priority $P$) such that
$$
\sum_{i=1}^n x_i = Q_\text{left},
$$
(i.e. all leftover source capacity is used) and the distribution is 'fair'. Maybe a good measure of fairness is to maximize
$$
\min_{i: q_i > 0} \frac{x_i}{q_i},
$$
e.g. maximize the minimum fraction a user gets of its demand of priority $P$ (that is, the part of its demand that can actually reach the user).

Hi @SouthEndMusic , looks promising. I assume demands are first corrected for local available water, before you enter this process.

Hi @SouthEndMusic , looks promising. I assume demands are first corrected for local available water, before you enter this process.

By 'local available water' do you mean the inflow of a subnetwork? In the end yes, but for now the test model is restricted to only consisting of a subnetwork.

By local available water, I mean  volume in the basin above the minimum water level


Nightly E2E runs have stopped running

We need to have them running off of both v1.x and dev branch.

@soninaren please chat with Fabio to find out what you need to do

Mathew fixed this
https://github.com/Azure/azure-webjobs-sdk-script/commit/b2947ba1e44db2f9a9de926fe816f93a93a2fac8
https://github.com/Azure/azure-webjobs-sdk-script/commit/a2ee11c7a2bded01b1f84ea0569bb07d56c43fbd
https://github.com/Azure/azure-webjobs-sdk-script/commit/ffbcf8477cce69f8f8876dbc8c3a8ad6e64896cb


prepare for 2.0.2 release

Just found a bug. One minute.

Nevermind - false alarm. All is good to go.

I'll leave this open for a day or two untill things settle down.


Attempt CodeCov integration

@kwin I think the CodeCov works on this (removed coveralls) - can you check the SNAPSHOT to OSSRH piece (which should only trigger on master)

I assume the CodeCov complaining about "no report found to compare against" gets resolved when this gets into master and branches are made off that.

I think we should keep the approach of handling differences between branches in environment variables. Just add the coveralls upload step conditionally in addition to the Maven build leveraging env variables


Error on npm run watch

Hi Eric, I just cloned the repo and followed the steps. When I run the npm run watch command, I'm presented with this error message:

module.js:440
throw err;
^

Error: Cannot find module 'eslint-plugin-react'
at Function.Module._resolveFilename (module.js:438:15)
at Function.Module._load (module.js:386:25)
at Module.require (module.js:466:17)
at require (internal/module.js:20:19)
at /Users/tonybrown/Documents/Development/JavaScript_Projects/EricElliot/composition-examples/node_modules/eslint/lib/cli-engine.js:125:26
at Array.forEach (native)
at loadPlugins (/Users/tonybrown/Documents/Development/JavaScript_Projects/EricElliot/composition-examples/node_modules/eslint/lib/cli-engine.js:116:21)
at processText (/Users/tonybrown/Documents/Development/JavaScript_Projects/EricElliot/composition-examples/node_modules/eslint/lib/cli-engine.js:204:5)
at processFile (/Users/tonybrown/Documents/Development/JavaScript_Projects/EricElliot/composition-examples/node_modules/eslint/lib/cli-engine.js:270:18)

Here is a link to my npm error
log

I see there was a typo in the package.json file.
I missed that, I read through that file a few times and missed that.

Glad you figured out the problem with your global .eslintrc file.

Yeah, that was a head scratcher for sure lol.
I'm using yours now for my global inside my dev env, I changed a few things but
basically everything is hunky dory 👍

I don't have a global .eslintrc file. =)


Reasonable values for beta parameter in ATAC-seq chrombpnet run

Hello,
I'm trying to run chrombpnet fit on some ATAC-seq data, but I'm running into an issue. In the step that trains the bias model, during the second tqdm "Loading Loci" progress bar (which I guess is loading the negative sites), numpy throws a ValueError ("ValueError: need at least one array to stack") because of this line in tangermeme/io.py:
seqs = torch.from_numpy(numpy.stack(seqs))

That's tangermeme/io.py, line 366 in the extract_loci() function.
The immediate reason for the error is that the seqs list is empty. Investigating the loop which populates seqs reveals that every single locus has signal[target_idx].sum() > max_counts, triggering a continue statement. As such, nothing ever gets added to seqs.
After some screwing around, I figured out that max_counts is reset within chrombpnet to be min_counts * beta (at least, this is true for the bias model's negative sites). If I'm thinking about this correctly, the logic makes sense to me, for the negative sites you might want to train only on those within some limited range of ATAC-seq signals. But clearly my data + negatives don't fit within the default range.
Thus, I thought I could get around the error by simply increasing beta from the default of 0.5 to 1, and this does indeed work. But I don't know if this is a good idea - is there some reason not to do this? Can you share any insight on what beta is supposed to represent and whether I can get away with this? What range of values should beta have?
The JSON I'm using is identical to the one in example_jsons/chrombpnet_fit_example.json, but with the "loci", "negatives", "sequences", and "signals" parameters changed to reflect my own data + hg19 reference genome FASTA.
Thanks,
Greg

Hi Greg
Sorry for the late reply. There are two issues here that have since been resolved in v0.8.0 which you can now get from pip (or cloning the repo).
(1) I was calculating max_counts using the minimum number of reads in peaks multiplied by the user-provided beta value. In the ChromBPNet repo they use the 1st percentile instead of true minimum to get a more robust estimate. I now do the same thing. On an internal test setting this caused max_counts to increase from 22 to 37 though, obviously, the specific numbers are dataset-specific.
(2) Perhaps more importantly is some confusion in how the JSONs are generated. When you use the pipeline or fit commands for ChromBPNet, you can pass in a set of parameters for each of the steps. When you don't, these values are taken from the base level of the JSON. When fitting a bias model, if you don't pass in a set of loci to train on it would inherit from the same loci keyword that you likely use to specify peaks in the first layer of the JSON. If you were not passing in the negatives to train the bias model then you were basically calculating the minimum number of reads in a peak, then loading up the peaks again and filtering all those that more than half the minimum number of reads in peaks -- by definition, giving you an empty list. I have changed it to instead inherit from negatives if you do not provide anything.
Let me know if 0.8.0 works for you.

Please re-open if issues persist.

Hi Jacob, thanks for responding, I'm just circling back to this now.
I downloaded the latest version of bpnet-lite. While trying to run chombpnet fit, I saw an error where calls to extract_loci() (imported from tangermeme.io) have a new 'ignore' parameter, but tangermeme wasn't updated to accomodate that. Meaning that running this:
$ chrombpnet fit -p json/ATAC.json

...gives:
Traceback (most recent call last):
  File "/home/gdonahue/software/MiniConda/miniconda3/envs/bpnetlite2/bin/chrombpnet", line 331, in <module>
    training_data = PeakGenerator(
  File "/home/gdonahue/software/MiniConda/miniconda3/envs/bpnetlite2/lib/python3.8/site-packages/bpnetlite/io.py", line 187, in PeakGenerator
    X = extract_loci(loci=loci, sequences=sequences, signals=signals,
TypeError: extract_loci() got an unexpected keyword argument 'ignore'

This happens in chrombpnet and bpnet as well as bpnetlite.io. If you comment out the parameter in the function calls it proceeds as usual. I guess it just filters non-ATGC characters out of the sequences loaded from the FASTA? So if the FASTA is OK then it shouldn't matter.
I'm guessing you're in the process of updating this, so I'll leave this here rather than make a new issue.
Incidentally, there is a typo in the supplied example JSON chrombpnet_fit_example.json, there should be a comma between "chr4" and "chr5" on line 27.
Also, there doesn't appear to be an option for "chrombpnet interpret" (per the documentation on the front page) - I think the relevant operation is called "attribute" there. Actually, now that I think about it, my earlier issue wrt batch size being too large ("Practical limit on # input peaks #7") might have happened because chrombpnet expects to see a block for "attribute" in the JSON and, not finding it, defaults to the enveloping scope parameters (batch_size = 256) or else the hard-coded default value of 64.


NameError: name 'rapid_kdv_C_library' is not defined

When I try to import libkdv, it arise this:
NameError: name 'rapid_kdv_C_library' is not defined
My OS is ubuntu 20.04

Issue fixed in version 1.18.1, plaese update to the latest one.


because it uses overrides and the versions feature flag is disabled.

Hi， everyone , i want to use vcpkg install the library of uwebsocket,  when i tried to install its older repo(version  v0.14.0 or 14.0.0), i changed the vcpkg.json file as the example displayed :
{
  "name": "uwebsockets",
  "version": "<IP_ADDRESS>",
  "description": "Simple, secure & standards compliant web I/O for the most demanding of applications",
  "homepage": "https://github.com/uWebSockets/uWebSockets",
  "dependencies": [
    "usockets",
    "zlib"
  ],
  "overrides": [
    {
      "name": "uwebsockets",
      "version": "14.0.0"
    }
  ]
}

however, when i put  .\vcpkg install uwebsockets:x64-windows in the terminate, the error occurred as follows:
Computing installation plan...
Parsing manifest failed: F:\vcpkg-master\vcpkg-master\ports\uwebsockets was rejected because it uses overrides and the versions feature flag is disabled.
This can be fixed by removing "overrides".
See vcpkg help versioning for more information.
Note: Updating vcpkg by rerunning bootstrap-vcpkg may resolve this failure.
Anyhelp will be very appreciated!!!!

@vicroms ,   could you please give me some guidances to install the library of uwebsockets, i wanne install the older version v0.14.0, i tried to add the overrides line as above in vcpkg.json, however, it didn' work, and then, i noticed you 've answered some similar questions, so i ask you for assistance if you don't mind , i will appreciate so much. Thank you in advance.
should i specifiy the "builtin-baseline": "......"   there?

Hi @sainttelant
You need to enable the versions feature flag.
The easiest one is to create an environment variable VCPKG_FEATURE_FLAGS with versions as its value. Other ways to do it are described in the versioning announcement blog post.
You do need to set the builtin-baseline which can be set to the latest commit of vcpkg.

@sainttelant, does this still be a question for you?

@PhoebeHui @vicroms   Thanks for your help. it works  now


Add exclusive view or preview for diffuse texture workflow

Feature/enhancement description:
Currently if you want to view a flat unlit version of your generated diffuse texture you have to select a node at the end of the node pipeline so that the correct results will be displayed on the 2D preview. If you are only interested in generating 2D diffuse textures, this workflow gets very tedious. By diffuse texture I mean the end results as pixels which will be saved to the disk as a regular image file.
The 3D view displays the diffuse texture on the 3D object's surface, but issue here is that you cannot modify the scene so that all lighting calculations are turned off. The results on the surface of the 3D object are not the same as what can be seen when the texture is saved to disk. You cannot for example see the darkest pixels because the 3D lighting calculatations light these pixels in 3D view depending on the orientation of the object.
Possible solutions

Allow users to lock a specific node to a separate 2D viewport. In my case this would mean locking the last node next to Static PBR Material node. Since Material Maker already supports multiple view windows, it would be nice to have this locked viewport and a separate viewport for the currently selected node 2D preview for best user experience.

Allow flat shading in 3D viewport which would make the texture on the surface of the 3D object look exactly the same as on the disk as an image file.

Extra
Allow exporting the resulting texture as an image for those who don't care about game engines. This is not a big deal as you get the textures anyway when you export for Blender for example, but it would still be nice thing to have.

A possible solution is to set albedo to black, roughness to 0 and and metal to 1 and connect your texture to emission. Itg would also be possible (and easy) to create a new material type for this.
You can already export the 2D preview as a single texture (right click the preview).

Thanks! This works mostly. The 3D view is still lighter than the 2D view, unless I did something wrong with the settings:

Allow users to lock a specific node to a separate 2D viewport

You should already be able to do this with the Preview(2) window(shift left-click any output port of a node to use it):

You should already be able to do this with the Preview(2) window(shift left-click any output port of a node to use it):

Very cool, thanks! This works for me.


[Feature Request] Can I save a pose under a different name?

The more .json files you have, the more confusing the pose you saved. Can you patch it so that the Save As window appears when saving?

I think you can rename the default name when saving pose


Export local IPs collection timestamp details header for HMRC (Gov-Client-Local-IPs-Timestamp)

Is your feature request related to a problem? Please describe.
Currently, we are constructing all the HMRC headers as part of getFraudPreventionHeaders function in https://github.com/intuit/user-data-for-fraud-prevention/blob/master/src/js/hmrc/mtdFraudPrevention.js.
We want to provide the flexibility for users to choose the headers they want from this library independently, instead of providing all of them as a bunch.
Describe the solution you'd like
We want an exported function for Gov-Client-Local-IPs-Timestamp header. Add the functionality to fetch timestamp details for local IP address collection and construct Gov-Client-Local-IPs-Timestamp header value in the format required by HMRC.

Ok I'll work on this, could you assign it to me?

We do not assign issues to anyone. Please go ahead and submit a PR once it is ready. Let us know if there are any questions.

Have created a PR, hopefully this covers what was needed?

Closed with https://github.com/intuit/user-data-for-fraud-prevention/pull/146


feat: [esbuild-plugin-html] Support esbuild publicPath

Are there any plans for supporting the publicPath argument from esbuild?

I won't mind giving a hand with a PR


Improve format-all-default-formatters customization

Clarify that you can specify custom arguments to pass to each formatter.

Thanks. I'm not familiar with the customize facility in detail. Did you test that this works? If so, it's a good idea and I'll merge it.


Add generateConfluenceMarkdown.js

Addresses #17
Added generateConfluenceMarkdown.js based on generateGitHubMarkdown.js , with Confluence/Jira-friendly markdown.
In Confluence, either the Github or Confluence-style markdown can be imported. Using the Confluence-style markdown will look like this:

In Jira, the generated markdown can be copy-pasted into the text mode of the editor, and it'll look like this:

Thanks for the contribution!


GH-44980: [CI] Remove unnecessary retrieval of arrow version from Java on Spark integration

Rationale for this change
The job is currently failing.
What changes are included in this PR?
Remove unnecessary check on Java code.
Are these changes tested?
Via archery
Are there any user-facing changes?
No

GitHub Issue: #44980

@github-actions crossbow submit test--spark-

Tests seem to be failing but this failure is not related to the original issue:
 Starting test(python): pyspark.sql.tests.test_arrow (temp output: /spark/python/target/71d33db2-ca30-4e89-8edf-6aed57761990/python__pyspark.sql.tests.test_arrow__kzeeud_w.log)
/opt/conda/envs/arrow/bin/python: No module named pyspark.sql.tests.test_arrow

Had test failures in pyspark.sql.tests.test_arrow with python; see logs.

@github-actions crossbow submit test--spark-

@github-actions crossbow submit test-conda-python-3.11-spark-master

@github-actions crossbow submit test-conda-python-3.11-spark-master


How to disable/ignore internationalisation for a single page and remove language prefix.

I tried using ignoreRoutes in configuration for a static page but on client side redirection it still appends language prefix. The page I want to remove internationalisation is a dynamic page which is directly in pages directory.
/pages/[dynamic-page]
I want all the URLs for that page to not have any language prefix

The ignoreRoutes config option should do exactly what you are describing. Can you please provide a reproducible repo?


Soft delete

Fixes:  #301

BGPGroup, InternetExchange, DirectPeeringSession, InternetPeeringSession, RoutingPolicy and Community Objects all now support soft deletion. This means that they will not be deleted in the database immediately. Instead, a deleted field will record the timestamp of the deletion, which allows for multiple version of a deleted object to exist.
New example templates for JUNOS and EOS using the deleted attribute to clean up existing configured objects
New management tool to purge soft deleted objects

Closes: #86

i was just thinking i should have this be a feature you need to enable. otherwise the new functionality will potentially upset people’s existing templates.

Added the settings to enable the feature and configure the retention period. I'll go take a look at the docker setup to make it line up. It also looks like we have a number of variables missing in the docker environment

Delayed until a further major release

Keep for tracking purpose

How high in the priority list is this? I think this is a quite important maintenance feature to keep routers clean.

This would be great to have. It's unclear why it was never merged, but I assume it'll require more work to get ready to merge now that main has progressed so much. Can anyone confirm?

This has been delayed until we have proper heritage between models and be able to define common behaviour across the code base. This work is in progress, but takes time (a lot of time). Once ready, which should happen for 1.8, we will engage a major rewrite of this PR.


Ticket System

Description
I've added tickets to the main bot, this is okay for now if you want I'll figure out how to get a transcript of chat in a txt file.
I have also
Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Other (Please specify):

Has this been tested:

[x] Yes
[ ] No
[ ] Not needed

Checklist:
If any are false, you may still submit, but may be asked to make changes.

[x] My code follows the style guidelines of this project

[] I have changed/added the help doc at the beginning of any commands changed/added.

[x] I have performed a self-review of my own code

[x] I have commented my code, particularly in hard-to-understand areas

[x] My changed files do not include any files regularly changed in saves (something where my bot would interfere with this).

[x] My changes generate no new warnings

[x] I have tested and concluded that my changes are effective or that my feature works - If you have not tested, dont check this so I know to review it more. You may still make a PR for untested code.

[x] My code does not cause issues with existing code

[] Any dependent changes have been merged and published in downstream modules

[ ] Some of these options did not apply to my change (Please specify which):

can you put these changes on a seperate branch that can be merged into this repo then merged into main please

can you put these changes on a seperate branch that can be merged into this repo then merged into main please

Okay, will do in a sec.


Destructuring let (0.7)

This PR adds a new let() syntax to components, while also keeping let: alive for backwards compatibility.
Example usage:
view! {
    <For
        each=move || data.get()
        key=|n| *n
        // stores the item in each row in a variable named `data`
        let(data)
    >

{data}

    </For>
}

This also allows for destructuring of tuples and structs, as it's just directly embedded in the children function's arguments.
view! {
    <For
        each=move || data.get()
        key=|n| *n
        // stores the item in each row in a variable named `data`
        let((tup1, tup2)) // note the extra parentheses for destructuring
    >

{tup1} {tup2}

    </For>
}

I haven't gone through all the examples and changed the usage as I wasn't sure what you wanted to present as the default. Would you like me to do that?

Lovely, thanks for the PR


Breaks in v9.5.2 due to "Using export * from ... in a page is disallowed"

Thanks for the awesome repo!!!
I couldn't imagine a next.js life without this awesome project!
Related to #238, since it was published

https://github.com/vercel/next.js/pull/14325

@shunkakinoki Thank you very much for reporting it 🧡!
I just did a PR to fix it. I'll try to release it today. Meanwhile, it's available at 0.17.2-canary.6

@aralroca Thank you so much!!! 🔥🔥🔥
I can't tell you how much I appreciate your work!
Thank you, once again!

If you can try the pre-release and confirm that everything works in your project 👏 It should work well now 👍


fix(streamlink): set working-directory to streamlink dir

solution is a bit more complex.
we could set the working directory to a temporary dir, but it feels jank


Add example that uses the C type of NVS API

@punkto If you can please run cargo fmt and cargo clippy (Look at the CI as to how to run the latter.)

Thanks!

Hey @punkto, I'm so sorry. I force-pushed by mistake and for a short while, I lost your example. I restored it as-is, but the commit is listed as mine now. Again - sorry about that!

Don't worry @ivmarkov . I'll have better luck with the raw+serde example (that I still have plans to write) :P


spelling out numbers less than 10: messaging folder

Summary
Spelling out numbers less than 10 in he messaging folder
Ticket Link
https://github.com/mattermost/docs/issues/3269

Hello @ctlaltdieliet,
Thanks for your pull request! A Core Committer will review your pull request soon. For code contributions, you can learn more about the review process here.


Console.ReadLine input shows over top of console output, blocking the text

This is more of a UI issue than a bug, but the input box that shows up when you do Console.ReadLine gets in the way of the console output, so you can't see what it's prompting you for. Makes user input a bit difficult.

I did find a workaround, editing the CSS for user-input-container to be position:absolute;bottom:auto;right:0;left:0 instead of position:absolute;bottom:0;right:0;left:0. This puts it in a better location in terms of the flow of text.

Oh yes that is annoying, will fix for next update. Thanks for reporting.


Fix IsChecked property differing from :checked pseudoclass

What does the pull request do?
Fixes a bug where IsChecked could be true on a button without the :checked pseudoclass, so it would appear unchecked on the UI.
What is the current behavior?
SetAndRaise does not always change the property value, but UpdatePseudoClasses would always be called with the new value, regardless of whether or not it was actually applied.
What is the updated/expected behavior with this PR?
IsChecked should now always remain in sync with the :checked and :unchecked pseudoclasses.
How was the solution implemented (if it's not obvious)?
Call UpdatePseudoClasses with the actual value of IsChecked, not the (possibly incorrect) new value.
Checklist

[ ] Added unit tests (if possible)?
[ ] Added XML documentation to any related classes?
[ ] Consider submitting a PR to https://github.com/AvaloniaUI/Avaloniaui.net with user documentation

Breaking changes
Fixed issues

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: ThereGoesMySanity sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Thanks!
Shouldn't it be updated from OnIsCheckedChanged method? Method should be also fine with DirectProperty though.

I don't know the code well enough to say - the UpdatePseudoClasses call was already in the setter, so I left it there.

@ThereGoesMySanity do you have steps to reproduce this issue or some minimal example?

It happens when one of the subscribers of the IsChecked property changes IsChecked. After the nested call completes, the value parameter from the first call is passed to UpdatePseudoClasses after it has become stale.
Minimal example (using avalonia.app template):
        public RadioButton radio;
        public MainWindow()
        {
            InitializeComponent();
            this.AttachDevTools();
            this.FindControl<Button>("Button").Click += OnClicked;
            radio = this.FindControl<RadioButton>("Radio");
            radio.GetObservable(RadioButton.IsCheckedProperty).Subscribe(OnCheckedUpdated);
        }

        private void OnClicked(object sender, RoutedEventArgs args)
        {
            radio.IsChecked = false;
        }

        private void OnCheckedUpdated(bool? newValue)
        {
            if (newValue == false)
            {
                radio.IsChecked = true;
            }
        }

    <Window.Styles>
        <Style Selector="RadioButton:unchecked[IsChecked=true]">
            <Setter Property="Background" Value="red"/>
        </Style>
    </Window.Styles>
    <Grid RowDefinitions="*,*">
        <RadioButton Name="Radio" IsChecked="True">Test</RadioButton>
        <Button Name="Button" Content="UpdateValueTest" Grid.Row="1"/>
    </Grid>

@maxkatz6 I can see why that fixes it... hmmm maybe if psuedoclasses was updated in OnPropertyChanged this would never have happened.


All bundles contain same index.html content in /production/ giving error 'Unexpected token <'

I'm submitting a...

[x ] Bug report
[ ] Feature request
[ ] Documentation issue or request

In package

[ ] @ng-toolkit/init
[ x] @ng-toolkit/serverless
[ ] @ng-toolkit/universal

Current behavior
All bundles contain the same index.html content
Expected behavior
bundles should contain js code
Minimal reproduction of the problem with instructions

Example repository

What is the motivation / use case for changing the behavior?

Environment

Angular version: 6.0.3

Browser:
- [x] Chrome (desktop) version 67
- [ ] Chrome (Android) version XX
- [ ] Chrome (iOS) version XX
- [ ] Firefox version XX
- [ ] Safari (desktop) version XX
- [ ] Safari (iOS) version XX
- [ ] IE version XX
- [ ] Edge version XX

For Tooling issues:
- Node version: 8.10
- Platform:  Windows

Others:

Hello. Can you provide me an URL to your repo?

I'm afraid not, its a private repo. Its a pretty standard ng6 app, lambda deploy also just results in 'internal server error' not the ng 'Loading ....' and console error as per local serve

RE lamdba not working, in lambda.js I see const server = require('./dist/server'); but there is no server.js in dist. HTML and main.js are there and look fine

Unfortunately, without the repository, I am unable to reproduce this issue. Running ng-toolkit on brand new project works:
ng new someApp
cd someApp
ng add @ng-toolkit/serverless


[T2A3][T16-A3] DION NG

Ready for Review

Reviewed the other PR.
In future, you should close a PR and resubmit if you need to.


Improve Usability of "Unstake" UX

Problem Summary
In the current implementation of Staking, users have found that the ability to Unstake their tokens is difficult to find, since users must first navigate to their current validator's profile in order to Unstake.
Intended Outcome
Users should be able to initiate the Unstake action directly from the staking dashboard. Once they indicate that they would like to Unstake, they can then confirm the action without having to navigate to the validator's profile.
How will it work?

From /staking, user clicks Unstake next to Total Amount Staked.
User inputs the amount they wish to Unstake, and clicks Submit
User confirms the action via a confirmation dialogue.
User returns to dashboard, where their staking figures are updated.

@jimmy3dita I just want to confirm that currently users can only stake with a single validator? Do we know when this might change?

@Patrick1904 As long as our staking UI is limited to a single validator, this should be as simple as adding an "Unstake" button to the dashboard next to "Total Amount Staked". Feel free to go ahead and add this. I don't think a mockup is necessary.
As soon as we enable staking with multiple validators, this experience will need to be expanded to allow the user to select the validator from which they would like to unstake, before indicating an amount.
One small request: Let's knock the 's' off of Your Current Validators

@Patrick1904 As long as our staking UI is limited to a single validator, this should be as simple as adding an "Unstake" button to the dashboard next to "Total Amount Staked". Feel free to go ahead and add this. I don't think a mockup is necessary.
As soon as we enable staking with multiple validators, this experience will need to be expanded to allow the user to select the validator from which they would like to unstake, before indicating an amount.
One small request: Let's knock the 's' off of Your Current Validators

@corwinharrell the single validator restriction only applies when you're staking from a lockup account. You're able to stake with unlimited number of validators when you stake from your main account. We can still add the 'unstake' button for lockup case, but might be confusing with inconsistent UX?

@Patrick1904 got it in that case we'll need a slightly different UX. Thanks for clarifying. Will update this issue with the designs shortly.

Design is complete and ready for review.

@corwinharrell looks great. Everything is clear.

Note: Will start on this once https://github.com/near/near-wallet/pull/1556 is merged


Icon bug fixes for 8.8 release

Select one ...  (check one with "x")
[x] bug
[ ] feature request
[ ] enhancement

Expected behavior

Ellipsis icon (horizontal) should be vertically centered on canvas
There should be a solid version of the Filter icon on the Iconography page

Updated files attached:
icon fixes.zip

PR #514 is merged. Closing this.


When using multiple displays any non-"GPU Supported" display flash constantly

Describe the issue
My setup has both the laptop screen and an external monitor and I'd like to use both in the VM (with a Linux guest).
Both screens show up in the VM, but the display that is emulating a display card without GPU support (which is required, Qemu seems to only support 1 GPU supported display at a time) is constantly flashing. It's very distracting. This seems to only happen when the mouse cursor is moving on that screen, if it's still or present on the other screen it doesn't flash at all.
Configuration

UTM Version: 4.4.5, from Homebrew
macOS Version: Sonoma 14.2
Mac Chip (Intel, M1, ...): M3

Debug log
alpinelinuxvm-log.log
Upload VM
config.plist.zip

Can you provide a video recording?

https://github.com/utmapp/UTM/assets/1565836/aca2775b-b5d0-4941-a6bb-0fb3007aa3e6

It may be an issue with your selection of display devices. You have one virtio-ramfb-gl and one virtio-gpu-pci. Can you try making them both virtio-gpu-pci?

It seems to be the combination of a -gl device with one without. Changing them both to virtio-gpu-pci makes the screen not flash any more but suddenly Linux doesn't like it and shows no desktop on the primary screen (although it's detected in KDE's panel configuration) although it does on the second. Weird...


General RP2040 support?

Are there any plans to support a standard RP2040? I.e Raspberry Pi Pico? I know there’s a C/C++ implementation for the RP2040 / Pico, but I would love to be able to leverage the existing library support.
Thanks!

This is the support for RPi Pico SDK https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk

Hi,
You didn't read the ticket. As I said, I'm aware of the pico sdk. I asked about support for the pico in the arduino ecosystem.

Hi @Chick92, yes I did. I was saying that the support that we provide for Pico SDK is the one I mentioned above.
There are no plans for integrating it in micro-ROS for Arduino, although contributions are welcomed.
In any case, usually, all Arduino environments can be substituted with Platform.IO, so maybe you can configure micro-ROS for the Platform.IO module to have an Arduino API.

Right, so say that then instead of palming me off with a none answer.


Unable to get row count in some cases

Hello,
I am receiving reference value as follows when StreamingSheetReader.handleElement's startElement.getName().getLocalPart() is "dimension"
1- ref=A1 (when there is only 1 sheet)
2- ref=A1:AU5121 (when there are 2 or more sheets)
Your code is working fine in 2nd case but it always return 0 in first case. Please suggest some solution.
if(ref != null) {
// ref is formatted as A1 or A1:F25. Take the last numbers of this string and use it as lastRowNum
for(int i = ref.length() - 1; i >= 0; i--) {
if(!Character.isDigit(ref.charAt(i))) {
try {
lastRowNum = Integer.parseInt(ref.substring(i + 1)) - 1;
} catch(NumberFormatException ignore) { }
break;
}
}
}
Regards,
Mubashar Ahmad

Where are you guyz, please help me i am in much trouble


POST logout

Use POST (rather than GET) for logout.

See this email chain
Nathan Wilson<EMAIL_ADDRESS>Tue, Mar 19, 2024 at 4:54 AM

Yeah, I essentially did all that already and it doesn't work. link_to by default creates GETs these days and the method: option does not work. Like I said there's a turbo-ish way to do it or we could use button_to and fix the CSS. I'm leaning toward button_to and fixing the CSS, but I'm hopeless at fixing CSS.

On Tue, Mar 19, 2024 at 7:31AM Joseph Cohen<EMAIL_ADDRESS>wrote:

Bing Co-Pilot says the following. I don't understand all of it and it doesn't apply directly to our code as we don't have a SessionsController.
But it may hint at the right solution
To modify the logout action in a Ruby on Rails application to use an HTML POST request instead of a GET request, follow these steps:

Update Routes: In your config/routes.rb file, define a custom route for the logout action. You can use the map method to create a named route for
logging out. For example:
map.log_out 'logout', controller: 'sessions', action: 'destroy'
This route maps the URL path /logout to the destroy action in the SessionsController.
Link to Logout: In your view (e.g., a navigation bar or a dedicated logout page), create a link to log out using the newly defined route. You can use the link_to helper method:
<%= link_to "Sign out", log_out_url %>
This will generate an anchor tag with the appropriate URL for logging out.
Controller Action: In your SessionsController, ensure that the destroy action handles the POST request. You can use the method option to specify the
HTTP method:

  def destroy
    # Your logout logic here
    # ...
  end

By default, Rails uses GET for logout actions. By specifying the method as DELETE, you ensure that the logout action uses a POST request.
Remember to adjust the above steps according to your specific application structure and requirements. Using a POST request for logout is a good practice for security reasons, as it prevents accidental logouts due to browser prefetching or cached URLs.

On Tue, Mar 19, 2024 at 3:45AM Nathan Wilson<EMAIL_ADDRESS>wrote:

Has anyone looked at this? I think what we want to do is not use GET for logout. The consensus on the web seems to be to use POST since GETs often get preloaded as we suspected. I looked at trying to do that in the link_to here app/views/controllers/application/top_nav/_user_nav.html.erb:70., but I'm not sure the right path. Updating the route in routes.rb and adding method: :post doesn't work. There's a turbo-ish way to do it, but I don't feel confident in that. Maybe it should use button_to rather than link_to. I got that to work, but I don't like how that renders and I'm not sure the best approach to making it look like the other menu items. Thoughts


Vue 3 Support

Seems to be broken on vue3
> node_modules/vue-screen-size/dist/vue-screen-size.esm.js:1:7: error: No matching export in "node_modules/vue/dist/vue.runtime.esm-bundler.js" for import "default"
    1 │ import Vue from 'vue';
      ╵        ~~~

error when starting dev server:
Error: Build failed with 1 error:
node_modules/vue-screen-size/dist/vue-screen-size.esm.js:1:7: error: No matching export in "node_modules/vue/dist/vue.runtime.esm-bundler.js" for import "default"

Hey there - sorry yea I don't think this plugin will work out of the box with Vue 3. I haven't used Vue 3 yet really so I'm not sure. You could take a stab at forking this to try and update the export method. If I have time coming up I'll make an attempt, I'm just a tad busy now, sorry.

Hey again - vue-screen-size has now been updated to be compatible with Vue 3. Vue 3 is supported from v2.0.0 and beyond (current master). To use vue-screen-size with Vue 2, use v1.0.1.


Questions and Congratulations 🎉

Forgive my early accidental post, I need to finish writing this post. Coming soon! :wink:

First off, wow! :heart_eyes:  I'm very impressed. You've combined tons of essentials in a cohesive manner with an inspiringly easy-to-use ECS. Congratulations on a great job!
To get right to the point, this is looking extremely promising as a foundation for Katharos Technology's Arsenal game engine. I'm the Chief Technology Lead at KatharosTech and we have been trying to find/develop the foundational tools/libraries necessary to establish Arsenal for about a year now. We initially started building on Amethyst but somewhat recently decided that Amethyst didn't share enough of our vision for Arsenal and that we wanted to start with a clean slate. We were entertaining the idea of building the engine components on top of the Shipyard ECS, but haven't actually done much work in that direction yet for lack of time.
Bevy, though, shares a lot in the way of our philosophies for the engine design. The biggest points over Amethyst for us is the short compile times ( yay! ) and the WGPU rendering backend. You're checking a lot of our boxes with things like customizable render paths, data-driven shaders, flex-box UI system, extremely ergonomic ECS, hot reload, etc. These are things that we frankly don't have a ton of time to develop ourselves, but we hadn't yet found any other options that satisfied us.
Additionally, you already have a nice website, a well defined "Why Build Bevy" ( along the lines of a project "vision" which is essential ), and we're totally on board with "documentation proportional to stability". We are rather inspired by how aligned with our goals Bevy is. It seems very well thought out and designed.

Here are some of the design aspects of Arsenal and how they might fit into Bevy:
What is Arsenal?
Aresnal is our vision for a game engine that is fully integrated with Blender, using Blender as the game engine editor. This is much in the spirit of the Armory3D but built on Rust and with a stronger focus on performance and usability. We hope to create an unprecedented user experience by riding on the prolific Blender user interface and completely eliminating the traditional import/export pipeline that can cause so much pain when creating games. Our vision is to create a game engine that is as approachable as possible to a large audience of both complete beginners and seasoned experts while still being able to produce games of any scale.
Arsenal is distributed as a Blender plugin which is written primarily in Rust with a little bit of Python glue code for the user interface components.
Scenes, Shaders & Render Paths
Scenes will be designed inside Blender and exported to gLTF automatically by Arsenal. We've already created a very basic but blazing fast gLTF exporter that can export Blender meshes to gLTF and run it inside of an Amethyst game almost instantly ( see the Arsenal Getting Started Guide ). With Bevy's hot reload, you could get instant updates to your scene simply by modifying them inside of Blender.
Shaders will be compiled to GLSL from Blender's built-in shader nodes, allowing you to develop materials inside of Blender and have them automatically exported to your game.
We can also build your Render Graph nodes into the Blender interface. Combining this with logic nodes you would then be able to sketch, model, sculpt, layout, paint, design materials, create the render graph, and program a game, all without leaving the Blender interface.
Scripting
Scripting is very important to us with Arsenal. We want you to be able to write games using at least Rust, Python, and Blender Logic Nodes. This is important to us for accessibility for beginners and to allow for modding in the future. Rust will also always be an option to allow for zero-overhead game logic, and you will be able to write different components in different languages.
Our plans for scripting most resemble the Amethyst Scripting RFC but I've been thinking about maybe some different approaches as well. The basic concept is to create a schema definition language ( or maybe use something like Apache Arrow )that can be used to represent ECS components in a language agnostic manner and to provide a C FFI to the ECS that allows for systems to modify the ECS world potentially from any programming language.
The FFI is not required for us to start experimenting, though. The most important feature not in any Rust ECS ( that I know of yet ) is the ability to register components and systems that are not known at compile time. If I can register dynamic components and systems at runtime using a Rust API, having a C FFI is secondary and a separate step entirely.
Also, the components that we register at runtime need to be able to be defined as byte arrays of a length that is determined at runtime. Essentially each scripted component will be a #[repr(C)] struct represented as a byte array in the component storage and each different component type could be a different length of bytes. This is our biggest question about Bevy: do you think it would be possible to allow dynamic runtime registration of systems and components with custom storages in the Bevy ECS?

Note: Also some reference on scripting ideas is the discussion on the Shipyard ECS: https://github.com/leudz/shipyard/issues/96

Summary
When it comes to scripting and the editor, Arsenal takes a different approach than the ones you outlined in the "Why Build Bevy" section of your post, but I don't think that's a bad thing. Having Arsenal as a Blender interface for Bevy wouldn't preclude you from developing a Bevy based editor. Also I don't think that having scripting support would hurt Bevy, but you would have to answer that. If you are open to it and Bevy continues to look like a feasible option for Arsenal, scripting support is potentially something we could work on contributing.
Anyway, if you don't mind we would love to have a web meeting so we can talk about how we might be able to help each-other. If you are interested you can use our contact form and we can work out a time.

Thanks for the kind words and the interest! I'm actually familiar with your project (and very familiar with armory) so thats convenient for both of us. I think the fully integrated approach Armory uses has worked really well for them, so i'm glad you've taken inspiration from it.
The "Blender for everything" approach is a non-goal for Bevy. I think a fully custom editor built in the engine significantly lowers the complexity and barrier to contribution (Bevy game devs are basically already engine devs ... they just don't know it yet).
That being said I'm totally cool with Arsenal building on top of Bevy. I know an alternative Blender-only workflow would appeal to many people and would certainly lower the barrier to entry for non-rust devs and encourage an artist-first workflow. I'm happy to help where I can (although I will be focusing most of my efforts on the Bevy side of things). And we should definitely coordinate to ensure we're building foundations that you can use (and vice-versa).
On the topic of scenes, we might have slight divergence here. The Bevy Scene format will be the official way of composing scenes, whereas it sounds like GLTF is the interchange format you would use. I definitely want full GLTF support, but the features available there will be a subset of the Bevy Scene format. For complete integration with Bevy, I recommend using GLTF for models and Bevy Scenes for full scenes + components. (but note that both gltf and scenes are still a WIP)
Scripting is an interesting conversation. My default answer is that scripting is a non-goal for Bevy, and is in fact maybe even an anti-feature.  I think a cohesive ecosystem is an incredibly important part of an engine's success. If half of Bevy devs use rust and the other half use C#, then compatibility and interop become a huge problem. The Rust language choice does set a high bar, but Bevy doesn't need to be all things to all people. Additionally, the Bevy API is a Rust API. Defining FFI on top means we need a second api surface that is the "lowest common denominator" (aka a C api). This both increases maintenance burden and creates the "rust experience" and the "everyone else" experience.
Dynamic components are a good idea and I don't see anything that blocks them explicitly (although the current "strongly typed" ecs api might need explicit extensions to support dynamic components). Under the hood hecs treats everything as byte arrays anyway. Before adding support in Bevy, I'd need to think about what cases dynamic components enable vs the additional complexity supporting them would add.
I'm down to have a web meeting in the near future to discuss this more, but in the immediate short term I'm already 100% overwhelmed by the rapid increase in our community size, so coordinating with other projects will take some time.

The "Blender for everything" approach is a non-goal for Bevy. I think a fully custom editor built in the engine significantly lowers the complexity and barrier to contribution (Bevy game devs are basically already engine devs ... they just don't know it yet).

Totally agree with the advantages of that model. I think it's useful that we can approach this from two different angles and hopefully share a lot of work to our mutual benefit.

And we should definitely coordinate to ensure we're building foundations that you can use (and vice-versa).

Absolutely.

The Bevy Scene format will be the official way of composing scenes, whereas it sounds like GLTF is the interchange format you would use.

If there's a format to use for scenes other than gLTF that's absolutely no problem ( and I think I might prefer using gLTF for models only anyway ). If the format is written in Rust then Arsenal can use it.

My default answer is that scripting is a non-goal for Bevy, and is in fact maybe even an anti-feature.  Defining FFI on top means we need a second api surface that is the "lowest common denominator" (aka a C api). This both increases maintenance burden and creates the "rust experience" and the "everyone else" experience.

As long as there is a way in the Rust API to facilitate the amount of dynamism necessary for scripting, we should be able to take care of the scripting and any FFI from the Arsenal side so that you don't have to take on that burden or taint the pure Rust Bevy ecosystem with extra scripting concerns. It's mostly a matter of us being able to add systems with dynamic queries to the scheduler and components with dynamic storage. With those core functionalities I think that we can cover the rest of what we need to figure out how we want to manage scripting in Arsenal.

I'm down to have a web meeting in the near future to discuss this more, but in the immediate short term I'm already 100% overwhelmed by the rapid increase in our community size, so coordinating with other projects will take some time.

Cool. Whenever you are ready for it. :slightly_smiling_face:  700+ :star: 's in 48 hours... Your project is about to get very popular. :wink:

Brilliant sounds like we're on the same page. I'll ping you in the near future when I have time to discuss this more in depth. (feel free to ping me if you haven't heard from me in awhile).

Just wanted to leave a comment here saying 1) awesome project, really looking forward to playing with it, and 2) I too came here looking for an answer to dynamic component/system registration.
I have a proof-of-concept Wasm plugin/mod system that I would love to integrate into Bevy as an engine plugin, but a big requirement for that to be of any use is for the engine to have some kind of API to register components and systems that aren't statically typed.
It can work without this feature, but would be very limited, as the main game would have to define all components and systems, which the mods are then allowed to use.

I have a proof-of-concept Wasm plugin/mod system

Is it open source yet? I’m aware of one other such system that’s already publicly available, explained here:
https://rr-docs.readthedocs.io/en/latest/technical-details.html
This issue already covers a lot of topics though, so it’d probably be better to start some new, more specific ones like “Dynamic components for FFI scripting”, “WASM plug-in/mod system” etc.

@JeanMertz @zicklag maybe you could collaborate on an api proposal? It would help if you familiarized yourself with the bevy_ecs / hecs codebase.

@cart Exactly what I was thinking.
@JeanMertz  I created a new issue: https://github.com/bevyengine/bevy/issues/142. It would help to get some more details on how you setup your modding and how you are imagining it integrating with the ECS. I have a picture in my head of how I need to integrate my scripting setup in to the ECS but we'll want it to take into account both of our use-cases.

I'll close this issue so that spin-off topics get their own issues.


merge from arlac77/template-github,arlac77/template-kronos-module

package.json

chore(package): add documentation readme ./src/decode-json.mjs --section=API (scripts.docs)
chore(package): add documentation lint ./src/decode-json.mjs (scripts.lint)

Codecov Report

Merging #730 into master will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##            master      #730   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            1         1
  Lines           30        30
  Branches         7         7
=========================================
  Hits            30        30

Continue to review full report at Codecov.

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

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Problem with lora training of llama-2 derived model without deepspeed: FlatParameter requires uniform dtype but got torch.float32 and torch.int8

Please check that this issue hasn't been reported before.

[X] I searched previous Bug Reports didn't find any similar reports.

Expected Behavior
I expect the training example of lora.yml to work
Current behaviour
When not using deepspeed, I get the following error:
  File "/root/miniconda3/envs/py3.10/lib/python3.10/site-packages/accelerate/accelerator.py", line 1285, in <genexpr>
    self._prepare_one(obj, first_pass=True, device_placement=d) for obj, d in zip(args, device_placement)
  File "/root/miniconda3/envs/py3.10/lib/python3.10/site-packages/accelerate/accelerator.py", line 1090, in _prepare_one
    return self.prepare_model(obj, device_placement=device_placement)
  File "/root/miniconda3/envs/py3.10/lib/python3.10/site-packages/accelerate/accelerator.py", line 1460, in prepare_model
    model = FSDP(model, **kwargs)
  File "/root/miniconda3/envs/py3.10/lib/python3.10/site-packages/torch/distributed/fsdp/fully_sharded_data_parallel.py", line 391, in _
_init__
    _auto_wrap(auto_wrap_kwargs, fsdp_kwargs, FullyShardedDataParallel)
  File "/root/miniconda3/envs/py3.10/lib/python3.10/site-packages/torch/distributed/fsdp/_wrap_utils.py", line 73, in _auto_wrap
    _recursive_wrap(**auto_wrap_kwargs, **fsdp_kwargs)
  File "/root/miniconda3/envs/py3.10/lib/python3.10/site-packages/torch/distributed/fsdp/wrap.py", line 370, in _recursive_wrap
    wrapped_child, num_wrapped_params = _recursive_wrap(
  File "/root/miniconda3/envs/py3.10/lib/python3.10/site-packages/torch/distributed/fsdp/wrap.py", line 370, in _recursive_wrap
    wrapped_child, num_wrapped_params = _recursive_wrap(
  File "/root/miniconda3/envs/py3.10/lib/python3.10/site-packages/torch/distributed/fsdp/wrap.py", line 370, in _recursive_wrap
    wrapped_child, num_wrapped_params = _recursive_wrap(
  [Previous line repeated 2 more times]
  File "/root/miniconda3/envs/py3.10/lib/python3.10/site-packages/torch/distributed/fsdp/wrap.py", line 388, in _recursive_wrap
    return _wrap(module, wrapper_cls, **kwargs), nonwrapped_numel
  File "/root/miniconda3/envs/py3.10/lib/python3.10/site-packages/torch/distributed/fsdp/wrap.py", line 317, in _wrap
    return wrapper_cls(module, **kwargs)
  File "/root/miniconda3/envs/py3.10/lib/python3.10/site-packages/torch/distributed/fsdp/fully_sharded_data_parallel.py", line 408, in _
_init__
    _init_param_handle_from_module(
  File "/root/miniconda3/envs/py3.10/lib/python3.10/site-packages/torch/distributed/fsdp/_init_utils.py", line 429, in _init_param_handl
e_from_module
    _init_param_handle_from_params(state, managed_params, fully_sharded_module)
  File "/root/miniconda3/envs/py3.10/lib/python3.10/site-packages/torch/distributed/fsdp/_init_utils.py", line 525, in _init_param_handl
e_from_params
    handle = FlatParamHandle(
  File "/root/miniconda3/envs/py3.10/lib/python3.10/site-packages/torch/distributed/fsdp/flat_param.py", line 366, in __init__
[2023-11-15 15:01:57,984] [INFO] [axolotl.utils.samplers.multipack._len_est:178] [PID:1015] [RANK:4] packing_efficiency_estimate: 0.98 t
otal_num_tokens per device: 115092
    self._init_flat_param(params, fully_sharded_module, use_orig_params)
  File "/root/miniconda3/envs/py3.10/lib/python3.10/site-packages/torch/distributed/fsdp/flat_param.py", line 430, in _init_flat_param
    raise ValueError(
ValueError: `FlatParameter` requires uniform dtype but got torch.float32 and torch.int8

I have not found a solution for this by searching existing issues.
Steps to reproduce
Use the config. I run it through docker with 8 GPU system using
accelerate launch -m axolotl.cli.train llama-2-lora.yml

Config yaml
base_model: migtissera/Synthia-13B-v1.2
model_type: LlamaForCausalLM
tokenizer_type: LlamaTokenizer
is_llama_derived_model: true

load_in_8bit: true
load_in_4bit: false
strict: false

datasets:
  - path: train.jsonl
    type: alpaca:chat
dataset_prepared_path:
val_set_size: 0.01
output_dir: ./lora-out

sequence_len: 4096
sample_packing: true
pad_to_sequence_len: true

adapter: lora
lora_model_dir:
lora_r: 32
lora_alpha: 16
lora_dropout: 0.05
lora_target_linear: true
lora_target_modules: [ "q_proj", "v_proj", "k_proj", "o_proj", "gate_proj", "up_proj", "down_proj", "embed_tokens", "lm_head" ]
lora_fan_in_fan_out:

wandb_project: synthia-finetune-13B
wandb_entity:
wandb_watch:
wandb_run_id:
wandb_log_model:

gradient_accumulation_steps: 1
micro_batch_size: 1
num_epochs: 8
optimizer: adamw_bnb_8bit
lr_scheduler: cosine
learning_rate: 0.0001

train_on_inputs: false
group_by_length: false
bf16: true
fp16: false
tf32: false

gradient_checkpointing: true
early_stopping_patience:
resume_from_checkpoint:
local_rank:
logging_steps: 1
xformers_attention:
flash_attention: true

warmup_steps: 10
eval_steps: 0.05
eval_table_size:
eval_table_max_new_tokens: 128
save_steps:
debug:
deepspeed:
weight_decay: 0.0
fsdp:
fsdp_config:
special_tokens:
  bos_token: "<s>"
  eos_token: "</s>"
  unk_token: "<unk>"

Possible solution
No response
Which Operating Systems are you using?

[X] Linux
[ ] macOS
[ ] Windows

Python Version
Python 3.10.13
axolotl branch-commit
main/306fe19c54bd497ed5ea4b7e21a632317a58e3f8
Acknowledgements

[X] My issue title is concise, descriptive, and in title casing.
[X] I have searched the existing issues to make sure this bug has not been reported yet.
[X] I am using the latest version of axolotl.
[X] I have provided enough information for the maintainers to reproduce and diagnose the issue.

There is no accelerate config - I did not run it and it is not there:
root@c02e69247440:/workspace/axolotl# find . | grep accelerate|grep -v site-packages
./env/bin/accelerate
./env/bin/accelerate-config
./env/bin/accelerate-estimate-memory
./env/bin/accelerate-launch

Hey, did you solve this issue?

Not sure if this exactly, but it only works for me without accelerate
Just running through python -m axolotl.cli.train config.yml


add options for some of the oxipng command line switches to not change bit depth, color type, etc?

Hey Allen,
Just tried PngOptimizier today, and it's pretty great!  Would it be possible for you to add some settings / options to the app that would allow you to select some of the other command line switches that oxipng has?  The following ones especially I would find useful:
  --nb
      Do not change bit depth

  --nc
      Do not change color type

  --np
      Do not change color palette

  --ng
      Do not change to or from grayscale

  --nx
      Do not perform any transformations and do not deinterlace by default.

I hope something along those lines would be feasible.  :)

@hchorey It's done, check the newest master.


Mark checked_ functions as const

Following on #3608, #3627 and #1174 the rest of the checked_ functions in all rust-bitcoin have been marked as const.  Except for tests and traits.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>7
Details

67 of 80 (83.75%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.01%) to 82.569%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

units/src/amount/unsigned.rs
45
49
91.84%

units/src/amount/signed.rs
22
31
70.97%

Totals

Change from base Build<PHONE_NUMBER>5:
-0.01%

Covered Lines:
20070

Relevant Lines:
24307

💛  - Coveralls

checked_div_by_weight_ceil had a lot of ? to replace and has ended up very nested.   I tried to name the variables in a descriptive, but long, way to make it easier to read.  If someone has a better idea I am happy to change it.

checked_div_by_weight_ceil had a lot of ? to replace and has ended up very nested. I tried to name the variables in a descriptive, but long, way to make it easier to read. If someone has a better idea I am happy to change it.

Well at least it's only temporary until ? is available in const