[BUG] - TypeError: type 'Null' is not a subtype of type 'DocumentLayout' in type cast

Package Version
super_editor, GitHub, stable branch (#d519ae5247f7bcfa1722d75ab3c92fc8804bf1d9)
User Info
"individual"
To Reproduce
not sure but the SuperReader was placed inside a CustomScrollView and the orientation of the device changed to landscape right before the exception occured. So i suppose it must be something to do with the orientation change.
Minimal Reproduction Code
If the bug is reproducible in the Example app, you can delete this section. Otherwise, please provide a minimal, runnable code reproduction.
Actual behavior
The following exception occured:
TypeError: type 'Null' is not a subtype of type 'DocumentLayout' in type cast
  File "super_reader.dart", line 317, in SuperReaderState._createReaderContext.<fn>
  File "framework.dart", line 5593, in ComponentElement.mount
  File "framework.dart", line 4468, in Element.inflateWidget
  File "framework.dart", line 3963, in Element.updateChild
  File "framework.dart", line 6900, in SingleChildRenderObjectElement.mount
  File "framework.dart", line 4468, in Element.inflateWidget
  File "framework.dart", line 3963, in Element.updateChild
  File "framework.dart", line 5642, in ComponentElement.performRebuild
  File "framework.dart", line 5780, in StatefulElement.performRebuild
  File "framework.dart", line 5333, in Element.rebuild
  File "framework.dart", line 5599, in ComponentElement._firstBuild
  File "framework.dart", line 5771, in StatefulElement._firstBuild
  File "framework.dart", line 5593, in ComponentElement.mount
  File "framework.dart", line 4468, in Element.inflateWidget
  File "framework.dart", line 3963, in Element.updateChild
  File "framework.dart", line 6900, in SingleChildRenderObjectElement.mount
  File "framework.dart", line 4468, in Element.inflateWidget
  File "framework.dart", line 3963, in Element.updateChild
  File "framework.dart", line 5642, in ComponentElement.performRebuild
  File "framework.dart", line 5333, in Element.rebuild
  File "framework.dart", line 5599, in ComponentElement._firstBuild
  File "framework.dart", line 5593, in ComponentElement.mount
  File "framework.dart", line 4468, in Element.inflateWidget
  File "framework.dart", line 3963, in Element.updateChild
  File "framework.dart", line 5642, in ComponentElement.performRebuild
  File "framework.dart", line 5780, in StatefulElement.performRebuild
  File "framework.dart", line 5333, in Element.rebuild
  File "framework.dart", line 5599, in ComponentElement._firstBuild
  File "framework.dart", line 5771, in StatefulElement._firstBuild
  File "framework.dart", line 5593, in ComponentElement.mount
  File "framework.dart", line 4468, in Element.inflateWidget
  File "framework.dart", line 3963, in Element.updateChild
  File "framework.dart", line 5642, in ComponentElement.performRebuild
  File "framework.dart", line 5333, in Element.rebuild
  File "framework.dart", line 5599, in ComponentElement._firstBuild
  File "framework.dart", line 5593, in ComponentElement.mount
  File "framework.dart", line 4468, in Element.inflateWidget
  File "framework.dart", line 3963, in Element.updateChild
  File "framework.dart", line 5642, in ComponentElement.performRebuild
  File "framework.dart", line 5333, in Element.rebuild
  File "framework.dart", line 5599, in ComponentElement._firstBuild
  File "framework.dart", line 5593, in ComponentElement.mount
  File "framework.dart", line 4468, in Element.inflateWidget
  File "framework.dart", line 3963, in Element.updateChild
  File "framework.dart", line 5642, in ComponentElement.performRebuild
  File "framework.dart", line 5333, in Element.rebuild
  File "framework.dart", line 5599, in ComponentElement._firstBuild
  File "framework.dart", line 5593, in ComponentElement.mount
  File "framework.dart", line 4468, in Element.inflateWidget
  File "framework.dart", line 3963, in Element.updateChild
  File "framework.dart", line 5642, in ComponentElement.performRebuild
  File "framework.dart", line 5780, in StatefulElement.performRebuild
  File "framework.dart", line 5333, in Element.rebuild
  File "framework.dart", line 5599, in ComponentElement._firstBuild
  File "framework.dart", line 5771, in StatefulElement._firstBuild
  File "framework.dart", line 5593, in ComponentElement.mount
  File "framework.dart", line 4468, in Element.inflateWidget
  File "framework.dart", line 3957, in Element.updateChild
  File "framework.dart", line 6907, in SingleChildRenderObjectElement.update
  File "framework.dart", line 3941, in Element.updateChild
  File "framework.dart", line 5642, in ComponentElement.performRebuild
  File "framework.dart", line 5333, in Element.rebuild
  File "framework.dart", line 5946, in ProxyElement.update
  File "inherited_provider.dart", line 523, in _InheritedProviderScopeElement.update
  File "framework.dart", line 3941, in Element.updateChild
  File "framework.dart", line 5642, in ComponentElement.performRebuild
  File "framework.dart", line 5333, in Element.rebuild
  File "framework.dart", line 5693, in StatelessElement.update
  File "framework.dart", line 3941, in Element.updateChild
  File "framework.dart", line 6907, in SingleChildRenderObjectElement.update
  File "framework.dart", line 3941, in Element.updateChild
  File "framework.dart", line 5642, in ComponentElement.performRebuild
  File "framework.dart", line 5780, in StatefulElement.performRebuild
  File "framework.dart", line 5333, in Element.rebuild
  File "framework.dart", line 5803, in StatefulElement.update
  File "framework.dart", line 3941, in Element.updateChild
  File "framework.dart", line 5642, in ComponentElement.performRebuild
  File "framework.dart", line 5780, in StatefulElement.performRebuild
  File "framework.dart", line 5333, in Element.rebuild
  File "framework.dart", line 5803, in StatefulElement.update
  File "framework.dart", line 3941, in Element.updateChild
  File "framework.dart", line 5642, in ComponentElement.performRebuild
  File "framework.dart", line 5333, in Element.rebuild
  File "framework.dart", line 5693, in StatelessElement.update
  File "framework.dart", line 3941, in Element.updateChild
  File "framework.dart", line 4090, in Element.updateChildren
  File "framework.dart", line 7060, in MultiChildRenderObjectElement.update
  File "framework.dart", line 3941, in Element.updateChild
  File "slotted_render_object_widget.dart", line 223, in SlottedRenderObjectElement._updateChild
  File "slotted_render_object_widget.dart", line 213, in SlottedRenderObjectElement._updateChildren
  File "slotted_render_object_widget.dart", line 192, in SlottedRenderObjectElement.update
  File "framework.dart", line 3941, in Element.updateChild
  File "framework.dart", line 6907, in SingleChildRenderObjectElement.update
  File "framework.dart", line 3941, in Element.updateChild
  File "framework.dart", line 5642, in ComponentElement.performRebuild
  File "framework.dart", line 5333, in Element.rebuild
  File "framework.dart", line 5693, in StatelessElement.update
  File "framework.dart", line 3941, in Element.updateChild
  File "framework.dart", line 5642, in ComponentElement.performRebuild
  File "framework.dart", line 5333, in Element.rebuild
  File "framework.dart", line 5693, in StatelessElement.update
  File "framework.dart", line 3941, in Element.updateChild
  File "layout_builder.dart", line 207, in _LayoutBuilderElement._rebuildWithConstraints.updateChildCallback
  File "framework.dart", line 3038, in BuildOwner.buildScope
  File "layout_builder.dart", line 231, in _LayoutBuilderElement._rebuildWithConstraints
  File "object.dart", line 2719, in RenderObject.invokeLayoutCallback.<fn>
  File "object.dart", line 1098, in PipelineOwner._enableMutationsToDirtySubtrees
  File "object.dart", line 2719, in RenderObject.invokeLayoutCallback
  File "layout_builder.dart", line 278, in RenderConstrainedLayoutBuilder.rebuildIfNecessary
  File "sliver_layout_builder.dart", line 46, in _RenderSliverLayoutBuilder.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "sliver_padding.dart", line 121, in RenderSliverEdgeInsetsPadding.performLayout
  File "sliver_padding.dart", line 327, in RenderSliverPadding.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "viewport.dart", line 601, in RenderViewportBase.layoutChildSequence
  File "viewport.dart", line 1516, in RenderViewport._attemptLayout
  File "viewport.dart", line 1427, in RenderViewport.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "proxy_box.dart", line 1448, in _RenderCustomClip.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "layout_builder.dart", line 371, in _RenderLayoutBuilder.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 291, in RenderConstrainedBox.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "layout_builder.dart", line 371, in _RenderLayoutBuilder.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "custom_layout.dart", line 173, in MultiChildLayoutDelegate.layoutChild
  File "scaffold.dart", line 1092, in _ScaffoldLayout.performLayout
  File "custom_layout.dart", line 237, in MultiChildLayoutDelegate._callPerformLayout
  File "custom_layout.dart", line 404, in RenderCustomMultiChildLayoutBox.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "proxy_box.dart", line 1448, in _RenderCustomClip.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "proxy_box.dart", line 3728, in RenderOffstage.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "overlay.dart", line 1002, in _RenderTheaterMixin.layoutChild
  File "overlay.dart", line 1311, in _RenderTheater.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "stack.dart", line 510, in RenderStack.layoutPositionedChild
  File "stack.dart", line 635, in RenderStack.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "shifted_box.dart", line 705, in RenderConstrainedOverflowBox.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "stack.dart", line 510, in RenderStack.layoutPositionedChild
  File "stack.dart", line 635, in RenderStack.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "layout_builder.dart", line 371, in _RenderLayoutBuilder.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "custom_layout.dart", line 173, in MultiChildLayoutDelegate.layoutChild
  File "scaffold.dart", line 1092, in _ScaffoldLayout.performLayout
  File "custom_layout.dart", line 237, in MultiChildLayoutDelegate._callPerformLayout
  File "custom_layout.dart", line 404, in RenderCustomMultiChildLayoutBox.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "proxy_box.dart", line 1448, in _RenderCustomClip.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "proxy_box.dart", line 3728, in RenderOffstage.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "overlay.dart", line 1002, in _RenderTheaterMixin.layoutChild
  File "overlay.dart", line 1311, in _RenderTheater.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "proxy_box.dart", line 111, in RenderProxyBoxMixin.performLayout
  File "object.dart", line 2608, in RenderObject.layout
  File "view.dart", line 281, in RenderView.performLayout
  File "object.dart", line 2446, in RenderObject._layoutWithoutResize
  File "object.dart", line 1052, in PipelineOwner.flushLayout
  File "object.dart", line 1065, in PipelineOwner.flushLayout
  File "binding.dart", line 602, in RendererBinding.drawFrame
  File "binding.dart", line 1164, in WidgetsBinding.drawFrame
  File "binding.dart", line 468, in RendererBinding._handlePersistentFrameCallback
  File "binding.dart", line 1397, in SchedulerBinding._invokeFrameCallback
  File "binding.dart", line 1318, in SchedulerBinding.handleDrawFrame
  File "binding.dart", line 1176, in SchedulerBinding._handleDrawFrame
  File "hooks.dart", line 312, in _invoke
  File "platform_dispatcher.dart", line 419, in PlatformDispatcher._drawFrame
  File "hooks.dart", line 283, in _drawFrame

Expected behavior
No exception :)
Platform
Android 13, Android 14
Flutter version
flutter 3.24.1 (not 100% sure but i believe so, maybe one minor version less)
dart 3.5.1 (this must be correct)
Additional context
I think it must be something with the orientation change, unfortionally i was not yet able to identify the specific issue myself.
i think the actual line in the stacktrace must be off by 1, it must be this line: https://github.com/superlistapp/super_editor/blob/a213ed30104930b52e3870c0b191d3d98f4ced45/super_editor/lib/src/super_reader/super_reader.dart#L318
I found logs from multiple devices, all looking pretty much the same, always with the orientation change. The SuperReader is placed inside a CustomScrollView but i think it does not pop out of view or get into view by changing the device orientation. I also tried to reproduce this issue myself but was not yet able to do so.

@knopp before I assign this to @angelosilvestre can you let me know if this looks related to slivers at all?


Add a way to update moonlight.conf

Users will be able to update moonlight.conf like recalbox.conf on the manager.

Your changes seems fine, i will trust you on this since i don't have a recalbox 4.x yet to test it.


Make use of NuxtImage?

Hello,
This project includes the useful components PruviousPicture and PruviousImage as well as handling image optimization and resizing based on the parameters to the image field.
I wonder if the same features could be implemented using NuxtImage? This would take out image processing (and serving) logic from the CMS.
Additionally, apart from supporting a huge variety of providers, NuxtImage also includes a handy useImage composable that makes it easy to use optimized images beyond the picture or img tags; such as background images in CSS.
It is possible to use NuxtImage directly in the site frontend as is, but I think the developer experience is a little worse off in this case. What do you think?

Hi,
Thank you for the suggestion. I have already considered Nuxt Image before adding image handling in Pruvious. I aimed to optimize from the API side, providing prepared URLs for defined image sizes when you GET a page. Components like PruviousPicture and PruviousImage generate HTML based on the image object received, without further optimizations unlike NuxtPicture and NuxtImg. I prefer managing breakpoints with the media attribute, hence my custom approach.
For backgrounds, you can use the src or srcset (array) props from the image field in Pruvious and set it as a background in your component.
It might seem confusing which helper components to use initially. The rule is: if using the image field in Pruvious, go for PruviousPicture or PruviousImage; for on-the-fly image optimization without storing data in the database, opt for Nuxt Image.
Cheers!

I definitely need to catch up with the tutorial; I've procrastinated for too long. Also, I plan to publish more learning materials in the future, probably as an in-depth video course or something similar.


publish<EMAIL_ADDRESS>

Requested by: @billyvg
Merge target: debug-replay-disregard-replay-duration-for-buffer-mode
Quick links:

View changes
View check runs

Assign the accepted label to this issue to approve the release.
Leave a comment containing #retract under this issue to retract the release (original issuer only).
Targets

[ ] npm[@sentry/types]
[ ] npm[@sentry/utils]
[ ] npm[@sentry/core]
[ ] npm[@sentry-internal/browser-utils]
[ ] npm[@sentry-internal/replay]
[ ] npm[@sentry/opentelemetry]
[ ] npm[@sentry-internal/feedback]
[ ] npm[@sentry-internal/replay-canvas]
[ ] npm[@sentry/browser]
[ ] npm[@sentry/node]
[ ] npm[@sentry/profiling-node]
[ ] npm[@sentry/angular]
[ ] npm[@sentry/ember]
[ ] npm[@sentry/react]
[ ] npm[@sentry/solid]
[ ] npm[@sentry/svelte]
[ ] npm[@sentry/vue]
[ ] npm[@sentry/wasm]
[ ] npm[@sentry/vercel-edge]
[ ] npm[@sentry/cloudflare]
[ ] npm[@sentry/deno]
[ ] commit-on-git-repository[getsentry/deno]
[ ] npm[@sentry/aws-serverless]
[ ] npm[@sentry/google-cloud-serverless]
[ ] npm[@sentry/bun]
[ ] npm[@sentry/nestjs]
[ ] npm[@sentry/nextjs]
[ ] npm[@sentry/nuxt]
[ ] npm[@sentry/remix]
[ ] npm[@sentry/solidstart]
[ ] npm[@sentry/sveltekit]
[ ] npm[@sentry/gatsby]
[ ] npm[@sentry/astro]
[ ] npm[@sentry-internal/typescript]
[ ] npm[@sentry-internal/eslint-plugin-sdk]
[ ] npm[@sentry-internal/eslint-config-sdk]
[ ] aws-lambda-layer
[ ] gcs[browser-cdn-bundles]
[ ] github
[ ] registry
[x] npm[@sentry/types]
[x] npm[@sentry/utils]
[x] npm[@sentry/core]
[x] npm[@sentry-internal/browser-utils]
[x] npm[@sentry-internal/replay]
[x] npm[@sentry/opentelemetry]
[x] npm[@sentry-internal/feedback]
[x] npm[@sentry-internal/replay-canvas]
[x] npm[@sentry/browser]
[x] npm[@sentry/node]
[x] npm[@sentry/profiling-node]
[x] npm[@sentry/angular]
[x] npm[@sentry/ember]
[x] npm[@sentry/react]
[x] npm[@sentry/solid]
[x] npm[@sentry/svelte]
[x] npm[@sentry/vue]
[x] npm[@sentry/wasm]
[x] npm[@sentry/vercel-edge]
[x] npm[@sentry/cloudflare]
[x] npm[@sentry/deno]
[x] commit-on-git-repository[getsentry/deno]
[x] npm[@sentry/aws-serverless]
[x] npm[@sentry/google-cloud-serverless]
[x] npm[@sentry/bun]
[x] npm[@sentry/nestjs]
[x] npm[@sentry/nextjs]
[x] npm[@sentry/nuxt]
[x] npm[@sentry/remix]
[x] npm[@sentry/solidstart]
[x] npm[@sentry/sveltekit]
[x] npm[@sentry/gatsby]
[x] npm[@sentry/astro]
[x] npm[@sentry-internal/typescript]
[x] npm[@sentry-internal/eslint-plugin-sdk]
[x] npm[@sentry-internal/eslint-config-sdk]

Targets marked with a checkbox have already been executed.  Administrators can manually tick a checkbox to force craft to skip it.

@billyvg CI on the SDK repo failed:

Error:  Build(s) for revision 5f7063c7ff73927db891d8131a7daa4d54196e93 have not succeeded. Please check the revision's status.

@billyvg this kind of failed (publishing the AWS layer), I guess it does not matter too much here but FYI. Can we close this issue I guess?

@mydea yeah lets close it


GUI - support download of charges

We would like to be able to download charge details.
Accept criteria

[ ] 1 Pressing the dowload will save all fetched data, not only the shown. I.e. in case of the screenshot, the file is to contain 107 records.

[ ] 2 Download format is expected to be in semicolon delimited CSV UTF-8 (CSV), as it can imported in excel directly. See attached example file.

[ ] 3 Header in downloaded file reflect the chosen language (DA | ENG)

[ ] 4 The file is to be named either "Prisinformationer " Timestamp, when language is Danish, and "Charge information" timestamp, when English. Timestamp is YYYY-MM-DD HH_MI_SS
Example: "Prisinformationer 2022-10-17 15_39_01.CSV"

[ ] 5 Include VAT (Da: Moms) and Description (DA: Beskrivelse)

Example file here - CAPS LOCK FOR VISIBILITY:
Charges_download_CSV.csv

Charges_download_CSV.csv

Small change after test:
ID change to Pris ID or Price ID
Sort by Pris ID
Owner shows with GLN and owner name in two colouns


How would you "share" projections between bounded contexts?

Alex,
Congrats with this new repo, nice continuation on your book. Thanks a lot.
Not sure if it's appropriate to ask a question here. If so, simply disregard my question.
I think that in https://eventuous.dev/docs/prologue/the-right-way/, you make a very good point about the orthogonality of message brokers and event sourcing.
My questions is about projections and the most elegant way to "share" a projections with other bounded contexts.
So, let's stick to the canonical case of a customer service which manages (single source of truth write access) a customer status.
The customer services is event sourced and needs also a customer-status projection for his own purpose.
Other services services needs also the customer-status projection, but also when customer service is offline.
How would you tackle this?
Cheers
paul.

@paulvanbladel as it sounds your canonical example and use-case follows Domain Driven Design, you could leverage an Anti Corruption Layer in other Bounded Contexts that have a dependency on information from the Customer Bounded Context.
As an example of an Anti Corruption Layer in this use-case, it may be a simple, lightweight service that consumes events from EventStoreDB and projects them into a database of the Bounded Context with a dependency on information from the Customer Bounded Context.
This decreases hard dependency on the Customer Bounded Context and gives the implementing Bounded Context complete control over the information it depends on from other Bounded Contexts and how it translates it to fit the implementing Context.
Slightly off topic but if you are using the Microservice Architecture, this harmonises well with 'database per microservice' and various other principles that underpin how the Microservice Architecture is generally implemented.

Thanks Joseph,
Sure, each microservice has own dB.
OK, so we would not rely on integration events, but subscribe to the event store of the customer service for that particular event. That make sense for two reasons:

imagine we would use integration events for this purpose, it would be very likely that the integration would just package the underlying domain event, so why not use directly the domain event;
The customer service can still be down, the likelihood that the corresponding event store is down is small.

Exactly that, as you thin out dependency on the Customer Bounded Context to only depend on the EventStoreDB that serves it, if the Customer Bounded Context's database goes offline or is down for maintenance, it won't affect other Bounded Contexts and Microservices as they have built up their own projections, in their own databases.

So, for the event store event delivery, what are the distributed computing assumptions we can make. I mean in case of integration events we need to care about idempotence and out-of-order delivery.  Is this different we consuming from an event store?

exactly one, at least once delivery: it matters for the consumer of the events because in case of at least once delivery, it should make sure the event handler is idempotent.
order/out of order delivery: in case of out-of order delivery in the integration event world one typically uses fat events to ensure that the "logical history" of the event can also be handled out of order.

My five cents here would be to avoid direct coupling to domain events from another context. It is a good approach, in general, to build an ACL as a small read model, totally legit. Just remember that the ACL code is then coupled to the language of the context where it consumes the events from. We could argue that's exactly what ACLs are for, so in many cases it's ok. In other cases, you might consider making a BC that shares its data with others to become an Open Host. Then, it would need to publish events in stable contracts. So, you'd use a Shovel to establish the conversion.
In many cases, you'd need some sort of reporting store, which consolidates data from several contexts as a read model. Then, it becomes a context on its own. Keep in mind that such a reporting context will always be a Conformist to all other contexts where it gets the events from. But I don't think it can be avoided, so we just have to live with that.


[Discussion] App Service Authentication/Authorization Middleware Version 1.6.2

Discussion issue for App Service Authentication/Authorization/CORS Middleware Version 1.6.2

Is this version of Middleware also deployed on Linux App Service? As far as I can tell, it appears to work differently on Windows and Linux.


Add the type that is missing for any type checking with the following code

assert var["type"] in ms["Types"], "Type not in ms"


very poor documentation

the entire page lacks the detail required on each function to make it of any use.
not enough explanation of options - poor examples, often repetitive or with insufficient detail to explain the behaviour expected by the options available.

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

ID: d30c6730-6586-5347-dc1b-43e6c930bbbe
Version Independent ID: e6dbc313-46e3-1361-7d46-32eada2af476
Content: Details and usage for all mapping data flow functions - Azure Data Factory & Azure Synapse
Content Source: articles/data-factory/data-flow-expressions-usage.md
Service: data-factory
Sub-service: data-flows
GitHub Login: @kromerm
Microsoft Alias: makromer

@Ratty1967UK
Thanks for your feedback! We will investigate and update as appropriate.

@kromerm
Could you please review and add your comments on this update as appropriate.

@Ratty1967UK
Thanks for your feedback! I've assigned this issue to the author who will investigate and update as appropriate.


API Endpoints for Transactions in Mempool

It'd be very useful for us to have an endpoint exposing mempool transactions in addition to mempool events. Ideally, we'd be have /v2/transactions?mempool=true, /orders?mempool=true, etc.

done here https://github.com/CounterpartyXCP/counterparty-core/pull/2073


ap for specific object class

Dear authers,
TridentNet included within this repo is one of the best opne-source detection model currently.
I use this repo to finetune on private dataset of 4 classes of object, however, how to get ap for each specific class ? since our datasets is unblance one.
Thanks very much for your help!

In detection_test.py, 293 line,
coco_eval.params.iouType = "bbox"
Add this line after line 293，as follow
coco_eval.params.catIds = [0]  # 0 represent  specfic class ，You can add or subtract categories as needed

In detection_test.py, 293 line,
coco_eval.params.iouType = "bbox"
Add this line after line 293，as follow
coco_eval.params.catIds = [0] # 0 represent specfic class ，You can add or subtract categories as needed

Thanks very much for your help!
but when i use class 0, the returned ap are all -1. I guess 0 stands for the background here.
i will try to check class 1.

@dongzhenguo2016 Thanks!
@mad-fogs
    for catId in coco.getCatIds():
        print('evl catId:{}'.format(catId))
        coco_eval = COCOeval(coco, coco_dt)
        coco_eval.params.iouType = "bbox_ex"
        coco_eval.params.catIds = [catId]
        coco_eval.evaluate()
        coco_eval.accumulate()
        coco_eval.summarize()

@dongzhenguo2016
@huangzehao
thanks very much for all your kind help, i got the map for each class now.


JBDS-4329 Include CDK 3 Beta 3 into DevSuite Installer

Codecov Report

Merging #644 into master will increase coverage by 0.41%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #644      +/-   ##
==========================================
+ Coverage   95.62%   96.04%   +0.41%
==========================================
  Files          28       28
  Lines        2376     2500     +124
  Branches      199      199
==========================================
+ Hits         2272     2401     +129
+ Misses        104       99       -5

Impacted Files
Coverage Δ

browser/services/platform.js
86.39% <0%> (-0.38%)
:arrow_down:

browser/model/helpers/installer.js
100% <0%> (ø)
:arrow_up:

browser/model/helpers/version.js
100% <0%> (ø)
:arrow_up:

browser/directives/pathValidator.js
100% <0%> (ø)
:arrow_up:

browser/model/helpers/hash.js
100% <0%> (ø)
:arrow_up:

browser/model/installable-item.js
100% <0%> (ø)
:arrow_up:

browser/model/devstudio.js
100% <0%> (ø)
:arrow_up:

browser/pages/install/controller.js
100% <0%> (ø)
:arrow_up:

browser/model/cygwin.js
100% <0%> (ø)
:arrow_up:

browser/pages/start/controller.js
100% <0%> (ø)
:arrow_up:

... and 15 more

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 4ca0190...f15433b. Read the comment docs.


defaultZoomLevel meaning

I need to open the viewer with a specific zoomlevel (e.g. 17) so I use defaultZoomLevel property but it doesn't work so I want to know how can I use this property?

Works fine for me, but 17 is pretty well zoomed in? Have you tried with other values.
Do you specify minZoomLevel and maxZoomLevel too?

minZoomLevel and maxZoomLevel restrict the viewer zoom levels range but I need when opening the viewer to open with a specific zoom level.
I don't know what defaultZoomLevel represent?

That's exactly what defaultZoomLevel is for. And it works perfectly for me?

In dzi image format if I want the viewer to open with dzi level 17 for example how can I do that?

defaultZoomLevel uses the same zoom values as the Viewport, i.e. ratio of the displayed image's width to viewport's width. 1 means identical width, 2 means image's width is twice the viewport's width. A defaultZoomLevel of 17 would mean the image is being displayed at 17X the size of the Viewport.
This is not the same as DZI's levels. I'm not sure exactly what the right conversion would be. At any rate, DZI level 0 is approximately 1 pixel across, level 1 is approximately 2, level 3 is ~ 4 pixels, etc.
Of course if you don't need it to be exact, one approach is just to manually zoom to the area you're looking for and then use viewer.viewport.getZoom() to find out what the value is and then stick that in your code as the defaultZoomLevel.
BTW, keep in mind that the defaultZoomLevel is not just for when you first open, but also every time you hit the home button. If you just want it for when you open, you can do:
viewer.addHandler('open', function() {
  viewer.viewport.zoomTo(zoom, null, true);
});

Actually I have only two dzi levels (16 and 17) and I want to open the viewer with dzi level 17 and when click home button also so how can I get the zoom value of view port to achieve this?

Because 17 is your highest level, I think defaultZoomLevel = yourImageWidth / yourViewerWidth should work.

Thank very much It has worked for me defaultZoomLevel = yourImageWidth / yourViewerWidth

Is there a way to avoid loading lower zoomlevels when defaultZoomLevel is set? We set it to 5 and OSD still tries to load tiles of lower zoomlevels as a kind of prefetching.
Thanks!

OSD just loads what it needs to show what's on screen. If you're between levels, it might load the next higher level, depending on your minPixelRatio setting.
Keep in mind that defaultZoomLevel is set in terms of the viewport's zoom value, which doesn't map directly to the zoom levels of your tile source.


account_address_invalid

I’m trying to do a transaction from my nem wallet app to Poloniex but I repeatedly get an “account_address_invalid” message. I’m sure the account adress is correct. I also posted the tx message correctly.

Please attach print-screen, input data you provide into fields and app you use version


URL Persistency issue

SEVERITY:  Major
MODULE: Bubble Map
PLATFORM: Windows 7 / Chrome 49.0
STEPS TO REPRODUCE:

Navigate to the URL: http://static.gapminderdev.org/vizabi/develop/preview/bubblechart.html
Click on Bubble Map
Click on China bubble
Drag the slider to backward position like choose 1896 etc
Copy the URL and paste it in new tab and proceed

ACTUAL RESULTS:
The label disappeared when the user refreshes or load the URL in new tab
EXPECTED RESULTS:
Same page open when user loads the URL in new tab or refreshes the page
SCREENSHOT:

https://github.com/Gapminder/vizabi/pull/1875

issue still persist

steps to reproduce:

open bubble map
select china bubble
refresh page

alternatively, open this state:
http://tools-stage.gapminderdev.org/tools/#_state_time_end=2015;&entities_select@_geo=chn;;;;&chart-type=map

The label appears when user selects other bubble

ok as a temporary solution, but we will probably need to refactor labels into a helper, not a component #1899

Fixed


Update traceflow graph message for service destinations

Add destination pod name & IP in load balancing stage when destination is a service.
Example graph:

Codecov Report

Merging #1607 (f18e9f1) into master (9d3d10b) will decrease coverage by 10.21%.
The diff coverage is 21.49%.

@@             Coverage Diff             @@
##           master    #1607       +/-   ##
===========================================
- Coverage   63.31%   53.10%   -10.22%
===========================================
  Files         170      181       +11
  Lines       14250    15308     +1058
===========================================
- Hits         9023     8129      -894
- Misses       4292     6270     +1978
+ Partials      935      909       -26

Flag
Coverage Δ

kind-e2e-tests
37.75% <13.93%> (-17.63%)
:arrow_down:

unit-tests
40.40% <13.28%> (-0.88%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

cmd/antrea-agent/agent.go
0.00% <0.00%> (ø)

cmd/antrea-agent/options.go
21.69% <0.00%> (+0.97%)
:arrow_up:

...gent/controller/noderoute/node_route_controller.go
46.06% <ø> (-0.41%)
:arrow_down:

.../agent/flowexporter/connections/conntrack_linux.go
28.37% <0.00%> (-0.79%)
:arrow_down:

pkg/agent/proxy/proxier_linux.go
0.00% <0.00%> (-25.00%)
:arrow_down:

pkg/agent/proxy/types/groupcounter.go
0.00% <0.00%> (-95.00%)
:arrow_down:

pkg/agent/proxy/types/types.go
0.00% <0.00%> (-84.62%)
:arrow_down:

pkg/agent/stats/collector.go
92.04% <ø> (-5.69%)
:arrow_down:

pkg/apiserver/apiserver.go
73.95% <0.00%> (-12.07%)
:arrow_down:

pkg/apiserver/certificate/cacert_controller.go
38.73% <0.00%> (-17.65%)
:arrow_down:

... and 95 more

Thanks for the improvement. However the destination is a little confusing to me as the service name, not sure if others have the same feeling.

Just saw @tnqn's reply after adding the same comment.

Do you think we should show the Pod name in the destination box (either just Pod name, or both Service and Pod names)?

Maybe we can replace service name with pod name, and show service name below:
namespaceName/podName
service: serviceName

Have updated the IP-related names on the example graph.

@gran-vmv Would you review this patch or not?

Do you think we should show the Pod name in the destination box (either just Pod name, or both Service and Pod names)?

Maybe we can replace service name with pod name, and show service name below:
namespaceName/podName
service: serviceName

@ZhangYW18 have you applied this change? I didn't see it from the example and the code.

Do you think we should show the Pod name in the destination box (either just Pod name, or both Service and Pod names)?

Maybe we can replace service name with pod name, and show service name below:
namespaceName/podName
service: serviceName

@ZhangYW18 have you applied this change? I didn't see it from the example and the code.

No, I didn't. I'm still waiting for more suggestions.

maybe you can go ahead with the approach of including both service and pod information.

Have updated the destination name in service case.

/test-all

/skip-all since this touches octant plugin code only.

@mengdie-song before merging it, do you have other comments since you reviewed this as well?


Translate Chinese and fix some errors

I have finished.Please review

I reviewed the changes. Unfortunately, I can not read Chinese.. :-(
I just believe @chengaomin


[BUG] Usercentrics SDK incompatible with AGP 8

Describe the bug
Projects with com.android.tools.build:gradle:8.1.0 can't be build.
 Task failed with an exception.
-----------
* What went wrong:
A problem occurred configuring project ':usercentrics_sdk'.
> Could not create an instance of type com.android.build.api.variant.impl.LibraryVariantBuilderImpl.
   > Namespace not specified. Specify a namespace in the module's build file. See https://d.android.com/r/tools/upgrade-assistant/set-namespace for information about setting the namespace.

     If you've specified the package attribute in the source AndroidManifest.xml, you can use the AGP Upgrade Assistant to migrate to the namespace value in the build file. Refer to https://d.android.com/r/tools/upgrade-assistant/agp-upgrade-assistant for general information about using the AGP Upgrade Assistant.

To Reproduce
Steps to reproduce the behavior:

flutter create test
flutter pub add usercentrics_sdk
Open Subfolder test/android in Android Studio
Run Tools/AGP Upgrade Assisent and Use e.g. 8.1.0 and click Run selected steps
flutter build apk
See error

Expected behavior
My assumption is that it should work with the latest AGP
Flutter doctor
[✓] Flutter (Channel stable, 3.13.9, on macOS 13.6 22G120 darwin-arm64, locale en-DE)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 15.0)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.3)
[✓] IntelliJ IDEA Ultimate Edition (version 2023.2.5)
[✓] Connected device (4 available)
[✓] Network resources

Additional context
Maybe helpfull commit in another flutter lib https://github.com/adaptant-labs/flutter_windowmanager/pull/32/files

hi @dangerground , thanks for flagging this!
we are not supporting Gradle 8 at this moment, sorry to inform you about that.

Hi @uc-leo in version 2.11.0 the issue still is present, was this closed by accident? Or is this a wontfix?

hi @dangerground ,
we closed because we already have our own issue tracker and since this is already an item on our list, we decided to not leave duplicated in here.
when we release, it will be present on our CHANGELOG. does it sounds good to you?
and thanks for the feedback!

@uc-leo yes, this sounds good. I didn't know about an internal issue tracker, so I simply was confused about the implication of the closed issue.


Update Jam description in readme.md

So thrilled and honored to see Jam on the list! I updated the one liner description to be slightly more specific. Thanks for including us!

That's great @danigrant - thanks a lot for the update.


What is the image retention/removal policy?

Looking at https://github.com/docker-library/python/commit/7eefa0c4911bcf998ff5f880df51dc7f8bbf6dec I assume that Python images that reached their end of life (EOL) will be removed.
I guess the same is true for the Debian version.
Is it guaranteed that images will stay on Dockerhub until the EOL is reached?

@martin-thoma removing them there doesn't remove them from the registry, only from the build system, which means they receive no further update even if the base image has updates.

The debian repo still has a tag for Debian Squeeze last updated 8 years ago: https://hub.docker.com/layers/library/debian/squeeze/images/sha256-f028d90e41fbfc9e453c6df47fa4bf45b12314319788ddffd52e951ddc51ed29?context=explore

Thanks for the clarification :+1:
But when are images removed from the registry?

It's not guaranteed, but our policy thus far has been to avoid removing any old content unless there's an overriding concern (maintainer request, etc).


Create a customizable "analysis board"

An analysis board looks just like the board when you are playing an actual game, but the user is allowed to move pieces on both sides.
The analysis board should be customizable. Chessboard.js has an option to provide the user with "spare pieces":

I think the chessboard.js library also provides a way to drag pieces out of the board, effectively deleting them.
Alternatively, we can provide another way to specify the piece that left-clicking creates on the chessboard, such as a dropdown menu.
(The user will also be able to set up the board by inputting FEN strings (issue #24), but we want to allow the user to customize the board without needing to construct FEN strings.)
Notice that a FEN string (e.g., rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 has 6 fields. We allow these fields to be customized:

The first field (e.g., rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR) is just the position. If the user is not constructing FEN strings themselves and merely using our interface, then this should always be valid.
The second field (either w or b) is the player who will have the first move when the game starts at the given position.
The third field (e.g., KQkq, or Kkq, or Qq, ...) indicates whether castling is allowed. In the start position in standard chess, this field is KQkq, but (for example) once White has castled the field gets updated to Qkq.
The fourth field indicates the en passant square. If this field is not - then it indicates that there is an en passant capture available on the square given in the field (e.g., d6). It is possible that the user wants to create a variant where on the first move White (or Black) will be able to capture en passant.
The fifth field indicates the number of half moves since the last capture or pawn advance. This is used to enforce the fifty-move rule.
The sixth field indicates the number of full moves. For example, after 1. e4 e5 2. d4 the number of full moves is set to 2, and after 1. e4 e5 2. d4 d5 the number becomes 3.

Other than the FEN string, the user should also be allowed to apply variant rules that are from existing variants (e.g., the mandatory-capture rule from antichess, or the grid-crossing rule from grid chess) or rules that are more general (an example?)
These customizations occur in some special customization state that is separate from the analysis/game state. Once the player clicks a button, the game applies the rules and the FEN string that the user specified and the user may re-enter 'analysis' mode. Alternately the user can create a customized game that shows up in the game lobby.*
This may be too complicated as we would need to validate the rules applied before we can really allow the game to "go live". In this case we could just allow the user to analyze/save what they've created; then this saved creation could be submitted to the admins or something like that.
======================================
As the game progresses, the FEN string should be displayed  and updated every time a new move is made, so that the user can save the position by saving the FEN string, if they want.
The rules that the user applied are also displayed so that they are aware.
See www.lichess.org/analysis for a concrete example.

more or less done - we just need to save customizations to the server.


Assess variants to UsingWitnet._witnetPostRequest(..)

As current implementation will take the whole msg.value when internally calling to the WRB.

I can think of two non-excluding variants:

Estimate required reward before posting the request:function _witnetPostRequest(IWitnetRequest _request)
    internal
    returns (uint256)
{
    uint256 _reward = witnet.estimateReward(tx.gasprice);
    return witnet.postRequest{value: _reward}(_request);
}

Let caller specify reward by parameter:function _witnetPostRequest(IWitnetRequest _request, uint256 _reward)
    internal
    returns (uint256)
{
    return witnet.postRequest{value: _reward}(_request);
}

A possible drawback of the first option is that it would not be Boba compatible, as GASPRICE opcode is forbidden.

I tend to think that option B is better because it's cheaper. Calculating _reward onchain offers no actual advantage because the value of the _witnetPostRequest transaction needs to be calculated offchain by the EOA by web3-calling estimateReward  upfront anyway.

I like the second option too! It used to work like that when we had rewards for posting the request and reporting the result from witnet

Fine for me too! :+1:

Excellent, B will be ;-)

The changes in the price_feed_poller shouldn't be too much as AFAIK it already estimates the reward to set the transaction value. :)

At a second thought, I'm perfectly fine with option A, and actually prefer it over B.
I hadn't realized that the code snippets that @guidiaz shared were actually not part of a client contract's code but rather in the wrapping that UsingWitnet does around the raw witnet.postRequest function.
As the purpose of UsingWitnet is to increase the degree of convenience and abstraction for the user, it feels reasonable to deal with the estimateReward thing at that point, so the API remains the same as we have today.
At the end of the day, there's no point in using a reward that is higher than what estimateReward will tell us.

In order to allow Boba-compatible implementation of new _postWitnetRequest(IWitnetRequest), it shall be declared as virtual.

_witnetUpgradeReward should be re-implemented in the same way as _witnetPostRequest. Because of this, better to make these two methods rely on a EVM-agnostic version of _witnetEstimateReward(uint256), i.e. _witnetEstimateReward():
  function _witnetEstimateReward()
    internal view
    virtual
  {
    return witnet.estimateReward(tx.gasprice);
  }

  function _witnetUpgradeRequest(uint256 _id)
    internal
    virtual
  {
    witnet.upgradeReward{value: _witnetEstimateReward()}(_id);
  }

  function _witnetPostRequest(IWitnetRequest _request)
    internal
    virtual
    returns (uint256)
  {
    return witnet.postRequest{value: _witnetEstimateReward()}(_request);
  }

Then again, the former approach (to accomplish with A), the _witnetEstimateReward() should actually be left unimplemented. So A approach would rather be:
  function _witnetEstimateReward() internal view virtual;

  function _witnetUpgradeRequest(uint256 _id)
    internal
    virtual
  {
    witnet.upgradeReward{value: _witnetEstimateReward()}(_id);
  }

  function _witnetPostRequest(IWitnetRequest _request)
    internal
    virtual
    returns (uint256)
  {
    return witnet.postRequest{value: _witnetEstimateReward()}(_request);
  }

Otherwise, it will break compilation of "UsingWitnet" when trying to migrate artifacts to Boba-based networks. The same would happen if tx.gasprice was used in either _witnetUpgradeRequest or _witnetPostRequest. In other words, A implies that any contract inheriting from UsingWitnet will have to provide an implementation for _witnetEstimateReward().

In the other hand, the full B approach could be something like this:
  function _witnetUpgradeRequest(uint256 _id, uint256 _gasPrice)
    internal
    virtual
  {
    witnet.upgradeReward{value: _witnetEstimateReward(_gasPrice)}(_id);
  }

  function _witnetPostRequest(IWitnetRequest _request)
    internal
    virtual
    returns (uint256)
  {
    return witnet.postRequest{value _witnetEstimateReward(_gasPrice)}(_request);
  }

Prototype implementation:

https://github.com/witnet/witnet-ethereum-bridge/pull/194


show how to export to CSV and XLSX files

needs openpyxl library for export to excel

Codecov Report

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

@@           Coverage Diff           @@
##           master     #154   +/-   ##
=======================================
  Coverage   79.17%   79.17%
=======================================
  Files           4        4
  Lines         869      869
=======================================
  Hits          688      688
  Misses        181      181

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 b86ef34...b2e3cff. Read the comment docs.


  Basically if chirality isn't specified in a reaction where one of the reactant's chiral atoms gets removed (and perhaps replaced with an atom that removes chirality Cl->C here) and a reagent has chirality, the internal mappings get messed up.
If chirality is defined in the product template, the product will get that defined template's chirality but in the case where chirality is not in the product template, we don't simply copy the chirality of the reagent?
Did that make any sense whatsoever?

@greglandrum I'll try and make a reactant/product matrix when I have some free time tomorrow to see if we can document the logic I tried to explain earlier.

I'm not finding the time for this, I might have to defer to you for this one.

I think it may be less complicated than that.
There are some circumstances when stereochemistry information from the reactant molecules can safely be carried over (or perhaps carried over with a swap of chirality) into the products of a reaction:
0. Unmapped atoms connected either to other unmapped atoms or to mapped atoms that are present in both the reactant template and the product template are fine: their chirality remains untouched

The degree of the atom in the reactant and the product must be the same.
The number of new bonds in the product (i.e. those not corresponding to bonds in the reactant) must be <=1.

There may well be other cases as well that could be handled, but this is what's in place now. I'd rather discard stereochemistry that theoretically could be preserved than screw things up.
This particular bug fix is about correctly recognizing a new bond formed in the product template.

Yes, it certainly fixes that problem.  I'll mark the matrix I was talking about as a documentation enhancement and accept the pull.  I certainly have seen stereo issues with some photochem reactions that needed to be fixed after the fact, and these do look resolved.


Code formatting ignores HIST_IGNORE_SPACE

I have the (arguably bad?) habit of prefixing commands I don't want to have in my history (e.g. because of temporary, specific parameters or sensitive arguments) with a space. For that I have setopt hist_ignore_space in my .zshrc.
Unfortunately the new code formatting feature (which sounds great, btw) doesn't respect that option. I tried with and without HIST_REDUCE_BLANKS but the results are the same: the leading whitespace is removed and thus the command is saved in history.
It would be great if the formatting would respect that setting (e.g. by keeping leading whitespace?) or (as a workaround) if the formatting could be disabled.

Sure, I could make it respect that setting. Thanks for bringing it up.

Sure, I could make it respect that setting. Thanks for bringing it up.

Fixed.

Fixed.

Awesome! Thanks for the quick fix :rocket:

Awesome! Thanks for the quick fix :rocket:


Create KoDuoRC benchmark

close #360

KODuoRC dataset is for MRC task like SQuad. So it is inappropriate for our RAGchain.


Should we be progressive and replace the contact me with a live chat?

Twillio has a bunch of cool stuff. anyone have any suggestions?

Need some kind of server for stuff like this


how do I use external JS module without using .d.ts or writing one myself?

Since type definitions for external modules are sometimes either missing or outdated or in conflict with each other - is there a way to just suppress the checks for specific module to avoid TS2307: Cannot find module *** error?

The easiest way, is to just to declare an ambient module yourself and put it a project .d.ts:
declare module 'foo/bar' {
	export let fooBar: any;
}

@kitsonk, thanks.
In case anyone has the same problem: my case was a module that had a default export which is a function so apparently this works:
declare module 'foobar' {
  export default function (...any: any[]): any;
}

That is a good point of why you wouldn't want to just turn it off, because having at least an idea of what the module returns (e.g. a function or a object) is useful and then lets you potentially incrementally decorate the ambient module as you want to in the future.

Makes sense. Ability to be able to incrementally decorate modules is exactly what I was looking for


[BUG] Running on OpenShift gives

Describe the bug
Installed as per the readme.
Running kboom in OpenShift fails due to the SSC
kubectl kboom generate --mode=scale:14 --load=pods:100
kubectl kboom results
2021/12/08 17:18:52 Can't create pod scale-sleeper-19: kubernetes api: Failure 403 pods "scale-sleeper-19" is forbidden: unable to validate against any security context constraint: [spec.containers[0].securityContext.runAsUser: Invalid value: 65534: must be in the ranges: [1000690000,<PHONE_NUMBER>]]

To Reproduce
OpenShift 4.7
Expected behavior
Successful run
Additional context
OpenShift uses a security context, which is what is being referenced.
https://docs.openshift.com/container-platform/4.7/cicd/pipelines/using-pods-in-a-privileged-security-context.html

I'm not actively maintaining this project anymore, sorry for the confusion.


Segmentation fault in folly::IOBuf::prependChain at IOBuf.cpp:589

If the echo server provided in samples is run and a stream frame is provided as input such that the value for the OFF bit is set as false even when the frame does contain a offset value, it causes a segmentation fault to occur at
IOBuf* otherTail = other->prev_   (IOBuf.cpp:589)

I'm not sure if i get it. What do you mean "a stream frame is provided as input" ?

The client sends a QUIC packet containing the described stream frame(after successfully completing the handshake)

Do you see the segmentation fault on server side or client side?

The server side. The server is the echo server provided in the samples

I will try to get a repro. Thank you so much for reporting this.

I made a client that would do such and couldn't repro the crash. I see server closed the connection with a Frame format error.
Are you OK to share your client or maybe provide more repro steps? Thank you!

Also, can you paste the full stacktrace? Thank you!

I will be unable to provide the client just yet as it is a part of an ongoing research project.
I analysed the result a little more and observed the following :-
The error only seems to occur if the Stream frame has the finbit set to true, offset set to a non-zero value, payload is empty and the offbit is set to false.
Could you perhaps try this specific case and see if you can repro the crash ?

This is what the stack trace looks like:
$0  folly::IOBuf::prependChain (this=0x7f807c013cc8, iobuf=...)
at /home/test/mvfst/_build/deps/folly/folly/io/IOBuf.cpp:589
$1  0x000055e1c9935230 in quic::samples::EchoHandler::echo (data=...,
id=, this=, this=,
this=, this=, this=)
at /home/test/mvfst/quic/samples/echo/EchoHandler.h:101
$2  quic::samples::EchoHandler::readAvailable (this=0x55e1ca310390,
id=)
at /home/test/mvfst/quic/samples/echo/EchoHandler.h:79
$3  0x000055e1c9a18c76 in quic::QuicTransportBase::invokeReadDataAndCallbacks
(this=0x7f807c005da0)
at /home/test/mvfst/quic/api/QuicTransportBase.cpp:784
$4  0x000055e1c9a479e1 in folly::detail::function::FunctionTraits<void (bool)>::operator()(bool) (args$0=false, this=0x7f807c006170)
at /home/test/mvfst/_build/deps/include/folly/Function.h:416
$5  quic::FunctionLooper::commonLoopBody (this=this@entry=0x7f807c0060f0,
fromTimer=fromTimer@entry=false)
at /home/test/mvfst/quic/common/FunctionLooper.cpp:37
$6  0x000055e1c9a47b7f in quic::FunctionLooper::runLoopCallback (
this=0x7f807c0060f0)
at /home/test/mvfst/quic/common/FunctionLooper.cpp:63
$7  0x000055e1c9b84c95 in folly::EventBase::runLoopCallbacks (
this=this@entry=0x55e1ca30d9c0)
at /home/test/mvfst/_build/deps/folly/folly/io/async/EventBase.cpp:703
$8  0x000055e1c9b86981 in folly::EventBase::loopBody (
this=this@entry=0x55e1ca30d9c0, flags=flags@entry=0,
ignoreKeepAlive=ignoreKeepAlive@entry=false)
at /home/test/mvfst/_build/deps/folly/folly/io/async/EventBase.cpp:402
$9  0x000055e1c9b8755e in folly::EventBase::loop (
this=this@entry=0x55e1ca30d9c0)
at /home/test/mvfst/_build/deps/folly/folly/io/async/EventBase.cpp:315
$10 0x000055e1c9b88b26 in folly::EventBase::loopForever (
this=this@entry=0x55e1ca30d9c0)
at /home/test/mvfst/_build/deps/folly/folly/io/async/EventBase.cpp:538
$11 0x000055e1c9ba1638 in folly::run (ebm=0x55e1ca30bdf0, eb=0x55e1ca30d9c0,
stop=0x55e1ca30dc18, name=...)
at /home/test/mvfst/_build/deps/folly/folly/io/async/ScopedEventBaseThread.cpp:40
$12 0x00007f8094ad46df in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
$13 0x00007f8095ef16db in start_thread (arg=0x7f8083fff700)
at pthread_create.c:463
$14 0x00007f809419188f in clone ()
at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Can you write a transport unit test that repros the crash?  Should be easier than writing a client that can send frames in a particular format.

I'm closing this one since it's very old and we can't repro it. If you still see this happens please open another issue. Thanks.


ci: fix build

My attempt at solving https://github.com/maplibre/maplibre-plugins-android/pull/29
I don't really understand why getReleaseVersion yet, and then the style check is failing because for some reason the indentation was completely changed recently.

@fynngodau: do you know why building-plugin has a different indentation now? :thinking:

Ok now it fails with the tests (36 tests failed). I won't fix them, I'm stopping here :innocent:. Feel free to continue this PR if you want :+1:.

@JonasVautherin I'm sorry it caused you trouble to change the indentiation.
I'm not exactly sure whether the repo was consistently indented before, but it may be preferrable to go the way that requires fewer changes in this case.
Also sorry for accidentally closing the PR. My screen was malfunctioning.

@louwers @fynngodau: I'd say let's merge this. It fails at the unit tests, but it already fixes the steps before.


Support DISTINCT ON for window deduplication

Is your feature request related to a problem? Please describe.
Window deduplication is a common demand in streaming processing. I found that PostgreSQL supports DISTINCT ON clause, which can meet the requirement.
Additional context
Currently, we support rewriting the SELECT DISTINCT to aggregation in frontend, and it's same for DISTINCT ON, except that we may need to select more columns in the aggregation.
We should rewrite the following query:
SELECT DISTINCT ON(v1), v2, v3 FROM t1;

to:
SELECT v1, v2, v3 GROUP BY v1, v2;

The latter query is invalid in pg:
ERROR:  column "t.v2" must appear in the GROUP BY clause or be used in an aggregate function

It's because v2 and v3 in the resultset is unpredictable, but at least, they should appear in one row.
We can add a special aggregate function for this, e.g. first_value.
SELECT v1, first_value(v2), first_value(v3) GROUP BY v1, v2;

The trivial first_value implementation can ensure that v2, v3 belong to one row, except that we introduce some special designs, e.g. split the columns in aggregate operator and concat them later.
If there is an ORDER BY clause match the selection list, the result should be predictable. For the case, we can rewrite the query to grouping top-n, but we can forbid the clause first.

We should rewrite the following query:
SELECT DISTINCT ON(v1), v3, v4 FROM t1;

to:
SELECT v1, v2, v3 GROUP BY v1, v2;

Should it be
SELECT v1, v3, v4 GROUP BY v1;

?

similar to first value in flink?

@wangrunji0408 will work on this

link #6593 for reference

PG standard:

SELECT DISTINCT ON ( expression [, ...] ) keeps only the first row of each set of rows where the given expressions evaluate to equal. The DISTINCT ON expressions are interpreted using the same rules as for ORDER BY (see above). Note that the “first row” of each set is unpredictable unless ORDER BY is used to ensure that the desired row appears first. For example:

SELECT DISTINCT ON (location) location, time, report
FROM weather_reports
ORDER BY location, time DESC;
retrieves the most recent weather report for each location. But if we had not used ORDER BY to force descending order of time values for each location, we'd have gotten a report from an unpredictable time for each location.
The DISTINCT ON expression(s) must match the leftmost ORDER BY expression(s). The ORDER BY clause will normally contain additional expression(s) that determine the desired precedence of rows within each DISTINCT ON group.


Any support planned for next version 13.2.x ?

Hey hello,
Love the package, use it with Storybook.
However it does not seem to work with the latest version of next, at the time of this writing.
Are there any plans to add the missing support?

OMG, I just found out it works IF you properly import MemoryRouterProvider
import { MemoryRouterProvider } from 'next-router-mock/MemoryRouterProvider/next-13';

That /next-13 part in the end was essential.
Either I missed this in the documentation, or the documentation could be improved.

Could you help me find the problem?
The 'next-router-mock/MemoryRouterProvider' path just tries to import next-13 and if it fails, next-12 and so on until it succeeds.
I'm thinking that this probably doesn't work with Storybook's webpack, since it will try to compile all imported modules, and can't find the legacy ones?  Could you post the error you were seeing?
If so, the docs definitely need updating!

Hey, sure thing I could help.
Here's the text of that error
ModuleNotFoundError: Module not found: Error: Can't resolve 'next/dist/next-server/lib/router-context' in 'Q:\Dev\fe\node_modules\next-router-mock\dist\MemoryRouterProvider'


[Device Support Request] TS0601 by _TZE200_f1pvdgoh "Tuya 2 in 1 PIR Motion Sensor+Brightness"

Problem description
Requesting new device support
Solution description
New device support:
https://www.aliexpress.us/item/3256803705327106.html?spm=a2g0o.order_list.order_list_main.5.336b1802JEJNUs&gatewayAdapt=glo2usa
Screenshots/Video
Screenshots/Video
[Paste/upload your media here]

Device signature
Device signature
{
  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress: 128>, manufacturer_code=4417, maximum_buffer_size=66, maximum_incoming_transfer_size=66, server_mask=10752, maximum_outgoing_transfer_size=66, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": "0x0104",
      "device_type": "0x0051",
      "input_clusters": [
        "0x0000",
        "0x0004",
        "0x0005",
        "0xef00"
      ],
      "output_clusters": [
        "0x000a",
        "0x0019"
      ]
    }
  },
  "manufacturer": "_TZE200_f1pvdgoh",
  "model": "TS0601",
  "class": "zigpy.device.Device"
}

Diagnostic information
Diagnostic information
{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2023.5.3",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.10.11",
    "docker": true,
    "arch": "x86_64",
    "timezone": "America/New_York",
    "os_name": "Linux",
    "os_version": "6.1.25",
    "supervisor": "2023.04.1",
    "host_os": "Home Assistant OS 10.1",
    "docker_version": "23.0.3",
    "chassis": "vm",
    "run_as_root": true
  },
  "custom_components": {
    "hacs": {
      "version": "1.32.1",
      "requirements": [
        "aiogithubapi>=22.10.1"
      ]
    },
    "midea_dehumidifier_lan": {
      "version": "0.8.13",
      "requirements": [
        "midea-beautiful-air==0.9.15"
      ]
    },
    "pyscript": {
      "version": "1.4.0",
      "requirements": [
        "croniter==1.3.8",
        "watchdog==2.2.1"
      ]
    }
  },
  "integration_manifest": {
    "domain": "zha",
    "name": "Zigbee Home Automation",
    "after_dependencies": [
      "onboarding",
      "usb"
    ],
    "codeowners": [
      "@dmulcahey",
      "@adminiuga",
      "@puddly"
    ],
    "config_flow": true,
    "dependencies": [
      "file_upload"
    ],
    "documentation": "https://www.home-assistant.io/integrations/zha",
    "iot_class": "local_polling",
    "loggers": [
      "aiosqlite",
      "bellows",
      "crccheck",
      "pure_pcapy3",
      "zhaquirks",
      "zigpy",
      "zigpy_deconz",
      "zigpy_xbee",
      "zigpy_zigate",
      "zigpy_znp"
    ],
    "requirements": [
      "bellows==0.35.5",
      "pyserial==3.5",
      "pyserial-asyncio==0.6",
      "zha-quirks==0.0.99",
      "zigpy-deconz==0.21.0",
      "zigpy==0.55.0",
      "zigpy-xbee==0.18.0",
      "zigpy-zigate==0.11.0",
      "zigpy-znp==0.11.1"
    ],
    "usb": [
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*2652*",
        "known_devices": [
          "slae.sh cc2652rb stick"
        ]
      },
      {
        "vid": "1A86",
        "pid": "55D4",
        "description": "*sonoff*plus*",
        "known_devices": [
          "sonoff zigbee dongle plus v2"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*sonoff*plus*",
        "known_devices": [
          "sonoff zigbee dongle plus"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*tubeszb*",
        "known_devices": [
          "TubesZB Coordinator"
        ]
      },
      {
        "vid": "1A86",
        "pid": "7523",
        "description": "*tubeszb*",
        "known_devices": [
          "TubesZB Coordinator"
        ]
      },
      {
        "vid": "1A86",
        "pid": "7523",
        "description": "*zigstar*",
        "known_devices": [
          "ZigStar Coordinators"
        ]
      },
      {
        "vid": "1CF1",
        "pid": "0030",
        "description": "*conbee*",
        "known_devices": [
          "Conbee II"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8A2A",
        "description": "*zigbee*",
        "known_devices": [
          "Nortek HUSBZB-1"
        ]
      },
      {
        "vid": "0403",
        "pid": "6015",
        "description": "*zigate*",
        "known_devices": [
          "ZiGate+"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*zigate*",
        "known_devices": [
          "ZiGate"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8B34",
        "description": "*bv 2010/10*",
        "known_devices": [
          "Bitron Video AV2010/10"
        ]
      }
    ],
    "zeroconf": [
      {
        "type": "_esphomelib._tcp.local.",
        "name": "tube*"
      },
      {
        "type": "_zigate-zigbee-gateway._tcp.local.",
        "name": "*zigate*"
      },
      {
        "type": "_zigstar_gw._tcp.local.",
        "name": "*zigstar*"
      },
      {
        "type": "_slzb-06._tcp.local.",
        "name": "slzb-06*"
      }
    ],
    "is_built_in": true
  },
  "data": {
    "ieee": "**REDACTED**",
    "nwk": 45692,
    "manufacturer": "_TZE200_f1pvdgoh",
    "model": "TS0601",
    "name": "_TZE200_f1pvdgoh TS0601",
    "quirk_applied": false,
    "quirk_class": "zigpy.device.Device",
    "manufacturer_code": 4417,
    "power_source": "Battery or Unknown",
    "lqi": 145,
    "rssi": null,
    "last_seen": "2023-05-15T14:58:48",
    "available": true,
    "device_type": "EndDevice",
    "signature": {
      "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress: 128>, manufacturer_code=4417, maximum_buffer_size=66, maximum_incoming_transfer_size=66, server_mask=10752, maximum_outgoing_transfer_size=66, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
      "endpoints": {
        "1": {
          "profile_id": "0x0104",
          "device_type": "0x0051",
          "input_clusters": [
            "0x0000",
            "0x0004",
            "0x0005",
            "0xef00"
          ],
          "output_clusters": [
            "0x000a",
            "0x0019"
          ]
        }
      },
      "manufacturer": "_TZE200_f1pvdgoh",
      "model": "TS0601"
    },
    "active_coordinator": false,
    "entities": [],
    "neighbors": [],
    "routes": [],
    "endpoint_names": [
      {
        "name": "SMART_PLUG"
      }
    ],
    "user_given_name": null,
    "device_reg_id": "54c6cc337dbfa9aba21c779c800ce186",
    "area_id": "office",
    "cluster_details": {
      "1": {
        "device_type": {
          "name": "SMART_PLUG",
          "id": 81
        },
        "profile_id": 260,
        "in_clusters": {
          "0x0004": {
            "endpoint_attribute": "groups",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0005": {
            "endpoint_attribute": "scenes",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0xef00": {
            "endpoint_attribute": null,
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0000": {
            "endpoint_attribute": "basic",
            "attributes": {
              "0x0001": {
                "attribute_name": "app_version",
                "value": 66
              },
              "0x0004": {
                "attribute_name": "manufacturer",
                "value": "_TZE200_f1pvdgoh"
              },
              "0x0005": {
                "attribute_name": "model",
                "value": "TS0601"
              }
            },
            "unsupported_attributes": {}
          }
        },
        "out_clusters": {
          "0x0019": {
            "endpoint_attribute": "ota",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x000a": {
            "endpoint_attribute": "time",
            "attributes": {},
            "unsupported_attributes": {}
          }
        }
      }
    }
  }
}

Logs
Logs
[Paste the logs here]

Custom quirk
Custom quirk
[Paste your custom quirk here]

Additional information
No response

Hopefully this will help.
Found someone working on a zigbee2mqtt new device support request.
https://github.com/Koenkk/zigbee2mqtt/issues/12883

@lightning200mph have you managed to get it working? Seems like that link doesn't work

I have not been able to get anything working yet.
I've not learned enough yet to make something work.
The link isn't working but the text is the correct address.
https://github.com/Koenkk/zigbee2mqtt/issues/12883

i copy/pasted some parts from different sources and this came out. it compiles but it's not being linked to the device :|
Hope someone has more knowledge than me about this and spots what I'm missing
TS0601_pir_lux.zip

I would like to support this request.
I tried several quirks and tips for quirks I could find but couldn't get these to be taken by ZHA:
TS0601
_TZE200_f1pvdgoh
Zigbee Info:
IEEE: a4:c1:38:12:11:41:52:08
Nwk: 0x420c
Device Type: EndDevice
LQI: 255
RSSI: -28
Last seen: 2023-11-11T16:48:42
Energy source: Battery or Unknown
Any chance to get this released as a quirk which works?
Thanks a lot!


Log Config: Support nested JSON format of logs

Describe the feature
As a customer, I would like to ingest nested JSON format of logs into the OpenSearch domains.
Use Case
many applications output logs in JSON format, and many of them are nested JSON.
Proposed Solution
No response
Other Information
No response
Log Hub version used
v1.2.0

Supporting nested JSON to AOS is a critical feature


dependency injection during boot time

Some libp2p modules require or would benefit from knowing the peerId and other values. It happens that, at the time the declarative options are created, the peerId is not yet known. As an example, libp2p-websocket-star would require the PeerId object to prevent spoofing. It happens that this value is not known before boot.
Here I propose a modules definition form that is backwards compatible and can be summed up to:
If a module is a function, libp2p assumes it is a constructor and executes that function, which should return a the module instance.
This would allow to declare config like this:
{
  modules: {
    transport: [
      wrtcStar // instance,
      ({peerId}) => new WSStar({id: peerId})
    ]
  }
}

One problem with this setting is the discovery. Usually, a discovery module is extracted from the transport module, something like this:
const wstar = new WRTCStar()
{
  modules: {
    transport: [
      wstar
    ],
    discovery: [ wstar.discovery ]
  }
}

One option to mitigate this would be to implicitely add the discovery module if the transport instance contains a .discovery attribute.
Another workaround would be to cache it like this:
let wsstar // caches the WSStar object instance
const createWSStar = ({peerId}) => (wsstar ? wsstar : wsstar = new WSStar({id: peerId}))

const libp2pOptions = {
  modules: {
    transport: [
      createWSStar
    ],
    discovery: [
      (options) => createWSStar(options).discovery
    ]
  }
}

Thoughts?

/cc @diasdavid @mkg20001

(Probably should replace peerId with peerInfo, but not really relevant for the overall discussion of the DI method here).

Another approach might be passing an instance of swarm to the transport during initialization, the peerId/peerInfo can be extracted from it. We already do that for DHT and Circuit.

Let's continue evaluating this, I need to think more about it but I am in the same page that we need DI.

Currently I'm using a .setSwarm(swarm) function after transport creation to hack around this limitation in https://github.com/libp2p/js-libp2p-websocket-star/pull/43
Something similar could be implemented. Like if (typeof transport._setSwarm === 'function') transport._setSwarm(swarm) after transport creation in libp2p.
Or even better: Just use the currently mostly-unused option object and add the swarm there

PR https://github.com/libp2p/js-libp2p/pull/160

@mkg20001 why not just pass swarm as a constructor argument?

Because usually transports get created before the libp2p object gets created (afaik)

@mkg20001 you're right, swarm gets created after the protos get instantiated.

Here is what I'm thinking the right way to go about this.
Each libp2p module should expose:
// regular class that specifies the args that the module needs. Example:
const switch = new Switch(options, peerInfo, peerBook)

// static method that lets the instance be created with the "backbone". The "backbone" is an object created inside js-libp2p that will have references to all the things that can be used by the libp2p internals.
const switch = Switch.create(options, backbone)

// method that lets us attach the "backbone" after the instance was created.
const switch = new Switch(options)
switch.attach(backbone)
// This way we can have our cake and eat it too. It will modules like *-star transports to be initiated so that we can access their discovery service reference before libp2p is created, but then attach the backbone so that they can have access to things like the switch do p2p-circuit dials.

Why re-invent the wheel?  If we we want IOC/DI then let's find one that has been well tested and used.
Fast search of NPM came up with https://www.npmjs.com/package/inversify

Fair point, however, I don't see how that module will help us. It does way more things than what we need and it is TypeScript only.
We don't want full DI with a TypeSystem (although that would be great), we are looking to add support for libp2p modules to use libp2p itself.

I'll leave this here for consideration - https://github.com/dryajov/opium, it's pure es6 (needs to be updated to remote all the babel stuff that is not needed anymore). But its a full fledged IoC library.

Reviewing this, it seems like the original problem that needed to be solved with DI was the boot time dependency injection, specifically knowing the peerInfo so that it could be handed off to modules, like transports.
Using Libp2p exclusively, this should be doable. One of the big problems was trying to customize libp2p within IPFS. The latest version of IPFS now supports passing a function that allows you to generate your libp2p bundle on ipfs boot time, which should resolve a lot of these issues. There is an example of that at https://github.com/ipfs/js-ipfs/tree/master/examples/custom-libp2p.
Are there current issues that this doesn't solve for that DI is needed for?

@pgte any final remarks before closing this one?


Jasper STT wrong answers

Hi,
I removed all predefined modules and added 4 modules on Jasper. Each has one words which are LEFT, RIGHT, FORWARD, BACKWARD. (This, the, of etc. are all deleted.)
It compiled new vocabs. It worked fine for exact words. But the problem is, when I say meaningless things it always understand them as LEFT. How can we solve that problem? Can we increase accuracy? Is there a way or suggestion that Jasper not to understand the words which are not in any the list?
I'm using default STT (pocketsphinx).
Thanks

You need to compile additional words into the vocabulary, like "WHAT", "WHEN", "IS", "BLA". Otherwise, pocketsphinx will try to map the speech to the closest match in your vocabulary.


Reference Agent Controller API

Need a REST API (Swagger) that allows the control of the reference agent.
Should be loosely based on hl/aries-cloudagent-python

This is part of epic #68

Controller API
Open API server : REST API endpoints for each protocol with default handlers to start with (mock implementation is also an option).
For DEMO
build docker image for demo agent with default handlers for controller REST API server.
Simple config to add new agents for demo.
For example: to add new agent 'Bob', simply adding required configurations like port, host etc and starting new docker container for given agent.
launching tests using Swagger UI
Replacing each default handlers with reference agent (controller API) once available

Endpoints for tests:
server
GET /modules Fetch the list of loaded modules
GET /status Fetch the server status
POST /status/reset Reset statistics
GET /protocols Query supported protocols
action-menu
POST /action-menu/{id}/close Close the active menu associated with a connection
POST /action-menu/{id}/fetch Fetch the active menu
POST /action-menu/{id}/perform Perform an action associated with the active menu
POST /action-menu/{id}/request Request the active menu
POST /connections/{id}/send-menu Send an action menu to a connection
connection
GET /connections Query agent-to-agent connections
GET /connections/{id} Fetch a single connection record
POST /connections/create-invitation Create a new connection invitation
POST /connections/receive-invitation Receive a new connection invitation
POST /connections/{id}/accept-invitation Accept a stored connection invitation
POST /connections/{id}/accept-request Accept a stored connection request
POST /connections/{id}/establish-inbound/{ref_id} Assign another connection as the inbound connection
POST /connections/{id}/remove Remove an existing connection record
credentials
GET /credential/{id} Fetch a credential from wallet by id
POST /credential/{id}/remove Remove a credential from the wallet by id
GET /credentials Fetch credentials from wallet
credential_exchange
GET /credential_exchange Fetch all credential exchange records
GET /credential_exchange/{id} Fetch a single credential exchange record
POST /credential_exchange/send Sends a credential and automates the entire flow
POST /credential_exchange/send-offer Sends a credential offer
POST /credential_exchange/{id}/send-request Sends a credential request
POST /credential_exchange/{id}/issue Sends a credential
POST /credential_exchange/{id}/store Stores a received credential
POST /credential_exchange/{id}/problem_report Send a problem report for credential exchange
POST /credential_exchange/{id}/remove Remove an existing credential exchange record
introduction
POST /connections/{id}/start-introduction Start an introduction between two connections
presentation_exchange
GET /presentation_exchange Fetch all presentation exchange records
GET /presentation_exchange/{id} Fetch a single presentation exchange record
GET /presentation_exchange/{id}/credentials Fetch credentials for a presentation request from wallet
GET /presentation_exchange/{id}/credentials/{referent} Fetch credentials for a presentation request from wallet
POST /presentation_exchange/create_request Creates a presentation request
POST /presentation_exchange/send_request Creates and sends a presentation request
POST /presentation_exchange/{id}/send_presentation Sends a credential presentation
POST /presentation_exchange/{id}/verify_presentation Verify a received credential presentation
POST /presentation_exchange/{id}/remove Remove an existing presentation exchange record
schema
POST /schemas Sends a schema to the ledger
GET /schemas/{id} Gets a schema from the ledger
credential-definition
POST /credential-definitions Sends a credential definition to the ledger
GET /credential-definitions/{id} Gets a credential definition from the ledger
basicmessage
POST /connections/{id}/send-message Send a basic message to a connection
POST /connections/{id}/expire-message/{activity_id} Expire a copyable basicmessage
trustping
POST /connections/{id}/send-ping Send a trust ping to a connection
wallet
GET /wallet/did List wallet DIDs
POST /wallet/did/create Create a local DID
GET /wallet/did/public Fetch the current public DID
POST /wallet/did/public Assign the current public DID

created stories
#93 Controller API for did exchange
#94 Demo : Controller API for did exchange
#95 Controller API : add protocols for demo with mock implementation

We'll spin this issue off into its own epic


Better UI hiding mechanism (uses Alt-H)

Does what it says, very useful for screenshots.
This originally came from insane210 and was a pull request that Jon had ignored.

Duplicate #1000


Add PowerShell script analyzer

It would be great to have a PowerShell analyzer while writing PowerShell.

It would be great to have a PowerShell analyzer while writing PowerShell.

This should be able to be closed now.


Feature request: Priority enum

New Issue Checklist

[x] I have looked at the Documentation
[x] I have read the F.A.Q.
[x] I have filled out this issue template.

Issue Info

Info
Value

Platform
ios/osx/tvos

Platform Version
9.0

SnapKit Version
3.0.0

Integration Method
carthage/cocoapods/manually (all)

Issue Description
It's not too obvious on how priorities should be used and what values corresponded to the old priorityLow - priorityRequired without searching through the implementation.
In my opinion creating an enum as simple as:
 public enum Priority: Float {
        case low              = 200.0
        case medium      = 600.0
        case high            = 800.0
        case required     = 1000.0
    }

would remove a lot of ambiguity for what constitutes relative priority and what makes something required. I do think having the flexibility of being able to put on any priority yourself is very helpful, but not knowing the threshold for a constraint being required is unhelpful, so having these enums as just a wrapper for specific values could alleviate that problem.
Additionally adding more documentation around priorities would be helpful as well as there is currently only one example

@Shehryar interesting, I specifically removed the priorityLow/High etc… because they mean very different things on macOS and iOS.
An enum may solve that though because it could be specific to the platform.

I would be happy to open a PR for it myself. If you have a specific way you would like it to be implemented I'd love to help out and contribute

I like the idea of using an enum but IMHO it's often needed to use other priorities:
e.g low + 1, 700.
With this approach we would need to have 2 sets of APIs one that takes Priority and the other that takes a float and to create priorities like low + 1 you would probably need: .low.rawValue + 1... not a fan of this...
So I would enhance the proposed enum in this way:
public enum Priority: Strideable, RawRepresentable, Equatable {
    case low
    case medium
    case high
    case required
    case custom(value: Float)

    public init?(rawValue: Float) {
        // maybe needs some constarints like 0 <= x <= 1000 ?
        self = .custom(value: rawValue)
    }

    public var rawValue: Float {
       // eventually different in iOS & macOS
        switch self {
        case .low:
            return 250
        case .medium:
            return 500
        case .high:
            return 750
        case .required:
            return 1000
        case let .custom(value):
            return value
        }
    }

    public func advanced(by n: Float) -> Priority {
        return .custom(value: self.rawValue + n)
    }

    public func distance(to other: Priority) -> Float {
        return other.rawValue - self.rawValue
    }
}

public func ==(lhs: Priority, rhs: Priority) -> Bool {
    return lhs.rawValue == rhs.rawValue
}

Now you can use : .low +1 🎉

@Shehryar as @MP0w has labeled above this would be perfect in a PR, granted you may want to have a #if os check to swap it out on macOS.
You'll want to add a method to ConstraintMakerPriortizable to take the Priority enum as an argument and convert it to a raw value as well as Constraint.
Unfortunately you can't just make it conform to ConstraintPriorityTarget otherwise there will be ambiguous API issues.

👍  if @Shehryar is not working on it I can do it!

@MP0w help review? And possibly contribute if you're still interested?

@shehryar any update on the Strideable thing?


I can't install vscode properly even though I used to

VSCode Version: 1.26.0
OS Version: Windows 10
Steps to Reproduce:
Removed previous version of VS Code.
Run installer, when the progress bar almost to the end,
I can already see the VS Code icon on my desktop, but I've got the error:

Also did not work? Are you in a restricted corporate administrated system? You can always simply run the ZIP.

before long, I can installed and updated it correctly, but when I installed the version 1.26.0, I got this error. However, I can tap the ignore button and use it normally, only can't update.
Yesterday, I delete the registry with same name of ".shtml", then I installed it successfully.


[UI] alignment correction

Description
Responsive issue
Current Behavior
Search bar is not responsive
Proposed Behavior
I will fix the size and align the search bar portion
Screenshots

Additional Context
Add any other context, such as references to design guidelines, user feedback, or examples from other applications.
Impact
Explain the potential impact of this change. Will it improve usability, accessibility, performance, or visual appeal?
Related Issues
Link to any related issues, discussions, or feature requests that are relevant to this UI change.

Can you provide the mapbox_token?

If you're not working on the map, you can comment out the part and work.
On Tue, 15 Oct 2024 at 22:06, Nbisht1208 @.***> wrote:

Can you provide the mapbox_token?
—
Reply to this email directly, view it on GitHub
https://github.com/VigneshDevHub/CampX/issues/178#issuecomment-2414502756,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AX6PGXUG34Q3GZQKCXPGJGTZ3VABPAVCNFSM6AAAAABP4MSIL2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMJUGUYDENZVGY
.
You are receiving this because you commented.Message ID:
@.***>

@Vignesh025 i am working on the alignment of my search bar not map

Can you provide the mapbox_token??


Proof of concept: MastodonMinServerVersion annotation

Description
Our Wiki mentions:

All methods are annotated using a @MastodonMinServerVersion runtime annotation. The goal of this annotation is to specify the minimum server version that is required in order to make this call successful. During library initialization, we fetch the server version from the instance. When the method is invoked, we compare versions and if requirements are not met, we will throw a BigBoneVersionException. The caller can then decide how to proceed further (e.g. call another method or fail).

So far, that was not at all the case. But I like the idea, so I wanted to implement a proof of concept which is how this PR should be seen: Not a mergeable change set, but grounds for discussion.
I have added the annotation and additional functions to check if a called method’s min version is higher than or equal to the known instance version.
I’m currently not too happy with the InstanceMethods::getInstance.requireMinVersion(client) call and that would be my main criticism for the current solution. My knowledge regarding annotations, reflection, or annotation-based code is very much in its infancy so I’m sure there are better solutions that I’d still need to learn about. ksp might be an option to auto-create the boilerplate code so that we only need to add the annotation and then ksp handles the rest for us and automatically adds code similar to what I’ve added for getInstance as an example for now.
Before I continue with this, I’d like to find out what you think of this. Is this a good way forward? Would you like a different approach?
Type of Change
(Keep the one that applies, remove the rest)

New feature (non-breaking change which adds functionality)
Breaking change (fix or feature that would cause existing functionality to not work as expected)
Dependency addition

Breaking change
Methods annotated with @MastodonMinServerVersion may now throw a BigBoneVersionException which leads to errors from Java callers if they’re not explicitly handling that exception (or its parent Exception).
How Has This Been Tested?
Please describe the tests that you ran to verify your changes.
Mandatory Checklist

[x] My change follows the projects coding style
[x] I ran gradle check and there were no errors reported
[x] I have performed a self-review of my code
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[x] KDoc added to all public methods

I agree with your self-criticism. Annotations are great if they help remove boilerplate code, or at least having to write it ourselves - but having to add a call to requireMinVersion() in every API method is the opposite. As long as that is necessary, we might as well just add a minMastodonVersion String as another parameter to our client.getMastodonRequest(), and then do the version check in that function. That aside, if there is a way to properly achieve this using annotations, the rest of it looks good.
The only thing I'd like to see for the moment is an option to disable version checks when building the MastodonClient (or reduce them to less than an exception), so that library users at least have the choice to use BigBone with all those platforms that offer a Mastodon-compatible API while using very different versioning, for example Pixelfed, GotoSocial, Hometown, and probably many more.
Long-term, I believe having a proper way to support different platforms would be useful (see #226).


PR: Allow users to disable web widgets with a command line option

Description of Changes

[ ] Wrote at least one-line docstrings (for any new functions)
[ ] Added unit test(s) covering the changes (if testable)

[x] Included a screenshot or animation (if affecting the UI, see Licecap)

Added an option to spyder.ini to disable the info_widget: ipython_console.info_widget = True (Default).  Added a command line option "--offline" to disable help, offline help, and the info_widget. This is an effective configuration for the HPC machines at Los Alamos National Laboratory (LANL) and, I suspect, other facilities with limited internet access and browser functionality.
The interface launched with --offline will look like this (fewer bottom tabs on the explorer and console):

The current spyder version crashes with the following error message on our systems.  These changes allow the user to avoid activating these features.
[18235:18235:0930/153240.489072:FATAL:zygote_host_impl_linux.cc(165)] Check failed: process.IsValid().
Issue(s) Resolved

Fixes #
Affirmation
By submitting this Pull Request or typing my (user)name below,
I affirm the Developer Certificate of Origin
with respect to all commits and content included in this PR,
and understand I am releasing the same under Spyder's MIT (Expat) license.

I certify the above statement is true and correct:

Hello @dmageeLANL! Thanks for opening this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file spyder/plugins/ipythonconsole/plugin.py:

Line 236:80: E501 line too long (80 > 79 characters)

Hey @dmageeLANL, I'll give you a hand to finish this PR so we can include it in our next version (5.3.1), to be released soon.


Broken link to PowerShell script

The link to configure ATP using PowerShell scripts doesn't work.
You're just taken to the overview page for Defender for the Cloud.
https://learn.microsoft.com/en-us/azure/azure-sql/database/scripts/auditing-threat-detection-powershell-configure?view=azuresql

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

ID: 06f915ba-1bdb-fe6f-3fde-c646436c9312
Version Independent ID: 2b32b62b-a074-90db-0e45-b5006ebd4b38
Content: Configure Advanced Threat Protection - Azure SQL Database
Content Source: azure-sql/database/threat-detection-configure.md
Service: sql-database
Sub-service: security
GitHub Login: @rmatchoro
Microsoft Alias: ronmat

@OzzyOstadal Thanks for your findings, We will look into it and update as appropriate.

Hi @CESANU , would you be able to help out with this Git Issue? #reassign:cesanu

Hi @OzzyOstadal , thanks for bringing this to our attention! Our apologies for the delay but the link is now fixed. I'll go ahead and close out this Git Issue but please feel free to comment should you need anything further.
Thanks again for helping improve our documentation and I hope you have a wonderful rest of your day!
Masha from the SQL Docs team
#please-close