Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incompatibility with ember-data 3.13.0 #338

Closed
lucacorti opened this issue Sep 24, 2019 · 36 comments
Closed

Incompatibility with ember-data 3.13.0 #338

lucacorti opened this issue Sep 24, 2019 · 36 comments

Comments

@lucacorti
Copy link

This error appears as soon as you upgrade from e-d 3.12.x to e-d 3.13.0

 TypeError: Cannot read property 'id' of null
    at new InternalModel (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/addon-tree-output/@ember-data/store/-private.js:4697:1)
    at Store.createFragment (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/addon-tree-output/ember-data-model-fragments/ext.js:134:1)
    at createFragment (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/addon-tree-output/ember-data-model-fragments/fragment.js:213:1)
    at setupFragment (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/addon-tree-output/ember-data-model-fragments/attributes.js:97:1)
    at EditionModel.get (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/addon-tree-output/ember-data-model-fragments/attributes.js:259:1)
    at /var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/metal/index.js:3324:1
    at untrack (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/metal/index.js:1247:1)
    at ComputedProperty.get (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/metal/index.js:3323:1)
    at EditionModel.CPGETTER_FUNCTION [as saturday] (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/metal/index.js:1044:1)
    at EditionService.get starts [as starts] (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/pawchewgo/services/edition.js:45:1)
    at getPossibleMandatoryProxyValue (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/metal/index.js:1269:1)
    at get (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/metal/index.js:1342:1)
    at /var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/glimmer/index.js:565:1
    at track (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/metal/index.js:1224:1)
    at NestedPropertyReference.compute (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/glimmer/index.js:564:1)
    at NestedPropertyReference.value (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/glimmer/index.js:376:1)
    at valueOf (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@glimmer/runtime.js:4617:1)
    at Array.map (<anonymous>)
    at CapturedPositionalArguments.value (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@glimmer/runtime.js:4594:1)
    at ClassBasedHelperReference.compute (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/glimmer/index.js:738:1)
    at ClassBasedHelperReference.value (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/glimmer/index.js:376:1)
    at ContentTypeReference.value (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@glimmer/runtime.js:498:1)
    at ReferenceCache.initialize (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@glimmer/reference.js:357:1)
    at ReferenceCache.peek (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@glimmer/reference.js:326:1)
    at Function.initialize (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@glimmer/runtime.js:847:1)
    at Object.evaluate (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@glimmer/runtime.js:824:1)
    at AppendOpcodes.evaluate (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@glimmer/runtime.js:73:1)
    at LowLevelVM.evaluateSyscall (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@glimmer/runtime.js:3295:1)
    at LowLevelVM.evaluateInner (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@glimmer/runtime.js:3241:1)
    at LowLevelVM.evaluateOuter (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@glimmer/runtime.js:3233:1)
    at VM.next (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@glimmer/runtime.js:5299:1)
    at TemplateIteratorImpl.next (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@glimmer/runtime.js:5335:1)
    at RootState.render (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/glimmer/index.js:5614:1)
    at TransactionRunner.runInTransaction (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/metal/index.js:2109:1)
    at runInTransaction (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/metal/index.js:2238:1)
    at InertRenderer._renderRoots (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/glimmer/index.js:5911:1)
    at InertRenderer._renderRootsTransaction (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/glimmer/index.js:5949:1)
    at InertRenderer._renderRoot (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/glimmer/index.js:5868:1)
    at InertRenderer._appendDefinition (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/glimmer/index.js:5783:1)
    at InertRenderer.appendOutletView (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/@ember/-internals/glimmer/index.js:5769:1)
    at invokeWithOnError (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/backburner.js:349:1)
    at Queue.flush (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/backburner.js:229:1)
    at DeferredActionQueues.flush (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/backburner.js:426:1)
    at Backburner._end (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/backburner.js:960:1)
    at Backburner._boundAutorunEnd (/var/folders/f7/4l5jd79d4zd4pf_rym3xbyzw0000gn/T/broccoli-28643HSC1Hg6tjrh6/out-388-broccoli_persistent_filter_autoprefixer_filter/assets/backburner.js:629:1)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)```
@pjcarly
Copy link

pjcarly commented Sep 25, 2019

I appear to have the same issue on 3.12

@pjcarly
Copy link

pjcarly commented Sep 25, 2019

with stack trace this time:

    at new InternalModel (-private.js:4755)
    at Store.createFragment (ext.js:115)
    at createFragment (fragment.js:187)
    at setupFragment (attributes.js:102)
    at CompanyModel.get (attributes.js:264)
    at index.js:3163
    at untrack (index.js:1130)
    at ComputedProperty.get (index.js:3162)
    at CompanyModel.CPGETTER_FUNCTION [as address] (index.js:931)
    at getPossibleMandatoryProxyValue (index.js:1148)```

@jelhan
Copy link

jelhan commented Sep 27, 2019

emberjs/data#6247, which implements RFC 403: Ember Data | Identifiers, has changed the interface of InternalModel. It expects a RecordIdentifier as second argument now.

@jakesjews
Copy link
Contributor

@jelhan thanks for investigating. I'll try to get a fix in when I get some time but if someone makes a PR before then I'll merge it quickly.

@pjcarly
Copy link

pjcarly commented Sep 27, 2019

edit: Turns out, there was a sub dependency of Ember-data that was upgraded to 3.13 on my end, so I can confirm its not happening on 3.12.

@jelhan
Copy link

jelhan commented Sep 30, 2019

Fixed the changed interface on InternalModel constructor in #339. But there seem to be another change related to serializer / snapshot. Attribute values aren't present on snapshot. Will try to dig into that one as well. If someone else has time before, feel free to finish the work.

@patocallaghan
Copy link
Contributor

@jakesjews You mention in #339 (comment) that Model Fragment will need to be refactored to use RecordData

thanks for looking into it! I was afraid this day would come eventually. I think the solution here is to rewrite everything to use the modelData api.

Not knowing the internals here, do you have a sense of how much work that is?

@jakesjews
Copy link
Contributor

I have a feeling that it's almost a complete rewrite. A spike of the conversion was attempted here but I don't think it got too far.

@Kilowhisky
Copy link

Kilowhisky commented Dec 19, 2019

Just when i started being ok with ED and its quirks.... it rips the carpet out from under me again... 😿
I didn't find this until i rolled to production with 3.13... Yay!

@jelhan
Copy link

jelhan commented Dec 19, 2019

Just when i started being ok with ED and its quirks.... it rips the carpet out from under me again... crying_cat_face

I can understand that you are pissed of by breaking your production build but I don't think it's Ember Data's fault that this addon heavily relies on private APIs. Public APIs were discussed and defined as part of the RFC process with this addon in mind long time ago. Ember Data has exported some private APIs only to not break this addon. At some point of time this gets to costy and the private API has to be removed. I think it was long enough for all consumers of this addon (including myself) to start refactoring it based on public APIs.

I didn't find this until i rolled to production with 3.13... Yay!

I don't want to offend you but it's not the fault of Ember Data or the people working on it if your tests and QA aren't catching this bug before shipped to production...

@basz
Copy link
Contributor

basz commented Dec 19, 2019

Q: Is there any effort underway to support ED 3.13? Or are we just sitting here.. :-)

@jakesjews
Copy link
Contributor

To be honest I don't really have the time to rewrite it. I took over maintenance a few years ago with the intention of doing simple ember upgrades and merging bugfixes but I don't really have too deep of an understanding of how everything works.

@Kilowhisky
Copy link

I've tried working with recordData in the past, the main problem i have is that its not well documented and the documentation there does not reflect real behavior. I kinda gave up on it. Maybe its gotten more stable since its first release.

@pjcarly
Copy link

pjcarly commented Dec 19, 2019

It would be sad to see this addon go dead because of this, it is a wonderful addon, which adds a very welcome addition to the Ember Data platform in a whole.

I'd be willing to commit some time as well, but I have no clear view of how RecordData works, let alone Ember Data internals. I can help debugging or test running perhaps.

@basz
Copy link
Contributor

basz commented Dec 20, 2019

I totally agree with @pjcarly My project depends pretty heavily on this addon...

Willing to do some work. Anyone can outline what the problem is and where we would need to start to get repairs going? An overview of what RecordData is and how they compare to the current workings would probably help a bit too...

@basz
Copy link
Contributor

basz commented Dec 20, 2019

Ping @runspired @kategengler I see you coauthored https://github.com/emberjs/rfcs/blob/master/text/0293-record-data.md#addon-usage and you mention a path forward and even some experimentation already done if I read it correctly. Is any of you able to provide some steering directions? Thanks!

@patocallaghan
Copy link
Contributor

@basz I'd also be keen to help out here too as we're heavily dependent on Model Fragments, although at this stage it won't be until the new year until I can give time

@basz basz mentioned this issue Dec 22, 2019
@basz
Copy link
Contributor

basz commented Dec 23, 2019

To be honest I don't really have the time to rewrite it. I took over maintenance a few years ago with the intention of doing simple ember upgrades and merging bugfixes but I don't really have too deep of an understanding of how everything works.

@jakesjews That's fine. As long as someone is available to review/merge the community seems willing to get this going.

@ALL To start I've updated the tests to work again, so we have something to work off

@runspired
Copy link
Contributor

Happy to provide a review, @igorT had tried to spike this before, I suspect we could again.

@richgt
Copy link
Contributor

richgt commented Jan 7, 2020

We're also pretty heavily dependent on this, and will be stuck on 3.12 until this get's fixed, so we're happy to help out. Has anybody made any progress on this? If not, we may try to spike this.

@richgt
Copy link
Contributor

richgt commented Feb 11, 2020

I'm working (slowly) on a fix for this. Have tests at least running and failing for proper reasons on 3.12. I'll update here as I have more information :-D.

@jelhan
Copy link

jelhan commented Feb 11, 2020

We reviewed the usage of Ember Data Model Fragments and noticed that it's in most cases only used to have a schema for complex data types like POJOs and arrays of POJOs. We noticed that we could achieve the same with native classes and Ember Data transforms. We decided to drop Ember Data Model Fragments.

Please note that this approach is only providing a subset of features that Ember Data Model Fragments had. It's only a schema + serializer. If you need dirty tracking of Ember Data model to work you must follow an immutable pattern for that objects / collection of objects. Assigning a POJO to the attribute and have it automatically converted to an instance of that class would also not work.

These limitations simplify the code and fit better to Octane pattern in my opinion. But you may have another feeling. I would recommend to play around with that approach before making a decision.

I can try to write a more detailed blog post about this approach. But not sure when I will have the time to do so.

@richgt
Copy link
Contributor

richgt commented Feb 19, 2020

Update - I have a branch (richgt/ember-data.model-fragments -> richgt/model-data-ember-3.13 that has 5 failing tests remaining. I'm a little stumped on the remaining tests, if anybody has any ideas, I'd love some help here...

@jelhan
Copy link

jelhan commented Feb 19, 2020

Noticed that my last post might be confusing. It is unclear what "we" refers to. It refers to the company for which I'm currently working.

@basz
Copy link
Contributor

basz commented Mar 11, 2020

May I call attention to @richgt failing tests? I have taken a look but really have no clue where to look, totlly not an expert here.

Three failing tests seems to be related to (de)serialization.

not ok 181 Chrome 80.0 - [49 ms] - unit - Serialization: serializing a fragment array creates a new array with contents the result of serializing each fragment
not ok 179 Chrome 80.0 - [48 ms] - unit - Serialization: fragment properties are snapshotted as normal attributes on the owner record snapshot
not ok 172 Chrome 80.0 - [71 ms] - unit - `MF.Fragment`: fragment properties that are set to null are indicated in the owner record's `changedAttributes`

These seem to be related to "Cannot clone an EmberObject that does not implement Copyable"

not ok 162 Chrome 80.0 - [34 ms] - unit - `MF.fragment` property: fragment default values that are functions are not deep copied
not ok 136 Chrome 80.0 - [35 ms] - unit - `MF.fragmentArray` property: fragment default values that are functions are not deep copied

Seems we are close though...

@basz
Copy link
Contributor

basz commented Mar 11, 2020

@jelhan Do you have time to you elaborate on #338 (comment) a bit more? I feel that might help some users to make an informed decision to abandon this addon or not.

@jelhan
Copy link

jelhan commented Mar 11, 2020

Update - I have a branch (richgt/ember-data.model-fragments -> richgt/model-data-ember-3.13 that has 5 failing tests remaining.

If you want to compare that feature branch against latest development: master...richgt:richgt/model-data-ember-3.13

TravisCI seems to be broken which makes it difficult to quickly review broken tests: https://travis-ci.com/github/richgt/ember-data.model-fragments/branches

@richgt Could you maybe create a pull request? Would make tracking progress much easier.

The failing tests posted by @basz seems to be similar to the ones that were still failing on #339:

not ok 179 Chrome 80.0 - unit - Serialization: fragment properties are snapshotted as normal attributes on the owner record snapshot

not ok 181 Chrome 80.0 - unit - Serialization: serializing a fragment array creates a new array with contents the result of serializing each fragment

1..195
# tests 195
# pass  192
# skip  1
# fail  2

These two were showstoppers. You can find details in the merge request. Maybe I missed something on the investigation or maybe Ember Data changed but at the point of time I was trying to do the upgrade these two failing tests were indications of a fundamental issue in the architecture.

@richgt If you haven't done yet, I would strongly recommend to have a look in my pull request #339

@jelhan Do you have time to you elaborate on #338 (comment) a bit more? I feel that might help some users to make an informed decision to abandon this addon or not.

Will try to write a blog post in the next weeks. But have a lot of work to do. Not sure if I actual can do so and can not commit to a deadline.

@richgt
Copy link
Contributor

richgt commented Mar 11, 2020

Created #360

@lucacorti
Copy link
Author

lucacorti commented Mar 12, 2020

@basz I have also stopped using e-d-m-f. The addon broke a couple of times in the last few years after e-d updates/refactorings.

If all you need, like in my case, is a simple object with maybe a few attributes parsed into a custom data type the burden of managing library breakage when upgrading is not justified IMHO. You are better off writing a custom transformer, which e-d has always allowed you to.

I think this addon is great, but for simple use cases like mine I think it is just not worth it.

@knownasilya
Copy link
Collaborator

Are there other solutions for those that need dirtying? I have probably 20+ Fragments.

@jelhan
Copy link

jelhan commented Apr 30, 2020

Are there other solutions for those that need dirtying? I have probably 20+ Fragments.

ember-changeset provides a nice way to track changes. Not integrated with Ember Data but that's more a feature than a limitation in my opinion. Might be require quiet some refactoring if the app is currently relying on Ember Data and Ember Data Model Fragments for change tracking.

@richgt
Copy link
Contributor

richgt commented Apr 30, 2020

Are there other solutions for those that need dirtying? I have probably 20+ Fragments.

FYI, I hope to have a release out that works with 3.13+ sometime next week.

@knownasilya
Copy link
Collaborator

@jelhan good suggestion. Ultimately I want to make this an immutable object, but it'll be a bit before we can get there with time constraints.

@patocallaghan
Copy link
Contributor

For everyone watching this issue there's a 5.0-beta release with the RecordData refactor. If you could try it out in your apps and report any issues that would be great (requires Ember Data upgrade) https://github.com/lytics/ember-data-model-fragments/releases/tag/5.0.0-beta.0

@basz
Copy link
Contributor

basz commented May 30, 2020

So far it's working as expected, so good work! Thanks to everyone who made this possible...

@srsgores
Copy link

srsgores commented Jun 7, 2020

Working on my end so far

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.