warning: user calibration data not found

The joycons are connected to my pc using bluetooth, I follow all the steps and everything is good,
but when I open xJoy it says
warning: user calibration data not found
Only in 1 joycon

I also have this problem, although I wasn't able to install visual C++ for 2017, I think because I have a newer version

This happens to me too on both Joy-Cons every time I open XJoy

Yeah this isn't an error, it's fine.


How should we understand Facet and Extension?

In simple terms, they allow us to build different parts of an editor in a flexible manner. Extension has already incorporated the relevant context type information of Prosemirror, while some APIs of Facet have not been made available for use.
I would like to bind some additional contexts (unrelated to Prosemirror) to the Editor in a similar way. For instance, if I use a markdown parser like remark and want to register functions for mapping ast in a distributed manner across files, similar to what milkdown does, it seems to be a challenging task?

Facet is an internal concept that I want to hide from users, that's why it's not exported as public API.
Binding additional contexts (unrelated to Prosemirror) exceeds the scope of ProseKit. You can easily do that yourself by exporting related APIs from the same file. Here is an example:
// src/editor.ts
import { defineHeading, astHeading } from './extensions/heading'
import { defineCodeBlock, astCodeBlock } from './extensions/code-block'

const prosekitExtension = union([defineHeading(), defineCodeBlock(), /*...*/])
const remarkAst = mergeAst([astHeading, astCodeBlock, /*...*/])


Risk Of Rain 2: Add mod functionality, tweak settings and metaconfig

i tested your template server installes normal and starts without problems only thing is that we get a lobby bug on joining the dedicated server gitting this error on winodows linux and from lan and wan connections

What do you mean by "lobby bug"?

Lobby bug is join can join the server but you cant select any characters and skills.
its just a blank lobby without any context

@Greelan i fixed the problem you can only join a dedicated server if cross play is disabled in the client game settings

after looking at the template mode i found that the docker restrictions(CPU,RAM limits) are not working.
and the Port allocation is broken the server only looks at port 27015 even if u deploy multiple templates.

It sounds like you're having unrelated issues to this template. I'd tale to the Discord in the tech-support section.

On the second issue, you may not have the latest templatel


PMSO-218-search-product-order-by-customer-name

Description
Added search customer name in views and added test case
Related Jira(s)

PMSO-218

Checklist

[x] I have read and followed the PR naming convention
[x] My code follows the code style of this project.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

Tests
test search product order by customer name

Merge into PMSO-217


ClickOnce support in Edge

The first sentence of the article seems to indicate ClickOnce is not supported in the current version of Edge:
"ClickOnce and DirectInvoke are features available in IE and Microsoft Edge (version 45 and earlier) that support the use of a file handler to download files from a website."
This is misleading because ClickOnce works out of the box for Edge v87 and above.
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 1ef8deb0-cf41-dffe-409c-6d4cfeb1ee19
Version Independent ID: 4a966703-f3f0-3600-3224-8b786881f08c
Content: ClickOnce and DirectInvoke in Microsoft Edge
Content Source: edgeenterprise/edge-learn-more-co-di.md
Product: microsoft-edge
GitHub Login: @dan-wesley
Microsoft Alias: collw

@joeyfreeman Thanks for the feedback!  We've updated the sentence in the documentation.


Make both property and DOM events work

This fixes #15. Wraps canEvents.addEventListener to fallback to DOM
events if the event isn't for a defined property.

Merging this in since it fixes the problem. Don't want to be blocked by can-define bugs. Current status over there is here: https://github.com/canjs/can-define/issues/145#issuecomment-284287066
Will revert this commit when/if that gets fixed.


enhance: GraphQL SSE Client compatibility

Fixes https://github.com/dotansimha/graphql-yoga/issues/2279

I wouldn't do this for a few reasons:

Is a breaking change for the simple SSE
Why re-implement graphql-sse? We can instead just integrate it and ship it with the core
People might want to use the simple SSE approach as described in the documentation

Is a breaking change for the simple SSE

Is adding event a breaking change for the users since data remains as-is

Why re-implement graphql-sse? We can instead just integrate it and ship it with the core

I think it is a very small change. Integrating graphql-sse directly to the core might be tricky just like adding graphql-http. For example, we lose the flexibility of the plugin system(request parsing hooks etc would be missing) because the request is handled by that library instead of Yoga. Some features won't work as expected in this case such as Persisted Operations, File Uploads(funny but true) etc.

Supporting distinct connection mode, but not the single will rase confusion - we'll have to keep explaining this

I think we can still have graphql-sse plugin for single connection mode, and this probably will be less confusing than having both simple SSE and graphql-sse references under Subscriptions docs.
So we can tell people to use graphql-sse plugin if they want to use single connection mode.

Is adding event really a breaking change for the users since data remains as-is?

As far as I know the message event on EventSource is only for unnamed events. So the user's would first of all have to:
- eventsource.onmessage = function (event) {
- eventsource.addEventListener('next', function (event) {
  const data = JSON.parse(event.data)
  console.log(data) // This will result something like `{ "data": { "countdown": 0 } }`
- }
+ })

Furthermore, bear in mind that not only is the event: next required for supporting "distinct connection mode", you'll also have to:

Make sure validation issues (pre-execution errors) are passed through the event: next and not respond with a 400
Add the event: complete that is emitted when the stream completes
Support both the body and URL encoded parameters (I think we already do this, but I'll leave this here just for brevity)

Some features won't work as expected in this case such as Persisted Operations, File Uploads(funny but true) etc.

Why are Persisted Ops not supported? This should be handled in #2240.

I think we can still have graphql-sse plugin for single connection mode, and this probably will be less confusing than having both simple SSE and graphql-sse references under Subscriptions docs.
So we can tell people to use graphql-sse plugin if they want to use single connection mode.

But wouldn't it be easier to simply tell users to use graphql-sse plugin if they want to use graphql-sse (instead of explaining the differences)? 🤔

Why are Persisted Ops not supported? This should be handled in https://github.com/dotansimha/graphql-yoga/pull/2240.

Not Persisted Operations specifically. All other plugins using Yoga hooks like onParams, onRequestParseDone and so on wouldn't be supported because the request is parsed by graphql-sse not Yoga. Maybe in order to solve this that plugin can better interact with graphql-sse's internals for those hooks.

But wouldn't it be easier to simply tell users to use graphql-sse plugin if they want to use graphql-sse (instead of explaining the differences)? 🤔

If integrating graphql-sse with all the issues solved above is easier than doing small changes in the existing result processor, yes. Because I initially thought adding event is enough to have intercompatibility for distinct connection mode, then the only use-case for graphql-sse plugin would be single connection mode with HTTP2.

After thinking of all the stuff again, event: next breaks onmessage so it is a breaking change.
I think I'll close this PR.


[ehnancement request] take input from an rss/atom feed

cAn you support taking input from an RSS/Atom feed?  Lots of sites have feeds and some have data you want to remember.  Plus, with rss-bridge, you can get an rss feed from lots of sites and apps that don't have easy api access and in a uniform way.  For example, I listen to NPR Fresh Air.  The page has an rss feed so I can add that to apollo and automatically have an index of the podcasts, at least from the summary/desciption provided.

I also use RSS feeds for updates on tons of websites. If this would make things easier, you could combine the RSS feeds and then you would only have to enter one... I use Inoreader and the RSS for Inoreader can be fed to other RSS readers.


Move define_udt! decl macro to sol! proc macro

https://github.com/alloy-rs/core/blob/c222335ba7d57724e2c9c1ad2bd4689f8f7b5235/crates/sol-types/src/types/udt.rs#L7

can i take this ?

can some extra details of the usage be given ?

can i take this ?

Sure, go ahead!
It's mostly just porting the macro_rules! to proc macro code using quote! in here:
https://github.com/alloy-rs/core/blob/0c21fcc48eab0b52c20d3e98c739bac862aad8ff/crates/sol-macro/src/expand/udt.rs#L9
You can look at the other files in the expand module for examples

would start on it immediately

@mahmudsudo are you working on this? if not I'd like to give it a try


Add ability to set cook time and power on microwave

The LG ThinQ smartphone app has the ability to set the cook time and power level on a microwave. Is there a way this functionality can be added to the Home Assistant integration?

I'd like this feature as well. I'm a terrible developer but am happy to try gathering data and testing if it can help in anyway.

Also expressing interest in this, and a willingness to work on/develop this as well. This would be a major boon for accessibility reasons, as I have a parent who's developing vision issues where finding the buttons on the microwave is beginning to be an issue. We actually bought an LG microwave expressly for this purpose, assuming we could use the integration with google home to allow for voice control, but just found out that this doesn't work natively.


Uncaught TypeError: Cannot read property 'length' of undefined

[Enter steps to reproduce:]

...
...

Atom: 1.22.1 ia32
Electron: 1.6.15
OS: Unknown Windows version
Thrown From: copy-with-style package 1.1.0
Stack Trace
Uncaught TypeError: Cannot read property 'length' of undefined
At C:\Users\Administrator\.atom\packages\copy-with-style\lib\atom_editor.js:21

TypeError: Cannot read property 'length' of undefined
    at /packages/copy-with-style/lib/atom_editor.js:21:53)
    at HTMLgenerator.generate (/packages/copy-with-style/lib/html_generator.js:58:5)
    at Object.copy (/packages/copy-with-style/lib/main.js:58:68)
    at HTMLElement.copyWithStylePreset1 (/packages/copy-with-style/lib/main.js:19:45)
    at CommandRegistry.handleCommandEvent (~/AppData/Local/atom/app-1.22.1/resources/app/src/command-registry.js:381:36)
    at Object.didConfirmSelection (~/AppData/Local/atom/app-1.22.1/resources/app/node_modules/command-palette/lib/command-palette-view.js:144:35)
    at SelectListView.confirmSelection (~/AppData/Local/atom/app-1.22.1/resources/app/node_modules/command-palette/node_modules/atom-select-list/src/select-list-view.js:327:26)
    at SelectListView.didClickItem (~/AppData/Local/atom/app-1.22.1/resources/app/node_modules/command-palette/node_modules/atom-select-list/src/select-list-view.js:242:16)
    at ListItemView.onclick (~/AppData/Local/atom/app-1.22.1/resources/app/node_modules/command-palette/node_modules/atom-select-list/src/select-list-view.js:181:39)
    at ListItemView.didClick (~/AppData/Local/atom/app-1.22.1/resources/app/node_modules/command-palette/node_modules/atom-select-list/src/select-list-view.js:375:16)

Commands
     -6:50.1.0 copy-as-rtf:copy (span.syntax--meta.syntax--function-call.syntax--arguments.syntax--python)
     -5:23.4.0 core:save (input.hidden-input)
     -5:13.3.0 copy-as-rtf:copy (div.line)
     -3:21.5.0 core:copy (input.hidden-input)
     -3:19.9.0 editor:copy-path (input.hidden-input)
  7x -3:11 core:backspace (input.hidden-input)
     -1:56.9.0 command-palette:toggle (input.hidden-input)
     -1:47.7.0 copy-with-style:preset1 (input.hidden-input)
     -1:12.4.0 command-palette:toggle (input.hidden-input)
     -1:03.3.0 pane:show-item-1 (input.hidden-input)
  6x -1:01.7.0 core:backspace (input.hidden-input)
     -0:59.4.0 copy-with-style:preset1 (input.hidden-input)
     -0:14.9.0 command-palette:toggle (input.hidden-input)
     -0:10.8.0 copy-with-style:preset2 (input.hidden-input)

Non-Core Packages
autocomplete-python 1.10.5
copy-as-rtf 0.9.3
copy-with-style 1.1.0
file-icons 2.1.14
highlight-selected 0.13.1
simplified-chinese-menu 5.3.5

I have this also--working on Mac...

I have this issue too. Mine is windows 7 enterprise.

I have this issue too on Linux, Fedora 27.

I'm facing this issue too, on Ubuntu

I'm having this issue too on windows 10
Uncaught TypeError: Cannot read property 'length' of undefined
C:\Users\Jordi\.atom\packages\copy-with-style\lib\atom_editor.js:21
Hide Stack Trace
TypeError: Cannot read property 'length' of undefined
    at new Editor (file:///C:/Users/Jordi/.atom/packages/copy-with-style/lib/atom_editor.js:21:53)
    at RTFgenerator.generate (file:///C:/Users/Jordi/.atom/packages/copy-with-style/lib/rtf_generator.js:47:5)
    at Object.copy (file:///C:/Users/Jordi/.atom/packages/copy-with-style/lib/main.js:56:67)
    at HTMLElement.copyWithStylePreset1 (file:///C:/Users/Jordi/.atom/packages/copy-with-style/lib/main.js:19:45)
    at CommandRegistry.handleCommandEvent (C:\Users\Jordi\AppData\Local\atom\app-1.27.2\resources\app\src\command-registry.js:384:49)
    at KeymapManager.module.exports.KeymapManager.dispatchCommandEvent (C:\Users\Jordi\AppData\Local\atom\app-1.27.2\resources\app\node_modules\atom-keymap\lib\keymap-manager.js:621:22)
    at KeymapManager.module.exports.KeymapManager.handleKeyboardEvent (C:\Users\Jordi\AppData\Local\atom\app-1.27.2\resources\app\node_modules\atom-keymap\lib\keymap-manager.js:412:28)
    at WindowEventHandler.handleDocumentKeyEvent (C:\Users\Jordi\AppData\Local\atom\app-1.27.2\resources\app\src\window-event-handler.js:110:40)

Go to the settings of the add-on, and click "View code".
Go to the lib -> atom_editor.js file
Change line 21 to  this.lines = new Array( this.editor.buffer.getLines().length );
Save the file
Close all your Atom windows and re-open them.
This will fix the .length() issue but now there is another issue with "onDidUpdateState" being called on null because "component.presenter" on line 58 of the atom_editor.js file is deprecated and so presenter is undefined, thus presenter.onDidUpdateState() will not work.

I get this issue as well.
I've edited line 21 based on @milan102 suggestion and commented out lines 59, 62 that were throwing more errors, but now the command does nothing (nothing gets copied to Clipboard)
I'm on Win10.

Same problem here on mac OSX, change in one 21 didn't fix the error.

Same problem on Windows 10. Change in line 21 didn't help.

Same issue here on mac os. Atom 1.41.0

Same issue here on macOS Big Sur (11.2.3), Atom 1.58.0


fix: update package.json

Codecov Report

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

@@          Coverage Diff          @@
##           master    #26   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           3      3
  Lines         162    162
  Branches       24     24
=====================================
  Hits          162    162

Continue to review full report at Codecov.

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

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Bundler resolver blows up with many available versions

I've seen Bundler's resolver blow up (takes a very long time, but does complete) in a production situation where we have a moderate number of dependencies (say 10-20) where some of these have many versions available in the repository (three gems have at least 40 available versions).
I think I've reproduced this situation in a unit test.  It's not a very good test, but it serves to illustrate the problem.
I don't (yet...?) have a solution to the resolver algorithm.  Would be a fun problem if I can find the time.

In general, I recommend that people add optimistic version limits to their Gemfiles in an attempt to avoid this scenario. For example, gem 'foo', '~> 1.2' when the user wants something between 1.2.x and 1.9.x. Since dependency graph resolution is an NP-complete problem that we can't solve by approximation (ha), it's possible that there is no significant improvement available to be made. That said, if anyone would like to take a stab at it, that would be awesome.

Indeed...  There seem to be possible improvements for this particular case (e.g., try activating each first-level dependency against a blank slate so the 'more' gem would succeed after which it would be trivial to find the right version of all the others).  But there would still be other worst-case scenarios...
Found this interesting and relevant link for anyone working on improvements: Review NP-complete Library Versioning Problem

What is your opinion of a hypothetical alternate algorithm that would either resolve quickly or bail out rather than go into some exhaustive search  (perhaps a --exhaustive switch could enable the current behavior)?  I'm not sure the workability of this, but based on reading the edos work it seems Debian's APT (and many other dependency resolvers) does not attempt to perform an exhaustive search.
From a UI perspective, it is not ideal for bundler to take a long time (45+ minutes in my particular real-world case) without any feedback.  Would you be interested in patches that allowed pluggable resolvers?


Update wordpress.md

I propose an update, creating a volume for wordpress data (which stays in /var/www/html/ directory) because when I used this example, it doesn't store files and installed themes.
It's all, ;)
Proposed changes
Added volume for wordpress data

LGTM. However, we've recently merged changes suggested in https://github.com/docker/docker.github.io/pull/12967. Closing this PR in favor of 12967. Thanks again for your contribution.


Game plan.

Alright, let's start by making the library build-system agnostic. I propose we remove browserify, then use Babel to add scripts for compiling to AMD.
IMHO, there's no need to use (although I love) ES6 modules, as that will make it harder to make pull requests against upstream, and that we should just stick to CommonJS for now. We can possibly make a script that converts to ES6 modules for us, although I don't think there's much need for that since build systems today all convert back to CommonJS-like modules anyways. As a guideline, let's keep all require and module.export statements at the top level scope of each files, outside of any conditional logic or control flow, to be compatible with ES6.
Any thoughts?
@steveblue @gadicc

We should make all features each in a separate branch prefixed with infamous-, then we can have a script (or manual method) to combine all the feature branches that determine the different between upstream and our release.
@steveblue f.e., wanna start a branch here, perhaps called infamous-gl-events?

+1 I like this idea.
I'm working primarily with Cordova, BackboneJS and integrating Famous.engine/framework should be as easy as possible.

Hmmm, we need a good way to keep track of features. So, the infamous and infamous-develop branches will represent the infamous releases of Engine, and will have version numbers like 0.7.1-0 or 0.7.1-d.0 for infamous and infamous-develop, respectively.
infamous tracks changes based on Famous Engine's master branch and infamous-develp changes off upstream's develop branch.
So, for example, version 0.7.1-0 (published at npmjs.com/infamous-engine) mean that you'll be getting the version 0 of infamous-engine based off of Famous Engine's master branch at version 0.7.1, and the same concept with the develop branch but with the d. for develop.

Another idea: perhaps instead of infamous and infamous-develop branches, etc, we can just namespace them with slashes, so all infamous branches would be in the infamous namespace. for example:
infamous/master
infamous/develop
infamous/bug/camera-position
etc

Alright, done, all branches now in the infamous/ namespace.

Closing, since I believe we're all focusing on our own engine.

@trusktr Are there any news on your engine? Any more information than the one provided here: http://infamous.io/

@xpluscal All the info at forums.infamous.io is basically what we've got. In particular, we'll post more news in the news thread when we're ready to announce something. The next thing we'll be doing will be merging of our prototype ideas into one.


Can sbws server configure the helper relay via the control port?

Then operators don't have to edit their torrc.

Sbws servers are going away.


fix for including the gulp file

Q
A

Bug fix?
yes

Accidently excluded the gulpfile.js file. This should fix it.

Hi @estruyf, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by Microsoft and real humans are currently evaluating your PR.
TTYL, MSBOT;

thx Elio, pretty important thing indeed... should have also goth this one before mering.

btw. merged this to master as well immediately to ensure that it's included properly there as well.


Grenade cleanup?

About the PR
attempted to cleanup the yml a little, made an abstract entity with the Grenade, LauncherCompatibleGrenade and RMCGrenadeM40 tags, then got all of the M40 ##DP grenades to parent from that, to reduce the amount of repeated lines
Requirements

[x] I have read and am following the Pull Request and Changelog Guidelines.
[x] I have added media to this PR or it does not require an ingame showcase.

never tried to "cleanup" code before so i hope this works, should also work with future M40 ##DP grenades, if there are anymore


Regression tests timeout from time to time

Some of our regression tests timeout from time to time. For an example, see this macOS build. I have seen the timeouts on both macOS and Linux, but maybe this is also an issue on Windows. I strongly believe that these timeouts are caused by non-determinism in our tools (#209, #129). Instead of keeping disabling failing tests (#266), we should try to debug this.
Here is an example of two .ll files produced by bin2llvmir in two separate runs of the features.new-static-code-signatures.TestNewARM32Signatures regression test on my Linux machine. As you can see, they differ on quite a lot of places. @PeterMatula, do you have an idea what is causing these differences?

More timeouts on macOS: https://retdec-tc.avast.com/viewLog.html?buildId=1249&buildTypeId=Retdec_MacBuild&tab=buildLog&_focus=5200
@PeterMatula Can you please take a look at this issue?

Fixed in 55d46b5, all previously disabled tests enabled in https://github.com/avast-tl/retdec-regression-tests/commit/87dd055a96d4a512204082ec1dabedaa2505b7b4.


You passed an empty string for 'line_items[0][images][0]'. We assume empty values are an attempt to unset a parameter; however 'line_items[0][images][0]' cannot be unset. You should remove 'line_items[0][images][0]' from your request or supply a non-empty value. etc

Hi
Getting this error with v1.2.1 of Community Store when trying to checkout after selecting shipping info.
The full message is:
{"error":{"type":"Stripe\\Error\\InvalidRequest","message":"You passed an empty string for 'line_items[0][images][0]'. We assume empty values are an attempt to unset a parameter; however 'line_items[0][images][0]' cannot be unset. You should remove 'line_items[0][images][0]' from your request or supply a non-empty value.","file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiRequestor.php","line":210,"trace":[{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiRequestor.php","line":210,"function":null,"class":"Stripe\\Error\\InvalidRequest","args":["You passed an empty string for 'line_items[0][images][0]'. We assume empty values are an attempt to unset a parameter; however 'line_items[0][images][0]' cannot be unset. You should remove 'line_items[0][images][0]' from your request or supply a non-empty value."]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiRequestor.php","line":173,"function":"_specificAPIError","class":"Stripe\\ApiRequestor","args":["{\n  \"error\": {\n    \"code\": \"parameter_invalid_empty\",\n    \"doc_url\": \"https:\/\/stripe.com\/docs\/error-codes\/parameter-invalid-empty\",\n    \"message\": \"You passed an empty string for 'line_items[0][images][0]'. We assume empty values are an attempt to unset a parameter; however 'line_items[0][images][0]' cannot be unset. You should remove 'line_items[0][images][0]' from your request or supply a non-empty value.\",\n    \"param\": \"line_items[0][images][0]\",\n    \"type\": \"invalid_request_error\"\n  }\n}\n",400,{},{"error":{"code":"parameter_invalid_empty","doc_url":"https:\/\/stripe.com\/docs\/error-codes\/parameter-invalid-empty","message":"You passed an empty string for 'line_items[0][images][0]'. We assume empty values are an attempt to unset a parameter; however 'line_items[0][images][0]' cannot be unset. You should remove 'line_items[0][images][0]' from your request or supply a non-empty value.","param":"line_items[0][images][0]","type":"invalid_request_error"}},{"code":"parameter_invalid_empty","doc_url":"https:\/\/stripe.com\/docs\/error-codes\/parameter-invalid-empty","message":"You passed an empty string for 'line_items[0][images][0]'. We assume empty values are an attempt to unset a parameter; however 'line_items[0][images][0]' cannot be unset. You should remove 'line_items[0][images][0]' from your request or supply a non-empty value.","param":"line_items[0][images][0]","type":"invalid_request_error"}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiRequestor.php","line":473,"function":"handleErrorResponse","class":"Stripe\\ApiRequestor","args":["{\n  \"error\": {\n    \"code\": \"parameter_invalid_empty\",\n    \"doc_url\": \"https:\/\/stripe.com\/docs\/error-codes\/parameter-invalid-empty\",\n    \"message\": \"You passed an empty string for 'line_items[0][images][0]'. We assume empty values are an attempt to unset a parameter; however 'line_items[0][images][0]' cannot be unset. You should remove 'line_items[0][images][0]' from your request or supply a non-empty value.\",\n    \"param\": \"line_items[0][images][0]\",\n    \"type\": \"invalid_request_error\"\n  }\n}\n",400,{},{"error":{"code":"parameter_invalid_empty","doc_url":"https:\/\/stripe.com\/docs\/error-codes\/parameter-invalid-empty","message":"You passed an empty string for 'line_items[0][images][0]'. We assume empty values are an attempt to unset a parameter; however 'line_items[0][images][0]' cannot be unset. You should remove 'line_items[0][images][0]' from your request or supply a non-empty value.","param":"line_items[0][images][0]","type":"invalid_request_error"}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiRequestor.php","line":126,"function":"_interpretResponse","class":"Stripe\\ApiRequestor","args":["{\n  \"error\": {\n    \"code\": \"parameter_invalid_empty\",\n    \"doc_url\": \"https:\/\/stripe.com\/docs\/error-codes\/parameter-invalid-empty\",\n    \"message\": \"You passed an empty string for 'line_items[0][images][0]'. We assume empty values are an attempt to unset a parameter; however 'line_items[0][images][0]' cannot be unset. You should remove 'line_items[0][images][0]' from your request or supply a non-empty value.\",\n    \"param\": \"line_items[0][images][0]\",\n    \"type\": \"invalid_request_error\"\n  }\n}\n",400,{}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiOperations\/Request.php","line":57,"function":"request","class":"Stripe\\ApiRequestor","args":["post","\/v1\/checkout\/sessions",{"client_reference_id":61,"payment_method_types":["card"],"customer_email":"info@madesimplemedia.co.uk","line_items":[{"name":"Artwork for Booklets & Brochures(ABB)","amount":16000,"images":[""],"quantity":1,"currency":"GBP","description":"Price: 8pp\nArtwork for: Booklets & Brochures (A6), Finished Size: A6 (105 x 148mm), Material: 130gsm Gloss, Printed Sides: Double Sided, Pages: 8pp, Quantity: 50, \nPrice: Booklets & Brochures (A6), Finished Size: A6 (105 x 148mm), Material: 130gsm Gloss, Printed Sides: Double Sided, Pages: 8pp, Quantity: 50, "},{"name":"Booklets & Brochures (A6)","amount":3427,"images":["https:\/\/dev.completeprintonline.co.uk\/application\/files\/6715\/0547\/7171\/EP06914_325x170_Booklets__Brochures_A6.png"],"quantity":1,"currency":"GBP","description":"Finished Size: A6 (105 x 148mm)\nMaterial: 130gsm Gloss \nPrinted Sides: Double Sided\nPages: 8pp\nQuantity: 50"},{"name":"FREE UK Mainland","amount":0,"currency":"GBP","quantity":1}],"success_url":{},"cancel_url":{}},[]]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiOperations\/Create.php","line":23,"function":"_staticRequest","class":"Stripe\\ApiResource","args":["post","\/v1\/checkout\/sessions",{"client_reference_id":61,"payment_method_types":["card"],"customer_email":"info@madesimplemedia.co.uk","line_items":[{"name":"Artwork for Booklets & Brochures(ABB)","amount":16000,"images":[""],"quantity":1,"currency":"GBP","description":"Price: 8pp\nArtwork for: Booklets & Brochures (A6), Finished Size: A6 (105 x 148mm), Material: 130gsm Gloss, Printed Sides: Double Sided, Pages: 8pp, Quantity: 50, \nPrice: Booklets & Brochures (A6), Finished Size: A6 (105 x 148mm), Material: 130gsm Gloss, Printed Sides: Double Sided, Pages: 8pp, Quantity: 50, "},{"name":"Booklets & Brochures (A6)","amount":3427,"images":["https:\/\/dev.completeprintonline.co.uk\/application\/files\/6715\/0547\/7171\/EP06914_325x170_Booklets__Brochures_A6.png"],"quantity":1,"currency":"GBP","description":"Finished Size: A6 (105 x 148mm)\nMaterial: 130gsm Gloss \nPrinted Sides: Double Sided\nPages: 8pp\nQuantity: 50"},{"name":"FREE UK Mainland","amount":0,"currency":"GBP","quantity":1}],"success_url":{},"cancel_url":{}},null]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/src\/CommunityStore\/Payment\/Methods\/CommunityStoreStripeCheckout\/CommunityStoreStripeCheckoutPaymentMethod.php","line":206,"function":"create","class":"Stripe\\Checkout\\Session","args":[{"client_reference_id":61,"payment_method_types":["card"],"customer_email":"info@madesimplemedia.co.uk","line_items":[{"name":"Artwork for Booklets & Brochures(ABB)","amount":16000,"images":[""],"quantity":1,"currency":"GBP","description":"Price: 8pp\nArtwork for: Booklets & Brochures (A6), Finished Size: A6 (105 x 148mm), Material: 130gsm Gloss, Printed Sides: Double Sided, Pages: 8pp, Quantity: 50, \nPrice: Booklets & Brochures (A6), Finished Size: A6 (105 x 148mm), Material: 130gsm Gloss, Printed Sides: Double Sided, Pages: 8pp, Quantity: 50, "},{"name":"Booklets & Brochures (A6)","amount":3427,"images":["https:\/\/dev.completeprintonline.co.uk\/application\/files\/6715\/0547\/7171\/EP06914_325x170_Booklets__Brochures_A6.png"],"quantity":1,"currency":"GBP","description":"Finished Size: A6 (105 x 148mm)\nMaterial: 130gsm Gloss \nPrinted Sides: Double Sided\nPages: 8pp\nQuantity: 50"},{"name":"FREE UK Mainland","amount":0,"currency":"GBP","quantity":1}],"success_url":{},"cancel_url":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Controller\/AbstractController.php","line":172,"function":"createSession","class":"Concrete\\Package\\CommunityStoreStripeCheckout\\Src\\CommunityStore\\Payment\\Methods\\CommunityStoreStripeCheckout\\CommunityStoreStripeCheckoutPaymentMethod","args":[]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Controller\/AbstractController.php","line":172,"function":"call_user_func_array","class":null,"args":[[{},"createSession"],[]]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Routing\/ControllerRouteCallback.php","line":27,"function":"runAction","class":"Concrete\\Core\\Controller\\AbstractController","args":["createSession",[]]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Routing\/Router.php","line":149,"function":"execute","class":"Concrete\\Core\\Routing\\ControllerRouteCallback","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{},{"_controller":"\\Concrete\\Package\\CommunityStoreStripeCheckout\\Src\\CommunityStore\\Payment\\Methods\\CommunityStoreStripeCheckout\\CommunityStoreStripeCheckoutPaymentMethod::createSession","callback":{},"path":"\/checkout\/stripecheckoutcreatesession\/","_route":"checkout_stripecheckoutcreatesession"}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/DefaultDispatcher.php","line":114,"function":"execute","class":"Concrete\\Core\\Routing\\Router","args":[{},{"_controller":"\\Concrete\\Package\\CommunityStoreStripeCheckout\\Src\\CommunityStore\\Payment\\Methods\\CommunityStoreStripeCheckout\\CommunityStoreStripeCheckoutPaymentMethod::createSession","callback":{},"path":"\/checkout\/stripecheckoutcreatesession\/","_route":"checkout_stripecheckoutcreatesession"}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/DefaultDispatcher.php","line":54,"function":"handleDispatch","class":"Concrete\\Core\\Http\\DefaultDispatcher","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/DispatcherDelegate.php","line":39,"function":"dispatch","class":"Concrete\\Core\\Http\\DefaultDispatcher","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/ThumbnailMiddleware.php","line":60,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\DispatcherDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/MiddlewareDelegate.php","line":38,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\ThumbnailMiddleware","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/FrameOptionsMiddleware.php","line":39,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/MiddlewareDelegate.php","line":38,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\FrameOptionsMiddleware","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/CookieMiddleware.php","line":37,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/MiddlewareDelegate.php","line":38,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\CookieMiddleware","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/ApplicationMiddleware.php","line":29,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/MiddlewareDelegate.php","line":38,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\ApplicationMiddleware","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/MiddlewareStack.php","line":86,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/DefaultServer.php","line":85,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareStack","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Foundation\/Runtime\/Run\/DefaultRunner.php","line":115,"function":"handleRequest","class":"Concrete\\Core\\Http\\DefaultServer","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Foundation\/Runtime\/DefaultRuntime.php","line":102,"function":"run","class":"Concrete\\Core\\Foundation\\Runtime\\Run\\DefaultRunner","args":[]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/dispatcher.php","line":39,"function":"run","class":"Concrete\\Core\\Foundation\\Runtime\\DefaultRuntime","args":[]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/index.php","line":3,"function":"require","class":null,"args":["\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/dispatcher.php"]}]},"errors":["You passed an empty string for 'line_items[0][images][0]'. We assume empty values are an attempt to unset a parameter; however 'line_items[0][images][0]' cannot be unset. You should remove 'line_items[0][images][0]' from your request or supply a non-empty value."]}

Try this fix:
https://github.com/concrete5-community-store/community_store_stripe_checkout/commit/8ad73c18d4005cb17bbb0214ef206c23cc1ca6d2

Done, now got the error:
{"error":{"type":"Stripe\\Error\\InvalidRequest","message":"Invalid positive integer","file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiRequestor.php","line":210,"trace":[{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiRequestor.php","line":210,"function":null,"class":"Stripe\\Error\\InvalidRequest","args":["Invalid positive integer"]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiRequestor.php","line":173,"function":"_specificAPIError","class":"Stripe\\ApiRequestor","args":["{\n  \"error\": {\n    \"code\": \"parameter_invalid_integer\",\n    \"doc_url\": \"https:\/\/stripe.com\/docs\/error-codes\/parameter-invalid-integer\",\n    \"message\": \"Invalid positive integer\",\n    \"param\": \"line_items[2][amount]\",\n    \"type\": \"invalid_request_error\"\n  }\n}\n",400,{},{"error":{"code":"parameter_invalid_integer","doc_url":"https:\/\/stripe.com\/docs\/error-codes\/parameter-invalid-integer","message":"Invalid positive integer","param":"line_items[2][amount]","type":"invalid_request_error"}},{"code":"parameter_invalid_integer","doc_url":"https:\/\/stripe.com\/docs\/error-codes\/parameter-invalid-integer","message":"Invalid positive integer","param":"line_items[2][amount]","type":"invalid_request_error"}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiRequestor.php","line":473,"function":"handleErrorResponse","class":"Stripe\\ApiRequestor","args":["{\n  \"error\": {\n    \"code\": \"parameter_invalid_integer\",\n    \"doc_url\": \"https:\/\/stripe.com\/docs\/error-codes\/parameter-invalid-integer\",\n    \"message\": \"Invalid positive integer\",\n    \"param\": \"line_items[2][amount]\",\n    \"type\": \"invalid_request_error\"\n  }\n}\n",400,{},{"error":{"code":"parameter_invalid_integer","doc_url":"https:\/\/stripe.com\/docs\/error-codes\/parameter-invalid-integer","message":"Invalid positive integer","param":"line_items[2][amount]","type":"invalid_request_error"}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiRequestor.php","line":126,"function":"_interpretResponse","class":"Stripe\\ApiRequestor","args":["{\n  \"error\": {\n    \"code\": \"parameter_invalid_integer\",\n    \"doc_url\": \"https:\/\/stripe.com\/docs\/error-codes\/parameter-invalid-integer\",\n    \"message\": \"Invalid positive integer\",\n    \"param\": \"line_items[2][amount]\",\n    \"type\": \"invalid_request_error\"\n  }\n}\n",400,{}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiOperations\/Request.php","line":57,"function":"request","class":"Stripe\\ApiRequestor","args":["post","\/v1\/checkout\/sessions",{"client_reference_id":63,"payment_method_types":["card"],"customer_email":"info@madesimplemedia.co.uk","line_items":[{"name":"Artwork for Booklets & Brochures(ABB)","amount":16000,"quantity":1,"currency":"GBP","description":"Price: 8pp\nArtwork for: Booklets & Brochures (A6), Finished Size: A6 (105 x 148mm), Material: 130gsm Gloss, Printed Sides: Double Sided, Pages: 8pp, Quantity: 50, \nPrice: Booklets & Brochures (A6), Finished Size: A6 (105 x 148mm), Material: 130gsm Gloss, Printed Sides: Double Sided, Pages: 8pp, Quantity: 50, "},{"name":"Booklets & Brochures (A6)","amount":3427,"quantity":1,"currency":"GBP","images":["https:\/\/dev.completeprintonline.co.uk\/application\/files\/6715\/0547\/7171\/EP06914_325x170_Booklets__Brochures_A6.png"],"description":"Finished Size: A6 (105 x 148mm)\nMaterial: 130gsm Gloss \nPrinted Sides: Double Sided\nPages: 8pp\nQuantity: 50"},{"name":"FREE UK Mainland","amount":0,"currency":"GBP","quantity":1}],"success_url":{},"cancel_url":{}},[]]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiOperations\/Create.php","line":23,"function":"_staticRequest","class":"Stripe\\ApiResource","args":["post","\/v1\/checkout\/sessions",{"client_reference_id":63,"payment_method_types":["card"],"customer_email":"info@madesimplemedia.co.uk","line_items":[{"name":"Artwork for Booklets & Brochures(ABB)","amount":16000,"quantity":1,"currency":"GBP","description":"Price: 8pp\nArtwork for: Booklets & Brochures (A6), Finished Size: A6 (105 x 148mm), Material: 130gsm Gloss, Printed Sides: Double Sided, Pages: 8pp, Quantity: 50, \nPrice: Booklets & Brochures (A6), Finished Size: A6 (105 x 148mm), Material: 130gsm Gloss, Printed Sides: Double Sided, Pages: 8pp, Quantity: 50, "},{"name":"Booklets & Brochures (A6)","amount":3427,"quantity":1,"currency":"GBP","images":["https:\/\/dev.completeprintonline.co.uk\/application\/files\/6715\/0547\/7171\/EP06914_325x170_Booklets__Brochures_A6.png"],"description":"Finished Size: A6 (105 x 148mm)\nMaterial: 130gsm Gloss \nPrinted Sides: Double Sided\nPages: 8pp\nQuantity: 50"},{"name":"FREE UK Mainland","amount":0,"currency":"GBP","quantity":1}],"success_url":{},"cancel_url":{}},null]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/src\/CommunityStore\/Payment\/Methods\/CommunityStoreStripeCheckout\/CommunityStoreStripeCheckoutPaymentMethod.php","line":208,"function":"create","class":"Stripe\\Checkout\\Session","args":[{"client_reference_id":63,"payment_method_types":["card"],"customer_email":"info@madesimplemedia.co.uk","line_items":[{"name":"Artwork for Booklets & Brochures(ABB)","amount":16000,"quantity":1,"currency":"GBP","description":"Price: 8pp\nArtwork for: Booklets & Brochures (A6), Finished Size: A6 (105 x 148mm), Material: 130gsm Gloss, Printed Sides: Double Sided, Pages: 8pp, Quantity: 50, \nPrice: Booklets & Brochures (A6), Finished Size: A6 (105 x 148mm), Material: 130gsm Gloss, Printed Sides: Double Sided, Pages: 8pp, Quantity: 50, "},{"name":"Booklets & Brochures (A6)","amount":3427,"quantity":1,"currency":"GBP","images":["https:\/\/dev.completeprintonline.co.uk\/application\/files\/6715\/0547\/7171\/EP06914_325x170_Booklets__Brochures_A6.png"],"description":"Finished Size: A6 (105 x 148mm)\nMaterial: 130gsm Gloss \nPrinted Sides: Double Sided\nPages: 8pp\nQuantity: 50"},{"name":"FREE UK Mainland","amount":0,"currency":"GBP","quantity":1}],"success_url":{},"cancel_url":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Controller\/AbstractController.php","line":172,"function":"createSession","class":"Concrete\\Package\\CommunityStoreStripeCheckout\\Src\\CommunityStore\\Payment\\Methods\\CommunityStoreStripeCheckout\\CommunityStoreStripeCheckoutPaymentMethod","args":[]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Controller\/AbstractController.php","line":172,"function":"call_user_func_array","class":null,"args":[[{},"createSession"],[]]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Routing\/ControllerRouteCallback.php","line":27,"function":"runAction","class":"Concrete\\Core\\Controller\\AbstractController","args":["createSession",[]]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Routing\/Router.php","line":149,"function":"execute","class":"Concrete\\Core\\Routing\\ControllerRouteCallback","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{},{"_controller":"\\Concrete\\Package\\CommunityStoreStripeCheckout\\Src\\CommunityStore\\Payment\\Methods\\CommunityStoreStripeCheckout\\CommunityStoreStripeCheckoutPaymentMethod::createSession","callback":{},"path":"\/checkout\/stripecheckoutcreatesession\/","_route":"checkout_stripecheckoutcreatesession"}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/DefaultDispatcher.php","line":114,"function":"execute","class":"Concrete\\Core\\Routing\\Router","args":[{},{"_controller":"\\Concrete\\Package\\CommunityStoreStripeCheckout\\Src\\CommunityStore\\Payment\\Methods\\CommunityStoreStripeCheckout\\CommunityStoreStripeCheckoutPaymentMethod::createSession","callback":{},"path":"\/checkout\/stripecheckoutcreatesession\/","_route":"checkout_stripecheckoutcreatesession"}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/DefaultDispatcher.php","line":54,"function":"handleDispatch","class":"Concrete\\Core\\Http\\DefaultDispatcher","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/DispatcherDelegate.php","line":39,"function":"dispatch","class":"Concrete\\Core\\Http\\DefaultDispatcher","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/ThumbnailMiddleware.php","line":60,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\DispatcherDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/MiddlewareDelegate.php","line":38,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\ThumbnailMiddleware","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/FrameOptionsMiddleware.php","line":39,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/MiddlewareDelegate.php","line":38,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\FrameOptionsMiddleware","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/CookieMiddleware.php","line":37,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/MiddlewareDelegate.php","line":38,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\CookieMiddleware","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/ApplicationMiddleware.php","line":29,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/MiddlewareDelegate.php","line":38,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\ApplicationMiddleware","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/MiddlewareStack.php","line":86,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/DefaultServer.php","line":85,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareStack","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Foundation\/Runtime\/Run\/DefaultRunner.php","line":115,"function":"handleRequest","class":"Concrete\\Core\\Http\\DefaultServer","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Foundation\/Runtime\/DefaultRuntime.php","line":102,"function":"run","class":"Concrete\\Core\\Foundation\\Runtime\\Run\\DefaultRunner","args":[]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/dispatcher.php","line":39,"function":"run","class":"Concrete\\Core\\Foundation\\Runtime\\DefaultRuntime","args":[]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/index.php","line":3,"function":"require","class":null,"args":["\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/dispatcher.php"]}]},"errors":["Invalid positive integer"]}
When I go to the ApiRequestor file at line 210, it seems a 404 error was thrown

I think the reason for this error is that some of the products have a zero cost individually, which I don't think is allowed with the gateway.
It might need to be a case of not including them as line items in the transaction (but they'll still show in the order itself).
Try this tweak:
https://github.com/concrete5-community-store/community_store_stripe_checkout/commit/259fb78380ad0df36d87b9019b7e0c920f21e6f3

Thanks, tried the tweak but I think the same error
{"error":{"type":"Stripe\\Error\\InvalidRequest","message":"Invalid positive integer","file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiRequestor.php","line":210,"trace":[{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiRequestor.php","line":210,"function":null,"class":"Stripe\\Error\\InvalidRequest","args":["Invalid positive integer"]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiRequestor.php","line":173,"function":"_specificAPIError","class":"Stripe\\ApiRequestor","args":["{\n  \"error\": {\n    \"code\": \"parameter_invalid_integer\",\n    \"doc_url\": \"https:\/\/stripe.com\/docs\/error-codes\/parameter-invalid-integer\",\n    \"message\": \"Invalid positive integer\",\n    \"param\": \"line_items[2][amount]\",\n    \"type\": \"invalid_request_error\"\n  }\n}\n",400,{},{"error":{"code":"parameter_invalid_integer","doc_url":"https:\/\/stripe.com\/docs\/error-codes\/parameter-invalid-integer","message":"Invalid positive integer","param":"line_items[2][amount]","type":"invalid_request_error"}},{"code":"parameter_invalid_integer","doc_url":"https:\/\/stripe.com\/docs\/error-codes\/parameter-invalid-integer","message":"Invalid positive integer","param":"line_items[2][amount]","type":"invalid_request_error"}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiRequestor.php","line":473,"function":"handleErrorResponse","class":"Stripe\\ApiRequestor","args":["{\n  \"error\": {\n    \"code\": \"parameter_invalid_integer\",\n    \"doc_url\": \"https:\/\/stripe.com\/docs\/error-codes\/parameter-invalid-integer\",\n    \"message\": \"Invalid positive integer\",\n    \"param\": \"line_items[2][amount]\",\n    \"type\": \"invalid_request_error\"\n  }\n}\n",400,{},{"error":{"code":"parameter_invalid_integer","doc_url":"https:\/\/stripe.com\/docs\/error-codes\/parameter-invalid-integer","message":"Invalid positive integer","param":"line_items[2][amount]","type":"invalid_request_error"}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiRequestor.php","line":126,"function":"_interpretResponse","class":"Stripe\\ApiRequestor","args":["{\n  \"error\": {\n    \"code\": \"parameter_invalid_integer\",\n    \"doc_url\": \"https:\/\/stripe.com\/docs\/error-codes\/parameter-invalid-integer\",\n    \"message\": \"Invalid positive integer\",\n    \"param\": \"line_items[2][amount]\",\n    \"type\": \"invalid_request_error\"\n  }\n}\n",400,{}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiOperations\/Request.php","line":57,"function":"request","class":"Stripe\\ApiRequestor","args":["post","\/v1\/checkout\/sessions",{"client_reference_id":65,"payment_method_types":["card"],"customer_email":"info@madesimplemedia.co.uk","line_items":[{"name":"Artwork for Booklets & Brochures(ABB)","amount":16000,"quantity":1,"currency":"GBP","description":"Price: 8pp\nArtwork for: Booklets & Brochures (A6), Finished Size: A6 (105 x 148mm), Material: 130gsm Gloss, Printed Sides: Double Sided, Pages: 8pp, Quantity: 50, \nPrice: Booklets & Brochures (A6), Finished Size: A6 (105 x 148mm), Material: 130gsm Gloss, Printed Sides: Double Sided, Pages: 8pp, Quantity: 50, "},{"name":"Booklets & Brochures (A6)","amount":3427,"quantity":1,"currency":"GBP","images":["https:\/\/dev.completeprintonline.co.uk\/application\/files\/6715\/0547\/7171\/EP06914_325x170_Booklets__Brochures_A6.png"],"description":"Finished Size: A6 (105 x 148mm)\nMaterial: 130gsm Gloss \nPrinted Sides: Double Sided\nPages: 8pp\nQuantity: 50"},{"name":"FREE UK Mainland","amount":0,"currency":"GBP","quantity":1}],"success_url":{},"cancel_url":{}},[]]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/vendor\/stripe\/stripe-php\/lib\/ApiOperations\/Create.php","line":23,"function":"_staticRequest","class":"Stripe\\ApiResource","args":["post","\/v1\/checkout\/sessions",{"client_reference_id":65,"payment_method_types":["card"],"customer_email":"info@madesimplemedia.co.uk","line_items":[{"name":"Artwork for Booklets & Brochures(ABB)","amount":16000,"quantity":1,"currency":"GBP","description":"Price: 8pp\nArtwork for: Booklets & Brochures (A6), Finished Size: A6 (105 x 148mm), Material: 130gsm Gloss, Printed Sides: Double Sided, Pages: 8pp, Quantity: 50, \nPrice: Booklets & Brochures (A6), Finished Size: A6 (105 x 148mm), Material: 130gsm Gloss, Printed Sides: Double Sided, Pages: 8pp, Quantity: 50, "},{"name":"Booklets & Brochures (A6)","amount":3427,"quantity":1,"currency":"GBP","images":["https:\/\/dev.completeprintonline.co.uk\/application\/files\/6715\/0547\/7171\/EP06914_325x170_Booklets__Brochures_A6.png"],"description":"Finished Size: A6 (105 x 148mm)\nMaterial: 130gsm Gloss \nPrinted Sides: Double Sided\nPages: 8pp\nQuantity: 50"},{"name":"FREE UK Mainland","amount":0,"currency":"GBP","quantity":1}],"success_url":{},"cancel_url":{}},null]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/packages\/community_store_stripe_checkout\/src\/CommunityStore\/Payment\/Methods\/CommunityStoreStripeCheckout\/CommunityStoreStripeCheckoutPaymentMethod.php","line":208,"function":"create","class":"Stripe\\Checkout\\Session","args":[{"client_reference_id":65,"payment_method_types":["card"],"customer_email":"info@madesimplemedia.co.uk","line_items":[{"name":"Artwork for Booklets & Brochures(ABB)","amount":16000,"quantity":1,"currency":"GBP","description":"Price: 8pp\nArtwork for: Booklets & Brochures (A6), Finished Size: A6 (105 x 148mm), Material: 130gsm Gloss, Printed Sides: Double Sided, Pages: 8pp, Quantity: 50, \nPrice: Booklets & Brochures (A6), Finished Size: A6 (105 x 148mm), Material: 130gsm Gloss, Printed Sides: Double Sided, Pages: 8pp, Quantity: 50, "},{"name":"Booklets & Brochures (A6)","amount":3427,"quantity":1,"currency":"GBP","images":["https:\/\/dev.completeprintonline.co.uk\/application\/files\/6715\/0547\/7171\/EP06914_325x170_Booklets__Brochures_A6.png"],"description":"Finished Size: A6 (105 x 148mm)\nMaterial: 130gsm Gloss \nPrinted Sides: Double Sided\nPages: 8pp\nQuantity: 50"},{"name":"FREE UK Mainland","amount":0,"currency":"GBP","quantity":1}],"success_url":{},"cancel_url":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Controller\/AbstractController.php","line":172,"function":"createSession","class":"Concrete\\Package\\CommunityStoreStripeCheckout\\Src\\CommunityStore\\Payment\\Methods\\CommunityStoreStripeCheckout\\CommunityStoreStripeCheckoutPaymentMethod","args":[]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Controller\/AbstractController.php","line":172,"function":"call_user_func_array","class":null,"args":[[{},"createSession"],[]]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Routing\/ControllerRouteCallback.php","line":27,"function":"runAction","class":"Concrete\\Core\\Controller\\AbstractController","args":["createSession",[]]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Routing\/Router.php","line":149,"function":"execute","class":"Concrete\\Core\\Routing\\ControllerRouteCallback","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{},{"_controller":"\\Concrete\\Package\\CommunityStoreStripeCheckout\\Src\\CommunityStore\\Payment\\Methods\\CommunityStoreStripeCheckout\\CommunityStoreStripeCheckoutPaymentMethod::createSession","callback":{},"path":"\/checkout\/stripecheckoutcreatesession\/","_route":"checkout_stripecheckoutcreatesession"}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/DefaultDispatcher.php","line":114,"function":"execute","class":"Concrete\\Core\\Routing\\Router","args":[{},{"_controller":"\\Concrete\\Package\\CommunityStoreStripeCheckout\\Src\\CommunityStore\\Payment\\Methods\\CommunityStoreStripeCheckout\\CommunityStoreStripeCheckoutPaymentMethod::createSession","callback":{},"path":"\/checkout\/stripecheckoutcreatesession\/","_route":"checkout_stripecheckoutcreatesession"}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/DefaultDispatcher.php","line":54,"function":"handleDispatch","class":"Concrete\\Core\\Http\\DefaultDispatcher","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/DispatcherDelegate.php","line":39,"function":"dispatch","class":"Concrete\\Core\\Http\\DefaultDispatcher","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/ThumbnailMiddleware.php","line":60,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\DispatcherDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/MiddlewareDelegate.php","line":38,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\ThumbnailMiddleware","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/FrameOptionsMiddleware.php","line":39,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/MiddlewareDelegate.php","line":38,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\FrameOptionsMiddleware","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/CookieMiddleware.php","line":37,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/MiddlewareDelegate.php","line":38,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\CookieMiddleware","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/ApplicationMiddleware.php","line":29,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/MiddlewareDelegate.php","line":38,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\ApplicationMiddleware","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/Middleware\/MiddlewareStack.php","line":86,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Http\/DefaultServer.php","line":85,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareStack","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Foundation\/Runtime\/Run\/DefaultRunner.php","line":115,"function":"handleRequest","class":"Concrete\\Core\\Http\\DefaultServer","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/src\/Foundation\/Runtime\/DefaultRuntime.php","line":102,"function":"run","class":"Concrete\\Core\\Foundation\\Runtime\\Run\\DefaultRunner","args":[]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/dispatcher.php","line":39,"function":"run","class":"Concrete\\Core\\Foundation\\Runtime\\DefaultRuntime","args":[]},{"file":"\/home\/completeprinton\/dev.completeprintonline.co.uk\/index.php","line":3,"function":"require","class":null,"args":["\/home\/completeprinton\/dev.completeprintonline.co.uk\/concrete\/dispatcher.php"]}]},"errors":["Invalid positive integer"]}

Ahh, there's free shipping to consider as well!
https://github.com/concrete5-community-store/community_store_stripe_checkout/commit/da3cda7164b53ee8d66be2b64006f92a9d1b65bc

That's it, working now thanks so much!

Brilliant, great things to resolve - I would never have thought about excluding free shipping or products when building it, it's not even covered in the doco that the prices have to be non-zero

Impossible to think of everything, happy to help test!  I think there is a min price of 20p or something.

I think I've set it set to 0.5, which is 50 cents, pence, whatever unit.
That'll prevent the gateway from being offered for zero or very low cart totals. For others, it'll now just include the items you are actually paying for, which in many ways makes sense - Stripe is about transactions, not tracking full orders and their details, so why should they know about all the non-chargeable line items

I've put the file of the latest merge in place (which is not in the release) but I still get this error from the ApiRequestor Class...any ideas? Item in Cart is 10EUR without shipping.

Which error is still occurring for you, the one in the original subject line of this issue, or the second one about 'Invalid positive integer'?

line_items[0][description] is empty

You passed an empty string for ‘line_items[0][description]’. We assume empty values are an attempt to unset a parameter; however ‘line_items[0][description]’ cannot be unset. You should remove ‘line_items[0][description]’ from your request or supply a non-empty value. (0)

I think that's a new one, but similar in nature. I'll take a quick look

I've pushed up a potential fix for this, should be easy to implement.
Let me know how you go, and if all is ok I'll push up another release that has everything up to date

https://github.com/concrete5-community-store/community_store_stripe_checkout/commit/9e55110ed4773724232cf5b7dfb6f1cac4220072

That did the trick, it works now! Thank you!


Fix UTF-8 console input on Windows

Fix #13731, Use ReadConsoleW and WriteConsoleW.

Thanks for this great work!
I think the code could be improved in some places, based on your lack of experience in the language.
But let's not go into specifics about that right now.
I have a couple of design considerations that I want to talk about first.

I'm trying to explain a bit about this PR.
The main idea is that using ReadConsoleW/WriteConsoleW to solve the UTF-8 problem with Windows console, which in itself is simple. This PR seems a bit complicated for several reasons:

When reading data from the console, you need to correctly handle incomplete characters. For example, suppose the next character to be read has 4 UTF-8 bytes, but only 1 byte needs to be read, and there are 3 bytes left here, @console_bytes holds the residual 3 bytes for the next read. Writing data to the console can have a similar problem.
After one read, there may be remaining UTF-16 coding units, and the end of the UTF-16 code units is not necessarily a complete character, @console_units holds the residual UTF-16 code units is saved for the next read. Writing data to the console can have a similar problem.
There may be problems with passing in too large buffer to ReadConsoleW/WriteConsoleW, so UTF-16 code units needs to make a limit, and the max number of UTF-16 code units cannot be calculated directly depending on the number of bytes processed.
In order to prevent memory from being allocated again and again, console_bytes_buffer and console_units_buffer are used, which are the underlying storage locations of @console_bytes and @console_units.
Handle Ctrl-Z (EOF) correctly.
The private Utils module exists because the current standard library lacks some low-level, generic Unicode-related APIs, and this private Utils module will be removed when the standard library has related APIs in the future.

A version has been reimplemented according to @straight-shoota's suggestion.
The code is rewritten after revert to commit bfc7e20 and you can directly review the differences with that commit.

close https://github.com/crystal-lang/crystal/pull/13750 that PR too when this one is merged.

The buffer seems awefully small. IO::DEFAULT_BUFFER_SIZE is 32k and I suppose we should use the same here. It's a singleton buffer so cost of overallocation is negligible.
A comment in the Go implementation points out that ReadConsoleW has an upper limit for buffer size. They are using 10k for the UTF-16 buffer.

Yes, I have read Golang's related code before and it tends to use a large buffer. I think there is still room for optimization in Golang's related code, but that's not what I care about.
The purpose of using buffers here is to handle edge cases correctly, not for performance.
The reason why I use a small buffer is because the console is usually read on a line basis, and the number of characters entered on a line usually does not exceed 64 characters. Even if it occasionally exceeds 64 characters, multiple reads are unlikely to become a performance bottleneck.

Thank you for your effort on fixing that issue! ❤


Add Mantainers section to Readme

Hey @chicken-biryani
This PR will Resolve =>Add Mantainers section to Readme #75
Please Review my PR

Well done @Atif0604

Hey @Ayushparikh-code @chicken-biryani @harshita2216
Please Add LGMSOC21 label to this PR that it should be showing in the label section of PR as my PR is not being counted just because the LGMSOC21 label is not showed up in label section


Official PyPy support

Robot Framework runs on PyPy fairly well, but some acceptance tests fail on it. At least some of these failures are just bugs in test system that don't take PyPy into account, but there can be some actual bugs too. Need to test PyPy more thoroughly before we can say we officially support it. Once we do, we can add this classifier back to setup.py:

Programming Language :: Python :: Implementation :: PyPy

PyPy is faster than the standard Python in some cases, so there ought to be some concrete benefits in supporting it. One part of this is deciding which PyPy versions we support.

It turned out that we mostly support both PyPy 2 and PyPy 3. Most of the test failures were due to inconsistency in how __builtins__ is handled (Python itself handles it inconsistently as well) but that only affected our tests and was easy to fix.
The only change needed to the code is a workaround for a bug in PyPy related to handling __init__ inherited from object. This fix is pretty easy and can be done conditionally so that it doesn't affect any other interpreters.
Supporting PyPy is thus so low hanging fruit (and safe to pick) that it makes sense to do it already in 3.0.1 even though we already are in release candidate phase. In addition to the fixes mentioned above, need to update setup.py and see what docs in general say about the PyPy support.

Tests updated support PyPy where needed, added workaround for the __init__ bug, added PyPy classifier to setup.py, and updated README and INSTALL to document that PyPy is supported and how to use it. This issue is done.

In which cases performance will be imporved?

It depens on the context, but my understanding is that especially long running processes benefit from being run on PyPy. The only way for you to know does it improve performance in your case is to test it.


move @waleedashraf to emeritus

Hi Team,
Due to personal work, I haven't been much active in CommComm lately and skipped most of the recent meetings.
Better to update my status as emeritus. I'll still be in touch. You can reach out to me through email/Twitter anytime.
It has been a great pleasure to work with the team for almost 3 years. Thanks to everyone for their support. ❤

Also, I think we should move Node.js Collection Initiative to retired and possibly archive the repo. @bnb

Thanks for the time and energy you've spent on the Community Committee over the past few years. I hope that we see you again sometime in the not too distant future ❤
I think we'll probably want to work with the Foundation on a small plan for what to do with the Medium (since they still do post to the Node.js Medium account), but otherwise agree.

Thanks for all your work and contributions here with Node.js (OpenJS) Foundation and otherwise. I hope to see you again sooner than later. Cheers! Good luck.


Bound constraints in LBFGS

This is a great package! Are bound constraints for LBFGS on the roadmap?

Yes, though it make take a while. In the meantime, you can use the wrapper jaxopt.ScipyBoundedMinimize.

Yes, though it make take a while. In the meantime, you can use the wrapper jaxopt.ScipyBoundedMinimize.

Thank you! I totally missed that in the documentation.

And also jaxopt.ProjectedGradient together with projection_box.

Is this still unresolved or is it possible to use bounds with jaxopt.LBFGS now? In the documentation I saw, that .init_state and .update() accepts bounds as input.

Indeed you can now use jaxopt.LBFGSB. The bounds are to be passed to run if you let jaxopt do the optimization loop or to init_state and update if you want to do the optimization loop manually. I will close this issue then.


using batchnorm/dropout layers from flax.linen along with diffrax package

Hi Patrick,
I am using the diffrax ode solver in my code and will need to use batchnorm/dropout layers in the function that will be passed to the solver. However this is the error I am getting:
solution = diffrax.diffeqsolve(
File "/data/ne12/.conda/envs/Negar2/lib/python3.8/site-packages/equinox/_jit.py", line 99, in call
return self._call(False, args, kwargs)
File "/data/ne12/.conda/envs/Negar2/lib/python3.8/site-packages/equinox/_jit.py", line 95, in _call
out = self._cached(dynamic, static)
File "/data/ne12/.conda/envs/Negar2/lib/python3.8/site-packages/equinox/_jit.py", line 37, in fun_wrapped
out = fun(*args, **kwargs)
File "/data/ne12/.conda/envs/Negar2/lib/python3.8/site-packages/diffrax/integrate.py", line 676, in diffeqsolve
solver_state = solver.init(terms, t0, tnext, y0, args)
File "/data/ne12/.conda/envs/Negar2/lib/python3.8/site-packages/diffrax/solver/runge_kutta.py", line 269, in init
return terms.vf(t0, y0, args)
File "/data/ne12/.conda/envs/Negar2/lib/python3.8/site-packages/diffrax/term.py", line 364, in vf
return self.term.vf(t, y, args)
File "/data/ne12/.conda/envs/Negar2/lib/python3.8/site-packages/diffrax/term.py", line 173, in vf
return self.vector_field(t, y, args)
File "/data/ne12/Kuramoto/model/neuralODE.py", line 56, in fn
y0 = self.batchnorm(y0, use_running_average=not training)
File "/data/ne12/.conda/envs/Negar2/lib/python3.8/site-packages/flax/linen/normalization.py", line 256, in call
ra_mean = self.variable('batch_stats', 'mean',
File "/data/ne12/.conda/envs/Negar2/lib/python3.8/site-packages/flax/core/tracers.py", line 36, in check_trace_level
raise errors.JaxTransformError()
flax.errors.JaxTransformError: Jax transforms and Flax models cannot be mixed. (https://flax.readthedocs.io/en/latest/api_reference/flax.errors.html#flax.errors.JaxTransformError)
I am not using equinox but instead using flax.linen.Module to build up my Neural Network.
`class NeuralODE(nn.Module):
act_fn: Callable
actfn: Callable
node_size: int
hdims : str
batchnorm : Callable = nn.BatchNorm()
dropout : Callable = nn.Dropout(0.1)
@nn.compact
def call(self, ts, ys, training):
y, args = ys
if self.hdims!=None:
hdims_list = [int(i) for i in self.hdims.split('-')]
else:
hdims_list = []
kernels = []
first_dim = self.node_size
for i, dim in enumerate(hdims_list):
kernels.append(self.param(f'kernel{i}', nn.initializers.normal(), [dim, self.node_size, first_dim]))
first_dim = dim
kernels.append(self.param('kernel', nn.initializers.normal(), [self.node_size, self.node_size, first_dim]))
def fn(t, y, args):
y0 = y
bias, data_adj = args
if len(y0.shape) == 2:
y0 = jnp.expand_dims(y0, -1)
elif len(y0.shape) == 1:
y0 = jnp.expand_dims(jnp.expand_dims(y0, -1), 0)
for kernel in kernels:
y0 = jnp.einsum('ijk,lmj->ilm', y0, kernel)
y0 = self.act_fn(y0)
y0 = self.batchnorm(y0, use_running_average=not training)
y0 = self.dropout(y0, deterministic=not training)
        if y0.shape[0] == 1:
            y0 = jnp.squeeze(y0, 0)
        if len(y0.shape) == 2:
            out = jnp.einsum('ij,ij->ij', data_adj, y0).sum(-1)
        elif len(y0.shape) == 3:
            out = jnp.einsum('aij,aij->aij', data_adj, y0).sum(-1)
        out = jnp.squeeze(bias, -1) - out  # B*N

        return out#, bias, data_adj

    solution = diffrax.diffeqsolve(
        diffrax.ODETerm(fn),
        diffrax.Dopri5(),
        t0=ts[0],
        t1=ts[-1],
        dt0=0.01,  # ts[1] - ts[0],
        y0=y,
        args=args,
        stepsize_controller=diffrax.PIDController(rtol=1e-3, atol=1e-6, dtmax=0.1),
        saveat=diffrax.SaveAt(ts=ts),
        made_jump=True,

    )
    return solution.ys`

The error raises when  I init the model using model.init(model_key, ts, inputs, training= False).
Any idea how to solve this?
Thanks so much.

You will need to convert your Flax module into init/apply style -- don't call your Flax layers directly.
(This is basically the standard way to convert Flax models into something compatible with the rest of JAX; I expect Flax has some documentation on how to do this.)

Thanks for your reply. However, I don't believe this is the problem as I am using init and apply and I don't use the function directly. If you trace the error, the error raises as the solver is being initiated in
solver_state = solver.init(terms, t0, tnext, y0, args)
File "/data/ne12/.conda/envs/Negar2/lib/python3.8/site-packages/diffrax/solver/runge_kutta.py", line 269, in init
return terms.vf(t0, y0, args)
File "/data/ne12/.conda/envs/Negar2/lib/python3.8/site-packages/diffrax/term.py", line 364, in vf
return self.term.vf(t, y, args)
File "/data/ne12/.conda/envs/Negar2/lib/python3.8/site-packages/diffrax/term.py", line 173, in vf
return self.vector_field(t, y, args)
and I am using the batchnorm/dropout in the function that is being sent to the solver. Have you used any flax layers in the functions that you send to diffrax solvers before?

Your example is misformatted, but it looks rather like you are using the Flax layers directly inside Diffrax, on the lines
y0 = self.act_fn(y0)
y0 = self.batchnorm(y0,

.
You will need to convert to init/apply style before that. (Or just use Equinox.)

What you are suggesting is to init/apply once before sending fn to Diffrax, and again having my network (which has the solver in it)  I do init/apply again? Would you please give me an example of how you would write the init/apply code for batchnorm before sending the function to Diffrax?

I'm afraid that's a Flax issue -- I'd have to figure out that one just like you would.
(There's a reason I wrote Equinox at the same time as Diffrax.)

Got it, thank you very much. It looks like there's not an easy way to switch between layers in flax and diffrax solver as seemingly diffrax is Equinox based. So initializing the params in specific layers such as batchnorm or dropout taken from flax will cause incompatibility when entering the solver. So before I switch to Equinox I would like to ask whether there's anything similar in Equinox as train_state in Flax so that we use states in Equinox too? Thank you so much for your reply.

Hey @Negar-Erfanian, here is an example using Diffrax from Flax:
https://github.com/google/flax/discussions/2891#discussioncomment-5066071
The other way around should also be possible as you would just be using Flax's params pytree, but I cannot read your code to figure out the problem 😅

hi @patrick-kidger,
I am trying to convert my code from flax to Equinox. However I cannot find the equivalence form of Module.param of Flax in Equinox. How can I define parameters in the neural network from scratch that are trainable and how to initialize them? do you have an example you could send me? thanks!

Just initialise them as normal JAX arrays. Here's an example.
Also just take a look through the equinox.nn source code, e.g. for equinox.nn.MLP, which should prove instructive.

What stateful operation are you trying to do?
If you're not careful then it's not necessarily defined what you mean -- you can't arbitrarily insert stateful operations and still have an ODE.

Batch norm probably won't help I'm afraid -- it's generally less useful for neural ODEs.
Moreover in non-neural-ODE contexts it's generally out-of-favour these days, and LayerNorm is more commonly used.
You'll probably want to try the usual things to combat overfitting -- get more data, regularise, smaller network, etc. etc.


Crash in  ImageLoadingProgressSideEffect.onDataReceived

Check List
Thanks for considering to open an issue. Before you submit your issue, please confirm these boxes are checked.

[x] I have read the wiki page and cheat sheet, but there is no information I need.
[x] I have searched in existing issues, but did not find a same one.
[x] I want to report a problem instead of asking a question. It'd better to use kingfisher tag in Stack Overflow to ask a question.

Issue Description
We meet a crash in our bug report:
CrashReporter Key:  2439f5d6ffd062c77a869e3166565749134160b8
Hardware Model:     iPhone11,8
Process:            shopping
Identifier:         com.lativ.iShopping.CN
Version:            3.0.11
Role:               Foreground
OS Version:         iOS 14.4.2

SIGSEGV: Attempted to dereference garbage pointer 0xbd8977080.

0  libobjc.A.dylib         _objc_retain
1  Kingfisher              specialized getAssociatedObject<A>(_:_:)
2  Kingfisher              specialized closure #1 in closure #2 in KingfisherWrapper<A>.setImage(with:placeholder:parsedOptions:progressBlock:completionHandler:)
3  Kingfisher              specialized ImageLoadingProgressSideEffect.onDataReceived(_:task:data:)
4  Kingfisher              SessionDelegate.urlSession(_:dataTask:didReceive:)
5  Kingfisher              @objc SessionDelegate.urlSession(_:dataTask:didReceive:)
6  CFNetwork               0x180c2ee18 (0x180c2edbc + 92)
7  libdispatch.dylib       __dispatch_call_block_and_release
8  libdispatch.dylib       __dispatch_client_callout
9  libdispatch.dylib       __dispatch_lane_serial_drain
10 libdispatch.dylib       __dispatch_lane_invoke
11 libdispatch.dylib       __dispatch_workloop_worker_thread
12 libsystem_pthread.dylib __pthread_wqthread

Reproduce
I have on clear way to reproduce the problem, it crashed twice in the past month.
Other Comment
  pod 'Kingfisher', '7.1.1'

I've the same crash, All reports shares one thing (low free ram)


info shows incorrect first seq time

I think this only happens after a restore
  "state": {
    "messages": 8366,
    "bytes":<PHONE_NUMBER>,
    "first_seq": 9420,
    "first_ts": "1970-01-01T00:00:00Z",
    "last_seq": 17785,
    "last_ts": "2020-08-15T07:15:11.568086072Z",
    "consumer_count": 1
  }

but:
$ nats str get RANDOM 9420 -j
{
  "subject": "js.in.random",
  "seq": 9420,
  "data": "Li4uLi4uLi4uIS4uLi4uLi.....",
  "time": "2020-08-15T07:09:45.860425497Z"
}

hmm, could also relate to purging, I'll try to get good reproduce

ok keep me posted.

Freshly made stream with a few messages:
% nats str info TEST -j |jq .state
{
  "messages": 4,
  "bytes": 164,
  "first_seq": 1,
  "first_ts": "2020-08-17T10:36:08.595891129Z",
  "last_seq": 4,
  "last_ts": "2020-08-17T10:36:11.988007586Z",
  "consumer_count": 0
}

Purge it:
{
  "messages": 0,
  "bytes": 0,
  "first_seq": 5,
  "first_ts": "0001-01-01T00:00:00Z",
  "last_seq": 4,
  "last_ts": "2020-08-17T10:36:11.988007586Z",
  "consumer_count": 0
}

here last_ts is wrong I guess
Add a few messages, first_ts stays wrong
[rip@dev1]% nats str info TEST -j |jq .state
{
  "messages": 3,
  "bytes": 123,
  "first_seq": 5,
  "first_ts": "0001-01-01T00:00:00Z",
  "last_seq": 7,
  "last_ts": "2020-08-17T10:37:49.85211323Z",
  "consumer_count": 0
}

ok thanks will fix.


Issue when using view/stat commands

Hi all,
I am facing an issue when trying to view a problem or status of my submissions. Please let me know if I need to update anything else. I am attaching screenshot of the issue.

Hi,
I could upload my file without any issue.  If internet doesn't work send command also should fail. But for me it's working.  It's giving some JSON error.  Can I know Nodejs version you are using? I am using latest version.

Can u check out the uhunt api whether u can parse the json from it?
Im using 8.x
On Wed, 22 Aug 2018 at 10:18 PM Kiran Kumar Manku<EMAIL_ADDRESS>wrote:

Hi,
I could upload my file without any issue. If internet doesn't work send
command also should fail. But for me it's working. It's giving some JSON
error. Can I know Nodejs version you are using? I am using latest version.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/lucastan/uva-node/issues/26#issuecomment-415048262,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAtUZz7kgxHsAaHeUQhAkrvplyq1uvOQks5uTWhRgaJpZM4WGITL
.

--
Sent from my iPhone

Hi
Somehow it started working now.  I don't know why it didn't work before.


Folders being deleted unexpectedly

Hi, Nice little project! Just testing it out and noticed some oddities regarding folders that may be design intent, but thought I'd inquire :)

when deleting the only file in a folder, the folder is also deleted. this leaves the UI with a spinning christmas tree and the message "could not list files in folder: error 404: file not found".  refreshing the UI shows that the folder has been deleted.  up2k log indicates "deleted 1 files (and 1/1 folders)".  Perhaps this is expected behaviour, and there is a config option to disable this pruning?
when moving an empty folder, the folder is deleted. perhaps a similar cause as above.  I came across this after creating 2 folders in a row: dir1 and then dir2.  This created /dir1/dir2, which I wasn't expecting, so I tried moving /dir1/dir2 to /dir2, so I would have 2 folders at the top level of the root.  Both folders ended up deleted.  I also tried the opposite - creating /dir1 and /dir2 and then tried moving /dir2 into /dir1.  I was left with only /dir1 (dir2 was deleted).
renaming an empty folder causes it to be deleted.  similar pruning to above is happening it seems.  create /dir1.  rename /dir1 to /dir2 - it disappears :)

Anyhow. Thanks for your time!
version info:
running on ubuntu 18.04 LTS
copyparty v1.6.15 "cors k" (2023-04-26)
CPython v3.6.9 on Linux64  [GCC 8.4.0]
sqlite v3.22.0*1 | jinja2 v3.0.3 | pyftpd v(None)

Hey there, thanks for dropping by :>
Right now this is "intended behavior" but just because it was easier to code that way -- it only cares about getting the files into the right place, and then deletes whatever folders are left over :p
But yes, I agree this is confusing / unintuitive, especially in cases like the ones you mentioned... So I'll get something done by the next version :+1:


Atom.Object.defineProperty.get is deprecated.

atom.workspaceView is no longer available.
In most cases you will not need the view. See the Workspace docs for
alternatives: https://atom.io/docs/api/latest/Workspace.
If you do need the view, please use atom.views.getView(atom.workspace),
which returns an HTMLElement.
Atom.Object.defineProperty.get (/usr/share/atom/resources/app/src/atom.js:55:11)
Object.activate (/home/csozo/.atom/packages/highlight-line/lib/highlight-line.coffee:31:9)

Duplicate of #41 & #36, just applied to a different line.


crates.io release?

As usual, I ask you to make crates.io releases more often. The latest one was in May. The latest git has many important improvements, including a significant aarch64 perf boost.

We have plans already to do that, if you have spare cycles to run https://github.com/lu-zero/speed-levels-rs we'd use that to decide if we have room to retune the speedlevels.

For encoding of AVIF images I use my own presets: https://github.com/kornelski/cavif-rs/blob/main/ravif/src/av1encoder.rs#L466
and I have my own (not public yet) tool for judging speed/quality trade-offs across multiple codecs.
I've checked rav1e on M3 with these tools. The speedup affects all levels linearly, but the speed difference between the individual levels is much greater (exponential) for the speedup to make a difference. For example, my slowest test encoding dropped from 33s to 22s, but the next faster level dropped from 10s to 7s, so there's still no shift across the levels despite the big change.
I also didn't observe change in ranking relative to libavif. I see sometimes rav1e winning, sometimes libavif, but it depends much more on image content than just the speed preset (either one codec wins at every comparable speed, or the other wins at every speed). So the speed boost is probably not enough to overcome differences in other factors (feature set or maybe precision?)

https://crates.io/crates/rav1e/0.7.0 - Happy New Year
One late change to try to make speed 0 less of an outlier:
https://docs.rs/rav1e/0.7.0/rav1e/prelude/config/enum.SegmentationLevel.html#variant.Complex


[Firebird] Blob text encoding in results

I changed encoding in configuration to the same as database encoding style, after thant I reseted DBEaver. Now Panel Value show good encoded text, but Result Viewer still have problem with text.

What should I set in configuration for correct encoding display?
My Firebird 2.5 database have set Windows-1250 encoding.

Which version of Jaybird is in use, and did you specify a connection character set? What is the character set of the blob column?

JayBird version:

JayBird encoding:

Column should have set encoding to Win-1250, as database encoding.
In Value panel text shows correctly.

I have tried, but wasn't able to reproduce this. Could you maybe create a sample database and the exact steps to reproduce this?

Problem is with type BLOB SUB_TYPE 0.
Link to test DB: http://www.mediafire.com/file/s24lya92du8ymsl/TEST.FDB/file
USER: SYSDBA
KEY: masterkey

A blob sub_type 0 (or blob sub_type binary) is for binary data, not for text data. I don't know how DBeaver handles this, but the interpretation will depend on whether getString is used (which means conversion is done by Jaybird using the connection character set), or getBytes / getBinaryStream and which character set is then applied by DBeaver.

is it still actual?

Hi, I have to create on new database.
On version 7.2.1 I've created 2 tables:
CREATE TABLE TEST (
	PK INTEGER PRIMARY KEY NOT NULL,
	TEST BLOB SUB_TYPE 0 CHARACTER SET WIN1250
)
INSERT INTO TEST VALUES (2, 'ANNFLłóŚććźżŻ')
SELECT * FROM TEST

And this table it works

But second test table:
CREATE TABLE TEST2 (
	PK INTEGER PRIMARY KEY NOT NULL,
	TEST BLOB SUB_TYPE 0
)
INSERT INTO TEST2 VALUES (2, 'ANNFLłóŚććźżŻ')
SELECT * FROM TEST2

This wasn't changed:

But I think, it should be ok, just need to alter table and set default collation.

@Apcio You should use BLOB SUB_TYPE TEXT (aka BLOB SUB_TYPE 1), not BLOB SUB_TYPE 0 (aka BLOB SUB_TYPE BINARY).

@mrotteveel thanks for the answer


Can't get stages to save

I looked around on the issues page but I can't seem to figure this one out.  I've set the mobs to be skeleton and zombie, and they need to kill 2 each. I can save the stage from that point, but I'd like to set a 500 block radius. Once I start add location parameters, the "7 - Done" no longer works.
Here's a few screenshots.
Adding the information.

After I type 7 into the chat. It doesn't seem to save.

Am I just crazy? Or is there something wrong? I'm using build # 92.

You need a kill location, kill radii, and location name for each entry of Mob Type.
Ex.
Kill radii

500
500
Location names
Spawn
Spawn

Similar to how you did the

2
2

for the number of mobs that need to be killed for each type.

@Xekt is correct.


Possible null pointer dereference due to return value of called method [KnativeMessageFactory.java] line 34

located at:
org/apache/eventmesh/connector/knative/cloudevent/KnativeMessageFactory.java line 34

Add a NullPointerException check to report an exception or print a log to increase code robustness.

Please modify title by adding the type of this issue, such as "enhancement", "feature" etc.


Preliminary Aggregate Ops and optimiaztion for Homogeneous DataFrames

This PR adds some preliminary aggregate operations and reducing of traversal overhead when targeting a single column of DataFrame by replacing TypeTuple with an array. (Same thing done for Group as well)
Implemented some preliminary aggregate operations.
cc/ @thewilsonator, ready for review (^_^)

One thing I want you to think about is the amount of similarity and differences between Group and DataFrame and if the differences actually need to be different at all.
For example they can both be of homogeneous types (or not) and they both contain a field that depend on that property and they both have an index. But, for the data frame the alias for the (in)homogeneous type is FrameType in data frame and GrpType (the field is both called data which is good) and the index is called indx for data frames and grpIndex.
This means if all I care about the thing I have as a template is typeof(data) and the index, I must treat them differently.
This affect you too. The implementation of aggregate for Groups & DataFrames is almost iIdentical, almost, but not quite. Now some of this is by necessity, they are different data types after all, but having to implement it twice is not a desirable property of the code.
In D this is usually done as a free function that then gets called via Uniform Function Call Syntax, that is to say, one writes
struct DataFrame(...)
{
    //...
}

struct Group(...)
{
    //...
}

auto aggregate(T, int axis, Ops...)(ref T t) // T is a dataframe or a Group
{
    //...
}

//User code
void func()
{
    Dataframe!(whatever) df;
    Group!(whatever) grp;
    auto aggdf = df.aggregate!(0,max);
    auto agggrp = grp.aggregate!(0,max);
}

I want you to do that, and then for every difference between DataFrame and Group in the implementation of aggregate, ask yourself "does this difference need to exist?".
This separation of behaviour from data is very widely used in D, it is for example the basis of the range: a data structure provides the implementation of how to iterate over it, and then all the algorithms on phobos can be used with that data structure (providing the constraints are met).
(Sometimes it is necessary to specialise an algorithm for a data structure because of performance but that is rare, and you should do profiling to make sure that it is worth doing)

I was on the track of doing exactly that: an aggregate that takes either Group or DataFrame but with the custom function changes, I ran into this trouble:
https://run.dlang.io/is/88rXa3
At that point I had implemented aggregate as an overload so I moved each of them into the respective structs and optimized them individually. Some parts are indeed very similar - If the above mentioned problem can be circumvented, I can move the aggregate into a single function by this weekend


Expose a method for closing the suggestions list programmatically

Right now, the best way to do this seems to be calling _onBlur(), which is a private method. For example, I need to close the suggestions list whenever the user presses Enter.

I've now added a public method hideSuggestions().
I'll keep this issue open as reminder to update the docs with the new method when I have the time.  After updating the docs, I will then close this out.

This new api method now is documented so this issue can be closed.


Add .advancedtestsrc for installer-cli and upgrade tests

What features does this change enable? What bugs does this change fix? High-Level description of how things changed.
Corresponding Advanced tests PR to introduce support for this file: https://github.com/mesosphere/advanced-tests/pull/17

@mesosphere-mergebot bump-ee


Maven Central is missing some version 1.6 JARs

While Maven Central in general has version 1.6, compared to previous releases the platform specific JARs are missing.

They are not. For some reason the project has been retructured and every platform JAR has it's own artifact id. See here.

Ah, thanks for the info!


Integrate codacy coverage with circle-ci

Currently the code coverage is not integrated with the automated build

is now linked