[📚][firebase_auth] sendEmailVerification needs DynamicLinks config to work in ios

I was getting internal-error when calling sendEmailVerification on ios, after a lot of debugging and network inspection I found that the actual error was:
"message": "DYNAMIC_LINK_NOT_ACTIVATED : FDL domain is not configured"

What confused me at first was that in android it worked fine. I'm still trying to understand why is this required for ios but nor for android, and more so, why is this needed for email verification? Also, the firebase console says that DynamicLinks is not recommended anymore so it's even more confusing.

/cc @Lyokone

The same happens for us, where we explicitly did not enable FDL as they are deprecated, and we get the issue on iOS

We have encountered an issue that seems to be a bug. The versions we are using are as follows:
firebase_core: 2.13.1
firebase_auth: 4.6.2

We created a Firebase Dynamic Link in the Firebase Console and can now receive emails. However, the link contained in the email is incorrect. It includes the Firebase Dynamic Link we created as a parameter in the continue URL, as shown below:
https://example.com?mode=verifyEmail&oobCode=XXX&apiKey=XXX&continueUrl=https%3A%2F%2Fexample.page.link%3Flink%3Dhttps%3A%2F%2Fexample.com%2Fverify_email%3FuserUuid%2XXX%3Dcom.example%26ifl%3Dhttps%3A%2F%2Fexample.com%2Fverify_email%3FuserUuid%2&lang=ja

Additionally, the link changes when we toggle the 'handleCodeInApp' option in 'ActionCodeSettings'. In the link provided above, 'handleCodeInApp' is set to 'false'. When it is toggled to 'true', the link changes to the format shown below:
https://example.page.link?link=https://example.com?apiKey%3%26mode%3DverifyEmail%26oobCode%3%26continueUrl%3Dhttps://example.com?userUuid%2XXX%26lang%3Dja&ibi=com.example&ifl=https://example.com?apiKey%3XXX%26mode%3DverifyEmail%26oobCode%3XXX%26continueUrl%3Dhttps://example.com?userUuid%2XXX%26lang%3Dja

Closing this in favor of this #12666.


Publish should be idempotent

If I publish the same version of the same artefact twice, the publish should succeed if the artefact is the same.
Currently, if I publish the same version of the same artefact twice, the publish fails with {"message":"Unable to upload files: An artifact with the path XXXXX already exists"}

I don't think this is worth it and should be closed. If you're attempting to release with the same version an artifact, then it's really the user's problem.

agree

Closing as per discussion.


Doc in NAS directory traversal

Checklist

[X] I have filled out the template to the best of my ability.
[X] This only contains 1 feature request (if you have multiple feature requests, open one feature request for each feature request).
[X] This issue is not a duplicate feature request of previous feature requests.

Is your feature request related to a problem? Please describe.
I am getting an error on one of the seaches,
search NAS library "Root \ Music \ Album Artists" for album artist name.
#search:Search = Search(nasSource, nasSourceAccount, SearchTerm("Alex Cuba", SearchFilterTypes.Artist), containerItem=containerAlbumArtists)
#print("\nSearching Container: '%s' ..." % search.ContainerTitle)
#results:SearchResponse = client.SearchMusicLibrary(search)
#for navItem in results:
#    print("- %s (%s)" % (navItem.Name, navItem.ContentItem.Location))
Describe the solution you'd like
Is there some documentation that describes the logic? You mentioned in the code that your NAS library is setup as the following
the following shows how to traverse the structure of a NAS Music Library.
# in this example, my NAS Music Library has the following containers defined:
# - Root container
# -- Music
# ---- Albums
# ------ Welcome to the New
# ------ ... and more (albums from other artists)
# ---- ... and more (Album Artists, All Artists, All Music, Composers, Genre, etc)
# -- ... and more (Pictures, PlayLists, Videos)

Where do you find this information? I am using Twonky as a DLNA for SoundTouch
Describe alternatives you've considered
I looked through the code
Additional context
none

This is the error returned
Searching Container: 'Album Artists [107], for "Alex Cuba"' ...
SoundTouchError: "BST1002E - 'SoundTouch 10': SoundTouch Web-services API returned an error status: 'search through container failed.  Error=Server did not respond'", code="1607", name="STORED_MUSIC_SERVER_NO_RESPONSE", severity="Unknown"
** Exception: SoundTouchError: "BST1002E - 'SoundTouch 10': SoundTouch Web-services API returned an error status: 'search through container failed.  Error=Server did not respond'", code="1607", name="STORED_MUSIC_SERVER_NO_RESPONSE", severity="Unknown"

@rksteeves
Apologies for the delay in replying, but it's a busy time of year.
I just want to verify what Bose SoundTouch Music Source you have defined - is it a "Music Library on NAS" (aka. STORED_MUSIC) source?  or is it a "Music Library on Computer" (aka. LOCAL_MUSIC) source?
If it's DLNA, then you will want to define your Twonky DLNA server as a "Music Library on Computer" via the Bose SoundTouch App.
You can use the following to list what is currently defined to your Bose SoundTouch device:
    # create SoundTouch device instance.
    device:SoundTouchDevice = SoundTouchDevice("<IP_ADDRESS>") # Bose SoundTouch - change to YOUR IP address.

    # create SoundTouch client instance from device.
    client:SoundTouchClient = SoundTouchClient(device)

    # get real-time configuration from the device.
    sourceList:SourceList = client.GetSourceList()
    print(sourceList.ToString(True))

Look for the source="LOCAL_MUSIC" sourceAccount="x-x-x-x-x" status="READY" source entry, and make a note of the sourceAccount value.
AS for searching, I have not done much with LOCAL_MUSIC sources; everything I have tested for searches has been done using the STORED_MUSIC service type.
You can get information about the currently playing content by issuing the following in a browser:
http://<IP_ADDRESS>:8090/nowPlaying
then take a look at the <ContentItem> value.
Hope it helps.

To answer your question, yes, the music library is STORED_MUSIC and the library is defined via BoseSoundTouch
Since my original post, I have been able to solve the Artist Album Search. However, I still have a question. In your sample SearchMusicLibrary, you have the following defined
containerAlbumArtists:NavigateItem = NavigateItem(nasSource, nasSourceAccount, "Album Artists", "dir", location="107")
containerAlbums:NavigateItem = NavigateItem(nasSource, nasSourceAccount, "Albums", "dir", location="7")
containerAllArtists:NavigateItem = NavigateItem(nasSource, nasSourceAccount, "All Artists", "dir", location="6")
containerAllMusic:NavigateItem = NavigateItem(nasSource, nasSourceAccount, "All Music", "dir", location="4")
containerMusicPlaylists:NavigateItem = NavigateItem(nasSource, nasSourceAccount, "Music Playlists", "dir", location="F")
The location worked for all but the AlbumArtists. Through trial and error I changed the location for AlbumArtist form 107 to 10 and got results. Where do these location values come from, I could not find a source.
Finally, your API is a great help, I have tried in the past to access the Bose SoundTouch from python and was able to use urls's and music presets, but had not been able to access all of the STORED_MUSIC as I could not find any documentation on that. Where did you find the documentation to access the STORED_MUSIC.
As it turns out I am mostly using the functionality of GetMusicLibrary directory traversal. Specifically for things like Artist Album I want all albums for an artist and the directory traversal seems to work for that

@rksteeves
I discovered a LOT of the functionality due to trial and error, Wireshark network traces, and using PostMan to generate requests / process responses.  There is also the official SoundTouch Web Services guide, which is just a very small portion of the functions the SoundTouch Web API provides.
I put together a SoundTouch Webservices API reference document that describes the known Bose SoundTouch Webservices API endpoints, as well as provides examples on how to call them and the results they return. It is a much more complete "document" than the official Bose documentation.
As to the library location id's ... Take a look at the GetMusicLibraryItems method docs for how to obtain the location values for the various nodes.  Note that these should remain static on your system, and do not change often for the upper tier items (e.g. Albums, All Artists, etc).  They can also be different than what is in my sample code, which is probably why you can't resolve the "Album Artists" node.
Here is some Python sample code from the docs on how to retrieve the node locations id's.
from bosesoundtouchapi import *
from bosesoundtouchapi.models import *
from bosesoundtouchapi.uri import *

try:

    # create SoundTouch device instance.
    device:SoundTouchDevice = SoundTouchDevice("<IP_ADDRESS>") # Bose SoundTouch 10

    # create SoundTouch client instance from device.
    client:SoundTouchClient = SoundTouchClient(device)

    # the following shows how to traverse the structure of a NAS Music Library.
    # in this example, my NAS Music Library has the following containers defined:
    # - Root container
    # -- Music
    # ---- Albums
    # ------ Welcome to the New
    # ------ ... and more (albums from other artists)
    # ---- ... and more (Album Artists, All Artists, All Music, Composers, Genre, etc)
    # -- ... and more (Pictures, PlayLists, Videos)

    # set NAS library source to access.
    nasSource:str = SoundTouchSources.STORED_MUSIC.value
    nasSourceAccount:str = "d09708a1-5953-44bc-a413-7d516e04b819/0"
    navItem:NavigateItem = None
...
    # the following examples show how to navigate your library starting at the root container,
    # and work your way down to a specific album container.

    # get NAS library content - Root container.
    criteria:Navigate = Navigate(nasSource, nasSourceAccount)
    print("\nNavigating Container: '%s' ..." % criteria.ContainerTitle)
    rootContainer:NavigateResponse = client.GetMusicLibraryItems(criteria)
    for navItem in rootContainer:
        print("- %s (%s)" % (navItem.Name, navItem.ContentItem.Location))

    # get NAS library content - Root \ Music container.
    criteria:Navigate = Navigate(nasSource, nasSourceAccount, rootContainer.GetItemByName("Music"))
    print("\nNavigating Container: '%s' ..." % criteria.ContainerTitle)
    musicContainer:NavigateResponse = client.GetMusicLibraryItems(criteria)
    for navItem in musicContainer:
        print("- %s (%s)" % (navItem.Name, navItem.ContentItem.Location))

    # get NAS library content - Root \ Music \ Albums container.
    criteria:Navigate = Navigate(nasSource, nasSourceAccount, musicContainer.GetItemByName("Albums"))
    print("\nNavigating Container: '%s' ..." % criteria.ContainerTitle)
    albumsContainer:NavigateResponse = client.GetMusicLibraryItems(criteria)
    for navItem in albumsContainer:
        print("- %s (%s)" % (navItem.Name, navItem.ContentItem.Location))

    # get NAS library content - Root \ Music \ Albums \ "Welcome to the New" album container.
    criteria:Navigate = Navigate(nasSource, nasSourceAccount, albumsContainer.GetItemByName("Welcome to the New"))
    print("\nNavigating Container: '%s' ..." % criteria.ContainerTitle)
    tracksContainer:NavigateResponse = client.GetMusicLibraryItems(criteria)
    for navItem in tracksContainer:
        print("- %s (%s)" % (navItem.Name, navItem.ContentItem.Location))

    # sort the results (in place) by Name, ascending order.
    tracksContainer.Items.sort(key=lambda x: (x.ContentItem.Name or "").lower(), reverse=True)
    print("\nList sorted by Name descending:")
    for navItem in tracksContainer:
        print("- %s (%s)" % (navItem.Name, navItem.ContentItem.Location))

except Exception as ex:

    print("** Exception: %s" % str(ex))

Hope it helps!

Yes, I ran the GetMusicLibrryItems, but the locations dont seem to have any relationship with what seemed to work with the search library. This is the ouput from GetMusic..
Navigating Container: 'Music [0$1]' ...

Album (0$1$12)
All Tracks (0$1$8)
Artist (0$1$11)
Artist Index (0$1$15)
Artist/Album (0$1$16)
By Folder (0$1$13)
Composer (0$1$19)
Genre/Album (0$1$17)
Genre/Artist/Album (0$1$18)
Genre/Song (0$1$10)
Personal rating (0$1$14)
Playlists (0$1$9)

These seemed to have worked:
containerAlbumArtists:NavigateItem = NavigateItem(nasSource, nasSourceAccount, "Album Artists", "dir", location="10")
containerAlbums:NavigateItem = NavigateItem(nasSource, nasSourceAccount, "Albums", "dir", location="7")
containerAllArtists:NavigateItem = NavigateItem(nasSource, nasSourceAccount, "All Artists", "dir", location="6")
containerAllMusic:NavigateItem = NavigateItem(nasSource, nasSourceAccount, "All Music", "dir", location="4")
containerMusicPlaylists:NavigateItem = NavigateItem(nasSource, nasSourceAccount, "Music Playlists", "dir", location="F")
Thanks for the Web services doc, it is infinitely better than the Bose version

Here's what I get when I run the GetMusicLibraryItems sample code.  Note that I use the NavigateResponse \ NavigateItem \ Location value for the location number.
    Navigating Container: 'Root [0]' ...
    NavigateResponse: Source="STORED_MUSIC" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" SourceTitle="THLUCASI9: NAS Library THLUCASI9:" TotalItems="4"
    (4 items)
    - NavigateItem: Name="Music" Type="dir" ContentItem: Name="Music" Source="STORED_MUSIC" Location="1" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="0" ContentItem: Name="d09708a1-5953-44bc-a413-7d516e04b819/0" Source="STORED_MUSIC" Location="0" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="Pictures" Type="dir" ContentItem: Name="Pictures" Source="STORED_MUSIC" Location="3" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="1" ContentItem: Name="d09708a1-5953-44bc-a413-7d516e04b819/0" Source="STORED_MUSIC" Location="0" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="Playlists" Type="dir" ContentItem: Name="Playlists" Source="STORED_MUSIC" Location="12" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="2" ContentItem: Name="d09708a1-5953-44bc-a413-7d516e04b819/0" Source="STORED_MUSIC" Location="0" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="Videos" Type="dir" ContentItem: Name="Videos" Source="STORED_MUSIC" Location="2" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="3" ContentItem: Name="d09708a1-5953-44bc-a413-7d516e04b819/0" Source="STORED_MUSIC" Location="0" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"

    Navigating Container: 'Music [1]' ...
    NavigateResponse: Source="STORED_MUSIC" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" SourceTitle="THLUCASI9: NAS Library THLUCASI9:" TotalItems="10"
    (10 items)
    - NavigateItem: Name="Album Artists" Type="dir" ContentItem: Name="Album Artists" Source="STORED_MUSIC" Location="107" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="0" ContentItem: Name="Music" Source="STORED_MUSIC" Location="1" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="Albums" Type="dir" ContentItem: Name="Albums" Source="STORED_MUSIC" Location="7" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="1" ContentItem: Name="Music" Source="STORED_MUSIC" Location="1" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="All Artists" Type="dir" ContentItem: Name="All Artists" Source="STORED_MUSIC" Location="6" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="2" ContentItem: Name="Music" Source="STORED_MUSIC" Location="1" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="All Music" Type="dir" ContentItem: Name="All Music" Source="STORED_MUSIC" Location="4" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="3" ContentItem: Name="Music" Source="STORED_MUSIC" Location="1" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="Composers" Type="dir" ContentItem: Name="Composers" Source="STORED_MUSIC" Location="108" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="4" ContentItem: Name="Music" Source="STORED_MUSIC" Location="1" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="Contributing Artists" Type="dir" ContentItem: Name="Contributing Artists" Source="STORED_MUSIC" Location="100" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="5" ContentItem: Name="Music" Source="STORED_MUSIC" Location="1" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="Folders" Type="dir" ContentItem: Name="Folders" Source="STORED_MUSIC" Location="14" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="6" ContentItem: Name="Music" Source="STORED_MUSIC" Location="1" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="Genre" Type="dir" ContentItem: Name="Genre" Source="STORED_MUSIC" Location="5" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="7" ContentItem: Name="Music" Source="STORED_MUSIC" Location="1" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="Music Playlists" Type="dir" ContentItem: Name="Music Playlists" Source="STORED_MUSIC" Location="F" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="8" ContentItem: Name="Music" Source="STORED_MUSIC" Location="1" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="Rating" Type="dir" ContentItem: Name="Rating" Source="STORED_MUSIC" Location="101" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="9" ContentItem: Name="Music" Source="STORED_MUSIC" Location="1" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"

    Navigating Container: 'Albums [7]' ...
    NavigateResponse: Source="STORED_MUSIC" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" SourceTitle="THLUCASI9: NAS Library THLUCASI9:" TotalItems="218"
    (218 items)
    - NavigateItem: Name="...Baby One More Time (Deluxe Version)" Type="dir" ContentItem: Name="...Baby One More Time (Deluxe Version)" Source="STORED_MUSIC" Location="7_b07333b9" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="0" ContentItem: Name="Albums" Source="STORED_MUSIC" Location="7" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="[Unknown Album]" Type="dir" ContentItem: Name="[Unknown Album]" Source="STORED_MUSIC" Location="7_6ac4c16a" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="1" ContentItem: Name="Albums" Source="STORED_MUSIC" Location="7" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="100 Best Ballets" Type="dir" ContentItem: Name="100 Best Ballets" Source="STORED_MUSIC" Location="7_bef7ddbd" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="2" ContentItem: Name="Albums" Source="STORED_MUSIC" Location="7" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="101 Christmas Songs" Type="dir" ContentItem: Name="101 Christmas Songs" Source="STORED_MUSIC" Location="7_f01c8cf3" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="3" ContentItem: Name="Albums" Source="STORED_MUSIC" Location="7" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="20th Century Masters (The Christmas Collection)" Type="dir" ContentItem: Name="20th Century Masters (The Christmas Collection)" Source="STORED_MUSIC" Location="7_5a6d291e" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="4" ContentItem: Name="Albums" Source="STORED_MUSIC" Location="7" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="20th Century Masters Christmas" Type="dir" ContentItem: Name="20th Century Masters Christmas" Source="STORED_MUSIC" Location="7_b6dba944" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="5" ContentItem: Name="Albums" Source="STORED_MUSIC" Location="7" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="20th Century Masters Presents" Type="dir" ContentItem: Name="20th Century Masters Presents" Source="STORED_MUSIC" Location="7_7bc02fb4" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="6" ContentItem: Name="Albums" Source="STORED_MUSIC" Location="7" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="50th Anniversary Album" Type="dir" ContentItem: Name="50th Anniversary Album" Source="STORED_MUSIC" Location="7_a100a33" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="7" ContentItem: Name="Albums" Source="STORED_MUSIC" Location="7" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="7" Type="dir" ContentItem: Name="7" Source="STORED_MUSIC" Location="7_1a76a5f8" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="8" ContentItem: Name="Albums" Source="STORED_MUSIC" Location="7" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="A Brad Paisley Christmas" Type="dir" ContentItem: Name="A Brad Paisley Christmas" Source="STORED_MUSIC" Location="7_379776f8" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="9" ContentItem: Name="Albums" Source="STORED_MUSIC" Location="7" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - NavigateItem: Name="A Christmas Album" Type="dir" ContentItem: Name="A Christmas Album" Source="STORED_MUSIC" Location="7_f026847b" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="10" ContentItem: Name="Albums" Source="STORED_MUSIC" Location="7" SourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" IsPresetable="true"
    - Navigat
    ... <truncated>

What do you NavigateItem values look like?

I ran the code in the docs/include/samplecode/SouncTouchClient and my output looks entirely different. This is the output:
Navigating Container: 'Welcome to the New [7_114e8de9]' ...

Debut Video Captures (7_114e8de9$7$12846)
Music (7_114e8de9$7$69)
Samples (7_114e8de9$7$47)
source (7_114e8de9$7$11215)
Video (7_114e8de9$7$90)
oldvid (7_114e8de9$7R1873419 TRACK)
Produce_0 (7_114e8de9$7R1828875 TRACK)
Psychedelic Furs Live Tuesday July 15th 1981 at Toronto's El Macombo (Audio Only) (7_114e8de9$7R1743883 TRACK)
Too Fast To Live Too Young To Die (7_114e8de9$7R1844235 TRACK)

Navigating Container: 'Root [0]' ...

Music (0$1)
Photos (0$2)
Videos (0$3)

Navigating Container: 'Music [0$1]' ...

Album (0$1$12)
All Tracks (0$1$8)
Artist (0$1$11)
Artist Index (0$1$15)
Artist/Album (0$1$16)
By Folder (0$1$13)
Composer (0$1$19)
Genre/Album (0$1$17)
Genre/Artist/Album (0$1$18)
Genre/Song (0$1$10)
Personal rating (0$1$14)
Playlists (0$1$9)

Navigating Container: 'Root [0]' ...

Music (0$1)
Photos (0$2)
Videos (0$3)

Navigating Container: 'Root [0]' ...

Music (0$1)
Photos (0$2)
Videos (0$3)

List sorted by Name descending:

Videos (0$3)
Photos (0$2)
Music (0$1)

Ahhhh - my bad!  I run a little bit different code in my test applications.  Try this (update your Bose IP address and nasSourceAccount value of course):
from bosesoundtouchapi import *
from bosesoundtouchapi.models import *
from bosesoundtouchapi.uri import *

try:

    # create SoundTouch device instance.
    device:SoundTouchDevice = SoundTouchDevice("<IP_ADDRESS>") # Bose SoundTouch 10

    # create SoundTouch client instance from device.
    client:SoundTouchClient = SoundTouchClient(device)

    # the following examples show how to navigate your library starting at the root container,
    # and work your way down to a specific album container.

    # the following shows how to traverse the structure of a NAS Music Library.
    # in this example, my NAS Music Library has the following containers defined:
    # - Root container
    # -- Music
    # ---- Albums
    # ------ Welcome to the New
    # ------ ... and more (albums from other artists)
    # ---- ... and more (Album Artists, All Artists, All Music, Composers, Genre, etc)
    # -- ... and more (Pictures, PlayLists, Videos)

    # set NAS library source to access.
    nasSource:str = SoundTouchSources.STORED_MUSIC.value
    nasSourceAccount:str = "d09708a1-5953-44bc-a413-7d516e04b819/0"

    # the following examples show how to navigate your library starting at the root container,
    # and work your way down to a specific album in the container.

    # get NAS library content - Root container.
    criteria:Navigate = Navigate(nasSource, nasSourceAccount)
    print("\nNavigating Container: '%s' ..." % criteria.ContainerTitle)
    rootContainer:NavigateResponse = client.GetMusicLibraryItems(criteria)
    print(rootContainer.ToString(True))

    # get NAS library content - Root \ Music container.
    criteria:Navigate = Navigate(nasSource, nasSourceAccount, rootContainer.GetItemByName("Music"))
    print("\nNavigating Container: '%s' ..." % criteria.ContainerTitle)
    musicContainer:NavigateResponse = client.GetMusicLibraryItems(criteria)
    print(musicContainer.ToString(True))

    # get NAS library content - Root \ Music \ Albums container.
    criteria:Navigate = Navigate(nasSource, nasSourceAccount, musicContainer.GetItemByName("Albums"))
    print("\nNavigating Container: '%s' ..." % criteria.ContainerTitle)
    albumsContainer:NavigateResponse = client.GetMusicLibraryItems(criteria)
    print(albumsContainer.ToString(True))

    # this example show how to return all tracks for a specific album; it requires that
    # you know the specific name and location of the container as its defined to your library.

    # get NAS library content - static container.
    # the "7_114e8de9" location maps to: Root \ Music \ Albums \ "Welcome to the New" album container.
    # staticContainer:NavigateItem = NavigateItem(nasSource, nasSourceAccount, typeValue="dir", name="Welcome to the New", location="7_114e8de9")
    # criteria:Navigate = Navigate(nasSource, nasSourceAccount, staticContainer)
    # _logsi.LogObject(SILevel.Message, "Navigating Container: '%s'" % criteria.ContainerTitle, criteria, colorValue=SIColors.LightGreen, excludeNonPublic=True)
    # print("\nNavigating Container: '%s' ..." % criteria.ContainerTitle)
    # tracksContainer:NavigateResponse = client.GetMusicLibraryItems(criteria)
    # _logsi.LogObject(SILevel.Message, "Container Results: '%s' (%s Total Items)" % (criteria.ContainerTitle, tracksContainer.TotalItems), tracksContainer, colorValue=SIColors.LightGreen, excludeNonPublic=True)
    # print(tracksContainer.ToString(True))

except Exception as ex:

    print("** Exception: %s" % str(ex))

Thanks, this is what I get. Still seems like odd locations ie music 0$1
Navigating Container: 'Root [0]' ...
NavigateResponse: Source="STORED_MUSIC" SourceAccount="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" SourceTitle="TwonkyMedia [GlebeholmeBack]" TotalItems="3"
(3 items)

NavigateItem: Name="Music" Type="dir" ContentItem: Name="Music" Source="STORED_MUSIC" Location="0$1" SourceAccount="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="0" ContentItem: Name="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" Source="STORED_MUSIC" Location="0" SourceAccount="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" IsPresetable="true"
NavigateItem: Name="Photos" Type="dir" ContentItem: Name="Photos" Source="STORED_MUSIC" Location="0$2" SourceAccount="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="1" ContentItem: Name="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" Source="STORED_MUSIC" Location="0" SourceAccount="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" IsPresetable="true"
NavigateItem: Name="Videos" Type="dir" ContentItem: Name="Videos" Source="STORED_MUSIC" Location="0$3" SourceAccount="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="2" ContentItem: Name="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" Source="STORED_MUSIC" Location="0" SourceAccount="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" IsPresetable="true"

Navigating Container: 'Music [0$1]' ...

NavigateResponse: Source="STORED_MUSIC" SourceAccount="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" SourceTitle="TwonkyMedia [GlebeholmeBack]" TotalItems="3"
(3 items)

NavigateItem: Name="Music" Type="dir" ContentItem: Name="Music" Source="STORED_MUSIC" Location="0$1" SourceAccount="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="0" ContentItem: Name="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" Source="STORED_MUSIC" Location="0" SourceAccount="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" IsPresetable="true"
NavigateItem: Name="Photos" Type="dir" ContentItem: Name="Photos" Source="STORED_MUSIC" Location="0$2" SourceAccount="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="1" ContentItem: Name="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" Source="STORED_MUSIC" Location="0" SourceAccount="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" IsPresetable="true"
NavigateItem: Name="Videos" Type="dir" ContentItem: Name="Videos" Source="STORED_MUSIC" Location="0$3" SourceAccount="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" IsPresetable="true" Playable="1" MediaItemContainer: Offset="2" ContentItem: Name="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" Source="STORED_MUSIC" Location="0" SourceAccount="55076f6e-6b79-1d65-a4eb-00089be29e4b/0" IsPresetable="true"

Posting tip - paste your output between blocks of 3 slanted ticks to properly format and make it more readable.  For example:
```
This is my output
line 2
```
will render in your reply as:
This is my output
line 2

You should be able to use something like this for the "Album Artists":
containerAlbumArtists:NavigateItem = NavigateItem(nasSource, nasSourceAccount, "Album Artists", "dir", location="0$1$16")

I think the location format can differ based on the provider.  In my case, I use TrueNAS for my NAS software which uses a numbered format (e.g. 107); it appears that Twonky uses a different format (e.g. 0$1$16).
You should probably adjust your other NavigateItem location values according as well (e.g. convert the number format to the n$n$... format).
You might also browse to the following url in a desktop browser window to see what the NowPlaying ContentItem \ location value looks like while playing a track from your NAS (adjust IP address accordingly) via the SoundTouch App:
http://<IP_ADDRESS>:8090/nowPlaying

It should look something like this (location="107_695aa0cc_cd2eb7e4"):
<?xml version="1.0" encoding="UTF-8" ?>
<nowPlaying deviceID="5072249B7B1D" source="STORED_MUSIC" sourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0">
    <ContentItem source="STORED_MUSIC" location="107_695aa0cc_cd2eb7e4" sourceAccount="d09708a1-5953-44bc-a413-7d516e04b819/0" isPresetable="true">
        <itemName>Alabama Christmas</itemName>
    </ContentItem>
    <track>Thistlehair The Christmas Bear</track>
    <artist>Alabama</artist>
    <album>Alabama Christmas</album>
    <offset>0</offset>
    <art artImageStatus="IMAGE_PRESENT">http://<IP_ADDRESS>:10243/WMPNSSv4/2050238549/0_MTA3XzY5NWFhMGNjX2NkMmViN2U0LTQzODI.jpg?albumArt=true</art>
    <time total="247">13</time>
    <playStatus>PLAY_STATE</playStatus>
    <shuffleSetting>SHUFFLE_OFF</shuffleSetting>
    <repeatSetting>REPEAT_OFF</repeatSetting>
    <skipPreviousEnabled />
</nowPlaying>

Sorry about the formatting.
Thanks for your help and the documentation!
I will close this off

Now I am curious ... did the containerAlbumArtists:NavigateItem = NavigateItem(nasSource, nasSourceAccount, "Album Artists", "dir", location="0$1$16") work for you?

Yes, It did, I just tried it.
Seems odd it worked with other values. ie the other dirs, I used your location and for the artist album I had an error with 107 and through trial and error found 10 to work?

That’s odd.  I would suggest you use the Twonky location format (e.g. n$n$) values instead of the numbered values.
Glad you have it working.


Include additional error details given by Facebook

In throwFacebookResponseStatusException two parameters are passed along in the thrown error, type and message. Facebook also provides a error_user_msg which is far more descriptive and really aids debugging. Can this additional information be included in the thrown error?

I'll have a look at this...
Here some additional information, how Facebook's error json looks atm.
{
   "error": {
      "message": "Message describing the error",
      "type": "OAuthException",
      "code": 190,
      "error_subcode": 460,
      "error_user_title": "A title",
      "error_user_msg": "A message"
   }
}

message A description of the error intended for the developer.
code An error code, some common values for which are listed below, along with common recovery tactics should you detect them.
error_subcode Used to further classify an error, common values are shown below.
error_user_msg When you encounter this you should show the message directly to the user. It will be correctly translated per the locale of the API request.
error_user_title If you are showing an error dialog, this should be the title of the dialog. Again it will be correctly translated per the locale of the API request.

Thanks!


scipy.cluster.hierarchy.linkage fails silently when supplied a matrix with NaN row and column

When a matrix is supplied to scipy.cluster.hierarchy.linkage(Distance_matrix, method="centroid"), it will mostly fail without any error message, but terminate the Python process with a cryptic exit message, eg. Process finished with exit code -1073740940 (0xC0000374).
In some cases scipy.cluster.hierarchy.linkage will succeed and when obtained linkage matrix is supplied to scipy.cluster.hierarchy.fcluster(Linkage_Matrix, 0.95, criterion='distance'), fcluster will fail with several possible errors: ValueError: Linkage 'Z' contains negative counts., Linkage 'Z' uses the same cluster twice.

Example:
In [3]: import scipy

In [4]: scipy.__version__
Out[4]: '0.17.0.dev0+845e465'

Create a distance matrix with a row and column of nans:
In [5]: from scipy.spatial import distance_matrix

In [6]: np.random.seed(1234)

In [7]: x = np.random.rand(8, 2)

In [8]: d = distance_matrix(x, x)

In [9]: d[:, 2] = np.nan

In [10]: d[2, :] = np.nan

Now crash the python interpreter:
In [11]: from scipy.cluster.hierarchy import linkage

In [12]: linkage(d, method='centroid')
/Users/warren/anaconda/bin/python.app: line 3: 43680 Segmentation fault: 11  /Users/warren/anaconda/python.app/Contents/MacOS/python "$@"

Same crash in scipy version 0.18.0.
Create file linkage_crash.py:
import numpy as np
from scipy.spatial import distance_matrix
from scipy.cluster.hierarchy import linkage

x = np.random.rand(8, 2)
d = distance_matrix(x, x)
d[:, 2] = np.NAN
d[2, :] = np.NAN
linkage(d, method='centroid')

and run it with python -X faulthandler linkage_crash.py. Segfault in hierarchy.py at line 667.
Now change the linkage method to average. Everything fine.
However, if I call linkage through seaborn, it segfaults for method='average'!
import seaborn as sns
import numpy as np

a = np.empty((2, 2))
a[:] = np.NAN
sns.clustermap(a)

Segfault in hierarchy.py at line 665.
So the problem seems to be is somewhere in _hierarchy.pyx, in linkage as well as in nn_chain.

First I want to notice that linkage doesn't work with full distance matrix, only with 1-d condensed distance array or with raw vectors. So if you pass a 2-d array it will treat it like vectors and compute pdist from them.
Will be it sufficient to just check that all values in y are finite? Or does someone expect more sophisticated handling of NAN values?

Oh, indeed, thanks for the hint.
So this works:
import numpy as np
from scipy.spatial import distance_matrix
from scipy.cluster.hierarchy import linkage

x = np.random.rand(6)
x[0] = np.NAN
print(x.shape)
linkage(x, method='centroid')

and this segfaults:
import numpy as np
from scipy.spatial import distance_matrix
from scipy.cluster.hierarchy import linkage

x = np.random.rand(6)
x[:] = np.NAN
print(x.shape)
linkage(x, method='centroid')

Apparently, all elements of the 1-d distance array must be NaN to cause a segfault. I didn't get a segfault if at least one element is not NaN.

At least one issue is here:
https://github.com/scipy/scipy/blob/maintenance/0.18.x/scipy/cluster/_hierarchy.pyx#L836
i.e. in the block
while True:
    x = cluster_chain[chain_length - 1]
    current_min = NPY_INFINITYF

    for i in range(n):
        if size[i] == 0 or x == i:
            continue

        dist = D[condensed_index(n, x, i)]
        if dist < current_min:
            current_min = dist
            y = i

    if chain_length > 1 and y == cluster_chain[chain_length - 2]:
        break

    cluster_chain[chain_length] = y
    chain_length += 1

If dist is always nan then the conditional if dist < current_min is never true, so y never gets set. Then if chain_length > 1 and y == cluster_chain[chain_length - 2] is never true, leading to a segfault.

Yes, that makes sense. An array filled with np.infs segfaults as well.
@nmayorov: I'm not acquainted with clustering, but my intuitive suggestion would be to raise an exception if all entries of y are either np.nan or positive np.inf. There could be some use cases in which y is filled with np.nans, but even then an exception is better than a segfault.

A straightforward and reasonable solution is to allow only finite number.
Say we want to handle NANs somehow. The distances between some points are not defined, how do we perform clustering then? I guess it doesn't make sense to pass distances with NANs to a clustering algorithm and just see what it returns (in case it doesn't crush). On the other hand, I can't think of any reasonable and simple way to handle NANs except removing each point which have a NAN distance to any other point. But it will break the numbering in dendrogram and most likely all algorithm in scipy.cluster.hierarchy will break.
All in all, I suggest to require distances / vectors to contain only finite numbers and raise ValueError otherwise.

Valid points! On the implementation side it would be fairly easy, I can make a pull request.
On the other hand, I still have some reservations about this approach.
First, the current behaviour is that _hierarchy.pyx/nn_chain segfaults only if a list with exactly one np.inf or np.nan element is given and _hierarchy.pyx/linkage segfaults only if a list full of np.infs or np.nans is given. In other cases, they just return NaNs and Infs. I am afraid this change can break a lot of existing code downstream. However, this definitely would force people to think more about their code and be more careful about data they're handling.
Second, the MATLAB implementation of linkage seems to have no problems with non-finite numbers and returning garbage:
>> linkage([Inf, Inf, Inf])
ans =
     2     3   Inf
     1     4   Inf
>> linkage([NaN, NaN, NaN])
ans =
     1     2   NaN
     3     4   NaN

I do not think that one should replicate MATLAB's behaviour, but I suppose they had their reasons to implement it like this.

Fixed in #6507.


Spellings corrected in readme.md file

Changes

correction of spelling in the readme file

These changes aren't necessary.


Put the debugging code in its own VB file and call the code from the Form1_Load event.

I want to do this after 3.0 is released. The benefit of the debugging code being in a separate file is that the MainWindow.vb file can be cleaner and more organized.

I just realized that I wanted to do this after 3.0 was released and I just did it. That's ok because it makes the code cleaner.


Update framework search paths.

This pull request removes entries in Framework Search Paths that reference the Carthage/Build directories.
I'm using Carthage with the --no-build and --use-submodules flags and I'm getting Directory not found warnings when building because of those.
They may be intentional but I suspect they're as a result of http://www.openradar.me/19124221.
In any case, I figured a pull request was the best way to communicate the problem I was having.

That radar isn't exactly the same issue. We're intentionally adding Carthage/Build/* to the framework search paths, because that's needed for Xcode to be able to find our dependencies. Unfortunately, removing those settings breaks the build on my machine.
Can you explain more about how you're trying to use this project so that I have a clearer idea on why this is causing issues for you?

I have a workspace which includes a project with framework targets for Mac and iOS.
By using the --no-build and --use-submodules flags my workflow is the same as using submodules without Carthage; adding projects to my workspace and then linking to them.
I've set up a quick project at https://github.com/paulyoung/ArgoCarthageIssue which also displays these warnings.

@tonyd256 any update?

Hey sorry about that. I deleted that branch and it closed this. I'm going to open this back up as an issue.


Correct pomodoro to pomodoros in README

Fixed with commit https://github.com/PeterBlenessy/pomodoros/commit/0b47552f2bb53de25594933e644d17bb5f066fe3


Customized cameras and physics backtracking

I'm getting a small amount of shakiness when I implement a custom camera
I'm overriding the function at g.camera.updateBeforeEntityRenderSystems
and using
g.ents.setPosition(g.camera.cameraTarget,cameraPos)
I'm thinking that somehow this and physics backtracking don't match.  I'm wondering if there is anything obvious I am doing wrong
Thanks

Hi, yes that definitely sounds like temporal aliasing due to the physics backtracking not lining up with the camera's motion. If you drive your camera by having it tied to a physics entity (which you move around with forces and impulses), I'd guess that should fix it.  But if you want to move the camera arbitrarily by some other logic, you'll need to do your own backtracking similar to this.

Attaching a physics entity worked pretty well.


Duplicate Property Names Error when using BundlerMinifier in Visual Studio

Expected behavior
Using BuildBundlerMinifier (or BuildBundlerMinifierPlus) in Visual Studio and the raw Chart.js available here<EMAIL_ADDRESS>you should be able to bundle and minify Chart.js.
Current behavior
With the unmodified Chart.js file from the above CDN, you get the following errors, specifically due to the Chart.js file (I have removed it and they have disappeared, and also removed one-by-one every other js in the bundle and the errors did not disappear):
Error	0	Implicit property name must be identifier: stackWeight =	shared.min.js	26694
Error	0	Strict-mode does not allow duplicate property names: =	shared.min.js	34889
Error	0	Strict-mode does not allow duplicate property names: =	shared.min.js	32303
Error	0	Strict-mode does not allow duplicate property names: =	shared.min.js	28870
Error	0	Strict-mode does not allow duplicate property names: =	shared.min.js	34809
Error	0	Strict-mode does not allow duplicate property names: =	shared.min.js	34518
Error	0	Strict-mode does not allow duplicate property names: =	shared.min.js	27071
Error	0	Strict-mode does not allow duplicate property names: =	shared.min.js	27071
If you initialize stackWeight outside of line 2043 in Chart.js, and remove "use strict", you still get two errors:
Severity	Code	Description	Project	File	Line	Suppression State
Error	0	Strict-mode does not allow duplicate property names: =	shared.min.js	32303
Error	0	Strict-mode does not allow duplicate property names: =	shared.min.js	28870
Reproducible sample
I can probably upload a barebones VS solution if need be.
Optional extra steps/info to reproduce
No response
Possible solution
I am not a js developer by any means but I think the issue is ESLint related?
Context
Trying to update from Charts 2.9.3, which bundled just fine in Visual Studio using the same tool.
chart.js version
3.7.1
Browser name and version
NA
Link to your project
No response

I'd suggest this is a issue with BundleMinifier. Probably this one (could be others):
https://github.com/madskristensen/BundlerMinifier/issues/581

You're likely right @kurkle . Thanks for linking!


Release/v4.0.6 alpha.1

Before merging this in, could you do a quick rebase with master (Just gets a security fix in too)


[html] provide (auto) rename of tags

VSCode Version: 1.21.1

Description:
In order to rename an HTML/XHTML/XML tag we have to modify tag start, then modify tag end.
Steps to Reproduce:

Disable all visual studio code extensions
Create element:
Hello

Modify tag start: Hello

Modify tag end Hello

Suggestion:
I suggest that when tag start is modified, the corresponding tag end should be automatically modified and vice versa.
Benefits:

Make it easier to avoid typos, especially in XHTML/XML when we modify a custom tag where auto-complete is not available
Avoid scrolling to tag end when element content is very large

You could probably write an extension to do this

It will be better to add it as a feature rather than an extension, especially for new users because when they notice the problem, they will usually think that this is a limitation. Besides, they may not even know that there are extensions available

The extension for this is:
https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-rename-tag

I have used several extension that does this, but I have to say that, neither works as you would expect. Sometimes they work well, sometimes they don't. I think that if VSCode have this integrated, it would deliver a better experience in a more consistent way.

I'd love to see this feature in vscode as well. While there are a few extensions, they are very unreliable. Auto Rename Tag does not work with multi-line tags and tags with dashes (like you'd use for components). So for angular development you might as well not use it at all. It's one of those webstorm features that I really miss in vscode.

Adding an extension for every basic piece of functionality an IDE should already do (e.g., updating start/end HTML tags, or dragging/dropping text, and such) is why I don't use Atom.  I'm surprised I don't have to install an Atom extension to use capital letters!
All kidding aside, this is both an obstacle for new users, and an unnecessary hurdle for developers who already use VS Code.

I agree with @shankarsridhar
Also tag wrapping should be apart of the core of VS Code.

Agree with everyone else, this is so basic and annoying, it shouldn't be left to extensions.

If you use the vim extension, you can enable surrounding and use trigger stroke sequences cstt -> enter tag you want to change -> press <enter>. It will rename the tag while reserve attributes.

@zzdumeng 😨
It's almost faster to rename tags manually 😆

Speaking as a vim user, this is actually incredibly quick and just what I needed. Thanks for saving me the extra package, @zzdumeng!

Just adding my support for this feature....

Please add this! The extension mentioned in this ticket doesn't work properly if at all.

Can't believe its a YEAR and this superduper basic thing is still left wanting... The plugin mentioned indeed does not seem to work properly anymore. Can say about brackets what you will, but at least it had that.

Emmet has edit functions for tags. Click on your tag and using the command panel type update tag. An input box will appear and type your new tag. You can bind this to a shortcut as well. Stop being lazy 🐻

😆 @OogieBoogieInJSON this was never about being lazy, it's about being productive
Simply typing while the closing tag changes automatically to match, is faster than having to press a key combination first, and then type. And this is an action you need to do very often if you work with html :), not just a few times a day.
I think this request is more than fair, especially in lack of a good extension (existing extensions fail me when I have more than a few layers of nested tags, ending up not auto renaming the end tag or renaming the wrong end tag)

@MrCroft I was suggesting an alternative that already comes built in with the editor.

Man, the absence of this feature is frustrating. Should be built-in !

Would it be appropriate to implement this as a rename provider (ie F2 then rename)? Or as an additional text edit when selecting a completion suggestion?

I support this as well. Implement this auto rename tag in vscode. You guys provide so many useless features to vscode in each release. implement something more useful that colors in terminal
Please do not adwise extension "auto rename tag" as it sucks and makes intellisense crush.

@nazarkryp it already exist, look for my previous comment. Anyways, it's very rude saying "so many useless features". If you are not using them it doesn't mean they are useless. You should be more grateful, vscode is not something you are paying for. We are using this piece of software for free while it's being built with the free time and money of others.

@OogieBoogieInJSON My heart stated racing for a bit, when I read "it already exists" :smile:
Unfortunately, it's not what we need: while typing/editing the open tag, the close tag should change accordingly (and vice versa).
I've just realized recently that intelisense doesn't work because of the auto rename tag extension, or if it works it's extremely slow. Simply by guessing, deactivating autorename tag extension 🤦🏻♂
Really hope this will be built in soon, really seems like the type of behavior that should be built in, not through an extension

@OogieBoogieInJSON it doesn't have. Emmet is not what people want as it's not handy at all. I recall similar tickets have been already created.
p.s: do not use my words against me. I'm also part of development community and i appreciate this product. I care about making it better and encourage people to focus on things matter. (in this case each vscode alternative has it. so why we can't have simple auto rename tag in runtime)

I added F2 to rename tag. It's not as good as auto-rename, but it should help a bit.

I'll look into auto-rename.

@octref Thanks! I think this is way better than auto-rename!

@octref Thank you! I love the rename feature so much! In which version will it be released?

@wizcas You should already be able to use it in latest https://code.visualstudio.com/insiders/

Out of consideration for performance, extension compatibility (esp Vim extension and language extensions that would use HTML document), discoverability, usability, here is what I have come down to: auto selecting the matching tag's position. You can opt-out by turning off html.autoSelectingMatchingTags.
Benefits are:

This is just normal multi-cursor mode, so:

Shift + alt + left/right to do multiple selection works
Alt + delete to delete word, or Cmd + delete to delete line works
Cmd + left/right can get you to beginning/end of the line, so you can easily do line selection as well.

Changes are emitted in one edit. That means undo/redo can remove both changes at opening/closing tags together. Currently, auto-rename-tag extension's approach wouldn't enable this.
Auto completion of tag name works.
Instead of letting an extension modify the file without you being aware, this offers a more easily understandable behavior, as user already understands multi-cursor.

The only two special cases, where I'm making edit to the document are:

When you type space in

, the second cursor's space is removed
When you position cursor to
 and type a space, the space is added to the opening tag, and leave you at the opening tag position

This is to let you change attributes easily:

And finally, this should not interfere with Vim much. Enjoy that cw to change both opening and closing tag.
Multi-cursor with Cmd + Option + down should also work if you have your tags well aligned.

Updates:

When you position cursor to  and type a space, the space is added to the opening tag, and leave you at the opening tag position

This behavior was removed.
And now, ESC would temporarily remove the mirroring cursor until you move cursor again.

Hello, excited about this feature -- however, it does not seem to exist for me, using latest insiders.
Positioning cursor within a tag (either via click or keyboard navigation), does not select matching tag, nor is typing mirrored in the matching tag.
Retried with all extensions disabled; still nothing.
There was also not html.autoSelectingMatchingTags setting shown in the settings UI.
If I'm doing something wrong, please let me know -- eager to have access to this feature and ditch the buggy rename- and highlight-matching-tag extensions!
Mac OS X 10.13.6
Version: 1.41.0-insider
Commit: a747d264d668a947eeacd3492b60df6ce8dee6b4
Date: 2019-11-23T11:08:24.747Z
Electron: 6.1.5
Chrome: 76.0.3809.146
Node.js: 12.4.0
V8: 7.6.303.31-electron.0
OS: Darwin x64 17.7.0

@ultraGentle Try today's insiders should have it. Give it a try.

Yes!  Works like a charm.  Much obliged.

@octref any way to expand the scope of that feature to XML tags? Or at least give some pointers on how to achieve a similar behavior for XML (See https://github.com/redhat-developer/vscode-xml/issues/130)

It doesn't look good for xaml code. How can I disable it?

@AndrePu xaml support is implemented by vscode-xml extension, so open an issue there.

Hi. Heavily inspired by the code in: https://github.com/microsoft/vscode/blob/master/extensions/html-language-features/client/src/mirrorCursor.ts, I made a different implementation of mirrorCursors here for a PR to vscode-xml: https://github.com/redhat-developer/vscode-xml/pull/213.
Most (if not, all) of the logic was transferred over. (ie, the logic for onDidChangeTextEditorSelection() exists in updateCursors())
The main reason for this implementation was to immediately dispose the vscode.window.onDidChangeActiveTextEditor  and vscode.window.onDidChangeTextEditorSelection listeners when the html.mirrorCursorOnMatchingTag is turned off.
The structure of the code is a bit different:
When html.mirrorCursorOnMatchingTag is turned on, an instance of MirrorCursors is responsible for managing an instance of CursorUpdater and CursorUpdater is responsible for updating the cursor(s) in an html/handlebars file.
When html.mirrorCursorOnMatchingTag is turned off, the MirrorCursor and CursorUpdater instances are "thrown away" and its listeners are disposed of.
@octref What do you think about this implementation?

I think that's ok. Most of the corner-case handling is in mirrorCursor.ts so you want to update it from time to time.


Addon DuckDns not starting if there is no internet connection

When I have an electric outage, Home Assistant starts faster than my router, and the Duck add-on seems to not start when there is no internet available.
More people with the same problem here: https://community.home-assistant.io/t/duckdns-not-starting/62856/5
Maybe can be added an option to retry the start if there is no connection? Or at least to push a persistent notification to Home Assistant to notice the problem and fix it?
Thanks!

No comment about this? I only want to know if this is the expected behavior or is a bug.

No comment about this? Is an expected behavior or a bug?
Thanks!

I have the same problem. I have a good hosting for HA and my machine boots faster than my router.

And Duckdns has the boot at start option marked

This has been closed so maybe open a new issue to see if you have more luck than me with it...
I finally ended adding an automation that checks the state each 5 minutes and tries to start it if stopped.

Can you share your automation please? This would help me a lot. Thank you in advance

Yes, but it is a Node Red one, here you have a partial flow (I have more nodes after that sending a notification to the phone):
[{"id":"c5641fa9.2189b","type":"http request","z":"bf90f97d.871fc8","name":"Info DuckDNS","method":"GET","ret":"obj","paytoqs":"ignore","url":"https://XXXXXXX.duckdns.org/api/hassio/addons/core_duckdns/info","tls":"","persist":false,"proxy":"","authType":"bearer","x":380,"y":1400,"wires":[["42167471.2114ac"]]},{"id":"556977c0.02b4a8","type":"inject","z":"bf90f97d.871fc8","name":"Cada 10 minutos","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"600","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":170,"y":1400,"wires":[["c5641fa9.2189b"]]},{"id":"42167471.2114ac","type":"switch","z":"bf90f97d.871fc8","name":"¿Está parado?","property":"payload.data.state","propertyType":"msg","rules":[{"t":"neq","v":"started","vt":"str"}],"checkall":"false","repair":false,"outputs":1,"x":580,"y":1400,"wires":[["62737104.d2572"]]},{"id":"66dcaf54.02aff","type":"api-call-service","z":"bf90f97d.871fc8","name":"Arrancar DuckDNS","server":"e03e6d0f.b2759","version":1,"debugenabled":false,"service_domain":"hassio","service":"addon_start","entityId":"","data":"{\"addon\":\"core_duckdns\"}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":570,"y":1460,"wires":[["30089409.4f773c"]]},{"id":"62737104.d2572","type":"change","z":"bf90f97d.871fc8","name":"Borrar data","rules":[{"t":"delete","p":"payload.data","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":370,"y":1460,"wires":[["66dcaf54.02aff"]]},{"id":"e03e6d0f.b2759","type":"server","z":"","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]

But if you want something simple, execute each X minutes the service hassio.addon_start  with the data "addon":"core_duckdns".
And if you want to know the state, is an HTTP get petition to https://XXXXXX.duckdns.org/api/hassio/addons/core_duckdns/info with bearer authentication with a long life token.
I found the info in the Home Assistant forum, sorry if I don't post the link, I don't remember it.


[stable/jenkins] init error "pod has unbound immediate PersistentVolumeClaims"

Describe the bug
Jenkins pod fails at initialization with “Pod has unbound PersistentVolumeClaims”.
Version of Helm and Kubernetes:
Kubernetes version 1.13.11-gke.9
Helm version 2.14.3
Which chart:
stable/jenkins v1.8.2
What happened:
Jenkins pod fails initialization with "pod has unbound immediate PersistentVolumeClaims"

What you expected to happen:
Pod starts successfully
How to reproduce it (as minimally and precisely as possible):
Install stable/jenkins in a GKE cluster with default values.
Anything else we need to know:
I noticed this related issue,
https://github.com/helm/charts/issues/14514#issuecomment-499337710, but my error occurs with a vanilla install with default chart values.

Please note that querying for pv and pvc show a status of "Bound"

To anyone having this issue, to debug further, use this to view the init pod logs:

kubectl logs [jenkins pod name] -c copy-default-config

My issue turned out to have nothing to do with storage, but rather access to some of the Jenkins mirrors (http://mirrors.jenkins-ci.org/status.html) in my egress firewall rules.

Seeing similar issue when trying to install jenkins on a pks cluster.  Error from copy-default-config  is
Downloading plugin: git from https://updates.jenkins.io/download/plugins/git/4.2.2/git.hpi
cp: overwrite '/var/jenkins_home/config.xml'? cp: overwrite '/var/jenkins_home/jenkins.CLI.xml'? cp: overwrite '/var/jenkins_home/jenkins.model.JenkinsLocationConfiguration.xml'? curl: (28) Connection timed out after 20001 milliseconds
curl18:29:40 Failure (28) Retrying in 1 seconds...


Move GetSignatures into ProcessedType hierarchy

https://github.com/mono/Embeddinator-4000/issues/276

Additional work must be done, starting with making GetSignatures specialized in different subclasses to reduce complications / arguments / etc.
But I didn't want the diff to get too terrible / bite off too much at once.

Build and tests passed.

Build and tests passed.

Build and tests passed.


Using JSON values with Irmin.Type.equal

It seems like when using Json_value.t we would want Irmin.Type.equal to return true for the following values:
let a = `O ["a", `Float 1.; "c", `Float 3.; "b", `Float 2.]
let b = `O ["a", `Float 1.; "b", `Float 2.; "c", `Float 3.]

Even though the keys are out of order, I think they are considered to be equivalent in JSON land.
Since Irmin.Type.equal treats a JSON object as a list of pairs the only solution I can think of right now would be to sort the contents of JSON objects by key.  I'm not sure that there's a straight-forward way to handle this -- any ideas?
I'm also fine with leaving it as-is, but in that case we should at least document this caveat.

After looking into it more it was much easier than I thought!
Thanks to the new Irmin.Type changes all I had to do was pass a custom equal function to Irmin.Type.like' for Json_value and Json.


Use shutil to determine terminal size

https://docs.python.org/3/library/shutil.html#shutil.get_terminal_size

fixed by 089763e13db627702bd27884c4a554b585f55627


Change thrift version per python using environment markers

The motivation behind this is that I'm currently facing issues with both poetry and the building tool pants when they try to resolve the proper version for thrift.
They both resolves it to thrift==0.9.3 even though I'm currently using python 3.7 and if I try to force the thrift version manually to the latest one it complains that thrift_sasl requires the version 0.9.3.

@dknupp can you take a look at this one?
I'm currently using the version directly from my repo as a workaround and it's behaving as expected.

I, honestly, don't mind. I tried doing only minimum changes on setup.py file but I think the bigger issue here is that this repository looks completely abandoned. They haven't done any changes to their code in a long time.

@thamenato -- sorry, I've actually moved on from Cloudera, and I'm not sure of the status of the repo now. But I can still approve these changes. Do you want to take in and test the changes proposed by @IMax153 in another commit first?

As an additional note, I believe the exact functionality of the current setup.py can be mimiced through the use o the sys_platform environment marker instead of platform_system.
setup(
    ...
    install_requires=[
        # Python 3 support was added to thrift in version 0.10.0.
        "thrift>=0.10.0;python_version>='3.0'",
        "thrift==0.9.3;python_version<'3.0'",
        # Installing sasl on Windows is rather painful, so use the pure python
        # implementation on Windows
        "pure-sasl>=0.3.0;sys_platform=='win32' or sys_platform=='cygwin'",
        "sasl>=0.2.1;sys_platform!='win32' and sys_platform!='cygwin'",
        "six>=1.13.0"
    ],
    ...
)

@thamenato I'm working on the next thrift_sasl release. Please update the PR with the changes suggested by @IMax153 if you're okay with them..

Alright, just updated it. I haven't tested it, did it quickly during my lunch break.
@IMax153 @attilajeges this should be good to go.

Hey @IMax153 I'll let you do those changes. I don't really work with this library anymore nor the company that used it.


Error when trying to install packages from multiple directories from monorepo

When trying to install multiple local packages with
uv pip install package1@D:\package_dir\package1_dir package2@D:\package_dir\package2_dir package3@D:\package_dir\package3_dir ...
I see the following error. I am trying to install more than 20+ such packages together.

Also note, when I try to do editable installs they work absolutely fine.

I was able to get it working by setting the environment variable UV_CONCURRENT_INSTALLS to 1

@charliermarsh FYI, I see this issue has been closed with a workaround, but I still think that it happens should be in your radar.

We've seen this error on Windows before but I thought we had addressed it

@zanieb I used the latest version of uv for my tests today. So it should still be reproducible. Only way I was able to get it working was with the env variable set. If it can be addressed it will be nice. Thanks


Theme documentation

Are you guys planning on releasing a complete documentation for creating your own theme? I would be nice with a list of all available tags with included examples.

I found this quite usefule: https://github.com/Aloshi/EmulationStation/blob/master/THEMES.md

@polpettedorso  thanks!

@polpettedorso @blancoberg That's horribly out of date if you're using Emulationstation on RetroPie

There's that one from the RertoPie GitHub, not sure if it's up to date? https://github.com/RetroPie/RetroPie-Setup/wiki/Creating-Your-Own-EmulationStation-Theme


Checkbox text filter exact match

Is exact match available for the checkbox text filter? It was requested as an enhancement on the old jplist. For example, I have a list of names and only want to find "Rob." Not Robert, Roberta, Robin, etc.
Thanks!

Yes, it's called data-mode="equal" - please check the following link:
https://www.jplist.org/documentation/controls/checkbox-text-filter#data-attributes

Thank you so much! I totally overlooked that. Love the plugin!

You are welcome 👍


bug: purpose overrides presentationPurpose and its default

I realised that the presentationPurpose option on verify has no effect if a purpose is also specified, which you would do if credential verification requires a different purpose than the default. This is because of how object composition is used in the code and may be fixed by reversing the order of arguments here. See https://github.com/digitalbazaar/vc/pull/137.
Any chance the fix could be back-ported to the latest cjs version and released in a patch?

@rflechtner Thanks a lot for the fix. Your PR has been merged and released in a patch.
I'll be closing this issue now since this has been addressed.


Support swap-out in iOS and modern android app

This PR adds support for swap-out in the iOS app and in the new android app. It depends on https://github.com/ACINQ/lightning-kmp/pull/342.
Controller
The ScanController controller has been  refactored a little, and the models/intents for swap-outs have been added. Also a Parser helper object has been created to handle data parsing.
Android UI

Choosing how to pay
A Bitcoin URI may contain a lightning payment request (in the lightning parameter). When that happens the wallet lets the user choose how to make the payment, on-chain or over LN.

The issue with BigDecimal being used on iOS has been fixed.
Regarding the issue mentioned in https://github.com/ACINQ/lightning-kmp/pull/342#issuecomment-1157824884, it happens because on iOS it seems we try to send the initial amount entered by the user, not the amount after the swap-out fees. So endurance rejects the payment because it is below the amount requested by the swap invoice.
A few small issues I found when testing :

if the payment fails, on iOS we should display the payment hash somewhere, that may be useful for debugging.
in the details screen of the payment, the label "blockchain tx" actually points to a bitcoin address, so the wording should be fixed. That's because the server doesn't know the transaction id when the swap-out is initiated, and there's no message that would let us forward that information to Phoenix once we actually know that info. So we can only point to a Bitcoin address, which is good enough for now.

on iOS it seems we try to send the initial amount entered by the user, not the amount after the swap-out fees

Yup, that was it. Fixed it, and now it's working fine on iOS.
I fixed the UI issues you mentioned too. But I also thought it would be helpful if the UI displayed the amounts (swap out amount & miner fee), but I don't think we're currently storing that information anywhere ?

I created a merge conflict with my recent refactoring commits, so I merged master in and fixed the issue.

But I also thought it would be helpful if the UI displayed the amounts (swap out amount & miner fee), but I don't think we're currently storing that information anywhere ?

Correct, the current setup does not allow us to save that information. I initially thought we could store the swap-out amount that the user actually intends to send on-chain by using the OutgoingPayment.recipientAmount field, but that's not possible. This field contains the amount that is received by the swap service, and includes the fee. And we can't change that without impacting the normal LN payment process, because a swap-out payment is actually a LN payment, just with some additional context. And that would be a lot of trouble.
So I think the correct solution is to amend the OutgoingPayment.Details.SwapOut object, and add a new amountToChain: Satoshi field there. Wdyt? Not sure about the naming of that field.

Maybe minerFee: Satoshi, and we do the math in the other direction ?

Ah good point 👍
or rather swapFee: Satoshi so we don't assume that the swap-out fee will always be equals to the miner fee, even if that's the case today.

I just realized that iOS is still missing the "choose how to pay" screen. I'll work on that next.


Remove v prefix from version

Signed-off-by: faizanahmad055<EMAIL_ADDRESS>

@faizanahmad055 Image is available for testing. docker pull stakater/workshop-excercise:SNAPSHOT-PR-11-7b7f045a


Use fallback in Translation::choice

Fixes #7490
Could this be cherry-picked into 4.2 also?

Could this be cherry-picked into 4.2 also?

No. 4.2 is not open for minor bug fixes, sorry.


added

issue no. #7
solved
hey @bobbyy16 please merge

Hey @SAKETSINGH120 thanks for the contribution but can you make region-specific, Instead of global, Can you just go Indian region like "Banglore, Karnataka"

But no specific location

No, This website is about companies in India. What I want you to do is just mention the location of there main office in India

Ok

Can you just make changes and commit @SAKETSINGH120


Embedded Wizard article about GUI development

@f-hollow Please, review the article from Embedded Wizard which should be published at our blog

Featured article is not present, I will add it later on


polynomial-to-standard: error on integer width for poly.add when ring coefficientModulus width is less than coefficient width

When playing around tests/bgv/to_polynomial.mlir with additional -convert-elementwise-to-affine -polynomial-to-standard, error happened
error: 'arith.extsi' op operand type 'tensor<1024xi32>' and result type 'tensor<1024xi26>' are cast incompatible
    %mul = bgv.mul %x, %y : (!ct1, !ct1) -> !ct2
           ^
note: see current operation: %19 = "arith.extsi"(%13) : (tensor<1024xi32>) -> tensor<1024xi26>

Reduced to a minimal working example with argument -polynomial-to-standard, where changing the line to !p = !p2 resolves the problem:
#my_poly = #polynomial.int_polynomial<1 + x**1024>
#ring1 = #polynomial.ring<coefficientType = i32, coefficientModulus = 33538049 : i32, polynomialModulus=#my_poly>
#ring2 = #polynomial.ring<coefficientType = i25, coefficientModulus = 33538049 : i25, polynomialModulus=#my_poly>

!p1 = !polynomial.polynomial<ring = #ring1>
!p2 = !polynomial.polynomial<ring = #ring2>

!p = !p1

module {
  func.func @polymul(%x : !p, %y : !p) -> (!p) {
    %add = polynomial.add %x, %y : !p
    return %add : !p
  }
}

The related code is the following
https://github.com/google/heir/blob/b79bccf6bf3863083e339bd582b4e06fdc3dd561/lib/Conversion/PolynomialToStandard/PolynomialToStandard.cpp#L522-L543
It assumes either coefficientModulus is a power-of-two or its width is the same as coefficientType.
Maybe we should check that coefficientType has the same width as coefficientModulus if it is a prime.
Also, should we consider lowering it to mod_arith so that polynomial-to-standard can be simplified? Currently extsi/extui is everywhere.

cc @AlexanderViand @inbelic on this issue

Also, should we consider lowering it to mod_arith so that polynomial-to-standard can be simplified?

I think so - but I will need to catch up on this particular pass pipeline.

Thanks for bringing this up! I’ll add it to the list of “issues that show why we really need formal verification around mod_arith stuff”!
I agree @switching this pipeline over to mod_arith would be the best thing to make sure at least these kinds of issues only occur in one place xD

polynomial.mul_scalar also has an erroneous lowering (the test only covers power-of-two branch):
Similar code as above, and would report error no matter !p1 or !p2:
#my_poly = #polynomial.int_polynomial<1 + x**1024>
#ring1 = #polynomial.ring<coefficientType = i32, coefficientModulus = 33538049 : i32, polynomialModulus=#my_poly>
#ring2 = #polynomial.ring<coefficientType = i25, coefficientModulus = 33538049 : i25, polynomialModulus=#my_poly>

!p1 = !polynomial.polynomial<ring = #ring1>
!p2 = !polynomial.polynomial<ring = #ring2>

!p = !p1

module {
  func.func @polymul(%x : !p, %y : !p) -> (!p) {
    %add = polynomial.sub %x, %y : !p
    return %add : !p
  }
}

Note that polynomial.sub is canonicalized to polynomial.mul_scalar -1 and polynomial.add, and further lowering would result in
error: 'arith.remsi' op requires the same type for all operands and results
    %add = polynomial.sub %x, %y : !p
           ^
note: see current operation: %4 = "arith.remsi"(%arg1, %3) : (tensor<1024xi32>, i32) -> tensor<1024xi32>

IR emitted here (one RemSi from add lowering, another from mul_scalar lowering)
  %4 = "arith.constant"() <{value = -1 : i32}> : () -> i32
  %5 = "tensor.splat"(%4) : (i32) -> tensor<1024xi32>
  %6 = "arith.muli"(%1, %5) <{overflowFlags = #arith.overflow<none>}> : (tensor<1024xi32>, tensor<1024xi32>) -> tensor<1024xi32>
  %7 = "arith.constant"() <{value = 33538049 : i32}> : () -> i32
  %8 = "arith.remsi"(%1, %7) : (tensor<1024xi32>, i32) -> tensor<1024xi32>
  %10 = "arith.constant"() <{value = dense<33538049> : tensor<1024xi26>}> : () -> tensor<1024xi26>
  %11 = "arith.extsi"(%3) : (tensor<1024xi32>) -> tensor<1024xi26>
  %12 = "arith.extsi"(%8) : (tensor<1024xi32>) -> tensor<1024xi26>
  %13 = "arith.addi"(%11, %12) <{overflowFlags = #arith.overflow<none>}> : (tensor<1024xi26>, tensor<1024xi26>) -> tensor<1024xi26>
  %14 = "arith.remsi"(%13, %10) : (tensor<1024xi26>, tensor<1024xi26>) -> tensor<1024xi26>
  %15 = "arith.trunci"(%14) : (tensor<1024xi26>) -> tensor<1024xi32>


update Aitana's GitHub username

@maoo, @agitana and @Julia-Ritter - I have merged this pull request and have closed duplicate #31 👍🏻


Docker - All data and config have been reset

Hi,
I have installed change detection in a Synology Docker and it has been working fine for a while. Then all URLs and config have been reset two days ago. Does anyone have the same issue?

I had the same thing :(

How many URLs did you have? I had about 350 or so, I noticed the CPU usage was getting higher

I have only 2.

I've had the same issue at least twice. Both times I had 4 urls

Same here, running with kubernetes - I thought the issue was with my kinda-unstable homelab-cluster, but maybe not.
I can mention that my lab is unstable due to frequent OOMs, so maybe that's an issue?

yup I think OOM is the killer here, thats a big problem with using a custom JSON file writer
so might be better to move to sqlite or something else, unsure just yet

Could it perhaps be separated, at least?
Settings to one file, and cache/diffs to another file?
I'd rather get a warning too much about a change being detected, vs not getting anything because alerting and the configured sites have been wiped.

Hi, I haven't seen this issue at all using my current pip installation, and I also never had it happen in docker with persistent storage configured.  This was the run command I was using to mount persistent storage:
docker run -d --restart always -p "<IP_ADDRESS>:5000:5000" -e WEBDRIVER_URL="http://<IP_ADDRESS>:4444" -v /home/docker/changedetection.io/datastore:/datastore --name changedetection.io ghcr.io/dgtlmoon/changedetection.io
And of course you can eliminate the webdriver env setting if you're not using it.
Hope that helps.
~ntmmfts

We were bitten by this today... It might have been a OOM too, but can't be sure.
More oddly though, I'm having trouble restoring the data from a filesystem backup. We use a docker volume for changedetection-data and when I restore data from the snapshot into it and start the container, the content of the url-watches.json always get overwritten with the sample one. The docker logs always start with
changedetection.io    | Creating JSON store at /datastore
changedetection.io    | Saving..
changedetection.io    | Saving..
changedetection.io    | Saving..
changedetection.io    | Saving..
changedetection.io    | Saving..

@dgtlmoon Is there a special procedure to recover from a filesystem snapshot?

After looking closely into the url-watches.json I had the backup, the file was corrupted (incomplete). Restoring one from an older backup made it work again.
If the configuration file can't be loaded might be worth logging it — or even aborting, instead of overwriting with the default settings and loosing anything left.
To make this the save step more atomic (or more resistant to OOM), could it perhaps be saved into a temporary file (eg: url-watches.json.tmp) and then that be moved into the right one?

@mentalstring

Perhaps to make this the save step more atomic (or more resilient to OOM, if that's the issue), could it perhaps be saved into a temporary file (eg: url-watches.json.tmp) and then that be moved into the right one?

yeah this is a great idea, problem at the moment is that i'm walking the line between writing an ORM/Database and a "simple JSON store"
How to test this? maybe set a limit then build a huge JSON array?
https://stackoverflow.com/questions/16779497/how-to-set-memory-limit-for-thread-or-process-in-python

I've got a new PR there, can anyone come up with some devious ways to test it?

I'm not a python dev, so I can't help/comment the code itself, sorry.
For what's worth, the file url-watches.json file I got out of a backup was truncated at about 1/3 of the full content. I can't be sure whether it was a OOM or the backup processing running while the JSON was being written to storage. Regardless, a temp file&move should address both cases.

@mentalstring please test https://github.com/dgtlmoon/changedetection.io/tree/ticket-286-lost-data for me, please try to put it on your machine and see if the problem can be reproduced (or if it introduces some new issue) I cannot be the only person here testing and writing everything, I need some help, I'm writing this software for free in my spare time when I should be working more to cover to my expenses, or please donate via BTC

Looks like we could use a special docker-compose.yml with limited memory and disk

https://www.devopsschool.com/blog/how-to-specify-the-size-limit-while-creating-the-docker-volume/
https://stackoverflow.com/questions/42345235/how-to-specify-memory-cpu-limit-in-docker-compose-version-3

I haven't had the issue since 10 days ago. However, I do have some issues with diff showing repeatedly the same change that it should be different changes. I can help testing that. But is there a way to reproduce it?
I am not technical but my Synology docker setup doesn't seem to have disk space limitation options that I can see. I can see memory and cpu limits.

@sqsuica  >  I do have some issues with diff showing repeatedly the same chang
please open a new issue and attach the .zip backup file

@mentalstring info on restoring a backup (by zip file) is here https://github.com/dgtlmoon/changedetection.io/wiki/Restoring-backup-files

Leaving this one open - any new reports -  be sure to use the new version!

@davralin

Could it perhaps be separated, at least?
Settings to one file, and cache/diffs to another file? I'm thinking the settings-file wouldn't receive so many writes..

yes it already does that.. so if you've lost your diffs, it means something is really wrong with your setup.. as we only write them once

Closing this one.. the v0.39.4 release should resolve this, if it does not, then it's something else (like you deleted the volume while upgrading, or something)
but in any case, if it happens.. attach logs


(CL) Implement naive monotonic sqrt function and move root functions to utils.ts

What is the purpose of the change
This PR implements an alternative square root function that should better approximate monotonicity and hopefully solve the class of FE issues related to square root approximation.
This implementation is drastically simpler than a truly monotonic square root function, which we should implement only if absolutely necessary as it will be significantly more overhead to write & review.
Pending @p0mvn's confirmation that this function solves the issues in his branch, this approach is much better on the time/value tradeoff.
ClickUp Task
ClickUp Task URL
Brief Changelog
This PR makes two changes:

Moves approxRoot and related files to higher level utils.ts file
Implements a mostly monotonic square root function that should be extremely simple to review and merge

Testing and Verifying

The approxRoot tests were left in the concentrated file as there didn't seem to be a natural place to move them to at the higher level folder. Happy to change this if needed.
Correctness for the monotonic sqrt function will ultimately be checked in @p0mvn in progress branch increasing precision of CL math

Converted to draft as it seems we're going to need a more involved solution


Prevent baseTranslation from flashing

I'm using SvelteKit, and so far it's working fine unless for 1 problem.
When refreshing the page, it always flashes the baseTranslation before the current locale translation.
The locale is persisted on the localStorage using persistentAtom.
I also added await translationsLoading(i18n) but same result.
And i18n.loading.get() always returning false

There will be no way to do not have baseTranslation in some first ms on the app runtime (because of the async nature).
But I agree that it is a bug since, at least, we should have i18n.loading.get() in true.
Can I ask you to debug the source of the problem since you have a reproduction case?

So I tested it again and I found that i18n.loading.get() and translationsLoading is working when I use it in the components where it is called the translation Message.
If I use i18n.loading.get() and translationsLoading in the <script context="module"> in __layout.svelte file, the i18n.loading.get() will always returning false.
// __layout.svelte
// something like this

<script context="module">
import { i18n } from '$lib/stores/i18n';
import { translationsLoading } from '@nanostores/i18n';

export const load = async () => {
  ...

  if (i18n.loading.get()) {
    await translationsLoading(i18n))
  }

  ...
})
</script>

<main>
	<slot />
</main>

I'm guessing it is because the translation message is not used in the __layout.svelte file.
And it makes sense to me and doesn't seem like a bug, but just to be sure, I prefer to have a confirmation.
Is this the correct behavior?
In the component I can await the translation and put a fallback placeholder when fetching the translation, but is it possible to await all translations from the <script context="module"> inside the __layout.svelte or maybe from the hooks (server-side) before it gets to the client? Because it is very repetitive to do this on every component that needs translation.

Something like this would be nice

Can you try to make PR?
Sorry, I am busy on another open-source project now.

Yup, sure, I'll try to make it, but I might need some guidance.
Hopefully, I can solve it by myself though, I don't want to bother you too much.
Anyway, thanks for the great tools! Really appreciate it.

Sure, feel free to ask questions. I will try to explain and guide you.

I've recreated this issue in React, so it's not SveltKit problem. I think the loading.set(true/false) calls logic is broken in create-i18n. Can't yet figure how to fix.

Can you try your app with adding this line?
// @nanostores/i18n/create-i18n/index.js -- Line 99

  async function getTranslation(code, components) {
    await new Promise((resolve) => setTimeout(() => resolve(), 0)); // This Line
    loading.set(true);

It worked for React, an async issue. Changing of loading store to true. but component who used it, hasn't passed its callback yet. So it didn't know of loading store change.

Hi @nymless, it doesn't work with SvelteKit.
I'm trying to make the loading state changes according to whether the translations for the locale are fetched/imported.
But I still haven't found the way.
Anyway, thanks for the help!


Nursing Care suggestions on Consultation page (Discussion Needed)

Is your feature request related to a problem? Please describe.
The list of Nursing care is very limited in CARE. The list needs to be expanded to let nurses mark information against various other kinds of nursing care commonly provided to the patients
Proposed Solution.
Add more option for nursing care> Detailed Log update (https://care-staging.ohc.network/facility/da95c77c-cf2f-4400-be53-6da766951552/patient/70ff1884-89ca-43fd-bc6c-2354cff9457d/consultation/9b1b3f6d-581d-46f3-8279-456596defd35/daily_rounds/f4a24e2d-1f45-4063-87a9-eb5790710a5a/update)
Oral Care
Hair care
Bed bath
Eyecare
Perineal care
Skin care
Catheter change
Ryle’s tube change
PRE enema
Lymphedema Care
Others

I would like work on this, if that's okay.

I would like to work on this , pls assign me @bodhish @nihal467 @rithviknishad

Do we need to update the options here in the medical history?

Already resolved by @rithviknishad


No output from mdpocket on ubuntu 16.04

Hi,
i've been trying the whole day but i don't manage to get any output from mdpocket. I compiled fpocket with the tweak from the other thread "Make fails on Fedora 28" by out-commenting netcdf compilation in mdpocket.c and using the molfile libraries from VMD.
Running mdpocket without arguments gives the documentation as supposed to. Though, no matter what arguments i give, i always only get the documentation. No errors and no output, it only prints the documentation. It neither works with trajectory file nor with a list of pdb files. fpocket works perfectly fine.
Any idea what causes this? Where could i have gone wrong?
Best,
Eric

could you please provide the command line you tried?

From: compchemeric<EMAIL_ADDRESS>Sent: Wednesday, September 5, 2018 21:29
To: Discngine/fpocket
Cc: Subscribed
Subject: [Discngine/fpocket] No output from mdpocket on ubuntu 16.04 (#15)
Hi,
i've been trying the whole day but i don't manage to get any output from mdpocket. I compiled fpocket with the tweak from the other thread "Make fails on Fedora 28" by out-commenting netcdf compilation in mdpocket.c and using the molfile libraries from VMD.
Running mdpocket without arguments gives the documentation as supposed to. Though, no matter what arguments i give, i always only get the documentation. No errors and no output, it only prints the documentation. It neither works with trajectory file nor with a list of pdb files. fpocket works perfectly fine.
Any idea what causes this? Where could i have gone wrone?
Best,
Eric
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/Discngine/fpocket/issues/15, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AOhZZxjzrHUNZLe1mGntq0AL24VBk1aHks5uYCYEgaJpZM4WbjGl.

Hi,
I have the same issue on Ubuntu 18.04 and Ubuntu 14.04 (personal and work computer)
I run mdpocket --pdb_list mdpocket_input.txt --selected_pocket pocket7_atm.pdb where:

All files cited above are in the current directory from where I run the command
mdpocket_input.txt provides the absolute path to the pdb obtained from trjconv command of Gromacs

I suspect an error in my command line but I can't figure it out.
Thank you!
Nb: In order to install the program without error, I had to comment lines 96-97 of mdpocket.c (issue #9). I don't think of it as the cause but it's worth mentioning it.

Hi @pschmidtke
I have the same issue on Ubuntu 18.04 and Ubuntu 14.04 (personal and work computer)
I tried running those commands as suggested on SourceForge for the same issue without success:
mdpocket --pdb_list mdpocket_input.txt --selected_pocket pocket7_atm.pdb
mdpocket -L mdpocket_input.txt

where:

All files cited above are in the current directory from where I run the command
mdpocket_input.txt provides the absolute path to the pdb obtained from trjconv command of Gromacs (obtained from you python script)

I suspect an error in my command lines but I can't figure it out.
Best,
Julie
Nb: In order to install the program without error, I had to comment lines 96-97 of mdpocket.c (issue #9). I don't think of it as the cause but it's worth mentioning it.

1 : the command you run is the second step of mdpocket (analyzing a selected pocket. Did you run it already without the --selected_pocket argument?
What is in pocket7_atm.pdb?
Could you try to use the xtc file from gromacs directly? You should be able to do that on a presuperimposed trajectory.
Cheers
Peter

Hello,
I am also having issues with getting an output from MDpocket. I have tried running the 'mdpocket -L mdpocket_input.txt' command, as well as explicitly providing the DCD and topology files. Providing just the input list yields the documentation, whereas providing the explicit trajectory information leads to seg faults. Has this issue been resolved yet?
Thanks,
Chey


The Bucket::Acl class is not included the the documentation.

At least I cannot find it.  The documentation for the acl method in Storage::Bucket is here:
https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud-storage/v1.13.0/google%2Fcloud%2Fstorage%2Fbucket?method=acl-instance
it references a Bucket::Acl class, but that class is not included in the list of classes on the left panel.

@coryan Thank you for identifying this issue. While the Bucket::Acl class is included in the documentation, as you correctly observe it is not linked from the Bucket#acl method. This should be considered a bug in the documentation and should be fixed.
The left nav in the Angular site app was never intended to be a complete index of types. However, we are in the process of transitioning to standard YARD generated documentation, which will be very similar to what you can view already at rubydoc.info/gems/google-cloud-storage. This standard YARD documentation features a full list of types in the left nav.


Fix protobuf build-rs scripts re-executing and trashing incremental compilation cache

What does this PR do?
Add a build directive to stop re-running build.rs on crates compiling proto definitions when we don't need to
Motivation
Currently, the build.rs are re-run everytime, which prevents caching of crates depending on ddsketch and trace-protobuf.
This makes incremental re-build take longer than necessary.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 70.20%. Comparing base (9d82f91) to head (92272d8).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #789      +/-   ##
==========================================
+ Coverage   70.19%   70.20%   +0.01%
==========================================
  Files         313      313
  Lines       45352    45352
==========================================
+ Hits        31835    31840       +5
+ Misses      13517    13512       -5

Components
Coverage Δ

crashtracker
38.06% <ø> (ø)

crashtracker-ffi
5.65% <ø> (ø)

datadog-alloc
98.73% <ø> (ø)

data-pipeline
91.38% <ø> (ø)

data-pipeline-ffi
86.29% <ø> (ø)

ddcommon
81.60% <ø> (ø)

ddcommon-ffi
64.83% <ø> (ø)

ddtelemetry
59.45% <ø> (ø)

ddtelemetry-ffi
22.13% <ø> (ø)

dogstatsd
89.45% <ø> (ø)

dogstatsd-client
79.77% <ø> (ø)

ipc
82.86% <ø> (+0.10%)
:arrow_up:

profiling
84.30% <ø> (ø)

profiling-ffi
77.46% <ø> (ø)

serverless
0.00% <ø> (ø)

sidecar
37.96% <ø> (ø)

sidecar-ffi
0.00% <ø> (ø)

spawn-worker
50.36% <ø> (ø)

tinybytes
93.60% <ø> (ø)

trace-mini-agent
72.38% <ø> (ø)

trace-normalization
98.23% <ø> (ø)

trace-obfuscation
95.77% <ø> (ø)

trace-protobuf
77.67% <ø> (ø)

trace-utils
93.05% <ø> (ø)


Some fixes for 5.4.0

Fixes #7009 and part of #7013 (the rest of that is fixed by #7006).
For the OffscreenCanvas change, I realized that bailing early would prevent the non-style cursor functionality from working, so changed it to be a more targeted check.

Codecov Report

Merging #7015 (13c40be) into dev (fc4ca30) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##               dev     #7015   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           15        15
  Lines          671       671
=========================================
  Hits           671       671

Continue to review full report at Codecov.

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

Thanks @andrewstart


feat: add PGlite Semantic Search example.

Demo: https://huggingface.co/spaces/thorwebdev/pglite-semantic-search

Ah interesting, thanks so much for the feedback. The use case I had in mind was more like an eCommerce product / related product kind of search. Do you think that would work?
For the RAG use case, not really sure what source data to use. You thinking wikipedia articles or something along those lines? But I think that kind of info / use-case you're unlikely to store client-side?

The use case I had in mind was more like an eCommerce product / related product kind of search. Do you think that would work?

That could be interesting!

For the RAG use case, not really sure what source data to use. You thinking wikipedia articles or something along those lines? But I think that kind of info / use-case you're unlikely to store client-side?

Right - that's always the problem with some of the demos I have put out in the past... where we need to load the entire database on the user's side (not ideal!). A more realistic example would be something like a browser extension which has memory that persists across sites.
Anyway - I think the demo is great for now and we can always make updates in future. Merging! Thanks again so much - I look forward to adding more demos you create! 🔥


Event request cod90 OnBeforePostCombineSalesOrderShipment

Can the OnBeforePostCombineSalesOrderShipmentpublisher be added to codeunit:90:"Purch.-Post"?
code:
Modified.txt
Original.txt

Hi @Pieterheinevdm ! Please open this type of issues here https://github.com/microsoft/ALappextensions . This repository only handles issues related to the latest AL developer tools.


Root package.json name

Like version, how can we prevent this error?
[23:29:24] [semantic-release] » ×  ENOPKGNAME Missing `name` property in `package.json`.
The package.json's name (https://docs.npmjs.com/files/package.json#name) property is required in order to publish a package to the npm registry.

Please make sure to add a valid name for your package in your package.json.

AggregateError:
    SemanticReleaseError: Missing `name` property in `package.json`.

I was going to write something like "isn't name required" but today I learned it's not required if the package isn't published as would be the case with a monorepo root package. By convention I've always used a -monorepo suffix (e.g foobar-monorepo) for the root package name and set private to true to prevent any accidental publish.
Do you have any suggestions how this could be implemented? If package.json is modified semantic-release would throw an error that the working copy is dirty.

If this plugin can override the semantic-release rule for the name, maybe follow the convention to let name property empty but made warning for property private at true for prevent accidental publishing.


Refactoring/Code Polishing

Add a little utility method to make building column lists easier
Repackage/Rename the completer functions

Coverage remained the same at 100.0% when pulling 9c418a9ab5daacecef84110baceaaf84b10961e8 on jeffgbutler:master into c855aea3cc5f5259610c9248ac3c3267e8edf72e on mybatis:master.


Youtube embed

When i tried to embed youtube video i get margin to the right

I run with the following test code, and no problems found.
Please post the screenshot and tell me which part is wrong.
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final controller = WebViewController();

  @override
  void initState() {
    super.initState();
    controller.setJavaScriptMode(JavaScriptMode.unrestricted);
    controller.loadRequest(Uri.parse("https://www.youtube.com/embed/fatb7Clc0MM"));
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: WebViewWidget(controller: controller),
      ),
    );
  }
}

the problem was when to re enter to the same screen with the embed video.but the problem solved by dispose any controller in any screen of the app , if you left one controller not disposed you will get the margin bug.

If there is still something wrong,
please post a simple sample code ( < 150 lines) that can duplicate this issue.
I have no idea how to duplicate this issue.

no the problem was disposing all controllers. thanks for your help