cropBox orientation switch

Hi,
I'm using cropper within TYPO3 CMS, where cropper is used for image manipulations within the TYPO3 backend. Editors can crop images when adding images to content elements. TYPO3 CMS actually uses just a bunch of the cropper's feature. At first, thanks for such a great tool!
What I actually miss is the possibility to switch/toggle the actual cropBox orientation between landscape/portrait.
For example, this could be an image like the one of google chrome's responsive toolbar

The location of the toggle/button could be placed within the crop area. For example

After thinking about, there are some open questions:

If you give an editor some cropRatios, basically a orientation change of the cropBox means different cropRatio. If you want to only offer a cropRatio "3:2" (because this image is used for a landscape image as fullwidth sujet image at the top of a website) in some situations it must be possible to disable/activate such a "cropBox orientation switch".
Maybe something like if there's an available cropRatio 3:2 && 2:3 a cropBox orientation switch can be activated..

What do you think about such a builtin feature?

Just use the methods to customize it.

If every feature build in the core cropper code, then it will be becoming more and more bloated, then it will be hard to maintain and dead at the end.

Many thanks!


docs: change file paths to match template

the blue-build/template repo has these files ending in .yml not .yaml so probably should here as well

Thanks for catching that!


Queries with fragments don't work with Artemis v7

Bug description
After upgrading to version 7 in order to migrate my app to null-safety, I ran into an issue where my queries would fail. After some investigating I narrowed it down to the use of fragments in my queries.
I made a minimal working example: https://github.com/paoloposo/artemis_test
It uses the Pokemon sample API. There are two queries in the example that request the same data. One has all the fields directly in the query:
query withoutFragments {
    pokemon(name: "Blastoise") {
        id
        name
        height {
            minimum
            maximum
        }
        weight {
            minimum
            maximum
        }
        fleeRate
    }
}

The other one uses a fragment:
fragment PokemonDetails on Pokemon {
    id
    name
    height {
        minimum
        maximum
    }
    weight {
        minimum
        maximum
    }
    fleeRate
}

query withFragments {
    pokemon(name: "Blastoise") {
        ...PokemonDetails
    }
}

The first one, without the fragment, produces the expected result:
{pokemon: {id: UG9rZW1vbjowMDk=, name: Blastoise, height: {minimum: 1.4m, maximum: 1.8m}, weight: {minimum: 74.81kg, maximum: 96.19kg}, fleeRate: 0.05}}

The one with the fragment produces this, however:
{pokemon: null}

Specs
Artemis version: 7.1.1-beta.1

build.yaml:
targets:
  $default:
    sources:
      - lib/**
      - graphql/**
    builders:
      json_serializable:
        options:
          include_if_null: false
      artemis:
        options:
#          fragments_glob: graphql/fragments/*.graphql # this doesn't work either
          schema_mapping:
            - schema: graphql/schema.graphql
              queries_glob: graphql/operations/**.graphql
              output: lib/graphql/graphql_api.dart
              fragments_glob: graphql/fragments/*.graphql

Artemis output:
Precompiling executable...
Precompiled build_runner:build_runner.
[INFO] Entrypoint:Generating build script...
[INFO] Entrypoint:Generating build script completed, took 298ms

[INFO] Bootstrap:Precompiling build script......
[INFO] Bootstrap:Precompiling build script... completed, took 6.2s

[FINE] Bootstrap:Core package locations file does not exist
[WARNING] build.fallback:
The package `artemis_test` does not include some required sources in any of its targets (see their build.yaml file).
The missing sources are:
  - $package$
[INFO] BuildDefinition:Initializing inputs
[INFO] BuildDefinition:Building new asset graph...
[INFO] BuildDefinition:Building new asset graph completed, took 589ms

[INFO] BuildDefinition:Checking for unexpected pre-existing outputs....
[INFO] BuildDefinition:Checking for unexpected pre-existing outputs. completed, took 1ms

[INFO] Build:Running build...
[FINE] artemis:artemis on lib/$lib$:-> Class
[FINE] artemis:artemis on lib/$lib$:┌ [TypeName(name:r'withFragments'), TypeName(name:r'Query')][Query][null null] ()
[FINE] artemis:artemis on lib/$lib$:|   [TypeName(name:r'withFragments'), TypeName(name:r'Query')][Query][ClassName(name:r'Pokemon') ClassPropertyName(name:r'pokemon')] -> WithFragments$Query$Pokemon?
[FINE] artemis:artemis on lib/$lib$:|   -> Class
[FINE] artemis:artemis on lib/$lib$:|   ┌ [TypeName(name:r'withFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon')][Pokemon][null null] ()
[FINE] artemis:artemis on lib/$lib$:|   |   [TypeName(name:r'withFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon')]: ... expanding PokemonDetails
[FINE] artemis:artemis on lib/$lib$:|   |   |   -> Class
[FINE] artemis:artemis on lib/$lib$:|   |   |   ┌ [TypeName(name:r'withFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon'), FragmentName(name:r'PokemonDetailsMixin'), ClassName(name:r'PokemonDimension')][PokemonDimension][null null] ()
[FINE] artemis:artemis on lib/$lib$:|   |   |   |   [TypeName(name:r'withFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon'), FragmentName(name:r'PokemonDetailsMixin'), ClassName(name:r'PokemonDimension')][PokemonDimension][ClassName(name:r'String') ClassPropertyName(name:r'minimum')] -> String?
[FINE] artemis:artemis on lib/$lib$:|   |   |   |   [TypeName(name:r'withFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon'), FragmentName(name:r'PokemonDetailsMixin'), ClassName(name:r'PokemonDimension')][PokemonDimension][ClassName(name:r'String') ClassPropertyName(name:r'maximum')] -> String?
[FINE] artemis:artemis on lib/$lib$:|   |   |   └ [TypeName(name:r'withFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon'), FragmentName(name:r'PokemonDetailsMixin'), ClassName(name:r'PokemonDimension')][PokemonDimension][null null] ()
[FINE] artemis:artemis on lib/$lib$:|   |   |   <- Generated class WithFragments$Query$Pokemon$PokemonDetailsMixin$PokemonDimension.
[FINE] artemis:artemis on lib/$lib$:|   |   |   -> Class
[FINE] artemis:artemis on lib/$lib$:|   |   |   ┌ [TypeName(name:r'withFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon'), FragmentName(name:r'PokemonDetailsMixin'), ClassName(name:r'PokemonDimension')][PokemonDimension][null null] ()
[FINE] artemis:artemis on lib/$lib$:|   |   |   |   [TypeName(name:r'withFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon'), FragmentName(name:r'PokemonDetailsMixin'), ClassName(name:r'PokemonDimension')][PokemonDimension][ClassName(name:r'String') ClassPropertyName(name:r'minimum')] -> String?
[FINE] artemis:artemis on lib/$lib$:|   |   |   |   [TypeName(name:r'withFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon'), FragmentName(name:r'PokemonDetailsMixin'), ClassName(name:r'PokemonDimension')][PokemonDimension][ClassName(name:r'String') ClassPropertyName(name:r'maximum')] -> String?
[FINE] artemis:artemis on lib/$lib$:|   |   |   └ [TypeName(name:r'withFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon'), FragmentName(name:r'PokemonDetailsMixin'), ClassName(name:r'PokemonDimension')][PokemonDimension][null null] ()
[FINE] artemis:artemis on lib/$lib$:|   |   |   <- Generated class WithFragments$Query$Pokemon$PokemonDetailsMixin$PokemonDimension.
[FINE] artemis:artemis on lib/$lib$:|   └ [TypeName(name:r'withFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon')][Pokemon][null null] ()
[FINE] artemis:artemis on lib/$lib$:|   <- Generated class WithFragments$Query$Pokemon.
[FINE] artemis:artemis on lib/$lib$:└ [TypeName(name:r'withFragments'), TypeName(name:r'Query')][Query][null null] ()
[FINE] artemis:artemis on lib/$lib$:<- Generated class WithFragments$Query.
[FINE] artemis:artemis on lib/$lib$:-> Fragment
[FINE] artemis:artemis on lib/$lib$:┌ [][PokemonDetails]
[FINE] artemis:artemis on lib/$lib$:|   [FragmentName(name:r'PokemonDetails')][Pokemon][ClassName(name:r'ID') ClassPropertyName(name:r'id')] -> String
[FINE] artemis:artemis on lib/$lib$:|   [FragmentName(name:r'PokemonDetails')][Pokemon][ClassName(name:r'String') ClassPropertyName(name:r'name')] -> String?
[FINE] artemis:artemis on lib/$lib$:|   [FragmentName(name:r'PokemonDetails')][Pokemon][ClassName(name:r'PokemonDimension') ClassPropertyName(name:r'height')] -> PokemonDetailsMixin$PokemonDimension?
[FINE] artemis:artemis on lib/$lib$:|   -> Class
[FINE] artemis:artemis on lib/$lib$:|   ┌ [FragmentName(name:r'PokemonDetails'), ClassName(name:r'PokemonDimension')][PokemonDimension][null null] ()
[FINE] artemis:artemis on lib/$lib$:|   |   [FragmentName(name:r'PokemonDetails'), ClassName(name:r'PokemonDimension')][PokemonDimension][ClassName(name:r'String') ClassPropertyName(name:r'minimum')] -> String?
[FINE] artemis:artemis on lib/$lib$:|   |   [FragmentName(name:r'PokemonDetails'), ClassName(name:r'PokemonDimension')][PokemonDimension][ClassName(name:r'String') ClassPropertyName(name:r'maximum')] -> String?
[FINE] artemis:artemis on lib/$lib$:|   └ [FragmentName(name:r'PokemonDetails'), ClassName(name:r'PokemonDimension')][PokemonDimension][null null] ()
[FINE] artemis:artemis on lib/$lib$:|   <- Generated class PokemonDetailsMixin$PokemonDimension.
[FINE] artemis:artemis on lib/$lib$:|   [FragmentName(name:r'PokemonDetails')][Pokemon][ClassName(name:r'PokemonDimension') ClassPropertyName(name:r'weight')] -> PokemonDetailsMixin$PokemonDimension?
[FINE] artemis:artemis on lib/$lib$:|   -> Class
[FINE] artemis:artemis on lib/$lib$:|   ┌ [FragmentName(name:r'PokemonDetails'), ClassName(name:r'PokemonDimension')][PokemonDimension][null null] ()
[FINE] artemis:artemis on lib/$lib$:|   |   [FragmentName(name:r'PokemonDetails'), ClassName(name:r'PokemonDimension')][PokemonDimension][ClassName(name:r'String') ClassPropertyName(name:r'minimum')] -> String?
[FINE] artemis:artemis on lib/$lib$:|   |   [FragmentName(name:r'PokemonDetails'), ClassName(name:r'PokemonDimension')][PokemonDimension][ClassName(name:r'String') ClassPropertyName(name:r'maximum')] -> String?
[FINE] artemis:artemis on lib/$lib$:|   └ [FragmentName(name:r'PokemonDetails'), ClassName(name:r'PokemonDimension')][PokemonDimension][null null] ()
[FINE] artemis:artemis on lib/$lib$:|   <- Generated class PokemonDetailsMixin$PokemonDimension.
[FINE] artemis:artemis on lib/$lib$:|   [FragmentName(name:r'PokemonDetails')][Pokemon][ClassName(name:r'Float') ClassPropertyName(name:r'fleeRate')] -> double?
[FINE] artemis:artemis on lib/$lib$:└ [][PokemonDetails]
[FINE] artemis:artemis on lib/$lib$:<- Generated fragment PokemonDetailsMixin.
[FINE] artemis:artemis on lib/$lib$:-> Class
[FINE] artemis:artemis on lib/$lib$:┌ [TypeName(name:r'withoutFragments'), TypeName(name:r'Query')][Query][null null] ()
[FINE] artemis:artemis on lib/$lib$:|   [TypeName(name:r'withoutFragments'), TypeName(name:r'Query')][Query][ClassName(name:r'Pokemon') ClassPropertyName(name:r'pokemon')] -> WithoutFragments$Query$Pokemon?
[FINE] artemis:artemis on lib/$lib$:|   -> Class
[FINE] artemis:artemis on lib/$lib$:|   ┌ [TypeName(name:r'withoutFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon')][Pokemon][null null] ()
[FINE] artemis:artemis on lib/$lib$:|   |   [TypeName(name:r'withoutFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon')][Pokemon][ClassName(name:r'ID') ClassPropertyName(name:r'id')] -> String
[FINE] artemis:artemis on lib/$lib$:|   |   [TypeName(name:r'withoutFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon')][Pokemon][ClassName(name:r'String') ClassPropertyName(name:r'name')] -> String?
[FINE] artemis:artemis on lib/$lib$:|   |   [TypeName(name:r'withoutFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon')][Pokemon][ClassName(name:r'PokemonDimension') ClassPropertyName(name:r'height')] -> WithoutFragments$Query$Pokemon$PokemonDimension?
[FINE] artemis:artemis on lib/$lib$:|   |   -> Class
[FINE] artemis:artemis on lib/$lib$:|   |   ┌ [TypeName(name:r'withoutFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon'), ClassName(name:r'PokemonDimension')][PokemonDimension][null null] ()
[FINE] artemis:artemis on lib/$lib$:|   |   |   [TypeName(name:r'withoutFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon'), ClassName(name:r'PokemonDimension')][PokemonDimension][ClassName(name:r'String') ClassPropertyName(name:r'minimum')] -> String?
[FINE] artemis:artemis on lib/$lib$:|   |   |   [TypeName(name:r'withoutFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon'), ClassName(name:r'PokemonDimension')][PokemonDimension][ClassName(name:r'String') ClassPropertyName(name:r'maximum')] -> String?
[FINE] artemis:artemis on lib/$lib$:|   |   └ [TypeName(name:r'withoutFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon'), ClassName(name:r'PokemonDimension')][PokemonDimension][null null] ()
[FINE] artemis:artemis on lib/$lib$:|   |   <- Generated class WithoutFragments$Query$Pokemon$PokemonDimension.
[FINE] artemis:artemis on lib/$lib$:|   |   [TypeName(name:r'withoutFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon')][Pokemon][ClassName(name:r'PokemonDimension') ClassPropertyName(name:r'weight')] -> WithoutFragments$Query$Pokemon$PokemonDimension?
[FINE] artemis:artemis on lib/$lib$:|   |   -> Class
[FINE] artemis:artemis on lib/$lib$:|   |   ┌ [TypeName(name:r'withoutFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon'), ClassName(name:r'PokemonDimension')][PokemonDimension][null null] ()
[FINE] artemis:artemis on lib/$lib$:|   |   |   [TypeName(name:r'withoutFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon'), ClassName(name:r'PokemonDimension')][PokemonDimension][ClassName(name:r'String') ClassPropertyName(name:r'minimum')] -> String?
[FINE] artemis:artemis on lib/$lib$:|   |   |   [TypeName(name:r'withoutFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon'), ClassName(name:r'PokemonDimension')][PokemonDimension][ClassName(name:r'String') ClassPropertyName(name:r'maximum')] -> String?
[FINE] artemis:artemis on lib/$lib$:|   |   └ [TypeName(name:r'withoutFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon'), ClassName(name:r'PokemonDimension')][PokemonDimension][null null] ()
[FINE] artemis:artemis on lib/$lib$:|   |   <- Generated class WithoutFragments$Query$Pokemon$PokemonDimension.
[FINE] artemis:artemis on lib/$lib$:|   |   [TypeName(name:r'withoutFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon')][Pokemon][ClassName(name:r'Float') ClassPropertyName(name:r'fleeRate')] -> double?
[FINE] artemis:artemis on lib/$lib$:|   └ [TypeName(name:r'withoutFragments'), TypeName(name:r'Query'), ClassName(name:r'Pokemon')][Pokemon][null null] ()
[FINE] artemis:artemis on lib/$lib$:|   <- Generated class WithoutFragments$Query$Pokemon.
[FINE] artemis:artemis on lib/$lib$:└ [TypeName(name:r'withoutFragments'), TypeName(name:r'Query')][Query][null null] ()
[FINE] artemis:artemis on lib/$lib$:<- Generated class WithoutFragments$Query.
[INFO] build_resolvers:Generating SDK summary...
[INFO] Heartbeat:3.0s elapsed, 1/4 actions completed.
[INFO] build_resolvers:Generating SDK summary completed, took 2.7s

[INFO] Heartbeat:4.2s elapsed, 3/4 actions completed.
[FINE] json_serializable:json_serializable on lib/graphql/graphql_api.graphql.dart:Running JsonSerializableGenerator - 1 of 2
[FINE] json_serializable:json_serializable on lib/graphql/graphql_api.graphql.dart:Running JsonLiteralGenerator - 2 of 2
[INFO] Build:Running build completed, took 4.5s

[INFO] Build:Caching finalized dependency graph...
[INFO] Build:Caching finalized dependency graph completed, took 19ms

[INFO] Build:Succeeded after 4.5s with 4 outputs (8 actions)

@paoloposo
set fetchPolicy: FetchPolicy.noCache and everything will work

@paoloposo
it seems that you are missing store setup for cache
https://github.com/zino-app/graphql-flutter/tree/beta/packages/graphql#persistence

If you look on your example the error is somewhere in cache
cause two queries are identical
the difference is the suource that graphql tries to get results

@vasilich6107 May I know how to fix this issue? Using fragments in Artemis suddenly return null when used with flutter_graphql, unless I use FetchPolicy.noCache
https://github.com/zino-hofmann/graphql-flutter/issues/994

Is this fixed? I'm using ^7.8.0-beta and fragment is still not working

Hi @vasilich6107 thanks for your quick response. Yes, I have to use FetchPolicy.noCache to make my fragment work, like @samuelchanx mentioned

See #393 for the solution


9 Box Grid - Outdated?

Hi @omaciel,
While I appreciate the initiative for the tool (which looks great), I want to share my findings (and express my opinions) on the 9 grid box a little bit. I think the 9-box grid has become outdated for several key reasons:
Simplicity and Rigidity: The 9-box grid oversimplifies employee capabilities by forcing people into rigid boxes, potentially ignoring their nuanced contributions. Employees with different skills or non-linear growth paths may not fit neatly into these boxes, leading to inaccurate assessments.
Lack of Objectivity: Subjectivity in assigning employees to boxes is a common criticism. Managers’ biases—conscious or unconscious—can influence where employees are placed, which may overlook high-potential employees who don’t conform to traditional expectations.
No Focus on Development: The grid emphasizes categorization over personal development. While it shows where employees stand, it doesn’t provide guidance on how to grow their skills or transition to higher levels of performance.
These key reasons make it especially unsuitable for organizations with diverse talent pools, including neurodiverse employees, such as those with ADHD. Individuals with ADHD often exhibit high potential in areas like creativity and problem-solving but might struggle with traditional performance metrics based on linear career progression or consistent output. The rigid structure of the 9-box grid might undervalue their contributions, particularly in areas where they excel beyond standard measures of performance.
On the other hand, with relate to the key reasons above, my other findings say that, the 9-box grid also negatively impacts historically marginalized employees by reinforcing existing workplace biases and limiting opportunities for advancement. To categorize/itemize:
Bias and Stereotyping -> The grid often reflects the biases of managers, who might consciously or unconsciously assess marginalized employees—such as neurodiverse people, women, and people of color—based on stereotypes or preconceived notions rather than objective performance measures. This can result in these employees being placed in lower categories despite their capabilities.
Narrow Definition of Potential -> The concept of "potential" used in the 9-box grid often aligns with traditional leadership norms, which historically favor dominant groups. Marginalized employees may exhibit potential in ways that aren’t recognized by these narrow definitions, leading to their exclusion from opportunities for advancement.
Career Growth Inequities -> The grid’s lack of focus on personal development paths means that employees from marginalized groups may find it more difficult to challenge negative evaluations or grow beyond the limitations of their assigned box. This can perpetuate inequities in career progression, as the system doesn’t offer a clear way to address these issues or promote fairness in advancement.
IMO, a more flexible, individualized approach for performance and potential evaluation will be better accommodate (esp. marginalized and/or diverse) talents and the unique strengths they bring to the workplace.
To recap, aiming the tool: This is a very useful tool and I appreciate the efforts but I wish it served a better, a more up-to-date approach. (For people who still prefer using 9 Box Grid it is obvious it will be very useful tho.)
Nothing but my thoughts; my 2 cents.
My best
Resources:

https://www.staffcircle.com/blogs/9-box-grid/
https://peoplefirstps.medium.com/behind-the-scenes-how-a-9-box-talent-review-model-may-hurt-you-professionally-9c4d113f05bd
https://www.cultureamp.com/blog/9-box-grid-for-succession-planning

Thank you for your opinion.


vocab + psql CRUD updates

Overview
Addition of vocab route and non spatial postgresql provider.
HTML template for vocab pages
Addition of license information
CRUD operations for psql
Related Issue / Discussion
Additional Information
Contributions and Licensing
(as per https://github.com/geopython/pygeoapi/blob/master/CONTRIBUTING.md#contributions-and-licensing)

[ ] I'd like to contribute [feature X|bugfix Y|docs|something else] to pygeoapi. I confirm that my contributions to pygeoapi will be compatible with the pygeoapi license guidelines at the time of contribution.
[ ] I have already previously agreed to the pygeoapi Contributions and Licensing Guidelines

@isedwards


Login Page

@Apoorv-cloud , Hey can you assign me this issue sothat i can contribute with a login page using html and css
it will be very helpful
thank you.

@sidhrth04 I do not require this repository to have a login page in it. You can add your playlist card instead.


Not working on Miui14（Android 13）

Not working on Miui14（Android 13）
Device: Xiaomi mix fold 2
Os: Miui 14.0.3

What framework?
And Xposed log & /system/framework/framework.jar please

LSPosed_2023-02-16T21_30_51.213097.zip
framework.zip
FYI

Not sure what MIUI do in ForceDarkHelperStub, but I think this may be the reason
And, it seems that MIUI has its own per-app dark option? Doesn't that work?

And, please make sure the option in developer settings works for your target apps

The miui's dark mode by per-app only supports a few apps not all apps since miui13. And it only functions after you enabled the system dark mode.
I use force dark cause i'd prefer to force some app（com.sohu.inputmethod.sogou.xiaomi）  into dark mode without system dark mode enabled.
I found nothing about “smart dark” or “force dark” or something like that.

预期行为，ForceDark 只有在系统暗黑模式开着的情况下才有用（其实我之前以为 Android 13 本来 ForceDark 就挂了也是因为这个）
看看 https://github.com/KieronQuinn/DarQ 之类的？

README 都有中文了，没要求英文就别用英文开 issue 了，咱俩都难受。。。


Extension always show building when using typescript

VSCode Version: 1.47.2
OS Version: windows 10

Steps to Reproduce:
1.https://code.visualstudio.com/api/get-started/your-first-extension
2.command yo code to create ts extesion.
3.run extension in vscode then always building.
4.js extension is OK.

Does this issue occur when all extensions are disabled?: Yes

Temporarily, you can replace tasks.json with below code.
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "npm",
			"script": "watch",
			"problemMatcher": {
				"base": "$tsc-watch",
				"background": {
					"activeOnStart": true,
					"beginsPattern": ".*Starting compilation in watch mode\\.\\.\\.",
					"endsPattern": ".*Watching for file changes\\."
				}
			},
			"isBackground": true,
			"presentation": {
				"reveal": "never"
			},
			"group": {
				"kind": "build",
				"isDefault": true
			}
		}
	]
}

Temporarily, you can replace tasks.json with below code.
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "npm",
			"script": "watch",
			"problemMatcher": {
				"base": "$tsc-watch",
				"background": {
					"activeOnStart": true,
					"beginsPattern": ".*Starting compilation in watch mode\\.\\.\\.",
					"endsPattern": ".*Watching for file changes\\."
				}
			},
			"isBackground": true,
			"presentation": {
				"reveal": "never"
			},
			"group": {
				"kind": "build",
				"isDefault": true
			}
		}
	]
}

I tried it, nothing changed, still showing building

I meet this problem as well. Solved by changing "npm watch" to "npm compile", at the cost of .ts not being able to hot reload.

I meet this problem as well. Solved by changing "npm watch" to "npm compile", at the cost of .ts not being able to hot reload.

Well done. be sloved.

The tsc-watch problem matcher is not locale agnostic: https://github.com/microsoft/vscode/issues/46373
You can modify the problem matcher to your locale.


Issue with the custom domain

Had a case with the user enabling the custom domain functionality in the plugin before it's ready to use (for instance while the DNS/CNAME changes are in progress as sometimes it takes minutes while sometimes hours). Normally in our docs we ask the user never to change the code on their site until they can verify that the script is being loaded from the custom domain (yoursubdomain.yourdomain.com/js/index.js).
I wonder if there's a way to do something like this in the plugin to prevent the user enable the custom domain before it's ready to use? Or to somehow fall back to the default script if the custom domain is not ready and then switch to using the custom domain when the CNAME change is ready?

@metmarkosaric I will double-check on this. I think that checking the url availability with file_get_contents or some better way would help us do this. We need to check it every hour or every 15 mins with a cron job for the status. Once we get that the url for custom domains are working we can then auto-switch to custom domains url.

@metmarkosaric I will double-check on this. I think that checking the url availability with file_get_contents or some better way would help us do this. We need to check it every hour or every 15 mins with a cron job for the status. Once we get that the url for custom domains are working we can then auto-switch to custom domains url.

that seems like a good way to do this! in most cases the integration takes 2-3 minutes and in some cases it may take up to 4 hours or so all depending on the DNS process. thanks @mehul0810!

that seems like a good way to do this! in most cases the integration takes 2-3 minutes and in some cases it may take up to 4 hours or so all depending on the DNS process. thanks @mehul0810!

closing this as custom domains are no longer that relevant and we will remove them from the plugin


Fail to install via Carthage when Swiftlint 0.22.0 is installed

Hi,
I'm noticing that Carthage build for ProcedureKit fails for Swiftlint issues related to changes done in Swiftlint 0.22.0.
My fix for now was to downgrade the version to 0.21.0.
IS there any possibility you can fix the errors please?

You can build from development at the moment, put this in your Cartfile:
github "ProcedureKit/ProcedureKit" "development"

then update with: carthage update --no-use-binaries

Hi,
by building from development, I am seeing another issue:
/Users/fjeu0001/Documents/Dev/networking-ios/Carthage/Checkouts/ProcedureKit/Sources/ProcedureKitLocation/LocationSupport.swift:94:13: error: 'startUpdatingLocation()' is only available on watchOS application extension 3.0 or newer
            startUpdatingLocation()
            ^
/Users/fjeu0001/Documents/Dev/networking-ios/Carthage/Checkouts/ProcedureKit/Sources/ProcedureKitLocation/LocationSupport.swift:94:13: note: add 'if #available' version check
            startUpdatingLocation()
            ^
/Users/fjeu0001/Documents/Dev/networking-ios/Carthage/Checkouts/ProcedureKit/Sources/ProcedureKitLocation/LocationSupport.swift:92:10: note: add @available attribute to enclosing instance method
    func pk_startUpdatingLocation() {
         ^
/Users/fjeu0001/Documents/Dev/networking-ios/Carthage/Checkouts/ProcedureKit/Sources/ProcedureKitLocation/LocationSupport.swift:86:1: note: add @available attribute to enclosing extension
extension CLLocationManager: LocationServicesProtocol {
^
** BUILD FAILED **
The following build commands failed:
	CompileSwift normal armv7k
	CompileSwiftSources normal armv7k com.apple.xcode.tools.swift.compiler

If I use Carthage with ProcedureKit 4.3.2, I am seeing an issue related to swiftLint:
The code below:
(_currentEvaluationContext == nil, "Evaluating the same Condition twice is not supported.")
Is replaced by:
assert(_currentEvaluationContext =, "Evaluating the same Condition twice is not supported."

Hi @flopIrish @dalu93 - this is now fixed.

$ carthage update
*** Fetching ProcedureKit
*** Checking out ProcedureKit at "4.4.0"
*** xcodebuild output can be found in /var/folders/36/tvprlgf11qg3c4nh0675qgz00000gn/T/carthage-xcodebuild.gG4TdK.log
*** Building scheme "ProcedureKit" in ProcedureKit.xcodeproj
*** Building scheme "ProcedureKitMobile" in ProcedureKit.xcodeproj
*** Building scheme "ProcedureKitCloud" in ProcedureKit.xcodeproj
*** Building scheme "ProcedureKitTV" in ProcedureKit.xcodeproj
*** Building scheme "TestingProcedureKit" in ProcedureKit.xcodeproj
*** Building scheme "Stress Tests" in ProcedureKit.xcodeproj
*** Building scheme "ProcedureKitLocation" in ProcedureKit.xcodeproj
*** Building scheme "ProcedureKitNetwork" in ProcedureKit.xcodeproj
*** Building scheme "ProcedureKitMac" in ProcedureKit.xcodeproj
$ cat Cartfile
github "ProcedureKit/ProcedureKit"

thanks @danthorpe !


[Incubator][VC]Revise demo.md

This change revises the virtualcluster demo readme file to provide more details about the setup and the experiments.

/lgtm
/approve


 For example:

Uncached Graphql Queries can take up to 20s in comparsion to a shared hosting where the same query take less than > 1s
CP Call are slower than excpected
Installing updates and plugins sometimes ends in a timeout

We use a external database container (MySQL) on a docker server on the same network, the connection from the dev machines are 1GB/s or even 10GB/s.
Running Craft instances based on the provided docker images with the same project and and the external database or internal server yields good performance.
Are the nitro containers somehow restricted in ressource usage or are there any limits which can be leveraged?
Steps to reproduce

Spin up nitro container
Watch it beeing slow

Additional info

Nitro version: 2.0.8
Docker version: 20.10.8, build 3967b7d
OS: macOS Big Sur 11.5.2 (20G95)

Running Craft instances based on the provided docker images with the same project and and the external database or internal server yields good performance.

@jan-thoma are you able to share details about this setup where you're seeing good performance? (e.g. is it docker-compose based, something else?)
Also if you're able to send over something reproducible (project config files, composer.json/lock, nitro config) that would help me do a better test.

@timkelty
Here's an docker-compose file we use in production. We use traefik as reverse proxy for our containers. The Fronted is a Vite-SSR container which shouldn't matter much.
We use this setup primarily on a 16C/32T Machine with 64GB RAM and standard SATA-SSD, which runs fast as hell. Even on a Macbook Pro 2016 with 4C/8T and 16GB Ram it runs magnitudes faster than the nitro containers.
version: '3.2'
services:
    node:
        image: registry.io.t-k-f.ch/tkf/tkf-next-3-frontend:stable
        restart: always
        networks:
            - external
        depends_on:
            - craft
        labels:
            - "traefik.enable=true"
            - "traefik.docker.network=${TRAEFIK_NETWORK}"

            - "traefik.http.routers.${TRAEFIK_NAME_FRONTEND}.rule=Host(${TRAEFIK_HOST_FRONTEND})"
            - "traefik.http.routers.${TRAEFIK_NAME_FRONTEND}.entrypoints=websecure"
            - "traefik.http.routers.${TRAEFIK_NAME_FRONTEND}.tls.certresolver=letsencrypt-tls"
            - "traefik.http.routers.${TRAEFIK_NAME_FRONTEND}.middlewares=${TRAEFIK_NAME_FRONTEND}-www-to-non-www"

            - "traefik.http.middlewares.${TRAEFIK_NAME_FRONTEND}-www-to-non-www.redirectregex.regex=^https://www.(.*)"
            - "traefik.http.middlewares.${TRAEFIK_NAME_FRONTEND}-www-to-non-www.redirectregex.replacement=https://$${1}"
            - "traefik.http.middlewares.${TRAEFIK_NAME_FRONTEND}-www-to-non-www.redirectregex.permanent=true"

            - "traefik.http.services.${TRAEFIK_NAME_FRONTEND}.loadbalancer.server.port=${TRAEFIK_PORT_FRONTEND}"
        environment:
            - VITE_APP_TITLE=${VITE_APP_TITLE}
            - VITE_APP_GRAPHQL_API=${VITE_APP_GRAPHQL_API}
            - VITE_APP_CACHE_PAGES=${VITE_APP_CACHE_PAGES}
            - VITE_APP_CACHE_AGE=${VITE_APP_CACHE_AGE}
    craft:
        image: registry.io.t-k-f.ch/tkf/tkf-next-3-backend:stable
        restart: always
        networks:
            - external
            - internal
        volumes:
            - backend:/app/web/data
        depends_on:
            - mysql
        labels:
            - "traefik.enable=true"
            - "traefik.docker.network=${TRAEFIK_NETWORK}"

            - "traefik.http.routers.${TRAEFIK_NAME_BACKEND}.rule=Host(${TRAEFIK_HOST_BACKEND})"
            - "traefik.http.routers.${TRAEFIK_NAME_BACKEND}.entrypoints=websecure"
            - "traefik.http.routers.${TRAEFIK_NAME_BACKEND}.tls.certresolver=letsencrypt-tls"
            - "traefik.http.routers.${TRAEFIK_NAME_BACKEND}.middlewares=${TRAEFIK_NAME_BACKEND}-www-to-non-www"

            - "traefik.http.middlewares.${TRAEFIK_NAME_BACKEND}-www-to-non-www.redirectregex.regex=^https://www.(.*)"
            - "traefik.http.middlewares.${TRAEFIK_NAME_BACKEND}-www-to-non-www.redirectregex.replacement=https://$${1}"
            - "traefik.http.middlewares.${TRAEFIK_NAME_BACKEND}-www-to-non-www.redirectregex.permanent=true"

            - "traefik.http.services.${TRAEFIK_NAME_BACKEND}.loadbalancer.server.port=${TRAEFIK_PORT_BACKEND}"
        environment:
            - DB_DRIVER=${DB_DRIVER}
            - DB_SERVER=${DB_SERVER}
            - DB_PORT=${DB_PORT}
            - DB_DATABASE=${DB_DATABASE}
            - DB_USER=${DB_USER}
            - DB_PASSWORD=${DB_PASSWORD}
            - DB_SCHEMA=${DB_SCHEMA}
            - DB_TABLE_PREFIX=${DB_TABLE_PREFIX}
            - APP_ID=${CRAFT_APP_ID}
            - ENVIRONMENT=${CRAFT_ENVIRONMENT}
            - SECURITY_KEY=${CRAFT_SECURITY_KEY}
            - TIMEZONE=${CRAFT_TIMEZONE}
            - WEB=${CRAFT_WEB}
    mysql:
        image: mysql
        restart: always
        networks:
            - internal
        volumes:
            - database:/var/lib/mysql
        environment:
            - MYSQL_RANDOM_ROOT_PASSWORD=${DB_PASSWORD}
            - MYSQL_DATABASE=${DB_DATABASE}
            - MYSQL_USER=${DB_USER}
            - MYSQL_PASSWORD=${DB_PASSWORD}
networks:
    external:
        external: true
    internal:
        driver: bridge
volumes:
    database:
    backend:

Here's the corresponding composer.json
{
  "require": {
    "craftcms/cms": "3.7.10",
    "vlucas/phpdotenv": "^3.4.0"
  },
  "require-dev": {
    "yiisoft/yii2-shell": "^2.0.3"
  },
  "autoload": {
    "psr-4": {
      "modules\\": "modules/"
    }
  },
  "config": {
    "sort-packages": true,
    "optimize-autoloader": true,
    "platform": {
      "php": "7.2.5"
    }
  },
  "scripts": {
    "post-root-package-install": [
      "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
    ]
  }
}

The Docker file which build the craft container
FROM composer:2 as vendor
COPY composer.json composer.json
COPY composer.lock composer.lock
RUN composer install --ignore-platform-reqs --no-interaction --prefer-dist

FROM craftcms/nginx:7.4

WORKDIR /app

COPY --chown=www-data:www-data --from=vendor /app/vendor/ /app/vendor/
COPY --chown=www-data:www-data . .

RUN chmod +x bootstrap.sh
RUN mkdir storage

ENTRYPOINT ["./bootstrap.sh"]

And the bootstrap file to apply pending changes
#!/bin/sh

./craft migrate/all
./craft project-config/apply
./craft clear-caches/cp-resources

/usr/bin/supervisord -c /etc/supervisor/conf.d/supervisor.conf

@jan-thoma perfect, thanks! Will do some testing and get back to you.
In the meantime, can you try adding a bind mount to your craft service, and see if you see the same slowdown?
If you do, that means the bottleneck is Docker Desktop's Hypervisor virtualization (which is what I suspect).
        volumes:
            - backend:/app/web/data
            - .:/app

Can you also check Docker Desktop settings, and see what the value is for this:

Docker Desktop settings are:

@jan-thoma one of the major impacts for local development is mounting a local filesystem (bind mounts) to a container, especially on Docker for Mac as macOS does not have native container support in the OS. Docker for Mac creates a virtual machine and installs Docker tools inside the VM, when you mount a filesystem/directory it mounts into the VM.
Also, if you are having issues with MySQL on macOS, that image is notorious for having issues with the default resources assigned to Docker Desktop. You can change those settings under Docker > Preferences > Resources.
What do you currently have assigned for the CPU and Memory on Docker Desktop?

@jasonmccallister The MySQL Server on runs on Linux machine and not on the developers machines. I would rule this out for beeing the culprit. Docker Desktop has assigned the following Ressources
CPU: 8
Memory: 8GB

@jan-thoma just to be very clear, when you say:

On macOS Big Sur the nitro containers are extemly slow

You are referring to the database containers (mysql, postgres) running on Nitro or the site containers (that actually run the Craft application)?

@jasonmccallister
Craft Containers are running locally
MySQL Containers are running on an external server in the same LAN

@timkelty
The bind mount slows down the container, significantly. The docker-compose setup still seems to approx 4x times faster in subsequent queries.
docker-compose setup:

nitro setup:

Maybe this project is worth a look. Instead of bind mounts it syncs the data bidirectional between native volumes and the local filesystem instead of using bind mounts
https://mutagen.io/
I just did a little test and it works well so far

An other option which could increase performance could be to exclude the runtime and maybe other folders from the bindmount

Maybe this project is worth a look. It syncs the data bidirectional between native volumes and the local filesystem instead of using bind mounts

We went down this road after Nitro v1 and considered it for Nitro v2. However, after working out the nit-picky details of including and orchestrating another tool that need to be installed to use Nitro we decided against it. There was a point the Docker team was looking at including mutagen (not sure of a reference) with Docker, but for some reason they went with the gRPC fuse route.

An other option which could increase performance could be to exclude the runtime and maybe other folders from the bindmount

We also went down this route and opted against it. Nitro can be used to develop other frameworks like Laravel, Symfony and etc. Some people also drastically modify their project directory structure and we would not want to force anyone into a specific structure. We have discussed making that interactive during the nitro add command but have not made much progress.
Another problem with excluding specific directories in the bind mount is we would need to bind every file and directory individually which would cause problems when someone adds a new directory or file in a project and its not mapped into the container. As far as I know, there is not a .dockerignore for bind mounts... Although that would be helpful!

Also, is this impacting everyone using Nitro or only a few developer machines? For reference, I am running Nitro with the following resources and not seeing (and have not run into it yet) performance issues like you mention (granted I do not have a lot of data in this site but the database).

What do you have under file sharing? I only have private and my user folder to reduce the directories that are shared to Docker.

We have two developer machines which are affected booth Macbook Pros, but i can't speak for anybody.
I removed most of the folders the after your suggestion, but i need to check when i'm back in the office on monday. Accessing the database over a VPN Connection doesn't make the performance better...

Another problem with excluding specific directories in the bind mount is we would need to bind every file and directory individually which would cause problems when someone adds a new directory or file in a project and its not mapped into the container. As far as I know, there is not a .dockerignore for bind mounts... Although that would be helpful!

You can use Anonymous volumes to point to a subdirectory of a bind mount to exclude it, but i never used it to be honest.

@jasonmccallister i can't see a differnce in performance when restrictig the file sharing ressources

I also have extremely bad performance, makes it almost unusable. Saving in the control panel can take up to a minute.

There are issues with docker for mac that occur after the computer wakes up from sleep. It majorly affects performance when xdebug is enabled, but still affects performance without it, just to a lesser extent.
More details: https://github.com/docker/for-mac/issues/3455

I'm finding it increasingly difficult to endorse anything Docker-based for mac-based web developers.
I'd used Lando earlier this year after a new version of MAMP broke things again. That was a bit finicky to maintain. I tried Nitro next and it was great! Zero config and it was fast. Then I went away for a few months and worked with some in-house Docker setups that worked well for the most part, but required ongoing support for some folks. Now I'm here, my OS is updated to Big Sur, Nitro's updated to the latest, and I've got roaring fans and 10-30 second waits to load a small site's control panel screen on a 2-year old mac mini with a 3 GHz 6-Core Intel Core i5, 32GB RAM, and very little else running.
I just can't push the overhead of maintaining this or time spent waiting for things to load onto my clients.
I think from here on out, I'm just going to manage PHP with Homebrew and use local MySQL. Docker has its place for large, complex projects and teams, but I don't think that's what Nitro is targeting.

I completely understand the frustration and get where you are coming from, Docker for Mac has been notorious for slow load times and we are actively working on ways to improve that. While this is a fix that needs to happen in Docker Desktop, we are trying to address some load times with this PR which adds the ability to exclude directories on a site specific config... The larger the number of files the slower Docker Desktop becomes.
Excluding directories like vendor, node_modules, and even storage has giving us some pretty consistent improvements to load times with Craft and Nitro.. the PR has a few screenshots with a minimal Nitro config but excluding those specific directories and the load times are consistently around the 200ms range. This is a change that will come with 3.0 but a majority of the team has been using the pre-alpha build internally with really good results.
Hopefully this type of change will help improve the development experience when using Nitro, I know its been a pain for Docker on Mac and there are many "hacks" to try and improve performance but this is one I think most people can benefit from when using Nitro and Craft.

@jasonmccallister Thanks for the update and insights! I'll look forward to those changes.

@jasonmccallister is it advised to try out v3 of nitro now or it's still too early? My nitro is really buckling with Big Sur now and it's really frustrating :(

@xavianaxw I would not recommend it yet, although there are build instructions to get it working on the 3.0 branch. We have some breaking changes we need to get in before it can become a beta.
We have a milestone where we keep track of whats left here: https://github.com/craftcms/nitro/milestone/6
While it says 3 percent complete, almost all of those are done but will not be closed out until we cut a beta and the community is using those features. That is our definition of "done".
Also, the Docker Desktop team has a roadmap and they are actively looking at making the filesync more performant on macOS so we should see some benefits from that soon (crossing my fingers).

Are there any expected timelines for cutting a beta release? I'm struggling to get work done currently and weighing up moving back to Valet or building my own v3

@chrisrowe Craft 4 is taking precedence right now, so we haven't committed to a release date yet.
Thank you for your patience!

While I greatly appreciate all the work you guys have done with Nitro, the dev experience on macOS (M1 pro + Monterey, in my case) is really off-putting. Control panel load times are atrocious. Sometimes I feel like I'm spending more time waiting than actually developing 😜 I'm really hopeful for v3 but let's face it... Docker on macOS won't be fast anytime soon. I used to work with MAMP and loved the transition to Nitro regarding workflow, but damn this slowness is frustrating. It even makes me rethink my choice of developing on a Mac and linux becomes more and more attractive.

Yep, I've gone back to Valet for speed. With phpmon and dbngin it's not a bad setup. I'd still ultimately love to use Nitro but for now, for me at least this is way faster.

For anyone following along with this thread, it sounds like there's good news on the horizon from the Docker side of things.
As @jasonmccallister mentioned, and from what little I admittedly understand about how Nitro and Docker work under the hood, it sounds like the major bottleneck is on the file syncing front. There's an open Github issue on the Docker repo that's been active for almost 2 years (yikes!), and within the past few weeks there's been some notable developments.
If you're curious you can find benchmarks and details towards the bottom of the thread, but the TL;DR is there's an experimental build with a new approach to file syncing (that's tied to macOS 12.3) that's bringing pretty dramatic speed improvements.
Fingers crossed we'll see a major performance boost sooner rather than later.

Just tested the new experimental build on Macbook Pro M1 Max (12.2.1)
With Virtualization Framework and VirtioFS enabled in the Experimental Features section. Seeing some dramatic improvements in speed. GraphQl that took above 6 seconds in the old setup no execute under 1s if not cached.

The VirtioFS is greyed out on 12.2.1 but can be activated as mentioned here https://github.com/docker/roadmap/issues/7#issuecomment-1050354980

Just tested the new experimental build on Macbook Pro M1 Max (12.2.1)
With Virtualization Framework and VirtioFS enabled in the Experimental Features section. Seeing some dramatic improvements in speed. GraphQl that took above 6 seconds in the old setup no execute under 1s if not cached.

The VirtioFS is greyed out on 12.2.1 but can be activated as mentioned here docker/roadmap#7 (comment)

This also helped with improving speed quite dramatically. I'm using a Macbook Pro M1 Pro (16gb) and without enable this setting it was almost unusable.

My experience with enabling virtiofs has not been so positive - my containers will now hang several times a day, with the only resolution being to restart Docker.
Attempting a nitro restart (as opposed to restarting Docker) eventually yields the error message Error: unable to restart container x: Error response from daemon: Cannot restart container x: tried to kill container, but did not receive an exit event
I'm sure I saw this commented elsewhere but I'm struggling to find it

Hi, we are closing this issue as we have decided to retire Nitro, so no additional work will occur on this project. You can read the official blog post here https://craftcms.com/blog/retiring-craft-nitro. We appreciate everyones feedback and involvement and we look forward to refocusing our efforts on Cloud!
If you're looking for a new local development environment, we recommend DDEV and have a knowledge base article to help you with the transition: https://craftcms.com/knowledge-base/migrating-from-craft-nitro-to-ddev.


Disallow constructing sf::String from nullptr

Description
This is not a sensible operation to perform. If a user tries to do this then their program is likely in a bad state. It's better to assert against this behavior than quietly handle it.
The first way to protect against this is by deleting a construct overload using std::nullptr_t. If a user tries to construct a string from nullptr, this will result in a compiler error. If the user creates a null char*, wchar_t*, or char32_t*, then there are new runtime asserts that will detect that error in Debug builds.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

12 of 12 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.02%) to 55.712%

Totals

Change from base Build<PHONE_NUMBER>:
-0.02%

Covered Lines:
11662

Relevant Lines:
19689

💛  - Coveralls

I'm fine with deleting the constructor, as this gives up a compile-time error.
But I'm against making nullptr via char* undefined behavior. Sure, in debug you get an assert now, but in release you just invoke undefined behavior by calling std::strlen(nullptr). I don't think we have to follow the standard library design of adding undefined behavior, when we have the chance of defining a valid behavior.

I also think we should try not to introduce new places where undefined behaviour can happen.
While there is precedent for places where passing in a nullptr is just silently ignored like in the current implementation e.g. std::free, I still think that passing in any nulled pointer would be almost always unintentional and we should provide a "diagnostic".
I say keep the runtime nullptr check to avoid UB but throw an assert(false, ...) into the else path so that the user can get notified that nothing happened when running in debug.

I say keep the runtime nullptr check to avoid UB but throw an assert(false && ...) into the else path so that the user can get notified that nothing happened when running in debug.

Wouls be fine for me as well.

I love asserting against UB but am less inclined to assert against behavior that we already define. I removed the assert, kept the new deleted constructor, and added new tests that cover the case where users provide a null pointer since we want that to be an explicitly defined behavior of the library. Now the tests cover that.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.008%) to 55.723%

Totals

Change from base Build<PHONE_NUMBER>:
-0.008%

Covered Lines:
11666

Relevant Lines:
19693

💛  - Coveralls


地图总是在最上层

弹窗什么的都会被地图overlap
测试过echarts+bmap 没有这种情况

测试了，跟vuetify的popup冲突，跟element ui的popup不冲突。可能是跟dom元素的绑定有关。

从阴影能明显看出来 地图在其他元素上面

@gnijuohz @UltramanWeiLai

Thank you bro. Let me know if you need any more information on that.
Sent from my Samsung Galaxy smartphone.
-------- Original message --------From: Jing Zhou<EMAIL_ADDRESS>Date: 9/25/18  22:26  (GMT-06:00) To: gnijuohz/echarts-leaflet<EMAIL_ADDRESS>Cc: mzy2240<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [gnijuohz/echarts-leaflet] 地图总是在最上层 (#9)
Sorry a bit busy lately! Will try to look into this sometime this week.
On Tue, Sep 25, 2018 at 10:57 AM mzy2240<EMAIL_ADDRESS>wrote:

@gnijuohz https://github.com/gnijuohz @UltramanWeiLai

https://github.com/UltramanWeiLai

—

You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub

https://github.com/gnijuohz/echarts-leaflet/issues/9#issuecomment-424441419,

or mute the thread

https://github.com/notifications/unsubscribe-auth/ABWIhCCmRHcswiem5oXx1PJ2EQsL4F9jks5uem6PgaJpZM4W1HR7

.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.
{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/gnijuohz/echarts-leaflet","title":"gnijuohz/echarts-leaflet","subtitle":"GitHub repository","main_image_url":"https://assets-cdn.github.com/images/email/message_cards/header.png","avatar_image_url":"https://assets-cdn.github.com/images/email/message_cards/avatar.png","action":{"name":"Open in GitHub","url":"https://github.com/gnijuohz/echarts-leaflet"}},"updates":{"snippets":[{"icon":"PERSON","message":"@gnijuohz in #9: Sorry a bit busy lately! Will try to look into this sometime this week.\nOn Tue, Sep 25, 2018 at 10:57 AM mzy2240<EMAIL_ADDRESS>wrote:\n\n\u003e @gnijuohz \u003chttps://github.com/gnijuohz\u003e @UltramanWeiLai\n\u003e \u003chttps://github.com/UltramanWeiLai\u003e\n\u003e\n\u003e —\n\u003e You are receiving this because you were mentioned.\n\u003e\n\u003e\n\u003e Reply to this email directly, view it on GitHub\n\u003e \u003chttps://github.com/gnijuohz/echarts-leaflet/issues/9#issuecomment-424441419\u003e,\n\u003e or mute the thread\n\u003e \u003chttps://github.com/notifications/unsubscribe-auth/ABWIhCCmRHcswiem5oXx1PJ2EQsL4F9jks5uem6PgaJpZM4W1HR7\u003e\n\u003e .\n\u003e\n"}],"action":{"name":"View Issue","url":"https://github.com/gnijuohz/echarts-leaflet/issues/9#issuecomment-424572252"}}}
[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/gnijuohz/echarts-leaflet/issues/9#issuecomment-424572252",
"url": "https://github.com/gnijuohz/echarts-leaflet/issues/9#issuecomment-424572252",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
},
{
"@type": "MessageCard",
"@context": "http://schema.org/extensions",
"hideOriginalBody": "false",
"originator": "AF6C5A86-E920-430C-9C59-A73278B5EFEB",
"title": "Re: [gnijuohz/echarts-leaflet] 地图总是在最上层 (#9)",
"sections": [
{
"text": "",
"activityTitle": "Jing Zhou",
"activityImage": "https://assets-cdn.github.com/images/email/message_cards/avatar.png",
"activitySubtitle": "@gnijuohz",
"facts": [
]
}
],
"potentialAction": [
{
"name": "Add a comment",
"@type": "ActionCard",
"inputs": [
{
"isMultiLine": true,
"@type": "TextInput",
"id": "IssueComment",
"isRequired": false
}
],
"actions": [
{
"name": "Comment",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n"commandName": "IssueComment",\n"repositoryFullName": "gnijuohz/echarts-leaflet",\n"issueId": 9,\n"IssueComment": "{{IssueComment.value}}"\n}"
}
]
},
{
"name": "Close issue",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n"commandName": "IssueClose",\n"repositoryFullName": "gnijuohz/echarts-leaflet",\n"issueId": 9\n}"
},
{
"targets": [
{
"os": "default",
"uri": "https://github.com/gnijuohz/echarts-leaflet/issues/9#issuecomment-424572252"
}
],
"@type": "OpenUri",
"name": "View on GitHub"
},
{
"name": "Unsubscribe",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n"commandName": "MuteNotification",\n"threadId": 383022203\n}"
}
],
"themeColor": "26292E"
}
]

@gnijuohz Did you check it?

@mzy2240 I haven't looked into it very closely but it seems like an issue with z-index.

Vuetify's dialog/popup has a smaller z-index: >= 200

Element UI's popup has a higher z-index: >= 2000

leaflet's overlay pane has a default z-index of [400] (https://github.com/Leaflet/Leaflet/blob/b346bb8bf7bb80899baa1f4fc1536bae58e7e3e6/dist/leaflet.css#L84), which I didn't overwrite.

It seems you can pass z-index as a prop to overwrite default in Vuetify. Maybe try a value larger than 400?

Wow awesome! I will test it tmr when I wake up, and will keep you updated. Thanks!
Sent from my Samsung Galaxy smartphone.
null

Another question: what's the index of echarts+bmap? Is it possible to change the z-index of the leaflet layer in the css?


up stcgal submodule version

i try run stcgal without success.
stcgal_build.txt
actual stcgal commit [fdf5fdd] run fine

maybe you can submit PR for newer stcgal submodule if you can test it
this submodule repo is being used by the older makefile build process
I have only really been keeping up with platformio build process (which uses a different, probably newer, stcgal helper per platformio.ini configuration).


Initiate the Maps integration

See what we can do with Maps from Plotly.

plotly examples: https://plotly.com/javascript/mapbox-layers/

We could also provide a Gmaps specific control using:

a react wrapper
clusters

1st step: support lat/lon as property of chart

from taipy.gui import Gui
import pandas as pd

data = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/2015_06_30_precipitation.csv")

marker = { "color": "fuchsia", "size": 4 }

layout = {
			"dragmode": "zoom",
			"mapbox": { "style": "open-street-map", "center": { "lat": 38, "lon": -90 }, "zoom": 3 },
			"margin": { "r": 0, "t": 0, "b": 0, "l": 0 }
		}

md = """
# Test Map
<|{data}|chart|type=scattermapbox|marker={marker}|layout={layout}|lat=Lat|lon=Lon|text=Globvalue|mode=markers|>
"""

Gui(md).run(use_reloader=False)


In the telemetry data name of the Greeting card skillmap tutorial shows up as Story.

Reported by Anisha.
@kiki-lee can we update the markdown to reflect the right name?

Intentional.
Our standard is that all levels in our path show up serialized against the path name.  For example, our Story path is story1, story2, and story3.  Our Dino path is dino1, dino2, dino3.  Our Shark path is shark1, shark2, shark3.  Etc.


[QUERY] How to force reconnect after connection was lost

Query/Question
Whats the best practice to force a reconnect of the client, after a connection issue occured?
I used your sample code (a little bit modified) and pulled the LAN cable off and on to simulate a connection issue. An exception is thrown and the client doesn't reconnect.
import java.time.Duration;
import java.util.Objects;
import java.util.Random;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;

import com.azure.core.amqp.AmqpRetryOptions;
import com.azure.messaging.eventhubs.EventData;
import com.azure.messaging.eventhubs.EventDataBatch;
import com.azure.messaging.eventhubs.EventHubClientBuilder;
import com.azure.messaging.eventhubs.EventHubProducerAsyncClient;
import com.azure.messaging.eventhubs.models.CreateBatchOptions;

import reactor.core.publisher.DirectProcessor;
import reactor.core.publisher.Flux;
import reactor.core.publisher.FluxSink;
import reactor.core.publisher.Mono;

/**
 * Demonstrates how to continuously publish events using
 * {@link EventHubProducerAsyncClient}. {@link CustomPublisher} is publishes
 * size-limited batches when they are full. In addition, it checks for
 * periodically for a partial batch that needs to be sent.
 */
public class SampleClient {
	private static final String EVENT_NUMBER = "EVENT_NUMBER";
	private static final String CONNECTION_STRING = "*****";
	private static final String EVENT_HUB_NAME = "*****";

	/**
	 * Main method to invoke this demo about how continuously publish a stream of
	 * events to Event Hubs.
	 *
	 * @param args Unused arguments to the program.
	 */
	public static void main(String[] args) {

		// Limit the size of the batches to 1024 bytes instead of using the default max
		// size.
		final CreateBatchOptions batchOptions = new CreateBatchOptions().setMaximumSizeInBytes(1024);
		final CustomPublisher publisher = new CustomPublisher(CONNECTION_STRING, EVENT_HUB_NAME, Duration.ofSeconds(1),
				batchOptions);

		// This represents a stream of events that we want to publish.
		final DirectProcessor<EventData> events = DirectProcessor.create();

		System.out.println("Publishing events...");
		publisher.publish(events).subscribe(unused -> System.out.println("Completed."),
				error -> System.err.println("Error sending events: " + error),
				() -> System.out.println("Completed sending events."));

		emitEvents(events.sink());

		// The .subscribe() creation and assignment is not a blocking call. For the
		// purpose of this example, we sleep
		// the thread so the program does not end before the send operation is complete.
		try {
			TimeUnit.SECONDS.sleep(120);
		} catch (InterruptedException ignored) {
		} finally {
			System.out.println("Closing custom publisher.");
			publisher.close();
		}
	}

	/**
	 * Helper function that emits 50 events. The interval between each event is
	 * randomly selected between 0 - 250ms and is a random substring of the lorem
	 * ipsum text.
	 *
	 * @param sink Sink for generated events.
	 */
	private static void emitEvents(FluxSink<EventData> sink) {
		final String contents = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do "
				+ "eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis "
				+ "nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure "
				+ "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur"
				+ " sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est "
				+ "laborum.";
		final Random random = new Random();

		for (int i = 0; i < 50; i++) {
			int milliseconds = random.nextInt(250);

			try {
				TimeUnit.MILLISECONDS.sleep(milliseconds);
			} catch (InterruptedException ignored) {
			}

			final int size = random.nextInt(contents.length());
			final int endIndex = size < 1 ? contents.length() : size;
			final EventData event = new EventData(contents.substring(0, endIndex));
			event.getProperties().put(EVENT_NUMBER, String.valueOf(i));

			sink.next(event);
		}

		sink.complete();
	}

	/**
	 * Aggregates events into batches based on the given {@link CreateBatchOptions}
	 * and sends the batches to the Event Hubs service when either:
	 *
	 *

	 *
The batch has reached its max size and no more events can be added to
	 * it.

	 *
The timeout window has elapsed.

	 *

	 */
	private static class CustomPublisher implements AutoCloseable {
		private final AtomicBoolean isDisposed = new AtomicBoolean();
		private final AtomicReference<EventDataBatch> currentBatch = new AtomicReference<>();
		private final EventHubProducerAsyncClient producer;
		private final CreateBatchOptions batchOptions;
		private final Duration windowDuration;

		/**
		 * Creates a new instance of {@link CustomPublisher}.
		 *
		 * @param connectionString Connection string for the specific Event Hub.
		 * @param windowDuration   Intervals to check for an available
		 *                         {@link EventDataBatch} to send.
		 * @param batchOptions     Options to use when creating the
		 *                         {@link EventDataBatch}. If {@code null}, the default
		 *                         batch options are used.
		 */
		CustomPublisher(String connectionString, String eventHubName, Duration windowDuration,
				CreateBatchOptions batchOptions) {

			AmqpRetryOptions retryOptions = new AmqpRetryOptions();
			retryOptions.setDelay(Duration.ofSeconds(2));
			retryOptions.setMaxRetries(20);
			retryOptions.setTryTimeout(Duration.ofSeconds(3));

			producer = new EventHubClientBuilder().connectionString(connectionString, eventHubName).retry(retryOptions)
					.buildAsyncProducerClient();

			this.batchOptions = batchOptions != null ? batchOptions : new CreateBatchOptions();
			this.windowDuration = Objects.requireNonNull(windowDuration, "'windowDuration' cannot be null.");
		}

		/**
		 * Subscribes to a stream of events and publishes event batches when:
		 *
		 *

		 *
The {@link EventDataBatch} is full.

		 *
Timeout window has elapsed and there is a batch.

		 *

		 *
		 * @param events Events to publish to the service.
		 *
		 * @return Mono that completes when all the events have been published.
		 */
		Mono<Void> publish(Flux<EventData> events) {
			final Flux<EventDataBatch> fullBatchFlux = Flux.<EventDataBatch>create(sink -> {
				events.subscribe(event -> {
					// For each event, tries to add it to the current batch. If the current batch is
					// full, then we emit
					// that. Otherwise an empty Mono is emitted.
					// Blocking at the very end of the method to ensure that the event is added to a
					// batch before
					// requesting another event.
					getOrCreateBatch().flatMap(batch -> batch.tryAdd(event) ? Mono.empty() : Mono.just(batch))
							.flatMap(fullBatch -> {
								sink.next(fullBatch);

								return createBatch().map(newBatch -> {
									if (!newBatch.tryAdd(event)) {
										sink.error(new IllegalArgumentException(String.format(
												"Event is too large for an empty batch. Max size: %s. Event: %s",
												newBatch.getMaxSizeInBytes(), event.getBodyAsString())));
									}
									return newBatch;
								});
							}).block();
				}, error -> {
					sink.error(new RuntimeException("Error fetching next event.", error));
				}, () -> {
					final EventDataBatch lastBatch = currentBatch.getAndSet(null);
					if (lastBatch != null) {
						sink.next(lastBatch);
					}

					sink.complete();
				});
			}).publish().autoConnect();

			// Periodically checks to see if there is an available, not full, batch to send.
			// If there is, it sends that
			// batch. It keeps checking for an available batch until the last event in
			// `events` has been published.
			final Flux<EventDataBatch> emitAtIntervals = Flux.interval(windowDuration).takeUntilOther(events.then())
					.flatMap(v -> {
						final EventDataBatch batch = currentBatch.getAndSet(null);
						return batch != null ? Mono.just(batch) : Mono.empty();
					});

			// Merge the two fluxes together so the results
			return Flux.merge(fullBatchFlux, emitAtIntervals).flatMap(batchToSend -> {
				System.out.println("Sending batch with " + batchToSend.getCount() + " events. Size: "
						+ batchToSend.getSizeInBytes() + " bytes.");
				return producer.send(batchToSend);
			}).then();
		}

		private Mono<EventDataBatch> getOrCreateBatch() {
			final EventDataBatch current = currentBatch.get();
			return current != null ? Mono.just(current) : createBatch();
		}

		private Mono<EventDataBatch> createBatch() {
			return producer.createBatch(batchOptions).map(batch -> {
				currentBatch.set(batch);
				return batch;
			});
		}

		public void close() {
			if (isDisposed.getAndSet(true)) {
				return;
			}

			final EventDataBatch batch = currentBatch.getAndSet(null);
			if (batch != null) {
				producer.send(batch).block(Duration.ofSeconds(30));
			}

			producer.close();
		}
	}
}

Publishing events...
Sending batch with 2 events. Size: 634 bytes.
Sending batch with 3 events. Size: 964 bytes.
Sending batch with 1 events. Size: 127 bytes.
Sending batch with 3 events. Size: 876 bytes.
Sending batch with 3 events. Size: 989 bytes.
Sending batch with 4 events. Size: 769 bytes.
Sending batch with 4 events. Size: 758 bytes.
Sending batch with 4 events. Size: 798 bytes.
Sending batch with 1 events. Size: 238 bytes.
Sending batch with 5 events. Size: 913 bytes.
Sending batch with 3 events. Size: 858 bytes.
Sending batch with 4 events. Size: 725 bytes.
Sending batch with 2 events. Size: 556 bytes.
Sending batch with 2 events. Size: 668 bytes.
Sending batch with 2 events. Size: 724 bytes.
Error sending events: java.lang.IllegalStateException: connectionId[1234552944180] sessionName[*****] entityPath[*****] linkName[*****] Cannot create send link from a closed session.
Closing custom publisher.

Why is this not a Bug or a feature Request?
I'm not sure if this isn't a bug, because automatic reconnect should work if I'm not wrong?
Setup (please complete the following information if applicable):

OS: Windows 10
IDE: Eclipse
Library/Libraries: azure-messaging-eventhubs v5.7.1

Information Checklist
Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report

[x] Query Added
[X] Setup information Added

@conniey could you please follow up with @saxn-paule

Ahh, this is a known bug. #21824. It should reconnect after a disconnection.
/cc @YijunXieMS

When will this bug been fixed, as it is open since May?
This bug prevents us from using the library in a productive environment.

This should be fixed now. We did a huge reliability push and addressed many issues.


Provision for search query with OR operation between metadata keys

Digital Slide Archive provides provision for Quick Search over metadata fields. We can specify queries spanning over multiple keys.
As an example, specifying the query key:study_id s123 key:tissue_type nervous will search images with metadata keys study_id=s123 AND tissue_type=nervous. When we specify multiple keys, by default search filters the images by conjunction (AND operator) on metadata key values.
Does search supports queries with OR operator? E.g. "key:tissue_type nervous OR key:tissue_type muscle" to search images matching either nervous or muscle tissue.

The database supports this, and there are some API endpoints that can have custom queries constructed to do so, but it isn't exposed in any manner to the UI.
We'd have to extend the DSL used for the query that gets parsed here.

There are specific endpoints for passing a mongo query through to items or folders (still with full permission logic).  For instance, the item endpoint is GET item/query (see code https://github.com/DigitalSlideArchive/HistomicsUI/blob/master/histomicsui/rest/system.py#L164).  As an example: {"$or": [{"meta.tissue_type": "nervous"}, {"meta.tissue_type": "muscle"}]}.

Two key points to note here:
One:  This is using MONGO queries against the data base.  Be careful about
serializing/deserializing your query from/to JSON.  Depending if your using
the API directly via the SWAGGER interface vs using the girder_client to
hit the query endpoint, I've had some annoying (initially) confusing cases
where what I thought was a JSON object was interpreted as a string instead,
and so was not working.

Note the meta.tissue_type ... i.e. META...  basically we are querying
what's attached to item.meta... so all of the queries have to have the
meta.tag before the key, although this is nice as you can query
meta.stain.antibody_vendor if you have more complicated types of metadata
attached to an item..

On Tue, Feb 28, 2023 at 3:07 PM David Manthey @.***>
wrote:

There are specific endpoints for passing a mongo query through to items or
folders (still with full permission logic). For instance, the item endpoint
is GET item/query (see code
https://github.com/DigitalSlideArchive/HistomicsUI/blob/master/histomicsui/rest/system.py#L164).
As an example: {"$or": [{"meta.tissue_type": "nervous"},
{"meta.tissue_type": "muscle"}]}.
—
Reply to this email directly, view it on GitHub
https://github.com/DigitalSlideArchive/digital_slide_archive/issues/253#issuecomment-1448812101,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAFODTXCLAAYUEOBJMPMJOLWZZLJLANCNFSM6AAAAAAVHGF5ME
.
You are receiving this because you are subscribed to this thread.Message
ID: <DigitalSlideArchive/digital_slide_archive/issues/253/1448812101@
github.com>

--
David A Gutman, M.D. Ph.D.
Associate Professor of Neurology
Emory University School of Medicine

Thanks @manthey for precisely pointing to the API for this use case.
Thanks @dgutman for your point about meta subkeys.
For future reference:

One need to GET the JSON returned by /item/query API call for the query with OR:
param_query = {"$or": [{"meta.tissue_type": "nervous"}, {"meta.tissue_type": "muscle"}]}
Example API call:
"http://localhost:8080/api/v1/item/query?query=" + param_query + "&limit=50&sort=_id&sortdir=1"

Parse the response JSON for item ids (key "_id"), which can be presented as item results:
"http://localhost:8080/#item/" + item_id


[BUG] chat completion error

Before you submit an issue, please search for existing issues to avoid duplicates.
Issue description:
The chat completion interface has one minor issue in line 213 (also in stream chat), where the generator generates a tuple of three items, whereas there are only two in the for loop.

has been fixed


[FLOC-3900] tool for submitting benchmark results to a server

The tool expects the result document to be provided via the standard
input.

All the great suggestions, I'll do them all. Thank you!
I expected that the code would look quite a bit different in the end, so another review pass might be a good idea.

Thanks, Looks great. It's a lot simpler with treq rather than using Twisted directly.
A couple comments about some error path handling, otherwise looks good.


CRC-CCITT (0x1D0F)

Would it be possible to add support for CRC-CCITT 16-bit with the initial value of 0x1D0F and a final XOR value of 0x0000? Thanks

Think you could do a PR for that? I appreciate any help with the module!

Figured out that this is already supported. After looking at the crc16ccitt function definition, I noticed there was a 'previous' parameter which when set to 0x1D0F overrides the initial value of 0xFFFF.

:+1:


undefined reference error while building Lite for ESP32 "person_detection" example

@tensorflow/micro
System information

Host OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Win7
TensorFlow installed from (source or binary): source
Tensorflow version (commit SHA if source): Latest version
Target platform (e.g. Arm Mbed OS, Arduino Nano 33 etc.): ESP32

Describe the problem
I git the whole latest tensorflow branch on my WIN7 PC. I intended to use "Tensorflow Lite for Micro". I wanted to try the included examples "Person Detection" first to make sure everything works out of box. So I followed the readme instruction by running "make -f tensorflow/lite/micro/tools/make/Makefile TARGET=esp generate_person_detection_esp_project". According to the Makefile, five 3rd party downloads should be downloaded first. However, I got the MD5 mismatch error for each and every single one of them. So I had to 'hack' the Makefile to disable the MD5 checksum checking and manually downloaded those required 5 downloads and installed in the 'C:\Projects\tensorflow\tensorflow\lite\micro\tools\make\downloads' folder.
Then the make seemed to run for a few minutes, the stopped at the following error:
[888/894] Building CXX object esp-idf/...core/api/flatbuffer_conversions.cc.obj
cc1plus.exe: warning: command line option '-std=c11' is valid for C/ObjC but not
for C++
[893/894] Linking CXX executable person_detection.elf
FAILED: person_detection.elf
cmd.exe /C "cd . && C:\Users\Tianhao.espressif\tools\xtensa-esp32-elf\esp-2019r
2-8.2.0\xtensa-esp32-elf\bin\xtensa-esp32-elf-g++.exe  -mlongcalls -Wno-frame-ad
dress  -nostdlib @CMakeFiles\person_detection.elf.rsp  -o person_detection.elf
&& cd ."
c:/users/tianhao/.espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32
-elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld.e
xe: esp-idf/main/libmain.a(main_functions.cc.obj):(.literal.loop+0x14): undefine
d reference to RespondToDetection(tflite::ErrorReporter*, unsigned char, unsign ed char)' c:/users/tianhao/.espressif/tools/xtensa-esp32-elf/esp-2019r2-8.2.0/xtensa-esp32 -elf/bin/../lib/gcc/xtensa-esp32-elf/8.2.0/../../../../xtensa-esp32-elf/bin/ld.e xe: esp-idf/main/libmain.a(main_functions.cc.obj): in function loop':
c:\projects\tensorflow\tensorflow\lite\micro\tools\make\gen\esp_xtensa-esp32\prj
\person_detection\esp-idf\build/../main/main_functions.cc:111: undefined referen
ce to `RespondToDetection(tflite::ErrorReporter*, unsigned char, unsigned char)'
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
ninja failed with exit code 1
I also attached full log file for reference. Please show me how to fix this problem and get at least the example built and running. Thanks!
build_log.txt
Please provide the exact sequence of commands/steps when you ran into the problem

@Hazeline2018
Could you please refer to existing old issues related to this topic.
please let us know if this helps

@Saduf2019
thanks for your prompt response. However, I read through the post you suggested but did not see anywhere could help with my own issue. I'm trying to make for ESP32 mcu on WIN7 machine. But the link you suggested was for Android build. Please help pointing to the right direction. Thanks!

Edit:
To correct my original problem description: the make step was successful after I ''hacked" the MD5 checksum and manually downloaded those 5 3rd party downloads.
But this 'undefined reference to `RespondToDetection(tflite::ErrorReporter, unsigned char, unsigned char)'* error came when I tried to build the example prj using "idf.py build" cmd.
Just as a reference, I also tried building 'hello_world' example with same procedure, that went successfully. So I guess there might be something missing in the 'person_detection' example.
Hope that clear things up. Thanks!

Can anyone please help with this problem? I'm stuck here for a couple of days and I've exhausted almost the whole build link but couldn't see any problem. This 'undefined reference' error seems to be missing a file which I couldn't figure out
Any suggestion or advise would be greatly appreciated!

Update: I've figured out. This can be closed.

Ran into same problem. Turned out, for some reason detection_responder.cc was an empty file. Re-gen example project fixed it.
-rw-rw-r-- 1 mhuang mhuang       0 Aug 19 17:42 detection_responder.cc


Ruler display between users does not update when elevation is changed

Currently, when a user updates the elevation, other users will not see any change to the ruler. Other users will see the change only once the first user moves the mouse (presumably triggering a measurement).

The same applies for elevation changes done by the original user while the ruler is active. So when I have the ruler active while changing token elevation via keybind (module) then ER does not update its display until the mouse is moved.
On the other side ER does update its numbers immediately when its own keybinds [] are used. So the current triggers for updates seem to be mouse movement and manual keybinds, but changes to elevation are not recognized on their own.

Fixed in v0.6.0.


counter: esp32: Revert counter: update build references

This reverts commit af5310d5000ff1e21a2d61fa9a8db1fe001a54a2.
The commit fails to build and needs updates to the esp32 HAL
to work propertly.  Revert for now til those are made.
Signed-off-by: Kumar Gala<EMAIL_ADDRESS>

Seeing CI failure here:
https://github.com/zephyrproject-rtos/zephyr/pull/48792/checks?check_run_id=7730170255

@galak, I think https://github.com/zephyrproject-rtos/zephyr/pull/48740 fixes it.


Implement the schema validation during the activity complete stage.

Background:
When the V2.01 was implemented in AidStream, there were number of activities where passed the AidStream workflow, but with issues in couple of elements. Primarily because in previous IATI version, these elements were not mandatory. When these elements are not touched in v201, they would happily appear in the xml file.
For e.g.
In sector, code is not mandatory in v105 http://iatistandard.org/105/activity-standard/iati-activities/iati-activity/sector/ but is now mandatory in v201. There are activities where sector code is missing and giving validation error https://github.com/younginnovations/aidstream/issues/135
Solution
Implement the schema validation in the workflow, which will catch these errors before the activity is tagged as "completed". This would catch the existing activity which misses some of these data (which are not compulsory in the previous IATI versions).
For the new activities, these problem would never happen, as all these validations are included as a part of the form validation.

All these issues will get resolved after the implementation of schema validation in each activity. But the organisation has to do the re-publishing first to get schema errors.
#135 #136  #137 #138 #139 #140 #141 #142 #143 #144 #145 #146


backport to 1.14: Prevent SEGFAULT when disabling listener (#13515)

Commit Message:
This prevents the stop_listening overload action from causing
segmentation faults that can occur if the action is enabled after the
listener has already shut down.
Risk Level: low
Testing: unit tests
Docs Changes: none
Release Notes: Yes
Fixes #13514

Change looks correct.  Waiting for CI before approving and merging.


upgrade to Spark 1.6.1

Current coverage is 75.41%

Merging #351 into master will decrease coverage by -1.21% as of 62ef0ef

@@            master    #351   diff @@
======================================
  Files           44      44
  Stmts         4564    4564
  Branches       396     398     +2
  Methods
======================================
- Hit           3497    3442    -55
+ Partial        167     166     -1
- Missed         900     956    +56

Review entire Coverage Diff as of 62ef0ef

Powered by Codecov. Updated on successful CI builds.

LGTM


Exception thrown at 0x0F63418C (vcruntime140d.dll) in cpp-tests.exe: 0xC0000005: Access violation writing location 0x00000000.

Windows 10 Desktop /VS2019
Steps to Reproduce:

Start cpp-tests.exe
Go to 5:Audio - NewAudioEngine
Go to 19:play, preload, stop switch test
Press the "Back" button
=> Crashing

Exception thrown at 0x0F63418C (vcruntime140d.dll) in cpp-tests.exe: 0xC0000005: Access violation writing location 0x00000000.

Should be fixed by latest commit

Yes. Is fixed.

Note: the official v4 also have this same crash problem


Cybersecurity: 3.4 Browser Hijacker

Description
What are Browser Hijacker?
Note:

If interested, mention in which format you want to contribute: Documentation or Video
Please avoid copy/paste, BE YOURSELF
Try to explain with Diagrams
Changes should be made inside the Cyber_Security/ directory & Cyber_Security branch.
Task will be assigned on first come first serve
Check it out Contribution Guidelines

/assign documentation

/assign video


Adjust slider size to each image width

How can I adjust the size of each slide to the size of each image when each image has diferent dimensions, keeping image responsive.

+1

would be good to see live example or JSFiddle of what you have tried

or of what you are trying to achieve

I've just done it removing the height attribute of each slide in css


Enable code coverage reporting

We could configure CodeCov to monitor code coverage. We already have the tests and github upload action; I believe we just need to create the relevant account on CodeCov.

I've just added it. Hopefully we should see something soon...

Works! https://app.codecov.io/gh/dsgibbons/shap


Custom Meals & Custom Meal Effects

Known Issues: Followers eating the custom meal will hold a meal with the default skin.
this is because that has to with Skins and i have no clue how to work with those 👍


error in deleting DRCluster when fenced

In a scenario where one of the DRCluster(c1) is fenced from peerCluster c2 and when tried to delete the c2 drcluster, the reconciler fails with error peer cluster c1 not found. this happens because we check if are able to get peer cluster while un-deploying c2 in this fenced situation.

to proceed with deletion, change the Spec.ClusterFence = "" and proceed with the deletion.

So we need to fix ramen to allow deleting a fenced cluster then?

yes, something like that. but this is a very corner case, unless someone is testing and not using it for actual deployment with workloads.


ingest microbe-drug interactions sources

These are the two main public resources with this data:
https://www.frontiersin.org/articles/10.3389/fcimb.2018.00424/full
https://academic.oup.com/nar/article/49/D1/D776/5943835

Thank you @realmarcin! +1 for these sources


fix: better fix for plugin dir

with better testing to make sure we don't mess up

/approve

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: jstrachan
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [jstrachan]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


notification-renderers type generator template not rendering example properly

super minor issue, but I figured i'd submit it and try to fix it later:
source file: notifications-rails/notification/renderer/lib/generators/templates/type/_template.html
renders as
<!--
In your renderers you can access the `Notification` record through the `notification` variable. This is how a renderer could look like:

 commented on

Learn more: https://github.com/jonhue/notifications-rails/tree/master/notification-renderer#renderers
-->

expected:
<!--
In your renderers you can access the `Notification` record through the `notification` variable. This is how a renderer could look like:

<%= notification.target.name %>  commented on <%= notification.object.article.title %>

Learn more: https://github.com/jonhue/notifications-rails/tree/master/notification-renderer#renderers
-->

Thanks for pointing this out!


Explain linear regression prediction

Current coverage is 91.74% (diff: 93.75%)

Merging #5 into master will decrease coverage by <.01%

@@             master         #5   diff @@
==========================================
  Files            11         11
  Lines           400        424    +24
  Methods           0          0
  Messages          0          0
  Branches         65         69     +4
==========================================
+ Hits            367        389    +22
  Misses           20         20
- Partials         13         15     +2

Powered by Codecov. Last update d316d01...10b5ed4

Thanks!


Explain the changes in the Bootstrap configuration in the docs

Given the change to how bootstrap processing works in 2020.x and Spring Boot 2.4 the docs should explain the change in a callout so that readers know that something important has changed that will break code. Maybe adding a callout in the Client Side Usage section explaining the changes from boot 2.3 to 2.4 will help a lot of users. For users migrating from 2.3 to 2.4 this is a common issue that trips up folks.

typically release notes are where upgrade instructions go.


Fixes #1401

Description
Updated peer/core.yaml configuration descriptions to be more consistent with their actual use and behaviour. Changed peer.addressAutoDetect=true so that it will work out-of-the-box in the simplest cases.
Motivation and Context
The previous description implied peer.address was used as the listening / binding address of the peer. This is what peer.listenAddress is used for.
The default of peer.addressAutoDetect=false also makes little sense as for the "false" flag to work, you MUST have defined peer.address to a valid address. When it is "true" then at least it will work in simple deployments.
Fixes #1404
How Has This Been Tested?
Tested with make unit-test. No new features, so no new tests.
Checklist:

[x] I have added a Signed-off-by.
[x] I have either added documentation to cover my changes or this change requires no new documentation.
[x] I have either added unit tests to cover my changes or this change requires no new tests.
[x] I have run golint and have fixed valid warnings in code I have added or modified. This tool generates false positives so you may choose to ignore some warnings. The goal is clean, consistent, and readable code.

Signed-off-by: Brad Gorman<EMAIL_ADDRESS>

reverify jenkins

Agree with @gabre comment on renaming 'address' to be more self-descriptive. Maybe advertisedAddress? Otherwise, LGTM

@gabre @christo4ferris I would simply advise thinking carefully about the auto detect to true.  This may confuse folks who set the listenAddress and then are surprised that the logic grabbed the first non-loopback.

@brad-gorman where does this stand? Has it been migrated to Gerrit? Should it be closed? Thanks!

@brad-gorman we will be transferring the fabric and fabric-api repository and all the corresponding issues and pull requests to the hyperledger-archives org on GH and replacing this repository with a read-only mirror of our Gerrit source. As a result, any automatic GH redirects will be broken. If you haven't already migrated your PR to Gerrit, and intend to do so, you will need to change your git remote to reference the transferred repository (e.g. git@github.com:hyperledger-archives/fabric) on your local clone.


Scanner is using wide camera on Web

Hi
When opening camera on web, scanner uses wide camera instead of main camera.
Is there any way to force it to use main camera?
My device: Samsung galaxy A51

We might need to look into allowing a specific camera for the scammer.
I'm not sure if the web allows us to do that easily.

Any updates or available fixes?

On the web, we do not have a lot of options currently.
If you could test using a barebones web app to see if you can properly identify the "normal" camera using MediaTrackConstraints, then I could try to integrate that into mobile_scanner. Otherwise I cannot do much in this area.
The main problem is that on the web, it is very hard to distinguish the normal camera from the wide-angle camera.
After some digging I found that if you provide environment as the facing mode, if there are multiple cameras, the one without the torch could be the normal camera. But I am not sure if that assumption is correct.


Tests fail on 32 bit systems without Moontoast/BigNumber

When running the test suite on a 32-bit system with Moontoast/BigNumber install, one of the tests fail due to an exception message mismatch (which should not even be thrown the failing test is actually one that simulates the absence of Moontoast):
PHPUnit 4.8.3 by Sebastian Bergmann and contributors.
Warning:	The Xdebug extension is not loaded
		No code coverage will be generated.

........... .........................SSSSSSSSSSSSSSSSSSSSSSSSSSS  63 / 184 ( 34%)
SSSSSSSSSSSSSSSSSSSSSS...............S........S....S....S...... 126 / 184 ( 68%)
..........S...................SS.SS......................F

Time: 48.99 seconds, Memory: 6.25Mb

There was 1 failure:

1) Rhumsaa\Uuid\UuidTest::testGetInteger
Failed asserting that exception message 'When calling Rhumsaa\Uuid\Uuid::calculateUuidTime on a 32-bit system, Moontoast\Math\BigNumber must be present in order to generate version 1 UUIDs' contains 'Cannot call Rhumsaa\Uuid\Uuid::getInteger without support for large integers'.

FAILURES!
Tests: 184, Assertions: 1830, Failures: 1, Skipped: 58.

root@debian:~/uuid# cat composer.lock | grep moontoast
            "name": "moontoast/math",
                "url": "https://github.com/ramsey/moontoast-math.git",
                "url": "https://api.github.com/repos/ramsey/moontoast-math/zipball/fce28a9d1e73e73376cb44e5e581675d15fbe2f3",
            "homepage": "https://github.com/moontoast/math",

I wish we could run 32-bit tests on Travis to catch these, but it looks like they don't plan on supporting that: https://github.com/travis-ci/travis-ci/issues/986

Yup, I caught that while trying to run the testsuite on an emulator to get a big-endian platform.
Also this affects both 2.8.x (haven't checked previous releases) and 3.x

Very some reason, I missed your pull requests and have just now merged them in. Sorry about that.
Please run your tests again and confirm that tests pass on 2.8 and master. Thanks!

No worries. Tests are all good after merge on both 2.8.x and master.


Disable $fetch function call for prerendered api routes

Describe the feature
$fetch function calling capabilities in SSR is cool, but when I prerender an expensive route via routeRules I don't want the useFetch composable / $fetch calls to re-run the computation, I want to return the prerendered response.
Additional information

[ ] Would you be willing to help implement this feature?
[ ] Could this feature be implemented as a module?

Final checks

[X] Read the contribution guide.
[X] Check existing discussions and issues.

Not sure what exactly you mean 🤔
While perendering, useFetch/useAsyncData has to run to ensure that the correct content is fetched (unless set to server: false, but then it is not part of the server-rendered content).

Let's say you have /api/fetchSomething.ts that takes 10 whole seconds to fetch that data.
You then move to routeRules and you set { '/api/fetchSomething': { prerender: true }
At that point, that API gets prerendered and transformed as a plain text file during your build, but:

If you fetch that route externally or during CSR: instant response with the prerendered content ensues (yay! 🎉 )
If you have a useFetch inside a component setup, and that component/page gets SSR, the expensive computation gets called (so the page takes 10+ seconds to render

That's a helpful explanation. Our 'internal' fetch should fetch from public assets rather than via the handler in this case. (We should probably also strip the handler from the server bundle to improve performance.)
cc: @pi0

Willing to help with the implementation if you're ok with it


Leftover run-pass reference

See https://github.com/rust-lang/rustc-guide/blob/master/src/tests/intro.md#compiletest-test-suites

Would you mind opening a PR?


Mismatch in simulation by using saveat in fmi2SimulateME

FMU used: https://github.com/modelica/fmi-cross-check/blob/master/fmus/2.0/me/linux64/MapleSim/2021.2/CoupledClutches/CoupledClutches.fmu
Code to reproduce this error:
using FMI, Test, DifferentialEquations

fmu_coupled_clutches_ME = FMI.fmi2Load(joinpath(@__DIR__, "CoupledClutches.fmu"), type=:ME)
outputs = FMI.FMIImport.fmi2GetOutputNames(fmu_coupled_clutches_ME) .|> string

sim1 = FMI.fmi2SimulateME(fmu_coupled_clutches_ME;
                        recordValues=outputs,
                        solver=Tsit5(),
                        saveat=[i for i in 0:0.01:1.5]);

sim2 = FMI.fmi2SimulateME(fmu_coupled_clutches_ME;
                        recordValues=nothing,
                        solver=Tsit5(),
                        saveat=[i for i in 0:0.01:1.5]);

@test sim1.values !== nothing
@test sim2.values === nothing
@test isapprox(sim1.states.t, sim2.states.t)

## This is erroring out (but it should not)
@test isapprox(sim1.states.u[5], sim2.states.u[5])
##

sim3 = FMI.fmi2SimulateME(fmu_coupled_clutches_ME;
                        recordValues=outputs,
                        solver=Tsit5());

sim4 = FMI.fmi2SimulateME(fmu_coupled_clutches_ME;
                        recordValues=nothing,
                        solver=Tsit5());

@test sim3.values !== nothing
@test sim4.values === nothing
@test isapprox(sim3.states.t, sim4.states.t)
@test isapprox(sim3.states.u, sim4.states.u)

[0c46a032] DifferentialEquations v7.1.0
[14a09403] FMI v0.8.5
[8dfed614] Test

The states in sim1 and sim2 should match as the only difference is in the recordValues argument which just stores values.
Also, without using saveat, the states in sim3 and sim4 are matching.
@ThummeTo
cc: @sharanry

Yes, I can reproduce:
using Statistics
mean(abs.(sim1.states.u[5]-sim2.states.u[5])) = 0.0017112668432117551
max(abs.(sim1.states.u[5]-sim2.states.u[5])...) = 0.03042616503656248

You can also try:
fig = fmiPlot(sim1; stateIndices=5:5, values=false)
fmiPlot!(fig, sim2; stateIndices=5:5, values=false)

Question is, if this is an implementation error or just a numerical precision thing... in fact the solver makes little breakes at the saveat-timepoints to retrieve FMU-values, so even if theses are not "accepted solver steps", there is a look-up at these positions.
I will check this out ...

EDIT: The timepoints of the events are also sligthly different ...

this should be fixed in v0.8.6 :-)