Identifiers validation failed for dataset Dragonfly Ireland 2019 to 2024

Identifier validation failed for the dataset Dragonfly Ireland 2019 to 2024:

Crawler attempt: 210
Publishing organization: National Biodiversity Data Centre
Publishing country: IRELAND
Installation: HTTP Installation
Number of occurrences indexed for this dataset at the time of the issue: 6754
Cause: GBIF ID problems exceed 50% threshold: 52% duplicates; 14079 total records; 7326 absent records
Pipelines execution steps: http://api.gbif.org/v1/pipelines/history/execution/3729034/step

New IDs sample:

101354263
101353961
101355422
101354264
101352935
101354936
101353416
101353956
101355245
101353109

Old IDs sample:

ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752732
ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752768
ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752769
ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752770
ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752771
ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752772
ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752773
ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752774
ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752775
ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752776

Publisher email
Hello,
I am contacting you from the GBIF Secretariat about a dataset published by the Dragonfly Ireland 2019 to 2024 : https://doi.org/10.15468/24fy6u.
We noticed that the occurrenceIDs were changed. We have temporarily paused the ingestions of this dataset.
As you might already know, when an occurrence record has a new occurrenceID for a given dataset, our system considers it to be a new occurrence.
This means that it will be given a new gbifid and a new occurrence URL (like this one: https://www.gbif.org/occurrence/1252968762) and the old gbifid and URL will be deprecated.
In this case, this means that the occurrence URLs would be deprecated when ingesting the newest versions of these datasets.
We would like to check with you if those changes were intentional. Do you know if this is the case?
Please let us know, thanks! We are happy to resume the dataset ingestion.
Note that some users rely on those occurrence URLs and gbifids (like https://bionomia.net for example). In an attempt to improve
the stability of the occurrence URLs and gbifids, we have implemented a warning system to detect these type of changes in datasets (see this news item).
If the data publisher can provide us with a list of old and new occurrenceIDs per record, we can avoid the identifier and URL changes. Could that be an option?
Please let us know if you have any question. Thanks!
All the best,

You can skip/fix identifier validation using the registry UI.

Identifier validation still  failing for the dataset Dragonfly Ireland 2019 to 2024:

Crawler attempt: 211
Publishing organization: National Biodiversity Data Centre
Publishing country: IRELAND
Installation: HTTP Installation
Number of occurrences indexed for this dataset at the time of the issue: 6754
Cause: GBIF ID problems exceed 50% threshold: 64% duplicates; 18546 total records; 11793 absent records
Pipelines execution steps: http://api.gbif.org/v1/pipelines/history/execution/3729035/step

New IDs sample:

101368342
101368040
101369501
101368343
101367014
101369015
101368035
101367495
101367188
101369324

Old IDs sample:

ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752732
ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752768
ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752769
ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752770
ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752771
ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752772
ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752773
ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752774
ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752775
ie.nbdc.dataset.DragonflyIrelandDatabase2019to2024.99117244440752776

Publisher email
Hello,
I am contacting you from the GBIF Secretariat about a dataset published by the Dragonfly Ireland 2019 to 2024 : https://doi.org/10.15468/24fy6u.
We noticed that the occurrenceIDs were changed. We have temporarily paused the ingestions of this dataset.
As you might already know, when an occurrence record has a new occurrenceID for a given dataset, our system considers it to be a new occurrence.
This means that it will be given a new gbifid and a new occurrence URL (like this one: https://www.gbif.org/occurrence/1252968762) and the old gbifid and URL will be deprecated.
In this case, this means that the occurrence URLs would be deprecated when ingesting the newest versions of these datasets.
We would like to check with you if those changes were intentional. Do you know if this is the case?
Please let us know, thanks! We are happy to resume the dataset ingestion.
Note that some users rely on those occurrence URLs and gbifids (like https://bionomia.net for example). In an attempt to improve
the stability of the occurrence URLs and gbifids, we have implemented a warning system to detect these type of changes in datasets (see this news item).
If the data publisher can provide us with a list of old and new occurrenceIDs per record, we can avoid the identifier and URL changes. Could that be an option?
Please let us know if you have any question. Thanks!
All the best,

You can skip/fix identifier validation using the registry UI.


Modrinth - Failed to create version

When uploading a new version to Modrinth, the request fails with "Failed to create version" and no other information.
Stacktrace is attached.
Gradle files: https://github.com/theatricalmod/Theatrical/blob/1.19.2-alpha/fabric/build.gradle & https://github.com/theatricalmod/Theatrical/blob/1.19.2-alpha/forge/build.gradle
I grabbed my access token for Modrinth from my account settings page.
stacktrace.txt

Thanks, should be fixed with: https://github.com/modmuss50/mod-publish-plugin/commit/5a36c39ce08587f97914347db78e78092875dfec

Perfect thanks, all working now!


Added community curated unity resources

https://hackr.io/tutorials/learn-unity- Learn Unity - 2D & 3D - from the best online Unity tutorials submitted & voted by the programming community.

I think I'd prefer to look at tutorials on an individual basis and add them directly to this list. There are so many tutorials that I'm trying to limit how many are on this list. As I think using this more for assets is more useful.


[DOC] Update the readme of longhorn-spdk-engine about using new RAID1 bdev

What's the task? Please describe
https://github.com/longhorn/longhorn-spdk-engine has the outdated tutorial to guide people on how to prepare and setup the environment for using SPDK, run new Longhorn SPDK bdev, etc.
Need to update the tutorial because right now we already decide to use RAID1 bdev to achieve our new Longhorn SPDK volume.
Describe the items of the task (DoD, definition of done) you'd like

[ ] Update readme to allow users setup everything for running RAID1

Additional context
cc @longhorn/dev-data-plane

@DamiaSan When working on issues, please do:

Mve to the right pipeline.

Update the sprint and estimation (days)

cc @rebeccazzzz

@DamiaSan
Appreciated your detailed RAID1 doc.
Can you add a wiki doc for

Prerequisites for the environment

What's the cloud vendor for the spdk test
Host OS
Kernel driver for SPDK
....

Build the longhorn spdk

Branch
Compile

Thank you.


IPTT and Program Page react to indicator deletion - update level order

On the Program Page, in an RF-active program, if I delete an indicator, the other indicators in that level are temporarily displaying an incorrect level (i.e. if I delete 1.2.1a, then I still see 1.2.1b and 1.2.1c).  Refreshing the program page updates their level to 1.2.1a and 1.2.1b as expected.  Make program page reactive so a delete updates those indicators' numbers.
Same issue on IPTT.  (Same steps to reproduce - delete indicator, levels don't update, refresh page, levels update)

The Program page portion of this ticket should now be fixed.

The IPTT Portion of this is being moved to a follow on ticket (#1788) moving to acceptance testing for only the Program Page portion

Testing deletion of Goal b indicator.  Before deletion:

After deletion:

Looks good!


Revert target result

The primary goal is to reduce the redundancy of target message and component results. But we found many target providers don't return its error in component result, so we postpone this fix until we iterate and fix all target providers. @yanjiaxin534  please follow this.


AppSidebarNav is possible collapse only one each time?

I need to when I click in one button with children open them and close other I already clicked.

This feature is available in version 3


tab index error

The issues forum is NOT for support requests. It is for bugs and feature requests only.
Please read https://github.com/angular-ui/bootstrap/blob/master/CONTRIBUTING.md and search
existing issues (both open and closed) prior to opening any new issue and ensure you follow the instructions therein.
Bug description:
In file src/tabs/tabs.js, there has a function sort.
if my tab index is a string or i have  draggable tabs, the order of my own controller's tab will be different from the order in tab directive. And when i delete a tab,  the newActiveTabIndex is unexpect

Closing due to insufficient minimal reproduction/information

@wesleycho ？？？

you should provide a basic plunker that shows the error at least

https://plnkr.co/edit/OXakHwhjqvYjPUBAYdg2?p=preview
i think this want to select the second tab in the example.
but sort function make it wrong.


Integrate LostGrid in place of Gridly

LostGrid seems to be incredibly flexible and easy to use. I think it's worth implementing instead of the very limited Gridly.
More information:

https://github.com/peterramsing/lost

I think I'm pretty happy with my new setup for gridly. Closing for now.

I think I've changed my mind on this. Gridly is incredibly lightweight, and that makes it easily extensible. Additionally, LostGrid generates some confusing looking code. Closing this issue for now.


Android App bundle doesn't work on 64 bit devices ? (master channel)

so the app bundle size now is almost doubled ( 16mb - old one was ~9.7 )
( because of 64 bit I think ) - and my apk is 9.6 (32-bit default)
tried to publish the app on playstore
it simply show the splashscreen (defined with AndroidManifest) and then it closes
this happened on Samsung Note 9 - Honor Play devices ( the only ones i tested )
publishing the app with normal 32 bit apk works fine on all devices
btw this problem happened once to me before with the official 'Flutter Gallery'
Related : https://github.com/flutter/flutter/issues/30239
but it was fixed without me doing anything ,, idk how !!
but it's the same effect ,, it doesnt only affect me , it affects my users too now
[ظê?] Flutter (Channel dev, v1.6.3, on Microsoft Windows [Version 6.3.9600], locale en-US)
    ظت Flutter version 1.6.3 at E:\Setups\FLUTTER\flutter
    ظت Framework revision bc7bc94083 (5 days ago), 2019-05-23 10:29:07 -0700
    ظت Engine revision 8dc3a4cde2
    ظت Dart version 2.3.2 (build 2.3.2-dev.0.0 e3edfd36b2)

[ظê?] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    ظت Android SDK at E:\Setups\Android
    ظت Android NDK location not configured (optional; useful for native profiling support)
    ظت Platform android-28, build-tools 28.0.3
    ظت ANDROID_HOME = E:\Setups\Android
    ظت Java binary at: E:\Sources\android-studio-ide-181.4987877-windows\android-studio\jre\bin\jav
a
    ظت Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
    ظت All Android licenses accepted.

[!] Android Studio (version 3.2)
    ظت Android Studio at E:\Sources\android-studio-ide-181.4987877-windows\android-studio
    X Flutter plugin not installed; this adds Flutter specific functionality.
    ظت Dart plugin version 181.5656
    ظت Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)

[ظê?] IntelliJ IDEA Community Edition (version 2019.1)
    ظت IntelliJ at E:\Setups\JetBrains\IntelliJ IDEA Community Edition 2019.1.1
    ظت Flutter plugin version 35.3.3
    ظت Dart plugin version 191.7141.49

[ظê?] Connected device (2 available)
    ظت Windows ظت Windows ظت windows-x64 ظت Microsoft Windows [Version 6.3.9600]
    ظت web     ظت web     ظت web         ظت web

! Doctor found issues in 1 category.

@KirolousNashaat I think that, for now, the only option is to create two separate apk, both for 32 and 64.

run flutter build apk --release --target-platform=android-arm
upload 32bit version to play store
increment versionCode in pubspec.yaml
run flutter build apk --release --target-platform=android-arm64
upload 64bit version to play store

Play Store will deploy app accordingly to device architecture this way.
See https://github.com/flutter/flutter/issues/18494

Same problem with me after they announced support for 64&32 bit

@KirolousNashaat I think that, for now, the only option is to create two separate apk, both for 32 and 64.

run flutter build apk --release --target-platform=android-arm
upload 32bit version to play store
increment versionCode in pubspec.yaml
run flutter build apk --release --target-platform=android-arm64
upload 64bit version to play store

Play Store will deploy app accordingly to device architecture this way.
See #18494

Same problem with me after they announced support for 64&32 bit

but they already merged this : https://github.com/flutter/flutter/pull/32787
it should have worked with appbundle ? or i am missing something ?

but they already merged this : #32787
it should have worked with appbundle ? or i am missing something ?

It should... But apparently it is not working. :/ Or maybe I'm also missing something!

@mklim I dont know if i am supposed to mention you , but u are the one reviewed this PR , but it's not working and instead of making 64 bit devices run 32 bit apps, it breaks the app, it just flashes the splash and doesnt work (64bit devices, didnt test on 32bit but should work fine i think ), it should be reverted/fixed ?

cc @blasten
Thanks for the bug report.
Can anyone affected by their app closing immediately opening it post the error logs on this bug from the time their app closes?

i don't but if u are asking about someway to test it without uploading to the playstore ?
there is tool to generate apk(s) from the appbundle to test it
Docs:
https://developer.android.com/studio/command-line/bundletool
Github:
https://github.com/google/bundletool/releases

cc @blasten
Thanks for the bug report.
Can anyone affected by their app closing immediately opening it post the error logs on this bug from the time their app closes?

@mklim is this enough?
05-29 09:16:02.106  7511  7511 E flutter : [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings.
05-29 09:16:02.106  7511  7511 E flutter : [ERROR:flutter/runtime/dart_vm.cc(241)] Could not setup VM data to bootstrap the VM from.
05-29 09:16:02.107  7511  7511 E flutter : [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance.
05-29 09:16:02.107  7511  7511 F flutter : [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm.

This issue is related to https://github.com/flutter/flutter/issues/31922. I'm closing this bug to track it there. Thanks!


Investigate differences in evidenceCount field in associations datasets

Describe the bug
Based on a Community post, it appears that the evidenceCount values in our associationByDatasource and associationByDatatype datasets are incorrect. Both the direct and indirect versions are affected by this issue.
Observed behaviour
When parsing and querying the associationByDatasourceDirect and associationByDatasourceIndirect datasets, the association for CFTR (ENSG00000001626) and cystic fibrosis (Orphanet_586), returns an evidence count of 2188 for the eva datasource. However, on the CFTR and cystic fibrosis evidence page, there are 2409 evidence strings from eva. And so 221 records are missing from the evidenceCount field.
When parsing and querying the associationByDatatypeDirect and associationByDatatypeIndirect datasets, the same association returns an evidence count of 2289 for the genetic_associations datatype. However, this should be 2510. And so it appears the same 221 eva records are also missing from the evidenceCount field in the datatype datasets.
Expected behaviour
The evidenceCount values for a given datasource or datatype should match what is displayed in the web interface.
Additional context**
The CFTR and cystic fibrosis association is noteworthy because cystic fibrosis does not have any child terms and so we should expect that the direct and indirect counts are the same.

the thing is, there are pieces of evidence with a score of 0. But when the evidence is prepared for the associations they are filtered out to not waste resources.
    val dfs = IoHelpers.readFrom(mappedInputs)
    val evidences = dfs("evidences").data
      .selectExpr(evidenceColumns: _*)
      .where(col(evScore) > 0D)

In the case of EVA, it contains mutations that are not pathogenic or the clinical significance is unknown so that implies score 0
@ evs.filter($"sourceId" === "eva" and $"targetId" === "ENSG00000001626" and $"diseaseId" === "Orphanet_586").count
res11: Long = 2409L

@ evs.filter($"sourceId" === "eva" and $"targetId" === "ENSG00000001626" and $"diseaseId" === "Orphanet_586" and $"score" > 0).count
res13: Long = 2188L

evs.filter($"sourceId" === "eva" and $"targetId" === "ENSG00000001626" and $"diseaseId" === "Orphanet_586" and $"score" === 0).selectExpr("targetId", "diseaseId", "score", "explode(clinicalSignificances) as clinicalSig").show
+---------------+------------+-----+------------+
|       targetId|   diseaseId|score| clinicalSig|
+---------------+------------+-----+------------+
|ENSG00000001626|Orphanet_586|  0.0|not provided|
|ENSG00000001626|Orphanet_586|  0.0|not provided|
|ENSG00000001626|Orphanet_586|  0.0|not provided|
|ENSG00000001626|Orphanet_586|  0.0|not provided|
|ENSG00000001626|Orphanet_586|  0.0|not provided|
|ENSG00000001626|Orphanet_586|  0.0|not provided|
|ENSG00000001626|Orphanet_586|  0.0|not provided|
|ENSG00000001626|Orphanet_586|  0.0|not provided|
|ENSG00000001626|Orphanet_586|  0.0|not provided|
|ENSG00000001626|Orphanet_586|  0.0|not provided|
|ENSG00000001626|Orphanet_586|  0.0|not provided|
|ENSG00000001626|Orphanet_586|  0.0|not provided|
|ENSG00000001626|Orphanet_586|  0.0|not provided|
|ENSG00000001626|Orphanet_586|  0.0|not provided|
|ENSG00000001626|Orphanet_586|  0.0|not provided|
|ENSG00000001626|Orphanet_586|  0.0|not provided|
|ENSG00000001626|Orphanet_586|  0.0|not provided|
|ENSG00000001626|Orphanet_586|  0.0|not provided|
|ENSG00000001626|Orphanet_586|  0.0|not provided|
|ENSG00000001626|Orphanet_586|  0.0|not provided|
+---------------+------------+-----+------------+
only showing top 20 rows

and giving closer to which clinical significances are the offending ones
@
evs.filter($"sourceId" === "eva" and $"targetId" === "ENSG00000001626" and $"diseaseId" === "Orphanet_586" and $"score" === 0).selectExpr("targetId", "diseaseId", "score", "explode(clinicalSignificances) as clinicalSig").select("clinicalSig").distinct.show
+------------+
| clinicalSig|
+------------+
|      benign|
|not provided|
+------------+

therefore, the counts sound correct to me.


Upgrade to latest Malli to use mu/keys

This makes the schema-keys function unnecessary!
The latest Malli added some additional clj-kondo directories; so did Calva and Portal. I added them to .gitignore and whitelisted .clj-kondo/config.edn.
All existing tests pass.

Hi Luke! Thanks for the contribution. I had not set up the project properly for my actions to run on PRs. I wonder if you'd rebase, would they run now?

I updated my branch and all the checks ran and passed! 👍

I need to think more how I intend to handle .gitignore and external contributors. Mind removing those changes?


markdown support

this will probably get turned down as "works as designed", but i'll give it a shot anyways.
i like ReST. I think it's a great language. however, i prefer Markdown because it's simpler, particularly for the link syntax. it would be really nice if i could write docs on rtfd.org with markdown instead of being forced to use ReST.
this could need support from Sphinx: http://dev.sphinx-doc.org/sphinx/issue/825/markdown-capable-sphinx
or sphinx could simply be bypassed: http://stackoverflow.com/questions/2471804/using-sphinx-with-markdown-instead-of-rst/2487862#2487862
note that there's a github project that aims at producing a docutils doctree from markdown: https://github.com/sgenoud/remarkdown/
thanks for this great project.

answering myself: http://blog.readthedocs.com/adding-markdown-support/


Using scale_est breaks the solver invocation

The scale_est param should be interpreted into --scale-low and --scale-high instead of trying to use --scale-est and --scale-err which don't exist in solve-field.
Should be using:
scale_low = scale_est * (1.0 - scale_err / 100.0)
scale_high = scale_est * (1.0 + scale_err / 100.0))
https://github.com/dstndstn/astrometry.net/blob/master/net/models.py#L1143
https://github.com/dstndstn/astrometry.net/blob/master/net/process_submissions.py#L231
https://github.com/Jusas/astrometry-api-lite/blob/master/src/worker/worker.ts#L277

Fixed in v1.1.1.


[BUG] Alert details flyout's responsiveness

What is the bug?
The table and the push flyout do not resize gracefully in the Alerts by triggers list in the Alerting plugin for different screen sizes:

The elements in the table header don't stack but move outside of the table
On the smaller screens the table becomes unusable
On the screens smaller than about 990px the flyout switches to overlay type overlapping and blocking the table.
The monitor name is truncated even if there is enough space to accommodate the full name

How can one reproduce the bug?
Steps to reproduce the behavior (assuming the Alerts by triggers table is not empty):

Go to the 'Alerting' plugin - this will land you on Alerts by triggers page
Click on the "burger" icon in the top left corner of the screen
Click on the last item in the main navigation panel Dock navigation
Click on the number of alerts in the second column of the table - the flyout appears in the right part of the screen and resizes the table
Resize the browser window to less than ~1700px
Then change the size of your browser window to less than ~990px

What is the expected behavior?
All elements of the table should resize gracefully. The push flyout width/proportion should adjust to the screen size.
On the screens smaller than ~990px the overlay type flyout should not obscure the table (By setting ownFocus={false}, the underlying page content will be visible and clickable.). The monitor name column should be wider when screen size permits to show the names of the monitors without truncation.
What is your host/environment?

OS: macOS
Version 12.4
Plugins Alerting
Browser Chrome, Firefox, Safari

Do you have any screenshots?

Do you have any additional context?
The problems with responsiveness seem to be amplified by introducing the dock navigation feature in the main menu in combination with the push flyout use. The pushMinBreakpoint for the overlay flyout might need to be reviewed along with the docked navigation behavior for the small screens.

Good catch; there are a few elements that don't seem to resize gracefully. I'll look into this.


docs: Fix tag v0.0.7 in README.md

Fixes the tag (0.0.7 to v0.0.7) in the Installation section of README.md.

Thank you for correcting the typo and submitting a pull request :heart:


work in V9?

Does this work in v9? has no version info in json

See https://github.com/stwlam/adequate-vision/blob/master/module.json


chore(main): release xcm-router 1.4.0

:robot: I have created a release beep boop
1.4.0 (2024-09-30)
Features

xcm-router: Refactor currency inputs ✨ (28db4a9)

Bug Fixes

Fix ignored ESlint errors 🔧 (495fc06)

Miscellaneous Chores

Perform monthly maintenance check 🛠 (e85ed15)
Update readme (fd92c72)

Continuous Integration

Setup Codecov bundle analysis 📦 (c3e0e53)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

xcm-router-v1.4.0
:sunflower:


Ability to unpack scalar variables that are type string

When the @ symbol is used instead of $ on a string variable it will unpack the variable into a list like set of characters.
This would align with the current behavior for list variables and dictionary variables.
*** Settings ***
Library    Collections

*** Variables ***
${STRING_VAR}    string

*** Test Cases ***
Test Case 1
    [Documentation]    test for new behavior
    ${list}    Create List
    FOR    ${char}    IN    @{STRING_VAR}
        Append To List    ${list}    ${char}
    END
    Lists Should Be Equal    ${list}    ${{[*$STRING_VAR]}}

Test Case 2
    [Documentation]    test to verify regression
    ${list}    Create List
    FOR    ${string}    IN    ${STRING_VAR}
        Append To List    ${list}    ${string}
    END
    Lists Should Be Equal    ${list}    ${{[$STRING_VAR]}}

At the moment unpacking variables containing strings like @{var} is explicitly prohibited. The reason is that accidentally using a string instead of a list could cause strange and hard to understand problems. This functionality would sometimes be useful, though, and I start to believe that allowing it would bring more benefits than problems. We cannot in general prevent users from shooting themselves in the foot anyway.
One reason I believe changing the behavior would be relatively safe is that we did a similar change when accessing variable items like ${var}[0]. This syntax didn't earlier work with strings for the same reason that @{var} doesn't work, but it was changed in RF 3.2 (#3182) and at least I haven't heard about any problems caused by it.
How do others feel about this?


Support actual streaming for AzureAI

Follow up of https://github.com/spring-projects/spring-ai/pull/1042
As already raised in a few PRs the streaming is not really working at the moment for azure.. This PR contains the following fixes:

Refactor Azure to actually work identically to OpenAI. The code is copied from the OpenAIModel. Retry template is not yet implemented. This looks like a lot of changes in the PR, but in general it is just a copy/paste from OpenAI (with some adjustments so that is compliant to the Azure Library)
Switch to Async Azure Client, so that streaming is actually working (by switching to the Azure Async Client). The documentation is super hard to understand (by Azure), but after testing it is clear that only the async library is actually async and streams at least line by line (not token by token) -  see https://github.com/spring-projects/spring-ai/pull/796 ++ https://github.com/spring-projects/spring-ai/pull/796 --> Note: this change might be breaking for spring ai consumers, as this will cause function al
rollback to azure beta 8, due to issues in the JSON decoder errors ( https://github.com/Azure/azure-sdk-for-java/issues/40629 )

Can you have a look if that is the correct direction for you?

Also remark: This PR is nicely working with a pretty big professional project with >50 functions and streaming. I do not have access to the Images service though. So would be nice if you can also check if that is working for you.

Reopening this as a reference util @timostark submits the new PR. Looking forward for it :)

I do not have access to the Images service though. So would be nice if you can also check if that is working for you.

Not sure I follow?

Reopening this as a reference util @timostark submits the new PR. Looking forward for it :)

@tzolov: So I had to debug that for quite a while now.. The point is that streaming is actually working (unfortunatly not really smooth, but that is due to veeeery strange code inside the byte-buffer / event handling of azure.....). This is especially noteable when just running the stream as a unit test and logging the timestamps.
The main "issue" is that for reactive web-services to actually work, the returned stream apperantly needs an own subscribeOn/publishOn with own Schedulers.
I am unfortunatly not an expert at all in the usage of Schedulers, but my "naive" assumption is, that the Event-Stream implementation / sending is somewhat blocked by the Azure OpenAI call on the same thread and can not send out the events until the event stream is done.
The usage of Schedulers is not required when using the Azure OpenAI Async library - because probably there is no blocking thread in the thread of the rest call.
I would normally suggest, to go to the async API approach, which internally creates a own thread for the Azure OpenAI call (which avoids that blocking behavior) - but I am not sure if the async library is a little slower (also for the non-streaming scenario). I will give that a try in the nighttime to compare the performance of both approaches (at the moment,the performance is generally not that good..)
Alternatives would be
a) to just update the documentation and use Schedulers in the consumer code. What is your opinion about that?
b) switch to Azure Async API (possibly using a spring property to enable/disable)
c) just start a new thread on our own inside the stream method and continue to use the standard Azure API (will prevent any downgrade of the non-streaming scenarios). Maybe using the Schedulers or virtual threads fuctionality inside the Azure stream function.
What is your opinion here? I would tend for option (c) but first would like to hear your opinion..
Code what is working using normal client.
`    @GetMapping(value = "/chat/{chatId}/start", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux chat(@PathVariable Long chatId) {
log.info("Starting with chatId: {}", chatId);
    return chatBotService.getMessageProcessingStreamForChat(chatId)
            .subscribeOn(Schedulers.boundedElastic())
            .publishOn(Schedulers.parallel());
}

`
"Wrong" documentation: https://docs.spring.io/spring-ai/reference/api/chat/azure-openai-chat.html

@tzolov OK, would need a little help to create a PR.. using subscribeOn / publishOn i was not able to find a functional solution. When using this approach (either in SpringAI or in my own code) the WebFlux implementation will be stuck after ~~100-300 tokens. Might be threading or backpressure.. I am not deep enough into the details of Flux/Threading of Schedulers to understand the root cause.
For me the WebFlux stream is working nicely if i isolate the handling to an own thread (probably the same what the OpenAiAsync lib by azure is doing) - See example: ( sorry, that will probably work much nicer with some integrated stuff of Flux - as said I am really not an expert here).
        Sinks.Many<ChatResponse> sink = Sinks.many().multicast().onBackpressureBuffer();
        ExecutorService executor = Executors.newSingleThreadExecutor();
        Runnable task = () -> {
            var response = azureOpenAiChatModel.stream(prompt);
            response.doOnEach(x -> sink.tryEmitNext(x.get())).doOnComplete(() -> sink.tryEmitComplete()).doOnError((error) -> {
                sink.tryEmitError(error);
            }).collectList().block();
        };
        return sink;

This is of course very ugly to have outside of the lib code.. So as said above: Do you have any preferred solution?

Just a quick comment, we should avoid an implementation that uses block to give the appearance of a sync call stack.  Using both client classes, one for sync, one for async/reactive would be best.   I am not sure if this addresses the issues you are observing as described above.  Is the issue that sync calls aren't working when you use the async client but async calls are?  If that is the case, using the sync client for sync calls would work well.

@timostark if the Async Client is working as expected for streaming response can't we use both clients, the AzureClient for call and Async Azure Client for stream?

@tzolov yup certainly.. i will adjust the code accordingly in the next days and raise a PR.

The code improvement was completed a month ago, but when can it be reflected in the package?

@tzolov yup certainly.. i will adjust the code accordingly in the next days and raise a PR.

It looks like the bug fix was done a month ago, when can we expect it to make it to the PR?

@tzolov  @timostark
Is no one following up on this issue?

@hy4470  @tzolov sorry i forgot about that issue. i am currently blocked with my work projects, but just fyi there is a functional workaround to get streaming working with the current status of SpringAI (Azure) by simply running the azureOpenAiChatmodel.stream inside an isolated runnable with a seperated EventSink.. That is reaaally no nice code, but imo good enough as a functional workaround.
Changing everything to the Async Client of Azure felt a little bit risky for me, because the documentation does not really tell much about the difference..
Extremly simplified functional code for the consumer service attached.
    private Flux<ChatResponse> sampleCode() {
        Sinks.Many<ChatResponse> eventSink = Sinks.many().multicast().onBackpressureBuffer();
        ExecutorService executor = Executors.newSingleThreadExecutor();

        try {
            Runnable task = () -> {
                var response = azureOpenAiChatModel.stream(new Prompt());
                var allResponses = response.onBackpressureBuffer().doOnError((error) -> {
                    eventSink.tryEmitError(error);
                }).doOnEach(x -> {
                    eventSink.tryEmitNext(x.get());
                }).collectList().block();

                eventSink.tryEmitComplete();
            };
            executor.execute(task);
            executor.shutdown();
        } catch (Exception ex) {
        }
        return eventSink.asFlux();
    }

You can return this value in your TEXT_EVENT_STREAM_VALUE GetMapping..
    @GetMapping(value = "/chat/{chatId}/start", produces = MediaType.TEXT_EVENT_STREAM_VALUE)

Hello all!
Do you foresee this will make it to Milestone 3, and, if yes, do you also think that the expected deadline of releasing on October 4th will be met?
Great work on the library all around, by the way! We are happily using it in production and it works like a charm! Asking about the deadline, because we have some use cases that would benefit from streaming being integrated in the Azure bean, just like it works for the Bedrock/Anthropic ones!
Once again, really great work so far!

This is working now, see this PR for the details.  https://github.com/spring-projects/spring-ai/pull/1447
Thanks for everyone's patience!

This is working now, see this PR for the details. #1447
Thanks for everyone's patience!

I conducted a test with the modified version and confirmed that many tokens are being lost. Did anyone else not experience this issue?

@hy4470 I’ll give this a try when milestone 3 is officially released.
For now, at my team, we’re just going with the low level client for Azure, the “direct one” from the Azure SDK that works well enough…

@tzolov @markpollack Is milestone 3 officially available? I’ll try this out if it is 🥳

Yes, M3 is available now. https://spring.io/blog/2024/10/08/spring-ai-1-0-0-m3-released

Yes, very awesome!! I’ve just seen this now, was knee deep in implementing stuff and this fell under my radar, will try it out today! Thank you! 🙏


external CPI - create vm. No hint from bosh director for persistent disk, cant optimize for local storage

The CPI contract indicates that bosh director can give indication for the persistent disk that will be attached to a new VM.
https://github.com/cloudfoundry/bosh/wiki/BOSH-CPI-API-v1-(WIP)#create_vm
This information is critical to enable local storage type, with an optimized external CPI.
Despite testing different configuration, i never got any disk_id hint in create_stemcell.
Is there a configuration to bosh director to enable disk_id hint ?
Thks for your feedback

http://bosh.io/docs/cpi-api-v1.html#create-vm mentions disk_cids as one of its arguments.

disk_cids [Array of strings] Array of disk cloud IDs for each disk that created VM will most likely be attached; they could be used to optimize VM placement so that disks are located nearby.

We do not guarantee that it will always be populated since Director may make later decisions in the deployment flow about which disks to attach.
I'm not sure though I understand what you mean by "enable local storage type". Do you mean you want to create ephemeral disk on local storage or do you mean you want persistent disks to be on the local storage?

Yes the aim is to target local storage type for persistent disk. My understanding is the cpi api does not manage ephemeral disk, only persistent disk.
The idea is to target the persistent disk when recreating vm (typically after a bosh release update)

Are you thinking that CPI would pick specific hosts for VM creation based on where persistent disk is located? Would you also be able to move persistent disks from host to host if needed?
Separately from that, are you planning to support network attached storage for persistent disks?
CPIs do manage ephemeral disk but transparently inside create_vm call. If you want to pass in special configuration for ephemeral disk you should do that through resource pool's cloud properties.
We planning to support a similar configuration in vsphere cpi so that we can optionally place persistent disks onto local storage; however, it would not be a default in our case.

Yes, we added a cloud_properties ephemeral_disk_offering, so our cloudstack CPI can use a dedicated iaas, generally local, for ephemeral disk. This cause no issue, as the ephemeral disk and vm lifecycle are the same.
For the persistent disk, a cloud_properties disk_offering let the CPI place the persistent disk with a distinct offering (local / or shared - nas, its up to the iaas admin).
As our external CPI has intimate link with the Iaas, it will have special support if the persistent disk is local, ie create the vm on the same host. We are also considering moving the disk, with a snapshot / recreate api call sequence for example.
Hooking this mecanism in create_stemcell is more "ops intuitive" , and the disk_ids hint from Bosh Director would be usefull.
If not, this mechanism could be plugged @attach_disk time

@poblin-orange fair enough. Unless I missed something I believe disk_cids provide you with enough information for moving things around. Can this issue be closed?

@cppforlife yes disk_cids would be enough, if bosh director feeds it, which it doesnt (it was my initial point. Is there a configuration to bosh director to enable disk_id hint ? )

@poblin-orange Hmm. It doesnt feed the disk CID on initial create I believe because we first create VM and then the disk, but on subsequent recreates of the VM I believe it does send it it.

Closing for inactivity. If you'd like to continue the conversation, feel free to reopen this thread.


Not evaluating code block in orgmode

What did you expect to happen?
When I press enter to evaluate a code block of  python it should print the right results.
What actually happened?
When I press enter to evaluate a code block of  python it doesn't print the right results. Take a look at here.
https://user-images.githubusercontent.com/83629316/126871050-5f82a2dc-a9e9-49e3-8483-1a6d4e819abf.mp4
Describe your attempts to resolve the issue
I don't know what I should do here is the code I used:
#+begin_src python
print("Hello")
#+end_src

#+RESULTS:
: None

The a
Steps to reproduce

In an org document paste the following code:

#+TITLE: Python: Expressions
#+DESCRIPTION: Variables, Expressions, and Statements

#+begin_src python
print("Hello")
#+end_src

Press enter on the code block
See the result

System Information
https://pastebin.com/9b56tDKU

Please read up on the :results output option here: https://orgmode.org/manual/Results-of-Evaluation.html
#+begin_src python :results output
print("Hello")
#+end_src

#+RESULTS:
: Hello

Since this isn't a bug I will close this, and because our issue tracker isn't the place for how-to questions I mark it for eventual deletion.

Thank you


Remove mentions of subteams in accordance with RFC 89

This will need backported to all the versions we maintain, but it should cherry-pick cleanly.

I'll merge this PR now; everyone has been notified and got a quite long period to object


Request to modify norm_sspec function

It would be nice to have access to the fdopnew and isspecavg arrays in the norm_sspec function for the purpose of more in-depth arc asymmetry analyses outside of simply plotting. It's easy enough to modify the source code to obtain them, but it would be nice if this was an existing feature.

Hi @jturner28 , those arrays are saved as self.normsspec_fdop and self.normsspecavg respectively. So if you run the norm_sspec function without plotting (which I believe is default), they will be attributes of your Dynspec object, so you can access them that way.
dyn = Dynspec(filename)  # load dynamic spectrum given by filename
dyn.norm_sspec(eta=100)  # form normalised secondary spectrum with respect to curvature=100

# Get the desired arrays
fdopnew = dyn.normsspec_fdop
isspecavg = dyn.normsspecavg

Is that what you were looking for or did I misunderstand?

That's perfect. Thanks for your help.
On Wed, Apr 6, 2022 at 1:42 AM Daniel Reardon @.***>
wrote:

Hi @jturner28 https://github.com/jturner28 , those arrays are saved as
self.normsspec_fdop and self.normsspecavg respectively. So if you run the
norm_sspec function without plotting (which I believe is default), they
will be attributes of your Dynspec object, so you can access them that way.
dyn = Dynspec(filename)  # load dynamic spectrum given by filename
dyn.norm_sspec(eta=100)  # form normalised secondary spectrum with respect to curvature=100
Get the desired arrays
fdopnew = dyn.normsspec_fdop
isspecavg = dyn.normsspecavg
Is that what you were looking for or did I misunderstand?
—
Reply to this email directly, view it on GitHub
https://github.com/danielreardon/scintools/issues/10#issuecomment-1089844226,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIXJYLZSFLQWRK55KLZZA7TVDUP45ANCNFSM5SJWAL5A
.
You are receiving this because you were mentioned.Message ID:
@.***>


Bug Triage

Description
Share and document and example of the bug triage methodology we want to adopt for this project
Definition of done

[x] Uchenna to share an example
[x] Refine and agree on the method we want to adopt with bugs we discover
[x] Publish(in the charter?) and implement  the the bug triage process (in zenhub?)

https://app.zenhub.com/workspaces/doj-crt-intake-task-board-5d03c11f75b7f25d4d009a09/issues/18f/civil-rights-complaints/393


⚠ Heritage of Faith Christian Church - Gold Coast has degraded performance

In 8b63cef, Heritage of Faith Christian Church - Gold Coast (https://heritageoffaith.com.au) experienced degraded performance:

HTTP code: 200
Response time: 10914 ms

Resolved: Heritage of Faith Christian Church - Gold Coast performance has improved in 9b67d74.


Add support for vitest testing framework

Clear and concise description of the problem
This tool abstracts Electron and Vite configuration beautifully; if it could do the same for a testing framework that would be dream, saving devs some manual work.
Suggested solution
At project creation time add the option to add a testing framework, maybe vitest (https://vitest.dev/).
Alternative
No response
Additional context
I've managed to set up vitest, but with my limited coverage of electron-vite, it was imperfect integration. Struggled with nested renderer folder and ended up adding another index.html file in the project root in order to make all the paths / modules resolve correctly.
Additionally had to add type: module in package.json for vite to work.
Validations

[X] Follow the Code of Conduct.
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.

Testing with is awesome. But only supports Vite's configuration. This is where the difficulty lies. I'm also trying to optimize this so that developers can test more easily. Maybe the scaffolding will join the unit testing framework after solving this problem.vitest``vitest
You can add a Vite configuration file in root, use the same configuration as renderer(in ), and specify the entry point.electron.vite.config.*
/// <reference types="vitest" />
import { defineConfig } from "vite";
import { resolve } from 'path';

export default defineConfig({
  test: {
    // ...
  },
  build: {
    rollupOptions: {
      input: {
        index: resolve(__dirname, 'src/renderer/index.html')
      }
    }
  }
});

This is a temporary solution, which does not meet the original design intention of .electron-vite
In addition, Electron not supports type: module

Sorry to borther you. But I just don't understand how to  specify the entry point.electron.vite.config.*. Won't you set the input.index:resolve(__dirname, 'src/renderer/index.html') in Vite configuration file in the root? where is the place to specify the entry point?

https://github.com/electron/electron/pull/37535
There's a PR open to support esm modules that will probably be merged.
If I understand all of this correctly, the only thing stopping vitest is that electron doesn't support esm modules so we can't use src/main/index.ts as the entrypoint? If electron vite gets updated to point at whatever version includes this change we'll be able to point to the src/main/index.js to launch electron instead of the commonjs transpiled one in out/main and get vitest support for free?

You can add a Vite configuration file in root, use the same configuration as renderer(in electron.vite.config.*), and specify the entry point.
/// <reference types="vitest" />
import { defineConfig } from "vite";
import { resolve } from 'path';

export default defineConfig({
  test: {
    // ...
  },
  build: {
    rollupOptions: {
      input: {
        index: resolve(__dirname, 'src/renderer/index.html')
      }
    }
  }
});

this doesn't make vite load the electron.vite.config file configs, it just load the entry point of the index.html file without the plugins loaded inside the electron.vite.config.{ts,js,*}, I can guess that we can load the plugins inside vite.config.ts and export these plugins to electron.vite.config file , am I missing something in here ? (I'm just started experimenting this lib for few times only ).

I made a serious attempt at porting a project from a CRA app but despite many permutations, I was not able to get testing set up. It's hard to understand how this project could be useful in production without robust testing support and I wonder if this is in violation of semver given the lack of prerelease in version. I looked at using vite-jest but it doesn't support mocking modules.
I tried using both the renderer property of the return value of electron-vite's defineConfig AND the renderer value passed to the defineConfig in both a vite.config.js and a vitest.config.js file while also experimenting with the test property in such a way. I also experimented with using the mergeConfig.

I am also trying to migrate a project to electron-vite. Whats a good test framework that works well with electron-vite?

Path aliases do not work with vitest

I have the same problem... Do we have some new solutions?

Any  help required with this?

I don't know if vitest or another solution, but basically the front page of the project doesn't say anything about testing (maybe it's hidden somewhere, but it should be in a prominent place). I believe documentation it's maybe faster to produce than an automatic integration and it would help a lot. Somebody knows about some repo with an extensive test example with electron-vite?

are there alternative solutions to support any testing framework? Would love some guidance

This is how I solved the problem, since Vitest by default uses the vite.config.ts configuration:
// electron.vite.config.ts
import { defineConfig } from 'electron-vite'
import mainConfig from './packages/main/vite.config'
import preloadConfig from './packages/preload/vite.config'
import rendererConfig from './packages/renderer/vite.config'

export default defineConfig({
  main: mainConfig,
  preload: preloadConfig,
  renderer: rendererConfig,
})

This is how I solved the problem, since Vitest by default uses the vite.config.ts configuration:
// electron.vite.config.ts
import { defineConfig } from 'electron-vite'
import mainConfig from './packages/main/vite.config'
import preloadConfig from './packages/preload/vite.config'
import rendererConfig from './packages/renderer/vite.config'

export default defineConfig({
  main: mainConfig,
  preload: preloadConfig,
  renderer: rendererConfig,
})

@mgray88 do you have an example repo? Or can descripe it a bit more, how you did it?

It's kind of a hack but I've got it working like this:
electron.vite.config.ts
import { resolve } from "path";
import { UserConfig, defineConfig, } from "electron-vite";

export const config = {
  main: {
      /* */
  },
  preload: {
     /* */
  },
  renderer: {
    /* */
} satisfies UserConfig;

export default defineConfig(config);

vitest.config.ts
/// <reference types="vitest" />
import { defineConfig } from "vite";
import { resolve } from "path";
import { config } from "./electron.vite.config";

export default defineConfig({
  test: {
    setupFiles: [resolve(__dirname, "vitest.global-setup.ts")],
    environment: "jsdom",
  },
  build: {
    rollupOptions: {
      input: {
        index: resolve(__dirname, "src/renderer/index.html"),
      },
    },
  },
  ...config.renderer,
});

That being said - all tests are running in renderer env.


chore: add example for Cloud Run multicontainer deployment in Ruby

@jackwotherspoon I think I got everything. Want to take one last look before I merge?

LGTM


Feedback: AzureBastionSubnet missing under this section :Create a virtual network and an Azure Bastion host

As per the document, you are enabling Azure Bastion in step 5.
So if you enable Azure Bastion then the step 9 will be looks like this below

Currently document as this information

But I am getting this message.

Please let me know if you need more information from my side.

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

ID: 162050e3-c465-0dbf-77a7-dfb6c59ac7c2
Version Independent ID: 1711d962-fe8e-c895-9770-d1794ceb35cb
Content: Tutorial: Connect to a storage account using an Azure Private Endpoint - Azure Private Link
Content Source: articles/private-link/tutorial-private-endpoint-storage-portal.md
Service: private-link
GitHub Login: @abell
Microsoft Alias: abell

@vikedesai
This GitHub case is similar to a previous issue that you raised. Our content team is currently working on it, but it will take some time to update the documentation. Now I am going to close this issue as Duplicate of #121234


Add reconnect test, refactor tgtest, add mutex to condOnce to avoid races

Pull Request Test Coverage Report for Build 438725107

13 of 27 (48.15%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+1.1%) to 35.078%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

bin/decode.go
5
8
62.5%

transport/server.go
0
11
0.0%

Totals

Change from base Build 438251766:
1.1%

Covered Lines:
2439

Relevant Lines:
6953

💛  - Coveralls


getUserMedia on iOS9 ok - iOS10.0.2 no stream rendering

i've tested a simple cordova app with xcode 8.
only a video-tag and a script to init the stream and set the "src" to the video-element.
it's working fine with iOS9. the log is listing MediaStreamRenderer messages. these are missing with iOS10. seems the init is working but the renderer won't start.
anyone with the same problem?

Probably this is the cause: https://github.com/eface2face/cordova-plugin-iosrtc/blob/master/docs/Building.md#ios-10-notes

i've noticed the texting before i opened this issue. it's another problem. naturally i've extended the .plist with the authorization string.
without the string the app won't start. it'll crash and the debugger will show me the notice first to integrate the string. after doing this the app is running without any error - but without stream. all other scripting ist still working. the device motion events are fired and the  overlays are moved aso ...

here the log:
2016-10-03 03:40:48.050350 compass[2951:946913] iosrtcPlugin#onReset() | doing nothing
2016-10-03 03:40:48.514455 compass[2951:946913] iosrtcPlugin#getUserMedia()
2016-10-03 03:40:48.514597 compass[2951:946913] PluginGetUserMedia#call()
2016-10-03 03:40:48.567192 compass[2951:946913] PluginGetUserMedia#call() | video authorization: authorized
2016-10-03 03:40:48.570259 compass[2951:946913] PluginGetUserMedia#call() | video requested (specified device id: 'com.apple.avfoundation.avcapturedevice.built-in_video:0')
2016-10-03 03:40:48.582631 compass[2951:946913] PluginGetUserMedia#call() | chosen video device: <AVCaptureFigVideoDevice: 0x127e27cc0 [Back Camera][com.apple.avfoundation.avcapturedevice.built-in_video:0]>
2016-10-03 03:40:48.598566 compass[2951:946913] PluginMediaStream#init()
2016-10-03 03:40:48.599897 compass[2951:946913] PluginMediaStreamTrack#init()
2016-10-03 03:40:48.600196 compass[2951:946913] PluginMediaStreamTrack#run() [kind:video, id:155FC1A8-62D4-429D-9B2D-CC596390909A]
2016-10-03 03:40:48.600319 compass[2951:946913] PluginMediaStream#run()
2016-10-03 03:40:48.630013 compass[2951:946913] iosrtcPlugin#MediaStreamTrack_setListener()
2016-10-03 03:40:48.630241 compass[2951:947094] PluginMediaStreamTrack#setListener() [kind:video, id:155FC1A8-62D4-429D-9B2D-CC596390909A]
2016-10-03 03:40:48.630250 compass[2951:946913] iosrtcPlugin#MediaStream_setListener()
2016-10-03 03:40:48.630387 compass[2951:947094] PluginMediaStream#setListener()
2016-10-03 03:40:48.630394 compass[2951:946913] iosrtc STREAM blob:file:///c801664d-2e79-4516-a40d-8f0731e4091d
that's all ... no rendering log entry.

Can reproduce, reopening. In addition, I get this:
iosrtc:videoElementsHandler stopping "error" event propagation for video element

The beta worked, I have no clue what to do now...

In ' videoElementsHandler.js` there is:
// Intercept video 'error' events if it's due to the attached MediaStream.
video.addEventListener('error', function (event) {
	if (video.error.code === global.MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED && BLOB_URI_REGEX.test(video.src)) {
		debug('stopping "error" event propagation for video element');

		event.stopImmediatePropagation();
	}
});

That is because, obviously, Safari fires an error when setting video.src = SOMETHING_SAFARI_DOES_NOT_UNDERSTAND. The plugin ignores it.
I'm pretty sure the warning log you see has always been there (probably it's a Leryver issue...).

Ok, false alarm.  It's working fine, I had made silly mistakes along the way since I was updating the app and changing many things at once. Closing.

Nice to know.

i have same issue....
how can i fix it??
what is "video.src = SOMETHING_SAFARI_DOES_NOT_UNDERSTAND."
where can i add that source??
plz give me more explain and informations..
i also use cordova-plugins-iosrtc, ios 10 and xCode8.0
plz help me...


[FEATURE]: API for to 'flatten' response shapes when querying data from complex schemas and their relations.

Describe what you want
Overview / Explanation
Default aggregation behaviour of Drizzle Queries is to provide nested response objects with the table name of the relation as the key, and an object of the information it contains as it's value.
This makes sense when a project is simple, but is quite cumbersome when dealing with many relations or complex schemas; especially where a schema has many-to-many relations (via join tables). Accessing the data from deeply nested and repeated objects is inefficient / unintuitive.
One-to-one, one-to-many relationships are easier to follow with simple schemas - but messy to access when there are a lot of columns in a table.
Responses can be modified with custom functions that remap responses into the desired shape. Though requires getting more data than needed from the database, then reducing it with JS. That process defeats the stated purpose of drizzle queries:

Relational queries are meant to provide you with a great developer experience for querying nested relational data from an SQL database, avoiding multiple joins and complex data mappings. - Drizzle Docs

Alternatively, you could just provide raw SQL and call it a day. But accessing aggregated related data in a flattened response is a common enough process to warrant a quality of life way of doing it...
This issue has been mentioned previously (here, here, here, here). Purpose of raising this issue is to have a definitive response from the drizzle team and provide work around solutions for those experiencing similar frustrations.

Example Schemas
Note using the drizzle postgres adapter in the examples below. Minor modifications necessary if you're using SQLite, etc.
Build Schemas
import {
  pgTable,
  text,
  integer,
  serial,
  primaryKey,
} from 'drizzle-orm/pg-core';
import { relations } from 'drizzle-orm';

// Define Schema for Users
export const users = pgTable('users', {
  id: serial('id').primaryKey(),
  username: text('username').notNull().unique(),
});

// Define Schema for Posts
export const posts = pgTable('posts', {
  id: serial('id').primaryKey(),
  userId: integer('user_id')
    .notNull()
    .references(() => users.id),
  title: text('title').notNull(),
  content: text('content').notNull(),
});

// Define Schema for CategoryTags
export const categoryTags = pgTable('category_tags', {
  id: serial('id').primaryKey(),
  name: text('name').notNull().unique(),
});

// Define Schema for join table "posts_to_category_tags"
export const postToCategory = pgTable(
  'posts_to_category_tags',
  {
    postId: integer('post_id')
      .notNull()
      .references(() => posts.id),
    categoryTagId: integer('category_tag_id')
      .notNull()
      .references(() => categoryTags.id),
  },
  // Composite Primary Key on join table
  (t) => ({
    pk: primaryKey({ columns: [t.postId, t.categoryTagId] }),
  })
);

Define Schema Relations
// Define relations
export const usersRelations = relations(users, ({ many }) => ({
  posts: many(posts),
}));

export const postsRelations = relations(posts, ({ one, many }) => ({
  author: one(users, {
    fields: [posts.userId],
    references: [users.id],
  }),
  categories: many(postToCategory),
}));

export const categoryTagsRelations = relations(categoryTags, ({ many }) => ({
  posts: many(postToCategory),
}));

export const postToCategoryRelations = relations(postToCategory, ({ one }) => ({
  post: one(posts, {
    fields: [postToCategory.postId],
    references: [posts.id],
  }),
  category: one(categoryTags, {
    fields: [postToCategory.categoryTagId],
    references: [categoryTags.id],
  }),
}));

Instantiate your db
// Get db instance, instantiate drizzle db...
const connection = //...your connection
const db = drizzle(connection,
// ... your schema(s) and options)
);

Ways of fetching "posts" data and shapes of responses
Option 1 - Default nested querying
Explanation: Least complex method, least intuitive result.
// Getting responses from the database.
export async function fetchPostsOption1() {
  try {
    const dbResponse = await db.query.posts.findMany({
      with: {
        author: true,
        categoryTags: { with: { categoryTag: true } },
      },
    });

    return dbResponse;
  } catch (error) {
    console.error('Error fetching post.', error);
    // handle error...
    return [];
  }
}

It is annoying to access items in response in this shape.
userId and author refer to the same user, effectively duplicating content references despite; one-to-many (one author to many posts).
Similar is true for many-to-many via a join table. The categoryTags is an array of objects which contain a postId, categoryTagId, the categoryTag key and its object value.
// Shape of response from fetchPostsOption1()
[
  {
    "id": 1,
    "userId": 101,
    "title": "The Art of Programming",
    "content": "Programming is both a science and an art. It requires logical thinking and creative problem-solving...",
    "author": {
      "id": 101,
      "username": "codeMaster"
    },
    "categoryTags": [
      {
        "postId": 1,
        "categoryTagId": 201,
        "categoryTag": {
          "id": 201,
          "name": "Technology"
        }
      },
      {
        "postId": 1,
        "categoryTagId": 202,
        "categoryTag": {
          "id": 202,
          "name": "Programming"
        }
      }
    ]
  }
  //   ... other posts
]

Option 2
Explanation: Slightly reduce duplicates with a more complex query.
// To get properly nested data for getting many-to-many data.
export async function fetchPostsOption2() {
  try {
    const dbResponse = await db.query.posts.findMany({
      with: {
        author: true,
        categoryTags: {
          columns: {},
          with: {
            categoryTag: {
              columns: {
                id: true,
                name: true,
              },
            },
          },
        },
      },
    });
    return dbResponse;
  } catch (error) {
    console.error('Error fetching post.', error);
    // handle error
    return [];
  }
}

userId and author still have duplicate content, but the categoryTags is an array of objects which categoryTag key and the object itself. There is no longer a postId, categoryTagId in each of the categoryTags object.
Still annoying to access content in a response of this shape, but reduces references to the join table (removes postId and categoryTagId).
[
  {
    "id": 1,
    "userId": 101,
    "title": "The Art of Programming",
    "content": "Programming is both a science and an art. It requires logical thinking and creative problem-solving...",
    "author": {
      "id": 101,
      "username": "codeMaster"
    },
    "categoryTags": [
      {
        "categoryTag": {
          "id": 201,
          "name": "Technology"
        }
      },
      {
        "categoryTag": {
          "id": 202,
          "name": "Programming"
        }
      }
    ]
  }
  //   ... other posts
]

Option 3
Explanation: Most intuitive response, most complex fetchFunction() which transforms database response and reshapes it with javascript = which is less efficient than getting data from a single database call.
// To get properly nested data for getting many-to-many data.
export async function fetchPostsOption3() {
  try {
    const dbResponse = await db.query.posts.findMany({
      with: {
        author: true,
        categoryTags: { with: { categoryTag: true } },
      },
    });

    // Transform the results to match the desired format
    const transformedResults = dbResponse.map((post) => ({
      ...post,
      categoryTags: post.categoryTags.map((jct) => jct.categoryTag),
    }));
    return transformedResults;
  } catch (error) {
    console.error('Error fetching post.', error);
    // handle error
    return [];
  }
}

The categoryTags is an array of categoryTag objects. There is no longer nested and duplicated references to the categoryTag objects. userId and author still have duplicate content, but could also be fixed with the transform.
Far less annoying to access content in a response of this shape, but less efficient than if response was to be collected from SQL directly. Javascript is reshaping data after getting it from the database.
[
  {
    "id": 1,
    "userId": 101,
    "title": "The Art of Programming",
    "content": "Programming is both a science and an art. It requires logical thinking and creative problem-solving...",
    "author": {
      "id": 101,
      "username": "codeMaster"
    },
    "categoryTags": [
      {
        "id": 201,
        "name": "Technology"
      },
      {
        "id": 202,
        "name": "Programming"
      }
    ]
  }
  //   ... other posts
]

Feature request to fix behaviour.
Suggesting a feature to be able to override the default behavior of drizzle queries that access related tables to avoid duplicate references to the same object. Solutions would provide a "flattened" object.
Using the example schemas above, the ideal response would have the following shape:
[
  {
    "id": 1,
    "author": {
      "id": 101,
      "username": "codeMaster"
    },
    "title": "The Art of Programming",
    "content": "Programming is both a science and an art. It requires logical thinking and creative problem-solving...",
    "categoryTags": [
       {
          "id": 201,
          "name": "Technology"
        }
      {
          "id": 202,
          "name": "Programming"
        }
    ]
  },
      // ...other posts
]

Drizzle team would be better suited to answering this, but some API modification to get data in the shape above would be awesome - ideally straight from the database in one step.

export async function fetchPostsFlatResponse() {
  try {
    const dbResponse = await db.query.posts.findMany({
    //   "flatwith:" instead of "with:"
      flatwith: {
        author: true,
        categoryTags: { with: { categoryTag: true } },
      },
    });
  }
}

I may be overlooking existing solutions or misunderstanding some aspects of Drizzle ORM. If I am mistaken or you have a cleaner approach to this issue, I'd be incredibly grateful if you shared it.
Thank you for your hard work, Drizzle Team!

This issue perfectly outlines what I have been looking for as well. I have been messing with a few ORM's and ergonomically transforming relational queries into a nested presentation seems to be something they all struggle with. Dirzzle ORM is already really good with that. Adding this flatwith functionality would be the cherry on top.

Totally agree with this, I had a hard time to understand what was going on with relations in general for many-to-many.  Some more documentation would be very helpful. Especially since there is no Infer functions in place yet for queries with relations.

Totally agree. This relates to this little discussion.
I'm facing the same challenge, and the array mapping could potentially impact performance. It would definitely be a great enhancement.

Would love to see this!

This exactly addresses the issue I was looking a solution for. Would love to see a flatwith option!


Content object not JSON serializable

Description of the bug:
When attempting to use the Content object in API request/response there is an error that the object is not JSON serializable.
I have created a small example API so the issue can easily be reproduced. The README has instructions for running the API and how to reproduce the issue.
github.com/douglaslwatts/gemini_bug_example_api
Actual vs expected behavior:
Expected Behavior: The list[Content] history would be successfully serialized for the request/response bodies
Actual Behavior: We get the below error
[2024-03-22 09:04:03,805] ERROR in app: Exception on /api/v1/chat-message [POST]
Traceback (most recent call last):
  File ".pyenv/versions/3.12.2/lib/python3.12/site-packages/flask/app.py", line 1463, in wsgi_app
    response = self.full_dispatch_request()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ".pyenv/versions/3.12.2/lib/python3.12/site-packages/flask/app.py", line 873, in full_dispatch_request
    return self.finalize_request(rv)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File ".pyenv/versions/3.12.2/lib/python3.12/site-packages/flask/app.py", line 892, in finalize_request
    response = self.make_response(rv)
               ^^^^^^^^^^^^^^^^^^^^^^
  File ".pyenv/versions/3.12.2/lib/python3.12/site-packages/flask/app.py", line 1183, in make_response
    rv = self.json.response(rv)
         ^^^^^^^^^^^^^^^^^^^^^^
  File ".pyenv/versions/3.12.2/lib/python3.12/site-packages/flask/json/provider.py", line 214, in response
    f"{self.dumps(obj, **dump_args)}
", mimetype=self.mimetype
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ".pyenv/versions/3.12.2/lib/python3.12/site-packages/flask/json/provider.py", line 179, in dumps
    return json.dumps(obj, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File ".pyenv/versions/3.12.2/lib/python3.12/json__init__.py", line 238, in dumps
    **kw).encode(obj)
          ^^^^^^^^^^^
  File ".pyenv/versions/3.12.2/lib/python3.12/json/encoder.py", line 200, in encode
    chunks = self.iterencode(o, _one_shot=True)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ".pyenv/versions/3.12.2/lib/python3.12/json/encoder.py", line 258, in iterencode
    return _iterencode(o, 0)
           ^^^^^^^^^^^^^^^^^
  File ".pyenv/versions/3.12.2/lib/python3.12/site-packages/flask/json/provider.py", line 121, in _default
    raise TypeError(f"Object of type {type(o).__name__} is not JSON serializable")
TypeError: Object of type Content is not JSON serializable
<IP_ADDRESS> - - [22/Mar/2024 09:04:03] "POST /api/v1/chat-message HTTP/1.1" 500 -

Any other information you'd like to share?
When using the chat-bison models, we can return the chat session history in the response body, and accept it in the request body with success using a list of ChatMessage, which is the history data structure used for those models. However, when we try this using Gemini, there is an error stating that the Content object, which is the history data structure for Gemini models, is not JSON serializable.
The intention is that the caller is another application and the chat history is stored/managed there. If any further conversation with the chat history is needed, then that history can be passed in subsequent requests. This is working in a real world application using the chat-bison 32K model but the plan is to change over to using the Gemini Pro model.

I had to store the Content object in my database.
A quick hack I did was to use jsonpickle to serialize the object into JSON.

I have found that this custom field serializer on the response model is a workaround that allows returning a usable response.
    @field_serializer('history')
    def serialize_history(self, history: list[Content], _info):
        return [
            {
                'role': hist.role,
                'parts': [
                    {
                        'text': part.text
                    }
                    for part in hist.parts
                ]
            }
            for hist in history
        ]

However, it does not work for the request model. I have not yet come up with a custom field serializer that is a workaround for that. It would still be best if the Content and Part objects were themselves JSON serializable, so a workaround would not be needed, and Pydantic could handle them as it does the ChatMessage object that is used for the history with the Chat Bison models.

Depending on what your goals, this custom serializer may be a little cleaner.
    @field_serializer('history')
    def serialize_history(self, history: list[Content]):
        return [x.to_dict() for x in history]


Fix late init of SecurityGroupRule with self: true

Description of your changes
Add late init to self and source_security_group_id
Fixes #228
Signed-off-by: Yury Tsarev<EMAIL_ADDRESS>I have:

[x] Run make reviewable test to ensure this PR is ready for review.

How has this code been tested
k apply -f examples/ec2/securitygrouprule-self-true.yaml

k get managed
NAME                                        READY   SYNCED   EXTERNAL-NAME          AGE
securitygroup.ec2.aws.upbound.io/test-vpc   True    True     sg-00c2b14d55b3da787   10m

NAME                                READY   SYNCED   EXTERNAL-NAME           AGE
vpc.ec2.aws.upbound.io/sample-vpc   True    True     vpc-0f8da654a40cb68cb   10m

NAME                                                          READY   SYNCED   EXTERNAL-NAME       AGE
securitygrouprule.ec2.aws.upbound.io/test-vpc-securitygroup   True    True     sgrule-2687506433   10m

/test-examples="examples/ec2/securitygrouprule-self-true.yaml"


Endorsement Policies Documentation needs explainanation

The default documentation mentioned for endorsement-policies, does not work.
As the samples only use Org1MSP or Org2MSP, all the examples state "AND('Org1.peer', 'Org2.peer')". These don't work on the test network.

@denyeart, Could I pick this issue?

@denyeart,
I've added the intended changes to a PR, but somehow the unit tests are failing. I've just changed the doc file so Ideally this should not happen. Could you help me in resolving this?

Thanks @rajat-dlt  The unit test failures occur randomly, not related to the doc. I've merged the PR.


[BUG] Token discovery not working properly

Describe the bug
The token discovery feature is not working properly under various circumstances:

When vault is imported, ETH tokens doesn't get auto discovered. It is needed to remove ETH and add it again to discover some tokens but will still not discover consistently all tokens.
BSC discovers some token (TWT for me, without balance) but not the actually tokens with balances.

Expected behavior
tokens get discovered correctly and consistently
-all devices version 35

Should be fixed together with #750


Missing items in TOC

Thank you for this great tool, it is very useful.
When generating a TOC for https://github.com/brunofacca/zen-rails-security-checklist/blob/master/README.md,  the "Output Escaping & Sanitization" and "File Downloads" are omitted. Seems to be a bug.

As it turns out, this is a feature, not a bug. There's a flag that controls the maximum number of levels to include in the Table of Contents. It's set to 4 levels by default.
For more information:
https://github.com/thlorenz/doctoc#specifying-a-maximum-heading-level-for-toc-entries

I don't think that was the problem. The "File Uploads" and "File Downloads" items are on the same level and only the former was included in the DOC. Same happened with the other two items ("Handling User Input" and "Output Escaping & Sanitization"), they are on the same level and only the first appears in the TOC.

The next problem is that your Markdown is poorly formatted. Be sure to put newlines above your ATX-style (###) style headings.
Behavior around ATX-style headings varies from parser to parser. For example, you're allowed to have no leading newline using GitHub's Markdown parser, but not the Markdown parser we're using.

(Not sure which text editor you use, but vim-pandoc-syntax highlights this inconsistency for me so that I get a fore-warning that undefined behavior might ensure).

The absence of newlines above the ATX-style (###) style headings was the problem.
I will try vim-pandoc-syntax.
Thank you!


Fix failing phpunit test

Currently phpunit fails as the phptd directory does not exists in this projects.

Thank you


Support impersonate credentials

Hi there! 👋
I've implemented the support for impersonating users, but since I'm new to Rust, I'm facing some difficulties in making the sub parameter optional. Could anyone provide me with some suggestions on how to achieve this? I already looked at implementing a set_subject mutator, but that didn't work out, as the create_token_source calls the token() function directly..
What is best practice? Thank you in advance!

What errors are you facing? It would be helpful if you could post a stack trace.

What errors are you facing? It would be helpful if you could post a stack trace.

I am not facing errors at the moment. However, my implementation is not backwards compatible as one needs to define a sub in the Config. I asked around at noticed that backwards compatibility is very difficult to support in Rust.
What are your views on that? If it is not a problem to you, then the PR is ready to be merged.

Backward compatibility is not possible because the current Config has exposed fields.
It would have been possible if Config's fields were private scoped and implemented to provide new methods, setter/getter, etc.

Please run cargo fmt to fix CI

Backward compatibility is not possible because the current Config has exposed fields.
It would have been possible if Config's fields were private scoped and implemented to provide new methods, setter/getter, builder patterns, #[non_exhaustive] etc.

Please fix CI by cargo clippy --fix.

The current CI error will be resolved if you implement this correction.

The current CI error will be resolved if you implement this correction.

I have made the changes again.
I do however get warnings when I run cargo clippy --fix:
error[E0433]: failed to resolve: use of undeclared crate or module `google_cloud_gax`
   --> default/src/lib.rs:176:9
    |
176 |     use google_cloud_gax::conn::Environment;
    |         ^^^^^^^^^^^^^^^^ use of undeclared crate or module `google_cloud_gax`
    |
help: there is a crate or module with a similar name
    |
176 |     use google_cloud_auth::conn::Environment;
    |         ~~~~~~~~~~~~~~~~~

error[E0433]: failed to resolve: use of undeclared crate or module `google_cloud_spanner`
   --> default/src/lib.rs:182:22
    |
182 |         let config = google_cloud_spanner::client::ClientConfig::default()
    |                      ^^^^^^^^^^^^^^^^^^^^ use of undeclared crate or module `google_cloud_spanner`
    |
help: there is a crate or module with a similar name
    |
182 |         let config = google_cloud_auth::client::ClientConfig::default()
    |                      ~~~~~~~~~~~~~~~~~

error[E0433]: failed to resolve: use of undeclared crate or module `google_cloud_pubsub`
   --> default/src/lib.rs:193:22
    |
193 |         let config = google_cloud_pubsub::client::ClientConfig::default()
    |                      ^^^^^^^^^^^^^^^^^^^ use of undeclared crate or module `google_cloud_pubsub`
    |
help: there is a crate or module with a similar name
    |
193 |         let config = google_cloud_auth::client::ClientConfig::default()
    |                      ~~~~~~~~~~~~~~~~~

error[E0433]: failed to resolve: use of undeclared crate or module `google_cloud_storage`
   --> default/src/lib.rs:204:22
    |
204 |         let config = google_cloud_storage::client::ClientConfig::default()
    |                      ^^^^^^^^^^^^^^^^^^^^ use of undeclared crate or module `google_cloud_storage`

warning: unused import: `crate::WithAuthExt`
   --> default/src/lib.rs:178:9
    |
178 |     use crate::WithAuthExt;
    |         ^^^^^^^^^^^^^^^^^^
    |
    = note: `#[warn(unused_imports)]` on by default

For more information about this error, try `rustc --explain E0433`.
warning: `google-cloud-default` (lib test) generated 1 warning
error: could not compile `google-cloud-default` due to 4 previous errors; 1 warning emitted
warning: build failed, waiting for other jobs to finish...

You need to specify the features
cd default && cargo clippy --fix  --features=spanner,pubsub,storage

You need to specify the features.
cd default && cargo clippy --fix  --features=spanner,pubsub,storage

Thanks!


call Polymer.flush in 2.x

fixes #33

Did a small unscientific test.
Opened new tab, clicked through all purchase views.
Without Polymer.flush:

With Polymer.flush:


restart peripheral service causes crash

in my business solution

don't advertise til app is detected (scan)
the UUID text means something (advertise)
given an additional sensor triggers, change the advertised UUID

on ArduinoBLE and ESP32 BLE I have to basically destroy all the setup
undo the service , and characteristics, and server
and rebuild them.
issues

BLEservice->start(), doesn't have a stop().
BLEserver doesn't  have a delete

changed
14:17:09.729 -> new service string=32179901-27b9-42f0-82aa-2e951747bbf9
14:17:09.729 -> after UUID create
14:17:09.729 -> add service
14:17:09.729 -> ble server
14:17:09.729 -> after server create
14:17:09.729 -> config as string={"config":{"gender":3,"type":2,"subtype":"99","sequence":23,"td":227,"UWBSerial":"12345678"}}
14:17:09.729 -> config length=93
14:17:09.729 -> after characteristic setCallbacks
14:17:09.729 -> after service start
14:17:09.766 -> after advertising setup
14:17:09.766 -> restart advertising after resetup
14:17:09.766 -> Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
14:17:09.766 ->
14:17:09.766 -> Core  1 register dump:
14:17:09.766 -> PC      : 0x400dc86c  PS      : 0x00060230  A0      : 0x800dcb52  A1      : 0x3ffc8ce0
14:17:09.766 -> A2      : 0x00000020  A3      : 0x00000000  A4      : 0x3ffcda58  A5      : 0x3ffcd780
14:17:09.797 -> A6      : 0x00000001  A7      : 0x00000000  A8      : 0x00000020  A9      : 0x3ffcd770
14:17:09.797 -> A10     : 0x3ffcda68  A11     : 0x00000008  A12     : 0x00000000  A13     : 0xffffffff
14:17:09.797 -> A14     : 0x400dc630  A15     : 0x00000000  SAR     : 0x0000001a  EXCCAUSE: 0x0000001c
14:17:09.797 -> EXCVADDR: 0x00000020  LBEG    : 0x40090c2d  LEND    : 0x40090c3d  LCOUNT  : 0xfffffff7
14:17:09.797 ->
14:17:09.797 ->
14:17:09.797 -> Backtrace: 0x400dc869:0x3ffc8ce0 0x400dcb4f:0x3ffc8d60 0x400d562b:0x3ffc8d90 0x400d3d56:0x3ffc8dd0 0x400d4abc:0x3ffc8e00 0x400d2fcf:0x3ffc8e20 0x400e86f1:0x3ffc8ec0

the code at time to change UUID
#ifdef ESP32
          BLEDevice::stopAdvertising();
          pAdvertising->removeServiceUUID(ourService->getUUID()); // will be added back by setupService()
          pBLEScanner->stop();
          #if USE_NIMBLE == 0
              ourService->stop();  // not available in Nimble
          #endif
          delete ourService;
          #if USE_NIMBLE == 0
            delete pServer;        // no delete on server in Nimble
          #endif
          pServer=NULL;   // force new create (now 2?)
          setupService();
          Serial.println("restart advertising after resetup");
          BLEDevice::startAdvertising();    // <-  crash here
          Serial.println("after restart advertising after resetup");
          advertising=true;

from the setupservice function
Serial.println("add service");
  #ifdef ESP32
    if(pServer == NULL){
      pServer = BLEDevice::createServer();
    }
    Serial.println("after server create");
    ourService = pServer->createService(buffer);
  #else
    ourService= new BLEService(buffer); // BLE LED Service
  #endif

#ifdef ESP32
  LEDCharacteristic= ourService->createCharacteristic(
                      "9A61",
#if USE_NIMBLE
                     NIMBLE_PROPERTY::WRITE
#else
                      BLECharacteristic::PROPERTY_WRITE
#endif
                    );
  LEDCharacteristic->setCallbacks(new MyCallbacks());
#else
  LEDCharacteristic=new BLEByteCharacteristic("9A61", BLEWrite);
  ourService->addCharacteristic(*LEDCharacteristic);
#endif

  String jsonString = JSON.stringify(configInfo);
  Serial.print("config as string=");
  Serial.println(jsonString);

 Serial.print("config length=");
 Serial.println(jsonString.length());
#ifdef ESP32
 configCharacteristic= ourService->createCharacteristic(
                      "9AFF",
#if USE_NIMBLE
                      NIMBLE_PROPERTY::READ |
                      NIMBLE_PROPERTY::WRITE
#else
                      BLECharacteristic::PROPERTY_WRITE  |
                      BLECharacteristic::PROPERTY_READ
#endif
                    );
  configCharacteristic->setCallbacks(new MyCallbacks());
   Serial.println("after characteristic setCallbacks ");
  ourService->start();            .
  Serial.println("after service start");
#else
  configCharacteristic =  new BLEStringCharacteristic("9AFF", BLERead|BLEWrite, jsonString.length());
  configCharacteristic->setEventHandler(BLERead, configCharacteristicRead);
  configCharacteristic->setValue(jsonString);
  ourService->addCharacteristic(*configCharacteristic);
#endif

#ifdef ESP32
  if(pAdvertising == null){  // 1st time
     pAdvertising = BLEDevice::getAdvertising();
     pAdvertising->setScanResponse(true);
  }
  pAdvertising->addServiceUUID(ourService->getUUID());  // was removed before second call
#else
  BLE.setAdvertisedService(*ourService);
  BLE.addService(*ourService);
#endif

include setup
#ifdef ESP32
  #define USE_NIMBLE 1
  #if USE_NIMBLE
    #include <NimBLEDevice.h>
  #else
    #include <BLEDevice.h>
    #include <BLEServer.h>
    #include <BLEUtils.h>
    #include <BLEScan.h>
    #include <BLEAdvertisedDevice.h>
  #endif
#else
  #include <ArduinoBLE.h>
#endif

no matter what I do, the client still sees bot services advertised
in setup
// create and save a service instance
 activeService[index]= pServer->createService(ServiceUUID->c_str());  // <--- creating new service, on new server() instance
 // but remove it from the server
  pServer->removeService( activeService[index],true);

and then
if(index==0){    // thru the loop on 1st or last time, 0-->2, or 2--->0
    #ifdef ESP32
      if (pAdvertising == null) {
        pAdvertising = BLEDevice::getAdvertising(); // init the advertising pointer
        pAdvertising->setScanResponse(true); // set scan response (one time)
      }
      pAdvertising->addServiceUUID(activeService[index]->getUUID()); add this uuid to the adverting data... (but its supposedly not added to the server

then at runtime, on the switch
     int trigger - = !status;   // get the inverse of curent status (0 or 1 toggle)
     pAdvertising->removeServiceUUID(activeService[trigger]->getUUID());  // remove it from advertising
      pServer->removeService(activeService[trigger],true);   // remove it from server, delete, not just hidden
      pServer->addService(activeService[status]);   // add the other service
      pAdvertising->addServiceUUID(activeService[status]->getUUID()); // add it to advertising
      pAdvertising->start();  // and start advertising...

client ble characteristic discover
{
  "status": "discovered",
  "services": [
    {
      "characteristics": [
        {
          "descriptors": [],
          "properties": {
            "write": true
          },
          "uuid": "9A61"
        },
        {
          "descriptors": [],
          "properties": {
            "write": true
          },
          "uuid": "9A62"
        },
        {
          "descriptors": [],
          "properties": {
            "write": true,
            "read": true
          },
          "uuid": "9AFF"
        },
        {
          "descriptors": [
            {
              "uuid": "2902"
            }
          ],
          "properties": {
            "notify": true,
            "read": true
          },
          "uuid": "2A05"
        },
        {
          "descriptors": [],
          "properties": {
            "read": true
          },
          "uuid": "9A63"
        }
      ],
      "uuid": "11050011-27B9-42F0-82AA-2E951747BBF9"
    },
    {
      "characteristics": [
        {
          "descriptors": [],
          "properties": {
            "write": true
          },
          "uuid": "9A61"
        },
        {
          "descriptors": [],
          "properties": {
            "write": true
          },
          "uuid": "9A62"
        },
        {
          "descriptors": [],
          "properties": {
            "write": true,
            "read": true
          },
          "uuid": "9AFF"
        },
        {
          "descriptors": [],
          "properties": {
            "notify": true,
            "read": true
          },
          "uuid": "2A05"
        },
        {
          "descriptors": [],
          "properties": {
            "read": true
          },
          "uuid": "9A63"
        }
      ],
      "uuid": "11050001-27B9-42F0-82AA-2E951747BBF9"
    }
  ],
  "name": "c8:f0:9e:75:1a:26",
  "address": "97CAB758-A70B-9867-D2D5-4C678EF5BD1D"
}

no need to delete/recreate


Windows/Client Management: Note format adjustment

as per the user report #8242 , so I removed the download link  and added an explanation.

The page URL has recently become available again, with slightly different phrasing, referring to itself being an archived version.
Please check out the download page for Network Monitor, https://www.microsoft.com/en-us/download/details.aspx?id=4865 .
If the page will remain available like this for an extended period of time, we may want to close this pull request.

https://www.microsoft.com/en-us/download/details.aspx?id=4865

Collect data using Network Monitor
In this topic, you will learn how to use Microsoft Network Monitor 3.4, which is a tool for capturing network traffic.

[!NOTE]
Network Monitor is the archived protocol analyzer and is no longer under development. Microsoft Message Analyzer is the replacement for Network Monitor. For more details, see Microsoft Message Analyzer Operating Guide.

To get started, download and run NM34_x64.exe. When you install Network Monitor, it installs its driver and hooks it to all the network adapters installed on the device. You can see the same on the adapter properties, as shown in the following image.

When the driver gets hooked to the network interface card (NIC) during installation, the NIC is reinitialized, which might cause a brief network glitch.

Very good. Thank you again for the follow-up.
Would you be able to rename the PR title to something like the following?
Windows/Client Management: Note format adjustment

@JohanFreelancer9 Copy editing is needed for this PR. Thanks.

Closing because the download link has became available, and the corresponding issue had been closed.

@e0i : I would like to have this PR re-opened, because the PR has changed to a format typo correction.
(Please note the change in both the PR title and the source content.)

@JohanFreelancer9 Please review and confirm the typo in formatting. Thank you.

@RAJU2529 : Could you also edit your first PR comment to use the following text?
Note blob format typo correction.

@illfated . this request already closed .

Thank you for the feedback, but it has been reopened again. Please notice the green PR symbol (see image below):

@RAJU2529 : So what I am asking for, is that you edit your first PR comment and remove the following text:
[as per the user report #8242 , so I removed the download link and added an explanation.]
and replace it with a text explaining more precisely what is done here, like for example
[Note blob format typo correction.]

(ref. #8282 )


missing blocks to print text on image

Why are adding these blocks? I am trying to limit the number of blocks we add.

We already have blocks for images under "Advanced". We are missing ways to draw text.

Looks like the blocks are messed up a bit:

should be under Images not Image and should have the image they apply to, right?


[Feat]Add Login and Signup Page UI to Enhance User Authentication Flow

Description
Currently, EzyShop lacks a login and signup page, which are essential for securing user accounts and providing a personalized shopping experience. I propose designing and implementing a user-friendly Login and Signup page for the platform. These pages will be styled in accordance with the app's existing design language and include form validation for better user experience.
Proposed Features:

Login Page:

Fields for email/username and password.
A "Forgot Password" link for users who need to reset their credentials.
"Remember Me" checkbox for convenience.
A button to navigate to the signup page if the user doesn't have an account.

Signup Page:

Fields for user details such as name, email, phone number, and password.
Basic form validation to ensure proper inputs (e.g., email format, password strength).
Option for users to agree to the terms and conditions.
A button to navigate to the login page if the user already has an account.

I can handle the frontend part, including HTML, CSS, and JavaScript for form validation and UI enhancements.
Screenshots
No response
Checklist

[X] I have checked the existing issues
[X] I have read the Contributing Guidelines
[X] I'm a GSSoC'24-Extd contributor
[X] I'm a Hacktoberfest'24 contributor
[X] I am willing to work on this issue (optional)

Hey @Blessy-B-Sherin, that's great! We need it, but please wait a while. We will notify you to work on this issue. Actually, someone else is working on that page, so I would ask you to wait for a while; otherwise, a conflict may occur. Hope you understand.

Don't forget to join our official Discord server.
And also follow us on Linkedin
And please ⭐ our repo


undeploy requires disk space

I ran out of disk space trying to install M4D and so then tried to do a make undeploy.
Unfortunately, the first directory it tries to undeploy from is secret-provider, and in secret-provider/deploy/deploy.sh the code is:
kustomize_build() {
local operation=$1
local pass=$2
local TEMP=$(mktemp -d)
cp -r base/* $TEMP
The cp will immediately fail if there is no room left, failing the undeploy.  Is there any reason to copy to $TEMP if we are doing an undeploy?

We have an issue for deleting the secret provider https://github.com/IBM/the-mesh-for-data/issues/432 and we're almost done moving to Helm install instead of kustomize so I would rather not invest here.


[Meta] GA requirements

Task summary
This issue defines the necessary remaining milestones before we're able to start labeling the recorder as a beta product:

[x] Code signing for macOS https://github.com/elastic/synthetics-recorder/pull/238
[ ] Code signing for windows https://github.com/elastic/synthetics-recorder/issues/117
[x] Code signing for Linux https://github.com/elastic/synthetics-recorder/pull/238
[ ] Binary notarization for macOS https://github.com/elastic/synthetics-recorder/issues/51
[x] Windows ~EV~ cert signing https://github.com/elastic/synthetics-recorder/pull/259
[x] Shipping arm64-compatible binary https://github.com/elastic/synthetics-recorder/issues/248
[ ] Delete actions while recording https://github.com/elastic/synthetics-recorder/issues/242
[ ] Recorder download from Elastic domain https://github.com/elastic/uptime/issues/461
[ ] Update Script Recorder to the latest PW version we have in Synthetics
[ ] Define a mechanism for updating PW in the Script Recorder for each stack release

Linked resources
No response
Additional information
No response

I have updated the Windows signing item to completed. AFAIK we are now signing windows binaries and there is no warning when trying to run them. @kyungeunni are you able to confirm?


shell: make object construction less magic?

Problem
In dagger call, the user must express the value of each argument as single string value. In order to support object types (Container, Directory, Service etc), the CLI supports a "magic encoding" of these object types as a string. For example:

A Container type can be encoded as a remote docker image address, for example index.docker.io/alpine:latest
A Directory type can be encoded as either a remote git ref (https://github.com/dagger/dagger#main:docs) or a local directory (./foo/bar)
etc.

Without this feature, dagger call would be simply useless. But, it is far from perfect. It doesn't support all possible values for objects; and the magic can be hard to explain and understand.
Solution
With dagger shell, we have more options:

Pipelines as arguments allow passing any object as argument. This works for core and custom objects
Builtins allow exposing the full power of the core API as shell commands

In short: the dagger shell is expressive enough to no longer need magic encoding. So... maybe we should disable it?

Before
After

dagger call build --source ./frontend
build $(.context ./frontend)

dagger call build --source https://github.com/dagger/dagger
build $(.git https://github.com/dagger/dagger)

dagger call test --db tcp://localhost:4242
test --db $(.tunnel tcp://localhost:4242)

etc

wdyt @helderco ?

I love the simplicity and explicitness 👍, I’m just concerned about the added verbosity. Both work interchangeably right now, so you can already avoid using the flags when working with dagger shell and showing it off in demos. Then see how it feels.