@http directive

Feature Request
Let's use this ticket to track work for the @http directive. The goal of the @http directive is to make wiring up http resolvers and datasource as simple as possible.
Use cases

Easily make a http call from fields in your schema.graphql.
Be able to choose the http method per field.
Pass headers per field.
Control the payload of the request per field. Probably via the arguments but we should think about how to do general data transformations.
Response transformations? I see transformations as a general problem and it may be worth looking into if this is better solved by a dedicated set of directives. @map, @filter, @pluck, etc.

Definition
First thought for how to do this
# Place this directive on a field to add an http resolver.
# Note: The directive says nothing about the shape of the payload. We leave that to the user in the field definition
directive @http(
  url: String!,
  method: HttpMethod = GET,
) on FIELD_DEFINITION
enum HttpMethod {
  GET POST PUT DELETE
}

The directive says nothing about data sources. My current thought is to automatically detect and configure datasource's by looking at the urls passed to @http. If two @http fields pointed to two different paths of the same base url, this would have to be smart enough to make a single data source for that call. We could also look into making a data source per @http but ideally we would dedupe.
Usage
type Query {
  # You define whatever input you want.
  # Args will be sent as query params for GET or the body for POST, PUT
  hitMyApi(value: String): ApiResponse @http(url: "www.api.com/ping")

  # Automatically replace url params
  # If there is an argument of the same name as a param in the url string replace it automatically.
  # This makes many rest(ish) patterns easier to deal with.
  # In this example the body would be { content: "value passed to query" }
  updatePost(id: String, content: String): Post @http(method: PUT, url: "www.api.com/posts/:id")
}

The @http resolver has a lot of configuration options and every API works a little differently so lets try to keep it flexible while remaining simple to use.
Let me know what you think.

Quick update on the @http directive. I have been working on this for a week or so and wanted to share some implementation decisions and changes from the initial design discussion.
Definition
This is largely unchanged from the perspective of what the user sees.
# Place this directive on a field to add an http resolver.
# Note: The directive says nothing about the shape of the payload. We leave that to the user in the field definition
directive @http(
  url: String!,
  method: HttpMethod = GET,
) on FIELD_DEFINITION
enum HttpMethod {
  GET POST PUT DELETE
}

Usage
This is also mostly similar, with a few more specifics fleshed out.
type Query {
  # You define whatever input you want.
  # Args will be sent as query params for GET or the body for POST, PUT
  hitMyApi(value: String): ApiResponse @http(url: "www.api.com/ping")

  # Automatically replace url params
  # If there is an argument of the same name as a param in the url string replace it automatically.
  # This makes many rest(ish) patterns easier to deal with.
  # In this example the body would be { content: "value passed to query" }
  updatePost(id: String, content: String): Post @http(method: PUT, url: "www.api.com/posts/:id")
}

Important: If URL parameters are specified in the URL string, they must be provided as non-null arguments on the field. Otherwise, there would be no way to resolve the URL string. This is enforced in the transformer, and it throws an error if the URL parameters are not given.
Note: I am currently working on a way to make the usage syntax more flexible, to allow for situations like sending query parameters as well as a body for POST and PUT requests. At the moment, the transformer assumes all arguments (except those consumed as URL parameters) will be used as query parameters for GET, and all arguments (except those consumed as URL parameters) will be used as the body for POST and PUT requests.
Implementation

We default to a GET request unless the user specifies otherwise - PATCH will be added in the next few days as well, to ensure parity with the methods supported by the HTTP resolver in AppSync.
Data sources are created in an intelligent way, only creating one per unique base URL. For example, if an annotated schema contains @http directives that reference both http://myapi.com/ping and http://myapi.com/posts/1, the transformer will only create a single data source with http://myapi.com as the endpoint.
For now, the transformer enforces that the URL argument given to the directive begins with either http:// or https://, since AppSync will not create a data source without being given a protocol. In the future, we may support more protocols, but for now it will accept these.
Sets both content-type and accept-encoding to application/json, but forwards all other headers from the client (except those not allowed by the HTTP resolver).
The shape of the response sent by the API must be defined as a type in the annotated schema, since the body portion of the response is returned to AppSync as JSON.

Work is still ongoing, so feel free to chime in about this design so far.

Any news on this ref this announcement https://aws.amazon.com/about-aws/whats-new/2019/02/amplify-framework-adds-support-for-multiple-environments-custom-resolvers-larger-data-models-and-iam-roles-including-mfa/ ?

The recent announcement does not yet include the http directive, however, you can use custom resolvers to write your own resolvers that use custom HTTP data sources. To do so, you can include your own CloudFormation stacks in the stacks/ directory that implement your custom HTTP data sources & resolvers.

Ok maybe I'm just confused by this: https://github.com/aws-amplify/amplify-cli/releases/tag/graphql-http-transformer%403.0.6
Is there a way to use this directive even if it's not officially supported? Or would you not recommend it? If not, do you have a timeline for when it will be?

Any updates on this?

@testower:
to use graphql-http-transformer, which is not enabled yet, we need to do the following:

Update package.json in packages/amplify-provider-awscloudformation/package.json to include:
"graphql-http-transformer": "^3.4.1"

Add HTTPTransformer() to transformerList:

https://github.com/aws-amplify/amplify-cli/blob/25f035440705fe65b16d025c63506c97fda2170b/packages/amplify-provider-awscloudformation/lib/transform-graphql-schema.js#L209

npm run setup-dev in amplify-cli root which will give us a binary ready to use at bin/amplify

It will be great though if transformers can be enabled via CLI command or project config.
Judging by the code, graphql-http-transformer functionality for now allows you to synthesize object fields to http requests (can be pretty helpful already). Usage examples can be found in end-to-end tests: packages/graphql-transformers-e2e-tests/src/tests/HttpTransformer.e2e.test.ts. I did try it and it works as expected for my scenario.

Will there be any way to incorporate environment variables in the http requests (ie. api keys etc.) ?

@ambientlight Investigating the use of HTTP now. Looks like part 1 of your steps was completed. Is it possible to use this yet? I'm looking to wrap a REST api and need to append a query param to each request. Also an env var would be nice for this. Thanks!

@smakinson: it is now available in release versions(through undocumented?) : https://github.com/aws-amplify/amplify-cli/blob/2ba7435ae2be45f74dbcfdd9d9418d5102ade2e3/packages/amplify-provider-awscloudformation/lib/transform-graphql-schema.js#L371

I'm looking to wrap a REST api and need to append a query param to each request.

when query parameters are in URL, : can be used to reference graphql parameters in declaration by name https://github.com/aws-amplify/amplify-cli/blob/2ba7435ae2be45f74dbcfdd9d9418d5102ade2e3/packages/graphql-transformers-e2e-tests/src/tests/HttpTransformer.e2e.test.ts#L56-L60
But I am not sure if there any support for application/x-www-form-urlencoded or multipart/form-data payloads here, which you might likely need to use if you are wrapping a third part REST api


Handle Education Video fetching failure with content unavailable view.

Problem
Right now, if we fail to fetch the educational videos from firestore (for if there are no videos in firestore), we show an essentially empty view in the Education tab. Instead, we should show a ContentUnavailableView.
Solution
Add an if statement that will either show the VideoList if the VideoManager is not empty, and a ContentUnavailableView otherwise. Within the VideoList, if a videoCollection is empty (i.e. the section has no videos), consider not showing the VideoListSection.
Additional context
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct and Contributing Guidelines

I would take a look into this issue and possibly implement this along with issue #57, as I assume the solution to both issues should be nearly identical in their implementation of the ContentUnavailableView 🚀

Great idea! Fyi handling empty content has already been taken care of in the Heart Health view in a previous PR (I meant to close #57), so Education is the main place where this will be necessary. Feel free to adjust/add empty content handling in other views if you notice any inconsistencies! 🚀


Gateway stops working after update from 2.1.0.RELEASE to 2.2.1.RELEASE (both with spring.cloud.gateway.discovery.locator.enabled true)

Hello guys.
Today I tried update all cloud dependencies of my Spring Cloud Gateway to Hoxton but for some reasons after that my gateway can't route any requests.
I'm updating just to use the new reactive discovery client that I needed (#1104)
Maybe this issue is related with #1346.
Context: I always used the gateway with spring.cloud.gateway.discovery.locator.enabled=true because I have a custom configuration to create the DiscoveryClientRouteDefinitionLocator bean. My use case needs to duplicate routes (discovered by discovery client) with different filters and predicates in getRouteDefinitions method.
This code reproduces what I'm doing with route definitions:
  @Bean
  public DiscoveryClientRouteDefinitionLocator clientRouteDefinitionLocator(
      ReactiveDiscoveryClient discoveryClient,
      DiscoveryLocatorProperties discoveryLocatorProperties) {

    addPredicates(discoveryLocatorProperties);

    addGatewayFilters(discoveryLocatorProperties);

    return new DiscoveryClientRouteDefinitionLocator(discoveryClient, discoveryLocatorProperties) {
      @Override
      public Flux<RouteDefinition> getRouteDefinitions() {
        return super.getRouteDefinitions()
            .flatMap(
                route -> {
                  // Each route will be translated to two more routes.
                  RouteDefinition fullServiceRoute = duplicate(route, FULL_SERVICE_KEY);
                  RouteDefinition serviceVersionRoute = duplicate(route, SERVICE_VERSION);

                  return Flux.fromStream(Stream.of(route, fullServiceRoute, serviceVersionRoute));
                });
      }
    };
  }

The only thing I changed in code is the method argument (changed from DiscoveryClient to ReactiveDiscoveryClient). This is just to be sure I will be using the new reactive discovery client (not needed since the ReactiveDiscoveryClient is now the default and it is a DiscoveryClient).
Since I updated to Hoxton version and manually set the 2.2.1.RELEASE gateway version, all my requests are returning error 400.
Looking into my routes with actuator I found that for each discovered route three other routes are being created to the route definitions (completing four routes). One of them with the same routeId as the original one.
To check if the problem is with my duplication method I removed it from my code creating the default DiscoveryClientRouteDefinitionLocator. Even after that I got two routes for each discovered route. Code without additional route creation:
  @Bean
  public DiscoveryClientRouteDefinitionLocator clientRouteDefinitionLocator(
      ReactiveDiscoveryClient discoveryClient,
      DiscoveryLocatorProperties discoveryLocatorProperties) {
    return new DiscoveryClientRouteDefinitionLocator(discoveryClient, discoveryLocatorProperties;
  }

Looking for routes in http://localhost:5555/actuator/gateway/routes with this last code shows me two routes with same route_id for a single service:
[
	{
		"predicate": "Paths: [/auth-staging/**], match trailing slash: true",
		"route_id": "ReactiveCompositeDiscoveryClient_auth-staging",
		"filters": [
			"[[RewritePath /auth-staging/(?<remaining>.*) = '/${remaining}'], order = 1]"
		],
		"uri": "http://auth-staging.microservices.svc:4795",
		"order": 0
	},
	{
		"predicate": "Paths: [/auth-staging/**], match trailing slash: true",
		"route_id": "ReactiveCompositeDiscoveryClient_auth-staging",
		"filters": [
			"[[RewritePath /auth-staging/(?<remaining>.*) = '/${remaining}'], order = 1]"
		],
		"uri": "http://auth-staging.microservices.svc:4795",
		"order": 0
	}
]

Please ignore the uri properties since I changed the url-expression to not use IP to route requests but the kubernetes services.
EDIT: I just saw that the old gateway also returned four routes too but it works. I don't think the route appearing twice with the same ID has something to do with my gateway (even tho it is really weird) returning error 400 after the version update, but it can be related, since the reactive discovery client is different to the old blocking client.
Someone are getting this issue too? What I can do to use the new reactive discovery client keeping my old configuration?
Thank you.

RouteDefinitionLocators are cumulative, so the default DiscoveryClientRouteDefinitionLocator still is there and the order just happened to work before.
set spring.cloud.gateway.discovery.locator.enabled=false.

Hello @spencergibb thank you for the reply.
I need to change the url-expression and the include-expression for my use case. If I disable the locator I need to manually configure those properties?
And why everything works as expected before on 2.1.0.RELEASE?
Thank you again.

If you need to change the expressions that can be done in properties without defining a bean. Lucky ordering is my guess.

Gotcha @spencergibb
I'm refactoring all my code to define everything (filters, predicates, etc) using properties and after disabling the locator, apparently everything is fine.
I will no longer duplicate routes, there are better ways to do what I need.
But I have a last question/issue: /gateway/routes are still returning two routes for each discovered service even with spring.cloud.gateway.discovery.locator.enabled=false. Why?

I don't know why and I've not seen it reproduced.

I found out that was a mistake from my side.
Disabling locator and configuring everything through properties solved.
Thank you!


Test app

Codecov Report
Base: 48.82% // Head: 98.91% // Increases project coverage by +50.09% :tada:

Coverage data is based on head (f43d806) compared to base (bb067e6).
Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files
@@             Coverage Diff             @@
##           master      #35       +/-   ##
===========================================
+ Coverage   48.82%   98.91%   +50.09%
===========================================
  Files          10       10
  Lines         467      461        -6
===========================================
+ Hits          228      456      +228
+ Misses        239        5      -234

Impacted Files
Coverage Δ

lib/new_timer/view/new_timer_page.dart
98.60% <100.00%> (+93.80%)
:arrow_up:

lib/timers_overview/view/timers_overview_page.dart
100.00% <100.00%> (+71.85%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Permisisons to access

Hi. Please add which Entra ID roles have access to this data. My customer got this error when accessing Scenario Monitoring tab using Global Reader role "You don't have access to this data. Please contact your global administrator to get access"

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 7bade69c-88bb-3c9d-eaaa-eb004359742d
Version Independent ID: 7bade69c-88bb-3c9d-eaaa-eb004359742d
Content: Learn about Microsoft Entra Health - Microsoft Entra ID
Content Source: docs/identity/monitoring-health/concept-microsoft-entra-health.md
Service: active-directory
Sub-service: report-monitor
GitHub Login: @shlipsey3
Microsoft Alias: sarahlipsey

@itishnitsa-msft
Thanks for your feedback! We will investigate and update as appropriate.

Thanks for the feedback. Global Reader and Security Reader (mentioned in the article) are both roles that provide access to this data. I'm able to view it with the Global Reader role. I'm not sure why your customer got the error with that role. I'll do some testing and confirm with the product group.

@itishnitsa-msft
I'm going to assign this to the document author so they can take a look at it accordingly.

@itishnitsa-msft Did you have any other details you can provide to help with testing?


Adding custom pickle/unpickle logic to make promises work in general (resolves #112)

Sorry about the naming, I'll get it right next time. Can you merge this so I can build on this for testing my solution to the #264 issue


Add examples for interacting with tx service on docs.safe.global

Add examples for interacting with tx service on https://docs.safe.global/safe-core-api/service-architecture

Creating a transaction and sending offchain signatures from the owners.
Getting a transaction and executing it.
Creating a message and sending offchain signatures.
Getting last executed transaction.
Batch Transactions (optional).
Manage delegates.
For documenting usage of the service we can give some alternatives:

https://github.com/safe-global/safe-eth-py/ (optional)
https://github.com/safe-global/safe-core-sdk (API Kit) (optional)
Simple curl calls

@falvaradorodriguez for this issue you can talk to @JagoFigueroa and check the Postman examples he has

All good for me buenos señores 😄


Img src is removed when email is sent

Hi, I am facing a wired problem. I am using dynamic email.
I can see the image in the SendGrid designer view. But when the image is sent to any Gmail address the img src is removed from it
and on hotmail the img tag is changed to this
img data-imagetype="External" blockedimagesrc=(some source)

Hello @noman-ih,
Thanks for submitting a GitHub issue! We are very sorry that you are running into this problem. In order to better serve you, as this does not present itself as a library specific issue, we would like to ask that you reach out to our support team at https://support.sendgrid.com.
Thank you!
SendGrid DX Team


Between 700px and 850px width, the radio-bullet is mispositioned

On layouts smaller than 850px and before the mobile layout kicks in at 700px, the radio button bullet is wrongly positioned.

@mxstbr is this issue still available? Would love to add it our list for our event on Saturday.
p.s thanks for sharing the repo with us :)

This has been fixed already I'm afraid, sorry for getting your hopes up! Forgot to close the issue 😊


User Guide Examples with JModelica

Hi,
I tried to run the SimpleBuilding.mo from the ExamplesUserGuide using JModelica however I got the following error
`CompilerError:
1 error(s) and 2 warning(s) found:
Warning at line 25, column 3, in file 'C:\Program Files\OpenModelica1.16.1-64bit\lib\omlibrary\BuildingSystems-master\BuildingSystems\Climate\WeatherData\BaseClasses\WeatherDataFileNetCDF.mo':
The component info is declared multiple times and can not be verified to be identical to other declaration(s) with the same name.
Warning at line 49, column 12, in file 'C:\Program Files\OpenModelica1.16.1-64bit\lib\omlibrary\BuildingSystems-master\BuildingSystems\Fluid\Sources\BaseClasses\PartialSource.mo':
The cardinality() function-like operator is deprecated, and will be removed in a future version of Modelica
Error at line 82, column 7, in file 'C:\Program Files\OpenModelica1.16.1-64bit\lib\omlibrary\BuildingSystems-master\BuildingSystems\Buildings\Airvolumes\AirvolumeMixed.mo':
The component air is conditional: Access of conditional components is only valid in connect statements`
Any suggestions to solve this problem?

Did you test the model with JModelica or openModelica ? The failure message indicates that you try to compile the model with OpenModelica version 1.16.1

Did you test the model with JModelica or openModelica ? The failure message indicates that you try to compile the model with OpenModelica version 1.16.1

I'm compiling using Jmodelica however the package is saved in the directory
of OpenModelica.
On Tue., Jan. 26, 2021, 8:01 a.m. Christoph Nytsch-Geusen, <
<EMAIL_ADDRESS>wrote:

Did you test the model with JModelica or openModelica ? The failure
message indicates that you try to compile the model with OpenModelica
version 1.16.1
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/UdK-VPT/BuildingSystems/issues/163#issuecomment-767526254,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJ5I2HNCLAR2QYAPCG7SIMTS324IXANCNFSM4VTE2N5Q
.

I'm compiling using Jmodelica however the package is saved in the directory
of OpenModelica.
On Tue., Jan. 26, 2021, 8:01 a.m. Christoph Nytsch-Geusen, <
<EMAIL_ADDRESS>wrote:

Did you test the model with JModelica or openModelica ? The failure
message indicates that you try to compile the model with OpenModelica
version 1.16.1
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/UdK-VPT/BuildingSystems/issues/163#issuecomment-767526254,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJ5I2HNCLAR2QYAPCG7SIMTS324IXANCNFSM4VTE2N5Q
.


Unlink app from cloud projects

Completely lost.
I followed an instructional video on YouTube. Everything worked fine but I wanted to start fresh. I probably missed something in the original setup. I had a rogue device I couldn’t remove from the configuration.
I’m using the Tuya app. All my devices are setup in the app. I think the problem is I used an older version of Tuya for Homebridge.
I installed the latest Tuya plug-in. Problem I have is my app is already linked to two cloud projects. “The upper limit” I’ve spent hours trying to figure out how to unlink the app from current cloud projects.
I’ve searched every menu in the app and iot/Tuya webpage and come up with nothing. It shows I have two connections but no devices show up in either cloud configuration. Yes, my data center is correct.
How do you remove the current linked projects from the app or wherever it’s done. I know you can’t delete projects. I just want my devices to show up so I can add them HomeKit.
Side note, I was able to add two of my devices virtually but they are under a child bridge according to the Homebridge log on startup and still don’t show up in HomeKit.
If the only way to correct this is to change to the Smart life app but I think I’ve used the two permissions there also. I do know changing to a new email doesn’t work either. The app still knows it’s using two.
Please help

Maybe I've asked my question in the wrong place? Someone has to know how to do it.

I have a similar issue, I think. I had a setup that linked my Smart Life account to a Tuya IoT account. Then I changed my mind and linked it to a different Tuya account (after I realised I only needed a separate project for each home not a separate account). I unlinked from the old account in the app. Mostly this was fine but five devices behaved erratically - sometimes working and sometimes not - and I got the  error "1106 authentication denied" in the Tuya integration of Home Assistant.
On investigation I found that although I had unlinked the app from the old IoT account, somehow the account still had five devices linked! These are of course precisely the five devices that are causing the issues. It seems the old account got into a corrupted state.
To solve the issue, I went into the Smart Life app and deleted the five devices. In HA I still had to delete the Tuya integration and reinstate it. I then went through the tedious process of relinking all the devices with their automations, scripts and exposure to Alexa.
I would be most grateful if Tuya would
a) fix the bug that devices can be left linked when the app is unlinked
b) provide manual unlinking of devices as a fallback
c) provide deletion of projects (with erasure of all associated data)
d) provide deletion of user account (with erasure of all associated data)

Hello,
my issue seems to be related to this. I added my account and everything works fine. Thanks for that btw. Then i unlinked some devices in the "linked app settings" in the tuya plattform. But these devices are still available from Homebridge and the Apple Home App, which shouldn´t be.

Hello,
I had the same problem.  What does Tuya say:
"Currently, a created project cannot be deleted. If your project is going to the end of service, and you want to remove the smart devices that have been linked with the project, you can unlink the devices."
I solved it in the following way: in the old cloud project/service API I revoked Authorization of all servises.
I made a new project and everything started working.
After that I didn't get the message anymore:
(The number of projects linked with this Tuya Smart App account has reached the upper limit of 2. Unlink the account from existing projects and try again.).
The second way is as in the picture, but I did not find the wizard.

There's no way to do it other than sign up with another email account. Either unlink your current devices from the old account or hard reset them. Create a new profile in Tuya and add them. Could be a pain if you have many devices.

This frustrated the heck out of me for a few hours. So posting this here to ensure it doesn't do the same for others...
From: https://www.reddit.com/r/smartlife/comments/tidgls/comment/iet9qrw/?utm_source=share&utm_medium=web3x

In the smart home app click the me button on the bottom right
settings icon top right
account and security
cloud development project
when you click it and ok the unlink, it will remove the link to the project

Note: Make sure you are connected to the correct datacentre, (see here: https://developer.tuya.com/en/docs/iot/oem-app-data-center-distributed?id=Kafi0ku9l07qb), otherwise you'll see a SERVER_BUSY error.
Hope this helps.

This frustrated the heck out of me for a few hours. So posting this here to ensure it doesn't do the same for others...
From: https://www.reddit.com/r/smartlife/comments/tidgls/comment/iet9qrw/?utm_source=share&utm_medium=web3x

In the smart home app click the me button on the bottom right
settings icon top right
account and security
cloud development project
when you click it and ok the unlink, it will remove the link to the project

Note: Make sure you are connected to the correct datacentre, (see here: https://developer.tuya.com/en/docs/iot/oem-app-data-center-distributed?id=Kafi0ku9l07qb), otherwise you'll see a SERVER_BUSY error.
Hope this helps.

There is also no "Cloud developmet project" option in my app. im stuck

The same problem for me: no 'cloud development project'-option...


CASMCMS-9204: Update CFS options update code to handle v3 changes

The addition of CFS v3 broke the CFS import tool in terms of handling the defaultPlaybook/default_playbook option. This option is read-only in CFS v3, so in order to set it to a new value, the v2 API must be used.
This PR modifies the CFS function used to update v3 options, adding code to handle that option separately, in the case that it needs to be updated.
By making the change inside this function, the CFS import tool will continue to work without modification. All other options work fine.
I have tested this on mug, covering the case where an import needs to set just the default playbook option, where it needs to set only other options, and the case where it must set the default playbook option as well as other options. All three worked as expected.
There will be a CSM 1.5 backport for this, but no earlier ones, as this issue only arose with the advent of CFS v3 in CSM 1.5.

/backport release/1.5


Update ReactiveCocoa installation instructions

And Demo file, since they have a release we can reference now: https://github.com/ReactiveCocoa/ReactiveSwift/issues/20

Update these statements, https://github.com/Moya/Moya/blob/master/docs/ReactiveCocoa.md or that are in the readme? @ashfurrow

The readme, needs to use the same Podfile format as the Demo project. A PR would be awesome!

@ashfurrow I made a change in the ReadMe for Active installation equal to podfile Demo project. 👍  #693

Cool, thanks!


An error occurred while installing scanner script to remote server

Try different path and still getting the message. Log attached
logs.txt

I get a similar error, and I get the same issue with IP or hostname.
Here is the log:
https://gist.github.com/flatlinebb/b7779fb0bc96d67d819e05611fdc299c

I think I figured it out:
"Bad owner or permissions on /root/.ssh/config"
Moved the file and issue resolved.

How did you solve this? I am having the same issue now


Certain relative links not rendering correctly

Even though the jekyll-relative-links plugin is enabled (for pages and collections), it appears as though it's not working in some cases.
When landing on the home page, for example, the link to the "quick start" page attempts to direct you to /v0.34/introduction/quick-start.md instead of /v0.34/introduction/quick-start/ (the latter being the correct one). But the menu renders this particular link correctly.
Screencast from 2023-01-28 04:27:39 PM.webm

I believe these links are rendering fine now either online on local builds. There are still several broken links but those will be fixed in this issue. The broken links check were implemente in #25
So I believe this issue might be closed.


native: notification fixes

account for updated DM thread yarns
send report to Crashlytics if we fail to navigate after clicking a push notif (with extra context if user is a Tlon employee)

This is good to merge once reviewed thanks to the latest internal deploy

@dnbrwstr all you my friend


Shader Graph Addon, and big refactor

This is currently only missing functionality to select nodes with mouse rectangle


[DH-819] [DH-1000] Updated permitted fields serializer.

When I merged my PR I didn't see @reupen comments. I have created this PR taking account of the comment.
I also changed the name from PermittedFieldsSerializer to PermittedFieldsModelSerializer because it didn't suggest it inherits from ModelSerializer.

Codecov Report

Merging #717 into develop will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop     #717   +/-   ##
========================================
  Coverage    96.59%   96.59%
========================================
  Files          139      139
  Lines         4173     4173
  Branches       388      388
========================================
  Hits          4031     4031
- Misses          89       90    +1
+ Partials        53       52    -1

Impacted Files
Coverage Δ

datahub/core/admin.py
83.63% <0%> (ø)
:arrow_up:

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 2e8f586...1cb911d. Read the comment docs.


Can't make Linux 64 build

git clone --recursive https://github.com/KTXSoftware/MeshLoader.git
cd MeshLoader
node Kha/make -t linux --build
no errors, no executables, no documentation how or prosseed

My mistake

Thanks for explaining that mistake, you are 1st google result for "kha3d cannot build linux" now.
For anyone with same problem as me, correct way to compile for linux target is
node Kha/make -t linux --compile


Support for Windows 10 on Python 3

Hi @chrizator , Could you initiate a release for Windows platform on Python 3?

KeyloggerOS (windows) 🤮

@vertukv675 Is it available here on GitHub

Leave it I will be using it on Docker container.


Upgrade Next.js from Version 12.3 to 13.5

Description
We need to upgrade our Next.js application from version 12.3 to 13.5 to leverage the latest features, optimizations, and improvements in local development experience. The focus will be on client-side rendering as server-side rendering is not required for our application.
Tasks

Update Next.js Version:

Update the Next.js version in package.json to 13.5.
Run npm install to install the latest version.

Review Breaking Changes:

Review the Next.js migration guide for any breaking changes between versions 12.3 and 13.5.
Make necessary code adjustments based on the migration guide.

Optimize Client-Side Rendering:

Ensure that all client-side rendering functionalities are working correctly with the new version.
Optimize the application for improved performance with Next.js 13.5.

Improve Local Development Experience:

Test and verify that the local development server runs smoothly with the new version.
Ensure that hot-reloading and other development features are functioning as expected.

Testing:
Thoroughly test the application to ensure all functionalities are working correctly post-upgrade.
Conduct performance tests to confirm optimizations.
Files and Locations

package.json: Update the Next.js version.
Application Code: Review and adjust any code that may be affected by the upgrade.

Acceptance Criteria

[ ]   Next.js is upgraded to version 13.5.
[ ]  All client-side rendering functionalities are verified and optimized.
[ ]  Local development experience is improved and running smoothly.
[ ]  Application functionalities are tested and working correctly post-upgrade.
[ ]  Performance tests confirm optimizations.

Additional Information

Dependencies: Ensure all necessary dependencies are compatible with Next.js 13.5 as listed in package.json.
Style Guidelines: Follow existing code style guidelines and patterns as used in the project.
Migration Guide: Refer to the official Next.js migration guide for version-specific changes.

References

Current Next.js Version: Check package.json for the current version and dependencies.
Next.js Migration Guide: Next.js 13.5 Migration Guide
Material UI V5 Next JS Integration:  Material UI Next JS Integration

can I tackle this issue? Thanks

can I tackle this issue? Thanks

@ndubs18 are you working on this still?

I am did you want to work on it?

Hey guys, anyone can work on this issue, and you guys are both welcome to work together! Let me know if you guys have any questions :)


mkdirAll ensure parent for arbitrary nestings exists

Ensure that arbitrarily remote nested paths can be pushed to by recursively creating parents if non-existant.
This PR addresses issues #50 and #46. @bausmeier and @guruthree, works for me but would you kindly help me test out if you this solves your issue. In case you need to install the changes and test it out:
$ cd $GOPATH/src/github.com/odeke-em/drive
$ git fetch --all
$ git checkout fix/mkdirAll-feature
$ # If you think you have stale changes, please run
$ # git pull origin fix/mkdirAll-feature
$ go get github.com/odeke-em/drive/cmd/drive

should install it.

I was getting the same error. I've made the update following the directions above and have started a push. I'm no longer getting the errors, so things look good. I'm pushing a lot of data, about 42G, so it will be a while before it's done. I'll update then.

Looks to fix the issue for me as well.

@bausmeier please let me know if this fixes it for you.

Sorry for the slow response. Works for me :+1:

Working a lot better for me too. Thanks :+1:
I'm getting a few errors but it looks like a separate issue:

@bausmeier no worries, glad to know it works. @innerteapot that's an interesting error, did you setup drive using your own project API credentials? What might have changed? The reason am asking this is because that error shows invalid credentials so if you entered used your own API keys please make sure OAUTH2.0 is enabled and so is access to Google Drive and its scopes. If this persists please open up a separate issue and we can examine it there.

It looked like it was working for me, but I cancelled the push after a day, figuring I could continue it later. I don't know if that was what caused the issue, but when I went to google drive, none of my files were there. Instead, I had thousands of "Untitled" files in the root of drive, all with zero length. It's been taking me forever to try and get rid of them and I'm not done yet. Anyone know a better way to get rid of all those "Untitled" files?

@timberswrx that is unfortunate. It was because of that Google API change that I mentioned as it caused the same issues for me too the whole of Sunday, but that I fixed by using a stable API. Too bad for that, I could help and provide a wild card-ish method for trashing files as well as listing but unfortunately am just leaving home in a few minutes, if you can wait for 9 hours, I could be of help.

I'll continue removing files from drive on the web and see how many I can get rid of that way. What do I need to do to make sure I'm using the correct version of drive?

For starters, the normal install with an update as specified by the README. I am now and will be keeping a lock on the API clients that drive uses to avoid such issues. My apologies that you got affected by Sunday's drama.

I'm not sure how to get this to build again. I did the updates as listed above to get the fix and now the build as specified in the README is failing. How do I reset?

Firstly make sure you are on master
$ cd $GOPATH/src/github.com/odeke-em/drive
$ git checkout master

Next will be to perform the update
$ go get -u github.com/odeke-em/drive/cmd/drive

# To verify that you are using the curated Google Golang API
$ [ -d $GOPATH/src/github.com/odeke-em/google-api-go-client ] || echo 'You don't have the curated Google Golang API'

@timberswrx just in case for the future you have lots of files to trash, in https://github.com/odeke-em/drive/commit/0459854f97e50ec4eafc27f8c0aa92a884cd4e45 I have added the ability to perform case insensitive prefix matches ie if you wanted to trash all the files that begin with "Untitled" "Photos" or "aero" in path mnt/logs
$ cd ~/gdrive/mnt/logs
$ drive trash -matches Untitled Photos aero

Untrashing works the same way.
Don't forget to get the latest from master :)
Hope this can help! Please feel free to reach out in case of anything.

That sounds great. It would have been a big help. This is working great for me now. I'm uploading one sub-directory at a time so I have better visibility and it's going very well.


aws-nuke segfaults

Steps To Reproduce
start by using the awsnuke integration test:
$ cd appscope/test/integration
$ make awsnuke-shell
use this config file: (named test.yml  below)
---
regions:
- "global" # This is for all global resource types e.g. IAM
- "us-west-2"

account-blocklist:
-<PHONE_NUMBER>

# optional: restrict nuking to these resources
resource-types:
  targets:
  - EC2Instance

accounts:
<PHONE_NUMBER>58:
    filters:
      EC2Instance:
      - property: "tag:Name"
        value: "nuke"
        invert: true

set the following env vars (copy them from the aws cribl-test-account CLI screen)
export AWS_ACCESS_KEY_ID=
export AWS_SECRET_ACCESS_KEY=
export AWS_SESSION_TOKEN=
run the command:
$ scope run -c in..cribl.cloud:10090 -- aws-nuke -v -c test.yml
this is the cause of the segfault:
#0  0x00007ffff7fba8af in tss_get () from /lib/ld-musl-x86_64.so.1
#1  0x00007fffefccf626 in ossl_err_get_state_int () from /tmp/libscope-1.1.0/libscope.so
#2  0x00007fffefccf80d in ERR_clear_error () from /tmp/libscope-1.1.0/libscope.so
#3  0x00007fffefb79c76 in tcpSendTls (trans=0x7fffefaa82d0,
a call to tss_get (pthread_getspecific) in the native libc is the cause of the error. that should be calling the internal libc.
Environment
- AppScope:1.1-RC0
- OS:
- Architecture:
- Kernel:

Requested priority
High
Relevant log output
No response

Resolution: disable threads in the internal openssl build.

note that this is an issue due to the fact that aws-nuke is a static exec.

This was a Go signal-handling issue and now works as part of improvements in that area, per @jrcheli .


Keeping Icon focus state only for keyboard

Removing :focus styles for <Icon /> component when using mouse. This fixes issue when Icon seems frozen in hover state even if cursor went away.
Determining mouse/keyboard usage by toggling .mouse-intent class name on body element.
Added outline styling for Icon's :focus state.

Close #1228

@ixrock Please do re-review. Replaced custom solution with what-input dependency which could track used input device
https://www.npmjs.com/package/what-input
<EMAIL_ADDRESS>


When coping folders, loops the same folder on Ubuntu 20.04

This happens when I try to copy folders from my android device to my local computer, an infinite loop of folders. Please help

it's better to use MTP. Mobydroid uses adb for file browsing and it's a little bit slow.
Version v0.6 should fix this.
Notify me if it's not fixed.


Specifying tnsnames

Hello,
I'm trying to read data from an Oracle database and for that I have to specify the location of the tnsnames.ora file.
Before using the operator I would specify the path to the file through the extraJavaOptions variable as such:
time spark/bin/spark-submit --class "<classname>" --master "local[4]" --conf "spark.driver.extraJavaOptions=-Doracle.net.tns_admin=<path to .ora>" whatever.jar
Now I have tried to specify the variable spec.driver.javaOptions with a path to the .ora. like this:
apiVersion: "sparkoperator.k8s.io/v1beta2"
kind: SparkApplication
metadata:
  name: etl
  namespace: default
spec:
  type: Java
  mode: cluster
  image: <image>
  imagePullPolicy: Always
  imagePullSecrets:
    - regcred
  mainClass: etl.example.BasicETL
  mainApplicationFile: "local:///opt/apps/etl.jar"
  sparkVersion: "3.0.0"
  restartPolicy:
    type: Never

  driver:
    cores: 1
    coreLimit: "1200m"
    memory: "512m"
    labels:
      version: 3.0.0
    serviceAccount: spark
    javaOptions: "-Doracle.net.tns_admin=local:///opt/apps/"
    extraJavaOptions: "-Doracle.net.tns_admin=local:///opt/apps/"

  executor:
    cores: 4
    instances: 4
    memory: "512m"
    labels:
      version: 3.0.0

I have checked the generated configmap and the variables are there correctly:
   spark.driver.extraJavaOptions=-Doracle.net.tns_admin\=local\:///opt/apps/
It seems however the path to .ora is still not correct as the database identifier cannot be resolved:
Exception in thread "main" java.sql.SQLRecoverableException: IO Error: could not resolve the connect identifier  "<db name>"
	at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:774)
	at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:688)
	at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39)
	at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:691)
	at org.apache.spark.sql.execution.datasources.jdbc.DriverWrapper.connect(DriverWrapper.scala:45)
	at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$.$anonfun$createConnectionFactory$1(JdbcUtils.scala:64)

Also in the logs there is the spark-submit command issued which seems to be missing the specified options:
exec /usr/bin/tini -s -- /opt/spark/bin/spark-submit --conf spark.driver.bindAddress=<IP_ADDRESS> --deploy-mode client --properties-file /opt/spark/conf/spark.properties --class etl.example.BasicETL spark-internal
Any idea what I might be doing wrong?

Hello,
I managed to solve the issue. It path specified in the property shouldn't contain "local://".
Cheers.


iox-#2330 add notify systemd

Notes for Reviewer

Pre-Review Checklist for the PR Author

[x] Code follows the coding style of CONTRIBUTING.md
[x] Tests follow the best practice for testing
[x] Changelog updated in the unreleased section including API breaking changes
[x] Branch follows the naming format (iox-123-this-is-a-branch)
[x] Commits messages are according to this guideline

[x] Commit messages have the issue ID (iox-#123 commit text)
[x] Commit author matches Eclipse Contributor Agreement (and ECA is signed)

[x] Update the PR title

[x]  Follow the same conventions as for commit messages
[x] Link to the relevant issue

[x] Relevant issues are linked
[x] Add sensible notes for the reviewer
[x] All checks have passed (except task-list-completed)
[x] Assign PR to reviewer

Checklist for the PR Reviewer

[ ] Consider a second reviewer for complex new features or larger refactorings
[ ] Commits are properly organized and messages are according to the guideline
[ ] Code according to our coding style and naming conventions
[ ] Unit tests have been written for new behavior
[ ] Public API changes are documented via doxygen
[ ] Copyright owner are updated in the changed files
[ ] All touched (C/C++) source code files from iceoryx_hoofs have been added to ./clang-tidy-diff-scans.txt
[ ] PR title describes the changes

Post-review Checklist for the PR Author

[ ] All open points are addressed and tracked via issues

References

Closes TBD

@elBoberido sorry if it turned out very badly, I still don't quite understand how your application works, but there is a suggestion to add a check, if the application was launched without using systemd, then everything will remain that way if not, then I will send a ready signal when I am ready to receive clients
this is a continuation based on your answer https://github.com/eclipse-iceoryx/iceoryx/issues/2330
are you interested in this functionality? I would really like it to be added, I need it :)

@khromenokroman yes, the functionality would be appreciated.
Can you add a cmake switch which is off by default to not add a hard dependency to systemd? You can check how it is done with IOX_EXPERIMENTAL_POSH_FLAG and replicate it.
Furthermore, if you install the git commit hooks, it takes care of setting the issue number for commits.
https://github.com/eclipse-iceoryx/iceoryx/blob/main/tools/git-hooks/Readme.md
Currently there are commits without the issue number.
Another issue will be to integrate the systemd support so that it does not affect the build of our platforms. In general we try to abstract this away and then have a specific implementations for platforms which do not support a specific feature. This is done for the IpcChannel which is using NamedPipe on Windows and UnixDomainSocket on the other platforms. You can have a look at iceoryx_posh/include/iceoryx_posh/internal/runtime/ipc_interface_base.hpp. Ideally this would not be done with and ifdef but in a similar manner like in iceoryx_platform but we did not yet implement a similar structure for iceoryx_posh yet.
So there is quite a lot to do in order to get this upstream :)

@elBoberido everything okay? will there be a merger?

@khromenokroman sorry for not responding earlier. I'm skimmed over your changes and noticed I need more time for a review and then it slipped my attention.
I'm not sure whether I will have time today but latest tomorrow I'll review your changes.
Just a few remarks. You already adjusted the naming but e.g. ISystemd uses an uncommon schema. While we currently only support systemd, the code should be written in a way to support macOS and Windows. A generic name could be ServiceManagement and the implementation would be ServiceManagementSystemd.
Another issue is testing. We need to ensure that the suystemd support does not break. This could be done by having a CI target with systemd and maybe also an integration test. I'm not sure how difficult it would be to create such an integration test, though.

@khromenokroman sorry for not responding earlier. I'm skimmed over your changes and noticed I need more time for a review and then it slipped my attention.
I'm not sure whether I will have time today but latest tomorrow I'll review your changes.

@elBoberido no problem :)

Another issue is testing. We need to ensure that the suystemd support does not break. This could be done by having a CI target with systemd and maybe also an integration test. I'm not sure how difficult it would be to create such an integration test, though.

@elBoberido I wanted to do this as a separate request, so that you would have less to check, but I can do it in this merge request as well.

Just a few remarks. You already adjusted the naming but e.g. ISystemd uses an uncommon schema. While we currently only support systemd, the code should be written in a way to support macOS and Windows. A generic name could be ServiceManagement and the implementation would be ServiceManagementSystemd.

@elBoberido fixed

Another issue is testing. We need to ensure that the suystemd support does not break. This could be done by having a CI target with systemd and maybe also an integration test. I'm not sure how difficult it would be to create such an integration test, though.

@elBoberido I did a test in ci, but I can't figure out where I need to add it to make it work for you, I added it here build-test.yml but your ci didn't run my ci :( , I've temporarily done it here build_systemd.yaml
https://github.com/khromenokroman/iceoryx/actions/runs/10604085974/job/29389869104

for new contributors, the github CI needs to be triggered by a committer for their first PR. This is the policy for Eclipse projects so we cannot really do something here, except if you create a small PR which is merged first. Then the github CI would also be triggered with each push.

@elBoberido no problem, add ci in build-test.yml

If you like, there is #2209. It should be done if a few minutes but the creator of the issue did not respond anymore. You could create a small PR and move using iox_ssize_t = int; from iceoryx_platform/win/include/iceoryx_platform/unistd.hpp to iceoryx_platform/win/include/iceoryx_platform/types.hpp and replace the using ssize_t = size_t; from the types.hpp. There are then a few other file in iceoryx_platform/win where ssize_t needs to be replaced with iox_ssize_t but that's minimal. What do you think? It would make the handling of this PR simpler for you.

@elBoberido I'm still new to your project, and I didn't understand anything :) let's do this PR, and I'll try to change what you want with another PR, or do you need to do it in this PR?

@elBoberido Is everything okay, are we doing a merge request?

@elBoberido added some tests


Portrait mode

<!-- Please search existing issues to avoid creating duplicates.

Only

/needsMoreInfo

Thanks for creating this issue! We figured it's missing some basic information or in some other way doesn't follow our issue reporting guidelines. Please take the time to review these and update the issue.
Happy Coding!


Please invite me to the Recode-Hive GitHub Community Organization

Name
Pearl Vashistha
Discord Username (if applicable)
No response
Additional Context
I would like to be a part of this community to learn from it while also exploring it.

Invitation sent to join the GitHub Organisation. Welcome to the community 🎉
Don't forget after accepting to make it public so it appears on your GitHub profile for everyone else to see. You can do this by finding your name in the GitHub organisation list and change the dropdown to public https://github.com/orgs/Recode-Hive/people


Supporting the ability to have _enter and _exit actions.

There are many state machines where you need to execute an action on entry into that state.  This is especially important for more complex state machines where there may be multiple transitions (from different states) that go into a particular target state.  In those cases, you would end up having to write the same code in multiple transitions, which makes maintenance more difficult.  Instead, an _entry (or other reserved) action would allow the actions to be consolidated to one place.   This also applies for when exiting a state.
I've been able to implement it quite easily (not sure if it is completely correct, since I am bypassing the middleware layer).
What are your thoughts?

Interesting. Can you come up with an example.

This question is related to #16, see comment from Feb 27, 2018 in particular.
Stent produces self-powered state machines, i.e., machines that fully control themselves. In my opinion, adding onEntry hooks would mean relinquishing control.
In comparison, the xstate library provides the onEntry/onExit hooks and condition "guards" to produce statically analyzable state machines, e.g., for generating UML diagrams.
However, the xstate machines behave like oracles — they have the ultimate knowledge, but they do nothing by themselves and require an interpreter.
I think that's the difference between Moore and Mealy machines, but I haven't researched it in detail and might be wrong.
@rkoshy, you can save the action function to a variable and reuse the action:
const finish = function * (machine) {
   if (machine.state.name === STAGE_TWO) {
     return yield { ...machine.state, name: FINAL_TARGET }
  }
}

const config = {
  state: { name: IDLE },
  transitions: {
    [IDLE]: { finish },
    [STAGE_ONE]: { finish },
    [STAGE_TWO]: { finish }
    [FINAL_TARGET]: { reload: { name: IDLE } }
  }
}

@illarionvk It's not about saving the action and reusing it.  The point is that each state has different actions.
We can create a "technically pure" state machine -- but most of the time state machines are used to control a process.  If I need to add complex logic outside of the state machine, which a lesser amount of code in the state machine would be clearer, we need to consider that.  XStaet and Machina have done so - but have bloated things to the point where even a simple FSM becomes complex/unwieldy and hard to understand.
I've been using SMC (State Machine Compiler) for many years ... maybe since 2006??  I have complex applications where there are state machine definitions that are thousands of lines long (including sub states/etc).  The nicest thing about SMC is that you can, for each transition, describe a set of actions that must be taken (generally implemented in another class), along with guards, and entry/exit conditions.  This makes debugging the applications extremely simple since it's clear as to what is happening in the state machine.

@krasimir Here you go -- this is a WIP, since I'm porting it over from SMC to stent.  Pay particular attention to the Idle, ABConnected and AOnHold.  For instance, you can switch back and forth between AOnHold and ABConnected.  The _entry allows me to send an event out to the UI so that all relevant components update their visual display in this case.  Instead of a pubsub event, it could have been a method call to ui.setCallActive or something like that as well...
const voiceSession = Machine.create('voice-session-fsm', {
      state: {name: 'Idle'},
      sessionId: '',
      transitions: {
        Idle: {
          _entry: (fsm, previousState) => {
            this._pubsub.publishEvent(ADEvents.EVENT_VOICE_SESSION_IDLE, fsm.sessionId);
            fsm.sessionData = undefined;
            fsm.sessionId = undefined;
            fsm.sipCallID = undefined;
            fsm.rtcSessionId = undefined;
          },
          voiceOffered: (fsm, sessionInfo) => {
            fsm.rtcSessionId = sessionInfo.session._id;
            fsm.sipCallID = sessionInfo.request.call_id;
            this.answerVoiceCall();
            this._pubsub.publishEvent(ADEvents.EVENT_VOICE_SESSION_VOICE_STARTED, fsm.sessionId);
            return 'VoiceActive';
          },
          msgProcessSession: (fsm, message) => {
            fsm.callProcessor =<EMAIL_ADDRESS>            fsm.sessionData = message.body;
            fsm.sessionId = fsm.sessionData.sessionId;
            this._sessionData.parseSessionData(message.body);
            return 'DataActive';
          }
        },
        VoiceActive: {
          msgProcessSession: (fsm, message) => {
            fsm.callProcessor =<EMAIL_ADDRESS>            fsm.sessionData = message.body;
            fsm.sessionId = fsm.sessionData.sessionId;
            this._sessionData.parseSessionData(message.body);
            return 'VoiceSessionActive';
          }
        },
        DataActive: {
          voiceOffered: (fsm, message) => {
            fsm.rtcSessionId = message.session._id;
            fsm.sipCallID = message.request.call_id;
            this.answerVoiceCall();
            return 'VoiceSessionActive';
          },
        },
        VoiceSessionActive: {
          _entry: (fsm, previousState) => {
            this.sendProcessSessionAck(fsm.callProcessor, fsm.sessionId, 0);
            this._pubsub.publishEvent(ADEvents.EVENT_VOICE_SESSION_ACTIVE, fsm.sessionData);
          },
          msgABConnected: (fsm, message) => {
            return 'ABConnected';
          }
        },
        ABConnected: {
          _entry: (fsm, previousState) => {
            this._pubsub.publishEvent(ADEvents.EVENT_VOICE_SESSION_AB_CONNECTED, fsm.sessionData);
          },
          msgADropped: (fsm, message) => {
            console.log('A Party has dropped off the call');
            return 'Limbo';
          },
          msgWrapupStarted: (fsm, message) => {
            return 'Wrapup';
          },
          cmdEndLine1: (fsm) => {
            this.sendDropA(fsm.callProcessor, fsm.sessionId);
          },
          cmdHoldLine1: (fsm, currentState) => {
            this.sendHoldA(fsm.callProcessor, fsm.sessionId);
          },
          msgAOnHold: (fsm, message) => {
            return 'AOnHold';
          }
        },
        AOnHold: {
          _entry: (fsm, previousState) => {
            this._pubsub.publishEvent(ADEvents.EVENT_VOICE_SESSION_A_HOLD, fsm.sessionData);
          },
          cmdPickupLine1: (fsm, currentState) => {
            this.sendPickupA(fsm.callProcessor, fsm.sessionId);
          },
          msgABConnected: (fsm, message) => {
            return 'ABConnected';
          }
        },
        Limbo: {
          _entry: (fsm, previousState) => {
            console.log('We are in limbo -- hopefully we get a new event');
          },
          // This is when we are connected to the kernel, but we are not in a 'stable' state
          msgWrapupStarted: (fsm, message) => {
            return 'Wrapup';
          },
          msgResetToIdle: (fsm, message) => {
            return 'Idle';
          },
        },
        Wrapup: {
          _entry: (fsm, previousState) => {
            this._pubsub.publishEvent(ADEvents.EVENT_VOICE_SESSION_WRAPUP, fsm.sessionData);
          },
          msgResetToIdle: (fsm, message) => {
            return 'Idle';
          },
          voiceCallEnded: (fsm, message) => {
            console.log(`Voice call has ended for sessionId: ${fsm.sessionId} with SIP CallID: ${fsm.sipCallID}`);
          }
        }
      }
    });

@rkoshy, thank you for a detailed example and a comprehensive pull-request. Reserved entry/exit actions might be useful in many scenarios.
Personally, I would create a custom middleware or use the connect helper. I would even prefer the connect helper because it would allow me to store the side-effects code alongside the UI code and disconnect it if the relevant UI components are unmounted.
import { connect } from 'stent/lib/helpers';

// It was unclear what `this` references, so I replaced it with context
const context = {
  ...Context,
  answerVoiceCall() {},
  _pubsub: {
    publishEvent() {}
  }
};

const MACHINE_NAME = "voice-session-fsm";

const initialState = {
  name: "Idle",
  callProcessor: null,
  rtcSessionId: null,
  sessionData: null,
  sessionId: null,
  sipCallID: null
};

// Initializing UI events and side-effects
const onEntry = function(fsm) {
  const { name, callProcessor, sessionData, sessionId } = fsm.state;

  if (name === "Idle") {
    context._pubsub.publishEvent(ADEvents.EVENT_VOICE_SESSION_IDLE, sessionId);
  }

  if (name === "VoiceSessionActive") {
    context.sendProcessSessionAck(callProcessor, sessionId, 0);
    context._pubsub.publishEvent(
      ADEvents.EVENT_VOICE_SESSION_ACTIVE,
      sessionData
    );
  }

  if (name === "ABConnected") {
    context._pubsub.publishEvent(
      ADEvents.EVENT_VOICE_SESSION_AB_CONNECTED,
      sessionData
    );
  }

  if (name === "AOnHold") {
    context._pubsub.publishEvent(
      ADEvents.EVENT_VOICE_SESSION_A_HOLD,
      sessionData
    );
  }

  if (name === "Limbo") {
    console.log("We are in limbo -- hopefully we get a new event");
  }

  if (name === "Wrapup") {
    context._pubsub.publishEvent(
      ADEvents.EVENT_VOICE_SESSION_WRAPUP,
      sessionData
    );
  }
};

// Solution 1
Machine.addMiddleware({
  onStateChanged() {
    const fsm = this
    if (fsm.name === MACHINE_NAME) {
      onEntry(fsm);
    }
  }
});

// Solution 2
const disconnect = connect()
  .with(MACHINE_NAME)
  .map(onEntry);

// Initializing machine
const voiceSession = Machine.create(MACHINE_NAME, {
  state: initialState,
  transitions: {
    Idle: {
      voiceOffered: (fsm, sessionInfo) => {
        context.answerVoiceCall();
        context._pubsub.publishEvent(
          ADEvents.EVENT_VOICE_SESSION_VOICE_STARTED,
          fsm.state.sessionId
        );

        return {
          ...fsm.state,
          name: "VoiceActive",
          rtcSessionId: sessionInfo.session._id,
          sipCallID: sessionInfo.request.call_id
        };
      },
      msgProcessSession: (fsm, message) => {
        const sessionData = context._sessionData.parseSessionData(message.body);

        return {
          ...fsm.state,
          name: "DataActive",
          callProcessor<EMAIL_ADDRESS>          sessionData: sessionData,
          sessionId: sessionData.sessionId
        };
      }
    },
    VoiceActive: {
      msgProcessSession: (fsm, message) => {
        const sessionData = context._sessionData.parseSessionData(message.body);

        return {
          ...fsm.state,
          name: "VoiceSessionActive",
          callProcessor<EMAIL_ADDRESS>          sessionData: sessionData,
          sessionId: sessionData.sessionId
        };
      }
    },
    DataActive: {
      voiceOffered: (fsm, message) => {
        context.answerVoiceCall();

        return {
          ...fsm.state,
          name: "VoiceSessionActive",
          rtcSessionId: message.session._id,
          sipCallID: message.request.call_id
        };
      }
    },
    VoiceSessionActive: {
      msgABConnected: (fsm, message) => {
        return { ...fsm.state, name: "ABConnected" };
      }
    },
    ABConnected: {
      cmdEndLine1: function(fsm) {
        context.sendDropA(fsm.callProcessor, fsm.sessionId);
      },
      cmdHoldLine1: function(fsm) {
        context.sendHoldA(fsm.callProcessor, fsm.sessionId);
      },
      msgADropped: (fsm, message) => {
        console.log("A Party has dropped off the call");
        return { ...fsm.state, name: "Limbo" };
      },
      msgWrapupStarted: (fsm, message) => {
        return { ...fsm.state, name: "Wrapup" };
      },
      msgAOnHold: (fsm, message) => {
        return { ...fsm.state, name: "AOnHold" };
      }
    },
    AOnHold: {
      cmdPickupLine1: function(fsm) {
        context.sendPickupA(fsm.callProcessor, fsm.sessionId);
      },
      msgABConnected: (fsm, message) => {
        return { ...fsm.state, name: "ABConnected" };
      }
    },
    Limbo: {
      // This is when we are connected to the kernel, but we are not in a 'stable' state
      msgWrapupStarted: (fsm, message) => {
        return { ...fsm.state, name: "Wrapup" };
      },
      msgResetToIdle: (fsm, message) => {
        return { ...fsm.state, name: "Idle" };
      }
    },
    Wrapup: {
      msgResetToIdle: (fsm, message) => {
        return { ...fsm.state, name: "Idle" };
      },
      voiceCallEnded: function(fsm, message) {
        console.log(
          `Voice call has ended for sessionId: ${fsm.sessionId} with SIP CallID: ${fsm.sipCallID}`
        );
      }
    }
  }
});

@illarionvk I don't disagree that your method will provide the same end result.  However IMHO, from the perspective of readability and understandability, having the entry/exit in the state machine makes it much more obvious that "things" are happening on exit/entry
I go through many hoops to actually send all activity by the user or by the system into the state-machine so that the behavior of the app is completely under the control of the state machine.  So then, if I introduce this "side-bar" type behavior where someone is "watching the state machine" and making further changes to the state of the app, UI, etc... I think it's counter-intuitive and defeats the goal of the state-machine being the "controller" of state.
As for UI -- I'm using a completely decoupled eventing model to ensure that the state-machine is not dependent on the UI or vice-versa - I'm actually converting some C++ code that I wrote about 15 years ago.  So while the app is in Angular, all the components subscribe to events that tell them about the state of affairs, and they render themselves or remove themselves accordingly.

Very good discussion. I have the feeling that adding @enter and @exit will be a good addition to the library. I'm not sure about the API and how the machine will handle/expose those new methods. Will think about it.


Gogoanime problems

Steps to reproduce
In gogoanime there is no new episodes no matter how much I refresh it or update it and there is no new animes also 🥺

It's been 10 days already please help me fix this problem 😭 and my library update also not working 😭
Expected behavior
In gogoanime there is no new episodes no matter how much I refresh it or update it and there is no new animes also 🥺 please help me fix this problem please
Actual behavior
I can see anime on gogoanime but there is no new episodes there no matter how much I refresh it
Crash logs
No response
Aniyomi version
<IP_ADDRESS>-8019
Android version
11 RP1A.200720.011
Device
Redmi Note 8 Pro
Other details
Besides gogoanime problems there are also Library update problem please fix this problem 😭

Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] If this is an issue with an extension, I should be opening an issue in the extension's repository.
[X] I have gone through the FAQ and troubleshooting guide.
[X] I have updated the app to version <IP_ADDRESS>.
[X] I have updated all installed extensions.
[X] I will fill out all of the requested information in this form.

If this is an issue with an extension, I should be opening an issue in the extension's repository.

It has been like this for last 3 days for me and need to be fixed

Is this being fixed?


Allow to bind a specific port for login command

Task linked: CU-861mea8zh Allow to bind spacectl browser to a specific port


fix/transaction-entity

Add getter and setter for mangoId in Transaction
Put executedDate to nullable false to avoid error if transaction have failded and not be executed
add cascade persist on payinId to allow persist from contribution entity

+1 Could you create this PR on the master branch too please ?

@paulandrieux I cherry-picked the commit on master: #57


[BUG] Cluster causing server to crash after base scouted

Attestation
[X ] I have verified this bug with all other mods disabled
[X ] I did not create this war while using one of the documented incompatible mods
Describe the bug
Some battles with Cluster while running Penchant AI cause the game to hang up
To Reproduce
Steps to reproduce the behaviour:
Galactic War
Fight cluster with colonel commander
Send units to their base
Hang occurs shortly after
GWO Info
Taken from the top-right GWO panel:

Version: 5.34.0
Difficulty:Iron
Size:Large
AI:Penchant
Options: Faction Scaling System Scaling Easier start

Additional context
Add any other context about the problem here.
Logs
Please attach the most recent client and server log immediately following the bug occurring.
PA Logs 6-13.zip

Does this crash occur as soon as their units come into view, or after you've observed the base for some time?
Are you able to build a Colonel in sandbox mode without the game crashing?
Have you tried verifying your game files in Steam?

User has not responded. Unable to replicate.

It happens some time after gaining vision of the commander with units it
can also see, or it did...
Coincidentally the game experienced an update today and I am thankfully
unable to replicate the issue on the GW save, hoping it stays that way.
Will submit new report if issue occurs again.
On Tue, Jun 14, 2022 at 3:57 AM Quitch @.***> wrote:

Does this crash occur as soon as their units come into view, or after
you've observed the base for some time?
Are you able to build a Colonel in sandbox mode without the game crashing?
Have you tried verifying your game files in Steam?
—
Reply to this email directly, view it on GitHub
https://github.com/Quitch/GW-AI-Overhaul/issues/20#issuecomment-1154845329,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AE5QZOCA56NHRRSREBCSU4LVPA3NLANCNFSM5YVRC3YQ
.
You are receiving this because you authored the thread.Message ID:
@.***>


Update scala.js to version 0.6.18

This PR updates atto to use scala.js 0.6.18. I took the liberty of making tests run on both the JVM and JS and to update the scala versions

Brilliant, thanks!


Implement a 3D / 2D ruler

Godot version:
3.1
OS/device including version:
Windows 10 x64 / NVIDIA GeForce GTX 1060 6GB / Intel Core i7 4790K
Issue description:
Implement a ruler that shows the distance between 2 points (x, y,z for 3D) or (x, y for 2D).
It is often necessary to measure an object that has been scaled or even the collision distance between 2 or more objects.

i think this can be done with the tool script. but i agree, would be nice to have it on a ruler

You could create a node that takes a list of Node paths, and draws geometry or lines to each one of their centers.
If node is VisualInstance you could get_transformed_aabb() and draw a wire framed cube.
Lots of options with a tool script, especially with class_name you could even use the nodes for debugging in game
For the Rect of a 2d Node it seems a bit more complicated, it'd be nice if you could get the rect of any canvas item

Feature and improvement proposals for the Godot Engine are now being discussed and reviewed in a dedicated Godot Improvement Proposals (GIP) (godotengine/godot-proposals) issue tracker. The GIP tracker has a detailed issue template designed so that proposals include all the relevant information to start a productive discussion and help the community assess the validity of the proposal for the engine.
The main (godotengine/godot) tracker is now solely dedicated to bug reports and Pull Requests, enabling contributors to have a better focus on bug fixing work. Therefore, we are now closing all older feature proposals on the main issue tracker.
If you are interested in this feature proposal, please open a new proposal on the GIP tracker following the given issue template (after checking that it doesn't exist already). Be sure to reference this closed issue if it includes any relevant discussion (which you are also encouraged to summarize in the new proposal). Thanks in advance!


PHP not executing

I hadn't cloned a new version of the repo in a while, but I just tried getting the latest version up and running, and every time, with a clean install, PHP wasn't being executed, just read in as text.
Went back to the last commit in January (1998c99), cloned, installed, and it ran just fine.

I second this.

@akeif could this be a result from your recent modifications?

@battlemidget Yes. It's not executing in Apache. And I'm fixing it ATM. Patch coming really soon.

Look like running WP unit tests successfully wasn't enough :P Should have tried to run the site through apache he.

@akeif awesome, thanks for the quick reply

@socki03 @vladiiancu can you test the PR #122

@battlemidget I asked a colleague to test it out.


Work/roman

Referral OTC
Variable reward for passport scan
Event start date mechanics

consider naming branches as feature/short-feature-description in future


Volto should generate  tags

Describe the bug
I have a page at /my-page. If I insert a link on this page such as ./rss.xml, I expect that the URL that the browser sees is http://localhost:3000/my-page/rss.xml. Instead, it sees http://localhost:3000/rss.xml, because there's no <base> set.
Software (please complete the following information):

Volto Version 16.22.0

As a solution, in my package, I've added a BaseTag registered as an AppExtras:

I would like to work on this issue can you assign it to me

@rajesh604 we do not assign issues. Please read our contributing guidelines.

https://6.docs.plone.org/contributing/index.html
https://6.docs.plone.org/contributing/first-time.html
https://6.docs.plone.org/volto/contributing/index.html

Hi I am a newbie to opensource can you tell me how can i approach this issue

I have installed it on my development machine

@rajesh604 what is not clear about the issue description? Did you try to reproduce the issue?


First Image size is small half of other Images

I have used this extension for converting the pdf to image
it converts perfectly every image but only issue is that first image is of the half resolution of the others
what should be the problem??
each and every variables are declared proper and also receives the values as well

Do you have some example code for me to look at?

if(is_file($pathToPdf)){ 			$pdf = new Pdf($pathToPdf);  			$pageCount = $pdf->getNumberOfPages(); //returns an int   			for ($i = 1; $i <= $pageCount; $i++) {  				$pathToWhereImageShouldBeStored = $path."/page_".$i.".png"; 				array_push($allImages,$relativePath."/page_".$i.".png");  				$pdf->setPage($i)->setOutputFormat('png')->saveImage($pathToWhereImageShouldBeStored); 			} 			unlink($pathToPdf); // remove file from server 			return json_encode($allImages); 		}else{ 			return json_encode($allImages); 		}

this my code and i got solution from https://github.com/spatie/pdf-to-image/issues/37#issuecomment-325567722
i have commented in vendor/spatie/pdf-to-image/src/pdf.php
and it works for me.
so as vendor folder we do not commit generally so i change it and kept on my app and now it works
but if you have any solution from implementation than thats good

+1
Page 1 - 595 × 842 pixels
Page 2  -2479 × 3508 pixels

I'll try to look at this soon. I'd appreciate a fully tested PR that fixes this.

I've tested a few PDFs locally using this code:
<?php

require 'vendor/autoload.php';

$files = [
    'example.pdf',
    'example2.pdf',
    'example3.pdf',
];

foreach($files as $file) {

    echo "{$file}
";

    $pdf = new Spatie\PdfToImage\Pdf($file);

    for($i = 1; $i<=$pdf->getNumberOfPages(); $i++)
    {
        $pdf->setPage($i)
            ->setOutputFormat('png')
            ->saveImage('page-' . $i . '.png');

        list($width, $height, $type, $attr) = getimagesize('page-' . $i . '.png');
        echo "Image {$i}: w:{$width} h:{$height}
";
    }

    echo "
";
}

The output is as expected:
example.pdf
Image 1: w:1191 h:1684
Image 2: w:1191 h:1684
example2.pdf
Image 1: w:1190 h:1684
Image 2: w:1190 h:1684
Image 3: w:1190 h:1684
Image 4: w:1190 h:1684
example3.pdf
Image 1: w:1190 h:1684
Image 2: w:1190 h:1684

I think the problem lies in the PDFs that are being converted. There might be issues with different DPI and/or resolutions of the frontpage of these files. Any possibility you share a file that has issues?

Could not reproduce either, resolution stays the same for all tested pdf's.

Or could it be an issue with different versions of imagemagick?

+1
I'm creating a pdf image with 3 pages. The 3 generated images are the last page of the pdf.
$pdf = new \Spatie\PdfToImage\Pdf($this->documentFile->getUrl());
$pdf->setPage($this->page)->setOutputFormat('jpg')->saveImage(public_path('crns_ocr/'.$path) ."/". $this->documentFile->hash_file. "_pg" . $this->page . '.jpg');
It ignores the page number in setPage(integer).
Regardless of the pdf and the number of pages, always generate the last page. If the pdf has 10 pages, the 10 images will be the last page of the pdf.
Help!

Closing due to inactivity. Cannot reproduce this issue.

the problem occurs to those who uses the spatie/pdf-to-image version 1.4. It seems that in pdf.php class, it's lacking the following functions below:
setImageResolution and
resampleImage.
we cannot upgrade to a version higher than 1.4 since our application is using php version 5.5 and versions  above 1.4 is only available for php versions 7.2 and 7.3+. And I think it's where you apply the fix.
try setting the environment to php 5.5 and spatie/pdf-to-image 1.4 and you can reproduce the issue.
I hope that your latest version of spatie/pdf-to-image will become backward compatible with the old php versions. maybe just start with php version 5.


Update token Logo / URL

The new Logo URL is : https://raw.githubusercontent.com/rpinkney84/FinalFrontierSA/main/Token Logo 2 720p.png. The previous one would not resolve to anything and was an error on our part. Additionally, we would like to update the website from finalfrontier.net to finalfrontiersa.com.
Thanks!

Please note: This repository is being rebuilt to accept the new volume of token additions and modifications. PR merges will be delayed.

I agree to not ping anybody on Discord/Twitter/email about this pull request. Instead I will inquire by posting a new comment in the pull request if needed.

PRs are reviewed in bulk and and can take up to two weeks to be merged.
This repository is managed using an auto merge action. Please ensure your PR has no deleted lines, and it will be merged.
Please provide the following information for your token.
Please include change to the src/tokens/solana.tokenlist.json file in the PR.
DON'T modify any other token on the list.
At minimum each entry should have

Token Address:
Token Name:
Token Symbol:
Logo: (logo should be uploaded under assets/mainnet//*.<png/svg>)
Link to the official homepage of token:
Coingecko ID if available (https://www.coingecko.com/api/documentations/v3#/coins/get_coins__id_):

Auto merge requirements
Your pull request will be automatically merged if the following conditions are met:

Your pull request only adds new tokens to the list. Any modification to existing
tokens will require manual review to prevent unwanted modifications.

Your pull request does not touch unrelated code. In particular, reformatting changes to unrelated
code will cause the auto merge to reject your PR.

Any asset files added correspond to the token address you are adding. Asset files
must be PNG, JPG or SVG files.

Your change is valid JSON and conforms to the schema. If your change failed validation,
read the error message carefully and update your PR accordingly.

No other tokens shares the same name, symbol or address.

For example, this change would be rejected due to unrelated changes:

The bot runs every 60 minutes and bulk-merges all open pull requests to prevent conflicts.
This means that you need to wait up to 60 minutes for your pull request to be merged or reprocessed.

@TheMarstonConnell could you please reply approving this?

From my experience you need to upload the image to the repo and use a relative url from this repo. I'd sign off on this but I don't think the system allows for external URLs to be used as logos.

Logo: (logo should be uploaded under assets/mainnet//*.<png/svg>) - taken from the description of the PR.


Version 2.0

Still remaining:
Possible additions

[ ] Normalization of Image Services, Auth Services and Search Services (as they are official APIs)

[x] Image 3 parsing / utilities #20
[ ] Changes to normalization
[x] Changes to serialization (none)

[x] hasPart extension #5 | #23
[ ] Immutability changes #13

Build

[x] Merge vite/vitest migration branch #22
[x] Add CodeSandbox CI #22

[ ] Add more sandbox examples for each package

[ ] Documentation
[ ] Vault PR ready to accept these changes

Features requiring discussion:

JSON-LD Framing as serialisation option #10

Planned features
Normalization of Image Services, Auth Services and Search Services
This was something that was in very early versions, but became a difficult to maintain and stay correct - to support 2.1 and 3.0. A normalization step could upgrade the service to the latest version of the specification (even if it resolves to 2.1 for example) and Vault or other users could normalize and ingest the full image services into the store.
There are 2 approaches, splitting each into their own space in the store:
const result = normalize(p3Manifest);

result.entities.ImageService['https://example.org/image-serivce/info.json']; // An image service
result.entities.AuthService['https://example.org/auth-serivce/probe.json']; // An auth service
result.entities.SearchService['https://example.org/search-serivce/search']; // A search service

Or keeping them together in a generic Service
const result = normalize(p3Manifest);

result.entities.Service['https://example.org/image-serivce/info.json']; // An image service
result.entities.Service['https://example.org/auth-serivce/probe.json']; // An auth service
result.entities.Service['https://example.org/search-serivce/search']; // A search service

The first option would mean there may be a mix of references and nested items in resource.service but it does keep the similar formats together - the second option would add another layer of de-referencing to services which might add a bit of friction.
JSON-LD Framing as serialisation option
Currently the serialization uses code-as-configuration, with a format based on Object.fromEntries() format. As described in #10 this would allow you to pick and compose different resources together, a subset of their properties and have that generate a JSON-LD document out at the end. This format would be quite useful
Dereferenced label issue
As described in #5 there is an issue where multiple resources that are normalized (and then merged) may overwrite each other or have different labels and properties. Although this is unlikely to be fully resolved here, a first step may be to exposing the helper in the parser for merges together items for use outside, so that resources can avoid being overwritten.
Current changelog
Added

Support for navPlace and textGranularity
Fragment selectors in SpecificResources, strings and {id,type} References are now normalised, reducing the need to parse IDs to grab the ID/Type
Added expand target helper, used internally for normalization (possibly useful for content state).
New sub-package @iiif/parser/strict for fixing common mistakes in Presentation 3, with detailed feedback for implementors.
New sub-package @iiif/parser/image-3 for parsing IIIF Image API and some helpers
Test coverage across every IIIF Cookbook recipe, testing:

Parsing / Traversing the IIIF
Normalizing the IIIF correctly
Re-serializing the IIIF back to identical JSON

New traversal option for SpecificResource
New traversal option for GeoJson (e.g. from the navPlace extension)
New storing of Services when normalizing [^4]

Fixed

[presentation-2] startCanvas property on Sequences are now added to the Manifest when converting
Fixed handling Specific resources where the source is only string (inferring the correct type from the context)
Serializing Presentation 2 resources without items
Bug where AV canvases would have height and width of 0 when serializing
Bug where custom @context on Manifest was not retained during serialization
Bug where Content Resources did not keep extra properties when serializing (e.g. value or geometry)
Bug where serialization may sometimes include UNSET keyword.

Removed

posterCanvas - hangover from pre-3.0, this will be ignored
logo on non-provider resources - hangover from pre-3.0, these will be ignored[^3]
motivation field on non-Annotation resources (bug)
Traverse.traversePosterCanvas() is removed (now Traverse.traverseLinkedCanvases())

Changed

range.items[] is now normalised to either Reference<'Range'>[^1] or SpecificResource<Reference<'Canvas'>>[^2]
manifest.start is now normalised to a SpecificResource<Reference<'Canvas'>>

[^1]: A Reference<T> has the shape: { id: string, type: T } and is usually narrowed to one or more types
[^2]: SpecificResource is defined by the W3C Annotation specification, but in short you can access the original reference by accessing specificResource.source
[^3]: These properties were added to the specification pre-3.0 and then later removed.
[^4]: This does not replace the inline services with references, instead it's a parallel store of normalized services. Editing tools will have to update both. This moves the problem of multiple services with different structures and fields to the user. The normalized structures will be specifically useful for loading Image services progressively in a store without affecting the serialisation of the IIIF.

Bug with ImageService2 when converted to Presentation 2 (profile is incorrect)


HTML not escaped correctly (blocks our script from running)

Tested as part of accessibility stuff, but removing the last > from the signature breaks our comments!
As below
Sent with GitHawk</sub

I don't get this?

Open this issue on GitHawk and look at the first comment :)

Gotcha!
Sent with GitHawk

Do we just need to move these

I mean yea that would work. I'm just wondering if there's anything nefarious that could be done by this ability to essentially run anything in the UIWebView by not escaping correctly?
Almost need to find all tags where it isn't closed, and turn those into HTML entities rather than actual tags?

Is this still an issue?

Wasn't intentionally what this issue was for, but Ryans comment above viewed in the app is pretty broken (stops parsing mid way through)
Think this issue is still around too, because we don't close off any open HTML tags the JS at the bottom can't get run which means images, height calculations and preventing selection don't work

Wasn't intentionally what this issue was for, but Ryans comment above viewed in the app is pretty broken (stops parsing mid way through)

Oh lol 🤣


Use mapping lib

https://github.com/software-mansion/cairo-annotations/issues/4

https://github.com/software-mansion/cairo-annotations/pull/15

I believe we can take the following actions:

Utilize trace-data from cairo-annotations. We should deprecate trace-data in the profiler and include a message indicating that it will be removed in the next version.
-Use map_pcs_to_sierra_statement_ids in some parts of the code here: function_trace_builder.rs#L49.
Replace the existing implementation with cairo-annotations's ProfilerAnnotations instead of using the current approach in sierra_loader.rs#L45.


Add Left-Right Planarity test.

This commit implements a new function is_planar that
checks if an undirected graph can be drawn in a plane without any edge
intersections. The planarity check algorithm is based on the
Left-Right Planarity Test.
Reference: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=<IP_ADDRESS>.9208

After #497, you can use the new generator to make some test cases. Table 2 of https://www.sciencedirect.com/science/article/pii/S0166218X08000371 has the crossing numbers of the Petersen graphs, zeros in the table are planar and the rest aren't

@georgios-ts is there any update on this? It would be good to get this rebased as @enavarro51 is starting to look at adding a planar_layout() method and having some functionality around lr planarity in retworkx-core would be a good starting off point for that

@mtreinish This should be ready for review now.

@enavarro51 Thanks for taking the time to look into this.

It's in retworkx-core so we can expose it in our public rust API but there is also a python interface in retworkx that uses internally the implementation written in  retworkx-core.
As you said, to create the embedding we need a PlanarEmbedding structure. This was additional work and I didn't want to overwhelm this PR since it was already quite long. But yeah, I do believe that the creation of the embedding should be separate from the public is_planar test. IMO, we should have two public functions: a test that returns true/false for planar/non-planar graphs and a method that creates a planar layout. All other function/structures (e.g  PlanarEmbedding) should be private.
It sounds like a good plan. After implementing PlanarEmbedding you can leverage the lr_visit_ordered_dfs_tree function to implement Algorithm 6 in the linked paper (the NetworkX equivalent https://github.com/networkx/networkx/blob/main/networkx/algorithms/planarity.py#L650).

If you have any other questions feel free to reach out.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

425 of 433 (98.15%)  changed or added relevant lines in 3 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage increased (+0.06%) to 97.164%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

rustworkx-core/src/planar/lr_planar.rs
420
428
98.13%

Files with Coverage Reduction
New Missed Lines
%

src/shortest_path/all_pairs_bellman_ford.rs
1
99.44%

Totals

Change from base Build<PHONE_NUMBER>:
0.06%

Covered Lines:
13087

Relevant Lines:
13469

💛  - Coveralls


Rails <IP_ADDRESS> - icons are not being loaded with Bulma

Font Awesome icons are not being loaded when using the Bulma CSS framework although Bulma expects it to work.  My app is running on Ruby 3 with Rails <IP_ADDRESS> and this is in my Gemfile:

gem "bulma-rails", "~> 0.9.1"
gem "font-awesome-rails", "<IP_ADDRESS>"

I initially tried font-awesome-rails with no version (the latest version).  Here is my application.scss file:

@import "bulma";
@import "font-awesome";

Rubymine says Cannot resolve file 'font-awesome' and I'm really not sure of the cleanest way to get icons showing up in my browser.
Any ideas?
Originally posted by @stephenhuey in https://github.com/bokmann/font-awesome-rails/issues/210#issuecomment-825039530

@stephenhuey This option works for me, add into your styles file the following line.
*= require font-awesome
It doesn't matter if your file is .css or scss.


how to register custom object into goja like before?

hi,
i want to register    custom object like before,

define object class type in runtime,and init register it.
write builtin_custom_object,define property and function
how to upgrade my code to new version?

What you're describing sounds like it should be possible to do with the public API. If not, please provide more details.
Using the internal API is not recommended as there is no compatibility guarantee whatsoever, your code may break (including silently) with each new release.

the following code,show why i need internal api , i write ContextObject which include parameter map,
i need the script write just like this
context["name"]="a";
context["qty"]=1;
in the backend goja side, i will write the added parameters into my context.parameter map object, if using public api, how to do it .
the following is my internal api code


Some mod pp's are wrong

I came here to say that the PP calculations for some of the mods were wrong.
const map = fs.readFileSync('test.osu', 'utf-8'); //https://osu.ppy.sh/beatmapsets/1856862#taiko/3825077
const beatmap = new rosu.Beatmap(map);

//HD: 8
//HR: 16
//EZ: 2
//DT: 64
//HT: 256

let difficultyArgs = {
    mods: Tested with the above values.
};

let difficulty = new rosu
    .Difficulty(difficultyArgs)
    .calculate(beatmap);

const PP = new rosu
    .Performance()
    .calculate(difficulty);

console.log(PP.pp);

Result
Original PP => rosu-pp-js
HDSS: 759pp =><PHONE_NUMBER>341881(same as NM)
HRSS: 779pp =><PHONE_NUMBER>710395
EZSS: 620pp =><PHONE_NUMBER>614597
DTSS: 1275pp => 1275.1074471835482(Correct)
HTSS: 439pp =><PHONE_NUMBER>388199(Correct)
The calculation seems to be correct for mods that change speed.

Mh true, can easily reproduce these incorrect values. Will work on a fix ASAP 👍

Actually, everything is working as intended.
Difficulty attributes don't contain arguments that were passed to the difficulty calculation. Hence, when using those attributes instead of using a beatmap, arguments still have to be specified, namely the same ones you used for calculating the difficulty attributes.
const map = fs.readFileSync('test.osu', 'utf-8'); //https://osu.ppy.sh/beatmapsets/1856862#taiko/3825077
const beatmap = new rosu.Beatmap(map);

let difficultyArgs = {
    mods: Tested with the above values.
};

let difficulty = new rosu
    .Difficulty(difficultyArgs)
    .calculate(beatmap);

const PP = new rosu
    .Performance(difficultyArgs) // <-
    .calculate(difficulty);

console.log(PP.pp);

This one works.

Sorry, I didn't understand "Same field as Difficulty, but also the next field:" in the performance section, I thought if I passed the mod with Difficulty it would work.
It is working properly now! Thank you!!