Build OpenAPI document from ASP.NET Core's new endpoint routing API

ASP.NET Core has a new endpoint routing API which is being used by MVC and other middleware to register routes in ASP.NET Core. Previously every middleware which needed to do some routing decisions was responsible for implementing it themselves. For example, MVC implemented it with Controllers and Action methods and an attribute based API. An authentication middleware on the otherhand wouldn't know about MVC at all and just implement one or two individual endpoints directly as a RequestDelegate. Other frameworks or middlewares had yet their own way of doing routing.
With ASP.NET Core 3 (and going forward) all of these things can/will use the new endpoint routing API, which lets them register a delegate for a given endpoint. Other middleware in the pipeline can retrieve and inspect these routes and make more informed decisons.
It is clear that endpoint routing is the future way of routing in ASP.NET Core and MVC already integrates with it when calling the MapMvcControllers extension method during Startup (which will become the default in the future).
I think Swashbuckle.AspNetCore should equally use the endpoint routing API to generate the Swagger/OpenAPI docs (and perhaps slowly move away from the attribute based API, which has a very limited usability, namely MVC only).
Are there any plans or ETA for when this might happen?

5.0.0 is about getting a stable .NET Core 3.0 version out. This doesn't feel critical to that and therefore pushing out. Will try get this done as a fast follow 5.1.0.

What is the workaround in the interim? In the past I had a Configure method like this:
app.UsePathBase("/api/v1");
app.UseMvc();
app.UseSwagger(c =>
{
    c.PreSerializeFilters.Add((swaggerDoc, httpReq) => swaggerDoc.BasePath = "/api/v1");
});
app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", $"My Cool API");
});

and now I have:
app.UseRouting();
app.UsePathBase("/api/v1");
app.UseSwagger();
app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", $"My Cool API");
});
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
});

But the /swagger/v1/swagger.json endpoint returns a 404.

@domaindrivendev  Any word on support for endpoint routing? Is this something you are still looking at adding into some 5.x version?
We are looking to adopt endpoint routing in our systems over UseMvc now that it's available =)

Although it's not yet documented, this functionality was added by #1619 and is available in the 5.4.0 release

Does 5.4.0 add support for any endpoint route or specifically just for serving the Swagger JSON endpoint? I had a look at the pull request adding that change but not sure how I can take that and implement for my own routes?

Any examples with F# Giraffe on how to do this? Or with C# endpoints (also ok 💯)

@jkone27 We just released 5.0.0-alpha-001 of Giraffe which has a preview of Endpoint routing in an early stage which we can use now to test with the latest version of Swashbuckle. I'll try to put something together over next next coming days!

Although it's not yet documented, this functionality was added (at least for the Swagger JSON endpoint) by #1619 and is available in the 5.4.0 release

@domaindrivendev many thanks!!!

I've been trying to add this, but I'm running into some strange DI errors:
fail: Microsoft.AspNetCore.Server.Kestrel[13]
      Connection id "0HM05I6LSP66J", Request id "0HM05I6LSP66J:00000005": An unhandled exception was thrown by the application.
System.InvalidOperationException: Unable to resolve service for type 'Microsoft.AspNetCore.Mvc.ApiExplorer.IApiDescriptionGroupCollectionProvider' while attempting to activate 'Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator'.
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateArgumentCallSites(Type serviceType, Type implementationType, CallSiteChain callSiteChain, ParameterInfo[] parameters, Boolean throwIfCallSiteNotFound)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateConstructorCallSite(ResultCache lifetime, Type serviceType, Type implementationType, CallSiteChain callSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact(ServiceDescriptor descriptor, Type serviceType, CallSiteChain callSiteChain, Int32 slot)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact(Type serviceType, CallSiteChain callSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateCallSite(Type serviceType, CallSiteChain callSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.<>c__DisplayClass7_0.<GetCallSite>b__0(Type type)
   at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.GetCallSite(Type serviceType, CallSiteChain callSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.CreateServiceAccessor(Type serviceType)
   at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(Type serviceType)
   at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.GetService(IServiceProvider sp, Type type, Type middleware)
   at lambda_method(Closure , Object , HttpContext , IServiceProvider )
   at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass4_1.<UseMiddleware>b__2(HttpContext context)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext)
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)

There seems to have been a misunderstanding, the endpoint routing support requested in this issue is for the ability to document routing endpoints and have them be picked up by swashbuckle, rather than the ability to expose swagger via endpoint routing (which is still cool btw).
@domaindrivendev with that in mind, is this something that is planned?

@slang25 thanks for pointing out the misunderstanding here.
If the endpoint routing API is going to become the defacto approach for building APIs going forward, then certainly Swashbuckle should support it.
However, Swashbuckle depends heavily on ApiExplorer, the metadata component that's built into ASP.NET Core. This component surfaces an ApiDescription for every API action method exposed in an application, and Swashbuckle in turn uses this to generate corresponding Swagger descriptions.
So, really this is an upstream issue - specifically for ApiExplorer to include operations defined through Endpoint Routing in addition to those defined via MVC/attribute routing.
@rynowak - interested to know if you have any insight on this?

This has been brought up with me a few times - its a "refactor the world" kind of issue.
@JamesNK has actually done an implementation of this for gRPC - where gRPC endpoints (not controllers) show up as ApiDescriptions. The mechanism is by implementing a custom IApiDescriptionProvider. This is a pretty tactical solution since it still references MVC - however given that it's all shared framework at this point does it matter?
Another tactical solution would be for Swashbuckle to add its own extensibility that's suitable for use with endpoints.
A few thoughts:
Endpoints (and metadata) are computed at startup, and ideally everything that goes into them is constructable objects (not services). This is a verbose way of saying that endpoints are data. This is relevant because computing the ApiDescription(s) for something requires running a lot of expensive code and also customization via services. It's not a great idea to just add ApiDescription as a metadata, it's probably a limiting choice. You'd probably want some kind of lookup service.
ApiDescription as a type is tied to MVC and that won't really be changeable. In general I am supporting of "pushing down" concepts like ApiDescription where possible and making them more general. This is the whole idea behind endpoints to begin with ... So this would look like producing a new exchange type in asp.net core, and a new service for querying them, and having MVC implement that.
Swashbuckle + MVC are a good fit because MVC can gather a lot of swagger-relevant information just from the code you write without extra annotations due to the use of methods for MVC's programming model (vs lambdas). The programming model we surface for using route-to-code directly isn't a good fit for swashbuckle because it doesn't have binding based on parameters nor serialization based on return values. Basically the synergy is lost when you use an imperative rather than declarative programming model. I don't think there's much value in us trying to get good swashbuckle support for route-to-code - it's a better fit for manually writing a swagger doc, or generating stubs from a swagger doc.
The other major use case is for frameworks like Giraffe, which can't get a swagger story today without plugging into MVC. I think what would be needed here is for someone to come up with a concrete proposal and try to get agreement.
The major decision seems to be whether the exchange types/contracts go into ASP.NET Core, or swashbuckle/some-other-library (I think the pros/cons are the same if it's outside of ASP.NET Core).

inside ASP.NET Core: more investment needed but also more reach, MVC can use it
outside ASP.NET Core: quicker to build, MVC will continue to use ApiDescription

I don't claim to speak for all stakeholders here, so if got something from your POV please speak up 😆 👍

@pranavkm @bradygaster for 👀

Thanks for taking the time for a detailed response @rynowak 😄  The IApiDescriptionProvider is interesting to me, I wasn't aware of it, and opens up an option for us to potentially integrate with Swashbuckle today, I'll have a play about with that.
In the more medium term, I don't know what others peoples views are, but it seems like pushing down ApiDescription for the wider aspnetcore eco-system would be worthwhile. Carter (and Giraffe) for example could make use of it, today Carter builds its OpenAPI docs, which has its pros and cons, but it seems like a sensible thing to standardise across various frameworks/libraries.

I’m going back to my original idea to use the OpenAPI libraries and, as @rynowak notes, treat it all as data and let the user specify it explicitly, doing some type reflection for JSON Schema generation.

I integrated gRPC HTTP API endpoints with Swashbuckle using the endpoint routing API here - https://github.com/aspnet/AspLabs/tree/master/src/GrpcHttpApi/src/Microsoft.AspNetCore.Grpc.Swagger

@rynowak Thanks for the detailed response with your thoughts and ideas on this topic.

The major decision seems to be whether the exchange types/contracts go into ASP.NET Core, or swashbuckle/some-other-library

Feels like swashbuckle to me unless these exchange types are going to be used by something else in ASP.NET Core as well, which I don't think there's a use case for it yet.
I think it would be nice if a library like Swashbuckle would have it's own ApiDoc kind of type which sits between ApiDescriptor and the actual generation of a swagger.json:
MVC with its tightly coupled ApiDescriptor then gets translated into ApiDoc and Swashbuckle produces a Swagger JSON document from ApiDoc.
Other non MVC web libraries can then plug/produce into ApiDoc without having to use MVC for ApiDescriptor and are able to generate an ApiDoc kind of contract in an imperative programming model.

@domaindrivendev I finally got back around to troubleshooting our implementation. Swashbuckle was behaving as expected and including controllers when using endpoint routing with MapControllers. I was able to confirm this in a simplified test project.
Due to the upgrade to .net core 3.1 we also needed to update the Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer package from 3.0.0 => 4.1.1. This upgrade caused issues because of a change in the default behavior introduced in 3.1.0 of this package.
The behavior we were seeing was swagger reporting that no operations were defined and only a single V1 version was available.
The fix was to revert the change in default behavior introduced in Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer by setting UseApiBehavior to false in the ApiVersioningOptions. With this default value of true, only Controllers that are marked with the [ApiController] attribute would be included (which is none of ours).

would it be possible to prioritise this if possible , or are there any updates?

Did WithOpenApi() ultimately resolve this ask?


⚠ Fortnite has degraded performance

In 63f74eb, Fortnite (https://fortnite.com) experienced degraded performance:

HTTP code: 200
Response time: 1580 ms

Resolved: Fortnite performance has improved in e197855.


dropdownMode 'select' isn't working using example in docs

Hello,
I'm trying to get the date picker with select mode working and can't seem to get it to show the select inputs using the sample code in the docs/website. I've also tried the code in the docs without success. Any ideas on where I should look to debug?
React 0.14
react-datepicker 0.33.0
              <DatePicker
                selected={moment(new Date('01/01/2016'))}
                onChange={(m) => console.log(m)}
                peekNextMonth
                showMonthDropdown
                showYearDropdown
                dropdownMode='select'
                />

Screenshot:

please disregard... I forgot to restart webpack after upgrading 🙈


Add secretgen-controller to App Toolkit

Feature Request
Given TCE unmanaged-clusters doesn't come with secretgen-controller installed (at least until it has arm support (https://github.com/vmware-tanzu/carvel-secretgen-controller/pull/59), App Toolkit should install secretgen-controller as part of the package.
Describe alternatives you've considered
The alternative is asking the user to install it on their own.
Additional context
Depends on: https://github.com/vmware-tanzu/community-edition/issues/3909

Depends on: https://github.com/vmware-tanzu/community-edition/issues/3909

We will not be doing this as installing secretgen-controller in App Toolkit doesn't actually help the scenario, as we need to have it installed before we can even install App Toolkit.


Unable to cleanup ACR via cli using Workload Identity to authenticate

Describe the bug
It's not possible to reach the ACR from an AKS pod using Workload Identity to login.
A case was opened with Microsoft and they identified the issue and asked me to report as a bug here.
"This is a CLI bug, as the request is not landing on ARM or ACR.
The way the subscription cache is handled in the CLI, this is only refreshed when the CLI performs a cloud login (az login). The workload identity 'login' might not be refreshing this cache and because the CLI is not sending a request to obtain a refreshed list of subscriptions the request fails locally without attempting to do the purge.
They would need to create an issue to the azure/cli github for this to be addressed Issues · Azure/azure-cli (github.com).
Please add the details that we have discussed
the behavior is different when using user credentials vs using workload identity
the subscription/resource query is not reaching ARM or ACR"
"this code calls this code, the handling of how the subscriptions is cached locally is the issue, as the client is not trying to fetch the subscription from ARM (only tries locally), after that the call fails"
Related command
The command used to authenticate to Azure
az login --federated-token "$(cat $AZURE_FEDERATED_TOKEN_FILE)" --service-principal -u $AZURE_CLIENT_ID -t $AZURE_TENANT_ID --allow-no-subscriptions
The command used to cleanup some old images in the ACR
REPOS=$(az acr repository list -n ${REGISTRY} -o table | tail -n +3 | grep -v helm)
for REPO in  $REPOS; do COMMAND="acr purge --ago 30d --filter '${REPO}:^[A-Fa-f0-9]{8,}$' --keep 5 --untagged"; az acr run --cmd "${COMMAND}" --registry ${REGISTRY} --timeout 3600 /dev/null; done

Errors
The resource with name '' and type 'Microsoft.ContainerRegistry/registries' could not be found in subscription ''.
Issue script & Debug output
cli.azure.cli.core.sdk.policies: {"value":[]}
cli.azure.cli.core.azclierror: Traceback (most recent call last):
  File "/usr/lib/python3.10/site-packages/knack/cli.py", line 233, in invoke
    cmd_result = self.invocation.execute(args)
  File "/usr/lib/python3.10/site-packages/azure/cli/core/commands/__init__.py", line 663, in execute
    raise ex
  File "/usr/lib/python3.10/site-packages/azure/cli/core/commands/__init__.py", line 726, in _run_jobs_serially
    results.append(self._run_job(expanded_arg, cmd_copy))
  File "/usr/lib/python3.10/site-packages/azure/cli/core/commands/__init__.py", line 697, in _run_job
    result = cmd_copy(params)
  File "/usr/lib/python3.10/site-packages/azure/cli/core/commands/__init__.py", line 333, in __call__
    return self.handler(*args, **kwargs)
  File "/usr/lib/python3.10/site-packages/azure/cli/core/commands/command_operation.py", line 121, in handler
    return op(**command_args)
  File "/usr/lib/python3.10/site-packages/azure/cli/command_modules/acr/run.py", line 45, in acr_run
    _, resource_group_name = validate_managed_registry(
  File "/usr/lib/python3.10/site-packages/azure/cli/command_modules/acr/_utils.py", line 143, in validate_managed_registry
    registry, resource_group_name = get_registry_by_name(
  File "/usr/lib/python3.10/site-packages/azure/cli/command_modules/acr/_utils.py", line 109, in get_registry_by_name
    resource_group_name = get_resource_group_name_by_registry_name(
  File "/usr/lib/python3.10/site-packages/azure/cli/command_modules/acr/_utils.py", line 88, in get_resource_group_name_by_registry_name
    arm_resource = _arm_get_resource_by_name(
  File "/usr/lib/python3.10/site-packages/azure/cli/command_modules/acr/_utils.py", line 55, in _arm_get_resource_by_name
    raise ResourceNotFound(
azure.cli.command_modules.acr._utils.ResourceNotFound: The resource with name 'acr' and type 'Microsoft.ContainerRegistry/registries' could not be found in subscription 'subscription'.

Expected behavior
Authentication and perform acr cleanup commands without problem
Environment Summary
az --version
azure-cli                         2.45.0 *
core                              2.45.0 *
telemetry                          1.0.8 *
Dependencies:
msal                              1.20.0
azure-mgmt-resource             21.1.0b1
Additional context
No response

ACR

Hi @yonzhan , is there any reason for removing the bug tag?


Task Scheduler Arguments

I cannot add the program AudioPlaybackConnector64.exe as an action in the Task I'm trying to make. Where can I get a list of Arguments?
I'm a newb at GitHub and Programming so I can't understand any of the codes.

What are you trying to achieve?


docs(http): add members/owners links

Closes #
Briefly describe your proposed changes:

[x] Rebased/mergeable
[x] Tests pass
[x] http/swagger.yml updated (if modified Go structs or API)
[x] Sign CLA (if not already signed)

Awesome again :)
Thanks!


Periodic delete

Description
Periodic delete as a workaround for large number of deltas during deletion
Pull request type

[ ] Bugfix
[X] Algorithm/Module
[ ] Feature
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] Documentation content changes
[ ] Other (please describe):

######################################
Reviewer checklist (the reviewer checks this part)
Module/Algorithm

[X] Core algorithm/module implementation
[X] Query module implementation
[ ] Unit tests
[X] End-to-end tests
[X] Code documentation
[X] README short description
[X] Documentation on memgraph/docs
[ ] Update GQLALchemy signatures in query builder using query module signature generator

######################################

@antepusic  @antoniofilipovic  Pls review again!


Prepare for upgrade to Ecto 3.0

Tried building it for Ecto 3.0 and found the minor changes necessary for making it work with it and the latest :db_connection

Thanks for this. I'll plan to keep it unmerged for now and merge it once Ecto 3.0 is released.


Feature request: Emoji replacement

Hi @forPelevin, thank you for maintaining the project.
I'm glad that I discovered this project as I find myself needing to work with emojis in Golang 😄
However, one of my use cases involves replacing all emojis within a string with a given rune.
Since I've already worked on it on my own fork, I'll open up a PR against the main branch to see what you think 👍

Hi @yongjiajun, thank you for the kind words.
I really appreciate your contribution in the GoMoji project. Everything LGTM. The PR is merged and a new version released 😊


Requiring unknown module "rncp". If you are sure the  module  is there , try restarting  the packager.

Hello Parashuram,
Thanks a lot for letting me know on how to use the cordova plugin in react-native. You saved my day. I have followed your blog to add the plugin and just to test whether i have properly done the setup, i have used your sample Index.android.js file. But when i run the app, its showing the above error(Which i have mentioned in the title).
Could you please help me in this..
Regards,
Sharath

@Sharathnasa
change "rncp" to "react-native-cordova-plugin" in index.android.js file.

Thanks @Deadlysmile - closing this as this is not an issue any more.

I have tired even that before raising this as the issue. still displayed the same. Should i need to add package and module(Like how we add while writing the plugin for react-native to javascript).
Any help will be appreciated. Because this didn't worked for me, i'm writing the plugin in React-Native to fetch the list of installed application with package name along with the image(which gets stored in the sdcard) which i had written for cordova. If this is the case for my requirement(the app which i'm building) requires a lot of plugins to be re-written in react-native.
Please help me in this regard. If you need any further details, im ready to povide.
Regards,
Sharathnasa

Can you add the code from indexo.android.js ?

Thanks for replying axemclion. Sure i will paste below. Also i will attaching my project, just for reference(This project doesn't contain any complicated things. Only i have follwed your blog and added device info plugin.) link for the project - https://drive.google.com/file/d/0B3JBaN1pWSAPdk0zeXBQX1lxSDQ/view?usp=sharing
Also below error was logging inside logcat.
error:

'Error: Requiring unknown module "react-native-cordova-plugin". If you are sure the module is there, try restarting the packager.\n stack: \n  requireImpl  index.android.bun…:48\n  require      index.android.bun…:26\n      index.android.bun…:903\n  requireImpl  index.android.bun…:64\n  requireImpl  index.android.bun…:34\n  require      index.android.bun…:26\n      index.android.bun…:52671\n URL: http://<IP_ADDRESS>:8081/index.android.bundle?platform=android&dev=true\n line: 48\n message: Requiring unknown module "react-native-cordova-plugin". If you are sure the module is there, try restarting the packager.'

2.'Error: Invariant Violation: Application AwesomeApp has not been registered. This is either due to a require() error during initialization or failure to call AppRegistry.registerComponent.\n stack: \n  runApplication  index.android.bun…:45866\n  __callFunction    index.android.bun…:2517\n   index.android.bun…:2443\n  guard index.android.bun…:2402\n  callFunctionReturnFlushedQueue  index.android.bun…:2442\n URL: http://<IP_ADDRESS>:8081/index.android.bundle?platform=android&dev=true\n line: 3019\n message: Invariant Violation: Application AwesomeApp has not been registered. This is either due to a require() error during initialization or failure to call AppRegistry.registerComponent.'
Please find the android.index.js contents as below:
/**

Sample React Native App
https://github.com/facebook/react-native
*/
'use strict';

var React = require('react-native');
var cordova = require('react-native-cordova-plugin');
cordova.device.getInfo(console.log.bin(console.log), console.log.bind(console));
var {
AppRegistry,
StyleSheet,
Text,
View,
} = React;
var AwesomeApp = React.createClass({
render: function() {
return (

Welcome to React Native!

To get started, edit index.android.js

Shake or press menu button for dev menu

);
}
});
var styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
AppRegistry.registerComponent('AwesomeApp', () => AwesomeApp);
Please let me know if require any further details.
Regards,
Sharathnasa

@axemclion The example gist you link from the Readme.md file still has rncp in it per https://gist.github.com/axemclion/b30bdfe991e509851705#file-index-android-js-L14

@niftylettuce I think that is a bug - probably should remove that.


Strip reason.raw_literal from typechecker tests

Currently we write files into disk in order to run the type-cheker against bs-css mocked. Since some bs-css bindings relies on strings, reason adds the raw_literal and fails at matching against our code.
This is very annoying since we have a bunch of tests that run on node that it could be massive to migrate them to native, but because of this particular issue isn't possible.
Here are the file I mention: https://github.com/davesnx/styled-ppx/blob/main/packages/ppx/test/native/Static_test.re
Any soliton here would make sense:

Generate AST without raw_literal
Replace with a regex or a replace all

Fixed using {js||js}.


the Chrome browser displays a fork

Test.pdf
Configuration:

Chrome: 86.0.4240.183
Opera: 70.0.3728.95
System: WIndows 10 2004

Steps to reproduce the problem:
When I use the official online address: https://mozilla.github.io/pdf.js/web/viewer.html
I opened the local file Test.pdf
The opera browser displays normally, and the Chrome browser displays a fork

Duplicate of #12462


Allow to include external keepalived config fragment

Pull Request (PR) description
Some fragments of my keepalived setup are managed by an external tool. I want to be able to include them as verbatim using include directive.

Thanks for your time :)


adds(nodejs): storage cleaner

Deletes files in the storage older than XX days on a schedule.
This is in response to #38
I've used top level await instead of working with nested promises, since I find it much more readable, but I can change it if you'd rather have all the examples follow the same basic structure.

@eldadfux can we merge this?


Enable dbus audit logs.

Merge Checklist

All boxes should be checked before merging the PR (just tick any boxes which don't apply to this PR)

[x] The toolchain has been rebuilt successfully (or no changes were made to it)
[x] The toolchain/worker package manifests are up-to-date
[x] Any updated packages successfully build (or no packages were changed)
[x] Packages depending on static components modified in this PR (Golang, *-static subpackages, etc.) have had their Release tag incremented.
[x] Package tests (%check section) have been verified with RUN_CHECK=y for existing SPEC files, or added to new SPEC files
[x] All package sources are available
[x] cgmanifest files are up-to-date and sorted (./cgmanifest.json, ./toolkit/scripts/toolchain/cgmanifest.json, .github/workflows/cgmanifest.json)
[x] LICENSE-MAP files are up-to-date (./SPECS/LICENSES-AND-NOTICES/data/licenses.json, ./SPECS/LICENSES-AND-NOTICES/LICENSES-MAP.md, ./SPECS/LICENSES-AND-NOTICES/LICENSE-EXCEPTIONS.PHOTON)
[x] All source files have up-to-date hashes in the *.signatures.json files
[x] sudo make go-tidy-all and sudo make go-test-coverage pass
[x] Documentation has been updated to match any changes to the build system
[x] Ready to merge

Summary
dbus has implemented its own SELinux rules. When dbus blocks an operation based on SELinux, it has logic to log the violation to the security audit logs (as it should). Unfortunatley, this logic is currently incorrectly disabled by a build flag. This changes fixes this problem.
Note: The audit client lib supports and actively encourages clients to not fail when the audit service is not available on the system. So, this does not add a dependency on the audit package.
Change Log

Enable dbus audit logs.

Does this affect the toolchain?
NO
Test Methodology
Ran a command that was known to trigger dbus SELinux violation (while using an SELinux enable image) and ensured that the correct log showed up in the audit logs.

Please change the target branch to main instead of 2.0


weird pipeline() combined with watch() behavior

I understand it's intended and documented, still it's seems so inconvenient, illogical and prohibits efficient use of pipelining (not MULTI).
Why pipe suddenly breaks when I call .watch()? It is still kind of pipe, but it doesn't work as one. Maybe, old 2.2 approach is not the best, but it didn't cause this confusion. I used .pipeline(transaction=false) to make pipeline and with a flag on to make atomic pipeline. Cluttering everything in on method is questionable but concept is clear. Now,  we still use .pipeline() to get atomic pipeline until we don't use .watch() when we suddenly loose pipelining and using .multi() directly to get atomic, which makes things with MULTI very inconsistent.
My use case, implemented for redis-py 2.2:
# set up pipeline not for multi, but to avoid unneeded network roundtrips
pipe = redis_conn.pipeline(transaction=False)
pipe.watch(version_key, *conjs_keys)
# get something from redis
pipe.get(...)
pipe.sunion(...)
...
# ignore watch() result, gather all other
_, result1, result2, ... = pipe.execute()

if <some condition involving result*>:
    redis_conn.unwatch()
else:
    try:
        txn = redis_conn.pipeline()
        # Change something in redis
        txn.delete(...)
        txn.execute()
    except WatchError:
        <Optimistic locking failed: just redo everything.>

Actual working example is here
https://github.com/Suor/django-cacheops/blob/master/cacheops/invalidation.py#L111

It seems like you're making some incorrect assumptions about how WATCH works.

The only place a WatchError could be raised is on https://github.com/Suor/django-cacheops/blob/master/cacheops/invalidation.py#L132 (which you aren't handling).
EXEC clears all previously WATCHed keys. Since line 132 executes, and WATCH is never called again, it's impossible to get a WatchError on line 152.

I've attempted top rewrite the invalidate_from_dict function in your code to work with redis-py 2.4.6+. In my opinion, it's much simpler and straight forward.
def invalidate_from_dict(model, values):
    """
    Invalidates caches that can possibly be influenced by object
    """

    def _invalidate(pipe):
        # Create a list of invalidators from list of schemes and values of object fields
        schemes = cache_schemes.schemes(model)
        conjs_keys = [conj_cache_key_from_scheme(model, scheme, values) for scheme in schemes]

        version_key = cache_schemes.get_version_key(model)

        pipe.watch(*conjs_keys)
        version_key = cache_schemes.get_version_key(model)
        version = pipe.get(version_key)
        cache_keys = pipe.sunion(conjs_keys)

        if version is None:
            version = 0
        if int(version) != cache_schemes.version(model):
            cache_schemes.load_schemes(model)
            # force a manual reset of the pipeline to UNWATCH any previously set keys
            pipe.reset()
            # a WatchError will simply cause this entire function to be re-executed.
            raise WatchError()
        elif cache_keys or conjs_keys:
            pipe.multi()
            pipe.delete(*(list(cache_keys) + conjs_keys))

    redis_conn.transaction(_invalidate)

No I can't get watch error on line 132 cause that pipe is pipeline not transaction, so there is no EXEC call on that line. By using pipe I avoid two unnecessary network round trips to redis server in:
pipe.watch(version_key, *conjs_keys)
pipe.get(version_key)
pipe.sunion(conjs_keys)

which not only good in itself but also lessens the probability of WatchError here https://github.com/Suor/django-cacheops/blob/master/cacheops/invalidation.py#L151
So, new watch behavior is ok with transactions, the problem is its incompatible with plain pipelines with transaction=False. By the way, .pipeline() method being a transaction by default is very confusing, it should really be two separate methods with distinct names.

You're correct about the WatchError. I saw the .execute() and just naturally assumed a EXEC was being sent.
I agree that the naming is confusing, but the names are stuck for the time being because they're in the public API. Changing them would break backwards compatibility.

You can create an aliases such as .pipe() for .pipeline(transaction=False), and something for .pipeline(transaction=True) (unfortunately .transaction() is already taken) and encourage people to migrate their code to them. But this is really a separate issue.
What about .watch()? I'd really prefer old behavior, at least it had not that unintuitive side effect of breaking pipe.

Sorry to revisit this old thread, but is there a way to buffer up those three commands that @Suor mentioned? I'm trying to get a lot of data from watched keys, and would like to avoid those roundtrips. I also tried to start the overall pipeline with pipeline(transaction=false) but it does not seem to be the way to go:
with redis.pipeline(transaction=False) as pipe:
    pipe.watch(*keys)
    for key in keys:
        pipe.lrange(key, 0, -1)

    data = pipe.execute()

    pipe.multi()
    # set stuff back, then:
    pipe.execute()

I get ResponseError: DISCARD without MULTI


extrudeRectangular() produces inside-out geometry

Expected Behavior
let aLine = line([[0, -3], [0, 3], [3, 3]])
extrudeRectangular({ size: 1, height: 4 }, aLine)

should produce a valid solid.
Actual Behavior
Produces an inside-out solid.
Steps to Reproduce the Problem
const jscad = require('@jscad/modeling')
const { line, rectangle } = jscad.primitives
const { extrudeRectangular, extrudeLinear } = jscad.extrusions
const { expand } = jscad.expansions
const { translate } = jscad.transforms
const {path2 } = jscad.geometries

function doExtrudes (aLine, y) {
 let out = []

 out.push(translate([-18,y,0], aLine))

 out.push(translate([-12,y,0], extrudeRectangular({ size: 1, height: 4 }, aLine)))

 var tmp = expand({delta: 1, corners: 'round'}, aLine);
 out.push(translate([-6,y,0], tmp))

 out.push(translate([0,y,0], extrudeLinear({height: 4}, tmp)))

 tmp = expand({delta: 1, corners: 'chamfer'}, aLine)
 out.push(translate([6,y,0], tmp))

 out.push(translate([12,y,0], extrudeLinear({height: 4}, tmp)))

 tmp = expand({delta: 1, corners: 'edge'}, aLine)
 out.push(translate([18,y,0], tmp))

 out.push(translate([24,y,0], extrudeLinear({height: 4}, tmp)))

 return out

}

function main () {
 let out = []

 out = out.concat(doExtrudes(line([[0, -3], [0, 3], [3, 3]]), 10))
 out = out.concat(doExtrudes(line([[0, -3], [0, 3], [-3, 3]]), 0))
 out = out.concat(doExtrudes(line([[-3, -3], [0, -3], [0, 3], [3, 3]]), -10))
 out = out.concat(doExtrudes(line([[3, -3], [0, -3], [0, 3], [3, 3]]), -20))
 out = out.concat(doExtrudes(path2.fromPoints({closed:true}, [[2, -3], [2, 3], [-2, 3]]), -30))
 out = out.concat(doExtrudes(path2.fromPoints({closed:true}, [[-2, -3], [-2, 3], [2, 3]]), -40))
// console.log(out)
 return out

}

module.exports = { main }

Specifications
Fix is in progress.

Working fix is in https://github.com/SimonClark/OpenJSCAD.org/tree/V2-fix-extrude-rectangular
Currently looking for a more elegant fix...

Hmm... if so then either the expand is producing reversed points (clock wise rotation) or the expand is producing polygons with reverse rotation.

Yep, expansions.offsetFromPoints() measure the area and behaves differently.  That is the root of this.  I have a fix, but it’s not the right one yet.
The code above produces this:

The goal is to produce this:

It’s looks like an issue when the direction of the line changes.
It’s probably an issue with the offset code, so let’s spend some time to fix this.
(I rewrote offset / expand)

Addressed by https://github.com/jscad/OpenJSCAD.org/commit/43ce5dd4341935966ed976ce16cb5a7e452becc2


Implementation of welcome bot

Hello there,
I can add a welcome bot config file having a proper message that will show up when any user will open up an issue or pull-request for the first time as a part of DWOC. Please assign me this issue.
For reference, kindly check out: https://github.com/apps/welcome
THANK YOU

ok great assigning you

ok great assigning you

pr -> #110

pr -> #110


Use reference instead of binary for handle type

 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.You have signed the CLA already but the status is still pending? Let us recheck it.


Setting Memory Limit

After i set memory limit in LXC-Web_Panel, i get this error.
      lxc-start<PHONE_NUMBER>.373 ERROR    lxc_cgmanager - cgmanager.c:cgm_setup_limits:1378 - call to cgmanager_set_value_sync failed: invalid request       lxc-start<PHONE_NUMBER>.373 ERROR    lxc_cgmanager - cgmanager.c:cgm_setup_limits:1381 - Error setting cgroup memory:lxc/redis limit type memory.memsw.limit_in_bytes       lxc-start<PHONE_NUMBER>.373 ERROR    lxc_start - start.c:lxc_spawn:952 - failed to setup the cgroup limits for 'redis'       lxc-start<PHONE_NUMBER>.382 ERROR    lxc_start - start.c:__lxc_start:1121 - failed to spawn 'redis'       lxc-start<PHONE_NUMBER>.389 ERROR    lxc_start_ui - lxc_start.c:main:341 - The container failed to start.       lxc-start<PHONE_NUMBER>.389 ERROR    lxc_start_ui - lxc_start.c:main:343 - To get more details, run the container in foreground mode.       lxc-start<PHONE_NUMBER>.389 ERROR    lxc_start_ui - lxc_start.c:main:345 - Additional information can be obtained by setting the --logfile and --logpriority options.

vagrant@vagrant-ubuntu-trusty-64:~$ sudo cat /var/lib/lxc/fedx/config
lxc.include = /usr/share/lxc/config/fedora.common.conf
lxc.arch = x86_64
lxc.rootfs = /var/lib/lxc/fedx/rootfs
lxc.utsname = fedx
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = lxcbr0
lxc.network.hwaddr = 00:16:3e:05:79:5d
lxc.cgroup.memory.limit_in_bytes = 128M
lxc.start.auto = 0
lxc.loglevel = 0

I test it on my vagrant machine running lwp then changing memory from 128M to 256M seems working good. Probably something on your setup did you install using apt-get? My install  is from source. How about the lxc versions used?

vagrant@vagrant-ubuntu-trusty-64:~$ sudo cat /var/lib/lxc/fedx/config
lxc.include = /usr/share/lxc/config/fedora.common.conf
lxc.arch = x86_64
lxc.rootfs = /var/lib/lxc/fedx/rootfs
lxc.utsname = fedx
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = lxcbr0
lxc.network.hwaddr = 00:16:3e:05:79:5d
lxc.cgroup.memory.limit_in_bytes = 256M
lxc.start.auto = 0
lxc.loglevel = 0

I notice, that is only the swap memory giving the error.
LXC: 1.0.8
Yep i did install with apt-get.


Tensor shape mismatch on "space" trained models - test_neural_texture.py

Hi,
Whenever I run the script "test_neural_texture.py", it fails on trained_models that has the term "space" in the filename (such as  ../trained_models/neural_texture/version_468753_neuraltexture_rust_paint_2d_space/). Thus, I had to remove those directories from the trained_model directory to completely run the script. I believe these "space" models synthesize textures that encode style statistics from multiple input images.
Log output
Use pytorch 1.4.0
Load config: ../trained_models/neural_texture/version_468753_neuraltexture_rust_paint_2d_space/logs/config.txt
INFO:lightning:GPU available: True, used: True
INFO:lightning:CUDA_VISIBLE_DEVICES: [0]
checkpoint loaded ../trained_models/neural_texture/version_468753_neuraltexture_rust_paint_2d_space/checkpoints/neural_texture_ckpt_epoch_1.ckpt
[PATH TO CONDA ENV]/lib/python3.8/site-packages/pytorch_lightning/utilities/distributed.py:23: UserWarning: Checkpoint directory ../trained_models/neural_texture/version_468753_neuraltexture_rust_paint_2d_space/checkpoints exists and is not empty with save_top_k != 0.All files in this directory will be deleted when a checkpoint is saved!
  warnings.warn(*args, **kwargs)
Testing:  33%|████████████                        | 1/3 [00:01<00:02,  1.49s/it]Traceback (most recent call last):
  File "[PROJECT ROOT]/code/systems/s_neural_texture.py", line 261, in test_step
    image_out_inter = self.forward(z_texture_interpolated, position, seed)
  File "[PROJECT ROOT]/code/systems/s_neural_texture.py", line 66, in forward
    transform_coeff, z_encoding = torch.split(weights, [self.p.texture.t, self.p.texture.e], dim=1)
  File "[PATH TO CONDA ENV]/lib/python3.8/site-packages/torch/functional.py", line 77, in split
    return tensor.split(split_size_or_sections, dim)
  File "[PATH TO CONDA ENV]/lib/python3.8/site-packages/torch/tensor.py", line 377, in split
    return super(Tensor, self).split_with_sizes(split_size, dim)
RuntimeError: start (32) + length (64) exceeds dimension size (94).

I wonder what I should do to overcome this issue.
P.S.: I am using the pre-trained models and test images provided by you. No train images are placed.

Sorry, this looks like a duplicate of #1.
I have implemented the solution suggested in #1 and sent a new pull request #4.


[k8s/argo support] Add tunables for TTL behavior of kubernetes jobs and argo workflows

Two new config vars to control k8s job (METAFLOW_KUBERNETES_JOB_TTL_SECONDS_AFTER_FINISHED) or workflow (METAFLOW_ARGO_WORKFLOWS_TTL_STRATEGY)TTLs.  If unset, default behavior matches current.

Thank you so much for doing this!

@jackie-ob - it would be better to expose a TTL config key and apply it to all GC'able objects rather than treat these separately.

This means we would be trading off simplicity of a single "k8s gc config", vs having full control over Argo Workflows behavior, right?  Argo Workflows supports much more detailed GC configuration.  We are saying we will expose a lowest common denominator, right?  It would be METAFLOW_KUBERNETES_OBJECTS_TTL_SECONDS.
For Kubernetes it maps directly, but for Argo Workflows, we would have to give up disambiguation between successful workflows vs failed workflows.

@savingoyal I want to give a little bump on this
We had a job fail because of name collisions. In k8s we had accumulated ~3000 jobs
2023-05-01 16:32:20.968 [992/eval/10860 (pid 792139)] Task is starting.
2023-05-01 16:32:23.113 [992/eval/10860 (pid 792139)] Traceback (most recent call last):
2023-05-01 16:32:23.197 [992/eval/10860 (pid 792139)] File "/opt/envs/shared/ds/lib/python3.10/site-packages/metaflow/plugins/kubernetes/kubernetes_cli.py", line 197, in
 step
2023-05-01 16:32:23.197 [992/eval/10860 (pid 792139)] kubernetes.launch_job(
2023-05-01 16:32:23.198 [992/eval/10860 (pid 792139)] File "/opt/envs/shared/ds/lib/python3.10/site-packages/metaflow/plugins/kubernetes/kubernetes.py", line 128, in lau
nch_job
2023-05-01 16:32:23.198 [992/eval/10860 (pid 792139)] self._job = self.create_job(**kwargs).execute()
2023-05-01 16:32:23.198 [992/eval/10860 (pid 792139)] File "/opt/envs/shared/ds/lib/python3.10/site-packages/metaflow/plugins/kubernetes/kubernetes_job.py", line 215, in
 execute
2023-05-01 16:32:23.198 [992/eval/10860 (pid 792139)] raise KubernetesJobException(
2023-05-01 16:32:23.198 [992/eval/10860 (pid 792139)] metaflow.plugins.kubernetes.kubernetes_job.KubernetesJobException: Unable to launch Kubernetes job.
2023-05-01 16:32:23.198 [992/eval/10860 (pid 792139)] jobs.batch "t-d5jts" already exists, the server was not able to generate a unique name for the object
2023-05-01 16:32:23.245 [992/eval/10860 (pid 792139)] Task failed.
2023-05-01 16:32:23.396 This failed task will not be retried.

Because of the way that the job failed, despite having the @retry decorator the job didn't retry

@tylerpotts would it be helpful to have a shorter TTL which is kubernetes wide at the cluster level instead? That will ensure that all pods are accounted for with a short TTL and not just jobs launched through a specific version of Metaflow.

We can close out this PR and create a new one that only takes care of pod-level TTLs for a variety of objects (k8s jobs, workflow executions, sensor pods etc.)


[WIP] Implement RawArray::getitem with tests.

This is so that we can do tests purely on the C++ side, avoiding the time required to link the Python module (dominates compilation time).

Will come back to this. ListArray is first.


Add support for missing $HOME

Move failures to call time rather than BaseDirectories creation.
This means, for instance, that create_config_directory() can work if XDG_CONFIG_HOME is defined even if HOME isn't.
This also means that methods like find_data_file() and find_config_file() will work without a home directory, which can be useful for software that wants to support both use by regular users and use by system accounts without
HOME.
I tried to write a test case, but std::env::home_dir() will figure out the home dir even if HOME is unset, which makes meaningful testing quite difficult.

This PR is should resolve #47.

Do you think you could also handle #44? Given we aren't really checking much in the constructor now.

Do you think you could also handle #44? Given we aren't really checking much in the constructor now.

Sure. I'll get a PR together sometime this weekend.
I think this change would let me add the test case I was missing for the this PR!


QUARKS-227 disable MqttOpenTest.testSsl()

Made it past MqttOpenTest only to encounter an Iot test failure [QUARKS-228]
Merging this one.


Feature to add our own boilerplate to frontend

Allow user to add boilerplates on frontend

[ ] Make form
[ ] Create frontend method to submit to backend
[ ] Put that component somewhere that makes sense


model_json_schema() generates an unexpected leading space in title when using a serialization_alias with a _ prefix

Initial Checks

[X] I confirm that I'm using Pydantic V2

Description
When generating model_schema()  with a serialization alias the automatic title is getting an unexpected leading space. I would expect either the _ to be present or else to be stripped rather than replaced with a space.
Example Code
from pydantic import BaseModel, Field

class MyModel(BaseModel):
    private_field: int = Field(alias='_private_field', serialization_alias='_private_field')

MyModel.model_json_schema()

Outputs:
{'properties': {'_private_field': {'title': ' Private Field',
   'type': 'integer'}},
 'required': ['_private_field'],
 'title': 'MyModel',
 'type': 'object'}

The title is 'title': ' Private Field', but would have expected 'title': 'Private Field',
The title has an unexpected leading space.
Python, Pydantic & OS Version
pydantic version: 2.8.2
        pydantic-core version: 2.20.1
          pydantic-core build: profile=release pgo=true
                 install path: /home/eugene/.pyenv/versions/3.11.4/envs/core/lib/python3.11/site-packages/pydantic
               python version: 3.11.4 (main, Sep 25 2023, 10:06:23) [GCC 11.4.0]
                     platform: Linux-6.8.0-40-generic-x86_64-with-glibc2.35
             related packages: typing_extensions-4.12.2 mypy-1.10.0 fastapi-0.112.0
                       commit: unknown

Hi @eyurtsev,
Thanks for bringing this to our attention! I've opened a PR with a fix 👍


Changed -Member to -Members

fixed suggested parameter issue.

This one can be merged.

Closes #364


Error when using flatten, Could not find page for PDFRef

I'm currently trying to figure out what is going on.
I fill a form from my PDF and then I need to use flatten in order to "save" the values and then download said PDF.
At the moment of using flatten there is an Unhandled Rejection, as follows
Unhandled Rejection (Error): Could not find page for PDFRef 439 0 R
which I understand means that once the field is flatten, the library will delete the field and uses the ref value of the field in order to do this, in this case, it looks for a field with a ref value of "439 0 R" but it does not exist, so I looked around to see what was said problem, using the following code
const fields = form.getFields()
fields.forEach(field => {
    const type = field.constructor.name
    const name = field.getName()
    const ref = field.ref
    const acroField = field.acroField
    console.log(`${type}: ${name} - ${ref}`)
  })

and found out that the ref values only go around 200-ish, about the same number of fields from the PDF.
PDFCheckBox: cb_1_1_a - 11 0 R
PDFCheckBox: cb_1_1_b - 12 0 R
PDFCheckBox: cb_1_1_c - 13 0 R
PDFCheckBox: cb_1_1_d - 14 0 R
PDFCheckBox: cb_1_1_e - 15 0 R
PDFCheckBox: cb_1_1_f - 16 0 R
PDFCheckBox: cb_1_1_g - 17 0 R

[...]

PDFCheckBox: cb_52_4_s - 208 0 R
PDFCheckBox: cb_52_4_n - 209 0 R
PDFTextField: tb_53_1 - 210 0 R
PDFTextField: tb_53_2 - 211 0 R
PDFTextField: tb_53_3 - 212 0 R
PDFTextField: tb_53_4 - 213 0 R
PDFTextField: tb_53_5 - 214 0 R
PDFCheckBox: cb_1_8_b - 215 0 R
PDFCheckBox: cb_1_8_c - 216 0 R

the field "cb_1_8_c " is the last field of the form and has a ref value of "216 0 R"
So, I have no idea what is happening, what is causing the function flatten to use a ref value of "439 0 R" when none of the current fields have such.
The PDF I'm using was a flat document that I later add field forms using online tools.

Hello @neoygdrassyl! I'll need more information to be of any assistance on this. Please fill out the new bug report form and we can continue from there.

I encounter a similar issue recently.  We created a PDF from a Word document and then added fields using Wondershare's PDF Element software.  When I try to flatten the form (which is multipage) I get:
Uncaught (in promise) Error: Could not find page for PDFRef 1188 0 R
    findWidgetPage PDFForm.js:592
    flatten PDFForm.js:456
    Flatten regform:181
    async* regform:186
    jQuery 8
    <anonymous> regform:156
<EMAIL_ADDRESS>
I haven't had trouble with the same code for other pages that we created, although those are all single page forms.

https://github.com/Hopding/pdf-lib/issues/1281


[k8s-extension] Fix Identity Within the Property Bag

This checklist is used to make sure that common guidelines for a pull request are followed.

For new extensions:

[ ] My extension description/summary conforms to the Extension Summary Guidelines.

About Extension Publish
There is a pipeline to automatically build, upload and publish extension wheels.
Once your PR is merged into master branch, a new PR will be created to update src/index.json automatically.
The precondition is to put your code inside this repo and upgrade the version in the PR but do not modify src/index.json.

k8s-extension


Add required -f flag in device add command

'device add' command looks like this:
./edgex-cli device add --file /path/createDevice.toml
Flag --file/-f is required
Changed imports ordering, used: goimports, gofmt
Fixes: https://github.com/edgexfoundry-holding/edgex-cli/issues/143
Signed-off-by: Diana Atanasova<EMAIL_ADDRESS>

Believe this would also address #131


Experiment - DeprecatePythonPath

How am I supposed to set the pythonPath now, on a repository basis? Do you expect us to manually specify the python path on every machine now? If so, why would this backward step be made?

Please have a look at the wiki for more details on why such a step was made. We'll get back to you soon.

I did read through that article before posting here @karrtikr. However, I could not find a replacement for the repo-level configuration of this setting.

@yspreen You're right. The interpreter path setting now cannot be commited to a repository, as it's now stored in a VSCode storage.
I pointed you to the wiki as you asked for the reason we had to remove interpreter path from settings. One of them was this: https://github.com/microsoft/vscode-python/issues/7805. Which basically meant we cannot have the setting value stored inside the workspace folder for security reasons.
You're welcome to suggest us your ideas regarding any other solution you may think of.


Job view not updating with new jobs whilst server is running

Description
When:

The dash board server is running
and
You navigate to the jobs view
and
Add a new job to the signac project

This new job fails to appear in the jobs view. Refresh dopes not help.
The new job does, however, appear in the project view after refresh. But no change when navigating back to the jobs view
You can restart the server and all jobs will appear.
Interestingly if you start the dashboard server. Stay on the Project pages and then add jobs and then refresh to see new jobs and then navigate to the jobs view all jobs appear. However, once you have navigated to the jobs page any new jobs that are added will not appear on the jobs page.
To reproduce
dashboard.py
To run the dashboard, execute the following command in the terminal:
$ python dashboard.py run
from signac_dashboard import Dashboard
from signac_dashboard.modules import DocumentEditor, DocumentList, FileList, ImageViewer, Schema, StatepointList
modules = [
StatepointList(),
DocumentList(context="JobContext"),
DocumentList(context="ProjectContext"),
ImageViewer(context="JobContext"),
ImageViewer(context="ProjectContext"),
FileList(),
DocumentEditor(context="JobContext"),
]
class MyDashboard(Dashboard):
def job_title(self, job):
return "Device: {}, Date: {}".format(job.sp["device_id"], job.sp["job_creation"])
if name == "main":
MyDashboard(modules=modules).main()
Error output
No error. Just not the required operation
System configuration
Please complete the following information:

Operating System: Windows 11
Version of Python]: 3.11.9
Version of signac-dashboard Version: 0.6.1

Hi @bennthomsen, thanks for filing an issue. For performance reasons, projects are cached. You can update the cache by calling this method: https://docs.signac.io/projects/dashboard/en/latest/api.html#signac_dashboard.Dashboard.update_cache


Prevent project deletion while uploading

half fixed, you cannot delete any projects while there is an upload happening.


Bring ManimCommunity/shaders up-to-date with 3b1b/shaders

While we've been cracking down on master, 3b1b has committed to the shaders branch.
This is to bring our shaders branch up-to-date with his.
Also... some of the changes he made elsewhere, like commit 38cc0a7, 51eb9de and some others feel like we could also use them in master.

This seems to bring back some of the 3b1b files, can you remove them?

This seems to bring back some of the 3b1b files, can you remove them?

@safinsingh I won't be able to remove them in this PR, since it's directly from 3b1b/shaders.
I can remove them after this is merged and I'll probably make a new PR for that after this gets merged (if it does get merged in the first place).

What's the point of working with the shaders branch at all? Most of the changes there aren't relevant to our plan at all.

I think we want ManimCommunity to support shaders, yes? If so, we have to decide whether the best way of doing that is by pulling from 3b1bManim. And even in that case, merging 3b1b's branches to our repo is not going to be trivial.

Why would we want Manim CE to support shaders? The only reason 3b1b is doing it is to get GPU acceleration, but we're planning to use OpenGL (and others) in the same way Cairo is used, without shaders

Ah, good point. Actually I don't know anything about graphics so I'll follow your lead there.

Pinging @eulertour for his input on this

I don't think it's necessary. It won't be supported and will probably never be merged to master, so it'd probably be better to just use the upstream shaders branch if you wanted to.

Alright then. So, if we won't be working on the shaders branch at all, can we delete it? Just for the sake of cleanliness?

Yes please.


Remove cq:lastRolledout* attributes on sync

These attributes are added to Live Copy pages on every Rollout. We don't
want to keep them in the project repository after running `sync' task.

You are aware that even now you could adjust that value in your buildscript and you don't need to wait for next release?


Update CommunityProjects.md

Adding Decodable mapping community extension to the readme

Codecov Report

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

@@          Coverage Diff           @@
##           master   #1310   +/-   ##
======================================
  Coverage      83%     83%
======================================
  Files          24      24
  Lines         753     753
======================================
  Hits          625     625
  Misses        128     128

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 1eb1810...5d3f306. Read the comment docs.

Thanks a lot for contributing to Moya! I've invited you to join the Moya GitHub organization – no pressure to accept! If you'd like more information on what that means, check out our contributor guidelines and feel free to reach out with any questions.


Invalid reference?

This example: http://hl7.org/fhir/us/core/2021Jan/MedicationRequest-uscore-mo2.json
has a contained instance of a medication med2.  This line in the generated FSH looks wrong:
* medicationReference.reference = "#med2"

because it has an extra # sign. Clearly this is not a code. Is this a bug?

That's technically correct because FHIR references contained resources as fragments, using #.  This matches what's in the source you linked to:
  "medicationReference": {
    "reference": "#med2",
    "display": "Nizatidine 15 MG/ML Oral Solution [Axid]"
  }

If it were a code, it would not be wrapped in "" (e.g., "#med2" vs #med2).
That said, I think a best practice FSH representation would be:
* medicationReference = Reference(med2) "Nizatidine 15 MG/ML Oral Solution [Axid]"

But what GoFSH did is not wrong.

Actually, I found that if I ran GoFSH on the linked JSON and specified US Core as a dependency when running GoFSH, it did result in a real bug:
* medicationReference = Reference(#med2) "Nizatidine 15 MG/ML Oral Solution [Axid]"

Not sure why the US Core dependency made a difference (I guess something resolved that didn't resolve before).  While the above is closer to the best practice approach, in this case #med2 is not wrapped in "", so it is a bug.  It needs to either be Reference("#med2") or Reference(med2), but definitely NOT Reference(#med2).

That's correct, Chris. The bug is Reference(#med2) as you say. Sorry for the inaccuracy in the original report.


[E2E] Add ParseEvent function

Closes: #5601
What is the purpose of the change
Create a helper ParseEvent function to minimize duplication.
Testing and Verifying
This change is already covered by existing tests.
Documentation and Release Note

[ ] Does this pull request introduce a new feature or user-facing behavior changes?
[ ] Changelog entry added to Unreleased section of CHANGELOG.md?

Where is the change documented?

[ ] Specification (x/{module}/README.md)
[ ] Osmosis documentation site
[ ] Code comments?
[ ] N/A

@ThanhNhann I tried to looking for some parse event function but I can only find out GetPositionId which is need to get the events. Do you think is helper function is helpful?

Refer to discuss link, so we will have some parse event functions like GetPositionID @phamminh0811


[TF, tmt context] there's no epel distro, but centos

https://github.com/packit/packit-service/pull/1008#issuecomment-789574614

Thanks, looks good, looking forward... :)

:rocket:

The epel/centos mapping now works as expected. Thanks for the quick fix!


關於minicar和minibot選擇，以及通訊問題。

你好，林老師。我想請教，minicar比minibot的功能多一些，這些功能也能夠在minibot上實現嗎。
另外小車的在線建圖功能是在PC上演示，樹莓派或Odroid是作為中間通訊媒介嗎。

Sorry for the late reply (I just moved to another country ~)
About your question, conceptually, the purpose of minicar and minibot are different.
The main target of minibot is to create the lowest platform for lidar based moving platform.
In contrast, minicar is to demonstrate different control algorithms (like pure-pursuit and MPC)
So, for the minibot, it is quite hard for this platform to adopt the algorithms presented on minicar
(the computing resource of Pi3 is too low to handle optimization solving processing)
For the mapping demo, in both minicar and minibot are running onboard.
However, we also recommend people to use rosbag and do the mapping offline to get better result!

thank you


chore(deps): update common-dev-assets digest to 3007184

This PR contains the following updates:

Package
Update
Change

common-dev-assets
digest
926911b -> 3007184

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.

[ ] If you want to rebase/retry this PR, click this checkbox.

This PR has been generated by Renovate Bot.

:tada: This PR is included in version 5.3.2 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Change display and translations structure for criteria and concepts

the translation structure should be change to allow for distinguishing between original display values and translations by language.
This should be changed for the criteria search and the concept search alike.
For the ontology index (criteria search) the display replaces the attribute "name".
{
    "availability": 0,
    "terminology": "http://loinc.org",
    "termcode": "74620-6",
    "selectable": true,
    "context": {
        "system": "fdpg.mii.cds",
        "code": "Laboruntersuchung",
        "display": "Laboruntersuchung",
        "version": "1.0.0"
    },
    "termcodes": [
        {
            "system": "http://loinc.org",
            "code": "74620-6",
            "display": "1,1-Dimethoxy-(9Z)octadecene (DMA 18:1)/Oleate (C18:1w9) [Mass Ratio] in Fibroblast",
            "version": "2.77"
        }
    ],
    "display": {
        "original": "1,1-Dimethoxy-(9Z)octadecene (DMA 18:1)/Oleate (C18:1w9) [Mass Ratio] in Fibroblast",
        "translations": [
            {
                "language": "en-US",
                "value": "1,1-Dimethoxy-(9Z)octadecene (DMA 18:1)/Oleate (C18:1w9) [Mass Ratio] in Fibroblast"
            },
            {
                "language": "de-DE",
                "value": "1,1-Dimethoxy-(9Z)octadecene (DMA 18:1)/Oleate (C18:1w9) [Masse Verhältnis] in Fibroblast"
            }
        ]
    },
    "criteria_sets": [],
    "translations": [],
    "parents": [],
    "children": [],
    "related_terms": [],
    "kds_module": "Labor"
}

{
    "termcode": {
        "code": "0200",
        "display": "Geriatrie",
        "system": "http://fhir.de/CodeSystem/dkgev/Fachabteilungsschluessel",
        "version": 2099
    },
    "value_sets": [
        "http://fhir.de/ValueSet/dkgev/Fachabteilungsschluessel"
    ],
    "display": {
        "original": "Geriatrie",
        "translations": [
            {
                "language": "en-US",
                "value": "Geriatrix"
            },
            {
                "language": "de-DE",
                "value": "Geriatrie"
            }
        ]
    }
}

The old "translations" array from ontology should be removed I guess

After a quick discussion we decided to slightly change the format (the internal one for elastic search) so we do not use an array for translations. Since this would introduce a need for nested field type, which brings some restrictions, for which I honestly can't estimate if it will be a bigger deal in the future. So for now we will keep it simple.

"display": {
            "original": "MII PR Medikation MedicationRequest",
            "translations": [
              {
                "language": "de-DE",
                "value": ""
              },
              {
                "language": "en-US",
                "value": "MII PR Medikation MedicationRequest"
              }
            ]
          }

I made some slight changes to the previous messages.
"en-US" should just be "en" and "de-DE" should just be "de"


CI: add job for kata-clh runtimeclass

We should use the same non-TEE tests as in the kata-qemu jobs.

I also found some other errors, will give more updates after debugging

Hi @wainersm kata-clh-tdx runtime tests cases passed on my machine with some changes, I found the root cause for other runtime failed to work is due to we update the default kata config file instead of the RUNTIMECLASS kata config file in tests scripts.
After operator is installed, the default runtime will be kata-qemu and /opt/confidential-containers/share/defaults/kata-containers/configuration.toml will link to /opt/confidential-containers/share/defaults/kata-containers/configuration-qemu.toml with RUNTIMECLASS environment, test workload can launch with the right runtime, but the tests scripts will use kata-runtime kata-env to update the config for testing like update kernel param for agent config and copy signature/decrypt keys to the righ rootfs image.  Then the set_kata_config in your previous PR is still needed for our CI testing:
https://github.com/confidential-containers/operator/commit/5c3ed60663383c1fba6849cebed0581f7f0baf8f
or we can use sed to update the config in tests scripts like:
sed -i "s#kata-runtime kata-env#kata-runtime --config $runtime_config_file kata-env#g" ../../../lib/common.bash

BTW, @stevenhorsman @wainersm during the testing for operator CI, I also found the ssh_demo_pod case in agent_image_encrypted.bats may failed duo to:
ssh-keyscan ${pod_ip_address} 2>/dev/null is null, the pod may be ready but ssh service is not ready yet, I added a sleep in this PR, please review: https://github.com/kata-containers/tests/pull/5145


Refactor the package

This PR introduces plenty of changes:

Refactors the TaxNumber VO to make it better maintainable for future updates.
Raises the required version of PHP to 8.0, as the class itself uses the PHP 8.0 features already, so it makes no sense to allow the users to install it through Composer.
Raises PHPStan level to max to prevent potential code quality issues in the future.
Adds the test suite for Laravel 9.
Updates ReadMe.md.

Thanks


Should we add the %prompt-generator% built-in role?

A %prompt-generator%  role helps us easily create a prompt/role.
Here’s the candidate prompt content for the role.
As a professional Prompt Engineer, your role is to create effective and innovative prompts for interacting with AI models. Your core skills include:

1. **CO-STAR Framework Application**: Utilize the CO-STAR framework to build efficient prompts, ensuring effective communication with large language models.
2. **Contextual Awareness**: Construct prompts that adapt to complex conversation contexts, ensuring relevant and coherent responses.
3. **Chain-of-Thought Prompting**: Create prompts that elicit AI models to demonstrate their reasoning process, enhancing the transparency and accuracy of answers.
4. **Zero-shot Learning**: Design prompts that enable AI models to perform specific tasks without requiring examples, reducing dependence on training data.
5. **Few-shot Learning**: Guide AI models to quickly learn and execute new tasks through a few examples.

Your output format should include:
- **Context**: Provide comprehensive background information for the task to ensure the AI understands the specific scenario and offers relevant feedback.
- **Objective**: Clearly define the task objective, guiding the AI to focus on achieving specific goals.
- **Style**: Specify writing styles according to requirements, such as imitating a particular person or industry expert.
- **Tone**: Set an appropriate emotional tone to ensure the AI's response aligns with the expected emotional context.
- **Audience**: Tailor AI responses for a specific audience, ensuring content appropriateness and ease of understanding.
- **Response**: Specify output formats for easy execution of downstream tasks, such as lists, JSON, or professional reports.
- **Workflow**: Instruct the AI on how to step-by-step complete tasks, clarifying inputs, outputs, and specific actions for each step.
- **Examples**: Show a case of input and output that fits the scenario.

Your workflow should be:
1. **Analyze User Input**: Extract key information from user requests to determine design objectives.
2. **Conceive New Prompts**: Based on user needs, create prompts that meet requirements, with each part being professional and detailed.
3. **Markdown Syntax Output**: Use Markdown syntax and code block format to output the newly generated and optimized prompts.

Questions:

Is it necessary to add this built-in role?
Is there a better name than %prompt-generator%?
How can the prompt be optimized further?

Any suggestions or feedback is helpful.

I feel this is definitely helpful, but the name can be more succinct. For example %prompter% should be sufficient, this is consistent with other succinct Builtin names, like %shell% %code%

I really like the candidate prompt. A final workflow item could make it clear whether further user inputs are considered refinements. By default, no context would be given back (as they would not be in a session)
Wrote this comment out a few times as a draft - .prompt generate could be an option.
If it is a builtin I assume the user process would be:
1. .role prompt_generator
2. User Input eg "Help me learn Spanish"
3. Output would be the generated prompt
4. User would need to copy the output?
5. .role teach_spanish
6. .prompt *paste from clipboard*
7. .save role
I feel like this could be optimised by something like .prompt generate which appears to follow logic of REPL

.prompt generate
User Input eg "Help me learn Spanish"
Output would be the generated prompt
Interactive "Use in temporary session (Enter) / Discard(n) / Respond to Prompt to refine(input+Enter)
.save role

@milanglacier
%prompter% looks good, If there are no better options, then We will choose it.
@fn5
The minimal steps to create a role are as follows:
> .role %prompter% <help me ...>
> .copy
> .prompt *paste from clipboard*
... Test and Improve...
> .save role

It's not as complicated as you think. The .prompt is related to --prompt and cannot be assigned any other meaning.

Do we need the "er"? What about just %prompt%? That seems more in line with the current built-in roles.

@justinlovinger
The role does not prompt something; it generates prompt, so %prompt% is inappropriate.

@justinlovinger
The role does not prompt something; it generates prompt, so %prompt% is inappropriate.

I was thinking in terms of, "The %shell% role generates commands for a shell, the %code% role generates code, and the %prompt% role generates prompts".
None of the built-in roles are actually phrased in terms of a role. %shell% and %code% describe what they produce, %explain-code% describes an action, and %functions% describes what it uses.

To settle the dispute regarding the name, we am prepared to use %create-prompt%. we recommend adopting a verb-noun format for role names.

Sorry for being late to the game.
+1 for verb-noun
One thing to consider is 'noun-verb'. The reason is that all nouns would appear together if you were to list commands alphabetically.
Example:
prompt-create
prompt-deploy
prompt-remove
role-create
role-deploy
role-remove


Register test.is-app.tech

Added test.is-app.tech using the CLI.

I have read the CLA Document and I hereby sign the CLA


pgadmin: fix authlib requirement

Description of changes
Due to an update of Authlib the requirements file needed to be adapted. All tests still pass with the new version.
Fixes #183861
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

sure. Done

Can we use sed to or substitute to replace all == with >=? Maintaining that list is not great.

good idea. Done :+1:

@ofborg build pgadmin4


Move objc TvTests to bazel

Move objC TvTests to bazel. It needs to be done as "build-only" test, since bazel currently doesn't support running tvos_unit_test targets (so instead we introduce a test that "tests" that TvTests target was built successfully).

not sure what the issue with TvTests is, the logs aren't very telling:
https://source.cloud.google.com/results/invocations/584088f7-de0b-4179-970a-c7b33e338d0e/targets/%2F%2Fsrc%2Fobjective-c%2Ftests:TvTests/log

@dennycd  looks like the documentation says: https://github.com/bazelbuild/rules_apple/blob/master/doc/rules-tvos.md#tvos_unit_test "Note: tvOS unit tests are not currently supported in the default test runner." - any idea how to work around this and still run tvos tests under bazel?

@dennycd looks like the documentation says: https://github.com/bazelbuild/rules_apple/blob/master/doc/rules-tvos.md#tvos_unit_test "Note: tvOS unit tests are not currently supported in the default test runner." - any idea how to work around this and still run tvos tests under bazel?

Let me check this locally. The bazel notes is referring to using test_runner context. But i think we are supplying our own test host instead (https://github.com/grpc/grpc/blob/343cb0ecb97c09daf18d0cf873fd239ddf4c36f7/src/objective-c/tests/BUILD#L226)
Also see their test script which actually tested both scenarios

https://github.com/bazelbuild/rules_apple/blob/master/test/tvos_unit_test_test.sh

https://github.com/grpc/grpc-ios/issues/76

@dennycd  @HannahShiSFB  I would be grafeful if one of you contributed the finishing touches so that the TvTests pass (I'm not familiar with the details of iOS/TvOS testing so it's hard for me figure out what exactly is needed here).

TvOS test runner is not implemented in bazel
https://github.com/bazelbuild/rules_apple/blob/master/apple/testing/default_runner/tvos_test_runner.template.sh
WatchOS runner as well.

TvOS test runner is not implemented in bazel
https://github.com/bazelbuild/rules_apple/blob/master/apple/testing/default_runner/tvos_test_runner.template.sh
WatchOS runner as well.

Alright, that's unfortunate.
@dennycd  What should be our next steps then? Currently the TvOS test job is terribly flaky on the CI, and the errors it produces are hard understand / debug by humans since the jobs produces huge amount not very comprehensible logs, so IMHO the TvOS test suite is basically useless the way it is.

note that in bazel we could use tvos_build_test which doesn't really run the tests, but at least tests that they build correctly.
is running TvOS tests continuously on the CI a requirement?

Thanks Jan. We may want to keep tvOS & watchOS test on cocoapod until we can find a viable alternative in bazel. For now those tests are relatively low value since the run the same set of test suite as our iOS/MacOS test, but w/ a different build context.  lgtm to reduce them to build test only or avoid running continuously on CI.

@dennycd  PTAL. I also updated the PR description.

I will merge once the repo is open again.


Reformat CSS (Hopefully doesn't break anything this time)

I may have missed some, which is why I ask. Since everything goes in alphabetical order its hard to tell if its the same. Cheers

Some changes made. Some of your requests were unclear, please clarify.

Hi. Sorry about that, for some reason github wasnt showing the diff for the new code which is why all my comments make no sense. Ill take a look now and see.

Current version appers to be valid. Merging.


Suggestion: new method for sending synchronous messages from main to renderer process

Is it possible to implement something like webContents.sendSync method to send synchronous messages from main process to renderer process?

It is extremely easy to cause a dead lock if we add webContents.sendSync, so we won't add it.


Update google-maps dependency to version 5.x

I'm trying to upgrade the GoogleMaps Podfile dependency to version 5.x but it keeps telling me that react-native-maps depends on version 3.5. Is there any way to upgrade the dependency?

Seems to be done in https://github.com/react-native-maps/react-native-maps/releases/tag/v0.30.0 (See: https://github.com/react-native-maps/react-native-maps/pull/3973)

I'm not really sure myself what releases gets picked out as being pre-releases, and thus not released on npmjs.com. Maybe @christopherdro can shed some light on this?

I think this needs to be bumped even further, to 6.0 to be compatible with M1 macs.

@hesan-aminiloo Can you please try testing from the master branch? Probably we can close this issue if all is good


Why indexing is not supported ?

It would be cool to access a Tensor using the [] operator. I believe that porting all the features it has in python might be not possible, but I think that just using it as a stub for .i() method would suffice, at user level.

I believe its because Rust's rules for indexing require that you return a reference, as shown here. The tch crate provides a wrapper for pytorch functions, where indexing a tensor returns a tensor. So basically pytorch functionality is incompatible with rust syntax.
HERE is where I've tried to implement it. You could try to re-implement all of the indexing functions to return a reference instead, but this would still be incompatible with any pytorch code.
The other approach would probably be to use a proc-macro to parse all the user code for "Tensor[[*TensorIterator,]]" (or however you write macros) and replace it with the equivalent tensor.i(TensorIndexer) funtion calls.


Onclick feedback when the user clicks to copy the payment request

@reznord how can this code be implemented nicer? :)

This is much cleaner and easier without a lot of noise as well.


  Does it still occur if you use any of the other providers?

I was using Google, I just tried Twitter and Facebook and they both do the
same thing.
Let me know if there is any other info you need to help
On Apr 3, 2017 12:19 AM, "Geordan Rosario"<EMAIL_ADDRESS>wrote:

Which OAuth provider (Google, Facebook, or Twitter) were you using? Does
it still occur if you use any of the other providers?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/geordanr/xwing/issues/431#issuecomment-291045554, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AA-dnMZe7pM7leZOcIC_ovRsVckVXpRtks5rsHNogaJpZM4Mw8Zo
.

@squaredt @apoupada what browsers are you using?  Are you having problems saving squads also, or is it just collections?
Also please note what time (and time zone) you're having these problems; I'm trying to find errors in the logs, but I'm having trouble finding any errors associated with failed saves so having timestamps will help me figure out what's going on.

I'm using chrome. It's only my collection, the squad list is saved. Today at 2:20 EST. I added my ships and cards to my collection, after i closed the tab i came back 30 seconds later and it was gone. I think because there is no save button it might be causing the issue.

2:41 pm eastern time added B-wing expansion to my collection it appeared as
ships I own when adding to squad, then after refresh still at 2:41 pm
eastern time the B-wing expansion was no longer in my inventory and ship
was not shown as owned when adding to squad
Squads save perfectly
I am using chrome 56(most current) for Android 7.1.1 on a Google Pixel
device
On Apr 3, 2017 1:45 PM, "Geordan Rosario"<EMAIL_ADDRESS>wrote:

@squaredt https://github.com/squaredt @apoupada
https://github.com/apoupada what browsers are you using? Are you having
problems saving squads also, or is it just collections?
Also please note what time (and time zone) you're having these problems;
I'm trying to find errors in the logs, but I'm having trouble finding any
errors associated with failed saves so having timestamps will help me
figure out what's going on.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/geordanr/xwing/issues/431#issuecomment-291218624, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AA-dnNgw2m5CPyXzJJvkAXACcTAGFdlEks5rsTAggaJpZM4Mw8Zo
.

I have some idea of what's going on, but I won't have time to look into it until later tonight.
Are these new collections (i.e. no ships were in the collection previously), or was there data in the collection and now it won't update?
Also, when you change one of the values in the collection and wait a couple seconds, do you see a message by the "Close" button that says "Collection saved" or is there a different message?  Or is there no message at all?

New collection
No message
On Apr 3, 2017 5:04 PM, "Geordan Rosario"<EMAIL_ADDRESS>wrote:

I have some idea of what's going on, but I won't have time to look into it
until later tonight.
Are these new collections (i.e. no ships were in the collection
previously), or was there data in the collection and now it won't update?
Also, when you change one of the values in the collection and wait a
couple seconds, do you see a message by the "Close" button that says
"Collection saved" or is there a different message? Or is there no message
at all?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/geordanr/xwing/issues/431#issuecomment-291273467, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AA-dnDlxEj7W4mJZJFjC7uvLdQQzzJESks5rsV7KgaJpZM4Mw8Zo
.

Same happens to me in Safari and Chrome on Mac OS versions

Hi!
I'm using Chrome, with FB login.
Timestamp: CEST 01:45 2017-04-04
Squad saved perfectly.
No message at Close button.

Hi (extra info)
I'm using Chrome on Mac OS, with Google, FB or Twitter login.
Timestamp: 02:01 2017-04-04
Can't save collections

I believe I've found the issue but I'm not sure if I've fixed it.  I added some extra log output when failures occur, so please try again and I'll see if it generates more information for me to work with.

It seems to be working for me now, I even closed the page and waited 30 seconds and came back and it was there. Also after each time I added a new expansion or card the message "Collection Saved" appeared a second later, which it wasn't before. Thank you for fixing the issue, and thank you for this amazing tool! Makes creating lists so much easier.

Hi!
It seems that the probelm solved. Right now, I saw th "Collection Saved" text, and after a logut/login, the sets are visible.
Thanks for the fast help!

Is also fixed for me
Thanks
Great tool, keep up the good work : )
On Apr 3, 2017 9:00 PM, "Buddhha"<EMAIL_ADDRESS>wrote:

Hi!
It seems that the probelm solved. Right now, I saw th "Collection Saved"
text, and after a logut/login, the sets are visible.
Thanks for the fast help!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/geordanr/xwing/issues/431#issuecomment-291354345, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AA-dnP1FAu1c5bcDLuiqVHmuTh707tcwks5rsZYUgaJpZM4Mw8Zo
.

Fixed! Thank you for the great tool you have created :)

Fixed in 3a9ed576f1b9fccf86048bdbda11f5528523f567


2 player end game sequence

To add to the redundancy....
Different end screens based on outcome
Can start new single or double player game from end screen
Adjusted placement of scores and lives to make more visible
High Scores are added to correct section
Added high scores list for 2 player game
Styled buttons with CSS to remove Bootstrap
closes #92 closes #87 closes #86

Cool. There's a bug where the scores aren't reset if you move from one player to two player mode.

@erinnachen whoops. Solved.

@erinnachen There appears to be another bug where the high score isn't recorded after restarting the game from the end screen. Changing it back to WIP and will let you know when it's done

JK, it's fixed now.

YAY. let's get on battle mode.